第二百六十九回

文章目录

  • 概念介绍
  • 设置方法
  • 示例代码
  • 内容总结

我们在上一章回中介绍了Card Widget相关的内容,本章回中将介绍国际化设置.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

概念介绍

我们在这里说的国际化设置是指在App设置相关操作,这样可以让不同国家的用户使用App时呈现不同的语言。总之,就是通过相关的操作,让App支持多个国家的语言。

设置方法

对多国语言的设置是通过MaterialApp组件完成的,该组件提供了相关的属性来控制App支持的语言,这些属性如下:

  • locale属性:用来控制当前App中使用的语言,如果不设置默认是手机系统语言;
  • localizationsDelegates属性:用来存放App支持的多国语言包,如果不设置默认只有en-US一种语言包;
  • supportedLocales属性:用来控制App支持的语言种类;
    这三个属性中,常用的是最后两个属性,而且如果想让App实现国际化时,这两个属性必须要设置。第一个属性通常不设置,也就是让App使用当前手机系统中设置的语言,
    不过我们可以通过它手动设置App的语言,这样在程序中调试其它语言时不需要切换手机系统中的语言,直接在App中调试就可以。

示例代码

return MaterialApp(
  //locale属性可以手动指定当前app使用的语言和地区,如果不指定,默认为跟随系统语言
  // locale: Locale('zh','CN'),
  locale: Locale('es'),
  localizationsDelegates: [
    //添加自己定义的多语言文字
    AppLocalizations.delegate,
    //添加这三个delegate后界面上的文字就会自动适配手机当前的语言
    //这三个库包含系统自带组件中使用的文字,比如日期组件中的年月日
    GlobalMaterialLocalizations.delegate,
    GlobalWidgetsLocalizations.delegate,
    GlobalCupertinoLocalizations.delegate,
  ],
  //添加多国语言和语言对应的地区,IOS的版本在info.plist中添加
  supportedLocales: [
    Locale('en',"US"),
    Locale('zh',"CN"),
    Locale('es'),
  ],
);

上面的示例代码是在MaterialApp组件中进行的,我们只列出了核心代码,其它代码省略了,大家可以到Github上main.dart文件中查看完整的代码。我们对代码中
的相关内容做一些解释,以方便大家了解国际化相关的内容;

  • locale属性的类型是Locale,可以使用两个参数或一个参数的构造方法来创建该类的对象,第一个参数表示语言的代码(languageCode),第二个参数表示语言所
    在地区的代码(countryCode),比如zh有CN,HK,TW三种地区代码,CN就是我们常见的简体中文,另外两个地区使用的是繁体中文;
  • localizationsDelegates属性是List类型,我们可以在里面添加多种语言包,示例代码中的第一个语言包是我们自定义的语言包,剩下的三个语言包是系统
    自带的语言包,通常在App中必须添加这三个语言包,如果我们的App中使用了系统组件中的文字,那么就会使用这三个包中的内容。如果不添加系统提供的包,程序编译
    时可以通过,但是到运行时找不到包中的内容就会出现异常。常见的是日期和时间组件中的"年月日"和"时分秒"这些文字。
  • 使用系统提供的语言包时需要添加这些包的依赖:在pubspec.yaml文件中添加以下内容:
    dependencies:
    #添加国际化相关内容,添加完后IDE会在窗口上方自动弹出flutter命令,选择pub get就可以添加依赖
    #或者是在终端中执行flutter命令,该依赖主要更新了Dart_Packages.xml文件中的内容
    flutter_localizations:
    sdk: flutter
  • 自定义语言包的内容就是我们自己在App中添加的文字,关于创建自定义的语言包的内容在后面章回中介绍;
  • 我们可以使用代码来验证,App支持的语言和地区,以及App当前的语言,代码如下:
//获取App当前的语言设置
Locale _locale = Localizations.localeOf(context);
Text("language code: ${_locale.languageCode}"),
Text("country code: ${_locale.countryCode}"),
//显示App支持的所有语言
Text("local all: ${_locale.toString()}"),
//使用自定义语言包中的文字:helloWorld
Text("test localization: ${AppLocalizations.of(context)!.helloWorld}"),

内容总结

上面小节的内容比较零散,我们将总结一下如何给App设置国际化相关的内容,以便让大家更好地理解国际化相关的内容:

  1. 在yaml配置文件添加系统语言包的依赖;
  2. 在MaterialApp中设置App包含的语言包和支持语言;
  3. 在App中使用语言包中的内容,主要是自定义语言包中的内容;
    看官们,关于"国际化设置"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!
    IOS需要专门添加:打开xcode,info.plis,右键add row,在弹出窗口中选择Locationxxx,输入后会自动匹配。然后在该项目中再添加行,选择es,ch国家语言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/328404.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SAP PI之Rest adapter

一,简介 REST风格接口是以http为传输协议,以xml或json或text为有效负载。下图展示了REST到XI再返回的一个过程,一个REST接口包含的信息有:服务URL、URL中带的参数、http方法(post/get/put等)、http头部、body部分的有效载荷。而X…

2023年全球软件质量效能大会(QECon北京站):核心内容与学习收获(附大会核心PPT下载)

此次大会的主题为“智能时代的质量新篇章”。来自全球的软件质量与效能专家、企业领袖、技术研发人员等齐聚一堂,共同探讨软件质量与效能的新理念、新技术、新实践。 一、大会的核心内容 1、智能时代软件质量的新挑战与机遇 随着人工智能、大数据等技术的快速发展…

react、Vue打包直接运行index.html不空白方法

react vue 在根目录下创建 vue.config.js 文件,写入 module.exports {publicPath: ./, }

【SpringCloud】这一次终于使用MQ解决了Eureka服务下线延迟感知问题

前言 其实,“通过Redis手动更新Ribbon缓存来解决Eureka微服务架构中服务下线感知的问题”是一种解,但不是最优解 1.痛点 上一篇文章的标题是: 通过Redis手动更新Ribbon缓存来解决Eureka微服务架构中服务下线感知的问题 当时在文章的末尾就…

matlab 直道转向时方向盘最小转角算法

1、内容简介 略 33-可以交流、咨询、答疑 2、内容说明 汽车主动转向,直道转向时方向盘最小转角算法,一个m脚本和simulink的计算结果 略 3、仿真分析 略 4、参考论文 汽车主动转向关键技术研究

黑马程序员_多线程

基础知识 什么是线程 被包含在进程之中, 可以调度的最小单位应用软件中互相独立,可以同时运行的功能 什么是进程 程序的基本执行实体 总结: 什么是多线程? 有了多线程,可以让程序同时做多件事情 多线程有什么作用&…

DC电源模块在新能源领域的应用前景

BOSHIDA DC电源模块在新能源领域的应用前景 DC电源模块在新能源领域有着广阔的应用前景。随着可再生能源技术的发展和普及,如太阳能和风能等的应用逐渐增多,DC电源模块在这些领域的应用越来越重要。 首先,DC电源模块可以用于太阳能发电系统…

车载音频EMI的产生及典型音频功放AW836XX的解决方案

之前针对 eCall的文章中有提到D类音频功放需要关注EMI问题(点击文章回看《车载eCall系统音频应用解决方案》),在此展开此问题并寻求解决方案。 1. EMI定义与分类 电磁干扰(Electromagnetic Interference,EMI&#xff…

geemap学习笔记049:下载Landsat数据时遇到的一个问题

前言 最近在下载Landsat 8 地面反射率数据(Surface Reflectance)时,遇到了一个问题,无论是使用geemap.ee_export_image_to_drive() 函数还是geemap.download_ee_image() 函数下载的数据,易康都打不开,显示…

【CSDN博客系列】自定义模块

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

还在为crontab表达式发愁吗,快使用这个工具

是不是每次要定义cron表达式的时候,都去百度翻找资料,cron表达式难写难记真是苦天下程序员久已。有没有什么不拥记的办法就轻松掌握呢?最近发现这个CrontabGuru神器,强烈推荐,真是广大程序员的福音了。 简介 Crontab…

电脑技巧:安装手机与Win10电脑怎样互传文件,看完你就会了

目录 一、Windows网络邻居功能 二、数据线传输 三、蓝牙连接 大家在日常工作当中,会遇到需要实现手机和Win10电脑之间的文件传输,今天小编给大家推荐使用Win10系统自带的网络邻居功能来实现手机与电脑之间数据的传输,希望对大家日常办公提…

喜讯!无垠智能模糊测试系统入选“2023软件供应链优秀成果”

近日,中国信通院信息通信软件供应链安全社区正式公布了“2023软件供应链优秀成果”,其中,云起无垠的无垠智能模糊测试系统凭借其自主研发的创新成果,成功入选该名单。 图 获奖成果 自发起以来,软件供应链优秀成果案例…

html画动态桃心

html画动态桃心 效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetwindows-1252"><title></title><style>* {padding: 0;margin…

从uptime看linux平均负载

从前遇到系统卡顿只会top。。top看不出来怎么搞呢&#xff1f; Linux系统提供了丰富的命令行工具&#xff0c;以帮助用户和系统管理员监控和分析系统性能。在这些工具中&#xff0c;uptime、mpstat和pidstat是非常有用的命令&#xff0c;它们可以帮助你理解系统的平均负载以及资…

电子行业除镍树脂深度出水0.02ppm

项目名称 电子行业贴片电容废水除镍项目 工艺选择 两级串联运行 工艺原理 亚氨基二乙酸和重金属离子通过螯合作用形成稳定的配位键&#xff0c;实现选择性吸附重金属 项目背景 贴片电容&#xff0c;也被称为多层片式陶瓷电容器&#xff08;MLCC&#xff09;&#xff0c;…

SQL Server Management Studio创建数据表

文章目录 一、建表注意事项1.1 数据类型1.2 建立数据表的基本SQL语法 二、实例说明2.1 创建数据表2.2 实例2 三、标识列和主键示例&#xff1a; 一、建表注意事项 1.1 数据类型 可以看这个去了解数据类型&#xff1a; 1.2 建立数据表的基本SQL语法 建立数据表的基本 SQL 语…

UDS诊断(ISO14229-1) 36服务

文章目录 功能简介应用场景请求和响应1、请求2、子功能3、肯定响应4、否定响应 NRC 判断优先级顺序报文示例1、下载数据到服务器 UDS中常用 NRC 功能简介 36服务&#xff0c;即 TransferData&#xff08;传输数据&#xff09;服务&#xff0c;客户端利用 TransferData&#xf…

十、Qt 操作PDF文件

《一、QT的前世今生》 《二、QT下载、安装及问题解决(windows系统)》《三、Qt Creator使用》 ​​​ 《四、Qt 的第一个demo-CSDN博客》 《五、带登录窗体的demo》 《六、新建窗体时&#xff0c;几种窗体的区别》 《七、Qt 信号和槽》 《八、Qt C 毕业设计》 《九、Qt …

数学建模.皮尔逊相关系数

一.前言 皮尔逊相关系数说白了就是一次函数中的斜率k&#xff0c;反应两个变量之间的关系&#xff0c;与斜率不同的地方在于其数值在1和-1之间&#xff0c;越接近于1&#xff0c;则说明两个变量之间是完全正向的线性关系&#xff1b;越接近于-1&#xff0c;说明两个变量之间是完…
最新文章