Flutter学习之语言国际化

982 阅读1分钟

使用插件 Flutter Intl 来是实现国际化。通过我个人实践,通过该插件来实现会简单很多。

自动切换语言(跟随系统语言):

在AS中 command+, 打开设置界面。搜索Flutter Intl并安装

image.png

添加依赖

dependencies:
  ...
  
  flutter_localizations: 
      sdk: flutter
  intl: ^0.17.0

dev_dependencies:
  ...
  intl_generator:  0.2.1

然后使用插件:

image.png

会在lib目录下增加 generated 和 l10n两个包

image.png

图中的zh_Hans_CN添加方法。

image.png

然后输入:zh_Hans_CN,点击OK即可(其他语言也是该步骤)

image.png

接下来。到入口文件(main):引入头文件

import 'package:flutter_localizations/flutter_localizations.dart';

设置以下代码

image.png

然后找到这两个文件:

image.png

intl_en:

{
  "title_home": "Home",
  "title_category": "Category",
  "title_setting": "Setting"
}

intl_zh_Hans_CN:

{
  "title_home": "首页",
  "title_category": "分类",
  "title_setting": "设置"
}

两个文件中的JSON的KEY要一致。Value为对应的语言文字。

在需要使用的地方引入头文件,然后:

S.of(context).title_home

到这里,自动识别系统语言改变应用语言已经结束,但是不改变系统语言的情况下改变应用还未实现。下面继续:

手动切换语言:

经过在网上找资料切换语言需要用到状态管理的知识点。 使用状态管理插件GetX: 配置一下。然后 Pub get。

dependencies:
  ...
  intl: ^0.17.0
  get: ^4.6.1

在入口引入(main)

import 'package:get/get.dart';

然后再上面代码的基础上加上红框中的代码:

image.png

这样就配置好了。那么怎么切换呢:

image.png

接下来我有个问题:就是App内部手动切换了语言之后。然后再更改系统语言会怎么样,会不会跟随系统语言? 经过编译,答案是会。还是挺好用了。结束!