Flutter 国际化多语言

Flutter 国际化多语言,第1张

这篇只记录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和权限描述,以下图的格式填写保存即可

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/996578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存