C#.NET和外部组件的翻译

16
我在维护一个用C# 2.0 (VS2005)编写的程序。代码库很大,有很多作者,几乎是内部应用,但目前也是我们的客户在使用之一。
该应用程序支持多语言,在翻译自己的表单和组件方面运作良好。但是,有一个组件 - WeifenLuo的DockPanel Suite,我需要将其翻译成另一种语言(zh-CN)-其中一位中国人将资源文件翻译成了他的语言,现在我正在尝试包含并在应用程序中使用它,但是我失败了——尽管整个应用程序都是中文,但此组件仍然是英文的。未翻译的资源文件可以在github上找到:https://github.com/dockpanelsuite/dockpanelsuite/blob/master/WinFormsUI/Docking/Strings.resx 怎么做呢?我尝试了几乎所有的方法,包括天真的方法(只是使用resgen编译,然后尝试将其作为卫星装配件使用-还尝试了ilmerge),然后在VS2013 Express中打开DockPanelSuite,将resx添加为Strings.zh-CN.resx,但什么都没有用,工具提示和其他内容仍然是英文的。
我还尝试使用调试器,但调试器在tooltip = Strings.DockPaneCaption_ToolTipAutoHide处中断了,但它没有进入Strings.Designer.cs中定义的getter。
我被卡住了,不知道该怎么办。有什么想法吗?非常感谢!

我并不完全理解你的问题,但有一件事我可以帮你解释:“它没有进入getter” - 它不会。要调试setter或getter,你需要一种特殊的方法。请查看这个链接:https://dev59.com/FG855IYBdhLWcg3wViot - Ian
问题在于我无法将另一种语言资源“插入”到组件中(在单独的DLL中)。它仍然使用英语。 - Mike S.
1个回答

6

我能够在演示应用程序中轻松地翻译标签:

  • 克隆库
  • 复制并粘贴 Strings.resx 文件
  • 将副本重命名为 Strings.pt-BR.resx
  • 编译,完成 (在我的情况下,我翻译了"Close"标签)

enter image description here

然而,这个项目包含许多 Strings.resx 文件。

enter image description here

你改变了所有的文件吗?还是只改变了一个?(也许像我第一次尝试的那样,改变了错误的文件)


嗨,谢谢回答。说得好,不过如果我没记错的话,每个“主题”都会放在单独的.dll文件中,而我并没有使用它们。但是,当然,我已经尝试更新了每个resx文件,以查看字符串来自哪个文件,并且它们确实来自我正在使用和尝试翻译的文件 (在资源中为每个“自动隐藏”添加了一些简短的id字符串,WinFormsUI字符串出现在我的应用程序中)。 - Mike S.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接