【问题标题】:How can I import a string resource file into a form's resource file?如何将字符串资源文件导入表单的资源文件?
【发布时间】:2018-06-25 14:05:32
【问题描述】:

我将创建一个字符串资源文件,该文件将用于我公司未来所有产品的本地化。我们称该文件为 CAPSStrings.resx,因为这就是它的名称。在 C# 下的 WinForms 中,Localizable 属性设置为 True 的表单有自己的资源文件。除了字符串资源之外,这些文件还包含表单中控件的所有非默认设置。

我希望能够将 CAPSStrings.resx 中的字符串导入表单资源文件,以便在使用 Microsoft 随 Visual Studio 提供的单独翻译工具开发或翻译表单时,可以使用来自 CAPSStrings.resx 的翻译.这不必在运行时甚至在设计时完成。运行一个能够知道源文件和目标文件位置的独立程序就足够了。

最好的方法是什么?

【问题讨论】:

  • 您不能重用/导入CAPSStrings.resx 作为表单的资源文件。但是,如果您想提供一种解决方案以在不重新构建应用程序的情况下添加对不同语言的支持,我分享了一篇文章,展示了如何向您的应用程序添加新语言。
  • @ROBERT:注意:我是 VS 开发人员的商业本地化工具(插件)的作者(为了全面披露)。目前尚不清楚您要做什么。首先,什么是“CAPSStrings.resx”。它是您的一个表单(每个表单都有自己的)的默认语言“.resx”文件,还是您创建的其他(非基于表单的)“.resx”文件。看起来是这样,看来您可能正在尝试使用单个“.resx”文件来填充应用程序中的所有表单。这不是 VS 本身支持的,因此我不建议这样做,但您需要澄清您的问题。
  • 是的,CAPSString.resx 独立于我的应用程序中的所有表单。它设计用于多种应用。我现在打算不尝试将它与表单资源文件合并,而是单独使用它并将表单资源文件用于控件定位和它们设计的其他东西。
  • @ROBERT:好的,明白了。 VS 并非旨在以这种方式处理基于表单的字符串,因此尝试(恕我直言)会让自己更加头疼。不过,像您自己一样,我更喜欢单个文件系统(一个文件来处理所有字符串)。不幸的是,VS 本身并不支持它(无论如何对于表单),并且 VS 中的本地化在任何情况下都不是很好。这就是促使我编写一个商业本地化工具的原因,它将所有字符串捆绑到一个文件中(用于外部翻译)并消除了所有的苦差事。如果不是这么多的工作,我会免费赠送的。

标签: c# .net winforms localization


【解决方案1】:

将 Resources.Resx 文件转换为附属程序集

拥有Resx 文件,您可以为您的应用程序创建附属程序集。

在这篇文章中,我假设您创建了一个名为 ResGenExample 的项目,其中包含一个 Form1,并且您已将您的 Form1Localizable 属性设置为 true,并且您有一个 Form1.resx

这篇文章描述了如何在不重建应用程序的情况下为具有 Resx 文件的新语言创建附属程序集。

具有 Resx 文件的新语言的卫星汇编,无需重新构建应用程序

为此,请按以下步骤操作:

  1. 假设您创建了 Form1.fa-IR.resx,其中包含基于现有 Form1.resx 的波斯语本地化值。

  2. 打开 Visual Studio 的开发人员命令提示符并使用CD 命令移动到包含Form1.fa-IR.resx 的文件夹以运行一些命令。

  3. 使用resgen.exeForm1.fa-IR.resx 文件转换为Form1.fa-IR.resources 使用以下命令:

     Form1.fa-IR.resx ResGenExample.Form1.fa-IR.resources
    
  4. 使用al.exe 生成包含您在上一步创建的.resources 文件的附属程序集:

     al /embed:ResGenExample.Form1.fa-IR.resources /out:ResGenExample.resources.dll /c:fa-IR
    
  5. 在应用程序的可执行文件附近创建一个fa-IR 文件夹(例如在 Debug 文件夹中)并将生成的附属程序集复制到此文件夹。

那么在显示Form1之前设置UICulture就够了:

System.Threading.Thread.CurrentThread.CurrentUICulture = 
    System.Globalization.CultureInfo.GetCultureInfo("fa-IR");

更多信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多