分享

Flutter使用GetX优雅的实现国际化功能 中英文切换

 程序员读书空间 2023-11-10 发布于浙江

先是引入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);    },  ),

实现的简单效果如下 

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多