
当软件有国际化的需求的时候,你可以就需要多种语言的支持了。如果你使用的ide 支持该插件的话,vscode I,ntelliJ /,Android Studio.,那么你可以使用里面的快速国际化的插件Flutter Intl来快速完成这项工作
快速构建国际化功能的插件,如果不使用也可以构建国际化的

ctrl+shift+p
Flutter Intl: Initialize
执行之后会自动产生一个文件和文件夹:
lib/l10n/intl_en.arb.

dependencies:
flutter:
sdk: flutter
flutter_localizations: # 添加这个
sdk: flutter # 添加这个
flutter_intl: # 添加这个
enabled: true # 添加这个
可以在命令输入ios/Runner/Info.plist 会自动打开xcode的页面,比如下面的添加就是支持英语和德语
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>de_DE</string>
...
</array>
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'generated/l10n.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: const [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,//生成的支持的语言种类
title: 'Flutter Demo',
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
Intl.getCurrentLocale() //获取当前的语言环境
你新增一个他会自动的获取到你新增了一个并自动添加到message_all 里面;
英文对应的其他的语言,比如下图:

直接使用,这样就会在该页面上面显示,里面的内容,前提是你手机设备当前语言是你设置语言里面支持的,手机设备切换下中英文,页面显示的就会不一样
S.of(context).myName,

arb 文件加入 {} 可以传入参数
{
"myName": "马大帅",
"myFullName": "马大帅 {work} {age}"
}
children: <Widget>[
Text(
' ${S.of(context).myName}',
),
Text(
' ${S.of(context).myFullName('sb 工作', 50)}',
),
],

复数:
"getMessageTips": "{howMany, plural, zero{你选择的零} two{你选择的二} other{你选择了{howMany}其他}}",
Text(S.of(context).getMessageTips(2)),
可以选项的内容:相当于是一个字典,传入key ,然后传入value 就可以完成
"select": "{select,select, option1{{lastName}, select} option2{{lastName}, select} other{{lastName}, default select}}",
Text(S.of(context).select("option2", "USA"));
Text(S.of(context).select("other", "china"));
欢迎关注,留言,咨询,交流!
