格式感知翻译
yaku 会检测输入格式并调整翻译策略以保留结构。key、代码块、URL 及其他不可翻译的元素维持不变。
yaku 按以下顺序判断格式:
--format选项 — 明确覆盖:--format json-f的扩展名 —.md、.json、.yaml、.yml- 默认值 — 纯文本
| 扩展名 | 检测到的格式 |
|---|---|
.md、.markdown、.mdx | Markdown |
.json | JSON |
.yaml、.yml | YAML |
| 其他 | 文本 |
Markdown
Section titled “Markdown”yaku 将整份 Markdown 文档发送给 LLM,并附加额外规则以保留结构:
yaku --to zh-CN -f README.en.md -o README.zh-CN.md会翻译的内容:
- 段落文字
- 标题文字
- 列表项文字
- 链接显示文字(例如
[这部分](url)) - 引用块文字
维持不变的内容:
- 标题标记(
#、##、###) - 代码块(围栏式和缩进式)
- 行内代码(反引号)
- 链接 URL 和图片路径
- Front matter(
--- ... ---) - HTML 标签
- 列表和引用标记
- 文件路径、URL 和电子邮件地址
输入(README.en.md):
# Quick Start
Install the package:
```bashnpm install my-package```
See the [documentation](https://example.com) for more details.yaku --to zh-CN -f README.en.md输出:
# 快速开始
安装软件包:
```bashnpm install my-package```
详见[文档](https://example.com)。注意:标题标记、代码块和 URL 都被保留了,只有正文被翻译。
yaku 提取所有字符串值,批量翻译,再以原始结构重新组装 JSON:
yaku --to zh-CN -f en.json -o zh-CN.json会翻译的内容:
- 字符串值
维持不变的内容:
- 所有 key
- 数字、布尔值、null
- 嵌套结构
- 数组顺序
输入(en.json):
{ "nav": { "home": "Home", "about": "About Us", "contact": "Contact" }, "hero": { "title": "Build something great", "subtitle": "The fastest way to ship your product", "cta": "Get Started" }, "footer": { "copyright": "All rights reserved", "version": 2 }}yaku --to zh-CN -f en.json -o zh-CN.json输出(zh-CN.json):
{ "nav": { "home": "首页", "about": "关于我们", "contact": "联系我们" }, "hero": { "title": "打造卓越之作", "subtitle": "最快将产品推向市场的方式", "cta": "立即开始" }, "footer": { "copyright": "版权所有", "version": 2 }}key、结构和数值 version 字段完全保留。
运作方式与 JSON 相同——提取字符串值、翻译、再重新组装:
yaku --to zh-CN -f en.yaml -o zh-CN.yaml输入(en.yaml):
app: name: My Application description: A task management tool
messages: welcome: Welcome back! error: Something went wrong confirm: Are you sure?
settings: max_retries: 3 debug: falseyaku --to zh-CN -f en.yaml -o zh-CN.yaml输出(zh-CN.yaml):
app: name: 我的应用 description: 任务管理工具
messages: welcome: 欢迎回来! error: 出错了 confirm: 确定吗?
settings: max_retries: 3 debug: falsekey、整数和布尔值被保留。只有字符串值被翻译——包括像 "dark" 或 "urgent" 这样的短单词值。代码标识符(camelCase、snake_case、ALL_CAPS)和语言代码(例如 "en"、"zh-CN")维持原样。
默认格式。整段输入原封不动地发送给 LLM:
echo "Hello, world" | yaku --to zh-CNyaku --to zh-CN "Good morning"不执行结构分析。适用于短文字、段落或任何非结构化内容。
强制指定格式
Section titled “强制指定格式”用 --format 覆盖自动检测:
# 将 stdin 视为 Markdown,即使没有扩展名cat doc.txt | yaku --to zh-CN --format md
# 将 .txt 文件视为 YAMLyaku --to zh-CN -f data.txt --format yaml