Click here to load reader
Upload
masayuki-nii
View
440
Download
2
Embed Size (px)
DESCRIPTION
Cocoa勉強会#57 2013/1/26 Baseによるローカライズまとめ 新居雅行
Citation preview
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