Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ Localized German formulas and numbers are in PR #163. Detail: [localization-pari
| Korean | ko | menus only | ~12% |
| Vietnamese | vi | none | 0% |

Other shipped languages: 2 (Russian and German, menus only, ~12%).
Other shipped languages: 3 (Russian, German and Polish, menus only, ~12%).

## Upcoming

Expand Down
2 changes: 1 addition & 1 deletion crates/ui-egui/examples/snapshot.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//! Renders the whole GridCraft window offscreen (wgpu, no window) to a PNG.
//!
//! `cargo run --release -p gridcraft-ui-egui --example snapshot -- [--sample sales] [--in file.xlsx]
//! [--size 1440x900] [--scale 2] [--cmd 'id={json}']... [--tab Insert] [--dark] [--language en|zh|ja|ko|ru|pt|cs]
//! [--size 1440x900] [--scale 2] [--cmd 'id={json}']... [--tab Insert] [--dark] [--language en|zh|ja|ko|ru|pt|cs|pl]
//! [--dialog 'name={json}'] [--hf-edit header|footer] out.png`

use gridcraft_engine::Session;
Expand Down
6 changes: 5 additions & 1 deletion crates/ui-egui/src/control.rs
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,11 @@ pub fn handle(app: &mut SheetApp, ctx: &egui::Context, method: &str, p: &Json) -
"Submit Print Job",
"existing file.print sheet/pagination params → {printing,bytes,pending}; submits without opening a dialog",
),
("app.language.set", "Interface Language", "{language: \"en\"|\"zh\"|\"ja\"|\"ko\"|\"ru\"|\"pt\"|\"de\"|\"cs\"} (alias: code)"),
(
"app.language.set",
"Interface Language",
"{language: \"en\"|\"zh\"|\"ja\"|\"ko\"|\"ru\"|\"pt\"|\"de\"|\"cs\"|\"pl\"} (alias: code)",
),
("app.language.english", "Interface Language: English", ""),
("app.language.japanese", "Interface Language: Japanese", ""),
] {
Expand Down
17 changes: 16 additions & 1 deletion crates/ui-egui/src/i18n.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ mod de;
mod es;
mod fr;
mod ko;
mod pl;
mod pt;
mod ru;
mod sr;
Expand All @@ -35,10 +36,12 @@ pub enum Language {
Cs,
Fr,
Sr,
Pl,
}

impl Language {
pub const ALL: [Self; 11] = [Self::En, Self::Es, Self::Zh, Self::Ja, Self::Ko, Self::Ru, Self::PtBr, Self::De, Self::Cs, Self::Fr, Self::Sr];
pub const ALL: [Self; 12] =
[Self::En, Self::Es, Self::Zh, Self::Ja, Self::Ko, Self::Ru, Self::PtBr, Self::De, Self::Cs, Self::Fr, Self::Sr, Self::Pl];

/// The language's own name, shown in the switcher.
pub fn name(self) -> &'static str {
Expand All @@ -54,6 +57,7 @@ impl Language {
Self::Cs => "Čeština",
Self::Fr => "Français",
Self::Sr => "Srpski",
Self::Pl => "Polski",
}
}

Expand All @@ -71,6 +75,7 @@ impl Language {
Self::Cs => "cs",
Self::Fr => "fr",
Self::Sr => "sr",
Self::Pl => "pl",
}
}

Expand All @@ -91,6 +96,7 @@ impl Language {
"cs" => Some(Self::Cs),
"fr" => Some(Self::Fr),
"sr" => Some(Self::Sr),
"pl" => Some(Self::Pl),
_ => None,
}
}
Expand Down Expand Up @@ -129,6 +135,7 @@ impl Language {
Self::Cs => cs::translate(text),
Self::Fr => fr::translate(text),
Self::Sr => sr::translate(text),
Self::Pl => pl::translate(text),
};
translated.unwrap_or_else(|| text.rsplit_once('|').map_or(text, |(_, label)| label))
}
Expand Down Expand Up @@ -611,6 +618,7 @@ mod tests {
assert!(cs::translate(english).is_some_and(|text| !text.is_empty()), "missing Czech: {english}");
assert!(fr::translate(english).is_some_and(|text| !text.is_empty()), "missing French: {english}");
assert!(sr::translate(english).is_some_and(|text| !text.is_empty()), "missing Serbian: {english}");
assert!(pl::translate(english).is_some_and(|text| !text.is_empty()), "missing Polish: {english}");
}
assert_eq!(Language::Ja.tr("Data"), "データ");
assert_eq!(Language::Zh.tr("Data"), "数据");
Expand All @@ -624,6 +632,8 @@ mod tests {
assert_eq!(Language::De.tr("Sheet1!A1"), "Sheet1!A1");
assert_eq!(Language::Fr.tr("Data"), "Données");
assert_eq!(Language::Fr.tr("Sheet1!A1"), "Sheet1!A1");
assert_eq!(Language::Pl.tr("Data"), "Dane");
assert_eq!(Language::Pl.tr("Sheet1!A1"), "Sheet1!A1");
assert_eq!(Language::PtBr.tr("Date"), "Data");
assert_eq!(Language::PtBr.tr("Sheet1!A1"), "Sheet1!A1");
assert_eq!(Language::Ja.tr("Sheet1!A1"), "Sheet1!A1");
Expand All @@ -644,6 +654,8 @@ mod tests {
assert_eq!(Language::Sr.tr("Sheet1!A1"), "Sheet1!A1");
assert_eq!(Language::Sr.tr("Page Layout|Orientation"), "Orijentacija");
assert_eq!(Language::Sr.tr("Orientation"), "Orijentacija");
assert_eq!(Language::Pl.tr("Page Layout|Orientation"), "Orientacja");
assert_eq!(Language::Pl.tr("Orientation"), "Kierunek tekstu");
assert_eq!(Language::parse("xx"), None);
}

Expand Down Expand Up @@ -738,6 +750,9 @@ mod tests {
assert_eq!(Language::from_tag("sr-Latn-RS"), Some(Language::Sr));
assert_eq!(Language::from_tag("sr-RS"), Some(Language::Sr));
assert_eq!(Language::parse("sr"), Some(Language::Sr));
assert_eq!(Language::from_tag("pl-PL"), Some(Language::Pl));
assert_eq!(Language::from_tag("pl_PL.UTF-8"), Some(Language::Pl));
assert_eq!(Language::parse("pl"), Some(Language::Pl));
}

#[test]
Expand Down
Loading