しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

【iOS】BartyCrouchでiPhoneアプリの国際化

BartyCrouchというツールを使ってアプリの国際化対応をしてみました。

github.com

Bartycrouchでできること

Bartycrouchでできる事は下の通りです。

  • Storyboardに追加されたラベルをLocalizable Stringsに書き出す
  • NSLocalizedStringの情報をLocalizable Stringsに書き出す

自動翻訳もできるようですが、

インストール

インストールはbrewで行います。

brew install bartycrouch

Storyboardに追加されたラベルをLocalizable Stringsに書き出す

今回は日本語と英語対応したアプリにbartycrouchを使います。

f:id:llcc:20171212143313p:plain

Storyboardにラベルを一つ追加して、それをLocalizeします。

f:id:llcc:20171212143601p:plain

Localizeすると次のように各言語のstringsファイルが生成されます。

f:id:llcc:20171212143705p:plain

ファイルの中身は下の通りです。

f:id:llcc:20171212143715p:plain

今生成したstringsファイルですが、これ以降ラベルやボタンを追加しても反映されません。
下のようにLabel2を追加しても、stringファイルには反映されません。

f:id:llcc:20171212143816p:plain

Bartycrouchを使うことで、これらの変更を簡単に反映させることができます。
使い方は下の通りです。
プロジェクトのルートディレクトリで下のコマンドを実行します。

 bartycrouch interfaces -p .

実行すると、stringsファイルに新しい行が追加されています。

f:id:llcc:20171212144215p:plain

オブジェクトを追加した時だけでなく、オブジェクトの削除も反映してくれます。

f:id:llcc:20171212144600p:plain

ただ、StoryboardのLocalizeのチェックが外れているとError! No file exists at output path XXXというエラーが出る事があるのでここだけ注意が必要です。

f:id:llcc:20171212144431p:plain

NSLocalizedStringの情報をLocalizable Stringsに書き出す

次はNSLocalizedStringメソッドの情報をLocalizable Stringsに書き出してみます。
最初にLocalizable.stringを作成します。

f:id:llcc:20171212145030p:plain

次に、コード上でNSLocalizedStringメソッドを使います。

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        NSLocalizedString("Test", comment: "テストキー")
    }
}

ここで下のようにBartycrouchを実行します。

bartycrouch code -p . -l .

実行するとLocalizable.stringに下のように行が追加されます。
こちらも不要キーは削除されるので、未使用キーが残る事がなく安心です。

f:id:llcc:20171212145158p:plain

下のようにコメントが複数種類ある場合は、両方共反映されます。

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        NSLocalizedString("Test", comment: "テストキー1")
        NSLocalizedString("Test", comment: "テストキー2")
    }
}

f:id:llcc:20171212145512p:plain