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

相关文章
|
4月前
|
机器学习/深度学习 存储 人工智能
构建坚不可摧的系统安全防线:策略、实践与未来展望
系统安全是维护社会稳定、保障企业运营和个人隐私的重要基石。构建坚不可摧的系统安全防线需要从多个维度出发制定全面的安全策略并付诸实践。未来随着技术的不断进步和应用场景的不断拓展,系统安全将面临更多的挑战和机遇。只有不断创新和完善安全技术和策略才能应对日益复杂的安全威胁和挑战确保系统的安全和稳定运行。
|
6月前
|
Linux iOS开发 MacOS
免费PDF转换和编辑工具 PDFgear 2.1.4
PDFgear是跨平台的PDF阅读与转换利器,支持Windows、MacOS和Linux。它提供多种阅读模式和丰富功能,如注释、签名、表单填写,可在不同设备上轻松编辑和转换PDF。软件界面简洁,操作直观,处理文件快速稳定,支持多种格式互转。
162 7
免费PDF转换和编辑工具 PDFgear 2.1.4
|
6月前
|
存储 JavaScript 容器
面试官:请你说一说vuex的五个属性,分别是什么,区别和用途说一下(一)
面试官:请你说一说vuex的五个属性,分别是什么,区别和用途说一下
面试官:请你说一说vuex的五个属性,分别是什么,区别和用途说一下(一)
|
5月前
|
程序员 容器 内存技术
经验大分享:TweenMax参数用法中文介绍
经验大分享:TweenMax参数用法中文介绍
120 0
|
6月前
|
搜索推荐 定位技术 数据安全/隐私保护
方便、免费的PDF在线处理网站汇总:PDF合并、文字编辑、页面提取与删除、格式转换…
方便、免费的PDF在线处理网站汇总:PDF合并、文字编辑、页面提取与删除、格式转换…
146 1
|
6月前
|
存储 Linux Shell
linux系统的环境变量-搞清环境变量到底是什么
引例 在linux系统中,我们使用ls命令,直接在命令行中输入ls。即可列出当前目录内容。我们可以在/usr/bin/目录下找到ls的可执行文件。如下图:
92 1
|
搜索推荐 数据安全/隐私保护 开发者
几个免费PDF处理网站:文件合并、PDF编辑、格式转换…
本文介绍几个方便、免费、好用的PDF在线处理、编辑网站~
313 1
几个免费PDF处理网站:文件合并、PDF编辑、格式转换…
|
存储 Java
JUC基础(二)—— Future接口 及其实现
JUC基础(二)—— Future接口 及其实现
168 1
|
JavaScript 开发者 C++
【Vue】day02-Vue基础入门(一)
【Vue】day02-Vue基础入门
60 0
|
JavaScript 前端开发 API
egret-pro编辑器分析
egret-pro编辑器分析
240 0