diff --git a/lib/data/services/network/api.dart b/lib/data/services/network/api.dart index 9920fdf89..57293e843 100644 --- a/lib/data/services/network/api.dart +++ b/lib/data/services/network/api.dart @@ -1,7 +1,65 @@ import 'dio_manager.dart'; import 'nw_method.dart'; +import 'package:get/get.dart'; class Api { + static String _normalizeTemplateLanguageTag(String value) { + final normalized = value.trim().replaceAll('_', '-'); + if (normalized.isEmpty) { + return 'en-US'; + } + final parts = normalized.split('-').where((e) => e.isNotEmpty).toList(); + if (parts.isEmpty) { + return 'en-US'; + } + if (parts.length == 1) { + return parts.first.toLowerCase(); + } + return '${parts[0].toLowerCase()}-${parts[1].toUpperCase()}'; + } + + static String _currentTemplateLanguageParam() { + final locale = Get.locale ?? Get.deviceLocale; + final languageCode = locale?.languageCode.toLowerCase(); + if (languageCode == null || languageCode.isEmpty) { + return 'en-US'; + } + + final countryCode = locale?.countryCode?.toUpperCase(); + if (countryCode != null && countryCode.isNotEmpty) { + return '$languageCode-$countryCode'; + } + + switch (languageCode) { + case 'zh': + return 'zh-CN'; + case 'en': + return 'en-US'; + case 'ja': + return 'ja-JP'; + case 'ko': + return 'ko-KR'; + case 'fr': + return 'fr-FR'; + case 'de': + return 'de-DE'; + case 'es': + return 'es-ES'; + case 'it': + return 'it-IT'; + case 'pt': + return 'pt-BR'; + case 'ru': + return 'ru-RU'; + case 'ar': + return 'ar-SA'; + case 'hi': + return 'hi-IN'; + default: + return 'en-US'; + } + } + // 登录 static login([params]) { return DioManager().request( @@ -209,11 +267,18 @@ class Api { } //获取模版数据 - static getEchomeetTemplates([params]) { + static getEchomeetTemplates([dynamic params, String? language]) { + final resolvedLanguage = _normalizeTemplateLanguageTag( + language ?? _currentTemplateLanguageParam()); + final Map data = {}; + if (params is Map) { + data.addAll(Map.from(params)); + } + data['language'] = resolvedLanguage; return DioManager().request( NWMethod.post, '/api/home/echomeet_gettemplates', - params: params, + params: data, ); }