📅  最后修改于: 2023-12-03 15:08:53.213000             🧑  作者: Mango
国际化是一个广泛应用于跨语言应用程序的技术,使开发者能够轻松地将其应用程序的文本和其他本地化内容翻译成不同的语言(本地化)而无需更改源代码。Flutter提供了一套现成的国际化库,可以轻松地将应用程序本地化。 本文将介绍如何在您的Flutter应用程序中使用国际化库。
要使用国际化库,请确保在pubspec.yaml文件中添加以下依赖项:
dependencies:
flutter_localizations:
sdk: flutter
intl: ^0.16.1
这将使Flutter Localizations和Intl包可用于您的应用程序。确保运行flutter packages get以确保依赖项已安装并可用于您的应用程序。
接下来,您需要生成用于每种语言的本地化文件。这些文件包含UI字符串的本地化版本。我们可以使用Flutter提供的Intl工具来自动化此过程。
首先,您需要在终端上运行以下命令,以在项目的根目录中创建一个名为“l10n”的文件夹:
flutter create .
然后,在该文件夹中创建一个名为“arb”的文件夹,并在其中添加一个名为“app_strings_en.arb”的文件。arb文件是一种格式,用于存储应用程序的字符串资源。您可以为每种语言重复此过程。
例如,对于法语,您可以创建名为“app_strings_fr.arb”的文件。在这些文件中,将字符串资源和其对应的本地化翻译添加到'messages'键中。例如:
// app_strings_en.arb
{
"messages": {
"@@locale": "en",
"title": "My App",
"greeting": "Hello, {name}!",
"button_text": "Press me"
}
}
// app_strings_fr.arb
{
"messages": {
"@@locale": "fr",
"title": "Mon application",
"greeting": "Bonjour, {name}!",
"button_text": "Cliquez sur moi"
}
}
有关格式的详细信息,请访问intl软件包文档。
在您拥有所有“arb”文件后,您可以使用Flutter Intl命令行工具来生成本地化的数据。该工具将在运行时自动翻译应用程序的字符串资源。要生成本地化数据,请运行以下命令:
flutter pub pub run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/app.dart lib/l10n/app_strings_*.arb
此命令将把所有生成的本地化文件保存在lib / l10n文件夹中。请注意,在本示例中,“lib / app.dart”是您包含字符串资源的文件。
一旦您已将本地化资源生成并保存在正确的文件夹中,您就可以轻松地在您的应用程序中使用它们。要使用本地化资源,请使用Flutter Intl库中提供的Intl类。例如:
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:intl/intl.dart';
import 'package:flutter_gen/gen_l10n/app_strings.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: [
AppStrings.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: AppStrings.delegate.supportedLocales,
title: AppStrings.of(context).title,
home: Scaffold(
appBar: AppBar(
title: Text(AppStrings.of(context).title),
),
body: Center(
child: Text(
AppStrings.of(context).greeting(
name: 'Flutter',
),
),
),
),
);
}
}
在上面的示例中,我们导入'app_strings.dart',这是在生成本地化数据时生成的文件。我们还包含了Flutter Localizations库中提供的一些委托,并使用Intl工具类访问本地化资源。
使用Flutter Intl库,将应用程序本地化到多种语言变得容易。通过本文介绍的步骤,您可以导入Intl软件包,创建本地化文件,生成本地化数据并在您的应用程序中使用它们。祝你好运!