2014年9月20日土曜日

Titanium Tips: いわゆる国際化/多言語化対応について…

Titanium でのいわゆる国際化/多言語対応ですが、Titanium Studio 3.3 での開発では公式のTitanium SDK のマニュアル
の通りでした…、というのもアレなので少し付け足すと、
基本、
  • プログラム中では /i18n/ISO 639-1で定義された言語名/strings.xml ファイルでの定義と  L() マクロの組み合わせ
  • アプリの名称については /i18n/~/app.xml 中に appname で定義する
で出来るようになっています。

日本語の解説では
がまとまっています。
ただ、ホーム画面に表示されるアプリの名称を多言語対応する場合については、上記の記事と最新版(Titanium SDK 3.2 以降)では違っていて、
にあるような /i18n/~/app.xml を使う方式に統一されたようです。

また、L() マクロを使える場所についてですが、 Alloy での開発で view用の xml ファイルでは一部制限があるようです(styles の tss, controllers の js ファイルは特に問題なし)。
にあるように確かに view でも使える場所はあります。
次のように
<Window title="L('test')">
といったプロパティ値などでは働きます。
ただ、 Label や Button などの平文のところ
<Label id="labelTest">L('test')</Label>  
<Button id="buttonTest">L('test')</Button> 
といった場合には働いてくれません(でした。少なくとも Titaniaum Studio 3.3 環境では)。
こういう箇所については tss 側で記述する必要があります(view 側は空文にした上で)。
"#labelTest":{
  text:L('test')
}  
"#buttonTest":{
  title:L('test')
記述の綺麗さという観点からなら、 view ではなく tss 側にまとめた方が良いのかもしれません。

他にも
のページも参考になると思います。

2014/10/07 追記
上記の tss ファイルでの L() マクロ利用の制限ですが、SDK 3.4(Alloy 1.5.0) から無くなったようです(Label のみの一部?)。
情報ソースはこちらから。





Android アプリを Titanium Studio/Alloy を使って作ったので、その際にひっかかったことを、Tips で書いていってます。
実際に同じところで躓いた人がいて、それの解決のお役に立てば、と思っています。
ちなみに環境は Windows + Titanium Studio 3.3 + Android用開発となっています。

ただ、まったくのピンポイントでの Tips なので、まとまっての記述を期待している人にはすいません。

0 件のコメント:

コメントを投稿