diff --git a/docs/features.md b/docs/features.md
index b22c8c39..5fbf6731 100644
--- a/docs/features.md
+++ b/docs/features.md
@@ -217,10 +217,11 @@ composer added aren't checked. Turn spell checking off with **Check spelling**
in Settings → General, which also says when there's nothing to check with.
On Windows and Linux, the **Spelling** submenu also chooses your languages.
-Flectar Mail starts with the languages your system is set to, and a word passes
-when any of the chosen languages has it, so mail in two languages needs no
-switching. On iOS it checks in your preferred languages, from Settings under
-General, Language & Region, the same way. On macOS, the system picks the
+Flectar Mail starts with the display language you chose in Settings, if any,
+and the languages your system is set to, and a word passes when any of the
+chosen languages has it, so mail in two languages needs no switching. On iOS it
+checks in the same display language and your preferred languages, from Settings
+under General, Language & Region, the same way. On macOS, the system picks the
language of what you write from the ones set in System Settings, under
Keyboard, Text Input. On Android, the spell checker chosen in Android's
settings checks, usually the keyboard's, in the language set there.
diff --git a/src/main.rs b/src/main.rs
index 9d3cc26b..2778a217 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1175,6 +1175,7 @@ fn apply_language(app: &AppWindow, preference: &str) {
language => language,
};
number_format::set_language(selected);
+ spelling::apply_display_language(language_mode);
if let Err(error) = slint::select_bundled_translation(selected) {
eprintln!("could not select {selected} translation: {error}");
}
diff --git a/src/spelling.rs b/src/spelling.rs
index 02a70751..f494e859 100644
--- a/src/spelling.rs
+++ b/src/spelling.rs
@@ -26,7 +26,7 @@ use std::cell::{Cell, RefCell};
use std::ops::Range;
use std::path::{Path, PathBuf};
use std::rc::Rc;
-use std::sync::Arc;
+use std::sync::{Arc, Mutex, PoisonError};
/// Whether the app has a checker of its own for this platform. A host may bring one too.
#[cfg(desktop)]
@@ -56,6 +56,10 @@ thread_local! {
static SPELLING: RefCell