i18n: File › Home greeting in every interface language

`home_page` already passes "Good morning", "Good afternoon" and "Good evening"
through `tl!`, but nine catalogs had no entry, so File › Home opened in English
in German, Estonian, Japanese, Brazilian Portuguese, Serbian (Cyrillic and
Latin), Ukrainian and Chinese (Simplified and Traditional). Adds the three
greetings to each, and a test that every language has them.

Co-authored-by: CRBBeesy <CRBBeesy@users.noreply.github.com>
This commit is contained in:
Cursor AgentandCRBBeesy committed 2026-10-20 03:57:48 +00:00
1 parent 9b4b948c6e
commit 60e3ff8881
11 files changed
+64 -2

No files matched your search

+5
View File
@@ -2287,3 +2287,8 @@
Type a size in any unit, such as 5 cm or 300 px. The other side follows, so the picture keeps its proportions. Geben Sie eine Größe in einer beliebigen Einheit ein, z. B. 5 cm oder 300 px. Die andere Seite passt sich an, sodass das Bild seine Proportionen behält.
Import… Importieren…
# File › Home greeting
Good morning Guten Morgen
Good afternoon Guten Tag
Good evening Guten Abend
Can't render this file because it contains an unexpected character in line 6 and column 25.
+5
View File
@@ -2322,3 +2322,8 @@
Type a size in any unit, such as 5 cm or 300 px. The other side follows, so the picture keeps its proportions. Sisesta suurus mis tahes ühikus, näiteks 5 cm või 300 px. Teine külg muutub kaasa, nii et pilt säilitab oma proportsioonid.
Import… Impordi…
# File › Home greeting
Good morning Tere hommikust
Good afternoon Tere päevast
Good evening Tere õhtust
Can't render this file because it contains an unexpected character in line 847 and column 23.
+5
View File
@@ -2288,3 +2288,8 @@
Type a size in any unit, such as 5 cm or 300 px. The other side follows, so the picture keeps its proportions. 5 cm や 300 px など、任意の単位でサイズを入力します。もう一方の辺も合わせて変わるため、図の縦横比は保たれます。
Import… インポート…
# File › Home greeting
Good morning おはようございます
Good afternoon こんにちは
Good evening こんばんは
Can't render this file because it contains an unexpected character in line 925 and column 23.
+5
View File
@@ -2300,3 +2300,8 @@
Type a size in any unit, such as 5 cm or 300 px. The other side follows, so the picture keeps its proportions. Digite um tamanho em qualquer unidade, como 5 cm ou 300 px. O outro lado acompanha, e a imagem mantém as proporções.
Import… Importar…
# File › Home greeting
Good morning Bom dia
Good afternoon Boa tarde
Good evening Boa noite
Can't render this file because it contains an unexpected character in line 6 and column 25.
+5
View File
@@ -2298,3 +2298,8 @@
Type a size in any unit, such as 5 cm or 300 px. The other side follows, so the picture keeps its proportions. Unesite veličinu u bilo kojoj jedinici, na primer 5 cm ili 300 px. Druga strana se prilagođava, pa slika zadržava svoje proporcije.
Import… Uvezi…
# File › Home greeting
Good morning Dobro jutro
Good afternoon Dobar dan
Good evening Dobro veče
Can't render this file because it contains an unexpected character in line 6 and column 25.
+5
View File
@@ -2302,3 +2302,8 @@
Type a size in any unit, such as 5 cm or 300 px. The other side follows, so the picture keeps its proportions. Унесите величину у било којој јединици, на пример 5 cm или 300 px. Друга страна се прилагођава, па слика задржава своје пропорције.
Import… Увези…
# File › Home greeting
Good morning Добро јутро
Good afternoon Добар дан
Good evening Добро вече
Can't render this file because it contains an unexpected character in line 11 and column 25.
+16
View File
@@ -152,6 +152,22 @@ fn every_tab_and_command_is_translated() {
assert!(missing.is_empty(), "untranslated: {missing:#?}");
}
/// File › Home opens with a greeting for the time of day (`backstage::home_page`); every
/// language has all three, so the page doesn't start in English.
#[test]
fn the_file_home_greeting_is_translated_in_every_language() {
let mut missing = Vec::new();
for l in Lang::all().filter(|l| *l != Lang::EN) {
for s in ["Good morning", "Good afternoon", "Good evening"] {
if !has(l, s) {
missing.push(format!("{}: {s:?}", l.code()));
}
}
}
assert!(missing.is_empty(), "untranslated: {missing:#?}");
assert_eq!(tr(lang("pt-br"), "Good afternoon"), "Boa tarde");
}
#[test]
fn korean_print_settings_and_printer_feedback_are_translated() {
let korean = lang("ko");
+5
View File
@@ -2300,3 +2300,8 @@
Type a size in any unit, such as 5 cm or 300 px. The other side follows, so the picture keeps its proportions. Введіть розмір у будь-яких одиницях, наприклад 5 cm або 300 px. Інша сторона зміниться разом із нею, тож зображення збереже пропорції.
Import… Імпортувати…
# File › Home greeting
Good morning Доброго ранку
Good afternoon Добрий день
Good evening Добрий вечір
Can't render this file because it contains an unexpected character in line 6 and column 31.
+5
View File
@@ -2300,3 +2300,8 @@
Type a size in any unit, such as 5 cm or 300 px. The other side follows, so the picture keeps its proportions. 可用任意单位输入大小,例如 5 cm 或 300 px。另一边随之调整,图片保持原有比例。
Import… 导入…
# File › Home greeting
Good morning 早上好
Good afternoon 下午好
Good evening 晚上好
Can't render this file because it contains an unexpected character in line 7 and column 25.
+5
View File
@@ -2289,3 +2289,8 @@
Type a size in any unit, such as 5 cm or 300 px. The other side follows, so the picture keeps its proportions. 可用任何單位輸入大小,例如 5 cm 或 300 px。另一邊隨之調整,圖片保持原有比例。
Import… 匯入…
# File › Home greeting
Good morning 早安
Good afternoon 午安
Good evening 晚安
Can't render this file because it contains an unexpected character in line 926 and column 23.
+3 -2
View File
@@ -1,6 +1,6 @@
# Localization parity with Microsoft Word
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-16 · **Change:** minor (how to install the Hunspell dictionaries on Windows, macOS and Linux: `docs/spelling-dictionaries.md`; previously minor: Read Aloud speaks each sentence in its own language, #1843; previously minor: Indonesian proofing: id-ID spelling from the installed Hunspell dictionary, dictionary-driven suggestions, generic checks with Indonesian messages, #498; previously trivial: print-area strings translated in every catalog; previously trivial: Italian: the interface audit checks the Italian catalog, `Privacy Settings` wording; previously trivial: Italian grammar: `po'`, `qual è`, `È`, `un`/`un'` rules; more elisions and truncations in spelling; previously trivial: Czech interface catalog completed, 2,447 entries; previously trivial: interface audit runs in CI again: size labels translated, 20 strings in every catalog, Read Aloud error race fixed, #1128; previously trivial: Review › Language reaches every language again — Set Proofing Language… and Set As Default, #860; previously minor: Italian proofing: it-IT spelling from the installed Hunspell dictionary, accent-first suggestions, conservative grammar with Italian messages; previously minor: Portuguese proofing; previously trivial: Turkish interface catalog completed, 2,325 entries, #774; previously minor: Hungarian interface added; previously trivial: sorting and table numbers follow the text's language, #836, #837; previously minor: Polish interface; Polish proofing — spelling, grammar, hyphenation — and a proofing language per run; previously minor: Turkish interface added; previously major: first version; catalogs measured from `crates/ui-egui/src/i18n`, Word's languages from its bundle listing) · **Target:** Microsoft Word (Microsoft 365) for Mac 16.113.4
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-20 · **Change:** trivial (the File › Home greeting is translated in every catalog; previously minor: how to install the Hunspell dictionaries on Windows, macOS and Linux: `docs/spelling-dictionaries.md`; previously minor: Read Aloud speaks each sentence in its own language, #1843; previously minor: Indonesian proofing: id-ID spelling from the installed Hunspell dictionary, dictionary-driven suggestions, generic checks with Indonesian messages, #498; previously trivial: print-area strings translated in every catalog; previously trivial: Italian: the interface audit checks the Italian catalog, `Privacy Settings` wording; previously trivial: Italian grammar: `po'`, `qual è`, `È`, `un`/`un'` rules; more elisions and truncations in spelling; previously trivial: Czech interface catalog completed, 2,447 entries; previously trivial: interface audit runs in CI again: size labels translated, 20 strings in every catalog, Read Aloud error race fixed, #1128; previously trivial: Review › Language reaches every language again — Set Proofing Language… and Set As Default, #860; previously minor: Italian proofing: it-IT spelling from the installed Hunspell dictionary, accent-first suggestions, conservative grammar with Italian messages; previously minor: Portuguese proofing; previously trivial: Turkish interface catalog completed, 2,325 entries, #774; previously minor: Hungarian interface added; previously trivial: sorting and table numbers follow the text's language, #836, #837; previously minor: Polish interface; Polish proofing — spelling, grammar, hyphenation — and a proofing language per run; previously minor: Turkish interface added; previously major: first version; catalogs measured from `crates/ui-egui/src/i18n`, Word's languages from its bundle listing) · **Target:** Microsoft Word (Microsoft 365) for Mac 16.113.4
Interface languages, script support and proofing per language. How translation works (catalog
format, adding a language, clean-room rule): `crates/ui-egui/src/i18n/mod.rs`.
@@ -26,7 +26,7 @@ native-speaker review (human).
`pl`, `pl-PL` and `pl_PL.UTF-8` system locales pick Polish automatically.
- Of the 675 English strings a scan extracts from `tl!(…)` calls and command labels/locations, each
catalog covers **661 (98%)**. Some newer dialog and pane strings (Equation tab tooltips, Zotero,
Read Aloud, Backstage greetings) aren't wrapped in `tl!` yet, so they show in English in every
Read Aloud) aren't wrapped in `tl!` yet, so they show in English in every
language: the true share of visible strings is **~93–95%** (estimated).
- Pending PRs: Norwegian Bokmål (#208) and Nynorsk (#210), Hebrew with RTL (#20).
- **Proofing: English, Polish, Portuguese, Italian, Russian, Czech and Indonesian**, chosen per run from its language (`w:lang`, resolved through
@@ -198,6 +198,7 @@ WordCraft keeps 2,54 cm).
| Date | Change | Summary |
|---|---|---|
| 2026-10-20 | trivial | File › Home's greeting (Good morning / afternoon / evening) added to the nine catalogs that lacked it (de, et, ja, pt-br, sr, sr-latn, uk, zh-hans, zh-hant); a test keeps it in every language |
| 2026-10-14 | trivial | The sentence-capital rule (English, Polish, Croatian, Italian, Turkish, Portuguese) skips the first word of a list item (#1741) |
| 2026-10-16 | minor | Indonesian proofing (#498): id-ID spelling from the installed Hunspell `id_ID` dictionary (not bundled), Czech's dictionary-driven suggestions, repeated-word (hyphenated reduplication offered) and spacing checks with Indonesian messages; Review › Language, the status bar, Set Proofing Language and File › Options › Proofing list Indonesian; estimates unchanged |
| 2026-10-16 | trivial | Read Aloud picks a voice for the sentence's language (run tag, else script) when the default voice doesn't speak it, reads Windows text as UTF-8 |