借助App Store与Google Play,全世界任何一个国家的使用者都可以使用我们开发的应用,不过由于应用的使用者来自不同国家,所以在应用正式上架之前需要让应用能够支持多种语言,即应用的国际化。 在Flutter开发中,应用的国际化主要涉及语言和地区差异性配置两个方面,它们是应用程序的组成部分之一。关于语言的国际化比较好理解,而地区差异性配置指的是根据国家风俗的不同进行的差异性配置。按照Flutter官方的适配方案,要在Flutter应用中实现语言的国际化,需要经过以下几步。
- 首先,实现一个翻译代理LocalizationsDelegate,将所有需要翻译的文案全部声明为它的属性。
- 然后,依次为需要支持的语言添加翻译适配文件。
-
最后,在应用程序的MaterialApp中初始化,将这个代理类设置为应用程序的翻译回调。
可以发现,如果直接按照官方提供的国际化方案来进行应用适配,不仅工作量大而且极易出错。为了达到快速适配,减少代码编写造成的错误,可以使用Android Studio提供的Flutter i18n国际化插件。如果还没有安装Flutter i18n插件,可以打开Android Studio,然后依次选择【Preference】→【Plugins】→【Marketplace】搜索Flutter i18n插件进行安装,如下图所示。
安装完成之后,重启Android Studio就可以使用它进行Flutter的国际化适配了。需要说明的是,由于最新版的Android Studio已经不支持使用应用市场的方式来安装Flutter i18n插件,所以需要先从Jetbrains官网下载后再从本地进行安装,如下图所示。
dependencies:
flutter_localizations:
sdk: flutter
复制代码
在命令行中使用flutter packages get命令拉取依赖。然后,在项目的根目录下会自动生成一个res文件夹,该文件夹默认会包含一个strings_en.arb文件,arb文件的格式如下。
{
"app_name": "Flutter App internationalization",
"main_title": "Flutter i18n",
"main_content" : "You have click the button many times"
}
复制代码
arb文件是JSON格式的配置文件,可以用来存放文案标识符和文案翻译的键值对。事实上,这种将字符串文本分离成单独文件的做法,可以方便开发人员和翻译人员分工协作,从而提高适配效率。 默认情况下,系统只会生成英文资源配置strings_en.arb文件,如果要支持中文,则需要使用手动的方式在values目录下增加一个strings_zh.arb文件。在res/values文件夹上右键,然后依次选择【New】→【Arb File】→【Choose language】创建一个名为strings_zh.arb的arb文件,并添加如下内容。
{
"app_name": "Flutter应用国际化",
"main_title": "Flutter国际化",
"main_content" : "点击按钮次数: $count"
}
复制代码
实际使用时,只需要修改res/values目录下的arb文件内容,i18n插件就会自动生成对应的Dart转换代码,如下图所示。