🇺🇳

【Flutter】fast_i18nをインストールする【i18n】

2023/03/07に公開

はじめに

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.yamlflutter_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;

参考

GitHubで編集を提案

Discussion