国际化IntlFlutter 国际化多语言实践

Posted ThinkerWing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了国际化IntlFlutter 国际化多语言实践相关的知识,希望对你有一定的参考价值。

目标:实现flutter国际化

提示:这里参考一下几个链接

例如:

feat/use-Flutter-Intl

该分支对应的提交是使用android Studio 和 Flutter Intl插件 并根据掘金这篇文章的实践,兼容汉字简体和繁体字
https://github.com/ThinkerWing/language/commit/f5fd58453f85b5b9c0e58df6270fac4cf22f200d

实现效果

  • 本地语言中文:你好,think
  • 本地语言英语:hello,think

开始之前先创建项目

flutter create `project`

可以看我git上的提交记录,创建项目完之后initial commit了,然后第二次提交就是增加多语言的功能。
https://github.com/ThinkerWing/language

第一步,添加intl and flutter_localizations,并启动generate标志:

https://pub.flutter-io.cn/packages/intl/install
这将在您的包的 pubspec.yaml 中添加这样一行

https://docs.flutter.dev/development/accessibility-and-localization/internationalization


启动generate标志


第二步,lib文件夹中新建文件夹l10n或者locale,并在其中创建app_en.arb 和app_zh.arb文件:


第三步,在flutte项目的根目录中添加l10n.yaml, 内容如下:

Add a new yaml file to the root directory of the Flutter project called l10n.yaml with the following content:

arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart

添加完成之后,执行命令 flutter run,dart_tools会自动生成相关的文件


第四步,在主程序MaterialApp中,添加下面内容:

需要导入的包

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
return const MaterialApp(
  title: 'Localizations Sample App',
  localizationsDelegates: [							// 本地化应用的代理
    AppLocalizations.delegate,  					// 应用程序本地化代理
    GlobalMaterialLocalizations.delegate, 			// 全局材质组件的本地化代理
    GlobalWidgetsLocalizations.delegate,			// 全局组件本地化代理
  ],
  supportedLocales: [
    Locale('en', 'US'), // English, no country code
    Locale('zh', 'CN'), // Spanish, no country code
  ],
  home: MyHomePage(),
);

在您的应用程序的任何位置使用 AppLocalizations。 在这里,翻译后的消息用于文本小部件。
Use AppLocalizations anywhere in your app. Here, the translated message is used in a Text widget.

Text(AppLocalizations.of(context)!.helloWorld);

以上是关于国际化IntlFlutter 国际化多语言实践的主要内容,如果未能解决你的问题,请参考以下文章

NetCore 国际化最佳实践

QtApplets-国际化多语言设置

iOS-生成国际化包-配置App多语言支持

# 前后端国际化多语言配置

# 前后端国际化多语言配置

Android国际化多语言切换