Cocoa勉強会#57-Baseによるローカライズまとめ

Preview:

DESCRIPTION

Cocoa勉強会#57 2013/1/26 Baseによるローカライズまとめ 新居雅行

Citation preview

Baseによるローカライズまとめ

Cocoa Study #572013/1/26Masayuki Niinii@msyk.net

1

Agenda

✴ Baseによるローカライズとは

✴ 問題点と解決策

2

過去のローカライズ

言語ごとにリソースを用意

利点• 言語ととにユーザインタフェースなどを定義できる欠点• 1つのファイルで行った変更を別のファイルにも行わないと同じ動作をしない

解決策• nibtool/ibtoolコマンドで、文字列要素を抜き出しローカライズ• 英語リソース+日本語文字列定義より、日本語のリソースを作成

3

Baseを利用したローカライズ

Baseファイル+言語ごとのstringsファイル• NIB、Storyboardは、Baseとしてのみ存在• Baseの中の文字列を言語ごとに置き換えるstringsファイルを用意すると、実行時に合成される• ビルドしたアプリケーションにも、Base.lproj+English.lprojのいずれもが存在する

すなわち• デザインをBaseファイルに対して行う• 文字列定義をstringsファイルに対して行うしかし…• いくつか問題点がある

4

5

問題点1 - iOS 5は非対応

iOS 6以降のみ• iOS 5では、ストーリーボードがないと言われる

6

問題点2 - Baseが作られないことがある

プロジェクトの状態によってはBaseは作られない• Single View Applicationなら作られるが• Emptyなら作られない• Emptyにストーリーボードを加えてもやっぱり作られない

次の問題点と併せてDemo

7

問題3 - 作業手順がいまいち分からん

Localizationに言語一覧が見えている場合• 特に何も考えなくてもいいだろう• Single View ApplicationのテンプレートだとそうなるEmpty Applicationから作ったプロジェクト• 言語を追加してから、Baseを作る• それぞれのファイルでMake Localizedボタンをクリック

8

問題4 - 変更点がstringsに反映されない

Baseにオブジェクトを追加してもstringsはそのまま• stringsにないオブジェクトはそのまま表示される解決策はある• 一度、言語のStoryboard/NIBを合成して、その後にstringsに分離する方法• Object IDを参照して、自分でstringsファイルにエントリーを作成する方法

9

まとめ

Baseの方が合理的だが、iOS 5で使えないのが難点

操作方法がいまいち不安定だが、結果を見ながら臨機応変に作業する

Appleのドキュメント• Internationalize Your App• https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/chapters/

InternationalizeYourApp/InternationalizeYourApp/InternationalizeYourApp.html

10