AliPlayerWidget提供开箱即用的国际化方案,内置中英文支持,可灵活扩展其他语言。
概述
国际化系统具有以下特性:
内置中英文 - 无需配置即可使用。
自动跟随系统语言 - 默认与设备语言同步。
扩展语言包 - 支持注册自定义语言(日语、韩语等)。
覆盖翻译 - 可修改内置文案。
运行时切换 - 动态切换语言。
使用方法
使用默认配置
无需任何配置,播放器组件自动跟随系统语言。
切换语言
// 切换到英文
AliPlayerWidgetGlobalSetting.setLocale(const Locale('en'));
// 切换到中文
AliPlayerWidgetGlobalSetting.setLocale(const Locale('zh'));获取翻译
// 使用 Key 常量(推荐)
final text = AliPlayerWidgetGlobalSetting.t(PlayerI18nKeys.volume);
// 带参数插值
final speed = AliPlayerWidgetGlobalSetting.t(
PlayerI18nKeys.speedFormat,
{'speed': '1.5'},
);注册新语言
实现 PlayerTranslations 接口并注册:
// 1. 定义语言包
class PlayerTranslationsKo with PlayerTranslationsMixin {
@override
Locale get locale => const Locale('ko');
@override
Map<String, dynamic> get translations => {
'player': {
'settings': {
'volume': '볼륨',
'brightness': '밝기',
// ...
},
},
};
}
// 2. 注册并使用
AliPlayerWidgetGlobalSetting.registerTranslations(PlayerTranslationsKo());
AliPlayerWidgetGlobalSetting.setLocale(const Locale('ko'));覆盖翻译
修改特定语言的某些翻译项:
AliPlayerWidgetGlobalSetting.overrideTranslations('zh', {
'player': {
'settings': {
'volume': '音量',
'quality': '画质',
},
},
});监听语言变化
ValueListenableBuilder<Locale>(
valueListenable: AliPlayerWidgetGlobalSetting.localeNotifier,
builder: (context, locale, _) {
return Text(AliPlayerWidgetGlobalSetting.t(PlayerI18nKeys.volume));
},
)与MaterialApp集成
MaterialApp(
localizationsDelegates: const [
PlayerLocalizationsDelegate(),
GlobalMaterialLocalizations.delegate,
],
supportedLocales: AliPlayerWidgetGlobalSetting.supportedLocales,
)内置语言
语言 | Locale | 状态 |
中文 |
| 内置 |
英文 |
| 内置 |
翻译 Key 列表
所有翻译 Key 定义在PlayerI18nKeys常量类中。
翻译示例请参考:
内置翻译:
lib/i18n/translations/。自定义翻译:
example/lib/pages/i18n/translations/。
API 参考
AliPlayerWidgetGlobalSetting
方法/属性 | 说明 |
| 获取翻译文本。 |
| 设置当前语言。 |
| 初始化国际化。 |
| 注册语言包。 |
| 覆盖翻译。 |
| 当前语言。 |
| 语言变化监听器。 |
| 支持的语言列表。 |
实践示例
请参考example/lib/pages/i18n/i18n_demo_page.dart查看完整示例,包含:
运行时语言切换。
注册新语言包(日语)。
覆盖内置翻译。
该文章对您有帮助吗?