はじめに
Flutterの多言語対応に使用されるコマンドにflutter gen-l10n
があります。今回は、そのコマンドのオプションの実行例について解説します。
これらのオプションはmelosを使用したマルチパッケージのプロジェクトで、言語クラスを統一するのに役に立ちました。一つのプロジェクトにだけARBを作成して、他のプロジェクトでは自動生成されたAppLocalization
のクラスを参照するようにしました。
基本的な多言語化対応については、以下をご参照ください。
flutter gen-l10n
コマンド
flutter gen-l10n
コマンドは、Flutterアプリケーションのローカライズを支援するためのツールです。ARB(Application Resource Bundle)ファイルからDartコードを自動生成し、多言語対応を容易にします。
コマンドのオプション
以下のコマンドを例に、それぞれのオプションについて説明します:
flutter gen-l10n --no-nullable-getter --no-synthetic-package --arb-dir ../application/lib/l10n --output-dir ./lib/gen-l10n --untranslated-messages-file l10n_missing_keywords.txt
-
--no-nullable-getter
:- 生成されるgetterメソッドがnullable型にならないようにします。これにより、nullチェックを簡略化できます。
-
--no-synthetic-package
:- Synthetic packageの生成を防ぎます。
- Synthetic package(シンセティックパッケージ)とは、Flutterのコード生成ツールで自動的に生成されるパッケージのことを指します。このオプションがないと
.dart_tool/flutter_gen
内にクラスを生成します。このオプションを付けることで、--output-dir
のディレクトリにクラスが生成されるようになります。
-
--arb-dir ../application/lib/l10n
:- ARBファイルが保存されているディレクトリを指定します。この場合、
../application/lib/l10n
ディレクトリにあるARBファイルを使用します。
- ARBファイルが保存されているディレクトリを指定します。この場合、
-
--output-dir ./lib/gen-l10n
:- 生成されたローカライズファイルの出力先ディレクトリを指定します。ここでは、
./lib/gen-l10n
ディレクトリに出力します。
- 生成されたローカライズファイルの出力先ディレクトリを指定します。ここでは、
-
--untranslated-messages-file l10n_missing_keywords.txt
:- 翻訳されていないメッセージをリスト化したファイルを生成します。この例では、
l10n_missing_keywords.txt
というファイル名で生成されます。
- 翻訳されていないメッセージをリスト化したファイルを生成します。この例では、
マルチパッケージ対応での活用
mason
などのツールを使ってマルチパッケージ対応を行っている場合、このオプションが有用です。複数のパッケージから統一した言語ファイルにアクセスすることができ、翻訳漏れを防ぎます。また、特定のディレクトリにローカライズファイルを集約することで、管理が容易になります。一方で、言語ファイルが大きくなりすぎるという短所もあります。
参考
まとめ
flutter gen-l10n
コマンドを使用することで、Flutterアプリケーションの多言語対応を効率化できます。さらにオプションを活用することで、さらに柔軟な設定が可能です。特に、マルチパッケージ対応が必要なプロジェクトでは、このコマンドのオプションが役立つでしょう。
余談
現在最初に作成を始めたモバイルアプリに言語ファイルを置いて、新しく作ったWEBアプリはモバイルアプリで作成した言語クラスを参照してます。共通部品用のプロジェクトを作成して、そこに置くように修正したい。