【发布时间】:2013-06-26 10:38:40
【问题描述】:
我的应用程序尚未本地化,但我必须打印不同语言的报告。 所以,我想我将为报告文本创建不同的资源,但如何为所选语言设置特定资源。
喜欢西班牙语如何设置 PrintResource.es-ES.resx。
我必须使用 if..else..if
【问题讨论】:
-
只需将当前文化设置为 es-ES。
标签: c# .net localization globalization
我的应用程序尚未本地化,但我必须打印不同语言的报告。 所以,我想我将为报告文本创建不同的资源,但如何为所选语言设置特定资源。
喜欢西班牙语如何设置 PrintResource.es-ES.resx。
我必须使用 if..else..if
【问题讨论】:
标签: c# .net localization globalization
除了确保在生成报告时遵循正确的文化之外,您无需做任何其他事情。
这是一个例子:
然后在主Program.cs中,粘贴以下代码:
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(CultureInfo.CurrentUICulture, "{0}: {1}", Strings.DisplayName, 10.31));
可能会产生与此不同的文本:
Console.WriteLine(string.Format("{0}: {1}", Strings.DisplayName, 10.31));
【讨论】:
Console.WriteLine(YourProjectName.Strings.DisplayName);