这篇只记录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请求权限对应的描述配置多语言,跟原生的方法一样。需要对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和权限描述,以下图的格式填写保存即可
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)