iOS / Android 用のローカライズ文字列ファイルを生成するツール「strgen」
iOS / Android のローカライズ文字列ファイルを一括で生成するツールstrgen(Python)を作った。
PyPI に登録してあるので、 pip でインストールできます。
概要
多言語情報を記載した CSV と、設定を記載した YAML ファイルを入力として、以下のファイルを出力する。
- iOS 用ファイル
- 各言語用の
Localized.strings
- ローカライズのキーが定義されている Swift ファイル(
LocalizedStrings.swift
)
- 各言語用の
- Android 用ファイル
- 各言語用の
strings.xml
- 各言語用の
strgen を使うメリット
一元管理できる
iOS / Android のローカライズファイルのソースが、単一の CSV になり、多言語が一元管理できる。
多言語更新のミスが発生しにくい
ツールで生成したファイルをプロジェクトに反映させるだけなので、ファイル(Localized.strings, strings.xml)を直接編集するのに比べ、ミスが発生しにくい。
iOS のローカライズの効率がよくなる
hello
というキーでローカライズ文字列が存在する場合、 iOS はキーを文字列で指定してローカライズ文字列を得るので、以下のようになる。
NSLocalizedString("hello", comment: "")
しかし、これは存在していないキーも指定できる問題がある。
たとえば、以下のようにキー指定をミスした場合、ビルド時には分からず、ミスがわかるのは実行時に確認した時だ(ローカライズ文字列が正しく表示されないので)
NSLocalizedString("hellow", comment: "")
この問題の対応として strgen は iOS の多言語ファイルを生成する時に、一緒にキーを列挙した swift ファイル(LocalizedStrings.swit)も作成する。
import Foundation class LocalizableStrings { enum Key: String { case hello = "hello" } }
この swift ファイルからキー定義を参照するようにすると、ローカライズのコーディングの際に、ビルド時点でミスに気付けるので、効率がよくなる。
NSLocalizedString(LocalizableStrings.Key.hello.rawValue, comment: "")
strgen を試してみる
サンプルで動作を確認できます。
インストール
まず、 pip で strgen をインストールします。
$ pip install strgen
これで、コマンドラインから strgen を実行できるようになる。
$ which strgen
/usr/local/bin/strgen
サンプルを動作させてみる
- プロジェクトを clone します。
$ git clone https://github.com/daisuke-t-jp/strgen
- カレントディレクトリを clone したプロジェクト内の
strgen/sample
フォルダに変更します。 - 以下のコマンドを実行。
$ strgen strgen.yml
build
フォルダを確認します。
使い方
そのほかの使い方、YAML ファイルの仕様などは、README を参照してください。