はじめに
Flutterは多言語対応が容易なフレームワークです。今回は、ローカライズ実装の基本の手順を解説します。日本語と英語を例に、実装例を記事化しました。
次の流れで進めます。
pubspec.yaml
の設定- ARBファイルの作成
- コード生成の実行
- Flutterアプリにのローカライズ反映
- 検証とベストプラクティス
pubspec.yaml の設定
Flutterでローカライズを実現するために、intl
パッケージを使用します。以下の記述をpubspec.yaml
に追加します。
YAML
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
intl: ^0.19.0
intl_utils: ^2.6.2
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
generate: true # ファイルを自動生成するのに必要
設定後、次のコマンドを実行して依存関係をインストールします。
Bash
flutter pub get
言語リソースファイルの作成
言語リソースのデータを格納するARBファイルを作成します。たとえば、次の2ファイルをlib/l10n/
ディレクトリに作成します。
intl_ja.arb
JSON
{
"@@locale": "ja",
"hello": "こんにちは",
"@hello": {
"description": "挨拶文"
},
"welcome": "ようこそ!",
"@welcome": {
"description": "ユーザーを歓迎するメッセージ"
}
}
intl_en.arb
JSON
{
"@@locale": "en",
"hello": "Hello",
"@hello": {
"description": "Greeting text"
},
"welcome": "Welcome!",
"@welcome": {
"description": "Message welcoming the user"
}
}
ローカライズコードの自動生成
ARBファイルを基に、intl_utils
を使ってローカライズ用のコードを生成します。
Bash
flutter pub run intl_utils:generate
実行後、lib/generated
ディレクトリに、intl_messages.dart
を含むファイルが生成されます。
Flutterアプリにローカライズ反映
ローカライズのため、MaterialApp
に次の設定を追加します。
Dart
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'generated/l10n.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Localization',
localizationsDelegates: [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(S.of(context).welcome),
),
body: Center(
child: Text(S.of(context).hello),
),
);
}
}
検証とベストプラクティス
- アプリを実行し、デバイスの言語設定を変更して、正しく言語が表示されることを確認します。
- ARBファイルを更新した場合は、再度
intl_utils:generate
を実行してコードを生成してください。 - 言語リソースの統一管理に注意し、ハードコーディングを避けましょう。
最後に
Flutterのローカライズは、アプリをさらにユーザーフレンドなものにする重要な要素です。この記事が実装の参考になれば幸いです。
コメント