Zuoy 1.0来了

简介: Zuoy 是一个基于 node 的快速配置多语言并翻译的工具。

Zuoy 是一个基于 node 的快速配置多语言并翻译的工具。

前景回顾

在之前的文章中,我给出了Zuoy v1.x版本的大纲和内容。v1.x版本实现多语言的自动化配置、导入导出excel、接入百度翻译引擎的功能。计划分三次发布:

v1.0.x

v1.0完成多语言自动化配置,同期发布基于react-intluseIntl实现的useZuoyIntl,便于在react项目中使用Zuoy的Z函数用法。

v1.0发布之前已发布zuoy-key,这是Zuoy默认的语言key值算法,便于自定义实现其他Z函数。

v1.1.x

v1.1将实现导入导出excel功能,便于人工翻译介入。

v.1.2.x

v1.2完成接入百度翻译引擎的功能,可以启动机器翻译功能。

v1.3+

v1.x是否还有后续版本,将根据用户提出的功能要求而定。

zuoy 1.0来了

Zuoy v0.x时期的用户较少,大多数用户也许并不清楚如何使用Zuoy。从zuoy v1.0开始,我会同步更新使用文档

截至本文发布,zuoy已发布v1.0.1版本,你可以通过npm i-g zuoy安装zuoy的最新版本。

如何在react项目中使用

如果你从零开始一个新的react项目,我推荐你使用Z函数来管理文本。

以umi项目为例,有如下目录结构

image-20220101100125089.png

在根目录下执行zy init,zuoy会为你添加默认的配置文件zuoy.config.js

image-20220101100309119.png

我的项目打算提供简体中文、英文、葡文三种语言,简体中文为输入的默认语言,修改配置文件的languages如下:

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来给英文和葡文加上语言代码前缀。

defaultContent: (value, code) => {
return`${code}-${value}`;
}

我们需要对build进行配置。在上述的umi项目中,页面开发使用typescript,我们需要扫描.tsx文件,同时.umi文件夹是umi临时文件,不需要扫描。因此增加如下配置:

// build配置build: {
include: [/\.tsx/],
exclude: [/\.umi/],
}

在页面文件index.tsx写出如下代码:

import { useState, useEffect } from'react';
import { Select } from'antd';
import { useZuoyIntl } from'zuoy-hooks';
import { setLocale } from'umi';
exportdefaultfunctionIndexPage() {
const [lang, setLang] =useState('zh-CN');
constz=useZuoyIntl();
useEffect(() => {
setLocale(lang, false);
  }, [lang]);
return (
<divstyle={{ margin: 24 }}><Selectvalue={lang}
onChange={(val) =>setLang(val)}
options={[
          { label: '简体中文', value: 'zh-CN' },
          { label: '英文', value: 'en-US' },
          { label: '葡文', value: 'pt-PT' },
        ]}
/><br/>      {z('你好, {name}', { name: 'zuoy' })}
<br/>      {z('世界和平')}
</div>  );
}

Z函数使用useZuoyIntlzuoy-hooks npm),执行zy build,zuoy会扫描项目根目录下的.tsx文件并过滤掉.umi文件夹中的内容。

image-20220102100653078.png

src/locales下,创建三个文件:

// zh-CN.json{
"fd40ff1c0cb81cffc6b09cd0562276c9": "你好, {name}",
"b38b2399fe918912deb8dd452db6f776": "世界和平"}
// en-US.json{
"fd40ff1c0cb81cffc6b09cd0562276c9": "en-你好, {name}",
"b38b2399fe918912deb8dd452db6f776": "en-世界和平"}
// pt-PT.json{
"fd40ff1c0cb81cffc6b09cd0562276c9": "pt-你好, {name}",
"b38b2399fe918912deb8dd452db6f776": "pt-世界和平"}

启动项目,页面如下:

image-20220102161452880.png

切换语言,发现并没有语言变化。

考虑到开发时多语言的展示并非是时刻必要的,只需要在完成一个里程碑时进行zy build一次。因此在开发环境下,useZuoyIntl并没有开启多语言功能。

你可以给useZuoyIntl传递一个环境变量参数prod

constz=useZuoyIntl('prod');

再次尝试切换语言:

image-20220102161336330.png

多语言切换成功!

后话

目前Zuoy已在gitee上开源,社区讨论也迁移到gitee下issues。如果你有多语言的需求,可以选择zuoy作为多语言管理方案。

文档地址 http://ttf-zuoy.gitee.io/zuoy-docs

源码地址 https://gitee.com/ttf-zuoy/zuoy.git

相关文章
Autojs4.1.0实战教程---抖音极速版自动评论
Autojs4.1.0实战教程---抖音极速版自动评论
519 1
|
9月前
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
511 48
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
抖音评论插件,全自动评论脚本留言,点赞关注私信autojs
脚本提供了完整的抖音自动化操作功能,包括随机滑动视频、点赞、关注、评论和私信。代码中包
抖音评论脚本,全自动评论留言插件,autojs工具开发
自动评论系统包含主脚本、配置文件和说明文档。主脚本实现了完整的自动浏览和评论功能,
|
10月前
|
人工智能 自然语言处理 算法
为什么感觉欧美AI比我们强?
本文介绍了电视机、电脑、手机、原子弹和飞机等重要发明的起源,其中大部分发明均源自美国。文中还探讨了中美在AI领域的竞争,指出美国在创新方面领先,而中国则在规模化生产和应用方面表现出色。尽管存在差距,但中国在算力、算法、数据和人才等方面持续加大投入,逐渐缩小与美国的差距。
254 0
为什么感觉欧美AI比我们强?
|
12月前
|
存储 安全 Java
|
消息中间件 JSON 大数据
大数据-66 Kafka 高级特性 分区Partition 副本因子Replication Factor replicas动态修改 线上动态修改副本数
大数据-66 Kafka 高级特性 分区Partition 副本因子Replication Factor replicas动态修改 线上动态修改副本数
313 1
|
机器学习/深度学习 数据采集 算法
Python实现WOA智能鲸鱼优化算法优化支持向量机分类模型(SVC算法)项目实战
Python实现WOA智能鲸鱼优化算法优化支持向量机分类模型(SVC算法)项目实战
|
机器学习/深度学习 数据采集 算法
Python使用随机森林模型进行电影评分预测
Python使用随机森林模型进行电影评分预测
1852 1
Python使用随机森林模型进行电影评分预测
|
人工智能 自然语言处理 算法