Flutter 多语言自动化本地化生成器

news2024/12/31 6:30:58

Flutter 多语言自动化本地化生成器

这是一个为Flutter设计的插件,通过从Excel表格提取的CSV文件自动生成Dart本地化文件,以简化应用程序本地化的流程。这个工具通过自动化创建多语言资源文件,简化了开发人员和翻译人员的工作流程。

特点

  • 默认支持英文。
  • 可轻松切换到简体中文及其他语言。
  • 从CSV生成Dart本地化文件。
  • 支持多种语言,非常适合大型国际应用。
  • 减少了手动复制粘贴的需要和可能的人为错误。
  • 不干扰Excel中翻译人员的工作流程。

安装

要使用这个插件,请在您的pubspec.yaml文件中将auto_locale_generator添加为开发依赖项。

dev_dependencies:
  auto_locale_generator: ^0.0.1

使用方法

  1. 在Flutter项目的assets目录下创建一个locale文件夹。
  2. 下载提供的Excel翻译模板,并确保不更改格式。在language.xlsx中添加翻译。可以参考example中的例子
  3. 将Excel文件导出为CSV文件,修改文件名为language.csv,下载完后打开检查看看有无多余标点和行数,并将其放在locale目录中。可以参考example
  4. lib目录下创建一个res文件夹。
  5. 执行以下命令,在res目录中生成Dart本地化文件。输入输出目录可以自己更改,本例中的输入目录’./assets/locale/language.csv’ 输出目录’lib/res/’
  6. 本例子第一版本目前支持英文,简体中文,繁体中文,可自己克隆增加其他语言

执行如下命令

flutter pub run auto_locale_generator -i ./assets/locale/language.csv -o lib/res/ -r

执行命令后,您将在res目录下找到为每种语言生成的Dart文件。

使用教程截图

1 下载提供的Excel翻译模板,并补全翻译后下载Excel保存为.csv文件
在这里插入图片描述

2 assets下创建locale文件,把并language.csv放在这里
在这里插入图片描述
3 在lib下新增res文件夹
在这里插入图片描述
4 dev_dependencies 记住是在dev_dependencies下,不是dependencies下,

dev_dependencies:
 auto_locale_generator: ^0.0.1

执行

flutter pub get

执行,这里输入输出路径可以自行更改

flutter pub run auto_locale_generator -i ./assets/locale/language.csv -o lib/res/ -r

5 这时候看到res下生成了三种多语言
在这里插入图片描述

string.dart 表示多语言Key
在这里插入图片描述
string.zh.dart 表示中文
在这里插入图片描述
注:本例子第一版本目前支持英文,简体中文,繁体中文,没有自动化解析csv的列,可自己克隆增加其他语言
命令也可以放在shell中,项目根目录创建shell 文件夹,新建intl.sh
在这里插入图片描述
intl.sh里面放如下代码

#!/bin/bash

echo "开始生成多语言文件"
cd ..
flutter pub run auto_locale_generator -i ./assets/locale/language.csv -o lib/res/ -r


运行

cd shell
执行 ./intl.sh

将来新增或者修改多语言在Excel里操作就行,粘贴过来自动脚本生成dart,无需无脑复制

##多语言使用
我这里用的是Getx举例,你也可以用原生多语言方法

///使用Get配置语言环境
///使用Get.updateLocale(locale);即可更新
class TranslationsMessage extends Translations {
  
  Map<String, Map<String, String>> get keys => {
        'zh_CN': localizedValueZH,
        'zh_HK': localizedValueZHHK,
        'zh_TW': localizedValueZHTW,
        'en_US': localizedValueEN,
      };
}

使用时ID.stringDiscover.tr即可

 
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: baseAppBar(title: ID.stringDiscover.tr, hideLeading: true),
        body: const BodyWidget());
  }

贡献

欢迎贡献!提交任何pull请求之前,请先阅读贡献指南。

许可证

该项目根据MIT许可证授权 - 详情见LICENSE文件。

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

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

相关文章

MQTT.fx实现(MQTT Client)连接物联网平台(ThingsCloud )

目录 概述 1 ThingsCloud平台介绍 2 ThingsCloud创建项目 2.1 创建项目 2.2 创建数据类型 2.3 创建设备类型 3 发布和订阅主题 3.1 发布Topic 3.2 订阅主题Topic 4 使用MQTT.fx 测试ThingsClond 4.1 使用MQTT.fx连接ThingsClond 4.2 MQTT.fx 订阅ThingsCloud Messag…

Unity资源热更新----AssetBundle

13.1 资源热更新——AssetBundle1-1_哔哩哔哩_bilibili Resources 性能消耗较大 Resources文件夹大小不能超过2个G 获取AssetBundle中的资源 打包流程 选择图片后点击 创建文件夹&#xff0c;Editor优先编译 打包文件夹位置 using UnityEditor; using UnityEngine; public cla…

探索编程新纪元:Code GeeX、Copilot与通义灵码的智能辅助之旅

在人工智能技术日新月异的今天&#xff0c;编程领域的革新也正以前所未有的速度推进。新一代的编程辅助工具&#xff0c;如Code GeeX、Copilot和通义灵码&#xff0c;正在重塑开发者的工作流程&#xff0c;提升编程效率&#xff0c;并推动编程教育的普及。本文将深入探讨这三款…

已解决Keil报错unknown type name “u8“或/u16/u32

出现问题如下所示&#xff0c;提示错误unknown type name “u8“ 解决方法&#xff1a; 在头文件中加入如下即可解决 typedef uint8_t u8; 这个错误通常表示编译器无法识别“u8”这个类型名。在C/C中&#xff0c;通常使用“uint8_t”来表示8位无符号整数类型。如果代码中…

django-q轻量级定时任务制定

django-q ,celery&#xff0c;apschedule都可以作为python的选型&#xff0c;但是django-q更轻量级&#xff0c;可以定制想要的任务&#xff0c;通过消息中间件&#xff0c;来实现不太高并发的实现 官网介绍地址 django-q官网地址 本次测试的是python3.12版本 首先需要安装dja…

ELK日志管理实现的3种常见方法

ELK日志管理实现的3种常见方法 1. 日志收集方法 1.1 使用DaemonSet方式日志收集 通过将node节点的/var/log/pods目录挂载给以DaemonSet方式部署的logstash来读取容器日志,并将日志吐给kafka并分布写入Zookeeper数据库.再使用logstash将Zookeeper中的数据写入ES,并通过kibana…

C语言函数—递归

这方面内容涉及到栈的使用&#xff0c;我们的递归函数如果被执行那么系统将会自动的去创建一个栈&#xff0c;相关内容有机会单独写文章讲解 什么是递归&#xff1f; 程序调用自身的编程技巧称为递归&#xff08; recursion&#xff09;。 递归做为一种算法在程序设计语言中广泛…

基于单片机的恒压供水控制器设计

摘 要 随着我国现代化的进程不断加快&#xff0c;城市居民生活水平不断提高&#xff0c;随之而来的是房屋的翻新和重建&#xff0c;但建筑层数的不断增高&#xff0c;使得供水所需压力不断提高&#xff0c;若建筑设计时对压力判断不足&#xff0c;会导致供水时无法供应到高楼层…

643.子数组最大平均数

题目&#xff1a;给你一个由 n 个元素组成的整数数组 nums 和一个整数k。 找出平均数最大且长度为 k 的连续子数组&#xff0c;并输出该最大平均数。 任何误差小于10^-5 的答案都将被视为正确答案。 解题思路&#xff1a;规定了子数组的长度为k&#xff0c;因此可以通过寻找子…

新冠疫情仍处流行期,防疫不松懈

2024年2月北京市法定传染病疫情概况已公布&#xff0c;全市共报告了21种法定传染病&#xff0c;累计病例数达到88971例&#xff0c;不幸有12人因疾病离世。这些病例主要集中在病毒性肝炎、肺结核、百日咳、梅毒、新型冠状病毒感染、流行性感冒以及其他感染性腹泻病等。 值得一提…

概率论与数理统计(随机事件与概率)

1随机事件与概率 1.1随机事件及其运算规律 1.1.1运算 交换律结合律分配律德摩根律 1.2概率的定义及其确定方法 1.2.1概率的统计定义 频率 设在 n 次试验中&#xff0c;事件 A 发生了(A)次&#xff0c;则称为事件 A 发生的频率。 1.2.2概率的统计定义 在一组恒定不变的条…

Mybatis(搭建,CRUD,方法参数,XML映射文件,动态SQL)【详解】

目录 一.准备基础代码 Mybatis的通用配置 二. 基本CURD操作 1.查询-根据id查询一条 2.查询-查询数量 3.删除 4.新增 获取主键值 5.修改 6.查询-模糊查询 预编译SQL #{}与${}的区别【面试题】 三. Mybatis的方法参数与结果集 1.SQL里取方法参数的值 2.查询结果集…

react native常用插件

react-native-async-storage/async-storage 说明&#xff1a;AsyncStorage 是一个在 react-native 中轻量存储的库&#xff1b;跟 localStorage 类似&#xff0c;API 也几乎一样&#xff1b;存储的时候需要将存储内容转成字符串存储。 react-navigation/material-bottom-tabs …

Ubuntu Flask 运行 gunicorn+Nginx 部署

linux Ubuntu 下运行python 程序出现killed 原因&#xff1a;CPU或内存限制&#xff1a;在华为云上&#xff0c;你可能有CPU或内存使用的限制。例如&#xff0c;如果你使用的是一个固定大小的实例&#xff0c;那么超过该实例的CPU或内存限制可能会导致进程被杀死。 参考&am…

Gateway网关在url参数带有特殊字符的情况下转发失败(响应400)

本文主要分享了&#xff0c;SpringCloud Gateway网关在url参数带有空格或者特殊字符的情况下&#xff0c;转发失败导致响应错误码400的解决方案。 响应400错误码的2种场景&#xff1a; 1.参数带空格&#xff0c;Gateway会误认为该空格是切割符&#xff0c;如?phone 135****6…

基于单片机的公交车IC卡操作系统的设计

目 录 摘 要 III Abstract IV 前 言 1 第一章 绪论 2 1.1 设计的背景和意义 2 1.2 设计的现状和发展 2 1.3 设计的目的与意义 2 第二章 总体设计 4 2.1 总体方案的设计与实现 4 2.1.1 主要设计的内容 4 2.1.2 系统的总体设计 4 2.2 系统方案论证 5 2.2.1 单片机的选择 6 2.2.2…

Java基于微信小程序的电影推荐系统的实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

机器学习 Python库 乱记录

MLFlow—模型实验和跟踪 MLflow是一个平台&#xff0c;帮助你从头到尾管理你的机器学习实验&#xff0c;确保可追溯性和可重复性。它提供了一个集中的存储库&#xff0c;用于存储你的代码、数据和模型工件&#xff0c;以及一个跟踪系统&#xff0c;记录你所有的实验&#xff0c…

【Node.js从基础到高级运用】十一、构建RESTful API

在本篇博客中&#xff0c;我们将综合之前讨论的内容&#xff0c;深入探索如何使用Node.js构建一个RESTful API。我们将重点讨论设计合理的API端点&#xff0c;展示如何通过代码实现这些端点&#xff0c;并指导如何使用Postman测试我们的API&#xff0c;确保其按预期工作。 前提…

Python-sklearn-diabetes项目实战

目录 1 下载数据集和预处理 1.1 加载/下载数据集 1.2 数据可视化 1.3 数据清洗 1.4 特征工程 1.5 构建特征集和标签集 1.6 拆分训练集和测试集 2 训练模型 2.1 选择算法和确定模型 2.2 训练拟合模型 3 评估并优化模型性能 本文以糖尿病数据集diabetes为基础进行线性…