社内のiOS勉強会でTips共有したときのメモ
TODO: そのうち清書する(多分しない)
iOSアプリのローカライズについて
いろいろやり方あるけど自分はデフォルト厨なので、できるだけ自作ぽいことはせず、Apple様に提供して頂いている機能をなるべく使ってローカライズがんばる。 ペロペロ(靴をなめる音)
Export/Import for Localization
- .stringsを手作業で編集するのはなにかと辛いですよね・・
- 最近のxcodeでは以下のワークフローで翻訳作業できる
- 開発者が、言語リソースを XIFF 形式 (XML Localization Interchange File Format)で出力
- 翻訳者が編集
- 開発者が翻訳済みのXLIFFをインポートすると、.stringsに変更が反映される
XLIFFエディタで翻訳
- Counterparts Lite が無料
- ¥100だけど、こっちのほうがオススメ (yosemite only)
便利なところ
- コード中の NSLocalizedString と既存のstringsをマージして XLIFF を吐いてくれるのでstringsは直接触らないくてよい
- 手作業で更新した内容も反映される
- Storyboard / xib の言語リソースも一緒にexportされるので、単一のXLIFF で翻訳をすべてまかなえる
面倒なところ
- 言語ごとにimportが必要で面倒
- テストターゲットに追加しているm/h内の言語が同一キーで重複する
-
<file original=“XXXTests/Localizable.strings” ..>
の行で見分ければ良いがエディタ上で判別出来ないと辛い - Counterparts Lite ではキーを一覧しているだけなので辛い
- xliffieだと、ローカライズ対象ごとに分けて表示してくれるのでオススメ
-
Storyboard / xib のローカライズ
- Assistant Editor でプレビューできて便利ですよねー
- なので、UILabelをOutletでつないで翻訳・・ではなくなるべくStoryboard / Xib自体をローカライズする方向で
2種類のローカライズ手段
- Localizable.stringsとしてローカライズ
- Storyboard/Xibから文字列抜き出してstringsを生成してくれる
- ビューの構造が変わっても(なんとか)追従してくれる
- Storyboard/Xib を編集 => 一旦"Storyboard/Xib自体をローカライズ”にconvert => 「Localizable.stringsとしてローカライズ」に戻す
- Storyboard/Xib自体をローカライズ
- Storyboard/Xibが言語ごとに複数作られる感じ
- 初回設定時にオリジナルをcopyして、以降は変更は同期しない(!)
-
よっぽど言語ごとにレイアウト変わるとかじゃない限り使えなさげ=> xcode6.2から?一旦stringsにconvertすれば変更は追従するようになってた
- お好きな方で
詳細は以下を参考
Storyboardで消耗しないためのTips
http://qiita.com/kenmaz/items/5e749f37e7095e0d54f2
Attributed Stringのローカライズ
- IB上で定義したAttributed Stringはローカライズ対象外 (stringsに吐かれない)
- UILabelだけのxibを作ってローカライズ?
- strings / XLIFF にはエクスポートされないので個別管理になってしまう
ロック
- 他の人がstoryboardをいじらないようにロックできる(!)
- どうなの・・・
コマンドラインからのexport/import
- exportはこう
xcodebuild -exportLocalizations -localizationPath xliffs -project LocalizeSample4.xcodeproj -exportLanguage ja -exportLanguage en
でもimportはできない!どーなの- importもできます
xcodebuild -importLocalizations -localizationPath ~/ja.xliff -project LocalizeSample4.xcodeproj
画像などのリソースのローカライズ
- 画像ファイルなどローカライズ可能
- だがxcassets管理下の画像はローカライズ不可能
- どーなの
テスト
- IB + Assistant Editor で確認できてうれしい
- Edit Scheme -> Options > Application Languageで言語選択してsimulator実行
まとめ
- どーなの的な点は多々あるが、まあなんとかがんばってやっていきましょう
- 詳しくは Appleのドキュメントをお読みください