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月前
|
机器学习/深度学习 存储 人工智能
构建坚不可摧的系统安全防线:策略、实践与未来展望
系统安全是维护社会稳定、保障企业运营和个人隐私的重要基石。构建坚不可摧的系统安全防线需要从多个维度出发制定全面的安全策略并付诸实践。未来随着技术的不断进步和应用场景的不断拓展,系统安全将面临更多的挑战和机遇。只有不断创新和完善安全技术和策略才能应对日益复杂的安全威胁和挑战确保系统的安全和稳定运行。
|
5月前
|
程序员 容器 内存技术
经验大分享:TweenMax参数用法中文介绍
经验大分享:TweenMax参数用法中文介绍
106 0
|
11月前
|
缓存 搜索推荐 算法
Java排序实战:如何高效实现电商产品排序
在当今的数字化时代,电子商务已成为人们日常生活的重要组成部分。消费者可以在电商平台上浏览和购买来自全球的商品,这无疑为我们的生活带来了极大的便利。然而,随着电商平台的规模不断扩大,商品数量的急剧增加,如何对海量商品进行高效排序成为了电商系统开发的一大挑战。
|
11月前
|
Linux 数据安全/隐私保护 Windows
jupyterlab安装及简单配置
jupyterlab安装及简单配置
132 1
|
存储 移动开发 JavaScript
|
11月前
|
人工智能 自然语言处理 Java
程序员指南|学会与大模型相处,提升个人开发效率
过去一年,通过各种平台我们可以轻而易举的接收到人们关于使用大模型遇到诸多问题的声音。然而,显而易见的是,大模型可以在许多方面提高我们的效率,尤其是在处理文档、测试用例和代码等繁琐事务方面。
|
关系型数据库 Shell 数据库
docker 启动一个postgresql 服务
docker 启动一个postgresql 服务
283 0
|
JSON 自然语言处理 前端开发
Zuoy——让多语言配置不再繁琐
还在为繁琐的多语言配置而苦恼吗?一款基于Node的多语言配置辅助工具——Zuoy来了
1319 0
|
JavaScript iOS开发
Vue适配PC+大屏,手机+ipad适配
Vue适配PC+大屏,手机+ipad适配
1403 0
Vue适配PC+大屏,手机+ipad适配
|
机器学习/深度学习 搜索推荐 算法
多任务学习模型之ESMM介绍与实现
本文介绍的是阿里巴巴团队发表在 SIGIR’2018 的论文《Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate》。文章基于 Multi-Task Learning (MTL) 的思路,提出一种名为ESMM的CVR预估模型,有效解决了真实场景中CVR预估面临的数据稀疏以及样本选择偏差这两个关键问题。后续还会陆续介绍MMoE,PLE,DBMTL等多任务学习模型。
4707 1