Titanium Mobileでアプリのアイコン名を多言語対応する

Titanium Mobileでアプリを作成した時、アプリのアイコンに表示される名前はプロジェクト名に入力したものが採用されます。

20121010-ti_newproj.png

プロジェクト "proj_hogefuga" を新規作成し、そのままビルドしてみました。

20121010-ti_icon.png

プロジェクト名に指定したものがアイコンの下に表示されています。hogefugaはともかく、頭に"proj_"なんてつけてしまったもんだからかっこ悪いことこの上ありません。

これではアプリのアイデアを思いついて作り始めてもアプリ名が思いつくまでは作れない、もしくはとりあえず仮の名前で作っておいて、プロジェクト名をリネームしないといけない、ということになってしまうわけでとても不便です。

というか、英語版は”hogefuga"でいいとして、日本語版は"ほげふが"って名前で表示させたい場合だって当然あるわけです。そうなるとこのプロジェクト名を表示するだけでは絶対に無理なわけで。多言語対応・国際化したい時はどうすればいいんでしょうか?

 

アプリの多言語対応。app.xmlでアイコン名を定義する

プロジェクト内に"i18n"というフォルダを作成します。さらにその下に、"en"と"ja"という名前でフォルダを作成しましょう。フランス語なら"fr"など、必要な言語の数だけ言語コードのフォルダを作ります。

20121010-i18n.png

さらに、それぞれのフォルダにapp.xmlを作成します。

内容は以下のとおりです。それぞれのapp.xml内のappnameにアイコンとして表示させたい文字列を入力します。app.xmlの文字コードはUTF-8で作成します。

 i18n/en/app.xml

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="appname">HogeFuga</string>
</resources>

 

 i18n/ja/app.xml

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="appname">ほげふが</string>
</resources>

多言語対応は行わず、英語版だけで構わない場合は、enだけ作れば問題ありませんし、jaだからといって無理矢理ひらがなや漢字を使わなければいけないということはありません。単に言語環境としてその言語が設定されている場合にアイコンに表示される文字列、というだけです。

 

アイコン表記を確認してみる

20121010-en.png

i18n/en/app.xmlに指定したように、"HogeFuga"が表示されていますね。

そして Settings(設定) > General(一般) > International(言語環境)で「日本語」に切り替えます。

20121010-ja.png

i18n/ja/app.xmlに指定した"ほげふが"に切り替わっています。

HOME画面に表示されるアイコン名の設定だけのつもりが多言語対応まで広がってしまいましたが、とても簡単ですね。なお、アプリ内のラベルやダイアログのメッセージを多言語対応させたい場合は app.xmlではなく、strings.xmlを用意する必要がありますが考え方は一緒です。strings.xmlの使い方については後日エントリ予定です。明日かな?

 

そもそもi18nってなんだ?

ちなみに、そもそも「i18n」ってそのまま使っちゃってるけどどういう意味なんだ?って思ったので調べてみました。

"i18n"とは、"internationalization"(国際化)を省略した表記で、"internationalization"だととても長い単語なので、先頭の "i" と末尾の"n"の間に18文字(nternationalizatio)あるよ、ということで "i18n"とする「ヌメロニム」という表記法だそうです。

日本一文字数が多い駅名の「東京ディズニーランド・ステーション」駅を「東15ン」駅と書く感じですかね? わけわかんないですね(笑)