【问题标题】:Change the "(default)" ResX language in a C# app在 C# 应用程序中更改“(默认)”ResX 语言
【发布时间】:2014-06-24 06:00:37
【问题描述】:

我正在用 C# 制作一个应用程序,其中包含很多表单和其他内容。 我想本地化它,所以我使用了VS中集成的本地化功能。 该应用程序最初是法语(因为我是)带有英语翻译RESXes,但现在它与其他一些不会说法语的开发人员一起在Codeplex上,我想更改应用程序和RESX文件中的“默认”语言这样他们就可以在不阅读法语的情况下翻译成其他语言。 因为当您在 VS 表单设计器中选择另一种语言时,它会显示默认语言(此处为法语)。我试图重命名所有文件,但问题是所有表单属性都存储在默认的 RESX 中,即法语版本,所以如果我重命名,它会破坏所有的东西。是否可以将默认语言更改为英语?

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

【问题讨论】:

    标签: c# .net localization resx


    【解决方案1】:

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

    详细步骤:

    1。运行和配置 ResXManager

    在 VS 中:工具 -> ResXManager。

    1. 选择配置选项卡(下方)
      1. 禁用“确认添加新资源文件”选项。否则,您必须稍后单击每个文件以接受其创建。
      2. 设置 Neutral Resource 语言,以便它显示正确的标志以供您观赏。
    2. 切换回主选项卡,您可以并排查看所有带有翻译的解决方案资源。

    2。将中性文化资源提取为明确的法语

    1. 使用工具栏中的“添加新语言”按钮为法语添加新列。
    2. 从现有的中性语言列复制所有法语资源(CTRL-SHIFT-DOWN 有助于顶部选择整列)
    3. 将所有资源粘贴到新的法语列。

    请注意,ResXManager 将为您创建新的 resx 文件并将它们添加到项目文件中。

    3。将中性文化资源设置为英文资源

    1. 从特定文化栏复制所有英文资源
    2. 将所有资源粘贴到中性培养列

    4。通知 .Net 中性文化现在是英语

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

    5。删除显式英文 resx 文件。

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

    全部完成。

    【讨论】:

    • “将中性资源语言设置为 EN”——这是关键点。只需转到您的 .csproj 文件并添加 en 行。您也可以通过 Project Properties -> Package -> Assembly 中性语言来做到这一点。否则你的中性语言将取决于错误的系统语言。
    【解决方案2】:

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

    看看这段代码:

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

    希望对你有帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    相关资源
    最近更新 更多