[解決済み] "ゼロ "のAndroid複数形処理
2023-01-02 16:21:40
質問
strings.xmlに以下のような複数のリソースがある場合、どのようにすればよいでしょうか?
<plurals name="item_shop">
<item quantity="zero">No item</item>
<item quantity="one">One item</item>
<item quantity="other">%d items</item>
</plurals>
を使ってユーザーに結果を表示しています。
textView.setText(getQuantityString(R.plurals.item_shop, quantity, quantity));
1以上ではうまくいっているのですが、数量が0の場合、"0 items"と表示されます。 ドキュメントにあるように、"zero"の値はアラビア語でのみサポートされているのでしょうか? それとも、私は何かを見逃しているのでしょうか?
どのように解決するのですか?
Androidのリソースによる国際化の方法は、かなり限定的です。私は、標準の
java.text.MessageFormat
.
基本的には、このように標準の文字列リソースを使用すればよいのです。
<resources>
<string name="item_shop">{0,choice,0#No items|1#One item|1<{0} items}</string>
</resources>
そして、コードからは以下のようにするだけです。
String fmt = getResources().getText(R.string.item_shop).toString();
textView.setText(MessageFormat.format(fmt, amount));
フォーマット文字列の詳細については javadocs for MessageFormat を参照してください。
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] google-services.jsonって実際何してるの?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] strings.xmlに実行時の値をプレースホルダーとして持たせることは可能ですか?
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] Androidでマイナスマージンを使用するのは悪いことですか?
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] アンドロイドのdatepickerダイアログで最大の日付を設定するには?
-
[解決済み] アダプタからActivityメソッドを呼び出す
-
[解決済み] LayoutParamsの高さを密度に依存しないピクセル数でプログラム的に設定する。
-
[解決済み] ブルートゥースアプリケーションのテストにアンドロイドエミュレータを使用するには?