mirror of
https://github.com/storytold/wordcraft.git
synced 2026-10-29 21:07:24 -06:00
* i18n(pl): citation style names, audit coverage and attribution (#750) Follow-up to #871. - pl.tsv: add the 12 citation style names (APA, Chicago, GOST, ISO 690, ...) that hu.tsv and bg.tsv already translate. - tests.rs: Polish also checked against the citation styles; Italian and Hungarian may differ only by the obsolete "Style: APA". - audit.rs: Polish joins the catalogs that must cover every looked-up string. - ATTRIBUTION.md: credit Aleksander Kutycki (@olekkut) with Gemini 3.8 Flash for pl.tsv. - contributors/people.toml: add [people.olekkut] entry. Co-Authored-By: Gemini 3.8 Flash <noreply@google.com> * i18n(pl): one-line equation gallery pieces (Large, Limit and, Log) so Polish matches Italian Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Gemini 3.8 Flash <noreply@google.com> Co-authored-by: Brandon Thomas <echelon@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Gemini 3.8 Flash
Claude Opus 5.5
Brandon Thomas
parent
c2b97f1180
commit
9acc34f22c
+1
-1
@@ -67,7 +67,7 @@ Generated-in-code art is original and has no file to list: the UI icon set (`cra
|
||||
| craft-fonts (optional build input, not files in this repo): BIZ UDPGothic, BIZ UDMincho, Shippori Mincho, Noto Sans CJK SC, Noto Sans Arabic | see https://github.com/storytold/craft-fonts/blob/main/ATTRIBUTION.md | embedded only when built with `CRAFT_FONTS_DIR` (all official releases) | OFL-1.1 | Japanese and Chinese UI, Japanese document fallback |
|
||||
| `crates/ui-egui/src/i18n/uk.tsv` | @dmatviichuk with Codex | Original translation from the English interface labels in this repository; no other product localisation copied | MIT OR Apache-2.0 | Ukrainian interface catalog; spelling checked with external VESUM and ULIF dictionaries, neither bundled |
|
||||
| `crates/ui-egui/src/i18n/et.tsv` | @henno with Codex | Original translation from the English interface labels in this repository; no other product localisation copied | MIT OR Apache-2.0 | Estonian interface catalog |
|
||||
| `crates/ui-egui/src/i18n/pl.tsv` | Konrad Witkowski with Claude (AI agent) | Original translation from the English interface labels in this repository; no other product localisation copied | MIT OR Apache-2.0 | Polish interface catalog; not yet reviewed by a second native speaker |
|
||||
| `crates/ui-egui/src/i18n/pl.tsv` | Konrad Witkowski with Claude (AI agent); Aleksander Kutycki (@olekkut) with Gemini 3.8 Flash | Original translation from the English interface labels in this repository; no other product localisation copied | MIT OR Apache-2.0 | Polish interface catalog; not yet reviewed by a second native speaker |
|
||||
| `crates/ui-egui/src/i18n/pt-br.tsv` | @edurbs with ZCode | Original translation from the English interface labels in this repository; no other product localisation copied | MIT OR Apache-2.0 | Brazilian Portuguese interface catalog; spelling checked with the external pt_BR Hunspell dictionary, not bundled |
|
||||
| `crates/ui-egui/src/i18n/cs.tsv` | @DanielKnourek with Antigravity for VS Code | Original translation from the English interface labels in this repository; no other product localisation copied | MIT OR Apache-2.0 | Czech interface catalog; review suggestions by @Losminek |
|
||||
| `crates/ui-egui/src/i18n/de.tsv` | @arekown with Kimi | Original translation from the English interface labels in this repository; no other product localisation copied | MIT OR Apache-2.0 | German interface catalog |
|
||||
|
||||
@@ -135,3 +135,8 @@ sync_github_name = false
|
||||
real_name = "Andrej Škvorc"
|
||||
display_name = "Andrej Škvorc"
|
||||
sync_github_name = false
|
||||
|
||||
[people.olekkut]
|
||||
real_name = "Aleksander Kutycki"
|
||||
display_name = "Aleksander Kutycki"
|
||||
sync_github_name = true
|
||||
|
||||
@@ -333,9 +333,9 @@ fn untranslated_interface_text() {
|
||||
complete_catalogs_have_every_string_the_interface_looked_up(pseudo::looked_up());
|
||||
}
|
||||
|
||||
/// Russian, Hungarian, Turkish, Bulgarian, Italian, Swedish and Croatian cover everything the audit saw
|
||||
/// translated, plus the equation gallery's labels (shown in menus the audit doesn't open one by
|
||||
/// one). Numbered style names go through a template.
|
||||
/// Russian, Hungarian, Turkish, Bulgarian, Italian, Swedish, Croatian and Polish cover everything the
|
||||
/// audit saw translated, plus the equation gallery's labels (shown in menus the audit doesn't open
|
||||
/// one by one). Numbered style names go through a template.
|
||||
fn complete_catalogs_have_every_string_the_interface_looked_up(mut keys: std::collections::BTreeSet<String>) {
|
||||
use wordcraft_engine::math_gallery::{BUILT_INS, STRUCTURES, SYMBOL_SETS};
|
||||
keys.extend(BUILT_INS.iter().map(|(_, label, _)| label.to_string()));
|
||||
@@ -379,7 +379,7 @@ fn complete_catalogs_have_every_string_the_interface_looked_up(mut keys: std::co
|
||||
// translate: its placeholder names aren't words the interface shows.
|
||||
let words = |s: &str| english_words(&s.split('{').map(|p| p.split_once('}').map_or(p, |(_, rest)| rest)).collect::<String>());
|
||||
let mut report = String::new();
|
||||
for code in ["ru", "hu", "tr", "bg", "it", "sv", "hr"] {
|
||||
for code in ["ru", "hu", "tr", "bg", "it", "sv", "hr", "pl"] {
|
||||
let lang = super::Lang::from_code(code).unwrap_or(super::Lang::EN);
|
||||
let missing: Vec<&String> =
|
||||
keys.iter().filter(|s| words(s) && !super::has(lang, s) && !numbered(s) && !same(s) && !script_error(s)).collect();
|
||||
|
||||
@@ -2575,6 +2575,21 @@ preview Title Tytuł
|
||||
Suggested Sugerowane
|
||||
Set Proofing Language… Ustaw język sprawdzania…
|
||||
Language Preferences… Preferencje językowe…
|
||||
APA APA
|
||||
Chicago Chicago
|
||||
GB/T 7714 GB/T 7714
|
||||
GOST (name sort) GOST (sortowanie według nazwiska)
|
||||
GOST (title sort) GOST (sortowanie według tytułu)
|
||||
Harvard (Anglia) Harvard (Anglia)
|
||||
IEEE IEEE
|
||||
ISO 690 (author-date) ISO 690 (autor–data)
|
||||
ISO 690 (numerical) ISO 690 (numeryczny)
|
||||
MLA MLA
|
||||
SIST02 SIST02
|
||||
Turabian Turabian
|
||||
Large Duży
|
||||
Limit and Granica i
|
||||
Log Logarytm
|
||||
Printer Drukarka
|
||||
Select a printer Wybierz drukarkę
|
||||
Refresh printers Odśwież drukarki
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 25.
|
@@ -989,11 +989,17 @@ fn polish_covers_every_key_of_every_other_catalog() {
|
||||
let polish = keys(lang("pl").0.source);
|
||||
// Italian and Hungarian still carry "Style: APA", which the interface no longer shows;
|
||||
// Hungarian and Bulgarian also name the citation styles, and Bulgarian has a few one-line
|
||||
// pieces of gallery labels. Polish matches every other catalog, including the built-in style
|
||||
// names, citation styles and equation gallery.
|
||||
for other in Lang::all().filter(|l| *l != Lang::EN && !matches!(l.code(), "pl" | "it" | "hu" | "bg" | "vi" | "sv" | "hr")) {
|
||||
let mut missing: Vec<String> = keys(other.0.source).difference(&polish).cloned().collect();
|
||||
missing.sort();
|
||||
assert!(missing.is_empty(), "pl lacks {}'s {missing:?}", other.code());
|
||||
}
|
||||
for code in ["it", "hu"] {
|
||||
let missing: Vec<String> = keys(lang(code).0.source).difference(&polish).cloned().collect();
|
||||
assert_eq!(missing, ["Style: APA"], "pl vs {code}");
|
||||
}
|
||||
let pl = lang("pl");
|
||||
assert_eq!(tr(pl, "File"), "Plik");
|
||||
assert_eq!(tr(pl, "Home"), "Start");
|
||||
@@ -1002,6 +1008,8 @@ fn polish_covers_every_key_of_every_other_catalog() {
|
||||
assert_eq!(tr(pl, "Save"), "Zapisz");
|
||||
assert_eq!(tr(pl, "Spelling & Grammar"), "Pisownia i gramatyka");
|
||||
assert_eq!(tr(pl, "Polish"), "Polski");
|
||||
assert_eq!(tr(pl, "GOST (name sort)"), "GOST (sortowanie według nazwiska)");
|
||||
assert_eq!(tr(pl, "ISO 690 (author-date)"), "ISO 690 (autor–data)");
|
||||
assert_eq!(tr(pl, "unknown future label"), "unknown future label");
|
||||
assert_eq!(fmt(tr(pl, "Exported {path}"), &[("path", "draft-{words}.docx")]), "Wyeksportowano: draft-{words}.docx");
|
||||
assert_eq!(fmt(tr(pl, "Page {page} of {pages}"), &[("page", "3"), ("pages", "9")]), "Strona 3 z 9");
|
||||
|
||||
Reference in New Issue
Block a user