第七十一回:国际化设置

这篇具有很好参考价值的文章主要介绍了第七十一回:国际化设置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们在上一章回中介绍了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中使用语言包中的内容,主要是自定义语言包中的内容;

看官们,关于"国际化设置"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!文章来源地址https://www.toymoban.com/news/detail-506267.html

到了这里,关于第七十一回:国际化设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++国际化编程

    字节(octet)是一个八位的存储单元,取值范围一定是0~255。而字符(character,或者word)为语言意义上的符号,范围就不一定了。例如在UCS-2中定义的字符范围为0~65535,它的一个字符占用两个字节。 字符0xabcd如果存储为 AB CD,则称为Big Endian;如果存储为 CD AB,则称为Litt

    2024年02月10日
    浏览(76)
  • SpringBoot复习:(36)国际化

    一、Resources目录下建立一个目录(比如international)来存储资源文件 message.properties 空的,但不能没有 message_zh_CN.properties message_en_us.properties 二、自动配置类MessageSourceAutoConfiguration 常量MESSAGE_SOURCE_BEAN_NAME为messageSource,也就是有这个名字的bean,则自动配置失效。 因为有@Conditional(R

    2024年02月13日
    浏览(53)
  • 微信小程序国际化

    参考文件: 国际化(微信小程序+TS 微信小程序国际化 https://github.com/wechat-miniprogram/miniprogram-i18n 注意:一定要注意项目目录结构,新建文件夹miniprogram,并把前面新建的文件移到这个目录中 在NEW-FAN-CLOCK1 中安装根目录依赖 在NEW-FAN-CLOCK1 / minprogram 中安装依赖 1、初始化仓库: 一

    2023年04月26日
    浏览(45)
  • springcloud微服务国际化

    单体应用完成国际化还是比较简单的,可以看下面的示例代码。 引入必要的依赖 创建一个拦截器 创建一个配置类 然后在 resource 下创建 i18n 目录,选中右键 New = Resource Bundle 填入 base name ,选择 Project locales ,再 Add All ,确定即可。 打开配置文件,填写对应的中英文数据 配置

    2023年04月09日
    浏览(149)
  • vue2+element-ui使用vue-i18n进行国际化的多语言/国际化

    注意:vue2.0要用8版本的,使用9版本的会报错 在src目录下,创建新的文件夹,命名为i18n zh.js en.js index.js main.js 使用方式一 效果图 使用方式二 效果图 使用方式三,在 效果图 ` 注意:这种方式存在更新this.$i18n.locale的值时无法自动切换的问题,需要刷新页面才能切换语言。解

    2024年02月07日
    浏览(72)
  • Spring Boot实现国际化

    config controller 在Thymeleaf模板中引用国际化消息:

    2024年01月23日
    浏览(46)
  • 如何优雅的实现前端国际化?

    JavaScript 中每个常见问题都有许多成熟的解决方案。当然,国际化 (i18n) 也不例外,有很多成熟的 JavaScript i18n 库可供选择,下面就来分享一些热门的前端国际化库! i18next 是一个用 JavaScript 编写的全面的国际化框架,提供标准的 i18n 功能,包括复数、上下文、插值、格式等。

    2024年01月23日
    浏览(60)
  • Spring MVC(三) 国际化

    随着全球化的加速发展,Web应用的多语言支持变得越来越重要。对于开发者来说,如何实现应用的国际化成为了一个不可忽视的问题。作为Java Web开发的重要框架,Spring MVC在处理国际化方面有着丰富的功能和灵活的解决方案。本文将探讨Spring MVC的国际化部分内容,并通过自己

    2024年01月18日
    浏览(48)
  • Android国际化各国语言简写

    2024年02月16日
    浏览(45)
  • Flutter GetX 之 国际化

    今天给大家介绍一下 GetX 的国际化功能,在日常开发过程中,我们经常会使用到国际化功能,需要们的应用支持 国际化,例如我们需要支持 简体、繁体、英文等等。 上几篇文章介绍了GetX的 路由管理 和 状态管理,看到大家的点赞和收藏,还是很开心的,说明这两篇文章给大

    2024年01月19日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包