i18n-auto-transformer
一款能够让你的中文项目一键完成 i18n 国际化功能改造的命令行工具,支持多次增量提取、缓存、语言包补全。执行一次命令即可让任意 App 支持国际化,丝滑开发。
功能
安装
npm i -D i18n-auto-transformer
使用步骤
-
执行 npx i18n run
,本工具将自动完成提取中文、翻译语言、生成 i18n
函数、生成语言 JSON
文件、将代码中的中文替换为 i18n
函数调用等全部任务
-
检查翻译后的 JSON
文件,校验翻译准确性、调整大小写、空格,检查生成的代码正确性
-
提交修改,完成项目国际化
命令介绍
i18n run
核心命令,一键完成国际化提取、翻译、替换。
开发流程:
- 接到新需求
- 使用中文开发功能
- 提交功能 commit
- 执行
i18n run
命令,会自动将所有中文提取出来,并替换成国际化函数 - 检查页面是否符合预期
- 提交国际化 commit
- 完成需求
- 回到步骤 1
i18n translate
将 zhCN.json
语言包文件中的内容增量翻译到其它语言包中。
常见的使用场景:
- 翻译过程中部分内容翻译超时,会导致
en.json
等国际化文件中的值为中文,删掉这些对应的中文键值后,执行 i18n translate
能够重新翻译这些部分。 - 后续开发中手动在
zhCN.json
文件添加了一些键值,需要同步到其它语言包中
i18n init
生成初始化自定义配置文件 i18n.config.js
,支持各种自定义配置
i18n help
帮助命令,可以在界面中显示各个命令的解释,例如
$ npx i18n help
一款能够让你的中文项目一键完成 i18n 国际化功能改造的命令行工具,支持多次增量提取、缓存、英文补全,丝滑开发。
VERSION
i18n-auto-transformer/0.0.0 win32-x64 node-v14.19.3
USAGE
$ i18n [COMMAND]
TOPICS
plugins List installed plugins.
COMMANDS
help Display help for i18n.
init 初始化配置文件
plugins List installed plugins.
run 核心命令,一键完成国际化提取、翻译、替换。
translate 将 zhCN.json 文件中的内容增量翻译到其它国际化文件中。
$ npx i18n help run
核心命令,一键完成国际化提取、翻译、替换。
USAGE
$ i18n run
DESCRIPTION
核心命令,一键完成国际化提取、翻译、替换。
开发流程:
1. 接到新需求
2. 使用中文开发功能
3. 提交功能 commit
4. 执行 i18n run 命令,会自动将所有中文提取出来,并替换成国际化函数
5. 检查页面是否符合预期
6. 提交国际化 commit
7. 完成需求
8. 回到步骤 1
配置项
interface I18nConfigs {
codeDir?: string
i18nDir?: string
i18nFn?: string
i18nFrom?: string
locales?: string[]
ignore?: GlobOptions['ignore']
skipCache?: boolean
cacheDir?: string
prettierParser?: PrettierOptions['parser']
prettierPath?: string
prettier?: Omit<PrettierOptions, 'parser'> | false
}
效果示例
转换前
import React, { useReducer } from 'react'
const ignored = '忽略提取的中文'
export default function Example() {
const [time, addTime] = useReducer((a: number) => a + 1, 0)
return (
<div>
<button onClick={addTime}>按钮</button>
<p title="点击次数">{`已点击 ${time} 次`}</p>
</div>
)
}
转换后
import i18n from 'i18n'
import React, { useReducer } from 'react'
const ignored = '忽略提取的中文'
export default function Example() {
const [time, addTime] = useReducer((a: number) => a + 1, 0)
return (
<div>
<button onClick={addTime}>{i18n('按钮')}</button>
<p title={i18n('点击次数')}>{`${i18n('已点击 ')}${time}${i18n(
' 次'
)}`}</p>
</div>
)
}
常见问题
- 翻译超时,生成的语言包里依然是中文字符
本工具使用了 Google 翻译,因此需要先保证能够使用外网。若是 Clash for Windows
,可以开启 TUN Mode
实现全局代理
路径:General
- Service Mode
- Manage
安装插件, 安装完成后打开 TUN mode
开关
若是部分翻译超时,可以删除语言包中翻译失败的部分,或者直接删除语言包文件,执行 i18n translate
命令,便能基于中文 zhCN.json
文件进行重新翻译生成
- 如何忽略翻译代码中的部分中文
支持通过注释来忽略,跟 eslint-ignore
类似
// i18n-disable-file
将忽略整个文件的中文翻译
export const a = '啊啊'
export const b = '问问'
// i18n-disable-next-line
将忽略下一行的中文
export const c = '萨达是'
// i18n-disable-line
将忽略本行的中文
export const d = '啥第四十'
/* i18n-disable */
将忽略两个注释中间的所有中文,若只有一个注释,则会忽略当前行直至文件结束的所有中文
export const e = '爱仕达'
export const f = '撒旦'