flutter iOSで多言語対応する方法

flutter iOSで多言語対応する方法

アプリを英語と日本語の多言語対応したいなぁと思い、色々やってみたんですが、iOSではうまくいかずに結構な時間を費やしてしまいました。

解決策を書き留めておきます。

まずは、localizationsDelegatessupportedLocalesを設定

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new CupertinoApp(

      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      supportedLocales: [
        const Locale("en", "US"),
        const Locale("ja", "JP")
      ],
:
:

次に、デバイスの言語コードを取得
Locale myLocale = Localizations.localeOf(context);
myLocale.languageCodeを使ってごにょごにょ

これだけではうまくいかずハマった。
調べると、info.plistに言語を追加しなきゃいけないことが判明。
↓を追加したらバッチリ期待通り多言語対応できた!

your_project/ios/Runner/Info.plistに

<key>CFBundleLocalizations</key>
  <array>
    <string>English</string>
    <string>ja</string>
  </array>

↓大変参考になりました!ありがとうございます!
https://github.com/flutter/flutter/issues/14128#issuecomment-401028142