【Flutter】gen-l10nのオプション設定で多言語対応を最適化

はじめに

Flutterの多言語対応に使用されるコマンドにflutter gen-l10nがあります。今回は、そのコマンドのオプションの実行例について解説します。
これらのオプションはmelosを使用したマルチパッケージのプロジェクトで、言語クラスを統一するのに役に立ちました。一つのプロジェクトにだけARBを作成して、他のプロジェクトでは自動生成されたAppLocalization のクラスを参照するようにしました。

基本的な多言語化対応については、以下をご参照ください。

【2022年12月版】Flutterの多言語対応のベストプラクティスとハマりどころ

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
  1. --no-nullable-getter:

    • 生成されるgetterメソッドがnullable型にならないようにします。これにより、nullチェックを簡略化できます。
  2. --no-synthetic-package:

    • Synthetic packageの生成を防ぎます。
    • Synthetic package(シンセティックパッケージ)とは、Flutterのコード生成ツールで自動的に生成されるパッケージのことを指します。このオプションがないと.dart_tool/flutter_gen内にクラスを生成します。このオプションを付けることで、--output-dirのディレクトリにクラスが生成されるようになります。
  3. --arb-dir ../application/lib/l10n:

    • ARBファイルが保存されているディレクトリを指定します。この場合、../application/lib/l10nディレクトリにあるARBファイルを使用します。
  4. --output-dir ./lib/gen-l10n:

    • 生成されたローカライズファイルの出力先ディレクトリを指定します。ここでは、./lib/gen-l10nディレクトリに出力します。
  5. --untranslated-messages-file l10n_missing_keywords.txt:

    • 翻訳されていないメッセージをリスト化したファイルを生成します。この例では、l10n_missing_keywords.txtというファイル名で生成されます。

マルチパッケージ対応での活用

masonなどのツールを使ってマルチパッケージ対応を行っている場合、このオプションが有用です。複数のパッケージから統一した言語ファイルにアクセスすることができ、翻訳漏れを防ぎます。また、特定のディレクトリにローカライズファイルを集約することで、管理が容易になります。一方で、言語ファイルが大きくなりすぎるという短所もあります。

参考

まとめ

flutter gen-l10nコマンドを使用することで、Flutterアプリケーションの多言語対応を効率化できます。さらにオプションを活用することで、さらに柔軟な設定が可能です。特に、マルチパッケージ対応が必要なプロジェクトでは、このコマンドのオプションが役立つでしょう。

余談

現在最初に作成を始めたモバイルアプリに言語ファイルを置いて、新しく作ったWEBアプリはモバイルアプリで作成した言語クラスを参照してます。共通部品用のプロジェクトを作成して、そこに置くように修正したい。