C# windows应用程序c中不同语言的打印输出#
我的应用程序还没有本地化,但我必须用不同的语言打印一份报告。 因此,我想我将为报表文本创建不同的资源,但如何为所选语言设置特定的资源 就像西班牙语一样,PrintResource.es-es.resx将如何设置C# windows应用程序c中不同语言的打印输出#,c#,.net,localization,globalization,C#,.net,Localization,Globalization,我的应用程序还没有本地化,但我必须用不同的语言打印一份报告。 因此,我想我将为报表文本创建不同的资源,但如何为所选语言设置特定的资源 就像西班牙语一样,PrintResource.es-es.resx将如何设置 我是否必须使用if..else..if除了确保在生成报告时使用正确的文化之外,您不应该做任何事情 下面是一个例子: 创建一个新的控制台项目 向其中添加资源文件,称之为Strings.resx 将“String1”键重命名为“DisplayName”,并给它一个值,如“English” 添
我是否必须使用if..else..if除了确保在生成报告时使用正确的文化之外,您不应该做任何事情 下面是一个例子:
using System;
using System.Globalization;
using System.Threading;
namespace ConsoleApplication18
{
class Program
{
static void Main()
{
Console.WriteLine(Strings.DisplayName);
Thread.CurrentThread.CurrentUICulture =
CultureInfo.GetCultureInfo("nb-NO");
Console.WriteLine(Strings.DisplayName);
}
}
}
执行此操作,您将在控制台上看到“English”后跟“Norwegian”
从本例中可以看出,只要设置了正确的UI区域性,就会读取正确的资源文件
打印英文文本的代码和打印挪威文本的代码是相同的,但基础文化已更改,因此将使用不同的资源文件
如果您不想在生成报告后用西班牙语UI“玷污”应用程序的其余部分,只需为报告代码启动一个线程,并将该线程的UI区域性设置为西班牙语即可。NET的资源子系统应处理其余部分
还要确保使用区域性感知方法重载格式化数字和日期
这:
可能会产生与此不同的文本:
Console.WriteLine(string.Format("{0}: {1}", Strings.DisplayName, 10.31));
只需将当前区域性设置为es。
Console.WriteLine(string.Format("{0}: {1}", Strings.DisplayName, 10.31));