Android ソフトのローカライズ方法
アプリケーションのローカライズ方法のDraftが出たので一通り試してみました。
現在Draftの状況ではありますが、大きく変わることはないと思われます。
Localizing Android AppsのDraft
https://groups.google.com/group/android-developers/web/localizing-android-apps-draft
デモアプリのダウンロード
ローカライズ手法を説明するために、デモアプリ(L10nDemo.zip)が用意されており、上記ドキュメントに記載されてあるリンクからダウンロードできます。
ダウンロードして実行してみました。特に記載することはなく、Locale情報を見てリソースを切り替えているだけのアプリケーションです。(しかし日本語リソースがないというのはいかがなものかと…)
ちなみに、ロケール情報は以下のコードで取得します。
// fetch the display name for the current locale; a couple different waysString locale = getResources().getConfiguration().locale.getDisplayName();locale = java.util.Locale.getDefault().getDisplayName();
エミュレータのロケールを変えてみる
エミュレータにshellで入り、以下のコマンドを打つだけです。
adb shellecho fr-CA > /data/locale;stop 5;start
5秒待って、エミュレータ上でデモアプリを起動すると、無事カナダに住むフランス人状態になりました。
注意としてこの手法は、エミュレータだけで動作をし、実機では動作しません、またこの手法は将来変更されるでしょう(GUIが付くのが普通でしょう)と記載されています。
アプリケーションの公開
アプリケーションを公開する時は、アプリケーションサイズを小さくするために、各リージョン毎にaptを作ってAndroid Marketに公開をする、とありますが、このあたりはどうなんだろうか?開発者の結局手間が増えるだけで、サイズはあまり変わらない気がします(グラフィックを多様しているソフトは除く)。開発者が手間を増やすかどうかは、新しくなるAndroidMarketの仕様によるでしょう。
(ちなみに、aapt -c コマンドにバグがあるので、試すのはちょっとまってねということらしい)
日本語化
日本語化を試してみる。
先のデモアプリに日本語リソースを追加し実行させます。
参考資料
現在のAndroid SDKのローカライズ関連ページ
http://code.google.com/intl/ja/android/devel/resources-i18n.html
Language
ISO 639-1
Region
ISO 3166-1-alpha-2
日本に住んでいて、日本語をしゃべる人は、「ja_rJP」となります。
プログラムの変更
/drawable-ja-rJP/flag.pngを作成
日本の国旗を用意
/values-ja/strings.xmlを作成
内容を以下とする。
<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">国際化テスト</string><string name="text_a">これは非常時の放送システムのテストです。 これはテストにすぎません</string><string name="text_b">これが実際の非常事態であったならば、我々は仰天して逃げました、そして、あなたには知らされなかったでしょう。</string><string name="text_c">この文字列は、message formattingを使ったものです。現在のロケールでは {0} は {1}の前にきます。そして現在のロケールは {2}です。</string><string name="button_label">ボタン</string></resources>
実行
エミュレータのロケール変更
echo ja-JP > /data/locale;stop;sleep 5;start
無事動きました。
コメント
コメントを投稿