Browse Source

feat(多语言): 新增18种语言支持并优化语言检测逻辑

添加丹麦语、荷兰语、瑞典语等18种新语言翻译文件
在设置控制器中注册新增语言选项
优化中文检测逻辑,使用languageCode和countryCode组合判断
newdev_shunjiawei
lxm 1 year ago
parent
commit
10fe8854e9
  1. 72
      lib/core/translations/app_translations.dart
  2. 5
      lib/core/translations/language/bg_bg.dart
  3. 5
      lib/core/translations/language/cs_cz.dart
  4. 4
      lib/core/translations/language/da_dk.dart
  5. 5
      lib/core/translations/language/el_gr.dart
  6. 5
      lib/core/translations/language/et_ee.dart
  7. 5
      lib/core/translations/language/fi_fi.dart
  8. 5
      lib/core/translations/language/hr_hr.dart
  9. 5
      lib/core/translations/language/hu_hu.dart
  10. 12
      lib/core/translations/language/is_is.dart
  11. 5
      lib/core/translations/language/lt_lt.dart
  12. 5
      lib/core/translations/language/lv_lv.dart
  13. 5
      lib/core/translations/language/nb_no.dart
  14. 4
      lib/core/translations/language/nl_nl.dart
  15. 5
      lib/core/translations/language/ro_ro.dart
  16. 5
      lib/core/translations/language/sk_sk.dart
  17. 5
      lib/core/translations/language/sl_si.dart
  18. 12
      lib/core/translations/language/sr_rs.dart
  19. 4
      lib/core/translations/language/sv_se.dart
  20. 5
      lib/core/translations/language/tl_ph.dart
  21. 5
      lib/core/translations/language/uk_ua.dart
  22. 5
      lib/modules/login/controllers/login_controller.dart
  23. 3
      lib/modules/login/views/login_view.dart
  24. 6
      lib/modules/profile/views/profile_view.dart
  25. 26
      lib/modules/settings/controllers/settings_controller.dart
  26. 9
      lib/modules/settings/views/settings_view.dart

72
lib/core/translations/app_translations.dart

@ -3,10 +3,10 @@ import 'dart:ui';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'language/en_us.dart';
import 'language/zh_cn.dart';
import 'language/es_es.dart';
import 'language/zh_hk.dart';
import 'language/en_us.dart'; // 英语
import 'language/zh_cn.dart'; // 简体中文
import 'language/es_es.dart'; // 西班牙语
import 'language/zh_hk.dart'; // 繁体中文
import 'language/pt_pt.dart'; // 添加葡萄牙语导入
import 'language/ja_jp.dart'; // 添加日语导入
import 'language/ko_kr.dart'; // 添加韩语导入
@ -21,13 +21,33 @@ import 'language/th_Th.dart'; // 添加泰语导入
import 'language/ms_MY.dart'; // 添加马来语导入
import 'language/tr_TR.dart'; // 添加土耳其语导入
import 'language/pl_PL.dart'; // 添加波兰语导入
import 'language/tl_ph.dart'; // 新增菲律宾语导入
import 'language/da_dk.dart'; // 新增丹麦语导入
import 'language/nl_nl.dart'; // 新增荷兰语导入
import 'language/sv_se.dart'; // 新增瑞典语导入
import 'language/fi_fi.dart'; // 新增芬兰语导入
import 'language/cs_cz.dart'; // 新增捷克语导入
import 'language/hu_hu.dart'; // 新增匈牙利语导入
import 'language/nb_no.dart'; // 新增挪威语导入
import 'language/ro_ro.dart'; // 新增罗马尼亚语导入
import 'language/uk_ua.dart'; // 新增乌克兰语导入
import 'language/el_gr.dart'; // 新增希腊语导入
import 'language/bg_bg.dart'; // 新增保加利亚语导入
import 'language/hr_hr.dart'; // 新增克罗地亚语导入
import 'language/sk_sk.dart'; // 新增斯洛伐克语导入
import 'language/sl_si.dart'; // 新增斯洛文尼亚语导入
import 'language/lt_lt.dart'; // 新增立陶宛语导入
import 'language/lv_lv.dart'; // 新增拉脱维亚语导入
import 'language/et_ee.dart'; // 新增爱沙尼亚语导入
import 'language/is_is.dart'; // 新增塞尔维亚语(拉丁)导入
import 'language/sr_rs.dart'; // 新增冰岛语导入
class AppTranslations extends Translations {
static const fallbackLocale = Locale('zh', 'CN');
static final supportedLocales = [
const Locale('zh', 'CN'),
const Locale('zh', 'CN'), // 简体中文
const Locale('zh', 'HK'), // 添加繁体中文支持
const Locale('en', 'US'),
const Locale('en', 'US'), // 英语
const Locale('es', 'ES'), // 添加西班牙语
const Locale('pt', 'PT'), // 添加葡萄牙语支持
const Locale('ja', 'JP'), // 添加日语支持
@ -43,6 +63,26 @@ class AppTranslations extends Translations {
const Locale('ms', 'MY'), // 添加马来语支持
const Locale('tr', 'TR'), // 添加土耳其语支持
const Locale('pl', 'PL'), // 添加波兰语支持
const Locale('tl', 'PH'), // 添加菲律宾语支持
const Locale('nl', 'NL'), // 荷兰语
const Locale('sv', 'SE'), // 瑞典语
const Locale('da', 'DK'), // 丹麦语
const Locale('fi', 'FI'), // 芬兰语
const Locale('cs', 'CZ'), // 捷克语
const Locale('hu', 'HU'), // 匈牙利语
const Locale('nb', 'NO'), // 挪威语
const Locale('ro', 'RO'), // 罗马尼亚语
const Locale('uk', 'UA'), // 乌克兰语
const Locale('el', 'GR'), // 希腊语
const Locale('bg', 'BG'), // 保加利亚语
const Locale('hr', 'HR'), // 克罗地亚语
const Locale('sk', 'SK'), // 斯洛伐克语
const Locale('sl', 'SI'), // 斯洛文尼亚语
const Locale('lt', 'LT'), // 立陶宛语
const Locale('lv', 'LV'), // 拉脱维亚语
const Locale('et', 'EE'), // 爱沙尼亚语
const Locale('sr', 'RS'), // 塞尔维亚语
const Locale('is', 'IS'), // 新增冰岛语支持
];
static Locale? deviceLocale() {
@ -76,5 +116,25 @@ class AppTranslations extends Translations {
'ms_MY': msMY, // 添加马来语映射
'tr_TR': trTR, // 添加土耳其语映射
'pl_PL': plPL, // 添加波兰语映射
'tl_PH': tlPH, // 添加菲律宾语映射
'nl_NL': nlNL, // 荷兰语
'sv_SE': svSE, // 瑞典语
'da_DK': daDK, // 丹麦语
'fi_FI': fiFI, // 芬兰语
'cs_CZ': csCZ, // 捷克语
'hu_HU': huHU, // 匈牙利语
'nb_NO': nbNO, // 挪威语
'ro_RO': roRO, // 罗马尼亚语
'uk_UA': ukUA, // 乌克兰语
'el_GR': elGR, // 希腊语
'bg_BG': bgBG, // 保加利亚语
'hr_HR': hrHR, // 克罗地亚语
'sk_SK': skSK, // 斯洛伐克语
'sl_SI': slSI, // 斯洛文尼亚语
'lt_LT': ltLT, // 立陶宛语
'lv_LV': lvLV, // 拉脱维亚语
'et_EE': etEE, // 爱沙尼亚语
'sr_RS': srRS, // 新增塞尔维亚语(拉丁)映射
'is_IS': isIS, // 新增冰岛语映射
};
}

5
lib/core/translations/language/bg_bg.dart

@ -0,0 +1,5 @@
const Map<String, String> bgBG = {
'app_title': 'Deep Voice',
'welcome': 'Добре дошли',
// 补充保加利亚语翻译...
};

5
lib/core/translations/language/cs_cz.dart

@ -0,0 +1,5 @@
const Map<String, String> csCZ = {
'app_title': 'Deep Voice',
'welcome': 'Vítejte',
// 补充捷克语翻译...
};

4
lib/core/translations/language/da_dk.dart

@ -0,0 +1,4 @@
const Map<String, String> daDK = {
'app_title': 'Deep Voice',
// 添加丹麦语翻译内容
};

5
lib/core/translations/language/el_gr.dart

@ -0,0 +1,5 @@
const Map<String, String> elGR = {
'app_title': 'Deep Voice',
'welcome': 'Καλώς ορίσατε',
// 补充希腊语翻译...
};

5
lib/core/translations/language/et_ee.dart

@ -0,0 +1,5 @@
const Map<String, String> etEE = {
'app_title': 'Deep Voice',
'welcome': 'Tere tulemast',
// 补充爱沙尼亚语翻译...
};

5
lib/core/translations/language/fi_fi.dart

@ -0,0 +1,5 @@
const Map<String, String> fiFI = {
'app_title': 'Deep Voice',
'welcome': 'Tervetuloa',
// 补充芬兰语翻译...
};

5
lib/core/translations/language/hr_hr.dart

@ -0,0 +1,5 @@
const Map<String, String> hrHR = {
'app_title': 'Deep Voice',
'welcome': 'Dobrodošli',
// 补充克罗地亚语翻译...
};

5
lib/core/translations/language/hu_hu.dart

@ -0,0 +1,5 @@
const Map<String, String> huHU = {
'app_title': 'Deep Voice',
'welcome': 'Üdvözlet',
// 补充匈牙利语翻译...
};

12
lib/core/translations/language/is_is.dart

@ -0,0 +1,12 @@
Map<String, String> isIS = {
'appTitle': 'Deep Voice',
'settings': 'Stillingar',
'language': 'Tungumál',
'theme': 'Þema',
'darkMode': 'Dökkur hamur',
'lightMode': 'Ljós hamur',
'systemMode': 'Kerfishamur',
'about': 'Um appið',
'version': 'Útgáfa',
// 添加更多翻译键值对
};

5
lib/core/translations/language/lt_lt.dart

@ -0,0 +1,5 @@
const Map<String, String> ltLT = {
'app_title': 'Deep Voice',
'welcome': 'Sveikas',
// 补充立陶宛语翻译...
};

5
lib/core/translations/language/lv_lv.dart

@ -0,0 +1,5 @@
const Map<String, String> lvLV = {
'app_title': 'Deep Voice',
'welcome': 'Sveiki',
// 补充拉脱维亚语翻译...
};

5
lib/core/translations/language/nb_no.dart

@ -0,0 +1,5 @@
const Map<String, String> nbNO = {
'app_title': 'Deep Voice',
'welcome': 'Velkommen',
// 补充挪威语翻译...
};

4
lib/core/translations/language/nl_nl.dart

@ -0,0 +1,4 @@
const Map<String, String> nlNL = {
'app_title': 'Deep Voice',
// 添加荷兰语翻译内容
};

5
lib/core/translations/language/ro_ro.dart

@ -0,0 +1,5 @@
const Map<String, String> roRO = {
'app_title': 'Deep Voice',
'welcome': 'Bine ați venit',
// 补充罗马尼亚语翻译...
};

5
lib/core/translations/language/sk_sk.dart

@ -0,0 +1,5 @@
const Map<String, String> skSK = {
'app_title': 'Deep Voice',
'welcome': 'Vitajte',
// 补充斯洛伐克语翻译...
};

5
lib/core/translations/language/sl_si.dart

@ -0,0 +1,5 @@
const Map<String, String> slSI = {
'app_title': 'Deep Voice',
'welcome': 'Dobrodošli',
//补充斯洛文尼亚语翻译
};

12
lib/core/translations/language/sr_rs.dart

@ -0,0 +1,12 @@
Map<String, String> srRS = {
'appTitle': 'Deep Voice',
'settings': 'Podešavanja',
'language': 'Jezik',
'theme': 'Tema',
'darkMode': 'Tamni režim',
'lightMode': 'Svetli režim',
'systemMode': 'Sistemski režim',
'about': 'O aplikaciji',
'version': 'Verzija',
// 添加更多翻译键值对
};

4
lib/core/translations/language/sv_se.dart

@ -0,0 +1,4 @@
const Map<String, String> svSE = {
'app_title': 'Deep Voice',
// 添加瑞典语翻译内容
};

5
lib/core/translations/language/tl_ph.dart

@ -0,0 +1,5 @@
const Map<String, String> tlPH = {
'welcome': 'Maligayang pagdating',
'loginTips': 'Mangyaring mag-log in o gumawa ng account...',
// 其他翻译条目...
};

5
lib/core/translations/language/uk_ua.dart

@ -0,0 +1,5 @@
const Map<String, String> ukUA = {
'app_title': 'Deep Voice',
'welcome': 'Ласкаво просимо',
// 补充乌克兰语翻译...
};

5
lib/modules/login/controllers/login_controller.dart

@ -231,6 +231,7 @@ class LoginController extends GetxController {
style: TextStyle(fontSize: 14),
),
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: GestureDetector(
onTap: () {
String url = 'https://www.deepsoud.com/ysxy.html';
@ -257,10 +258,12 @@ class LoginController extends GetxController {
style: TextStyle(fontSize: 14),
),
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: GestureDetector(
onTap: () {
String url = 'https://www.deepsoud.com/yhxy.html';
if (Get.locale?.toString() != 'zh_CN') {
if (Get.locale?.languageCode != 'zh' ||
Get.locale?.countryCode != 'CN') {
url = 'https://www.deepsoud.com/yhxy_en.html';
}
Get.to(() => WebViewPage(

3
lib/modules/login/views/login_view.dart

@ -576,7 +576,8 @@ class LoginView extends GetView<LoginController> {
GestureDetector(
onTap: () {
String url = 'https://www.deepsoud.com/yhxy.html';
if (Get.locale?.toString() != 'zh_CN') {
if (Get.locale?.languageCode != 'zh' ||
Get.locale?.countryCode != 'CN') {
url = 'https://www.deepsoud.com/yhxy_en.html';
}
Get.to(() => WebViewPage(

6
lib/modules/profile/views/profile_view.dart

@ -629,7 +629,8 @@ class EditProfileView extends GetView<ProfileController> {
titleColor: isDarkMode ? Colors.white : Colors.black87,
onTap: () {
String url = 'https://www.deepsoud.com/yhxy.html';
if (Get.locale?.toString() != 'zh_CN') {
if (Get.locale?.languageCode != 'zh' ||
Get.locale?.countryCode != 'CN') {
url = 'https://www.deepsoud.com/yhxy_en.html';
}
Get.to(() => WebViewPage(
@ -657,7 +658,8 @@ class EditProfileView extends GetView<ProfileController> {
titleColor: isDarkMode ? Colors.white : Colors.black87,
onTap: () {
String url = 'https://www.deepsoud.com/ysxy.html';
if (Get.locale?.toString() != 'zh_CN') {
if (Get.locale?.languageCode != 'zh' ||
Get.locale?.countryCode != 'CN') {
url = 'https://www.deepsoud.com/ysxy_en.html';
}
Get.to(() => WebViewPage(

26
lib/modules/settings/controllers/settings_controller.dart

@ -52,6 +52,32 @@ class SettingsController extends GetxController {
name: 'malay', alias: 'Bahasa Melayu', value: 'ms_MY'), // 添加马来语选项
LanguageModel(name: 'turkish', alias: 'Türkçe', value: 'tr_TR'), // 添加土耳其语选项
LanguageModel(name: 'polish', alias: 'Polski', value: 'pl_PL'), // 添加波兰语选项
LanguageModel(name: 'filipino', alias: 'Filipino', value: 'tl_PH'), // 菲律宾语
LanguageModel(name: 'dutch', alias: 'Nederlands', value: 'nl_NL'), // 荷兰语
LanguageModel(name: 'swedish', alias: 'Svenska', value: 'sv_SE'), // 瑞典语
LanguageModel(name: 'danish', alias: 'Dansk', value: 'da_DK'), // 丹麦语
LanguageModel(name: 'finnish', alias: 'Suomi', value: 'fi_FI'), // 芬兰语
LanguageModel(name: 'czech', alias: 'Čeština', value: 'cs_CZ'), // 捷克语
LanguageModel(name: 'hungarian', alias: 'Magyar', value: 'hu_HU'), // 匈牙利语
LanguageModel(name: 'norwegian', alias: 'Norsk', value: 'nb_NO'), // 挪威语
LanguageModel(name: 'romanian', alias: 'Română', value: 'ro_RO'), // 罗马尼亚语
LanguageModel(
name: 'ukrainian', alias: 'Українська', value: 'uk_UA'), // 乌克兰语
LanguageModel(name: 'greek', alias: 'Ελληνικά', value: 'el_GR'), // 希腊语
LanguageModel(
name: 'bulgarian', alias: 'Български', value: 'bg_BG'), // 保加利亚语
LanguageModel(name: 'croatian', alias: 'Hrvatski', value: 'hr_HR'), // 克罗地亚语
LanguageModel(name: 'slovak', alias: 'Slovenský', value: 'sk_SK'), // 斯洛伐克语
LanguageModel(
name: 'slovenian', alias: 'Slovenščina', value: 'sl_SI'), // 斯洛文尼亚语
LanguageModel(
name: 'lithuanian', alias: 'Lietuvių', value: 'lt_LT'), // 立陶宛语
LanguageModel(name: 'latvian', alias: 'Latviešu', value: 'lv_LV'), // 拉脱维亚语
LanguageModel(name: 'estonian', alias: 'Eesti', value: 'et_EE'), // 爱沙尼亚语
LanguageModel(
name: 'serbian', alias: 'Srpski', value: 'sr_RS'), // 塞尔维亚语(拉丁)
LanguageModel(
name: 'icelandic', alias: 'Íslenska', value: 'is_IS'), // 新增冰岛语
];
Rx<LanguageModel> language = LanguageModel().obs;

9
lib/modules/settings/views/settings_view.dart

@ -512,8 +512,7 @@ class SettingsView extends GetView<SettingsController> {
iconBgColor: isDarkMode
? Colors.red[900]!.withOpacity(0.3)
: Colors.red[100]!,
iconColor:
isDarkMode ? Colors.red[300]! : Colors.red[600]!,
iconColor: isDarkMode ? Colors.red[300]! : Colors.red[600]!,
titleColor: isDarkMode ? Colors.white : null,
subtitleColor: isDarkMode ? Colors.white70 : null,
onTap: () {
@ -550,7 +549,6 @@ class SettingsView extends GetView<SettingsController> {
? Colors.white.withOpacity(0.1)
: Colors.grey[200]),
// BLE测试
_buildSimpleNavigationSetting(
title: 'BLE蓝牙测试',
@ -627,8 +625,6 @@ class SettingsView extends GetView<SettingsController> {
? Colors.white.withOpacity(0.1)
: Colors.grey[200]),
// 退出登录
// _buildSimpleNavigationSetting(
// title: 'logout'.tr, // 退出登录
@ -917,7 +913,8 @@ class SettingsView extends GetView<SettingsController> {
),
),
SizedBox(height: 4.h),
if (Get.locale?.languageCode == 'zh')
if (Get.locale?.languageCode == 'zh' &&
Get.locale?.countryCode == 'CN')
InkWell(
onTap: () => Get.to(
() => const WebViewPage(

Loading…
Cancel
Save