🇺🇳
【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