在C#应用程序中更改“(默认)”ResX语言

时间:2014-06-24 06:00:38

标签: c# .net localization resx

我正在用C#创建一个应用程序,有很多表单和其他东西。 我想本地化它,所以我在VS中使用了集成的本地化功能。 该应用程序最初是法语(因为我)与英语翻译RESXes,但现在它是在Codeplex与其他一些不会说法语的开发人员,我想在应用程序和RESX文件中更改“默认”语言所以他们可以翻译成其他语言,而无需阅读法语。 因为在VS Form Designer中选择其他语言时,它会显示默认语言(此处为法语)。我试图重命名所有文件,但问题是所有表单属性都存储在默认的RESX中,法语版本,所以如果我重命名,它会破坏所有的东西。是否可以将默认语言更改为英语?

编辑:我认为我需要更精确。 该应用程序最初是法语。然后我用英语将其本地化。现在有一个MainWindow.resx包含表单属性+原始法语本地化和MainWindow.en-US.resx,它只包含英语本地化。因此,如果在Designer中,在“语言”中我选择“(默认)”它会显示MainWindow.resx FRENCH,如果我想翻译,它会显示法语文本。为了让其他开发人员更容易进行翻译,我想进行MainWindow.resx ENGLISH本地化并创建一个单独的MainWindow.fr-FR.resx。我也尝试在AssemblyInfo.cs中改变“中性语言”,没有效果。

2 个答案:

答案 0 :(得分:1)

您可以通过代码更改应用程序中的CurrentCulture和CurrentUICulture。 它与用于在运行时更改应用程序语言的方法相同。

看一下这段代码:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

希望它有所帮助。

答案 1 :(得分:0)

虽然您可以在文件系统中重命名以实现中性文化/资源更改,但您还需要更新项目文件,这很麻烦。我发现最简单的方法是通过名为ResXManager的Visual Studio扩展来完成此操作。

详细步骤:

1。 Run&配置ResXManager

在VS中:工具 - > ResXManager。

  1. 选择配置标签(如下)
    1. 禁用选项"确认添加新资源文件"。否则,您必须在每个文件中稍后单击以接受其创建。
    2. 设置中性资源语言,以便显示正确的标记以供您观看。
  2. 切换回主选项卡,您可以在其中看到并排翻译的所有解决方案资源。
  3. 2。将中性文化资源提取为明确的法语

    1. 使用"添加新语言"为法语添加一个新列;工具栏中的按钮。
    2. 从现有中性语言列复制所有法语资源(CTRL-SHIFT-DOWN帮助选择最高列)
    3. 将所有资源粘贴到新的法语列。
    4. 请注意,ResXManager将为您创建新的resx文件并将其添加到项目文件中。

      3。将中性文化重新设置为英语

      1. 复制特定文化栏目中的所有英语资源
      2. 将所有资源粘贴到中性文化列
      3. 4。告诉.Net中立文化现在是英文

        [assembly: NeutralResourcesLanguage("en-GB", UltimateResourceFallbackLocation.MainAssembly)]
        

        5。删除明确的英语resx文件。

        由于中性resx文件现在已经包含英语资源,因此您不需要将它们保留为特定于文化的文件。不幸的是,ResXManager似乎没有一个按钮,但我可以选择使用VS解决方案管理器过滤器" en-GB.resx"并删除它找到的所有文件。再次,在VS中执行此操作会自动更新项目文件。

        全部完成。