From 279515bf0a0457f24267b0d54f5a45e198c8def1 Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Wed, 18 Mar 2026 15:00:08 +0800 Subject: [PATCH] =?UTF-8?q?feat(api):=20=E4=B8=BA=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0=E5=A4=9A?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加语言参数处理和默认语言映射逻辑,根据设备区域或指定参数动态设置请求语言。当未提供语言参数时,使用 Get.locale 或设备区域设置,并规范化语言标签格式(如将 zh 映射为 zh-CN)。这确保了模板数据能正确匹配用户语言环境。 --- lib/data/services/network/api.dart | 69 +++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 2 deletions(-) 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, ); }