首页
学习
活动
专区
工具
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)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

快速适配 Flutter语言国际化

如果你希望你APP走出海外,那么就需要你在编写代码时考虑支持不同语言环境,设置一些“本地化”值,例如文本/布局。...Flutter本身是具备国际化,在适配方面也较为简单,今天我将会介绍一个名为Flutter Intl插件快速实现Flutter语言国际化。...要添加对其他语言支持,应用程序必须指定其他MaterialApp属性,并包含一个名为单独包-“flutter_localizations”。...有关这些应用程序属性更多信息,它们所依赖类型以及如何国际化Flutter应用程序,可以查阅官方文档?...《Flutter 应用里国际化》[3] 使用 上文提到了,配置好该插件后,我们需要做便是在arb文件中编辑相应字段即可,这里给出示例。 如果有其他语言,只需要再添加一份arb文件即可。

2.4K20

Flutter 实战】国际化及App 内切换语言功能

老孟导读:本文介绍如何实现国际化以及实现 App 内切换语言功能。 使App支持国际化 当应用程序支持不同语言时候,就需要对应用程序进行国际化,当然国际化不仅仅指文字,也可以是布局、图片等。...Flutter 已经提供了组件来实现国际化,下面是实现国际化步骤: 在 MaterialApp.supportedLocales 中添加支持语言: MaterialApp( title: 'Flutter...重点是这句: AppLocalizations.of(context).title 此时,App会根据系统语言作为当前语言。 系统是如何实现国际化?...,supportedLocales 表示支持语言,即 MaterialApp.supportedLocales 设置值。...通过这两个参数判断当然系统语言是否在支持范围内,如果支持则返回系统语言,不支持则返回默认语言。 使用此方法也可以实现所有英语区域国家使用英语,而国内、香港、澳门等使用中文。

7.2K30
  • Android支持国际化语言那点事(支持8.0+)

    起因 我们在开发app可能会拓展国外市场,那么对包含英语在内其它语言支持就很有必要了。 效果 ? 思路 一:添加相关资源文件,并引用。...实现 在resvalues文件夹下新建相关语言类型资源文件 右键新建资源文件,选择Locale,点击 按钮 ? 选择Language,以及地区(any region)即可 ?...),为了保证语言从A切换到B,在之后启动应用依旧使用B语言,我们需要将B语言存入本地。...(Context context) { Locale locale; if (Build.VERSION.SDK_INT = Build.VERSION_CODES.N) { //7.0有多语言设置获取顶部语言...只需将其他(除了当前语言选择activity)所有activity进行recreate(),即可。languageUtil同时进行了是否需要切换语言判定。

    1.2K20

    【Django | 开发】 (国际化项目&支持语言

    推荐一款找工作神器网站: 宝藏网站 |笔试题库|面试经验|实习招聘内推| 该文章收录专栏 ✨—【Django | 项目开发】从入门到上线 专栏—✨ 文章目录 一、国际化项目介绍 二、实现步骤...一、国际化项目介绍 这个翻译不是浏览器翻译,Django也不会帮你翻译。...,我花了一整天时间处理,由于支持window系统以及配置网上方法都比较旧,最后还是stackoverflow香,直接在网址https://mlocati.github.io/articles/gettext-iconv-windows.html...en 文件 ( 这里en 是之前所设置名字,需要与setting中语言配置元组中第一个数据一样,此时我们需要都将中文翻译成英文,注意!!不进行翻译会默认使用其他语言!...在切换语言from表单中,我们所提交表单路径set_language 是我们所导入i18n url 路径所提供,提交language.code能够对应到我们所设置语言就能切换语言

    70510

    iOS本地化国际化语言支持

    所以如果用户中可能包括这些人的话,那么多语言支持是个很重要课题,这个功能直译是本地化,意译是国际化,通俗地说就是多语言支持了,本文为了通俗就叫多语言支持。...iOS开发实现多语言是件特别方便事儿,本文就讲解实现方法,分为App名称多语言支持、内容文本多语言支持、获取当前设备所使用语言三个方面。...运行环境: Xcode 6.4,iOS SDK 8.4 1、App名称多语言支持 首先我们让我们App名称实现多语言,注意本文所有的多语言支持都是根据用户设置设备语言来区分显示。...2、内容文本多语言支持 App名称其实无伤大雅,真正要支持语言应该是我们在应用内显示各种内容,对内容语言支持和App名称大同小异。...以上,就基本实现了所有会用到本地化/国际化/多语言支持功能,还是非常简单。 可以在这里下载我工程:https://github.com/Cloudox/LocalizedTest

    59410

    Spring框架中国际化支持

    我们在开发项目时,常常会需要支持多国语言,这时就会要求我们程序支持国际化,也就是可以根据客户端系统语言类型显示相应文案与界面。在spring中可以很方便开发出支持国际化Web项目。...除了spring为我们开发国际化提供了支持,在java中也为我们提供了相应API。例如java.util.Locale类。...Locale类是表示语言和国家/地区信息本地化类,也就是通过语言和国家或地区,来确定该系统国际化版本。这时可能有人会想为什么要通过两个参数来确定,单纯通过语言确定不了吗?答案当然是不能。...Locale类除了有上述作用外,还可以为我们开发国际化程序时提供筛选定制化文件功能,也就是通过Locale类来为我们选择不同语言和国家语言文件。...它们区别是后者支持定时刷新国际化文件,也就是在程序不重启情况下,可以设置刷新周期,以达到动态更新文件功能。具体配置如下。 ? ? ? ?

    1K20

    国际化之Android设备支持语种

    昨天发了关于iOS支持语种,文章最后也补了安卓支持语种列表。但最后发现安卓设备支持跟它列有出入,我重新完全手工整理了一遍。...我将对应语种在安卓语言列表里显示,也全部逐一列出来了,方便大家到时候对照图片切换相应语言。 找到一个网站,可以根据语言代码查询相关信息。...安卓显示语言,都是以对应语言为输入,比如“日本语”,输入后得到“日本語”。...中文(繁体) –> 中文(繁體) 再一个我发现安卓比 iOS 蛋疼,iOS 如果我选择中文后,其它语言会显示中文及对应语言符号,虽然上面我不认识,中文我是认识,切换起来无成本。...好像Android 高版本系统已经支持了,刚刚确认了一下:) 搜索,最重要是找到背后规律(比如上面 URL 上规则),不然就是蛮力在做事情效率低下。

    71120

    Flutter 实战】 Intl 插件实现国际化以及修改系统组件国际化

    老孟导读:本文介绍如何使用 Intl 插件实现国际化以及修改系统组件国际化文案。 Intl 官方出品,包含用于处理国际化/本地化消息,日期和数字格式和解析,双向文本以及其他国际化问题。...VS Code Flutter Intl 插件:https://marketplace.visualstudio.com/items?...添加语言 Tool->Flutter Intl -> Add Locale: 添加中文支持: 自动生成相关文件: 添加系统国际化支持 在pubspec.yaml文件中添加包依赖: dependencies...国际化系统组件 部分系统组件已经支持国际化,那么如何修改其国际化文案呢?下面以日期组件为例进行介绍。...,这个就是上面定义国际化文件,效果如下: 注意:ZhCupertinoLocalizations.delegate要放在GlobalCupertinoLocalizations.delegate,前面

    2.7K00

    Flutter 学习路线图

    前言 Flutter越来越火,学习Flutter的人越来越多,对于刚接触Flutter的人来说最重要是如何学习Flutter,重点学习Flutter哪些内容。...Flutter对比其他跨平台技术有哪些优势。 Flutter整体框架。 Flutter实现原理。 Flutter响应式编程实现原理。 Flutter与Dart关系及Dart特点。...就算一天学3个控件,那也需要好几个月,这明显是不科学,只需要学习常用组件即可,哪些是常用组件?...Dart基础 Flutter是用Dart语言开发,所以我们需要Dart语言基础知识,如果你有其他高级语言基础,这一部分基本可以略过,只需了解如下内容: 如何导入包。...国际化 如果你App需要国际化,那么你需要学习国际化相关内容,如何设置不同国家文案等。当然这并不是必须

    1.6K10

    FlutterUnit 3.0 全面升级 - 国际化、导航2.0、项目结构

    FlutterUnit 是张风捷特烈一个开源 Flutter 全平台 项目,支持 Android、iOS、Windows、MacOS、Linux、Web 六大主流平台。...国际化支持 目前已经初步支持国际化,对于应用中非内容固定文字,进行了国际化处理,目前只支持简体中文和英文两种语言,后期有时间会支持其他语言。 移动端在: 我/应用设置/多语言 中切。...桌面端在: 设置/多语言 中切换。 移动端 移动端 移动端 桌面端 桌面端 关于 Flutter 应用国际化,我发布过对应 B站视频。...导航 2.0 支持 在 《Flutter 路由导航: 源码探索与实战》 小册完成后,我对 Flutter 导航 2.0 有了全面的认知。因此 FlutterUnit 也很快地迁移到了导航 2.0。...最后,感谢大家支持,FlutterUnit star 一直以稳定速度增加,目前已经达到 7K ,我也会一直维护下去,收录更过有趣实用内容,让大家体验 Flutter 更多魅力。

    29210

    对于 Flutter 快速开发框架思考

    要打造一个Flutter快速开发框架,首先要思考事情是一个快速开发框架需要照顾到哪些功能点,经过2天思考,我大致整理了一下需要能力: 状态管理:很明显全局状态管理是不可或缺,这个在前端领域上,...网络请求管理:这个是标配了,对外窗口,一般来讲做选型上需要注意可以支持请求拦截,支持响应拦截,以及错误处理机制,方便做重试等等。...国际化支持语言开发,现在App一般都还是挺注重这块,而且最好是立项时候就考虑进来,为后续出海做准备,因为这个越到后面,处理起来工作量越大。...国际化和本地化:flutter_localization 库名: flutter_localization 描述: Flutter官方提供国际化和本地化支持。...选择理由: 官方支持,集成简单,覆盖多种语言。 8.

    53231

    编程语言 IDE 支持

    或许是出自于对编写编程语言兴趣,又或许是对于创建 IDE/编辑器兴趣,对于『IDE/编辑器是如何提供编程语言支持』,我充满了兴趣。...对于一些开发人员而言,他/她们会配置上强大各种支持功能,以使它看上去像是一个 IDE。而后呢,它失去了快速启动能力,或者失去了一部分快速启动速度,这便是有些遗憾。...但是呢,yaml 和 json 是一个编程语言无关东西。所以,VS Code 和 Atom 可以基于 Textmate 语法规则,快速建立对于主流语言词法分析,从而建立了语法高亮支持。...我们也可以说 BNF 是一种编程语言无关东西。但是,实际上在我们操作时候,就会加入一些编程语言特定要素。...语言高级支持 在我们实现了开发工具词法分析接口之后,我们就能按不同 IDE/编辑器所定义接口,进行定制了。这是一个繁杂,而又充满挑战工作。对于不同工具来说,它们接口相关也甚多。

    2.4K31

    主题色切换+国际化 三连

    很多Flutter状态管理文章都是改计数器,搞得总感觉用了反而麻烦。搞太复杂例子,一篇文章又不现实。就拿主题色切换+国际化开刀吧。...{ I18nDelegate(); @override bool isSupported(Locale locale) { ///设置支持语言 return ['en',...---- 二、redux实现主题切换和国际化:flutter_redux: ^0.5.3 作为一个但数据源全局状态管理库,redux采取标准分封制。...思路是极为一致,让我们看看有哪些不同,首先要说是rudux三大件:状态State,行为Action和处理器Reducer。所有状态由仓库统一管理,天子状态AppState向下分封。 ?...---- 三、BLoC实现主题切换和国际化:flutter_bloc: ^0.22.1 如果是redux是中央集权,地方分权,那么BloC就是完全自由民主。

    3.4K20

    更好用excel国际化语言导出

    不知道大家在开发中有没有遇到过『excel导出』需求,反正我最近写了不少这种功能,刚开始利用poi,一行行手动塞数据,生成excel,而且还有国际化需求,比如:标题栏有一列,用户切换成"简体中文"时...exportObjects2Excel(list, Student2.class, true, "学生信息", true, BASE_PATH + "student2.xlsx"); 不过原作者并没有提供国际化语言功能...,于是顺着这个思路,略为修改了一下,再定义一个多语言注解: /** * 国际化标题注解 * * @author 菩提树下杨过 */ @Retention(RetentionPolicy.RUNTIME...|student"]) * * @return 国际化标题配置数组 */ String[] titles(); } 导出地方去判断有无这个注解就行(详细大家可以看源码..."姓名", order = 2) @I18nField(titles = {"en-us|name"}) private String name; ... } 导出时指定语言

    1.6K20

    两分钟带你快速掌握Flutter项目结构、资源、依赖和本地化

    在这篇文章中,将带着大家一起认识Flutter项目文件结构是怎样子?,在哪里归档图片资源以及如何处理不同分辨率?,如何归档strings资源,以及如何处理不同语言?...也就是我们通常说国际化,以及如何添加Flutter项目所需依赖? 首先我们来学习Flutter项目文件结构是怎样子? 项目文件结构是怎样子?...默认情况下,Flutter支持美式英语字符串。如果你要支持其他语言,请引入 flutter_localizations 包。...这些代理包括了实际本地化值,并且 supportedLocales 定义了 App 支持哪些地区。...更多 Flutter国际化和本地化细节,请访问 internationalization guide ,里面有不使用 intl 包示例代码。

    1.8K10

    6种极大提升Flutter开发效率工具包

    [1] 强大日志软件包 在开发 Flutter 过程中打印日志是常用调试方式之一,但 Flutter 内置日志打印非常简单,下面介绍一个强大软件包:logger。...不止如此,它还有其他酷炫功能: 更改设备方向 动态系统配置:语言,暗模式,文本缩放比例 可自由调整分辨率和安全区域设备 保持应用程序状态 截图 device_preview 地址:https://pub.dev...pub 地址:https://pub.dev/packages/fvm [5] 国际化工具包 有人可能觉得我项目不需要国际化,只需要中文即可,但是我依然强烈建议你加入国际化,原因如下: 以后事情谁也说不准...,是否支持国际化是老板一句话事。...增加国际化并不会增加你工作量,其他国家语言可以先不翻译,直接空着即可。 Intl 插件可以帮我们快速完成国际化。 ?

    1.3K30
    领券