aboutsummaryrefslogtreecommitdiff
path: root/internal/i18n/i18n.go
blob: 15894765dd2d6e4ccf689a70c19eaeaf2f0582a8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Package i18n holds lectio's UI-chrome strings -- the version-column labels,
// the TUI keybar/messages, the CLI banner words, the web control labels, and the
// modern-lectionary section-heading label words. It localises the chrome only,
// never the scripture verse text or citation, which stay source-language.
//
// English is the built-in baseline and Polish ships embedded (lang/en.ini,
// lang/pl.ini). Any language is user-overridable at <config>/ui/<code>.ini,
// resolved per key with an English fallback (see lang.go / Get), so a user can
// translate the whole interface for their language without a rebuild.
package i18n

// UI is one language's complete set of chrome strings.
type UI struct {
	// Version names each bible version for column headers / prose, keyed by
	// version code (wuj, vul, grb, drb).
	Version map[string]string

	// PartLabel names each modern-lectionary section's heading label word,
	// keyed by liturgy.Section.PartID (pierwsze_czytanie, psalm,
	// drugie_czytanie, aklamacja, ewangelia). The pl entries are the exact
	// prefixes niedziela.pl's scraped headings carry, used by
	// render.LocalizeHeading to recognise and swap the label word while
	// keeping the citation untouched.
	PartLabel map[string]string

	// TUI keybar and status messages. NoReadingsFor and ErrorPrefix each
	// carry their own single trailing space (the TUI concatenates a date or
	// error string directly onto them, no separator added at the call site).
	FooterKeys, Loading, NoReadingsFor, ErrorPrefix, ErrorHint string

	// JumpPrompt is the TUI's "d" date-jump prompt label.
	JumpPrompt string

	// Reader-mode (lectio-ui --reader) chrome.
	ReaderTitle, ReaderPickKeys, ReaderReadKeys, ReaderNoText, ReaderNoMatch string
	// Reader bookmarks: the mark-note prompt, the bookmarks-list title/keybar,
	// and the empty-list note.
	ReaderMarkPrompt, ReaderBookmarksTitle, ReaderBookmarksKeys, ReaderNoBookmarks string
	ReaderMarkVerseKeys, ReaderConfirmDelete, ReaderConfirmKeys                    string
	ReaderMarkNote, ReaderMarkTags, ReaderMarkHelp                                 string
	// Reader go-to-chapter prompt: the dialog label (rendered after the book
	// name) and its enter/esc help line.
	ReaderJumpChapter, ReaderJumpChapterKeys string

	// CLI banner label words and connective: the banner is
	// "<word> <BannerConnective> <date>" (e.g. "Gospel for 2026-07-22" /
	// "Ewangelia na 2026-07-22").
	BannerGospel, BannerReadings, BannerConnective string

	// Months are the localized month names (index 0 = January), for the
	// exported calendar's title.
	Months [12]string

	// Web control labels.
	Lectionary, OptModern, OptTraditional string
	Parts, OptGospel, OptAll              string
	Layout, OptHorizontal, OptColumns     string
	OptInterlinear, Theme, Mono           string

	// NoInterlinearVerses is the web interlinear pane's note when no
	// requested version could be interleaved for a section.
	NoInterlinearVerses string

	// Web reader (lectio-web /reader) control labels.
	NavReader, WebBook, WebChapter string

	// Web nav-link labels shared across the index/reader/bookmarks pages.
	NavHome, NavSettings, NavBookmarks string

	// Web /reader bookmark-add form: the verse and tags placeholders and the
	// submit button word (rendered after a ★). The note placeholder reuses
	// ReaderMarkNote.
	WebVerseOptional, WebTagsPlaceholder, WebAddBookmark string

	// Web /bookmarks page chrome: the "all tags" filter link, the empty-list
	// note, and the per-item delete button.
	WebAllTags, WebNoBookmarks, WebDelete string

	// Web /settings page labels (the ones without an existing shared field):
	// the saved confirmation, the config-field labels, and the save button.
	WebSaved, WebUILang, WebSiglaStyle, WebDefaultVersion                string
	WebVersions, WebWebVersions, WebOffline, WebWidth, WebPort, WebPager string
	WebSave                                                              string

	// Export is the web daily-page download label (txt/md/pdf links).
	Export, Calendar string

	// NoReadingsDay is the web error fragment shown when readings.Load
	// returns no sections at all for the requested date.
	NoReadingsDay string

	// NoVersion/NoVersionPartial/NoReference/NoReferenceErr are
	// render.GatherVersion/GatherVerses' lookup/citation-failure blocks,
	// rendered verbatim by cli/tui/web. NoVersion takes the version code;
	// NoVersionPartial takes the version code and the comma-joined missing
	// references; NoReferenceErr takes the underlying error (pl keeps %w so
	// it still wraps, en uses %v -- the verb only controls
	// errors.Unwrap-ability, both format identically via Error()).
	NoVersion, NoVersionPartial, NoReference, NoReferenceErr string
}