Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改C应用程序中的“(默认)”ResX语言_C#_.net_Localization_Resx - Fatal编程技术网

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

C# 更改C应用程序中的“(默认)”ResX语言,c#,.net,localization,resx,C#,.net,Localization,Resx,我正在用C语言制作一个应用程序,里面有很多表单和其他东西。 我想对它进行本地化,所以我在VS中使用了集成的本地化功能。 该应用程序最初是用法语编写的,因为我使用的是英语翻译RESX,但现在它与其他一些不会说法语的开发人员在Codeplex上,我想更改应用程序和RESX文件中的默认语言,以便他们可以在不读法语的情况下翻译为其他语言。 因为当您在VS Form Designer中选择另一种语言时,它会在此处显示默认语言法语。我试图重命名所有文件,但问题是所有表单属性都存储在默认的RESX中,即法语R

我正在用C语言制作一个应用程序,里面有很多表单和其他东西。 我想对它进行本地化,所以我在VS中使用了集成的本地化功能。 该应用程序最初是用法语编写的,因为我使用的是英语翻译RESX,但现在它与其他一些不会说法语的开发人员在Codeplex上,我想更改应用程序和RESX文件中的默认语言,以便他们可以在不读法语的情况下翻译为其他语言。 因为当您在VS Form Designer中选择另一种语言时,它会在此处显示默认语言法语。我试图重命名所有文件,但问题是所有表单属性都存储在默认的RESX中,即法语RESX中,因此如果我重命名,它将破坏所有内容。是否可以将默认语言更改为英语

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

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

请查看以下代码:

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

希望有帮助。

虽然您可以在文件系统中进行重命名以实现中立的区域性/资源更改,但也需要更新项目文件,这很麻烦。我发现最简单的方法是通过名为

详细步骤:

1.运行并配置ResXManager 在VS:Tools->ResXManager中

选择下面的配置选项卡 禁用选项确认添加新资源文件。否则,您必须稍后单击每个文件以接受其创建。 设置中立的资源语言,这样它将显示一个正确的标志,以满足您的观看乐趣。 切换回主选项卡,在该选项卡上可以看到所有具有并排翻译的解决方案资源。 2.将中性文化资源提取为法语 使用工具栏中的“添加新语言”按钮为法语添加新列。 从现有的中性语言列复制所有法语资源CTRL-SHIFT-DOWN有助于顶部选择完整列 将所有资源粘贴到新的法语列。 请注意,ResXManager将为您创建新的resx文件,并将它们添加到项目文件中

3.将中性文化资源设置为英语资源 从特定文化栏复制所有英语资源 将所有资源粘贴到中性区域性列 4.告诉.Net,中性文化现在是英语 5.删除显式英文resx文件。 由于中性resx文件现在已经包含英语资源,因此您不需要将它们保留为特定于区域性的资源。不幸的是,ResXManager似乎没有用于此操作的按钮,但您可以选择使用VS solution manager筛选器en-GB.resx并删除它找到的所有文件。同样,在VS中执行此操作会自动更新项目文件


全部完成。

这可能还不够。你还需要看看和。现在我看到他的问题根本不是关于这个。我认为这不是OP要求的,因为默认的resx仍然是法国的。不确定为什么这是公认的答案。将中性资源语言设置为EN-这是关键点。只需转到您的.csproj文件并添加en行。您还可以通过项目属性->包->汇编中性语言来实现这一点。否则,您的中性语言将依赖于错误的系统语言。
[assembly: NeutralResourcesLanguage("en-GB", UltimateResourceFallbackLocation.MainAssembly)]