私のアプリケーションはまだローカライズされていませんが、別の言語でレポートを印刷する必要があります。したがって、レポート テキスト用に別のリソースを作成すると思いますが、選択した言語に特定のリソースを設定する方法を教えてください。
スペイン語の場合と同様に、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));