国际化是指应用以不同的区域语言提供以更好地覆盖人们的术语。为此,我们必须以不同的语言提供一个应用程序,并为它们提供合适的布局。 Flutter提供了国际化应用程序的方法。我们将讨论如何本地化MaterialApp 。
Flutter支持 78 种不同的语言。默认情况下,英语(美国)是本地化语言。
设置应用程序:
首先,我们必须在pubspec.yaml依赖文件中添加以下代码行,如下所示:
dependencies:
flutter:
sdk: flutter
flutter_localizations: # ADD
sdk: flutter # ADD
intl: ^0.17.0-nullsafety.2 # ADD
在pubspec.yaml的flutter部分添加代码:
generate: true
单击 pub get 以获取所有依赖项。
现在在项目的根目录中创建一个新的yaml 文件(如l10n.yaml) ,内容如下:
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
在 lib 目录中添加一个名为l10n的目录,然后添加语言的文件。在这里,我们将添加两种语言的数据,即英语和印地语。
Name: app_en.arb
Content:
{
"helloWorld": "GeeksforGeeks",
"displayText":"This is a sample App",
"@helloWorld": {
"description": "SampleApp for GeeksforGeeks"
}
}
而对于第二个文件
Name: app_hi.arb
Content:
{
"helloWorld": "गीक्स फॉर गीक्स ",
"displayText":"यह एक सैंपल ऐप है"
}
现在重新启动应用程序,以便app_localizations. dart文件在以下目录中生成:
.dart_tools/flutter_get/genl10n
现在我们必须编写以下代码行来使应用程序国际化 –
首先,我们必须导入app_localizations然后我们必须将以下两个属性添加到MaterialApp中
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
- localizationsDelegates 属性:它定义了应用程序的所有本地化资源。
- supportedLocales 属性:它提供了应用程序支持的语言列表。
- onGeneratedTitle 属性:在设置小部件后调用它,这意味着本地化可用。
例子:
Dart
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
onGenerateTitle: (context) => AppLocalizations.of(context).helloWorld,
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
theme: ThemeData(primarySwatch: Colors.green),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(AppLocalizations.of(context).helloWorld),
),
body: Center(
child: Text(
AppLocalizations.of(context).displayText,
style: TextStyle(fontSize: 30),
),
),
);
}
}
输出:
我们可以通过在设置中更改设备的语言来切换语言。
想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!