Xcode 6.3でローカライズする時の作業メモ
Xcodeも6.3になったことだし、ローカライズについてちゃんと調べなおしてみたメモ。
動作を確認した環境
環境 | 情報 |
---|---|
Xcode | 6.3 (6D570) |
iOS | 8.3 |
Swift | 1.2 |
Date | 2015/4/12 |
ローカライズ作業の概要
実際にローカライズを行う時の手順はこんな感じ。
- NSLocalizedString()を仕込む
- ローカライズ先の言語を追加
- Storyboardのローカライズ
- NSLocalizedString()関係のローカライズ
- iOS Simulatorでテスト
ローカライズ関係の小ネタ
以下、おまけの情報。
実際の作業
1. NSLocalizedString()を仕込む
普通にアプリを作成した後、ローカライズが必要となった部分にNSLocalizedString()を仕込んでいく。最初からNSLocalizedString()を使うようにしておいたほうが楽、という説もある。
実際にNSLocalizedString()を使う部分はこんな感じ。
func selectLanguage(select: Int) { // 文章を切り替え ※この部分はローカライズしない let str: String if select == 0 { str = "All your base are belong to us." } else { str = "君達の基地は、全てCATSがいただいた。" } detailText.text = str // 文字数を表示 ※ローカライズする let fmt = NSLocalizedString("%d characters", comment: "%d characters") countLabel.text = String(format: fmt, count(str)) }
ポイントは、せっかくのSwiftなのに"\(name)"形式の埋め込みが使えないこと?
NSLocalizedString()のcomment:は翻訳するときに参考になる情報を記述。Localizable.stringsでその項目に対応するコメントとして使われる。無駄に悩むぐらいなら、元の文章をそのままコメントにしてしまうのが楽かな。
2. ローカライズ先の言語を追加
[Project] - [Info]のLocalizationsで、ローカライズ先の言語を追加する。これは、ある程度アプリが形になってからやったほうが楽かと。たぶん。
[Project] - [Info]のLocalizationsにある[+]をクリック
ローカライズ先の言語を選択
今回はJapaneseを選択。
stringsファイルが生成される
選択してたファイルに対応するstringsファイルが、Xcodeによって生成される。
3. Storyboardのローカライズ
それぞれのStoryboardに対応するstringsファイルを、Xcodeで直接ローカライズする。Xliffieでまとめてローカライズしても良いんだけど、StoryboardはXcodeですぐにプレビュー出来るのでこっちの方が好み。
言語を切り替えてローカライズ結果を確認。
4. NSLocalizedString()関係のローカライズ
いくつかやり方はあるけど、今回はxliffファイルを使ってやりとりする方法を選択。Xcodeでxliffファイルをエクスポート。これを他のソフトで翻訳してインポートする。
- xliffファイルのエクスポート
[Targets]を選択して、メニューの[Editor] - [Export For Localization...]を選択。
適当なフォルダを選んでエクスポート。
xliffファイルを翻訳
他のソフトで翻訳作業。今回はXliffieを使用。便利。動作が怪しい時もあるけど。
xliffファイルのインポート
翻訳が終わったらXcodeに取り込み。[Targets]を選択して、メニューの[Editor] - [Import Localization...]を選択。翻訳済みのxliffファイルを選択。
空白のままにしていた項目はインポートで警告が出るけど、特に問題無い。たぶん。
インポートが正常に終了すると、対応するstringsファイルが自動で生成される。
5. iOS Simulatorでテスト
Schemeの設定を変更することで、簡単に(?)iOS Simulatorでローカライズをテストすることが可能。
Schemeを変更
Edit SchemeでSchemeを開いて、[Run] - [Options]にあるApplication RegionとApplication Languageの設定を変更。日本語のテストをする時は、Japaneseと日本語に変更。
※その上にあるLocalization Debuggingも、実は面白かったり
ローカライズ関係の小ネタ
ホーム画面に表示されるアプリの名前を変更&ローカライズ
Info.plistにBundle Display Nameを追加
Bundle Display Nameの項目を追加、名前を設定しておく。設定までやった後、保存しておくこと。保存重要。
xliffファイルをエクスポートして翻訳してインポート
アプリの名前の項目が増えてるので、これを翻訳してインポート。
iOS Simulatorで実行&確認
※これは、iOS Simulator側で言語設定を変えないと反映されないので注意
LaunchScreen.xibはローカライズが効かない
Appleのサイトに情報があった。
iOS Human Interface Guidelines: Launch Images
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/LaunchImages.html
Text. The launch image is static, so any text you display in it won’t be localized.
起動画面のテキストはローカライズされません、と。
参考資料
Localizing Your App
https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/LocalizingYourApp/LocalizingYourApp.html
[iOS 8/Xcode 6] Localization がより簡単になりました | Developers.IO
http://dev.classmethod.jp/?p=111931
Xliffie - A localization assistance for your iOS / Mac app
http://hotmilktea.com/xliffie/