google-translate-translate
の第4引数に 'current-buffer
を指定するとできました。
それ以外にも昔はできなかったのかもしれませんが今はいろんな指定ができるようになっていました。
シンボル | 意味 |
---|---|
current-buffer | カーソル位置に入力 (おすすめ) |
kill-ring | キルリングに入れる |
popup | その場にツールチップのように表示 |
echo-area | 下のミニバッファに表示 |
help | 別バッファに表示される内容を現在のバッファに入力 |
で、るびきち先生の便利設定を元に次のようにカスタマイズして使っています。
(require 'google-translate)
(defvar google-translate-english-chars "[:ascii:]’“”–"
"これらの文字が含まれているときは英語とみなす")
(defun google-translate-enja-or-jaen (&optional string)
"regionか、現在のセンテンスを言語自動判別でGoogle翻訳する。"
(interactive)
(setq string
(cond ((stringp string) string)
(current-prefix-arg
(read-string "Google Translate: "))
((use-region-p)
(prog1
(buffer-substring (region-beginning) (region-end))
;; ↓置き換えたいので翻訳元は削除する (念のためキルリングに入れておく)
(kill-region (region-beginning) (region-end))))
(t
(save-excursion
(let (s)
(forward-char 1)
(backward-sentence)
(setq s (point))
(forward-sentence)
(buffer-substring s (point)))))))
(let* ((asciip (string-match
(format "\\`[%s]+\\'" google-translate-english-chars)
string)))
(run-at-time 0.1 nil 'deactivate-mark)
(google-translate-translate
(if asciip "en" "ja")
(if asciip "ja" "en")
string
'current-buffer))) ; ← カーソル位置にペーストする
(global-set-key (kbd "C-c t") 'google-translate-enja-or-jaen)
これを使うとリージョン範囲を翻訳結果で置き換えるようになります。
参照
google-translate.el : 【設定パワーアップ】Google翻訳で言語自動判別しつつ英訳・和訳する!
http://emacs.rubikitch.com/google-translate/
google-translate.el と popwin.el で翻訳作業が捗った件
https://qiita.com/okonomi/items/f18c9221420eca47ebc6