我有一个本地化的WinForms应用程序。为了避免在翻译过程中进行大量迭代,我给了我们的译员软件来允许他们直接编辑.resx文件。资源文件没有被编译到DLL中
这对于与UI组件(表单/控件)无关的资源文件非常有用,但对于表单和控件,资源似乎没有得到更新。我的意思是,在设计时所有资源字符串都是正确的(Text/ToolTips等),我可以看到正确的翻译 - 当我运行应用程序(调试或任何其他版本)时,翻译不是更新了,为什么?
谢谢你的时间。
Edit1。情节进一步加深。有两个按钮在我更改组件(按钮文本,工具提示或由底层资源文件控制的任何事物)时根本不会被更新。比方说,我将按钮文本从'锁定工作簿'更改为'锁定工作簿GG',然后新的文本显示在设计器和.resx文件(都在.resx设计器和后面的代码中),但是当我运行代码(在调试或发布模式下)按钮文本不会更新!?
如果我更新上面更新的按钮旁边的按钮,这确实会更改正在运行的应用程序中的文本?这是烘烤我的面条,因为我无法看到旧文本的存储位置,以及为什么对于按钮的子集,它们的组件文本没有更新!
任何想法都热烈欢迎!
Edit2。我试图删除.suo并清理并重新编译。我也从解决方案中删除了麻烦的表单并重新添加。
所以你可以看到这个奇怪的行为,这里是有问题的按钮之一('Lock Workbook GG')和一个正常的按钮('设置为默认工作簿GG')。
现在在运行时我看到
只是出于好奇,你如何设置按钮的属性(文本,工具提示等)?你在最终的项目输出目录中有什么资源文件 - 我只假设资源dll?最后一个问题 - 表单的Language和Localizable属性的值是什么?你尝试过“清洁解决方案”,然后“重建”?资源dll是否在输出目录中更新? – pasty
@pasty感谢您的回复。设置“文本”,“工具提示”等。我使用设计器;我选择按钮,然后在'属性'面板中编辑相关属性。例如,在'bin \ Debug'文件夹中,我有所有常用文件,包括保存资源DLL的'de'和'de-DE'文件夹。目前'Language'属性的值是'(Default)','Localizable'是'True'... – MoonKnight
然后试试这个:通过代码(文本,工具提示等)设置所需的属性。是的,它有一些开销,但是然后你明确地使用和设置文本 - button1.Text = ProjectResources.Translations.Hello;我们有一个项目在工作(相同的星座 - 资源单独的项目),它没有错误(我们在代码中设置了大部分翻译)。 – pasty