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