2013-10-28 27 views
2

我有一个本地化的WinForms应用程序。为了避免在翻译过程中进行大量迭代,我给了我们的译员软件来允许他们直接编辑.resx文件。资源文件没有被编译到DLL中

这对于与UI组件(表单/控件)无关的资源文件非常有用,但对于表单和控件,资源似乎没有得到更新。我的意思是,在设计时所有资源字符串都是正确的(Text/ToolTips等),我可以看到正确的翻译 - 当我运行应用程序(调试或任何其他版本)时,翻译不是更新了,为什么?

谢谢你的时间。


Edit1。情节进一步加深。有两个按钮在我更改组件(按钮文本,工具提示或由底层资源文件控制的任何事物)时根本不会被更新。比方说,我将按钮文本从'锁定工作簿'更改为'锁定工作簿GG',然后新的文本显示在设计器和.resx文件(都在.resx设计器和后面的代码中),但是当我运行代码(在调试或发布模式下)按钮文本不会更新!?

如果我更新上面更新的按钮旁边的按钮,这确实会更改正在运行的应用程序中的文本?这是烘烤我的面条,因为我无法看到旧文本的存储位置,以及为什么对于按钮的子集,它们的组件文本没有更新!

任何想法都热烈欢迎!


Edit2。我试图删除.suo并清理并重新编译。我也从解决方案中删除了麻烦的表单并重新添加。

所以你可以看到这个奇怪的行为,这里是有问题的按钮之一('Lock Workbook GG')和一个正常的按钮('设置为默认工作簿GG')。

DesignTime

现在在运行时我看到

RunTime

+0

只是出于好奇,你如何设置按钮的属性(文本,工具提示等)?你在最终的项目输出目录中有什么资源文件 - 我只假设资源dll?最后一个问题 - 表单的Language和Localizable属性的值是什么?你尝试过“清洁解决方案”,然后“重建”?资源dll是否在输出目录中更新? – pasty

+0

@pasty感谢您的回复。设置“文本”,“工具提示”等。我使用设计器;我选择按钮,然后在'属性'面板中编辑相关属性。例如,在'bin \ Debug'文件夹中,我有所有常用文件,包括保存资源DLL的'de'和'de-DE'文件夹。目前'Language'属性的值是'(Default)','Localizable'是'True'... – MoonKnight

+0

然后试试这个:通过代码(文本,工具提示等)设置所需的属性。是的,它有一些开销,但是然后你明确地使用和设置文本 - button1.Text = ProjectResources.Translations.Hello;我们有一个项目在工作(相同的星座 - 资源单独的项目),它没有错误(我们在代码中设置了大部分翻译)。 – pasty

回答

1

也许你构建设置是错误的?
这是我的我的DLL。

enter image description here

+0

感谢您的回复。 .resx文件附加到WinForm。我检查了这些属性,它们都看起来正确,都指向正确的文件路径等。还有其他建议吗? – MoonKnight

+0

你如何改变文化?你确定这是在你的发布工作吗? – Remy

+0

文件(.resx)包含正确的资源字符串。它们是UI资源文件,因此链接到WinForm。这些资源也可以在设计器中正确显示。这是在运行时释放/调试,这些资源出现错误,如他们没有正确更新/编译... – MoonKnight

1

我已经给我们的翻译软件,使他们能够编辑.resx文件直接

这肯定不是一个好主意。任何专业的翻译人员都会知道如何处理.NET resx文件。即使他们没有SDL Passolo等翻译人员传统使用的工具,他们仍然会回退到SDK附带的标准Winres.exe utility

无论你写什么都可能有一个错误。很难从问题的反向工程中找出那个bug。除此之外,Winforms表单的.resx文件与您从资源文件项目模板或资源设计器获得的文件完全不同。有许多资源命名技巧可避免表单属性与其控件属性之间的不确定性。得到一个错误的名称,它不会正确工作。

不要自己写,至少要求他们在必要时使用Winres.exe。这是免费的。

+0

嗨汉斯,我提供的软件是Zeta资源编辑器,这是一个相当于Winres.exe的已知软件。什么命名约定可能导致此问题?任何resx都有标准格式,所以我没有看到如何允许通过Winres /其他工具编辑窗体.resx文件是一个问题。感谢您的时间... – MoonKnight

+0

我不知道,我没有什么可以看的。屏幕截图无法显示.resx文件的内容。 –

0

可能这与CopyLocal属性有关。请检查这些资源文件是否为TRUE。如果不是,请将它们设置为true,否则,在成功编译后,它们不会被复制到输出目录。

1

对按钮的绑定是在相关表单的设计器文件中进行的,您是否检查过是否存在一些问题?尝试删除设置资源的代码并通过设计器重新添加。

+0

嗨,我检查了.designer.cs文件,这似乎很好。所有资源正在应用于这些按钮。我将尝试删除并重新添加控件... – MoonKnight