目次
はじめに
「英熟語を覚えにくい」というユーザーのために作ったイラスト英熟語アプリ。今回はいよいよ韓国語対応(v1.1.4)を実装しました。
英熟語アプリは英語圏のユーザーには不要なので、韓国語・中国語圏を対象にした国際化を進めることにしました。
作業内容
① 500問の韓国語翻訳
まず最大の作業、500問分のJSONデータの翻訳です。
翻訳が必要な項目は各熟語の:
- meaning(意味)
- origin(由来)
- usage(使い方)
- example(例文)
- choices(選択肢4つ)
500問 × 5項目 = 2500箇所の翻訳が必要でしたが、ChatGPTを活用して効率化しました。
手順:
- Pythonスクリプトで
idioms.jsonを20問ずつ25ファイルに分割 - ChatGPTに1ファイルずつ翻訳依頼
- 翻訳完了後、Pythonスクリプトで1つの
idioms_ko.jsonに結合
分割スクリプト:
import json
with open('assets/data/idioms.json', 'r', encoding='utf-8') as f:
data = json.load(f)
idioms = data['idioms']
chunk_size = 20
for i in range(0, len(idioms), chunk_size):
chunk = idioms[i:i+chunk_size]
filename = f'chunk_{i//chunk_size + 1:02d}.json'
with open(filename, 'w', encoding='utf-8') as f:
json.dump({"idioms": chunk}, f, ensure_ascii=False, indent=2)
意外と早く、2時間ほどで500問の翻訳が完了しました!
② flutter gen-l10nでUIテキストを国際化
UIのテキスト(ボタンラベルや画面タイトルなど)はflutter gen-l10nを使って正式な方法で国際化しました。
手順:
pubspec.yamlに追加:
dependencies:
flutter_localizations:
sdk: flutter
intl: ^0.20.2
flutter:
generate: true
l10n.yamlをプロジェクトルートに作成:
arb-dir: lib/l10n
template-arb-file: app_ja.arb
output-localization-file: app_localizations.dart
lib/l10n/app_ja.arbとlib/l10n/app_ko.arbを作成して翻訳テキストを記述flutter gen-l10nを実行するとapp_localizations.dartが自動生成されます- 各画面で
AppLocalizations.of(context)!を使ってテキストを取得
③ 言語に応じたJSONファイルの切り替え
デバイスの言語設定を取得して、読み込むJSONファイルを切り替えます:
Future<void> loadIdioms({Locale? locale}) async {
final String langCode = locale?.languageCode ?? 'ja';
final String fileName = langCode == 'ko'
? 'assets/data/idioms_ko.json'
: 'assets/data/idioms_ja.json';
final String jsonString = await rootBundle.loadString(fileName);
// ...
}
作業時間
驚いたことに、2日間で韓国語対応が完成しました!
最初は「500問の翻訳なんてとんでもない作業量では?」と心配していましたが、ChatGPTを活用することで思ったより遥かに短時間で完了できました。
おわりに
次は中国語対応を予定しています。今回の経験があるので、さらにスムーズに進められると思います。
審査通過を祈りつつ、引き続きイラスト英熟語をよろしくお願いします!


