🦋
Flutter多言語化の更新
更新すること、いろいろ
まずはやってみよう的に一部だけ多言語化したアプリを
全面的に多言語化していく過程でやらなきゃならない、細々したこと。
arbファイルの更新
辞書ファイルを更新したら、 terminalで
flutter gen-l10n
flutter pub get
多言語化するページにはそれぞれ
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
これがないと、AppLocalizationsがエラーになる。
constを外す
const Text(' ') <-だったところを
Text(AppLocalizations.of(context)!.gameDialogB) <-みたいに変更する。
constを外さないとエラーになる。
constが大枠で掛かっていて、中の一部だけを変更するなら、
大枠のconstを外して、変更しない各部分にconstを振り直す、という作業がいる。
テキストじゃなくても多言語化できる
言語によって画像を差し替えたいときは、arbファイルで画像のパスを指定する。
"cover": "assets/images/cover_ja.png"
これで言語ごとに違う画像を表示できる。
初期値と初期状態が違ってしまう
言語選択ボタンの初期値を🇯🇵にしていたのだが、
Simulatorは前回終了時を記憶しているから、
Buttonは🇯🇵なのに、表示は英語、みたいなことが起こる。
なので、起動時に状態を読み込んでボタンの表示を変える機能を追加。
もちょっとシンプルに書けないのかと思うが、とりあえず。
void initState() {
super.initState();
_loadLanguage(); // 起動時に言語設定を読み込む
}
void _loadLanguage() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String? languageCode = prefs.getString('languageCode');
// SharedPreferencesから言語が読み込めたら、それを使ってUIを更新
if (languageCode != null) {
setState(() {
currentLanguage = languageCode;
});
}
}
考え方を変える
多言語化を諦めた部分もある。
ゲームの答え合わせで正解数と不正回数を表示していた。
Text(
'正解: $correctAnswer / 間違い: $incorrectAnswer',
style: const TextStyle(fontSize: 18),
),
これと
AppLocalizations.of(context)!.gameDialogC
は共存できるか?
爺様に聞いたら、とんでもなくややこしいcodeを書いてきた。
しかもそれを実行すると、単語が長くてデザインが崩れる。
なのでここは、多言語化の逆、ユニバーサルデザインにする。
つまり絵文字(笑)
Text(
'👍: $correctAnswer / 👎: $incorrectAnswer',
style: const TextStyle(fontSize: 18),
),
日本人の発想力を活用しよう\(^O^)/
あ、こんなところにも文字列があった
みたいなのがボロボロ出てくる(>_<)
ま、一つ一つ潰していこう。
四次元年表
三次元・四次元表示
四次元年表の使い方
Discussion