txl.el icon indicating copy to clipboard operation
txl.el copied to clipboard

Emacs extension providing direct access to DeepL's machine translation API.

  • TXL – High-quality machine translation in Emacs via DeepL’s REST API TXL provides machine translation through DeepL's REST API.

** Installation TXL is not yet available on MELPA or similar repositories. The file [[https://github.com/tmalsburg/txl.el/blob/master/txl.el][txl.el]] must therefore be downloaded and installed manually in a directory where Emacs will find it.

If you’re using [[https://github.com/raxod502/straight.el][straight.el]] as your package manager you can install txl using:

#+BEGIN_SRC elisp (straight-use-package '(txl :type git :host github :repo "tmalsburg/txl.el")) #+END_SRC

Dependencies are:

  • [[https://github.com/tmalsburg/guess-language.el][guess-language.el]] (available on [[http://elpa.gnu.org/packages/guess-language.html][ELPA]])
  • [[https://github.com/tkf/emacs-request][request.el]] (available on [[https://melpa.org/#/request][MELPA]])

** Configuration Minimally the user needs to specify a pair of languages in the customization variable ~txl-languages~ and an authentication key for DeepL's REST API via ~txl-deepl-api-url~. (You need the [[https://www.deepl.com/pro?cta=menu-plans/][“developer” subscription]].) Example:

#+BEGIN_SRC elisp (require 'txl) (setq txl-languages '(DE . EN-US)) (setq txl-deepl-api-key "my-api-key") #+END_SRC

By the default, txl.el assumes that your key is for the DeepL Pro plan. When the free plan is used instead, a txl.el needs to use a different API URL. The following definition sets this URL:

#+BEGIN_SRC elisp (setq txl-deepl-api-url "https://api-free.deepl.com/v2/translate") #+END_SRC

Other configuration variables are ~txl-deelp-split-sentences~, ~txl-deepl-preserve-formatting~, and ~txl-deepl-formality~. See inline documentation for details.

For convenience the translation command can be bound to a keyboard shortcut. Example:

#+BEGIN_SRC elisp (global-set-key (kbd "C-x t") 'txl-translate-region-or-paragraph) #+END_SRC

** Usage The command ~txl-translate-region-or-paragraph~ translates the marked region or, if no region is active, the paragraph to the respective other language. The current language is detected using the ~guess-language~ package. The retrieved translation is shown in a separate buffer where it can be reviewed and edited. The original text can be replaced with the (edited) translation via ~C-c C-c~. The translation can be dismissed (without touching the original text) using ~C-c C-k~. If a prefix argument is given (~C-u~), the text will be translated round-trip to the other language and back.