コンテンツにスキップ

入出力

yakuは3つの方法で入力を受け付けます。以下の優先順位で確認されます:

優先度方法
1(最高)ファイル (-f)yaku --to ja -f article.en.txt
2位置引数yaku --to ja "Hello, world"
3stdinパイプecho "Hello" | yaku --to ja
4(最低)対話入力yaku --to jaと入力し、テキスト + Ctrl+D

複数が指定された場合、優先度の高いソースが使われます。

1つまたは複数のファイルを翻訳します。複数ファイルの場合は内容が結合されます:

Terminal window
# 単一ファイル
yaku --to ja -f README.en.md
# 複数ファイル
yaku --to ja -f chapter1.en.md -f chapter2.en.md

yakuはファイル拡張子(.md.json.yaml)からフォーマットを自動検出します。詳しくはフォーマット対応翻訳をご覧ください。

短いテキストをコマンドラインで直接指定します:

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

複数の引数はスペースで結合されます:

Terminal window
yaku --to ja Hello world
# "Hello world"が翻訳されます

他のコマンドからテキストをパイプします:

Terminal window
echo "Hello, world" | yaku --to ja
cat article.en.md | yaku --to ja
git log --oneline -5 | yaku --to ja
curl -s https://example.com/api/docs | yaku --to ja

stdinは-fオプションと位置引数のどちらも指定されていない場合にのみ読み取られます。yakuはstdinがパイプかターミナルかを検出します:

  • パイプモード — サイレントに読み取り(例: echo "Hello" | yaku --to ja

  • 対話モード — 入力なしでターミナルでyaku --to jaを実行すると、yakuがテキスト入力を促します:

    Enter text to translate (Ctrl+D to finish):

    テキストを入力または貼り付けて、Ctrl+Dで送信します。

yakuは翻訳されたテキストをstdoutに書き込み、それ以外は書き込みません。エラー、ヒント、詳細情報はstderrに出力されます。これにより、パイプ時の出力がクリーンに保たれます:

Terminal window
# クリップボードにパイプ(macOS)
echo "Hello" | yaku --to ja | pbcopy
# 他のコマンドにパイプ
yaku --to ja -f report.en.md | wc -w
# ファイルにリダイレクト
yaku --to ja -f doc.en.md > translated.md

ファイルに直接書き込み:

Terminal window
yaku --to ja -f README.en.md -o README.md

yakuはstderrに確認メッセージを表示します:

Wrote README.md

モデル名、トークン使用量、経過時間をstderrに表示:

Terminal window
echo "Hello" | yaku --to ja --verbose

stdout:

こんにちは

stderr:

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

詳細情報はstderrに出力されるため、stdoutのパイプはクリーンなままです:

Terminal window
echo "Hello" | yaku --to ja --verbose | pbcopy
# クリップボードに「こんにちは」が入り、ターミナルにモデル情報が表示される

yakuは翻訳テキストから一般的なLLMアーティファクトを自動的にクリーンアップします:

  • 前置きの除去 — 「Here is the translation:」や「Translation:」のような不要なプレフィックスを除去
  • 末尾の説明の除去 — LLMが二重改行の後に追加する注釈を除去(例: 「Note: I translated X as Y because…」)
  • 囲み引用符の除去 — LLMが追加することがある"text"「text」のラッパーを除去
  • コードフェンスの除去 — 出力を囲む ``` ラッパーを除去

これはすべてのバックエンドで自動的に実行されます。有効化する必要はありません。