LoginSignup
18

More than 5 years have passed since last update.

Google翻訳が賢くなったのでコミットコメントを書くときに英語に翻訳しやすくするVim設定をした

Last updated at Posted at 2016-11-25

はじめに

英語力が壊滅的なためにGitとかのコミットコメントを英語で書くのが苦痛で、自分用のリポジトリなんかは横着して日本語で書いてました。そんなところに、Google翻訳が賢くなったってニュースが舞い込んできたので、今更ながら試してみたところ(たぶん)いい感じに翻訳してくれています。

以下は最近コミットしたコメントを翻訳したものです。

image

image

私の場合、特に文法や前置詞の使い方に不安があったので、これくらい翻訳してくれていれば後は単語をより適切なものに差し替えたりするくらいは何とかできそうです。

後はこれを、コミットコメントを書くのに使っている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 translate

Translations of 翻訳したい文字
[ 日本語 -> English ]

翻訳したい文字
    Characters you want to translate, Character you want to translate
% trans -b 翻訳したい文字
Characters you want to translate
%

こんな感じで使えます。

後はこれをvimから使えるように設定したらばっちりですね、ってことで以下のようにしてみました。あまりバッファを開きたくないので、:<range>!を使って翻訳結果は直接差し替える方針です。

.vimrc
" translate-shellを使う
let s:trans_cmd = 'trans'
let s: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を使っているためのようです。

translate-shell.plugin.zsh
#!/usr/bin/env zsh
alias trans="$(dirname $0)/translate"

:!のヘルプを見ると、

Unix ではシェルを非対話型モードで起動します。対話型
モードで起動したい場合 (aliasを使いたい場合など) は、
'shellcmdflag' に "-ic" を設定してください。

とあるので、デフォルトの設定ではaliasは使用できないようです。
ヘルプの通りにshellcmdflgを設定してもよかったのですが、translate-shellではmakeを使ってtransコマンドを作成することもできるので、.zshrcを以下のようにしてtransコマンドを作ってあげることにしました。

.zshrc
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を押すだけのお手軽翻訳に慣れると、ますます自分で英語を書かなくなりそうなのが残念の極みです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18