打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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

实现的简单效果如下 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Archlinux中文化
java.util.ResourceBundle使用详解
Ubuntu折腾杂记
ubuntu中文支持,及中文乱码问题
ubuntu的中文显示乱码问题
ubuntu常用设置
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服