feat(locale): add Fluent translations

Default to the platform language with persisted overrides across native and web builds.

Refs #630
This commit is contained in:
Hakan Seven committed 2026-08-02 18:53:38 +03:00
1 parent e102887000
commit b90b3e3ecf
26 files changed
+1581 -112

No files matched your search

+4
View File
@@ -288,6 +288,7 @@ impl OpenCADStudio {
pick_drag_rect: self.pick_drag_rect,
bg_color: self.default_bg_color.map(f4_to_u3),
paper_bg_color: self.default_paper_bg_color.map(f4_to_u3),
language: self.language,
}
}
@@ -317,6 +318,9 @@ impl OpenCADStudio {
self.pick_drag_rect = s.pick_drag_rect;
self.default_bg_color = s.bg_color.map(u3_to_f4);
self.default_paper_bg_color = s.paper_bg_color.map(u3_to_f4);
if crate::i18n::set_language(s.language).is_ok() {
self.language = s.language;
}
// Push the restored background onto every drawing tab that exists now
// (the start tab and any initial drawing). Tabs created later pick it
// up via `apply_bg_default` at their construction site.
+16
View File
@@ -4323,6 +4323,22 @@ impl OpenCADStudio {
Task::none()
}
Message::LanguageChanged(language) => {
if self.language == language {
return Task::none();
}
match crate::i18n::set_language(language) {
Ok(()) => {
self.language = language;
self.persist_settings_if_changed();
}
Err(error) => self
.command_line
.push_error(&format!("Unable to change UI language: {error}")),
}
Task::none()
}
Message::AboutOpen => {
self.active_modal = Some(super::ModalKind::About);
Task::none()