输入与输出
yaku 接受以下四种输入方式,依优先顺序检查:
| 优先顺序 | 方式 | 示例 |
|---|---|---|
| 1(最高) | 文件(-f) | yaku --to zh-CN -f article.en.txt |
| 2 | 位置参数 | yaku --to zh-CN "Hello, world" |
| 3 | stdin 管道 | echo "Hello" | yaku --to zh-CN |
| 4(最低) | 交互模式 | yaku --to zh-CN 然后输入文字 + Ctrl+D |
同时提供多种输入时,优先顺序较高的来源会被采用。
文件输入(-f)
Section titled “文件输入(-f)”翻译一个或多个文件。指定多个文件时,内容会被拼接:
# 单个文件yaku --to zh-CN -f README.en.md
# 多个文件yaku --to zh-CN -f chapter1.en.md -f chapter2.en.mdyaku 会根据扩展名(.md、.json、.yaml)自动检测格式。详见格式感知翻译。
在命令行直接传入短文字:
yaku --to zh-CN "Good morning"yaku --to zh-CN "The meeting is tomorrow at ten."多个参数会以空格连接:
yaku --to zh-CN Hello world# 翻译 "Hello world"stdin 管道
Section titled “stdin 管道”从其他命令管道传入文字:
echo "Hello, world" | yaku --to zh-CNcat article.en.md | yaku --to zh-CNgit log --oneline -5 | yaku --to zh-CNcurl -s https://example.com/api/docs | yaku --to zh-CN只有在没有 -f 选项且没有位置参数时,yaku 才会读取 stdin。yaku 会检测 stdin 是管道还是终端:
-
管道模式 — 静默读取(例如
echo "Hello" | yaku --to zh-CN) -
交互模式 — 如果在终端中执行
yaku --to zh-CN且没有输入,yaku 会提示你直接输入文字:Enter text to translate (Ctrl+D to finish):输入或粘贴文字,然后按 Ctrl+D 提交。
stdout(默认)
Section titled “stdout(默认)”yaku 将翻译结果写入 stdout,不含其他内容。错误信息、提示和详细信息都输出到 stderr。这让输出保持干净,方便管道串接:
# 管道到剪贴板(macOS)echo "Hello" | yaku --to zh-CN | pbcopy
# 管道到其他命令yaku --to zh-CN -f report.en.md | wc -w
# 重定向到文件yaku --to zh-CN -f doc.en.md > translated.md文件输出(-o)
Section titled “文件输出(-o)”直接写入文件:
yaku --to zh-CN -f README.en.md -o README.mdyaku 会在 stderr 打印确认信息:
Wrote README.md详细输出(--verbose)
Section titled “详细输出(--verbose)”将模型名称、token 用量和经过时间打印到 stderr:
echo "Hello" | yaku --to zh-CN --verbosestdout:
你好stderr:
Model: gemini-2.5-flash | Tokens: 42 in / 38 out | Time: 1.2s详细信息输出到 stderr,所以 stdout 仍然可以干净地管道传输:
echo "Hello" | yaku --to zh-CN --verbose | pbcopy# 剪贴板得到"你好",终端显示模型信息yaku 会自动清除翻译文字中常见的 LLM 杂讯:
- 移除前导语 — 删除不需要的前缀,例如 “Here is the translation:” 或 “Translation:”
- 移除尾部说明 — 删除 LLM 在双换行后附加的备注(例如 “Note: I translated X as Y because…”)
- 移除包裹引号 — 删除
"text"或「text」包裹 - 移除代码围栏 — 删除输出周围的
```包裹
这在所有后端上自动执行。你不需要手动启用。