各種ロケール用のリソース


各種ロケール用のリソース

Amazon Fireデバイスには、地域と言語に関するデフォルトのロケールが用意されており、プログラムで問い合わせることができます。特定のデバイス向けに設計されたリソースだけでなく、ロケールに対応したリソースを提供することで、アプリの普及を促し、異なるロケールにおけるユーザーエクスペリエンスの向上も可能です。たとえば、アプリを実行するデバイスのピクセル密度に応じて複数のビットマップを提供できます。

このモデルを拡張して、ロケールごとに異なるビットマップを提供することができます。各ロケールのリソースを適切なフォルダに配置すると、ランタイム時に適切なリソースが検出されます。アプリをローカライズする場合は、この方法でリソースファイルを作成することをお勧めします。

ストリングリソース

strings.xmlファイルには、アプリのユーザーに表示される文字列が記録されています。以下はstrings.xmlの定義のサンプルです。

<?xml version="1.0" encoding="utf-8"?>
	<resources>
  		<string name="hello">Hello!</string>
	</resources>

ソースコードに以下のように記述すると、「hello」という名称のストリングリソースを参照できます。

String helloText = getString(R.id.hello);

layout.xmlやAndroidManifest.xmlなどのXMLファイルでは、以下を記述することでリソースを参照できます。

<application android:label="@string/hello" >

ロケールごとにストリングを変更するには、そのロケールに対してデフォルトではないリソースを含むstrings.xmlファイルを作成し、そのファイルをvalues-xx-rYYという名称のディレクトリに置きます。ここで、xxはISO-639の言語コード、YYはISO-3166-1の地域コードです。以下にディレクトリ例をいくつか挙げます。

	/res
	/values         (default directory, make sure all references are present)
	/values-fr      (contains French language strings, region not used)
	/values-de      (contains German language strings, region not used)
	/values-en-rGB  (contains English language strings for Great Britain)

ストリングリファレンスが検索される際には、まず地域と言語に特有なリソースが検索されます。その後、言語が合致するリソースが検索されます。ロケール特有のファイルで指定されていないリソースに対しては、デフォルトのstrings.xmlが使用されます。たとえば、「hello」ストリングをvalues-en-rGBに置いていない場合、デフォルトの「hello」ストリングが使用されます。

ドローワブルリソース

多くのアプリでは、メニュー、価格表、使用説明書などがビットマップなどのグラフィックデータとして記述されています。次の例は、ドローワブルリソースに対する動的なリソース処理を行うためのディレクトリ構造を示しています。

/res
  /drawable
  /drawable-fr      (contains French language strings, region not used)
  /drawable-de      (contains German language strings, region not used)

ドローワブルリソース用に、ピクセル密度に基づいたディレクトリがいくつかある場合、それらを言語を構成するディレクトリ構造に拡張できます。次の例は、言語とピクセル密度を結び付ける方法を示しています。ディレクトリ名に複数の修飾子を指定する場合は、Androidドキュメントのこのテーブルに記載された順で指定する必要があります。

  /drawable-fr-ldpi
  /drawable-fr-mdpi

同じビットマップ画像のコピーをいくつかのディレクトリに置くなど、ドローワブルアセットを再利用するには、XMLファイルを作成してそのアセットに紐付けます。たとえば、デフォルトのdrawableディレクトリのリソースを指す「background」という名前のリソースが、英国のロケールに必要な場合、以下の内容で/drawable-en-rGB/background.xmlファイルを作成できます。drawable-en-GBディレクトリに解決する「background」への参照では、必ず自動的に/drawable/background_commonリソースが使用されます。

<?xml version="1.0" encoding="utf-8"?>
  <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/background_common" />

通貨リソース

通貨データは、ロケールごとの形式に変換できます。以下の例に示すように、通貨記号および整数部分と小数部分とを区切る記号は、重要な要素です。

  19,95   // 一部のヨーロッパのロケール
  $19.95   // 北米

次の例は、アプリ内課金アイテムの価格をその地域の形式で表示する方法を示しています。各地域のストアにおけるアイテムの価格をアプリに表示するには、次のように記述します。これは価格の表示形式を指定するだけで、通貨は変換されません。

NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.getDefault());
  String formattedPrice = nf.format(19.99f);

デフォルト以外のロケールを使用する場合は、言語と地域の両方を使用して定義してください(例:en_USfr_FR)。言語と地域の両方を使用しないと、正しい形式で表示されません。たとえば、フランス語を第一言語として使用するすべての国が、同じ通貨を使用しているわけではないからです。