-2

Windowsフォームのラベルで文字列を現在のカルチャに変換するにはどうすればよいですか?

    Format of the text to be displayed:
    <string in current culture> <string in english>

    ex: <welcome in dutch\french\chineese> <User ID in english>
---------------    
    string userid = "A123#"
    string str = String.Format(System.Threading.Thread.CurrentThread.CurrentUICulture, "{0} ", "Welcome");
    this.myLabel.Text =  str + userid ;
---------------

どうすればいいですか?

4

2 に答える 2

4

したがって、組み込みでは翻訳を取得できませんが、1つのアプローチは、カルチャごとに表示する保存された文字列を検索することにより、ResourceManagerに依存してこれを処理することです。表示する言語ごとに、名前の一部としてカルチャ値を含むリソースファイルを作成できます。たとえば、次のようになります。

myLangResource.es-CO.resx
myLangResource.fr-CA.resx
myLangResource.en-US.resx

関心のある言語ごとに、リソースファイルタイプの新しいアイテムをプロジェクトに追加し、翻訳に関心のある文字列を保存するだけです。それらには名前と値が含まれ、適切な文字列を取得するためにコードによって検索されます。何かのようなもの

Name       Value
-----------------
Welcome    Howdy

また

Name       Value
-----------------
Welcome    Bienvenido

次に、基本的に、CultureInfoメンバーを作成します。

private CultureInfo curCulture;

次に、次のように現在のカルチャに設定します。

curCulture = CultureInfo.CurrentCulture;

ResourceManager次に、オブジェクトを介して適切なリソースをロードし、適切な文字列を取得します。そのようなもの:

var resourceManager = new ResourceManager("MyNamespace.myLangResource", typeof(DemoForm).Assembly);
string greeting = resourceManager.GetString("Welcome", curCulture);
// show the greeting however you want such as
myLabel.Text = greeting;

何らかの理由で現在のカルチャ値を変更したいとします。リソースルックアップには、名前の「es-CO」、「fr-CA」、または「en-US」の部分は必要ありません。一致する名前のリソースファイルを探すことにより、自動的にこれを実行しようとします。

于 2012-08-20T16:21:24.443 に答える
1

自動魔法翻訳は存在しません。

次のいずれかを実行できます。

  • 翻訳サービスのクエリ
  • あなたのコードであなた自身の辞書/翻訳エンジンを持ってきてください
  • アプリケーションを適切にローカライズします(リソースの複数のバージョンを提供し、それに応じてそれらを使用します)。
于 2012-08-20T15:28:41.490 に答える