はじめに
英語力が壊滅的なためにGitとかのコミットコメントを英語で書くのが苦痛で、自分用のリポジトリなんかは横着して日本語で書いてました。そんなところに、Google翻訳が賢くなったってニュースが舞い込んできたので、今更ながら試してみたところ(たぶん)いい感じに翻訳してくれています。
以下は最近コミットしたコメントを翻訳したものです。
私の場合、特に文法や前置詞の使い方に不安があったので、これくらい翻訳してくれていれば後は単語をより適切なものに差し替えたりするくらいは何とかできそうです。
後はこれを、コミットコメントを書くのに使っているVimからいい感じに使えるとよいです。
試したけど馴染まなかったこと
そんなわけで、VimからGoogle翻訳を使いやすくするためにプラグインを導入したのですが、手に馴染まなかったメモです。読まなくても問題ないです。
その1 googletranslate-vimを試す
mattnさんのオリジナルは、APIのバージョンが古かったり、依存している(と思われる)webapi-vimのAPIインタフェース変更に追随していなかったりと、そのままでは動かなかったので、forkしてその辺の修正をしてくれているnormfulさんのものを使ってみました。:<range>GoogleTranslate
ってすると、指定行の内容の翻訳結果を別バッファに表示してくれます。
ただ、これを使うと、Webで翻訳する場合と違う結果になってしまいます。APIの仕様でも変わったのかと原因を調べようとしたのですが、後述する別の方法で解決してしまいそのままです。
後、Google Cloud Platformのアカウントを作成してAPI keyを取得しないといけないのも地味にハードルが高いです。決済情報の登録も必要ですし。
その2 translategoogle.vimを試す
次に、translategoogle.vimを試してみました。こちらの紹介記事の通り、Google翻訳用のバッファで入力した内容が随時翻訳されます。
こっちのプラグインはWebと同じ翻訳結果になってくれる(というかそもそも、APIじゃなくてWebの結果をパースしてるから当たり前な)ので、これを使えば捗りそうです。……って終わればよかったのですが、普段使いのPCの画面サイズが1366x768と貧弱なうえ、tmuxで縦に複数分割した状態で常用しているので、バッファがたくさん開くこのプラグインは手に馴染みませんでした。
最終的に…
translate-shellを使うことにしました
ちょっと思考を変えて、シェルから使える何かはないかと探していたら、translate-shellというものを見つけました。
% trans 翻訳したい文字翻訳したい文字(Hon'yaku shitai moji)Characters you want to translateTranslations of 翻訳したい文字[ 日本語 -> English ]翻訳したい文字 Characters you want to translate, Character you want to translate% trans -b 翻訳したい文字Characters you want to translate%
こんな感じで使えます。
後はこれをvimから使えるように設定したらばっちりですね、ってことで以下のようにしてみました。あまりバッファを開きたくないので、:<range>!
を使って翻訳結果は直接差し替える方針です。
" translate-shellを使うlets:trans_cmd ='trans'lets:trans_opt ='-b --no-ansi -e google'
exec 'command! -nargs=0 -range Trans <line1>,<line2>!' . s:trans_cmd . ' ' . s:trans_opt
nnoremap<silent><F3> :Trans<CR>
翻訳したい行でF3を押すと、その行の内容が翻訳結果に差し変わってくれます。この例では私の環境でたまたま空いていたF3を使ってますが、好みのキーに割り当ててください。
また、:'<,'>Trans
で選択した複数行の翻訳もできます。このTrans
というコマンド名は上述のgoogletranslate-vimでも定義されているので、どちらも使用する場合は適宜コマンド名を変えてください。
これで、git commit
してVimが起動したら、日本語でコメントを入力してF3を押して翻訳。内容が気に食わなかったら、いったんUndoして日本語を微調整して再度F3。満足いく内容になったら、:wq
で保存&終了。
そんな感じに使えるので非常に満足しています。
translate-shellで嵌ったこと
masterブランチは古い
translate-shellにおけるmasterブランチは過去の遺物のようです。
利用するならstableブランチ(安定板)か、developブランチ(開発版)を利用するのがよさそうです。
プラグインマネージャとの連携はちょっと注意
shellで使うコマンドは極力zplugで導入するようにしているのですが、いつも通りにzplug 'soimort/translate-shell', at:stable
ってしたところ、Vimからtrans
コマンドが使えませんでした。
これは、コマンドの登録にaliasを使っているためのようです。
#!/usr/bin/env zshalias trans="$(dirname $0)/translate"
:!
のヘルプを見ると、
Unix ではシェルを非対話型モードで起動します。対話型
モードで起動したい場合 (aliasを使いたい場合など) は、
'shellcmdflag' に "-ic" を設定してください。
とあるので、デフォルトの設定ではaliasは使用できないようです。
ヘルプの通りにshellcmdflgを設定してもよかったのですが、translate-shellではmakeを使ってtransコマンドを作成することもできるので、.zshrc
を以下のようにしてtransコマンドを作ってあげることにしました。
zplug "soimort/translate-shell", \
at:stable, as:command, use:"build/*", \
hook-build:"make build &> /dev/null"
なお、プラグインマネージャを使っていない場合はtranslate-shell.plugin.zshの記述も関係ないので、普通にsudo make install
で大丈夫だと思います。/usr/bin以外にインストールしたいならmake PREFIX=/path/to/dir make install
ですね。
終わりに
英語力が圧倒的に足りない私ですが、新しいGoogle翻訳さんの力を使うことでそれなりの英語コメントによるコミットができるようになりました。(……たぶん。英語力が圧倒的に足りないので自分で検証できませんが)
ただ、F3を押すだけのお手軽翻訳に慣れると、ますます自分で英語を書かなくなりそうなのが残念の極みです。