我的应用程序尚未本地化,但我必须打印不同语言的报告。所以,我想我将为报告文本创建不同的资源,但如何为所选语言设置特定资源。
就像西班牙语一样 PrintResource.es-ES.resx 将如何设置。
我必须使用 if..else..if
我的应用程序尚未本地化,但我必须打印不同语言的报告。所以,我想我将为报告文本创建不同的资源,但如何为所选语言设置特定资源。
就像西班牙语一样 PrintResource.es-ES.resx 将如何设置。
我必须使用 if..else..if
除了确保在生成报告时使用正确的文化之外,您不需要做任何事情。
这是一个例子:
然后在主 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));