当前位置: 首页 > news >正文

flutter实现语言的国际化

目录

前言

一、GetX实现国际化(推荐)

1.安装Getx

2.创建国际化的文件

3.使用国际化字符串

4.配置GetMaterialApp

5.更改语言

6.系统语言

​编辑

7.原生工程配置

1.iOS工程配

1.打开iOS工程,在Project的info里面添加语言

2.创建String File文件

2.android配置

8.本博客实例demo

二.Flutter Intl配置国际化

1.安装intl插件。

2.配置flutter_localizations

3.使用插件初始化工程

4.添加需要支持的语言

5.国际化字符串

6.配置中英文切换

7.使用字符串

8.完整实例代码


前言

        今天特意准备了这篇实现国际化的文章,和大家一起,用最简单快速的方式实现 Flutter 国际化。

        我们从一个最简单的工程开始,看一下如何是实现Flutter应用程序的国际化。

一、GetX实现国际化(推荐)

        新建一个Flutter工程,使用GetX实现国际化的具体步骤如下:

1.安装Getx

        在pubspec.yaml文件中配置Get:

dependencies:
  get:

2.创建国际化的文件

        Flutter要国际化的字符串以键值对的方式保存在字典中。我们要自定义自己的国际化字符串,先创建一个自定义类文件。

import 'package:get/get.dart';class Messages extends Translations {@overrideMap<String, Map<String, String>> get keys => {'zh_CN': {'hello': '你好 世界',},'de_DE': {'hello': 'Hallo Welt',},'en_US': {'hello': 'Hello World',}};
}

3.使用国际化字符串

        使用字符串的时候非常简单,在字符串后面添加.tr后缀即可。

Text('title'.tr);

4.配置GetMaterialApp

return GetMaterialApp(translations: Messages(), // 你的翻译locale: Locale('zh', 'CN'), // 将会按照此处指定的语言翻译fallbackLocale: Locale('en', 'US'), // 添加一个回调语言选项,以备上面指定的语言翻译不存在
);

5.更改语言

var locale = Locale('en', 'US');
Get.updateLocale(locale);

6.系统语言

        要读取系统语言,可以使用window.locale.

import 'dart:ui' as ui;

return GetMaterialApp(
    locale: ui.window.locale,
);

图1.Flutter国际化

7.原生工程配置

        其实经过上面的步骤之后,app内部已经可以实现国际化了。但是如果不在iOS原生中配置iOS国际化支持,在设置中是不会显示语言首选项等设置的。

        图2.设置中显示app的语言设置

1.iOS工程配

1.打开iOS工程,在Project的info里面添加语言

图3.添加国际化需要增加的语言

2.创建String File文件

        创建StringFile文件用来存储所有语言的文本。

        New-File-String File创建存储的文件。

       图4.配置完成的iOS工程

        这里创建完整之后,在设置里面就可以看到首选语言了。搞定。

2.android配置

        打开android 工程,配置对国际化语言的支持,具体的步骤就不写了,不懂的可以自行百度。

8.本博客实例demo

        本博客使用的demos在这里。

二.Flutter Intl配置国际化

        这种方式稍微优点复杂,有时间的话也可以尝试下。

1.安装intl插件。

        图5.安装intl插件

2.配置flutter_localizations

        pobspec.yaml文件中添加flutter_locations:

dependencies:flutter:sdk: flutterflutter_localizations:sdk: flutter

3.使用插件初始化工程

图6.初始化工程

初始化完成之后的项目结构目录如下:

图7.intl初始化项目

       

        lib 文件夹中多了两个文件夹 generated 和 i10n。我们需要关注的是 l10n。

        我们看到i10n目录下有一个intl.en.arb就是需要国际化的英文的配置文件。

4.添加需要支持的语言

        默认情况下,intl支持英文,我们增加对中文的支持。图8.增加需要支持的语言

        在下面的弹窗中输入“zh-CN”,增加对中文的支持。

5.国际化字符串

        在intl_zh_CN.arb中,增加英文的国际化字符串

{"test" : "Test"
}

        在intl_en.arb中,增加中文的国际化字符串

{"test" : "测试"
}

6.配置中英文切换

        在MaterialApp中增加不同语言的切换。

class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Flutter Demo',// 切换中英文locale: const Locale('zh', ''),// locale: const Locale('en', ''),localizationsDelegates: const [S.delegate,GlobalMaterialLocalizations.delegate,GlobalCupertinoLocalizations.delegate,GlobalWidgetsLocalizations.delegate],supportedLocales: [const Locale('zh', ''),...S.delegate.supportedLocales],theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: const MyHomePage(title: 'Flutter Demo Home Page'),);}
}

7.使用字符串

S.of(context).test

8.完整实例代码

        当然我们如果想要程序记录下上次的选择,还可以继续封装一下,使用shared_preferences保存上次的记录,以便下一次加载。

        完整的demo在这里。

http://www.lryc.cn/news/401733.html

相关文章:

  • 服务端正常启动了,但是客户端请求不到
  • 鸿蒙开发 -本地数据库操作
  • 主机安全-进程、命令攻击与检测
  • FPGA FIR fdatool filter designer MATLAB
  • 水表数字识别2:Pytorch DBNet实现水表数字检测(含训练代码和数据集)
  • Windows 点云生成二维栅格图 [附C++完整代码实现]
  • SpringBoot结合ip2region实现博客评论显示IP属地
  • 设计模式使用场景实现示例及优缺点(行为型模式——策略模式)
  • ReactRouter v6升级的步骤
  • 【JVM实战篇】内存调优:内存问题诊断+案例实战
  • 专业条码二维码扫描设备和手机二维码扫描软件的区别?
  • 基于嵌入式Linux的高性能车载娱乐系统设计与实现 —— 融合Qt、FFmpeg和CAN总线技术
  • 探索IP形象设计:快速掌握设计要点
  • 泛微Ecology8明细表对主表赋值
  • opencv—常用函数学习_“干货“_5
  • JAVA零基础学习1(CMD、JDK、环境变量、变量和键盘键入、IDEA)
  • Redis的安装配置及IDEA中使用
  • ubuntu 物理内存爆炸而不使用虚拟内存的问题
  • Python实现音频均衡和降噪
  • 【JavaScript 算法】贪心算法:局部最优解的构建
  • Azcopy Sync同步Azure文件共享
  • 单例模式 饿汉式和懒汉式的区别
  • Python中的模块和包的定义以及如何在Python中导入和使用它们
  • 设计模式使用场景实现示例及优缺点(结构型模式——组合模式)
  • 《系统架构设计师教程(第2版)》第11章-未来信息综合技术-06-云计算(Cloud Computing) 技术概述
  • 网络安全工作者如何解决网络拥堵
  • 电脑显示mfc140u.dll丢失的修复方法,总结7种有效的方法
  • ospf的MGRE实验
  • 开发指南047-前端模块版本
  • c#中的字符串方法