跳转到内容

格式感知翻译

yaku 会检测输入格式并调整翻译策略以保留结构。key、代码块、URL 及其他不可翻译的元素维持不变。

yaku 按以下顺序判断格式:

  1. --format 选项 — 明确覆盖:--format json
  2. -f 的扩展名.md.json.yaml.yml
  3. 默认值 — 纯文本
扩展名检测到的格式
.md.markdown.mdxMarkdown
.jsonJSON
.yaml.ymlYAML
其他文本

yaku 将整份 Markdown 文档发送给 LLM,并附加额外规则以保留结构:

Terminal window
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:
```bash
npm install my-package
```
See the [documentation](https://example.com) for more details.
Terminal window
yaku --to zh-CN -f README.en.md

输出:

# 快速开始
安装软件包:
```bash
npm install my-package
```
详见[文档](https://example.com)

注意:标题标记、代码块和 URL 都被保留了,只有正文被翻译。

yaku 提取所有字符串值,批量翻译,再以原始结构重新组装 JSON:

Terminal window
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
}
}
Terminal window
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 相同——提取字符串值、翻译、再重新组装:

Terminal window
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: false
Terminal window
yaku --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: false

key、整数和布尔值被保留。只有字符串值被翻译——包括像 "dark""urgent" 这样的短单词值。代码标识符(camelCase、snake_case、ALL_CAPS)和语言代码(例如 "en""zh-CN")维持原样。

默认格式。整段输入原封不动地发送给 LLM:

Terminal window
echo "Hello, world" | yaku --to zh-CN
yaku --to zh-CN "Good morning"

不执行结构分析。适用于短文字、段落或任何非结构化内容。

--format 覆盖自动检测:

Terminal window
# 将 stdin 视为 Markdown,即使没有扩展名
cat doc.txt | yaku --to zh-CN --format md
# 将 .txt 文件视为 YAML
yaku --to zh-CN -f data.txt --format yaml