当前位置: 首页 > news >正文

第二百六十九回

文章目录

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

我们在上一章回中介绍了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国家语言。

相关文章:

  • 【vsan数据恢复】vsan逻辑架构出现故障的数据恢复案例
  • Springboot中时间格式化
  • 【linux 多线程并发】多线程的控制,挂起线程暂停运行,直到唤醒线程,取消线程运行,可以设置合适的取消点属性避免不安全点被中止
  • 趋势与观点 | 2024年全球最值得关注的十大网络安全态势
  • C++三剑客之std::variant(二):深入剖析
  • SpringBoot新手入门完整教程和项目示例
  • el-dialog嵌套使用,只显示遮罩层的问题
  • 【设计模式-3.3】结构型——享元模式
  • 面向企业的 ChatGPT 究极手册:第三章到第四章
  • WebGL中开发AR应用
  • mybatis----小细节
  • rust跟我学七:获取外网IP地址
  • 【话题】边缘计算的挑战和机遇
  • Windows 项目从0到1的部署
  • 软件工程:黑盒测试等价分类法相关知识和多实例分析
  • 11111111
  • Angular6错误 Service: No provider for Renderer2
  • Hexo+码云+git快速搭建免费的静态Blog
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Koa2 之文件上传下载
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Nodejs和JavaWeb协助开发
  • SegmentFault 2015 Top Rank
  • Spring框架之我见(三)——IOC、AOP
  • SQLServer之创建显式事务
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 记录一下第一次使用npm
  • 利用DataURL技术在网页上显示图片
  • 如何编写一个可升级的智能合约
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 06-01 点餐小程序前台界面搭建
  • 《码出高效》学习笔记与书中错误记录
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • linux 淘宝开源监控工具tsar
  • #include<初见C语言之指针(5)>
  • #mysql 8.0 踩坑日记
  • #WEB前端(HTML属性)
  • %@ page import=%的用法
  • (二)正点原子I.MX6ULL u-boot移植
  • (九)One-Wire总线-DS18B20
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (转)ObjectiveC 深浅拷贝学习
  • (转)winform之ListView
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .Net IE10 _doPostBack 未定义
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .net的socket示例
  • @Import注解详解
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [acm算法学习] 后缀数组SA
  • [Angular 基础] - 数据绑定(databinding)
  • [Angular] 笔记 20:NgContent
  • [autojs]逍遥模拟器和vscode对接