【国际化Intl】Flutter 国际化多语言实践

news2024/11/25 2:47:10

目标:实现flutter国际化

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

例如:

  • https://github.com/ThinkerWing/language
  • https://juejin.cn/post/6844903823119482888
    这篇也很详细,还有包括兼容中文的繁体简体… 可以看看

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);

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python函数进阶

一、函数多返回值 Q:如果一个函数内两个return,程序如何执行? A:只执行了第一个return,原因是因为return可以退出当前函数,导致return下方的代码不执行 但是如果一个函数需要有多个返回值,该如…

华为云数据库GaussDB(for Cassandra)揭秘:高性能低成本是什么样的体验?

在我们的日常理念中,追求性价比是最为常见的,但是你知道购买低配置还能享受高性能、低延时、超低价的数据库有哪些吗?今天我们就用数据说话,带你深入了解GaussDB(for Cassandra)挑战高性价比! 众所周知,有…

Android开发者们想想:到底是市场饱和?还是你们技术饱和?

根据我的不客观数据体验来看,最饱和的是iOS,同样发布一个职位iOS是其他技术岗位10倍的投递量。当然Android作为一个已经市场化将近十几年的技术门类,它必然早已经是成熟常态。这样的技术行业都不再会有爆炸式的增长。连同Android硬件、手机、…

Go学习之路:方法和接口(DAY 3)

文章目录前引方法和接口1.1、方法/声明方法1.2、方法/捆绑其他类型1.3、方法/方法常用指针传递1.4、方法/普通函数指针传递和方法指针传递区别2.1、接口/方法签名集合2.2、接口/接口断言2.3、接口/switch case练习题、接口/stringer实现字符串打印2.4、接口/错误前引 昨天终于算…

机器学习5数据归一化Feature Scaling

文章目录一、为什么要数据归一化?二、解决方案数据归一化,解决方案1:最值归一化normalization:解决方案2:均值方差归一化standardization;三、最值归一化处理normalization四、均值方差归一化Standardization一、为什么…

ICMP协议(3层网络层协议:IP、ARP、ICMP)

1、ICMP协议端口号? 没有端口号,向TCP/UDP这些都是没有端口号只有协议号,只有应用层才有端口号。 2、ICMP协议是干什么的? 网络探测与回馈机制 1)网络探测 2)路由跟踪,windows命令:…

ABP:内置logger and 第三方库serilog 之间的关系

今天在看项目的日志记录功能&#xff0c;比较疑惑为什么项目中有的地方使用 Logger< T > _logger 然后又在资源文件下看见日志的第三方库 Serilog 解答&#xff1a; ASP.NET Core Build-in Logging ASP.NET Core 提供了 Logging 的抽象接口, third party 都会依据抽象来…

DJ 12-3 程序控制指令

目录 1. 无条件转移指令 JMP &#xff08;1&#xff09;段内直接转移 &#xff08;2&#xff09;段内间接转移 &#xff08;3&#xff09;段间直接转移 &#xff08;4&#xff09;段间间接转移 2. 条件转移指令 3. 循环控制指令 &#xff08;1&#xff09;LOOP 指令 &…

R语言中不同类型的聚类方法比较

聚类方法用于识别从营销&#xff0c;生物医学和地理空间等领域收集的多变量数据集中的相似对象。我们围绕聚类技术进行一些咨询&#xff0c;帮助客户解决独特的业务问题。它们是不同类型的聚类方法&#xff0c;包括&#xff1a; 划分方法分层聚类模糊聚类基于密度的聚类基于模…

Qt Creator 的 Shadow build(影子构建)

目录 一、什么是影子构建 二、如何取消影子构建 一、什么是影子构建 做wpf项目时&#xff0c;项目里面会有bin文件夹&#xff0c;里面有debug和release文件夹&#xff0c;生成的exe就在debug或release里面&#xff0c;但第一次做qt时&#xff0c;发现项目文件夹里面只有源码文…

2022 JuiceFS 社区用户调研结果出炉

为了使 JuiceFS 的发展更贴合用户的真实需求&#xff0c;我们在三周前向社区发出了一份调研问卷。此次调研面向已经将 JuiceFS 应用于生产环境的用户&#xff0c;了解其在应用 JuiceFS 前和使用中的体验与评价。 参与此次调研的用户&#xff0c;大型企业占比最高&#xff0c;有…

李炎恢ECMAScript6 / ES6+(一)

01. ECMAScript6 简介和历史 学习要点&#xff1a; 1.ES6 简介 2.ECMAScript 历史 3.学习和创建 Demo 本节课我们来开始了解 ECMAScript6(简称 ES6)&#xff0c;着重了解它的标准和历史。 一&#xff0e;ES6 简介 ECMAScript6 简称 ES6&#xff0c;是 JavaScript 语言的下一…

Vue3项目引入 vue-quill 编辑器组件并封装使用

这是一款支持Vue3的富文本编辑器 GitHub地址&#xff1a;https://github.com/vueup/vue-quill/ VueQuill官网&#xff1a;https://vueup.github.io/vue-quill/ // 查看 vueup/vue-quill 版本 npm view vueup/vue-quill versions --json// 导入 vueup/vue-quill 依赖包 npm i v…

试编写算法(用C语言)打印值为x的结点的所有祖先,假设值为x的结点不多于一个。(递归实现和非递归实现)

&#xff08;一&#xff09;递归实现&#xff1a; 完整代码&#xff1a; #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std;#define MaxSize 100 typedef int ElemType; typedef struct BiNode {ElemType data;BiNode* lchil…

基于springboot摄影跟拍预定管理系统设计与实现的源码+文档

摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。…

最新版k8s 1.25版本安装

简介 Kubernetes&#xff08;k8s&#xff09;是自动化容器操作的开源平台。这些容器操作包括&#xff1a;部署、调度和节点集群间扩展。 具体功能&#xff1a; 自动化容器部署和复制。实时弹性收缩容器规模。容器编排成组&#xff0c;并提供容器间的负载均衡。 总而言之&…

PHP基于thinkphp的教材管理系统#毕业设计

教材是每个学生和学校都必须具备的教学资源之一,它是知识的载体,是学生汲取知识的土壤,好的教材可以做到事半功倍的效果。但是通常情况下教材都是批量进行购买和发放的,为了能够更好的对教材信息进行管理,我们通过PHP语言,thinkphp框架开发了本次的教材管理系统 教材管理系统,…

谷粒学苑_第十一天

要开始做前台部分(用户环境) 之前我们用的后台前端框架是vue-admin-template 这次的前台框架是用的NUXT 轮播图实现 显示课程和老师 redis缓存 NUXT 服务端渲染技术 解压guli_site 在这里我们使用的是成品,页面也基本写好 然后下载依赖: 开始运行: npm rum dev后面…

[附源码]Python计算机毕业设计Django高校车辆管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

力扣(LeetCode)123. 买卖股票的最佳时机 III(C++)

前后缀分解 维护前缀和数组&#xff0c;保存 111~iii 天&#xff0c;买卖一次的最大利润。维护后缀和数组&#xff0c;保存 iii~nnn 天买卖一次的最大利润。枚举所有分界点 iii &#xff0c;买卖两次的最大利润 iii 的前缀和 i\ i i 的后缀和 111~iii 天买卖一次的最大利润 i\…