import 'package:get/get.dart'; import '../../../../config/translations/localization_service.dart'; class LanguageInfo { final String code; final String name; final String nativeName; LanguageInfo({ required this.code, required this.name, required this.nativeName, }); } class LanguageController extends GetxController { // 当前选中的语言,默认为英语 final selectedLanguage = 'en'.obs; // 支持的语言列表 final List languages = [ LanguageInfo(code: 'en', name: 'English', nativeName: '英语'), LanguageInfo(code: 'es', name: 'Español', nativeName: '西班牙语'), LanguageInfo(code: 'fr', name: 'Français', nativeName: '法语'), LanguageInfo(code: 'de', name: 'Deutsch', nativeName: '德语'), LanguageInfo(code: 'ja', name: '日本語', nativeName: '日语'), LanguageInfo(code: 'ko', name: '한국어', nativeName: '韩语'), LanguageInfo(code: 'fa', name: 'فارسی', nativeName: '波斯语'), LanguageInfo(code: 'my', name: 'မြန်မာဘာသာ', nativeName: '缅甸语'), LanguageInfo(code: 'ar', name: 'عربي', nativeName: '阿拉伯语'), LanguageInfo(code: 'ru', name: 'Русский', nativeName: '俄语'), LanguageInfo(code: 'zh', name: '繁體中文', nativeName: '繁体中文'), LanguageInfo(code: 'tk', name: 'Türkmençe', nativeName: '土库曼语'), LanguageInfo( code: 'pt', name: 'Português (Brasil)', nativeName: '葡萄牙语 (巴西)', ), LanguageInfo(code: 'vi', name: 'Tiếng Việt', nativeName: '越南语'), LanguageInfo(code: 'id', name: 'Bahasa Indonesia', nativeName: '印尼语'), LanguageInfo(code: 'tl', name: 'Filipino', nativeName: '菲律宾语'), LanguageInfo(code: 'th', name: 'ไทย', nativeName: '泰语'), LanguageInfo(code: 'hi', name: 'हिन्दी', nativeName: '印地语'), LanguageInfo(code: 'tr', name: 'Türkçe', nativeName: '土耳其语'), ]; @override void onInit() { super.onInit(); selectedLanguage.value = LocalizationService.getCurrentLocal().languageCode; } /// 选择语言 void selectLanguage(String languageCode) { selectedLanguage.value = languageCode; LocalizationService.updateLanguage(languageCode); } /// 获取当前选中的语言信息 LanguageInfo? get currentLanguage { try { return languages.firstWhere( (lang) => lang.code == selectedLanguage.value, ); } catch (e) { return languages.first; // 默认返回第一个 } } }