10

Click here to load reader

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

Cocoa Study #572013/1/26Masayuki [email protected]

1

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

Agenda

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

✴ 問題点と解決策

2

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

過去のローカライズ

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

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

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

3

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

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

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

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

4

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

5

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

問題点1 - iOS 5は非対応

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

6

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

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

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

次の問題点と併せてDemo

7

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

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

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

8

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

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

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

9

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

まとめ

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

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

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

InternationalizeYourApp/InternationalizeYourApp/InternationalizeYourApp.html

10