iOS / Android 用のローカライズ文字列ファイルを生成するツール「strgen」

iOS / Androidローカライズ文字列ファイルを一括で生成するツールstrgenPython)を作った。

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

サンプルを動作させてみる

  1. プロジェクトを clone します。
    • $ git clone https://github.com/daisuke-t-jp/strgen
  2. カレントディレクトリを clone したプロジェクト内の strgen/sample フォルダに変更します。
  3. 以下のコマンドを実行。
    • $ strgen strgen.yml
  4. build フォルダを確認します。

使い方

そのほかの使い方、YAML ファイルの仕様などは、README を参照してください。

https://github.com/daisuke-t-jp/strgen