summaryrefslogtreecommitdiff
path: root/internal/i18n
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-03 23:50:26 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-03 23:50:26 +0200
commitf94ceaae997bce2168a5ab9e64a0c3afeafe0cf6 (patch)
treeff1c95b25754012742bbca55950d334ae76e8b23 /internal/i18n
parent3d3ad4ba90c4d7dea4730ef129f8c9e065f05d6e (diff)
downloadlectio-f94ceaae997bce2168a5ab9e64a0c3afeafe0cf6.tar.gz
lectio-f94ceaae997bce2168a5ab9e64a0c3afeafe0cf6.zip
i18n: correct rank doc comments and pin the Polish wording
Diffstat (limited to 'internal/i18n')
-rw-r--r--internal/i18n/i18n.go7
-rw-r--r--internal/i18n/vocab_test.go22
2 files changed, 27 insertions, 2 deletions
diff --git a/internal/i18n/i18n.go b/internal/i18n/i18n.go
index 356cc66..6785705 100644
--- a/internal/i18n/i18n.go
+++ b/internal/i18n/i18n.go
@@ -26,8 +26,11 @@ type UI struct {
// Rank names each liturgical rank, keyed by the string form of
// calendar.Rank. Two vocabularies share the map: the Ordinary Form's
// ferial/optional/memorial/feast/solemnity and the 1962 form's
- // class-1..class-4/commemoration. Rendered by the CLI's day header and
- // by the dlectio app's day banner and calendar rows.
+ // class-1..class-4/commemoration. The English values are hand-synced to
+ // agree with internal/cli/liturgy.go's own rankLabel() switch, but the
+ // CLI does not read this map -- it renders rank independently, and the
+ // two are kept in sync by hand. The actual consumers of this map are the
+ // dlectio app's day banner and calendar rows.
Rank map[string]string
// TUI keybar and status messages. NoReadingsFor and ErrorPrefix each
diff --git a/internal/i18n/vocab_test.go b/internal/i18n/vocab_test.go
index d25533a..bcd3464 100644
--- a/internal/i18n/vocab_test.go
+++ b/internal/i18n/vocab_test.go
@@ -43,3 +43,25 @@ func TestEnglishRankWordingUnchanged(t *testing.T) {
}
}
}
+
+// The Polish rank words must be exactly this spelling, diacritics included:
+// TestVocabularyCoversEveryConstant only checks non-emptiness, so a typo
+// (e.g. "uroczystosc" for "uroczystość", or a wrong diacritic) would pass
+// silently without this pin. Polish correctness is the whole point of this
+// project.
+func TestPolishRankWordingUnchanged(t *testing.T) {
+ want := map[string]string{
+ "solemnity": "uroczystość", "feast": "święto",
+ "memorial": "wspomnienie obowiązkowe", "optional": "wspomnienie dowolne",
+ "ferial": "dzień powszedni",
+ "class-1": "I klasy", "class-2": "II klasy",
+ "class-3": "III klasy", "class-4": "IV klasy",
+ "commemoration": "komemoracja",
+ }
+ ui := Get("pl")
+ for k, v := range want {
+ if got := ui.Rank[k]; got != v {
+ t.Errorf("rank[%q] = %q, want %q", k, got, v)
+ }
+ }
+}