Files
xianyan/lib/l10n/translation_resolver.dart
Developer 9ea8d3d606 chore: 汇总批量提交的功能优化与bug修复
本次提交包含多项迭代优化和问题修复:
1. 新增缩略图图片组件、数字格式化工具类,补充多语言翻译类型与本地化支持
2. 优化底部导航栏主题色统一使用动态accent色值
3. 修复多处图表动画、路由跳转、API请求相关问题
4. 简化服务器公告文案,调整默认分屏状态为关闭
5. 新增安卓/iOS桌面快捷方式配置
6. 重构多处状态管理类使用SafeNotifierInit统一异常保护
7. 替换硬编码蓝色为主题色,更新版本号获取方式为动态读取
8. 优化缓存预加载逻辑,移除无用代码
9. 调整默认设置项,优化用户体验细节
2026-05-31 12:24:05 +08:00

165 lines
3.9 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/// ============================================================
/// 闲言APP — 翻译解析器与Provider
/// 创建时间: 2026-05-29
/// 更新时间: 2026-05-29
/// 作用: 根据语言ID/系统语言解析翻译提供Riverpod Provider
/// 上次更新: 从translations.dart拆分引用改为公开语言常量
/// ============================================================
import 'package:flutter/widgets.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../features/mine/settings/providers/general_settings_provider.dart';
import 'types/t.dart';
import 'languages/zh_cn.dart';
import 'languages/en.dart';
import 'languages/ja.dart';
import 'languages/zh_tw.dart';
import 'languages/ko.dart';
import 'languages/de.dart';
import 'languages/it.dart';
import 'languages/es.dart';
import 'languages/ar.dart';
import 'languages/bn.dart';
import 'languages/hi.dart';
import 'languages/pt.dart';
import 'languages/ru.dart';
import 'languages/fr.dart';
import 't_func.dart';
/// 根据语言ID获取翻译映射
T getTranslations(String languageId) {
switch (languageId) {
case 'en':
return en;
case 'ja':
return ja;
case 'zh_TW':
return zhTW;
case 'ko':
return ko;
case 'de':
return de;
case 'it':
return it;
case 'es':
return es;
case 'ar':
return ar;
case 'bn':
return bn;
case 'hi':
return hi;
case 'pt':
return pt;
case 'ru':
return ru;
case 'fr':
return fr;
default:
return zhCN;
}
}
/// 解析系统语言对应的翻译
T _resolveSystemTranslations() {
final systemLocale = WidgetsBinding.instance.platformDispatcher.locale;
final langCode = systemLocale.languageCode;
final countryCode = systemLocale.countryCode;
if (langCode == 'zh') {
if (countryCode == 'TW' || countryCode == 'HK' || countryCode == 'MO') {
return zhTW;
}
return zhCN;
}
switch (langCode) {
case 'en':
return en;
case 'ja':
return ja;
case 'ko':
return ko;
case 'de':
return de;
case 'it':
return it;
case 'es':
return es;
case 'ar':
return ar;
case 'bn':
return bn;
case 'hi':
return hi;
case 'pt':
return pt;
case 'ru':
return ru;
case 'fr':
return fr;
default:
return zhCN;
}
}
/// 解析系统语言对应的语言ID
String _resolveSystemLanguageId() {
final systemLocale = WidgetsBinding.instance.platformDispatcher.locale;
final langCode = systemLocale.languageCode;
final countryCode = systemLocale.countryCode;
if (langCode == 'zh') {
if (countryCode == 'TW' || countryCode == 'HK' || countryCode == 'MO') {
return 'zh_TW';
}
return 'zh_CN';
}
switch (langCode) {
case 'en':
return 'en';
case 'ja':
return 'ja';
case 'ko':
return 'ko';
case 'de':
return 'de';
case 'it':
return 'it';
case 'es':
return 'es';
case 'ar':
return 'ar';
case 'bn':
return 'bn';
case 'hi':
return 'hi';
case 'pt':
return 'pt';
case 'ru':
return 'ru';
case 'fr':
return 'fr';
default:
return 'zh_CN';
}
}
/// 翻译Provider — 根据设置的语言ID提供翻译映射
final translationsProvider = Provider<T>((ref) {
final settings = ref.watch(generalSettingsProvider);
final languageId = settings.languageId;
if (languageId == 'system') {
return _resolveSystemTranslations();
}
return getTranslations(languageId);
});
/// 动态翻译函数Provider — 根据设置的语言ID提供TFunc实例
final translationsFuncProvider = Provider<TFunc>((ref) {
final settings = ref.watch(generalSettingsProvider);
final languageId = settings.languageId;
if (languageId == 'system') {
return TFunc(_resolveSystemLanguageId());
}
return TFunc(languageId);
});