TXL provides machine translation through DeepL’s REST API. Note that this package is in early stages and the user interface may change.
TXL is not yet available on MELPA or similar repositories. The file txl.el must therefore be downloaded and installed manually in a directory where Emacs will find it.
If you’re using straight.el as your package manager you can install txl 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")
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.