【问题标题】:printout in different languages in windows application c#在windows应用程序c#中以不同语言打印输出
【发布时间】:2013-06-26 10:38:40
【问题描述】:

我的应用程序尚未本地化,但我必须打印不同语言的报告。 所以,我想我将为报告文本创建不同的资源,但如何为所选语言设置特定资源。

喜欢西班牙语如何设置 PrintResource.es-ES.resx。

我必须使用 if..else..if

【问题讨论】:

  • 只需将当前文化设置为 es-ES。

标签: c# .net localization globalization


【解决方案1】:

除了确保在生成报告时遵循正确的文化之外,您无需做任何其他事情。

这是一个例子:

  1. 创建一个新的控制台项目
  2. 向其中添加资源文件,命名为 Strings.resx
  3. 将“String1”键重命名为“DisplayName”,并为其赋予一个值,例如“English”
  4. 添加另一个资源文件,命名为 Strings.nb-NO.resx
  5. 将挪威文件中的“String1”键也重命名为“DisplayName”,并为其赋予不同的值,例如“Norwegian”

然后在主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);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多