319

私の Android アプリでは、文字列を国際化して実装します。文法と、異なる言語での文の組み立て方に問題があります。

例えば:

「5 分前」 - 英語

"vor 5 Minuten" - ドイツ語

strings.xml で次のようなことができますか?

<string name="timeFormat">{0} minutes ago</string>

そして、いくつかの魔法のような

getString(R.id.timeFormat, dynamicTimeValue)

この動作により、語順が異なる他の問題も解決されます。

4

5 に答える 5

391

はい、標準的な方法で文字列をフォーマットするだけですString.format()

メソッドContext.getString(int, Object...)AndroidまたはJava Formatterのドキュメントを参照してください。

あなたの場合、文字列の定義は次のようになります。

<string name="timeFormat">%1$d minutes ago</string>
于 2010-03-07T19:46:22.763 に答える
349

に 2 つの変数が必要な場合はXML、次を使用できます。

%1$d text... %2$dまたは%1$s text... %2$s文字列変数の場合。

例 :

文字列.xml

<string name="notyet">Website %1$s isn\'t yet available, I\'m working on it, please wait %2$s more days</string>

アクティビティ.java

String site = "site.tld";
String days = "11";

//Toast example
String notyet = getString(R.string.notyet, site, days);
Toast.makeText(getApplicationContext(), notyet, Toast.LENGTH_LONG).show();
于 2012-04-13T15:48:25.097 に答える
12

この特定のアプリケーションには、標準ライブラリ関数android.text.format.DateUtils.getRelativeTimeSpanString().

于 2010-07-25T04:18:15.080 に答える