🇺🇳
【Flutter】fast_i18nをインストールする【i18n】
はじめに
fast_i18nは、Flutterの国際化(i18n)を簡単に行うためのライブラリです。flutter_localizationsと違い、contextが不要なのが特徴です。
インストール
Packageを追加
flutter pub add -d fast_i18n build_runner
 i18nフォルダの作成
mkdir lib/i18n
JSONファイルの作成
lib/i18nフォルダにjsonを作成します。ファイル名のフォーマットは以下の通りです。
<namespace>_<locale?>.i18n.json
<namespace>は自由に決められます。ここではtranslationsにしておきます。
<locale>には言語名が入ります。しかし、英語のファイルは<locale>を省略してください。
今回は、日本語と英語をサポートすることとします。
lib
├── i18n
│   ├── translations.i18n.json
│   └── translations_ja.i18n.json
└── main.dart
translations.i18n.json
{
  "hello": "hello"
}
translations_ja.i18n.json
{
  "hello": "こんにちは"
}
dartファイルのジェネレート
flutter pub run build_runner build --delete-conflicting-outputs
JSONファイルを編集した際は、再度実行してください。
 main.dartの編集
main.dart
void main() {
  WidgetsFlutterBinding.ensureInitialized(); // 追加
  LocaleSettings.useDeviceLocale(); // 追加
  runApp(MyApp());
}
 flutter_localizationsの設定
fast_i18nでもflutter_localizationsの設定をしなければならないようです。
 pubspec.yamlにflutter_localizationsを追加
pubspec.yaml
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations: # 追加
    sdk: flutter # 追加
 main.dartの編集
main.dart
void main() {
  WidgetsFlutterBinding.ensureInitialized();
  LocaleSettings.useDeviceLocale();
  runApp(TranslationProvider(child: MyApp()));
}
 MaterialAppの編集
main.dart
MaterialApp(
  locale: TranslationProvider.of(context).flutterLocale,
  supportedLocales: LocaleSettings.supportedLocales,
  localizationsDelegates: GlobalMaterialLocalizations.delegates,
  child: YourFirstScreen(),
)
iOSの設定
iOSに対応するには個別の設定が必要です。
ios/Runner/Info.plistを編集します。
<dict>中に以下のように追記します。
ios/Runner/Info.plist
<key>CFBundleLocalizations</key>
<array>
<string>ja</string>
<string>en</string>
</array>
以上で、インストールと設定は完了です。
使い方
翻訳データには以下のように取得します。
import 'package:my_app/i18n/translations.g.dart';
String hello = t.hello;
Discussion