TXL provides machine translation through DeepL’s REST API.
TXL is available on MELPA. If you’re using straight.el as your package manager, you can also install directly from this repo using:
(straight-use-package
'(txl :type git :host github :repo "tmalsburg/txl.el"))
Dependencies are:
- guess-language.el (available on ELPA)
- request.el (available on MELPA)
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 “developer” subscription.) Example:
(require 'txl)
(setq txl-languages '(DE . EN-US))
(setq txl-deepl-api-key "my-api-key")
By default, txl.el assumes that your key is for the DeepL Pro plan. When the free plan is used instead, txl.el needs to use a different API URL. The following definition sets this URL:
(setq txl-deepl-api-url "https://api-free.deepl.com/v2/translate")
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:
(global-set-key (kbd "C-x t") 'txl-translate-region-or-paragraph)
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.
This package is published under the GNU GENERAL PUBLIC LICENSE version 3.