首先是引入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 后缀 然后通过调用 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); }, ),
实现的简单效果如下
|