// import 'package:get/get.dart'; import 'dart:convert'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; class GetxTranslations extends Translations { final Map> _translations = {}; @override Map> get keys => _translations; // 初始化并加载所有翻译文件 Future loadAllTranslations() async { _translations['en'] = await _loadTranslations('assets/translations/strings_en.i18n.json'); _translations['zh_CN'] = await _loadTranslations('assets/translations/strings_zh.i18n.json'); _translations['zh_TW'] = await _loadTranslations('assets/translations/strings_zh_Hant.i18n.json'); _translations['es'] = await _loadTranslations('assets/translations/strings_es.i18n.json'); _translations['ja'] = await _loadTranslations('assets/translations/strings_ja.i18n.json'); _translations['ru'] = await _loadTranslations('assets/translations/strings_ru.i18n.json'); _translations['et'] = await _loadTranslations('assets/translations/strings_et.i18n.json'); } // 读取并解析 JSON 文件 Future> _loadTranslations(String path) async { final Map translations = {}; final String jsonString = await rootBundle.loadString(path); final Map jsonMap = json.decode(jsonString); _flattenTranslations(jsonMap, translations); return translations; } // 递归提取最底层的翻译文本并展平结构 void _flattenTranslations( Map jsonMap, Map translations, [String prefix = '']) { jsonMap.forEach((key, value) { final newKey = prefix.isEmpty ? key : '$prefix.$key'; if (value is Map) { _flattenTranslations(value, translations, newKey); } else if (value is String) { // 替换占位符 {xxx} 为 @xxx final modifiedValue = value.replaceAllMapped( RegExp(r'\{(\w+)\}'), (match) => '@${match.group(1)}', ); translations[newKey] = modifiedValue; } }); } }