🙆♀️
【Flutter】多言語対応(Flutter Intlプラグイン)
この記事について
今回はFlutter Intl
というプラグインを勉強しました。
こちらのプラグインを導入して、単語を登録すると、スマホの言語設定によってテキストを出し分けてくれるプラグインです!
設定が少し長かったので、メモとして残しておきます。
この記事を見られて
・ここ間違ってるよ!
・こうした方がいいよ!
・この説明がわかりにくい!
などありましたらお気軽にコメントください!
使用する環境
- Android Studio Arctic Fox | 2020.3.1 Patch 4
- macOS Monterey version12.1
参考にしたサイト
1. プラグインのインストール
- Android Studioの設定を開く
Android Studio | Preferences | Plugins
- 検索窓で
Flutter Intl
と検索し、インストール
(上のタブがMarketplace
になっているか確認)
-
Restart IDE
と出てくるので押して、Android Studioを再起動する - 再起動後、メニューバーの
Tools
を開き、Flutter Intl
があれば完了
2. Flutter Intlを初期化する
-
Tools | Flutter Intl | Initialize for the Project
を実行
3. flutter_localizationsパッケージをインストール
-
pubspec.yaml
ファイルにflutter_localizations
を追加
pubspec.yaml
dependencies:
flutter:
sdk: flutter
+ flutter_localizations:
+ sdk: flutter
- ターミナルで
flutter pub get
を実行
flutter pub get
- 先ほどまで表示されていた
generated
フォルダのエラーが消えていれば完了
4. main.dartに設定
-
main.dart
のMaterialApp
に追記
main.dart
// import一部省略
+ import 'generated/l10n.dart';
+ import 'package:flutter_localizations/flutter_localizations.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
Widget build(BuildContext context) {
return MaterialApp(
title: "ローカライズのやり方",
+ localizationsDelegates: [
+ S.delegate,
+ GlobalMaterialLocalizations.delegate,
+ GlobalWidgetsLocalizations.delegate,
+ GlobalCupertinoLocalizations.delegate
+ ],
+ supportedLocales: S.delegate.supportedLocales,
home: HomeScreen(),
);
}
}
5. 変換したい言語や単語を設定
- 変換したい言語の
arb
ファイルを作成する
メニューバーのTools | Flutter Intl | Add Locale
を開く
Add New Locale
にja
と入力しOK
をクリック
lib/generated/l10n
フォルダにintl_ja.arb
が作成される - 作成したファイルに変換したい単語を登録する
intl_ja.arb
に日本語
intl_en.arb
に英語を登録します。
intl_ja.arb
{
"title": "テストアプリ",
}
intl_en.arb
{
"title": "Test App",
}
- 先ほど設定した
title
を使用してみる
home_screen
// import省略
class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
Widget build(BuildContext context) {
return Scaffold(
body: Center(
+ child: Text(S.of(context).title),
),
);
}
}
- エミュレーターで表示確認
エミュレーターの言語設定が日本語の場合はテストアプリ
と表示され、言語設定を英語に変更して再度確認するとTest App
と表示が変わっていれば完了
6. iOSで表示させる設定
- Xcodeを開く
ios
フォルダを右クリック
Flutter | Open iOS module in Xcode
をクリック - 左側のタブの
Runner/Runner/Info
をクリック -
Information Property List
にマウスカーソルを合わせると右側に+
が現れるのでクリック -
Localizations
と入力してEnter
-
Localizations
の左側にある>
をクリック -
Item 0
にマウスカーソルを合わせると右側に+
が現れるのでクリック -
Item 1
が生成されるので右側のValue
にJapanese
と入力
- エミュレーターで確認
- 言語設定を日本語、英語に変更し、変わっていれば完了
おわりに
以上で設定が終わりました!
簡単にAndroidもiOSも多言語対応ができるのがやっぱりFlutterの良いところなのかなと思いました!
冒頭にも書きましたが、何かあればコメントしてやってください🙇🏻♂️
また何か調べたり実装したらアウトプットしていきます!
Discussion
参考になります!この記事を見て多言語対応していたのですが、
現在(2023/02/03、6のステップをやらなくても、iOSシュミレーターでは言語切り替えができていたのですが、実機で見るとならないとかそういうことですかね。。
ありがとうございます!
6のステップやらなくても大丈夫そうですね🤔
実機でも試しましたが問題なく表示できましたのでご安心ください!