用 Node.js 编写的简单的自动 i18n 文本替换程序
用 Node 编写的小工具,自动在React项目文件引入i18n(react-i18next),用正则匹配替换存在的文本
Start安装依赖
$ npm install
or
$ yarn
Usage
在EXCEL编辑好翻译文本,生成数组格式的文本,具体格式见目录 ./mapping 下的文件
[
["test","测试文本","test text"],
["testAttr","测试属性","test attrs"]
]
数组第一项为最终替换的变量,第二项为原始的中文文本,第三项为英文文本
可以使用在线工具生成 :
EXCEL 转 JSON 工具
复制EXCEL文本选择转换成数组
用命令行运行根目录下的 formatJson.py 可生成 i18n 使用的有命名空间的 JSON 文件(需安装Python环境),具体的格式可以自行运行生成查看
py formatJson.py
配置在 Options.js 中
export default {
mappingPath:'./mapping',//映射的文本目录
rootPath:'',//指定项目根目录 在命令行带 -u 参数时有效
distPath:'',//设置输出路径
defaultDistPath:'./output/',//默认输出路径,在distPath为空时使用
includesFiles:['.jsx','tsx','js','ts'],//要替换的文件格式,参数之外的文件直接复制不作替换修改
}
命令行参数
-i
--input 的缩写
输入的源文件路径,可以为文件也可以为文件夹 文件夹则递归遍历所有子文件
-c
--cover 的缩写
默认:false,是否覆盖源文件,false则输出到指定的目录
-u
--useRootPath 的缩写
默认:false,是否指定项目,带上-u选项输入目录=rootPath+sourcePath
-m (必需)
--mapping 的缩写
mappingPath 目录下的映射的文本文件名,不用带.txt后缀 ,同时使用多个的时候用逗号隔开
如:-m mapping1,mapping2
使用多个文件时有先后优先级
example:mapping1.txt
[
["test","测试文本","mapping1 test text"],
]
mapping2.txt
[
["test","测试文本","mapping2 test text"],
]
mapping1在前面会优先把 "测试文本" 替换成 "mapping1 test text"
Example(使用默认配置)src/Test.tsx
import React from 'react'
interface ISaveProps {
saveState: string,
onSave?: () => void,
}
const Save: React.FC<ISaveProps> = (props) => {
return (
<div testAttr='测试属性'>
测试文本
</div>
)
}
export default Save
执行
Node main.js -i Test.tsx -m test
输出
output/src/Test.tsx
import i18n from 'i18next'
import React from 'react'
interface ISaveProps {
saveState: string,
onSave?: () => void,
}
const Save: React.FC<ISaveProps> = (props) => {
return (
<div testAttr={i18n.t('test.testAttr')}>
{i18n.t('test.test')}
</div>
)
}
export default Save
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。