Browse Source

feat(api): 为获取模板接口添加多语言支持

添加语言参数处理和默认语言映射逻辑,根据设备区域或指定参数动态设置请求语言。当未提供语言参数时,使用 Get.locale 或设备区域设置,并规范化语言标签格式(如将 zh 映射为 zh-CN)。这确保了模板数据能正确匹配用户语言环境。
weicu
lxm 7 months ago
parent
commit
25de2dccf4
  1. 69
      lib/data/services/network/api.dart

69
lib/data/services/network/api.dart

@ -1,7 +1,65 @@
import 'dio_manager.dart'; import 'dio_manager.dart';
import 'nw_method.dart'; import 'nw_method.dart';
import 'package:get/get.dart';
class Api { 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]) { static login([params]) {
return DioManager().request( 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<String, dynamic> data = {};
if (params is Map) {
data.addAll(Map<String, dynamic>.from(params));
}
data['language'] = resolvedLanguage;
return DioManager().request( return DioManager().request(
NWMethod.post, NWMethod.post,
'/api/home/echomeet_gettemplates', '/api/home/echomeet_gettemplates',
params: params, params: data,
); );
} }

Loading…
Cancel
Save