《玩转Flutter》之国际化:Getx国际化方案

180 阅读1分钟

先看效果:

3月17日.gif

第一步:定义国际化配置对象

class LangObj {
  /// 中文
  String zh;
 
  /// 英文
  String en;
 
  /// 法语
  String? fr;
 
  /// 俄语
  String? ru;
 
  /// 西班牙语
  String? es;
 
  /// 阿拉伯语
  String? ar;
}

第二步:配置多语言

class Language {
  static final List<LangObj> config = [
    LangObj(
      zh: "国际化",
      en: "Internationalization",
      fr: "Internationalisation",
      ru: "Интернационализация",
      es: "Internacionalización",
      ar: "التدويل",
    ),
    LangObj(
      zh: "中文",
      en: "Chinese",
      fr: "Chinois",
      ru: "Китайский",
      es: "Chino",
      ar: "الصينية",
    ),
    LangObj(
      zh: "英文",
      en: "English",
      fr: "Anglais",
      ru: "Английский",
      es: "Inglés",
      ar: "الإنجليزية",
    ),
    LangObj(
      zh: "法语",
      en: "French",
      fr: "Français",
      ru: "Французский",
      es: "Frances",
      ar: "الفرنسية",
    ),
    LangObj(
      zh: "俄语",
      en: "Russian",
      fr: "Russe",
      ru: "Русский",
      es: "Ruso",
      ar: "الروسية",
    ),
    LangObj(
      zh: "西班牙语",
      en: "Spanish",
      fr: "Espagnol",
      ru: "Испанский",
      es: "Español",
      ar: "الإسبانية",
    ),
    LangObj(
      zh: "阿拉伯语",
      en: "Arabic",
      fr: "Arabe",
      ru: "Арабский",
      es: "Árabe",
      ar: "اللغة العربية",
    ),
  ];
}

第三步:使用 .i18n 扩展方法实现国际化

@override
  List<DomeListData>? get listData => [
        DomeListData("中文".i18n, onPressed: () => changeLanguage(LangType.zh.key)),
        DomeListData("英文".i18n, onPressed: () => changeLanguage(LangType.en.key)),
        DomeListData("法语".i18n, onPressed: () => changeLanguage(LangType.fr.key)),
        DomeListData("俄语".i18n, onPressed: () => changeLanguage(LangType.ru.key)),
        DomeListData("西班牙语".i18n, onPressed: () => changeLanguage(LangType.es.key)),
        DomeListData("阿拉伯语".i18n, onPressed: () => changeLanguage(LangType.ar.key)),
      ];

​以上为核心代码片段,完整源码可以点击👉《玩转Flutter》下载全部源码。

《玩转Flutter》APP已同步上线鸿蒙/iOS/安卓三端,独家提供:

✅开发框架 ✅调试工具

✅基础组件 ✅UI组件 ✅页面模版

所见即所得演示,助你开发效率飙升300%!​