2012-01-25 9 views
10

Android用に18nのアプリケーションがサポートされていますが、このような文字列にパラメータを付けることはできますか? Railsでは、私はこのような何か行うことができます。Android:パラメータ付きのI18n

en: 
    hello: "Hello %{name}! You've got %{count} messages." 

t("hello", name: "Klaus", count: 5) 

のAndroidで同様のものがあるのか​​、私はそれを自分で行う必要がありますか?

答えて

12

を参照してくださいを置くのstrings.xmlで同じ

を行うことができますHeikoさんの答えと、複数の文字列が必要な場合の具体例を示します

<string name="hello">Hello %1$s! You've got %2$d messages.</string> 

このようにして、各翻訳の文字列の順序を切り替えることができます。

String hello = getString(R.strings.hello, "Klaus", 5); 
+0

ドキュメントによれば、必要なのは番号だけです。_Argument index。通常、各書式指定子は書式設定する次の引数を消費します。便利なローカライゼーションのために、引数が指定された順序とは異なる順序で出力されるように、引数を並べ替えることができます。たとえば、 "%4 $ s"は4番目の引数(4 $)を文字列としてフォーマットします。引数を<に再利用することもできます。たとえば、format( "%o% neworld

4

あなたは

<string name="xyz">Do you really want to report [%s] as spammer?</string> 

を置くことができ、その後、あなたのコード内であなたが

String foo = getString(R.strings.xyz,"Joe Doe"); 

については詳しく説明しContext.getString()

関連する問題