flutter pub pub run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/l10n/l10n.dart lib/l10n/intl_*.arb
上記コマンドでdartファイルのジェネレートをしようとしたところ、次のようなメッセージが出力された。
No @@locale or _locale field found in intl_en, assuming 'en' based on the file name.
No @@locale or _locale field found in intl_ja, assuming 'ja' based on the file name.
No @@locale or _locale field found in intl_messages, assuming 'messages' based on the file name.
コマンドの終了コードは0で、翻訳リソースの取得自体もできているので、特に問題なさそうだが気になって調べた。
どうやらarbファイルのフィールドに @@locale
がないよってことで出力されているらしい。
@@locale
フィールドを手動で追加(ja
,en
)することで表示されなくなった。
intl_messages.arb
の@@locale
にはmessages
を指定したが、intl_messages.arb
の生成のたびに消えてしまう。さらにしらべると --locale
オプションが使えることがわかり、arb
の生成コマンドは次のようにすることで、再生成しても@@locale
がある状態になった。
flutter pub pub run intl_translation:extract_to_arb --locale=messages --output-dir=lib/l10n lib/l10n/l10n.dart
参考
https://github.com/dart-lang/intl/issues/133
https://github.com/dart-lang/intl_translation/pull/16