Zuoy——让多语言配置不再繁琐

简介: 还在为繁琐的多语言配置而苦恼吗?一款基于Node的多语言配置辅助工具——Zuoy来了

前言

当用react开发多语言项目时,我通常使用react-intl做多语言配置。比如在下面一段代码中我想用简体中文英文葡文三种语言显示你好

importReactfrom'react';

import { useIntl } from'react-intl';

constApp= () => {

   constintl=useIntl();

   return<div>{intl.formatMessage({ id: 'NI_HAO' })}div>

}

exportdefaultApp;

然后我还需要在项目的locales目录下,创建zh-CN.jsonen-US.jsonpt-PT.json三个语言包文件,分别配置三种语言的内容:

zh-CN.json

{

   "NI_HAO": "你好"

}

en-US.json

{

   "NI_HAO": "Hello"

}

pt-PT.json

{

   "NI_HAO": "Olá"

}

显然这个过程非常费时。一旦你删除了页面代码或者产品要求修改文案时,你需要花费更多的时间来清理json文件中的配置(当然也可以不清理,只要你项目中可以接受这些无用的冗余内容)。

现在有了Zuoy,你将从繁琐的多语言配置中解放出来。

Zuoy是什么

Zuoy 是一个基于 node 的快速配置多语言的命令行工具,它能帮你管理多语言配置与文件。

安装

npm install zuoy --global# or `npm i zuoy -g` for short

创建一条多语言数据

zy 我是中文

在文件根目录下执行此命令,Zuoy会在 src/locales 目录下的zh-CN.json文件(没有则会自动创建)中添加"bd1575706566f5d66abc9ad71d82c48f": "我是中文"

生成的 key 值是一套 md5 算法计算的,当然你也可以通过配置文件来修改 key 值生成的逻辑。

使用配置文件

上面的方式还不错,但是如果添加更多的选项,这种命令行的方式就显得麻烦了。

为此,我们可以创建配置文件来囊括所需的选项。配置文件由 JavaScript 写成,比 CLI 更加灵活。

在项目中创建一个名为 zuoy.config.js 的文件,增加如下代码:

// zuoy.config.js

exportdefault {

 // 设置本地语言,用于程序识别当前输入的语言

 localLanguage: 'zh',

 // 需要启动机器自动翻译的语言

 translate: {

   languageCodes: ['en'],

   appId: 'xxxxx', // 你的百度翻译appId

   key: 'xxxxx', // 你的百度翻译密钥

 },

 // 输出的多语言文件,code是语言代码,file是输出文件相对于根目录的路径,

 languages: [

   {

     code: 'zh',

     file: 'src/locales/zh-CN.json',

   },

   {

     code: 'en',

     file: 'src/locales/en-US.json',

   },

   {

     code: 'pt',

     file: 'src/locales/pt-PT.json',

   },

 ],

 // 未启用翻译的其他语言默认填入的内容

 defaultContent: value=> {

   return'placeholder_'+value;

 },

};

再次执行zy 我是中文, Zuoy会在 src/locales 目录下操作文件:

  • zh-CN.json文件中添加"bd1575706566f5d66abc9ad71d82c48f": "我是中文"(输入的我是中文被识别为localLanguage指定的语言并直接填入)
  • en-US.json文件中添加"bd1575706566f5d66abc9ad71d82c48f": "I'm Chinese"(因为对en启动了机器自动翻译)
  • pt-PT.json文件中添加"bd1575706566f5d66abc9ad71d82c48f": "placeholder_我是中文"(因为没有对pt启动机器自动翻译)。

注意 Zuoy 处理配置文件可以使用 export default 语法,但代码不会经过 Babel 等类似工具编译,所以只能使用所用 Node.js 版本支持的 ES2015 语法。

Z 函数

Z 函数用来帮助 Zuoy 记录你需要添加的文案,你可以自定义实现 Z 函数,Zuoy不会关注内部实现,只需要函数名符合即可。如果你使用react-intl,且无特殊需求,我更推荐你使用官方 Z 函数zuoy-react-intl

Zuoy通过分析 AST 抽象语法树来识别 Z 函数并收集文案,因此 Z 函数是一个在全局范围内独一无二的函数,请不要命名函数名称与 Z 函数相同,但功能不一样的函数。

回到文件开头的代码,稍作修改:

importReactfrom'react';

importZfrom'zuoy-react-intl'

constApp= () => {

   constintl=useIntl();

   return<div>

       <div>{Z('你好')}div>

       <div>{Z('欢迎使用Zuoy')}div>

   div>

}

exportdefaultApp;

命令行执行zy build,zuoy会从代码中收集你好欢迎使用Zuoy,并依据上文中zuoy.config.js自动生成zh-CN.jsonen-US.jsonpt-PT.json文件。

通过Z函数,你不必再手动配置json文件,只需要专心编写页面代码即可。

展望

在撰写本文时,Zuoy v1.0的各项功能还在内测中,尚未发布,它对于在Zuoy v0.x时期暴露出的一系列问题做了修复,并给出新的解决方案,让多语言配置和管理更简洁。

Zuoy将会在今年春节前开源到gitee,届时所有的讨论和交流也将迁移到gitee平台,目前已预先发布中文文档(当然仅是一个功能参考,不是最新的,最终内容还在讨论中)。

不久之后,Zuoy也会接入多语言翻译(当前版本仅支持百度翻译引擎),和excel导出与导入。至此,Zuoy v1.x也将完成使命,我们将会根据这个时期收到的issues规划Zuoy v2.x的内容。

结语

感谢阅读至此的朋友们!Zuoy给出了一个简化多语言配置的方案,但不代表这是Zuoy的终点,我相信在今后的实践中,Zuoy能得到更大的发展和应用。

相关文章
|
自然语言处理 算法 前端开发
Multi-Agent实践第5期:RAG智能体的应用:让AgentScope介绍一下自己吧
本期文章,我们将向大家展示如何使用AgentScope中构建和使用具有RAG功能的智能体,创造AgentScope助手群,为大家解答和AgentScope相关的问题。
|
机器学习/深度学习 数据采集 人工智能
【AI在金融科技中的应用】详细介绍人工智能在金融分析、风险管理、智能投顾等方面的最新应用和发展趋势
人工智能(AI)在金融领域的应用日益广泛,对金融分析、风险管理和智能投顾等方面产生了深远影响。以下是这些领域的最新应用和发展趋势的详细介绍
1480 1
|
存储 SQL 关系型数据库
关系型数据库常见的问题
这些问题并不是关系型数据库的固有缺陷,而是在使用和管理大型、复杂的数据库系统时可能面临的挑战。通过适当的规划、设计、管理和优化,可以最大限度地减少这些问题的影响。
287 2
|
11月前
|
IDE Java 应用服务中间件
Java“NoSuchFieldError”解决
“NoSuchFieldError”是Java中常见的运行时错误,通常由于访问不存在的类字段引起。解决方法包括:检查字段拼写、确保类路径正确、更新依赖库版本等。
1439 4
|
存储
STM32--ADC模数转换
STM32--ADC模数转换
351 0
|
监控 Shell 测试技术
一篇文章讲明白MonkeyAPP压力稳定性测试
一篇文章讲明白MonkeyAPP压力稳定性测试
994 1
|
Web App开发 算法 PyTorch
vLLM部署Yuan2.0:高吞吐、更便捷
vLLM是UC Berkeley开源的大语言模型高速推理框架,其内存管理核心——PagedAttention、内置的加速算法如Continues Batching等,一方面可以提升Yuan2.0模型推理部署时的内存使用效率,另一方面可以大幅提升在实时应用场景下Yuan2.0的吞吐量。
|
前端开发 JavaScript Java
JavaFX学习笔记(二) 关键特性与基本概念
JavaFX学习笔记(二) 关键特性与基本概念
|
存储 JSON 分布式计算
一体化大数据智能计算平台 ODPS 产品年度发布
阿里云ODPS全新升级,存储、调度、元数据一体化融合 ,从 Processing 升级为 Platform,即 Open Data Platform and Service。本次峰会,同步发布了新的产品能力,即MaxCompute 引擎新功能发布及Hologres 引擎新功能发布。
一体化大数据智能计算平台 ODPS 产品年度发布
|
存储 运维 小程序
微信小程序云开发 初学者入门教程一
微信小程序云开发 初学者入门教程一
369 0