首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

flutter国际化支持哪些语言的​

Flutter 支持国际化(i18n),允许开发者为应用程序添加多种语言和区域设置。Flutter 本身并没有限制支持的语言种类,理论上你可以为应用程序添加任何语言的支持,只要你提供相应的翻译资源。

如何在 Flutter 中实现国际化

Flutter 使用 intl 包来实现国际化。以下是实现国际化的基本步骤:

  1. 添加 intl

pubspec.yaml 文件中添加 intl 包的依赖:

代码语言:text
复制
dependencies:   flutter:     sdk: flutter   intl: ^0.17.0

2. 创建翻译文件

创建一个 lib/l10n 目录,并在其中添加 .arb 文件(例如 intl_en.arbintl_es.arb 等),每个文件对应一种语言。.arb 文件是 JSON 格式的文件,用于存储翻译字符串。 例如,intl_en.arb 文件内容:

代码语言:javascript
复制
{
  "title": "Hello World",
  "message": "Welcome to Flutter"
}

intl_es.arb 文件内容:

代码语言:text
复制
{   "title": "Hola Mundo",   "message": "Bienvenido a Flutter" }
 

3.生成 Dart 代码

使用 intl_translation 工具将 .arb 文件转换为 Dart 代码。你可以在项目根目录运行以下命令:

代码语言:text
复制
flutter pub run intl_translation:generate_from_arb --output-dir=lib/l10n lib/main.dart lib/l10n/intl_*.arb

4. 配置 MaterialApp

MaterialApp 中配置支持的语言和本地化委托:

代码语言:text
复制
import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:intl/intl.dart'; import 'l10n/messages_all.dart'; // 生成的 Dart 文件  void main() {   runApp(MyApp()); }  class MyApp extends StatelessWidget {   @override   Widget build(BuildContext context) {     return MaterialApp(       localizationsDelegates: [         GlobalMaterialLocalizations.delegate,         GlobalWidgetsLocalizations.delegate,         GlobalCupertinoLocalizations.delegate,         // 添加自定义的本地化委托         AppLocalizations.delegate,       ],       supportedLocales: [         const Locale('en', ''), // English         const Locale('es', ''), // Spanish         // 添加更多的语言支持       ],       home: MyHomePage(),     );   } }  class MyHomePage extends StatelessWidget {   @override   Widget build(BuildContext context) {     return Scaffold(       appBar: AppBar(         title: Text(AppLocalizations.of(context).title),       ),       body: Center(         child: Text(AppLocalizations.of(context).message),       ),     );   } }
 

5. 创建 AppLocalizations

创建一个 AppLocalizations 类来加载翻译字符串:

代码语言:text
复制
import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'l10n/messages_all.dart'; // 生成的 Dart 文件  class AppLocalizations {   static Future<AppLocalizations> load(Locale locale) {     final String name = locale.countryCode.isEmpty ? locale.languageCode : locale.toString();     final String localeName = Intl.canonicalizedLocale(name);      return initializeMessages(localeName).then((_) {       Intl.defaultLocale = localeName;       return AppLocalizations();     });   }    static AppLocalizations of(BuildContext context) {     return Localizations.of<AppLocalizations>(context, AppLocalizations);   }    String get title {     return Intl.message(       'Hello World',       name: 'title',       desc: 'Title for the application',     );   }    String get message {     return Intl.message(       'Welcome to Flutter',       name: 'message',       desc: 'Welcome message for the application',     );   } }  class AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {   const AppLocalizationsDelegate();    @override   bool isSupported(Locale locale) {     return ['en', 'es'].contains(locale.languageCode);   }    @override   Future<AppLocalizations> load(Locale locale) {     return AppLocalizations.load(locale);   }    @override   bool shouldReload(AppLocalizationsDelegate old) => false; }
 

支持的语言

如前所述,Flutter 本身并没有限制支持的语言种类。你可以为应用程序添加任何语言的支持,只要你提供相应的翻译资源。常见的语言包括但不限于:

  • 英语(en)
  • 西班牙语(es)
  • 法语(fr)
  • 德语(de)
  • 中文(简体 zh-CN,繁体 zh-TW)
  • 日语(ja)
  • 韩语(ko)
  • 俄语(ru)
  • 意大利语(it)
  • 葡萄牙语(pt)
  • 阿拉伯语(ar)
  • 印地语(hi)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券