知らないわけにはいかないAndroid strigs.xmlのことです。

4083 ワード

strigs.xmlには注意すべき点やテクニックがたくさんあります。これらはAndroidの応用をより規範化させて使いやすいと知っています。興味がある友達は参考にしてください。 
多重しないでください
 これは多くの人が異なる意見を持っているかもしれません。広く流行しているプログラミングの理念はコードを多重化することを教えてくれています。もちろんコード多重化はいい理念です。プログラムをより簡潔にすることができます。しかし、何でも多重化したいという考えの慣性が形成されやすく、ある場面でトラブルが発生する可能性があります。
 例えば、アプリケーションの登録と登録画面に同じ文字列C R.string.loadingを使っていると想像します。
 
その後、製品の需要が変更されたら、それぞれ異なる提示語を使うなら、二つのstringを新たに作成してコードに配置しなければなりません。最初から別のページに別々に配置すると、必要なのはstings.xmlファイルを修正するだけです。
 ログインしています。
<string name=「sign_」up_loading">登録しています。
もっと見落としやすい理由の一つは、あなた達の応用が国内のユーザーに対してだけではなく、他の言語系のユーザーに対しても、思わぬ問題を引き起こす可能性があるからです。 
いくつかの言語が同じ意味なので、異なる言語環境で異なる単語を使うことができます。 
良好なファイル構造

 <!-- register start -->
<string name="register_username">   </string>
<string name="register_password">  </string>
<!-- register end -->

<!-- login start -->
<string name="login_username">   </string>
<string name="login_password">  </string>
<!-- login end --> 

このような方法でstings.xmlファイルを組織してください。アプリケーションが複雑になったら、簡単に検索したり観察したりして、修正したい文字列を見つけられます。
書式設定 
文字列の綴り方は絶対に使わないでください。言語の順序が多様なので、文字列のつづり合わせはあなたの論理を非常に複雑にします。 
この時は文字列フォーマットを使うことを考慮します。
 ハロー、%1$s!You have%2$d newメッセージ.
%1$sはフォーマットされている文字列を表しています。%2$dはフォーマットされている値を表しています。これを類推してもいいです。

 // Java   :
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount); //        。 
    
 下記のように、あなたのJavaコードの中で単語の複数の問題を処理しないでください。言語によって複数に対して異なる文法ルールがあります。

 <!-- strings.xml start -->
<string name="book">book</string>
<string name="books">books</string>
<!-- strings.xml end -->

if (bookCount == 0) {
  text = getString(R.string.book);
} else {
  text = getString(R.string.books);
} 

正確なやり方はget QuanntityString(int id,int quantity)法を使うべきです。

 <plurals name="book">
  <item name="one">book</item>
  <item name="others">books</item>
</plurals>

int bookCount = 4;
Resources res = getResources();
String bookCount = res.getQuantityString(R.plurals.book, bookCount);
// result: books. 

もちろんQuautity Stringはoneだけではなく、ゼロ、two、few、manyとotherもサポートしています。
それぞれの状況を自由に決めて、どんな言葉を使っていますか? 
また、Quautity Stringも上記のフォーマットと組み合わせることができます。

 <plurals name="book">
  <item name="one">%d book found.</item>
  <item name="others">%d books found.</item>
</plurals>

int count = 4;
Resources res = getResources();
String bookCount = res.getQuantityString(R.plurals.book, count, count);
// result: 4 books found.

Googleの公式見解では、開発者として少なくとも名詞に「one」と「other」の属性を提供するべきだという。 
テキストが強調表示されます
 Foreground ColorSpanまたはSpannable StringBuiderでテキストの一部をハイライトすることができますが、これは多言語アプリケーションにとって最良の方法ではないかもしれません。この二つの方法はいずれも明るい文字を待つ具体的な位置に依存してパラメータとして使用します。多くのサポートが必要な言語を適用すると、Javaコードを大量に作成し、コンテンツの表示位置を頻繁に計算します。
 この時はHTMLを試してみてもいいです。

 <string name="html_text" formatted="false">
<![CDATA[    
<font color=\'#28b5f5\'>Hello</font> world.
]]>
</string>

TextView tv = (TextView) findViewById(R.id.tv_txt);
tv.setText(Html.fromHtml(getString(R.string.html_text))); 

これもフォーマットの一つです。色を定義するだけでなく、を使って、文字列に太字、斜体、下線を持たせてもいいです。
実はstings.xmlの使い方は遠くて、多くの人が思っているほど簡単ではありません。ここもれんがを投げて玉を迎えます。もっと詳しい使い方を知りたいなら、公式文書を参考にしてください。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。