LoginSignup
4
6

More than 5 years have passed since last update.

google-translate.el でカーソル位置に翻訳を自動ペーストする方法

Last updated at Posted at 2018-06-01

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)

これを使うとリージョン範囲を翻訳結果で置き換えるようになります。

参照

本家のコード
https://github.com/atykhonov/google-translate/blob/d8b84a8359fcc697114d1298840e9a45b111c974/google-translate-core-ui.el#L682

google-translate.el : 【設定パワーアップ】Google翻訳で言語自動判別しつつ英訳・和訳する!
http://emacs.rubikitch.com/google-translate/

google-translate.el と popwin.el で翻訳作業が捗った件
https://qiita.com/okonomi/items/f18c9221420eca47ebc6

4
6
0

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
4
6