跳转到内容

输入与输出

yaku 接受以下四种输入方式,依优先顺序检查:

优先顺序方式示例
1(最高)文件(-fyaku --to zh-CN -f article.en.txt
2位置参数yaku --to zh-CN "Hello, world"
3stdin 管道echo "Hello" | yaku --to zh-CN
4(最低)交互模式yaku --to zh-CN 然后输入文字 + Ctrl+D

同时提供多种输入时,优先顺序较高的来源会被采用。

翻译一个或多个文件。指定多个文件时,内容会被拼接:

Terminal window
# 单个文件
yaku --to zh-CN -f README.en.md
# 多个文件
yaku --to zh-CN -f chapter1.en.md -f chapter2.en.md

yaku 会根据扩展名(.md.json.yaml)自动检测格式。详见格式感知翻译

在命令行直接传入短文字:

Terminal window
yaku --to zh-CN "Good morning"
yaku --to zh-CN "The meeting is tomorrow at ten."

多个参数会以空格连接:

Terminal window
yaku --to zh-CN Hello world
# 翻译 "Hello world"

从其他命令管道传入文字:

Terminal window
echo "Hello, world" | yaku --to zh-CN
cat article.en.md | yaku --to zh-CN
git log --oneline -5 | yaku --to zh-CN
curl -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 提交。

yaku 将翻译结果写入 stdout,不含其他内容。错误信息、提示和详细信息都输出到 stderr。这让输出保持干净,方便管道串接:

Terminal window
# 管道到剪贴板(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

直接写入文件:

Terminal window
yaku --to zh-CN -f README.en.md -o README.md

yaku 会在 stderr 打印确认信息:

Wrote README.md

将模型名称、token 用量和经过时间打印到 stderr:

Terminal window
echo "Hello" | yaku --to zh-CN --verbose

stdout:

你好

stderr:

Model: gemini-2.5-flash | Tokens: 42 in / 38 out | Time: 1.2s

详细信息输出到 stderr,所以 stdout 仍然可以干净地管道传输:

Terminal window
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」 包裹
  • 移除代码围栏 — 删除输出周围的 ``` 包裹

这在所有后端上自动执行。你不需要手动启用。