Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# windows应用程序c中不同语言的打印输出#_C#_.net_Localization_Globalization - Fatal编程技术网

C# windows应用程序c中不同语言的打印输出#

C# windows应用程序c中不同语言的打印输出#,c#,.net,localization,globalization,C#,.net,Localization,Globalization,我的应用程序还没有本地化,但我必须用不同的语言打印一份报告。 因此,我想我将为报表文本创建不同的资源,但如何为所选语言设置特定的资源 就像西班牙语一样,PrintResource.es-es.resx将如何设置 我是否必须使用if..else..if除了确保在生成报告时使用正确的文化之外,您不应该做任何事情 下面是一个例子: 创建一个新的控制台项目 向其中添加资源文件,称之为Strings.resx 将“String1”键重命名为“DisplayName”,并给它一个值,如“English” 添

我的应用程序还没有本地化,但我必须用不同的语言打印一份报告。 因此,我想我将为报表文本创建不同的资源,但如何为所选语言设置特定的资源

就像西班牙语一样,PrintResource.es-es.resx将如何设置


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

除了确保在生成报告时使用正确的文化之外,您不应该做任何事情

下面是一个例子:

  • 创建一个新的控制台项目
  • 向其中添加资源文件,称之为Strings.resx
  • 将“String1”键重命名为“DisplayName”,并给它一个值,如“English”
  • 添加另一个资源文件,称之为Strings.nb-NO.resx
  • 将norwegian文件中的“String1”键也重命名为“DisplayName”,并给它一个不同的值,如“norwegian”
  • 然后在main 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("{0}: {1}", Strings.DisplayName, 10.31));
    

    只需将当前区域性设置为es。
    Console.WriteLine(string.Format("{0}: {1}", Strings.DisplayName, 10.31));