Androidだとstrings.xmlとか、リソースIDで取ってくるとかやるのだが。
iPadとiPhoneのstoryboardがそれぞれある場合で試してみよう。
まず、アプリを新規で作ることにする。
そしてstoryboardを開き、既存のViewControllerを削除し、Navigation Controllerを置く。意味はないんだけど、作ろうとしているアプリに近くしておくだけ。
自動的にTableView Controllerができているので、TableViewをAttributes inspectorでStatic Cellsにしておく。デフォルトはDynamicでソースに書いていくようになってるけど、まあ、それはあとだ。
ここら辺で、PROJECTのInfo設定で、Localizationsにjaを追加。
ダイアログが出てきて、チェックが全部入っていたので、そのままFinish。
そしたら、プロジェクトツリーのStoryboardのところに▲が出てきて開けるようになる。
開くと、「Main_iPad.storyboard(Base)」「Main_iPad.strings(Japanese)」みたいなものになっていた。
StoryboardエディタでFile inspectorを見ると、LocalizationがBaseとJapanseseにチェックが入っていて、EnglishとJapaneseの設定?がLocalizable Stringsになっていた。
つまり、UI画面ではBaseとなる言語(今回は英語)で文字列を書き、stringsファイルに変換する日本語を書く、というスタイルになるのか。
それはそれでいいんだけど、stringsファイルがこんな感じなのが困る。
/* Class = "IBUILabel"; text = "Label"; ObjectID = "2zy-iV-2j6"; */
"2zy-iV-2j6.text" = "Label";
オブジェクトIDになっているので、どれがどれかわからん・・・・。設定?をLocalizable StringsからInterface Builderに変えると、もう1枚Storyboardができあがった。
つまり、日本語用のUI画面ができた、と。
これはこれでめんどくさい・・・。
私がやるなら、先に英語なり日本語なりでUIの文字を全部埋めてからLocalizationsに追加して、stringsファイルのコメントに文字列が既に書かれるようにしたいな。
こちらを見ながら、stringsファイルを更新してくれるスクリプトを動かすようにすると、後からでも更新されるので便利だ。
http://d.hatena.ne.jp/paraches/20130225
どうやってるのかわからないけど、stringsファイルを手動更新したところは残ってるし、Storyboardで更新されたところは入ってるし。
ただ、Storyboardで文字列を更新すると、stringsファイルでそのオブジェクトの文字列を手動で更新していても、それは捨てられてStoryboardの文字列が入るようになっていた。
それなら、だ。
Baseにはそれっぽい文字列を埋め込むだけにして、各言語の文字列は全部stringsファイルで管理した方がやりやすいだろう。
そうすれば、Storyboardの変更に強くなる。
あとはもう一歩進めて、Excelか何かでオブジェクトIDと文字列の管理表を作り、マクロでstringsファイルを自動生成する、というのができると、Androidみたいな文言リソース管理ができそうだ。
これがオブジェクトIDじゃなくて、リソースIDとして別扱いにできればいいんだけどなぁ。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。