diff options
Diffstat (limited to 'internal/readings/offline.go')
| -rw-r--r-- | internal/readings/offline.go | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/internal/readings/offline.go b/internal/readings/offline.go index 59a03fa..c2c276b 100644 --- a/internal/readings/offline.go +++ b/internal/readings/offline.go @@ -8,6 +8,7 @@ import ( "github.com/lukaszkasprzak/lectio/internal/caldata" "github.com/lukaszkasprzak/lectio/internal/calendar" "github.com/lukaszkasprzak/lectio/internal/config" + "github.com/lukaszkasprzak/lectio/internal/i18n" "github.com/lukaszkasprzak/lectio/internal/liturgy" "github.com/lukaszkasprzak/lectio/internal/naming" ) @@ -60,24 +61,47 @@ var ofPart = map[string]struct{ id, heading string }{ "gospel": {"ewangelia", "Ewangelia"}, } -// efPartHeading gives the traditional (1962) section's heading per UI language; -// the EF has only an epistle/lesson and a gospel. Unlike the OF headings these -// are not translated downstream, so they are set in the target language here. +// efPartHeading gives the traditional (1962) section's ID and heading per UI +// language; the EF has only an epistle/lesson and a gospel. The label words are +// i18n data, like the modern ones. Unlike the OF headings these are not +// translated downstream (render.LocalizeHeading only handles modern IDs), so +// they are resolved in the target language here. func efPartHeading(part, lang string) (id, heading string) { - pl := lang == "pl" switch part { case "first": - if pl { - return "epistola", "Lekcja" - } - return "epistola", "Lesson" + id = "epistola" case "gospel": - if pl { - return "evangelium", "Ewangelia" - } - return "evangelium", "Gospel" + id = "evangelium" + default: + return "", "" + } + heading = i18n.Get(lang).PartLabel[id] + if heading == "" { + heading = id + } + return id, heading +} + +// ofPartOrder and efPartOrder are the display orders of each lectionary's +// sections. They are the single source of truth for which part IDs exist. +var ( + ofPartOrder = []string{"pierwsze_czytanie", "psalm", "drugie_czytanie", "aklamacja", "ewangelia"} + efPartOrder = []string{"epistola", "evangelium"} +) + +// PartIDs returns the part IDs the given lectionary can emit, in display order. +// lect takes config.Config.Lectionary's values: "new" or "traditional". An +// unknown lectionary returns nil. Callers that build per-part UI (the dlectio +// app's reading filters) must derive their list from this rather than +// hardcoding IDs. +func PartIDs(lect string) []string { + switch lect { + case "new": + return append([]string(nil), ofPartOrder...) + case "traditional": + return append([]string(nil), efPartOrder...) } - return "", "" + return nil } // sectionsFor turns computed readings into render-ready sections, tagging each |
