Alpha
Lingo.dev Compiler 目前处于 alpha 阶段,功能尚不稳定,不建议用于生产环境,且 API 可能会在版本迭代之间发生变化。
Lingo.dev Compiler 提供了一组开发工具,让你无需调用外部 API,也能快速迭代多语言 UI。借助这些工具,你可以验证所有文本是否都可翻译、测试不同文本长度下的布局表现,并在开发过程中排查翻译问题。
Pseudotranslator#
pseudotranslator 会通过为源文本加上可视化标记,即时生成伪翻译。无需 API 密钥,不发起任何网络请求,结果立刻可见。
在编译器配置中启用它:
{
dev: {
usePseudotranslator: true,
},
}生成结果#
| 源文本 | 伪翻译 |
|---|---|
Welcome | [!!! Welcome !!!] |
Sign in to your account | [!!! Sign in to your account !!!] |
Items: {count} | [!!! Items: {count} !!!] |
这些标记([!!! ... !!!])能让已翻译文本在视觉上明显区别于未翻译文本。如果在启用 pseudotranslator 后,你仍在 UI 中看到原始英文,说明这部分文本没有经过编译器处理。
适用场景#
找出未翻译的字符串
启用 pseudotranslator 后运行应用。任何显示时没有 [!!! ... !!!] 标记的文本,都说明编译器未检测到它。这种情况通常出现在文本被存放在 JSX 外部的变量中,或组件位于 sourceRoot 目录之外时。
用更长文本测试布局
伪翻译通常会比源文本更长(因为包含标记字符)。这能模拟德语、法语等通常比英语长 20-30% 的语言,从而尽早暴露布局溢出问题。
验证插值是否正确
像 {count} 和 {name} 这样的占位符,应该出现在伪翻译标记内部。如果占位符出现在标记外部,或根本没有出现,说明编译器可能没有正确保留它。
pseudotranslator 走的是与真实翻译提供方相同的翻译流程——会经过同样的 AST 分析和代码注入步骤。唯一的区别在于生成翻译这一步:它会用标记替代 LLM 调用。
翻译服务器#
在开发过程中,编译器会运行一个本地翻译服务器,用于处理按需发起的翻译请求。当你运行 npm run dev 时,服务器会自动启动。
工作方式#
翻译服务器会监听本地端口,并处理来自开发构建流程的翻译请求。一旦检测到新增或变更的字符串,编译器就会将其发送到服务器,再由服务器路由到你配置的翻译提供方(或 pseudotranslator)。
端口配置#
服务器会在可配置的端口范围内自动查找可用端口:
{
dev: {
translationServerStartPort: 60000,
},
}| 选项 | 默认值 | 说明 |
|---|---|---|
translationServerStartPort | 60000 | 起始端口号。服务器会按顺序依次尝试端口(60000、60001、...、60099),直到找到可用端口。 |
translationServerUrl | 自动检测 | 完全覆盖服务器 URL。适合用于连接远程翻译服务器或自定义代理。 |
如果 60000-60099 范围内的所有端口都已被占用,服务器将无法启动。关于如何解决端口冲突,请参见 Troubleshooting。
开发小组件(即将推出)#
这是一个浏览器内的翻译编辑器,让你在浏览应用的同时,实时查看和编辑翻译。该小组件会覆盖在你的 UI 之上,并展示每个文本元素的翻译详情。
计划功能包括:
- 点击任意文本元素,查看其源文本、翻译和元数据
- 直接在浏览器中编辑翻译
- 修改会立即保存到
.lingo/metadata.json - 无需刷新即可切换语言区域
状态
开发小组件仍在开发中,暂未开放。请关注 changelog 获取发布更新。
推荐开发配置#
想获得最快的开发体验,建议将 pseudotranslator 与默认翻译服务器配置搭配使用:
{
dev: {
usePseudotranslator: true,
translationServerStartPort: 60000,
},
}当你准备预览真实翻译时,关闭 pseudotranslator 并重启开发服务器:
{
dev: {
usePseudotranslator: false,
},
}随后,编译器会通过你配置的 translation provider,为新增或变更的字符串生成真实翻译。
