伪翻译工具
发布前测试 i18n UI。无需等待真实译文,即可生成用于布局、编码和双向渲染压力测试的伪译文。
问题
您的 UI 在英语下看起来完美无缺。德语加入后,字符串长 40%,所有按钮都被撑破,表格请求头也被截断。阿拉伯语会翻转整个布局,让图标指向错误方向。日语需要不同的行高,精心安排间距的卡片随之崩塌。而您在付费翻译后才发现这一切。
翻译后再修复 i18n 布局缺陷,平均成本是在开发期间发现问题的 5-10 倍。伪翻译可以免费发现这些问题,赶在您为真实译文投入一分钱之前。
解决方案
i18n-pseudo 无需等待真实译员,即可生成用于 UI 压力测试的伪译文。它在保留 ICU 占位符、复数语法和插值变量的同时,应用重音、中日韩字符、文本扩展、RTL 标记等 7 种转换策略。
安装
i18n-pseudo 可作为 npm 包或 Homebrew formula 获取,也可通过 Cargo 从源代码构建。
Terminal
npm install -g @i18n-agent/i18n-pseudonpm 包包含全局 CLI 二进制文件,无需运行时依赖。
7 种转换策略
每种策略都针对一类特定的 i18n 缺陷。可使用标志单独应用,也可通过预设组合。
| Strategy | Flag | Input | Output |
|---|---|---|---|
| Accents | --accents | Hello | Ĥéľľó |
| CJK | --cjk | Hello | 你好世界你好 |
| Special Chars | --special | Hello | Hello |
| Expansion | --expansion N | Save | Save~~~~ |
| Brackets | --brackets | Hello | [Hello] |
| RTL | --rtl | Hello | Hello |
| Unicode Stress | --unicode-stress | Hello | H́ȩl̈l̀õ |
重音是检测硬编码字符串最常用的策略。如果 UI 中某字符串没有重音符号,就说明它从未经过翻译函数。
预设
预设会为常见测试场景组合多种策略。使用 --preset 一次应用一组策略。
| Preset | Strategies | Use Case |
|---|---|---|
default | accents + brackets | Quick visual check that all strings are externalized |
layout | expansion (1.4x) + brackets | Catch truncation and overflow before real translations |
charset | CJK + special + brackets | Test font rendering and character encoding |
rtl | RTL markers + brackets | Verify bidirectional layout without switching locale |
full | All strategies combined | Maximum stress test — everything at once |
用法示例
对源语言文件运行 i18n-pseudo。它会读取 JSON、YAML、PO 等 i18n 格式,应用所选策略并写入转换后的输出。
Terminal
# Default (accents + brackets)
i18n-pseudo en.json -o output/
# Layout testing (text expansion + brackets)
i18n-pseudo en.json --preset layout -o output/
# Specific strategies
i18n-pseudo en.json --accents --expansion 1.5 -o output/
# Kitchen sink
i18n-pseudo en.json --preset full -o output/转换前后
以下展示默认预设(重音加方括号)对普通翻译文件的效果。可以看到,ICU 复数语法和插值占位符均得到精确保留。
Before & After
// Input (en.json):
{
"greeting": "Hello, {name}!",
"save": "Save",
"items": "{count, plural, one {# item} other {# items}}"
}
// Output (default preset — accents + brackets):
{
"greeting": "[Ĥéľľó, {name}!]",
"save": "[Šáṽé]",
"items": "[{count, plural, one {# íťéɱ} other {# íťéɱš}}]"
}{name}、{count} 等占位符和 ICU 复数表达式绝不会被修改。只转换可翻译文本区段,因此应用可使用伪翻译文件正确渲染。
CI 集成
将伪翻译添加到 CI 管线,自动发现 i18n 回归。生成伪翻译文件,再对它们运行视觉回归测试。
CI Pipeline
# Generate pseudo-translations and run visual regression
i18n-pseudo locales/en.json --preset layout -o locales/pseudo/
NEXT_PUBLIC_LOCALE=pseudo npx playwright test --project=visual将布局预设与 Playwright 或 Chromatic 视觉回归测试结合使用。文本扩展到 1.4 倍时,任何溢出或截断的组件都会导致视觉差异测试失败。
立即试用 i18n Agent
将翻译文件拖放到此处
JSON, YAML, PO, XML, CSV, Markdown, Properties
或点击选择文件
目标语言
无需注册即时估价