前回、イタリア語の件を取り上げたが翻訳者からの連絡で文字が切れていることがわかった。
(前回)Cocoaの日々: SimpleCap ローカライズ(Italian)
以下、翻訳者が送ってくれた画像(関係ないがこの画像自体が SimpleCap でキャプチャされているのは、ちょっとうれしい)
この方によると
The Italian is a language with many words.とのこと。確かに英語よりも文字数が多めだ。
さっそく訂正。こんな感じ。
今は英語の nib をベースとして、他の言語へ展開している。それもあって、今回の変更はまず英語で幅を広げた後、イタリア語および他の言語の nibファイルを生成している。このためレイアウト(幅)は最大公約数的なものにならざるを得ない。今回の変更で日本語版はこんな風になった。
変更前
変更後
「設定済アプリケーション」のboxの幅をダイアログの幅ギリギリまで取り、アプリ名のラベル幅を最大限取れるようにしてある。そのせいで日本語版はずいぶんと間伸びした見た目となってしまった。
言語毎の nib ファイルを調整する方法もあるのだが、それだとメンテナンスが大変になってしまう。例えば cocoa binding付きのテキストフィールドを1つ追加したら、それを InterfaceBuilderを使い全言語の nibファイルへ追加しなければならない。さすがにこれは大変だ。今の英語nibをベースとする方法では、英語nib を変更後に ibtoolを実行すればいいだけなので楽。
今はこんなシェルスクリプトを書いて他言語の nibファイルを生成している。
#!/bin/sh ibtool --strings-file Japanese.lproj/MainMenu.strings \ --write Japanese.lproj/MainMenu.nib English.lproj/MainMenu.nib ibtool --strings-file zh_TW.lproj/MainMenu.strings \ --write zh_TW.lproj/MainMenu.nib English.lproj/MainMenu.nib ibtool --strings-file Italian.lproj/MainMenu.strings \ --write Italian.lproj/MainMenu.nib English.lproj/MainMenu.nib
- - - -
ibtoolによって言語リソース(テキストファイル)を用意するだけで多言語表示は容易なったが、レイアウトはさすがに人の手で調整が必要。このあたり遠い未来にはインテリジェンスな?レイアウトエンジンが現れるのだろうか。どんな言語でも適切にレイアウトしてくれるような。