はじめに
変数名を考えるときなど、英語→日本語や、日本語→英語を素早くほしいことがある。サクッと翻訳できるととても助かる。ブラウザでGoogle翻訳を開いていたが、頻度も多いし、Alfredのワークフローでやると便利だろうなとおもった。
環境
ここで書いていることは、下記のバージョンで実施しました。
- Alfred 4.3.2
- macOS BigSur 11.1
つかったもの
Alfred のGoogle翻訳ワークフローを作りました。
https://qiita.com/nkmr_jp/items/ee47d0ef7f39816062a8
を使用。
DeepL翻訳をAlfred上で完結させるAlfred Workflow「DeepL-Translate」もとてもいいと思うが、DeepLを使っているわけではないので(DeepLへの登録が必要みたい)
問題点
上記「Quick Translate」は控えめに申し上げてとても良いのだけれど、自分の使いかたでは2つの問題が発生。
- ホットキーではなくて、キーワードで開始してほしい
- 翻訳結果が返ってこないことがある
対策したこと
キーワードで開始したい
Quick Translateの旧バージョン使用。リリースページの13 Mar 2017
版。

Script Filter
のところにge
とgj
と指定。
ge -> [g]oogle translate to [e]nglish or [g]o [e]nglish
gj -> [g]oogle translate to [j]apanese or [g]o [j]apanese
ちなみに新バージョンは素敵な機能がいろいろついているが、Script Filter
を使うのが難しくなっている。
検索結果が返ってこない
再現画像がないが、検索結果が返ってこなくなることがある。どうもtranslate-shell
のほうで発生しているようなので
$ trans -D 'hello world' 1> stdout.log 2> stderr.log
で調べてみると、Google APIがHTTP/1.1 429 Too Many Requests
と言っている。1文字入力するごとにAPIを呼び出しているので怒られているっぽい。
そこで
-
Script Filter
>Language: ... Run Behavior
のQueue Delay
をAutomatic delay after last character typed
に変更 -
Always run immediately for first typed arg character
のチェックボックスをオフ
これで、APIを叩きに行く回数を減らす。
ただし、いちど429 Too Many Requests
がでると、しばらく復活しない。そのときは、回避策として、Script Filter
> Script
の
TRANS=`trans -e "{query}"`
というところを、下記に変更(googleじゃなくてbingの翻訳を利用)。
TRANS=`trans -e bing -b "{query}"`
ひとこと
いやあ、しあわせです。作者のみなさん、ほんとうにありがとうございます。
あまりきれいではない(genericでない)使いかたをして申し訳ないです。