feat(egui,wasm): set `lang` attribute to current language

This commit is contained in:
Mikolaj Wielgus 2024-11-19 23:14:04 +01:00
parent 98d237270d
commit 20e682243d
2 changed files with 23 additions and 1 deletions

View File

@ -125,6 +125,25 @@ impl App {
ControlFlow::Break(())
}
#[cfg(not(target_arch = "wasm32"))]
fn update_locale(&mut self) {
// I don't know any equivalent of changing the lang property in desktop.
}
#[cfg(target_arch = "wasm32")]
fn update_locale(&mut self) {
use eframe::wasm_bindgen::JsCast;
let document_element = eframe::web_sys::window()
.expect("No window")
.document()
.expect("No document")
.document_element()
.expect("No document element");
document_element.set_attribute("lang", &self.translator.langid().to_string());
}
}
impl eframe::App for App {
@ -172,6 +191,8 @@ impl eframe::App for App {
self.viewport
.update(ctx, &self.menu_bar, self.maybe_workspace.as_mut());
self.update_locale();
if ctx.input(|i| i.key_pressed(egui::Key::Escape)) {
ctx.send_viewport_cmd(egui::ViewportCommand::Close);
}

View File

@ -1,3 +1,4 @@
use derive_getters::Getters;
use fluent_templates::{static_loader, Loader};
use serde::{Deserialize, Serialize};
use unic_langid::LanguageIdentifier;
@ -9,7 +10,7 @@ static_loader! {
};
}
#[derive(Debug, Serialize, Deserialize)]
#[derive(Debug, Serialize, Deserialize, Getters)]
pub struct Translator {
langid: LanguageIdentifier,
}