【Flutter】多言語のデータをより簡単に管理・生成できるPythonプログラムを作成してみた
こんにちは、laughtaoneです。
Flutter学習中に備忘録として書いていますので、正確な情報でない可能性もありますのでご了承ください。
Flutterを多言語に対応させるために flutter_localizations
と intl
を使用する場合、ARBファイルを生成すると思いますが、このARBファイルの生成って言語ごとに用意しないといけないので、かなり面倒ですよね。
そこで、1つのJSONファイルから、指定した言語のARBファイルを生成するPythonプログラムを作成してみました。その利用方法をご紹介します。
多言語対応
まず、Flutterアプリ自体を多言語に対応させます。
詳細は、下記リンクから他の方の記事を参考にしてみてください。
そして、多言語に対応させるにあたり、例えば、日本語と英語と韓国語の3言語に対応させる場合、app_en.arb
と app_ja.arb
と app_kr.arb
の3言語のコードを生成していると思います。
ですが、それぞれの言語のファイルで、辞書のキーを書くのは大変面倒だと思います。
そこで、1つのJSONファイル内で、次の構造で書くだけで、それぞれの言語のarbファイルが生成できるPythonプログラムを作成しました!
{
"キー": {
"ja": "日本語のテキスト",
"en": "英語のテキスト",
"kr": "韓国語のテキスト"
},
...
}
多言語のデータをより簡単に管理・生成
ここからは早速、多言語のARBファイルを簡単に生成する方法を紹介していきます。
1. Pythonプログラムの準備
まず、次のリンクからGitHubリポジトリに飛び、クローンします。
(お試しだけなら、次のGoogle Colabリンクから試せますが、以降の手順とは少し異なります。)
2. データの準備
original_data.json
に多言語データを準備します。
次のような構造で書いていきます。
{
"キー": {
"ja": "日本語のテキスト",
"en": "英語のテキスト",
"kr": "韓国語のテキスト"
},
...
}
まず、外側の大きな辞書のキーに、AppLocalizations.of(context)!.XXX
の XXX
に当たる名前を書きます。
次に、そのキーに対応する値にさらに辞書を設定し、その辞書内のキーに言語コード、値にその言語での表記を入力します。
3. ARBファイルの生成
original_data.json
に多言語データが準備できたら、Pythonプログラムを実行します。
実行コマンドは環境によって異なる場合がありますが、クローンしたディレクトリにいることを確認して、Mac環境の私の場合は次のコマンドを実行します:
python3 main.py
そして、実行結果に「✅ ARBファイルが生成されました。」と表示されれば成功です。
同じディレクトリ下に、新しく output
ディレクトリが作成され、その中に「app_言語コード.arb」(言語コードは任意の言語コード) が生成されます。
そして、例として「app_en.arb
」の中身を見てみると、きちんとしたARBファイルが生成されていることが確認できます。
これを Flutterプロジェクトディレクトリ/lib/l10n
内に、移動orコピペ して、Flutterプロジェクトディレクトリ下で次のコマンドを実行すれば、多言語ファイルを簡単に生成できたことが実感できると思います。
flutter gen-l10n
まとめ
このようにして、多言語対応に必要なARBファイルの生成を簡単にすることができます。
もっと簡単な方法があったら、ぜひ教えてください!
Discussion