When you run
ispell, Emacs actually calls an external program that usually requires additional dictionaries to be installed separately. One such program you can use (which is well established and crucially the only one that I know how to set up) is GNU Aspell. Dictionaries for Aspell can be installed with
sudo dnf install aspell-fr aspell-de # and so on
(Of course if it's not already installed you need to install Aspell itself first:
sudo dnf install aspell. I think all these commands translate directly for
Now you need to tell Emacs to use Aspell instead of the default spell checker. First, call
which aspell from the shell to get the path to Aspell's executable, then set
ispell-program-name to that value in Emacs' init file. In Fedora 33 (and most likely a lot of other distros) Aspell's executable is located at
/usr/bin/aspell, so I'm going to use this value:
(setq ispell-program-name "/usr/bin/aspell")
With Aspell and its dictionaries installed and Emacs set to use them, you should be good to go.
One thing that you may find useful if you switch languages often is this snippet I had found on the EmacsWiki:
;; Quickly switch dictionaries
;; Adapted from DiogoRamos' snippet on https://www.emacswiki.org/emacs/FlySpell#h5o-5
(let ((langs '("francais" "deutch" "english")))
(defvar lang-ring (make-ring (length langs))
"List of Ispell dictionaries you can switch to using ‘cycle-ispell-languages’.")
(dolist (elem langs) (ring-insert lang-ring elem)))
(defun cycle-ispell-languages ()
"Switch to the next Ispell dictionary in ‘lang-ring’."
(let ((lang (ring-ref lang-ring -1)))
(ring-insert lang-ring lang)
(global-set-key [f10] #'cycle-ispell-languages) ; replaces ‘menu-bar-open’.
F10 change dictionary cycling between the languages listed in the first line.