先看效果:
第一步:定义国际化配置对象
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%!