BartyCrouchというツールを使ってアプリの国際化対応をしてみました。
Bartycrouchでできること
Bartycrouchでできる事は下の通りです。
- Storyboardに追加されたラベルをLocalizable Stringsに書き出す
- NSLocalizedStringの情報をLocalizable Stringsに書き出す
自動翻訳もできるようですが、
インストール
インストールはbrewで行います。
brew install bartycrouch
Storyboardに追加されたラベルをLocalizable Stringsに書き出す
今回は日本語と英語対応したアプリにbartycrouchを使います。
Storyboardにラベルを一つ追加して、それをLocalizeします。
Localizeすると次のように各言語のstringsファイルが生成されます。
ファイルの中身は下の通りです。
今生成したstringsファイルですが、これ以降ラベルやボタンを追加しても反映されません。
下のようにLabel2を追加しても、stringファイルには反映されません。
Bartycrouchを使うことで、これらの変更を簡単に反映させることができます。
使い方は下の通りです。
プロジェクトのルートディレクトリで下のコマンドを実行します。
bartycrouch interfaces -p .
実行すると、stringsファイルに新しい行が追加されています。
オブジェクトを追加した時だけでなく、オブジェクトの削除も反映してくれます。
ただ、StoryboardのLocalizeのチェックが外れているとError! No file exists at output path XXX
というエラーが出る事があるのでここだけ注意が必要です。
NSLocalizedStringの情報をLocalizable Stringsに書き出す
次はNSLocalizedStringメソッドの情報をLocalizable Stringsに書き出してみます。
最初にLocalizable.stringを作成します。
次に、コード上でNSLocalizedStringメソッドを使います。
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() NSLocalizedString("Test", comment: "テストキー") } }
ここで下のようにBartycrouchを実行します。
bartycrouch code -p . -l .
実行するとLocalizable.stringに下のように行が追加されます。
こちらも不要キーは削除されるので、未使用キーが残る事がなく安心です。
下のようにコメントが複数種類ある場合は、両方共反映されます。
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() NSLocalizedString("Test", comment: "テストキー1") NSLocalizedString("Test", comment: "テストキー2") } }