From a36e4987c1b5b53af69a3f3573418e18612d1a4e Mon Sep 17 00:00:00 2001 From: FredApps <153173854+FredApps@users.noreply.github.com> Date: Tue, 10 Nov 2026 17:07:10 +0100 Subject: [PATCH] =?UTF-8?q?i18n(uk):=20translate=20Chart=20as=20=D0=94?= =?UTF-8?q?=D1=96=D0=B0=D0=B3=D1=80=D0=B0=D0=BC=D0=B0=20(#3703)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use the shared craft-i18n Ukrainian term, distinct from Diagram (Схема). Also translate the remaining Chart-labelled strings that were still English. Co-authored-by: FredApps --- crates/ui-egui/src/i18n.rs | 8 ++++++++ crates/ui-egui/src/i18n/uk.rs | 30 +++++++++++++++--------------- docs/feature-names.md | 5 +++-- docs/localization-parity.md | 3 ++- 4 files changed, 28 insertions(+), 18 deletions(-) diff --git a/crates/ui-egui/src/i18n.rs b/crates/ui-egui/src/i18n.rs index 3aac97d6e..0ffd0ad09 100644 --- a/crates/ui-egui/src/i18n.rs +++ b/crates/ui-egui/src/i18n.rs @@ -342,6 +342,14 @@ mod tests { } } + /// Ukrainian Chart uses the shared craft-i18n term, which is not the Diagram word. + #[test] + fn ukrainian_chart_uses_the_shared_term() { + assert_eq!(Language::Uk.translated("Chart"), Some("Діаграма")); + assert_eq!(Language::Uk.translated("Insert Chart"), Some("Вставити діаграму")); + assert_eq!(Language::Uk.translated("Diagram"), Some("Схема")); + } + /// Help tables are sorted and unique: lookups binary-search them. #[test] fn function_help_tables_are_sorted_and_unique() { diff --git a/crates/ui-egui/src/i18n/uk.rs b/crates/ui-egui/src/i18n/uk.rs index ddb9368a0..7059a0ff4 100644 --- a/crates/ui-egui/src/i18n/uk.rs +++ b/crates/ui-egui/src/i18n/uk.rs @@ -442,7 +442,7 @@ pub(super) fn translate(text: &str) -> Option<&'static str> { "This workbook" => "This workbook", "Do you want to save the changes you made to {title}?" => "Do you want to save the changes you made to {title}?", "Save a copy as .{format}" => "Save a copy as .{format}", - "Select a chart first." => "Select a chart first.", + "Select a chart first." => "Спочатку виділіть діаграму.", "Text Box" => "Напис", "Select Data" => "Select Data", "Row Height" => "Row Height", @@ -480,13 +480,13 @@ pub(super) fn translate(text: &str) -> Option<&'static str> { "Search Commands" => "Search Commands", "Agent Control" => "Agent Control", "About GridCraft" => "About GridCraft", - "Insert Chart" => "Insert Chart", + "Insert Chart" => "Вставити діаграму", "Select Data Source" => "Select Data Source", "Action Journal" => "Action Journal", "Macros" => "Macros", "Workbook Statistics" => "Workbook Statistics", "Accessibility" => "Accessibility", - "Chart Title" => "Chart Title", + "Chart Title" => "Назва діаграми", "Place Picture in Cell" => "Place Picture in Cell", "Place Picture over Cells" => "Place Picture over Cells", "Pick From List" => "Pick From List", @@ -604,9 +604,9 @@ pub(super) fn translate(text: &str) -> Option<&'static str> { "Sum" => "Sum", "Product" => "Product", "Include forecast statistics" => "Include forecast statistics", - "Chart" => "Chart", - "Line chart" => "Line chart", - "Column chart" => "Column chart", + "Chart" => "Діаграма", + "Line chart" => "Лінійна діаграма", + "Column chart" => "Стовпчикова діаграма", "At each change in (column letter):" => "At each change in (column letter):", "Use function" => "Use function", "Add subtotal to (columns, e.g. C,D):" => "Add subtotal to (columns, e.g. C,D):", @@ -770,8 +770,8 @@ pub(super) fn translate(text: &str) -> Option<&'static str> { "Scope" => "Scope", "Workbook" => "Workbook", "No names defined" => "No names defined", - "Recommended Charts" => "Recommended Charts", - "All Charts" => "All Charts", + "Recommended Charts" => "Рекомендовані діаграми", + "All Charts" => "Усі діаграми", "Clustered Column" => "Clustered Column", "Stacked Column" => "Stacked Column", "100% Stacked Column" => "100% Stacked Column", @@ -793,7 +793,7 @@ pub(super) fn translate(text: &str) -> Option<&'static str> { "Waterfall" => "Waterfall", "Funnel" => "Funnel", "Combo" => "Combo", - "Chart data range:" => "Chart data range:", + "Chart data range:" => "Діапазон даних діаграми:", "Legend Entries (Series)" => "Legend Entries (Series)", "Series{n}" => "Series{n}", "Keep" => "Keep", @@ -801,7 +801,7 @@ pub(super) fn translate(text: &str) -> Option<&'static str> { "Horizontal (Category) Axis Labels:" => "Horizontal (Category) Axis Labels:", "There are no conditional formatting rules on this sheet." => "There are no conditional formatting rules on this sheet.", "applies to" => "applies to", - "Type a command, e.g. freeze, chart, bold…" => "Type a command, e.g. freeze, chart, bold…", + "Type a command, e.g. freeze, chart, bold…" => "Введіть команду, наприклад закріпити, діаграма, напівжирний…", "Set cell:" => "Set cell:", "To value:" => "To value:", "By changing cell:" => "By changing cell:", @@ -866,7 +866,7 @@ pub(super) fn translate(text: &str) -> Option<&'static str> { "Change" => "Change", "Change All" => "Change All", "$ English (United States)" => "$ English (United States)", - "Add Chart Element" => "Add Chart Element", + "Add Chart Element" => "Додати елемент діаграми", "Align Left" => "Align Left", "Align Right" => "Align Right", "Bottom Align" => "Bottom Align", @@ -874,7 +874,7 @@ pub(super) fn translate(text: &str) -> Option<&'static str> { "Calculate Sheet (⇧F9)" => "Calculate Sheet (⇧F9)", "Calculation Options" => "Calculation Options", "Cell Styles" => "Cell Styles", - "Change Chart Type" => "Change Chart Type", + "Change Chart Type" => "Змінити тип діаграми", "Check Accessibility" => "Check Accessibility", "Clear Filter" => "Clear Filter", "Column or Bar" => "Column or Bar", @@ -887,11 +887,11 @@ pub(super) fn translate(text: &str) -> Option<&'static str> { "Define Name…" => "Define Name…", "Delete Comment" => "Delete Comment", "Delete Sheet" => "Delete Sheet", - "Delete chart" => "Delete chart", + "Delete chart" => "Видалити діаграму", "Delete…" => "Delete…", "Dismiss" => "Dismiss", "Down" => "Down", - "Edit chart title" => "Edit chart title", + "Edit chart title" => "Редагувати назву діаграми", "Erase ink strokes" => "Erase ink strokes", "Every command run in this session (replayable)" => "Every command run in this session (replayable)", "Expand formula bar" => "Expand formula bar", @@ -899,7 +899,7 @@ pub(super) fn translate(text: &str) -> Option<&'static str> { "Find & Select" => "Find & Select", "Forecast Sheet" => "Forecast Sheet", "Forecast end (date or number; blank: a third of the history):" => "Forecast end (date or number; blank: a third of the history):", - "Format Chart pane" => "Format Chart pane", + "Format Chart pane" => "Область форматування діаграми", "Format as Table" => "Format as Table", "Hide" => "Hide", "Hide Sheet" => "Hide Sheet", diff --git a/docs/feature-names.md b/docs/feature-names.md index 800cd3f82..267d1f1fb 100644 --- a/docs/feature-names.md +++ b/docs/feature-names.md @@ -1,6 +1,6 @@ # Feature naming -> **Last reviewed:** 2026-11-10 · **Last updated:** 2026-11-10 · **Change:** minor (Diagram words aligned with craft-i18n#211) +> **Last reviewed:** 2026-11-10 · **Last updated:** 2026-11-10 · **Change:** minor (Ukrainian Chart is Діаграма); previously minor (Diagram words aligned with craft-i18n#211) ArtCraft apps use descriptive names for their own features. Product names used to describe compatibility, file formats, attribution or external software remain accurate. @@ -14,7 +14,7 @@ The insert.smartArt and insert.wordArt command IDs and pending keytips remain un ## Localization and verification -Each shipped non-English interface catalog includes the new labels. Diagram uses a word distinct from Chart in every catalog: German (`Schema`), Ukrainian (`Схема`) and Romanian (`Schemă`) avoid their chart word, matching the shared wording in [craft-i18n#211](https://github.com/storytold/craft-i18n/pull/211) for German and Ukrainian. Regression tests cover the labels, every shipped catalog and stable command identities. The translations are AI-assisted and not yet reviewed by native speakers. +Each shipped non-English interface catalog includes the new labels. Diagram uses a word distinct from Chart in every catalog: German (`Schema`), Ukrainian (`Схема`) and Romanian (`Schemă`) avoid their chart word, matching the shared wording in [craft-i18n#211](https://github.com/storytold/craft-i18n/pull/211) for German and Ukrainian. Ukrainian Chart is `Діаграма`, the same term as in that catalog. Regression tests cover the labels, every shipped catalog and stable command identities. The translations are AI-assisted and not yet reviewed by native speakers. ## Regression coverage @@ -24,5 +24,6 @@ The standard-library-only `display_names` integration tests scan production Rust | Date | Change | Summary | |---|---|---| +| 2026-11-10 | minor | Ukrainian Chart is `Діаграма`, matching [craft-i18n#211](https://github.com/storytold/craft-i18n/pull/211) and distinct from Diagram (`Схема`) | | 2026-11-10 | minor | Diagram no longer repeats the chart word: German `Schema`, Ukrainian `Схема` (as craft-i18n#211), Romanian `Schemă`; a test covers every shipped catalog | | 2026-11-08 | minor | Created: SmartArt → Diagram and WordArt → Decorative Text as GridCraft's own catalog labels | diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 9dec2d0e7..1de2927ac 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -1,6 +1,6 @@ # Localization parity -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-11-10 · **Change:** minor (Diagram and Decorative Text labels, Diagram distinct from Chart); previously minor (CJK fallback baseline alignment); previously minor (Arabic bidi display, editing and cell reading direction; missing translations are listed by `cargo xtask i18n-report` and never fail a check); previously minor (Arabic font fallback; missing translations are listed by `cargo xtask i18n-report` and never fail a check); previously minor (number formats honour the `B1`/`B2` calendar prefixes, checked against Excel; earlier: missing translations are listed by `cargo xtask i18n-report` and never fail a check; Arabic text sorts by its letters, not its vowel marks); previously minor (AutoFit estimates Arabic text width from measured glyph widths); previously minor (missing translations are listed by `cargo xtask i18n-report` and never fail a check; Arabic text sorts by its letters, not its vowel marks) · **Target:** Microsoft Excel (Microsoft 365), Excel for Mac 16.113.4 +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-11-10 · **Change:** minor (Ukrainian Chart is Діаграма); previously minor (Diagram and Decorative Text labels, Diagram distinct from Chart); previously minor (CJK fallback baseline alignment); previously minor (Arabic bidi display, editing and cell reading direction; missing translations are listed by `cargo xtask i18n-report` and never fail a check); previously minor (Arabic font fallback; missing translations are listed by `cargo xtask i18n-report` and never fail a check); previously minor (number formats honour the `B1`/`B2` calendar prefixes, checked against Excel; earlier: missing translations are listed by `cargo xtask i18n-report` and never fail a check; Arabic text sorts by its letters, not its vowel marks); previously minor (AutoFit estimates Arabic text width from measured glyph widths); previously minor (missing translations are listed by `cargo xtask i18n-report` and never fail a check; Arabic text sorts by its letters, not its vowel marks) · **Target:** Microsoft Excel (Microsoft 365), Excel for Mac 16.113.4 Per-language status against Excel, which ships its UI in dozens of languages (Windows language packs cover 100+), with localized function names, argument separators, number and date formats, @@ -133,6 +133,7 @@ language (none so far) and of localized function names. | Date | Change | Summary | |---|---|---| +| 2026-11-10 | minor | Ukrainian Chart is `Діаграма`, matching [craft-i18n#211](https://github.com/storytold/craft-i18n/pull/211) and distinct from Diagram (`Схема`) | | 2026-11-10 | minor | Diagram and Decorative Text labels in all 18 non-English catalogs; Diagram never repeats the catalog's chart word (German `Schema`, Ukrainian `Схема`, Romanian `Schemă`), see [feature-names.md](feature-names.md) | | 2026-10-31 | minor | System and embedded CJK text fallbacks share the Latin baseline in cells, editors and window titles; other scripts, symbols and emoji keep their alignment | | 2026-10-26 | minor | Shared bidi layout supports Arabic clusters, marks, visual cursor navigation and directional accessibility; cell Context/LTR/RTL is stored separately from sheet RTL and round-trips through XLSX |