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

目录
打赏
0
0
0
0
12
分享
相关文章
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
275 48
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【MYSQL高级】Mysql找出执行慢的SQL【慢查询日志使用与分析】
【MYSQL高级】Mysql找出执行慢的SQL【慢查询日志使用与分析】
2415 0
Dify: 一款宝藏大模型开发平台: 部署及基础使用
Dify 是一款开源的大语言模型(LLM)应用开发平台,融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使非技术人员也能参与 AI 应用的定义和数据运营。计算巢提供了 Dify 的快速部署解决方案,包括单机版和高可用版,支持通过 Docker Compose 和阿里云 ACK 部署,适用于开发测试和生产环境。用户可以通过配置 API、WebApp 脚手架等轻松集成 Dify 到业务中,极大简化了大语言模型应用的开发流程。
大数据-66 Kafka 高级特性 分区Partition 副本因子Replication Factor replicas动态修改 线上动态修改副本数
大数据-66 Kafka 高级特性 分区Partition 副本因子Replication Factor replicas动态修改 线上动态修改副本数
173 1
构建坚不可摧的系统安全防线:策略、实践与未来展望
系统安全是维护社会稳定、保障企业运营和个人隐私的重要基石。构建坚不可摧的系统安全防线需要从多个维度出发制定全面的安全策略并付诸实践。未来随着技术的不断进步和应用场景的不断拓展,系统安全将面临更多的挑战和机遇。只有不断创新和完善安全技术和策略才能应对日益复杂的安全威胁和挑战确保系统的安全和稳定运行。
免费PDF转换和编辑工具 PDFgear 2.1.4
PDFgear是跨平台的PDF阅读与转换利器,支持Windows、MacOS和Linux。它提供多种阅读模式和丰富功能,如注释、签名、表单填写,可在不同设备上轻松编辑和转换PDF。软件界面简洁,操作直观,处理文件快速稳定,支持多种格式互转。
221 7
免费PDF转换和编辑工具 PDFgear 2.1.4
经验大分享:TweenMax参数用法中文介绍
经验大分享:TweenMax参数用法中文介绍
182 0
方便、免费的PDF在线处理网站汇总:PDF合并、文字编辑、页面提取与删除、格式转换…
方便、免费的PDF在线处理网站汇总:PDF合并、文字编辑、页面提取与删除、格式转换…
274 1