首先是引入get插件,我这里使用的是4.6.6版本,Flutter版本使用的是3.13.8。
创建一个Message类来定义文字包。
class Messages extends Translations {
@override
Map<String, Map<String, String>> get keys => {
'en_US': {
'test': 'Young people who wake up early are small code farmers working in the software development industry',
},
'zh_CN': {
'test': '早起的年轻人是从事在软件开发行业的小码农',
}
};
}
当然后也可以换一种方式来写,就是分别定义两个dart文件来存语言信息。
然后在 Messages 中引入
class Messages extends Translations {
@override
Map<String, Map<String, String>> get keys => {
'zh_cn': intlZhCn,
'en_us': intlEnUs,
};
}
然后修改程序入口
return GetMaterialApp(
translations: Messages(), // 翻译
locale: Locale('zh', 'CN'), // 默认指定的语言翻译
// 添加一个回调语言选项,以备上面指定的语言翻译不存在
fallbackLocale: Locale('en', 'US'),
);
然后在使用的时候 直接在字符串后面加上.tr
后缀
Text(
"test".tr,
),
然后通过调用 Get.updateLocale(locale)来更新语言环境。然后翻译会自动使用新的locale。
TextButton(
child: const Text("中文"),
onPressed: () async {
var locale = const Locale('zh', 'CN');
await Get.updateLocale(locale);
},
),
TextButton(
child: const Text("英文"),
onPressed: () async {
var locale = const Locale('en', 'US');
await Get.updateLocale(locale);
},
),
实现的简单效果如下
联系客服