Flutter 国际化多语言

这篇只记录flutter添加多语言

添加配置:

1.在pubspec.yaml的dependencies中添加下面的代码

flutter_localizations:
    sdk: flutter
intl: ^0.17.0

在pubspec.yaml的flutter中添加

generate: true

点击pub get
2.在项目根目录里创建一个l10n.yaml文件
在l10n.yaml里添加如下代码

arb-dir: lib/l10n //在lib目录下的l10n文件夹
template-arb-file: app_en.arb //在lib/l10n下的app_en.arb
output-localization-file: app_localizations.dart//点击运行后生成的文件

3.在lib目录下添加了l10n文件夹,并在该目录下添加文件app_en.arb
4.在app_en.arb文件中添加我们的字符串,代码如下

{
    "helloWorld": "Hello World!",
    "title":"flutter-demo-title"
}

点击运行生成多语言的文件
生成的文件可以在下图的位置找到
在这里插入图片描述

使用

1.在MaterialApp的文件中导包

import 'package:flutter_gen/gen_l10n/app_localizations.dart';

在MaterialApp中添加如下代码

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      onGenerateTitle: (context){//此处如果直接title:AppLocalizations.of(context)!.title;会报错,原因后面解释
        return AppLocalizations.of(context)!.title;//获取app_xx.arb文件里title这个key对应的字符串
      },
      ...
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        AppLocalizations.delegate//这个就是前面点击运行后生成的
      ],
      supportedLocales: [
        const Locale('en','US'),
        const Locale('zh','CN')
      ],
      ...,
    );
  }
}

2.在需要用的地方,用如下代码获取相应的字符串

AppLocalizations.of(context)!.title;

ios的需要打开info.plist,选中Information Property List,点击添加,添加Localizations,添加需要配置的语言
到此flutter对应的多语言基本完成
通过AppLocalizations.of(context)!.title获取对应的字符串,会从当前的context沿着widget树向顶部查找AppLocalizations,但是在MaterialApp中设置完AppLocalizations.delegate后,实际上AppLocalizations是在当前context的子树中,所以会返回null

配置app名称和ios请求权限时的权限描述对应的多语言

app名称和ios请求权限对应的描述配置多语言,跟原生的方法一样。需要对flutter中的android和ios里的项目添加多语言

1.Android应用名称添加多语言
在不同的value文件夹下添加不同的语言的string.xml
然后在android目录下找到AndroidMainfest.xml,在application中添加,如下代码

<application
        ...
        android:label="@string/app_name"
        ...>
</application>

2.ios应用名和权限申请说明配置多语言
在项目目录中选中ios,选择在xcode中打开,
添加需要支持的语言,添加操作如下图
在这里插入图片描述

点击项目目录创建InfoPlist.strings。如下图
在这里插入图片描述
在这里插入图片描述
添加对应语言的string 文件,操作如下
在这里插入图片描述
添加完成后如下图
在这里插入图片描述
打开info.plist文件
刚打开是这样的
在这里插入图片描述
右键选中权限对应的key,右键选择Raw Keys & values,
在这里插入图片描述

显示出权限描述对应的key
在这里插入图片描述
复制上图的key和权限描述,以下图的格式填写保存即可
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值