none
VB.NETで可変の文字列の多言語対応 RRS feed

  • 質問

  • VB.NETで作成したWindowsフォームアプリで多言語対応をしたいと思っています。

    Button の Text プロパティなどの固定文字箇所は、Form の Localizable を True にして、Language で言語を指定して実現できることは分かりました。
    また、メッセージボックスなどに表示する固定の文字列は、下のようにリソースファイルを作成して実現できることは分かりました。
     Message.resx        ※既定用(日本語用)
     Message.en.resx         ※英語

    質問したいのは、可変の文字列の多言語化です。
    例えば、プログラム上でファイルを作成し保存したときのメッセージとして、下のようにメッセージボックスで表示するとします。
    処理によってファイル名が変化します。
     
     MessageBox.Show( "ファイル " & FileName & " を作成しました。")

    これを、英語にした場合はメッセージは次のようにしたいと思っています。

     MessageBox.Show( "Creates " & FileName & " file.")

    このような場合、それぞれの単語を英語化しても、文法の関係で並び順が変化してしまいうまくいきません。

    やりたいこととしては、引数か何かを渡して、一部が変化する文章全体をひとまとめとして処理なのですが、何か良い方法はないでしょうか?

    2013年12月26日 10:41

回答

  • String.Formatメソッドを使用すれば、任意の語順を使用できます。

    String.Format("{0:d}に{1}を作成しました。", time, filename)

    String.Format("Create {1} at {0:d}", time, filename)

    この書式指定文字列をローカライズすればいいでしょう。

    2013年12月26日 10:49

すべての返信

  • String.Formatメソッドを使用すれば、任意の語順を使用できます。

    String.Format("{0:d}に{1}を作成しました。", time, filename)

    String.Format("Create {1} at {0:d}", time, filename)

    この書式指定文字列をローカライズすればいいでしょう。

    2013年12月26日 10:49
  • 回答ありがとうございます。

    String.Formatメソッド でやりたいことを実現できました。

    2013年12月27日 3:55