良い一日! GDE(Google開発者エキスパート) Dmytro Danylykの記事の無料翻訳を紹介します。 実際には、ここにオリジナルがあります。 この記事では、strings.xmlを操作するための正しいアプローチについて説明しており、多言語アプリケーションを開発する開発者にとって特に役立ちます。 猫をお願いします。
この記事は、string.xmlのようなささいなAndroidについてのものです。
再利用しないでください
異なる画面で行を再利用しないでください
[ サインイン ]または[ サインアップ]画面に読み込みダイアログがあることを想像してみましょう。 両方の画面に読み込みダイアログがあるため、同じ行R.string.loadingを使用することにします。
res / values / strings.xml。
後で別の行を使用することにした場合は、2つの異なる行を作成し、.javaクラスで直接変更する必要があります。 最初から別の行を使用する場合は、 strings.xmlファイルを変更するだけで済みます。
res / values / strings.xml
追加する必要がある言語のサポートと翻訳を事前に知ることはできません。 それはすべてコンテキストに関するものです。ある言語では同じ単語をあるコンテキストで使用できますが、別の言語ではこの単語は意味に適合しません。
res / values / strings.xml
res / values-UA / strings.xml
この場合、英語版のstrings.xmlでは、 R.string.download_file_yes文字列とR.string.terms_of_use_yes文字列の両方に同じ単語「Yes」を使用していることに注意してください。
ただし、strings.xmlのウクライナ語バージョンでは、 R.string.download_file_yesには 「Garazd」、 R.string.terms_of_use_yesには「So」という2つの異なる単語を使用します 。
共有する
プレフィックスとコメントを使用して、1つの画面に属する個別の行
res / values / strings.xml
- このリソースがどのスクリーンに属しているかを簡単に理解できるように、各行にスクリーン名の形式でプレフィックスを追加します。
- クリーンなstring.xmlファイルは、画面ごとにさまざまな言語を簡単にサポートおよび翻訳するのに役立ちます。
画面ごとに異なるstrings.xmlを作成します
必要に応じて、各画面にstring.xmlファイルを作成できます-settings -strings.xml、profile-strings.xml 。 ただし、通常、アプリケーションにはそれぞれ約10〜20の画面があり、各言語フォルダーに10〜20のstring.xmlファイルが必要です。 これは混乱になると思います。
書式設定
リソース#getString(int id、Object ... formatArgs)を使用して文字列をフォーマットする
他の言語では語順が異なる場合があるため、 +演算子で連結しないでください。
res / values / strings.xml
Javaコード
正しい方法は、 リソース#getString(int id、Object ... formatArgs)を使用することです。
res / values / strings.xml
res / values-UA / strings.xml
Javaコード
複数
量的文字列にはリソース#getQuantityString(int id、int quantity)を使用します
異なる言語には複数合意のルールが異なるため、Javaコードの複数の問題を解決しないでください
res / values / strings.xml
Javaコード
正しい方法は、 リソースを使用することです#getQuantityString(int id、int quantity)
res / values / strings.xml
Javaコード
単語の強調表示
HTMLテキストを使用して静的な単語を強調表示する
TextViewで一部の単語の色を変更する場合-ForegroundColorSpanは必ずしも最良のオプションではありません。ハイライトはインデックスを介して行われ、多言語アプリケーションでは安全ではないためです。 strings.xmlファイル内でhtmlフォントカラータグを使用することをお勧めします。
「Discover and play games」というテキストがあるとします。そして、「Discover」という単語と「play」という単語を青で強調表示したいとします。
res / values / strings.xml
Javaコード