デスクトップ翻訳にはDeepLを使っていましたが、ローカルLLMの質が向上してきたのでAutomatorスクリプトで乗り換えることにしました。通信のできない環境でも最低限の翻訳はできますので、使い道はあるかと思います。
local-llm-translator(github)
アプリケーションといってもUnixユーザーランドでOllama越しに翻訳させ、結果をTextedit.appで表示するだけのごくごく簡単なシェルスクリプトですので、ご自分の用途に合わせて改造してください。
準備
- Ollamaと適切なモデルのインストール
- 初期設定:hoangquan456/qwen3-nothink:8b (MacBook M2 16GBで使えます)
- Mac OS ターミナルコマンドの有効化
- XcodeのCommand Line Toolsのみインストールするなど参照してください
インストール
- GitHubでmain.shの内容をコピー
- Automator.appで新規クイックアクションを作成
- 新規クイックアクションを作成
- ライブラリから「シェルスクリプトを実行」を選択し、右ペインにドラッグ
- 検索対象を「すべてのアプリケーション」に設置して、main.shの中身をペースト
- 名前をつけて保存、サービスメニューから実行(設定.appでショートカットを割り当てることも可能です)
日本語訳プロンプト
日本語訳するプロンプトは以下。gpt-4あたりからYou are...と役割を入れなくても期待通りの動作をすることが増えてきましたが、非力なローカルLLMではまだ有効です。gpt-4やgeminiのAPIなら、日本語以外のテキストなら日本語に、日本語が入ってきたら英語に翻訳するみたいなこともプロンプトで制御できますが、8b程度のモデルではまだ動作しません。
別言語への翻訳をしたいなら、このプロンプトのinto Japaneseを into Englishなどと変更してください。
PROMPT=$'You are a professional translator.\n- Translate the following text into Japanese.\n- Keep tone and nuance.\nDo not add explanations.\n---\n'"$SRC_TEXT"
モデルについて
スクリプトの初期設定は私が使っている-hoangquan456/qwen3-nothink:8bです。
4bなら短文投稿、8b以上あればニュースぐらいなら翻訳らしい翻訳を作ってくれます。オンラインのDeepLのようなレスポンスを期待すると、かなり待たされる印象を受けることでしょう。
後記
飛行機や新幹線など、ネットワーク接続がなかったり不安定だったりする移動中でも最低限の翻訳ができるのはありがたいですね。昨年は地元に帰ることが多くて移動中に機械翻訳を使いたくなることが多かったのですが、このスクリプトのおかげで韓国語や中国語のメッセージを読むことができました。
このプロジェクトはVS Code用のContinueに8割ほど書いてもらいました。ContinueはCopilotやClaudeのような統合開発に対応したパワーは感じませんが、こういうスクリプトならとても助かるエージェントです。APIを選べるので長いコンテキストならGPT 4o、設計時には5.1、セカンドオピニオンにGeminiあたりを選んだりできるのがいい。また、Ollamaでも動くので、deepseekのコーディングモデルでローカル開発もできます。

