【Dart 教程系列第 50 篇】在 Flutter 项目的国际化多语言中,如何根据翻译提供的多语言文档表格,快速生成不同语言的内容

ops/2024/10/18 9:18:08/

这是【Dart 教程系列第 50 篇】,如果觉得有用的话,欢迎关注专栏。

博文当前所用 Flutter SDK:3.22.1、Dart SDK:3.4.1

文章目录

      • 一:问题描述
      • 二:解决方案
      • 三:完整代码

一:问题描述

在 Flutter 项目中做过多语言的会知道,一门语言对应着一个 dart 文件,如下图所示,从上到下分别代表着英语、俄语、简体中文、繁体中文。

在这里插入图片描述

不同语言中对应语言对象的 key 是一样的,value 就是自己语言的值,如下图英语语言所示

在这里插入图片描述

如下图简体中文语言所示

在这里插入图片描述

假设目前多语言只有这 4 个,后来新增了两个语言字段,这个时候你在每个语言各复制了两条内容,然后再从多语言表格中一一对应着 dart多语言文件中的 key 开始复制粘贴,很快你就完成了,这似乎没有什么问题。

但此时如果新增了 100 个呢?总不能还继续复制、粘贴的操作吧,而且这只是有 4 门语言的情况,如果有 10 门或者更多的语言,那工作量更是成倍的增加了,显然这是不可取的方法。

当出现大量重复的操作时,此时让程序去做无疑是最合适的(所以说懒惰使人进步,哈哈)

二:解决方案

假设现在我们只有简体中文、繁体中文、英语、俄语 4 门语言,

第一步:

首先把翻译给的多语言表格整理成如下图表格所示的内容。

在这里插入图片描述

为方便显示,这里我只列举出了 4 个。

第一行是标题,将会对应着后文语言对象列表 List<Map<String, String>> languages 中 map 对象的 key。

第二步:

复制表格中有内容的部分(不是全表格复制)到一个可以 Excel 转 Json 的网站,如下图所示

在这里插入图片描述

第三步:

复制转换后的 Json 内容到下文的 languages 列表中,如下图所示

在这里插入图片描述

下面定义一个语言类型的枚举,方便处理数据和显示,如下图所示

在这里插入图片描述

第四步:

接着写一个方法,通过循环为语言对象列表进行赋值即可,如下图所示

在这里插入图片描述

执行此方法后的控制台输出结果如下图所示

在这里插入图片描述

可以看到控制台上输出了不同的语言内容。后面如果翻译再增加内容,你也只需要把翻译提供的表格内容复制到你整理好格式的表格中,执行第一步到第四步,然后替换对应的整个语言文件即可。

当然,你也可以自己进行 IO 操作,直接把生成的内容生成新的语言文件,覆盖指定路径下的语言文件,有了前面的过程,你想怎么玩都可以。

三:完整代码

完整代码如下所示

import 'package:flutter/material.dart';// ------------------------------------------------------
// author:AllenSu
// date  :2024/9/8 17:45 
// usage :快速打印多语言
// ------------------------------------------------------void main() {// 在 main 方法中执行 _printLanguage_printLanguage();
}/// 这里替换为你自己的多语言
final List<Map<String, String>> languages = [{"key":"confirm_binding","zh":"确定绑定","tw":"確定綁定","en":"Confirm binding","ru":"Подтвердить привязку"},{"key":"close_page","zh":"关闭页面","tw":"關閉頁面","en":"Close page","ru":"Закрыть страницу"},{"key":"do_refresh","zh":"刷新","tw":"重新整理","en":"Refresh","ru":"Обновить"},{"key":"do_delete","zh":"删除","tw":"刪除","en":"Delete","ru":"Удалить"}
];void _printLanguage() {for (LanguageType type in LanguageType.values) {final String tip = '${type.code}  ${type.desc}';debugPrint("- - - - - - - - - - - - - - - - - - - - - $tip - - - - - - - - - - - - - - - - - - - - -");Map<String, String> result = {};languages.forEach((e) {result[e['key']!] = '${e[type.code]}';});result.forEach((key, value) {print('\'$key\' : \'$value\',');});}
}/// 语言类型
enum LanguageType {zh('zh', '简体中文'),tw('tw', '繁体中文'),en('en', '英语'),ru('ru', '俄语');/// 语言代码final String code;/// 语言名称描述final String desc;const LanguageType(this.code, this.desc);
}

ok,关于在 Flutter 项目的国际化多语言中,如何根据翻译提供的多语言文档表格,快速生成不同语言的内容便介绍到这里。

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。


结束语

技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。

最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。

http://www.ppmy.cn/ops/109754.html

相关文章

Python精选200Tips:131-135

Put the final touches on something 131 python-docx - 创建和修改文档的库基本功能主要类和方法示例132 NetworkX - 网络分析和图论工具示例1: 小世界网络示例2:社交网络分析示例3:交通网络分析133 Statsmodels - 统计建模和计量经济学示例1:线性回归的残差分析示例2:年龄、性…

组织应在其网络安全策略中考虑MLSecOps吗?

随着越来越多的组织拥抱人工智能 (AI) 和机器学习 (ML) 来优化操作并获得竞争优势&#xff0c;关于如何最好地保障这一强大技术的安全性的问题也日益受到关注。其中的核心是用于训练ML模型的数据&#xff0c;这对模型的行为和性能有着根本影响。因此&#xff0c;组织需要密切关…

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python&#xff1a;在计算机视觉领域广泛应用&#xff0c;有丰富的库如 OpenCV、TensorFlow、PyTorch 等&#xff0c;方便进行算法实现和模型开发。 C&#xff1a;运行效率高&#xff0c;适用于对性能要求严格的计算机视觉应用。 数据结构与算…

Linux:软硬连接和动静态库

一般ll一下&#xff0c;最左边一列就是文件类型&#xff1a; 怎么创建链接文件&#xff1a; ln -s 目标文件 创建的链接文件名 来试试&#xff1a;这叫软连接&#xff0c;软连接相当于Windows下的快捷方式&#xff0c;直接指向原文件的绝对路径&#xff1b;删除软连接不影响原…

PAT甲级-1012 The Best Rank

题目 题目大意 学生有C、M、E三个成绩&#xff0c;A是这三个成绩的平均值。要求对每个学生的C、M、E、A分别排名&#xff0c;取这4项的最高排名为最优排名。如果一个学生有多项排名一样&#xff0c;按照A > C > M > E的优先级输出最优排名。 输入给出学生人数和查询…

图论篇--代码随想录算法训练营第五十八天打卡|拓扑排序,dijkstra(朴素版)

拓扑排序 题目链接&#xff1a;117. 软件构建 题目描述&#xff1a; 某个大型软件项目的构建系统拥有 N 个文件&#xff0c;文件编号从 0 到 N - 1&#xff0c;在这些文件中&#xff0c;某些文件依赖于其他文件的内容&#xff0c;这意味着如果文件 A 依赖于文件 B&#xff0…

List集合特点,遍历方式,ArrayList(去重原理,增长因子论,LinkedList)

for (int i 0; i < list.size(); i) { System.out.println(list.get(i)); } foreach遍历&#xff0c;代码如下 // 使用foreach遍历 for (String s : list) { System.out.println(s); } 迭代器iterater遍历&#xff0c;代码如下 // 使用迭代器遍历&#xff08;和数…

如何阅读PyTorch文档及常见PyTorch错误

如何阅读PyTorch文档及常见PyTorch错误 文章目录 如何阅读PyTorch文档及常见PyTorch错误阅读PyTorch文档示例常见Pytorch错误Tensor在不同设备上维度不匹配cuda内存不足张量类型不匹配 参考 PyTorch文档查看https://pytorch.org/docs/stable/ torch.nn -> 定义神经网络 torc…