1

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

スペイン語の場合と同様に、PrintResource.es-ES.resx がどのように設定されるか。

if..else..if を使用する必要がありますか

4

1 に答える 1

3

レポートを作成する時点で、適切な文化で実行していることを確認する以外に、何もする必要はありません。

次に例を示します。

  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));
于 2013-06-26T10:44:12.390 に答える