他言語化してみました。

はじめての多言語化に挑戦してみました。下記「Google翻訳xFlutter言語対応表」はあとで使います。


多言語化、やはり大変でした
全ては公式サイトを見てくださいね
私の書いていることは間違っている可能性があるので・・・!!

目次

多言語設定の手順

STEP
多言語設定用のプラグイン「Flutter Intl」を入れる
STEP
「Flutter Intl」プラグインを走らせる

tools→Flutter Intl→initialize the Project

Android Studio内部でコードが実行されます。
Flutterプロジェクトには[generated]と[l10n]フォルダが作成され、それぞれ必要なファイルが自動作成されています。

STEP
「flutter_localizations」パッケージのインストール

「flutter_localizations」というパッケージをインストールします。

[pubspec.yaml]のdependencies:に、flutter_localizations:の2行を次のように追加します。

Pub getをクリックすると、[generated]フォルダの赤線のエラーが消えます。

STEP
FlutterのMaterialAppに、初期化コードの追加
import 'package:flutter_localizations/flutter_localizations.dart';

このコードの最後の行のSは
lib/generated/l10n.dartで定義されているclassなので、import ‘generated/l10n.dart’;をインポートします。

STEP
文字列リソースファイル(Arbファイル)の設定

このようなものを作っておきます。
ARBファイルとは(Application Resource Bundle Specification)

intl_en.arb(英語)・・アンドロイドスタジオのもともと入っているのを利用

{
  "@@locale": "en",
  "home_tagline": "For classical-guitar beginners",
  "home_title": "Guitar Note Cards",
  "home_start": "Start",
  "home_footer": "For guitar beginners"
}

intl_ja.arb(日本語)・・・intl_en.arbをコピペで作成

{
  "@@locale": "ja",
  "home_tagline": "クラシックギター初心者のための",
  "home_title": "ギター音符カード",
  "home_start": "スタート",
  "home_footer": "ギター初心者のために"
}
私はスペイン語も作りました。
STEP
コードに反映

該当箇所を変更します。

Text(
  S.of(context).home_footer,
  style: const TextStyle(
    fontFamily: "Mont",
    fontSize: 18,
  ),
),

ハマりポイント!
S.of(context) は const では使えません
だから該当箇所の前でconstがある時はそれを削除

const Text(   // ← const を外すこと!!
S.of(context).home_subtitle,
style: TextStyle(fontSize: 24, fontFamily: ‘Mont’),
),

STEP
Dart コードを再生成

ターミナルで実行:

dart run intl_utils:generate

これで S.of(context).home_footer が使えるようになります。

STEP
エミュレーターの言語を切り替えて確認
•   日本語 → 「ギター初心者のために」
•   英語 → 「For guitar beginners」

に切り替わるのをチェック!

その他いろいろ困難ありましたが、記録しておく余裕がなかった(^^;;
すったもんだのあげく、やっと実機で確認できました。

英語版

スペイン語版

ようやくGoogle Play Consoleにアップできました。

Google Play Consoleでのリリースノートの書き方も多言語対応にしてみました。
ハイフン(-)を頭に使って、このように書きました

<en-US>
- Added support for English and Spanish
- Made minor display improvements
</en-US>

<es-ES>
- Se añadió soporte para inglés y español
- Se hicieron mejoras menores en la visualización
</es-ES>

<ja-JP>
- 英語、スペイン語に対応しました
- 一部表示の改善を行いました
</ja-JP>
目次