【发布时间】:2013-10-28 09:32:47
【问题描述】:
我有一个本地化的 WinForms 应用程序。为了避免翻译过程中的大量迭代,我为我们的翻译人员提供了软件,允许他们直接编辑 .resx 文件。
这对于不绑定到 UI 组件(窗体/控件)的资源文件非常有效,但对于窗体和控件,资源似乎没有得到更新。我的意思是,在设计时所有资源字符串都是正确的(文本/工具提示等)并且我可以看到正确的翻译 - 当我运行应用程序(调试或任何其他版本)时,翻译不是更新了,为什么?
感谢您的宝贵时间。
编辑1。情节进一步变厚。当我更改它们的组件(按钮文本、工具提示或任何由底层资源文件管理的东西)时,有两个按钮根本没有更新。假设我将按钮文本从“锁定工作簿”更改为“锁定工作簿 GG”,然后新文本显示在设计器和 .resx 文件中(都在 .resx 设计器和后面的代码中)但是当我运行代码时(在调试或发布模式下)按钮文本未更新!?
如果我更新上面更新的按钮旁边的按钮,这会改变正在运行的应用程序中的文本吗??这是烤我的面条,因为我看不到旧文本的存储位置,为什么对于按钮子集,它们的组件文本没有更新!?
热烈欢迎任何想法!
编辑2。我试图删除 .suo 并清理并重新编译。我还从解决方案中删除了麻烦的形式并重新添加了它。
为了让您看到这种奇怪的行为,这里有一个有问题的按钮(“锁定工作簿 GG”)和一个正常的按钮(“设置为默认工作簿 GG”)。
现在在运行时我看到了
【问题讨论】:
-
只是出于好奇,您如何设置按钮的属性(文本、工具提示等)?您在最终项目输出目录中有哪些资源文件 - 我假设只有资源 dll?最后一个问题 - 表单的 Language 和 Localizable 属性的值是什么?您是否尝试过“干净的解决方案”然后“重建”?输出目录中的资源dll更新了吗?
-
@pasty 感谢您的回复。要设置
Text、ToolTip等。我使用设计器;我选择按钮,然后在“属性”面板中编辑相关属性。例如,在“bin\Debug”文件夹中,我拥有所有常用文件,包括保存资源 DLL 的“de”和“de-DE”文件夹。目前“语言”属性的值为“(默认)”,“可本地化”设置为“真”... -
然后试试这个:通过代码(文本、工具提示等)设置所需的属性。是的,它有一些开销,但是您可以明确地使用和设置文本 - button1.Text = ProjectResources.Translations.Hello;我们有一个正在工作的项目(同一个星座 - 资源的单独项目)并且它可以正常工作(尽管我们在代码中设置了大部分翻译)。
标签: c# winforms user-interface resources resx