C# 如何将字符串资源文件导入表单';s的资源文件?

C# 如何将字符串资源文件导入表单';s的资源文件?,c#,.net,winforms,localization,C#,.net,Winforms,Localization,我将创建一个字符串资源文件,用于我公司未来所有产品的本地化。让我们将该文件命名为CAPSStrings.resx,因为这将是它的名称。在C#下的WinForms中,Localizable属性设置为True的窗体有自己的资源文件。除了字符串资源外,这些文件还包含表单中控件的所有非默认设置 我希望能够将CAPSStrings.resx中的字符串导入表单资源文件,以便在使用Microsoft随Visual Studio提供的单独翻译工具开发或翻译表单时,可以使用CAPSStrings.resx中的翻译

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

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

执行此操作的最佳方法是什么?

将Resources.Resx文件转换为附属程序集 使用
Resx
文件,您可以为应用程序创建附属程序集

在本文中,我假设您创建了一个名为
ResGenExample
的项目,其中包含一个
Form1
,并将
Form1
Localizable
属性设置为
true
,您还有一个
Form1.resx

这篇文章描述了如何为具有Resx文件的新语言创建附属程序集,而无需重建应用程序

新语言的附属程序集具有Resx文件,而无需重建应用程序

为此,请执行以下步骤:

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

  • 打开Visual Studio的开发者命令提示符,并使用
    CD
    命令移动到包含
    Form1.fa IR.resx
    的文件夹以运行某些命令

  • 用于使用以下命令将
    Form1.fa IR.resx
    文件转换为
    Form1.fa IR.resources

     Form1.fa-IR.resx ResGenExample.Form1.fa-IR.resources
    
  • 用于生成包含在上一步中创建的
    .resources
    文件的附属程序集:

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

  • 然后在显示
    Form1
    之前设置
    UICulture

    System.Threading.Thread.CurrentThread.CurrentUICulture = 
        System.Globalization.CultureInfo.GetCultureInfo("fa-IR");
    
    有关更多信息:


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