<2014-12-31 Wed> requireが抜けていたので入れました。

google-translate.el(レビュー) は、
英語・日本語を自動判別してGoogle翻訳を行う設定を示しました。

しかし、regionを指定しない場合は翻訳文を入力する必要があるのが、
ちょっと手間に思えてきました。

そこで、以下の改良点を施しました。

  • regionを指定しない場合は現在のセンテンスを翻訳文に
  • C-u C-c tで入力文字列を翻訳文に
  • 関数の引数に翻訳文を指定できるようにした

http://emacs.rubikitch.com/google-translate/

設定 141230072954.google-translate-2.el(以下のコードと同一)

(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)
               (buffer-substring (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)))
(global-set-key (kbd "C-c t") 'google-translate-enja-or-jaen)

実行方法

$ wget http://rubikitch.com/f/141230072954.google-translate-2.el
$ emacs -Q -f package-initialize -l 141230072954.google-translate-2.el

本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。