2
0

More than 1 year has passed since last update.

google-translate.el を M-w(kill-ring-save)風に使う

Posted at

環境

Emacs 26.3

google-translate 20220921.245

Ubuntu Linux 22.04 LTS

使い方

てっとりばやく使うには下記コードを init.el に追加します。

翻訳したい英語テキストの先頭でマーク(C-SPC)して、末尾にカーソル移動してから C-c w とすると、翻訳結果が kill-ring に入ります。yankなどで好きなところに貼り付けます。

解説

翻訳結果が kill-ring に入るようにする

翻訳結果が kill-ring に入るようにします

(setq google-translate-output-destination 'kill-ring)

他にいろいろあるけど、例えば、翻訳結果をポイント(現在のカーソル位置)に挿入する。

(setq google-translate-output-destination 'current-buffer)

google-translate-translate に直接指定する。

最期の引数に 'kill-ring とか直接指定できます。特定の関数でだけ kill-ringに入れるとかできます。たぶん。

詳しくは…

詳しくは google-translate-core-ui.el の google-translate-output-destination の説明(英語)を見て下さい。
(手元の環境では ~/.emacs.d/elpa/google-translate-20220921.245/google-translate-core-ui.el)

関数本体

(interactive "r") がミソらしいです。

(defun google-translate-region (start-point end-point &optional override-p reverse-p)
  "translate from mark to point."
  (interactive "r")
  (if (string-equal major-mode "pdf-view-mode")
      (message "In PDF, select region and use google-translate-at-point")
    (let* ((langs (google-translate-read-args override-p reverse-p))
	   (source-language (car langs))
           (target-language (cadr langs)))
      (google-translate-translate
       source-language target-language
       (buffer-substring-no-properties start-point end-point)))))

キーバインド

お好みで。 ここでは M-w に合わせて C-c w としてみました。

(define-key global-map (kbd "C-c w") 'google-translate-region)

てっとりばやく使いたい人用

必須の部分ではないのですが、 init.el にコピペしたときにとりあえず使えるようにしてあります。
既に google-translate を使っていて設定・自動検出で使っている人はこの部分を削除してください。

おまけ

カレントバッファをまるっと翻訳するコマンド。元から google-translateにあるコマンドですがバインドされていないっぽかったので。

コード全体

google-translate-region.el
(require 'google-translate)
(require 'google-translate-default-ui)

;; てっとりばやく使いたい人用。
;; とりあえず 英語から日本語への翻訳に固定しています。
;; 既に設定・自動検出している人は削除してください。削除しろ。
(setq google-translate-default-source-language "en")
(setq google-translate-default-target-language "ja")

;; おまけ。カレントバッファまるごと翻訳
(define-key global-map (kbd "C-c b") 'google-translate-buffer)

(setq google-translate-output-destination 'kill-ring)

(defun google-translate-region (start-point end-point &optional override-p reverse-p)
  "translate from mark to point."
  (interactive "r")
  (if (string-equal major-mode "pdf-view-mode")
      (message "In PDF, select region and use google-translate-at-point")
    (let* ((langs (google-translate-read-args override-p reverse-p))
	   (source-language (car langs))
           (target-language (cadr langs)))
      (google-translate-translate
       source-language target-language
       (buffer-substring-no-properties start-point end-point)))))

(define-key global-map (kbd "C-c w") 'google-translate-region)

なんでかこんなの作った!?

google-translate-at-point の使い方がよくわからんかったので。

白内障進行により(近日手術する…予定)で白黒画面がサッパリ見えず、 Chrome や FireFoxの画面もダークモードや、アドインで強制的にダークモードで使っています。
Google翻訳も同様にしていたのですが、2023年4月末ぐらいにプチ変更あったのか翻訳結果部分を最終的にレンダリングする時に白黒画面表示するようになりました。アドインなどで強制黒白画面にしても、その処理後にレンダリング走るらしく。
ということでWebでのGoogle翻訳の利用は諦めて google-translate.el を使うことに

ああ、Emacs(XEmacs)は昔から好みで黒白画面にしてあるので。

2
0
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
2
0