【问题标题】:Resource Files not being Compiled into DLLs资源文件未编译成 DLL
【发布时间】:2013-10-28 09:32:47
【问题描述】:

我有一个本地化的 WinForms 应用程序。为了避免翻译过程中的大量迭代,我为我们的翻译人员提供了软件,允许他们直接编辑 .resx 文件。

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

感谢您的宝贵时间。


编辑1。情节进一步变厚。当我更改它们的组件(按钮文本、工具提示或任何由底层资源文件管理的东西)时,有两个按钮根本没有更新。假设我将按钮文本从“锁定工作簿”更改为“锁定工作簿 GG”,然后新文本显示在设计器和 .resx 文件中(都在 .resx 设计器和后面的代码中)但是当我运行代码时(在调试或发布模式下)按钮文本未更新!?

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

热烈欢迎任何想法!


编辑2。我试图删除 .suo 并清理并重新编译。我还从解决方案中删除了麻烦的形式并重新添加了它。

为了让您看到这种奇怪的行为,这里有一个有问题的按钮(“锁定工作簿 GG”)和一个正常的按钮(“设置为默认工作簿 GG”)。

现在在运行时我看到了

【问题讨论】:

  • 只是出于好奇,您如何设置按钮的属性(文本、工具提示等)?您在最终项目输出目录中有哪些资源文件 - 我假设只有资源 dll?最后一个问题 - 表单的 Language 和 Localizable 属性的值是什么?您是否尝试过“干净的解决方案”然后“重建”?输出目录中的资源dll更新了吗?
  • @pasty 感谢您的回复。要设置TextToolTip 等。我使用设计器;我选择按钮,然后在“属性”面板中编辑相关属性。例如,在“bin\Debug”文件夹中,我拥有所有常用文件,包括保存资源 DLL 的“de”和“de-DE”文件夹。目前“语言”属性的值为“(默认)”,“可本地化”设置为“真”...
  • 然后试试这个:通过代码(文本、工具提示等)设置所需的属性。是的,它有一些开销,但是您可以明确地使用和设置文本 - button1.Text = ProjectResources.Translations.Hello;我们有一个正在工作的项目(同一个星座 - 资源的单独项目)并且它可以正常工作(尽管我们在代码中设置了大部分翻译)。

标签: c# winforms user-interface resources resx


【解决方案1】:

也许您的构建设置有误?
这就是我的 dll 所拥有的。

【讨论】:

  • 感谢您的回复。 .resx 文件附加到 WinForm。我检查了属性,它们看起来都正确,都指向正确的文件路径等。还有其他建议吗?
  • 如何切换文化?您确定这在您的版本中有效吗?
  • 文件 (.resx) 包含正确的资源字符串。它们是 UI 资源文件,因此链接到 WinForm。这些资源也在设计器中正确显示。在运行时的发布/调试中,这些资源看起来是错误的,就像它们没有被正确更新/编译一样......
  • 您能创建一个带有一两个属性的小型新项目,看看它是否在那里工作吗?并且不要使用该工具来翻译 resx 文件,只需手动进行即可。
【解决方案2】:

我已为我们的翻译人员提供软件,让他们可以直接编辑 .resx 文件

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

无论您写什么,都可能有错误。很难从这个错误可能是什么问题中进行逆向工程。除此之外,Winforms 表单的 .resx 文件与您从资源文件项目模板或资源设计器获得的文件完全不同。有很多资源命名技巧可以避免表单属性与其控件属性之间的歧义。名字弄错了,就不能正常工作了。

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

【讨论】:

  • 嗨,Hans,我提供的软件是 Zeta Resource Editor,这是一个已知的软件,相当于 Winres.exe。什么命名约定可能导致此问题?任何 resx 都有标准格式,所以我看不出允许通过 Winres/其他工具编辑表单 .resx 文件是个问题。感谢您的宝贵时间...
  • 我不知道,我没什么可看的。屏幕截图无助于显示 .resx 文件的内容。
【解决方案3】:

按钮的绑定是在相关表单的Designer File中进行的,你检查过是否有问题吗?尝试删除设置资源的代码并通过设计器重新添加。

【讨论】:

  • 嗨,我已经检查了 .designer.cs 文件,这似乎很好。正在为这些按钮应用所有资源。我将尝试删除并重新添加控件...
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    相关资源
    最近更新 更多