【问题标题】:How do I get all strings from a Form for localization?如何从表单中获取所有字符串以进行本地化?
【发布时间】:2009-01-13 20:11:04
【问题描述】:

我读过的所有关于 WinForms 应用程序本地化的文章都假定我已经翻译了所有字符串。根据文章,我应该将 Localizable 属性设置为 true 并编辑所有控件。

但是如何从表单中获取所有原始(英文)字符串?假设我有一个完整的应用程序,到目前为止还没有本地化。我应该以某种方式手动解析 Designer 文件中的字符串,还是有其他更简单的方法?

我需要将字符串发送给 Excel 或 Word 中的翻译人员。由于翻译人员对资源没有任何经验,我最终会将所有已翻译的字符串移回我的表单,并在需要时更改控件的大小、位置等。

编辑:感谢 Rob 的回答和 cmets,解决方案是首先将 Localizable 属性设置为 true。然后,我可以轻松地从属于表单的 resx 文件中复制所有字符串。

【问题讨论】:

    标签: .net winforms localization


    【解决方案1】:

    我的本​​地化方式和我一样,只需进入项目的 Properties 目录并在文本编辑器中打开 Resources.resx 文件。其中,字符串位于 XML 节点中,如下所示;

    <data name="ErrorLaunching" xml:space="preserve">
      <value>Error launching Ivara</value>
      <comment>MessageBox text in LogonForm</comment>
    </data>
    

    翻译完成后,它们会进入名称相似的文件,例如法语的 Resources.fr.resx

    您也可以在 Visual Studio 中打开 Resources.resx,选择 Strings 并复制/粘贴到 Excel 中。

    或者,根据您的描述,您可能正在按表单进行本地化。在这种情况下,上述情况适用,但您感兴趣的是您的表单的 Resx 文件。

    【讨论】:

      【解决方案2】:

      Rob,在 Resources.resx 文件中,我只有在 MessageBoxes 等中手动显示的字符串。这些字符串可以毫无问题地复制到 Excel。

      但是如果我打开属于一个表单的MyForm.resx,这个文件是空的(其实所有表单的所有resx文件都是空的)。如何访问表单的字符串表?

      如果有什么不同,我会使用 VS2008。

      【讨论】:

      • 这应该是一条评论。您需要做的就是将表单设置为可本地化并保存。然后,如果您查看设计器,在 IntitializeComponent() 方法中,您应该会看到这样的一行;资源.ApplyResources(this, "$this");如果是这样,Resx 应该包含您的所有数据。
      • 我刚刚在 VS2008 Team System 中用一个简单的测试项目完成了这项工作,它按预期工作。
      猜你喜欢
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      相关资源
      最近更新 更多