diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-24 21:56:44 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-24 21:56:44 +0200 |
| commit | 1ab07867b425cfa8da207b904a297df29b1b177a (patch) | |
| tree | 10342a28cded44e8895ac9dd0a507357bb20f43e /internal | |
| parent | 8a7839cad92a264d68635e4c853347d763b8e457 (diff) | |
| download | lectio-1ab07867b425cfa8da207b904a297df29b1b177a.tar.gz lectio-1ab07867b425cfa8da207b904a297df29b1b177a.zip | |
i18n: localize remaining web UI chrome (nav, bookmarks, settings)
The web nav links (settings, bookmarks, home), the /reader bookmark-add
form placeholders and button, the /bookmarks filter/empty/delete labels,
and every /settings field label were hardcoded English and stayed English
under ui_language=pl. Route them all through i18n (en/pl) so the Polish UI
is fully localized. No server.go change: every page's data already carries
L: i18n.Get(cfg.UILanguage).
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/config/config.go | 2 | ||||
| -rw-r--r-- | internal/i18n/i18n.go | 60 | ||||
| -rw-r--r-- | internal/web/templates/bookmarks.html | 10 | ||||
| -rw-r--r-- | internal/web/templates/index.html | 4 | ||||
| -rw-r--r-- | internal/web/templates/reader.html | 12 | ||||
| -rw-r--r-- | internal/web/templates/settings.html | 24 |
6 files changed, 86 insertions, 26 deletions
diff --git a/internal/config/config.go b/internal/config/config.go index f4c9fc8..e2ea0d3 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -25,7 +25,7 @@ var seedTOML []byte // Version is lectio's release version, shared by every binary's // -v/--version output (lectio, lectio-ui, lectio-web). -const Version = "0.24.0" +const Version = "0.24.1" // validVersions are the five scripture versions lectio understands. var validVersions = map[string]bool{ diff --git a/internal/i18n/i18n.go b/internal/i18n/i18n.go index 2e730ee..16d489a 100644 --- a/internal/i18n/i18n.go +++ b/internal/i18n/i18n.go @@ -57,6 +57,24 @@ type UI struct { // 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, WebTradLang, 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 @@ -139,6 +157,27 @@ var enUI = UI{ NavReader: "reader", WebBook: "book", WebChapter: "chapter", + NavHome: "home", + NavSettings: "settings", + NavBookmarks: "bookmarks", + WebVerseOptional: "verse (optional)", + WebTagsPlaceholder: "tags, comma-separated", + WebAddBookmark: "bookmark", + WebAllTags: "all", + WebNoBookmarks: "No bookmarks yet.", + WebDelete: "delete", + WebSaved: "Saved.", + WebTradLang: "traditional language", + WebUILang: "UI language", + WebSiglaStyle: "sigla style", + WebDefaultVersion: "default version", + WebVersions: "versions", + WebWebVersions: "web versions", + WebOffline: "offline", + WebWidth: "width", + WebPort: "web port", + WebPager: "pager", + WebSave: "Save", Export: "download", Calendar: "month calendar", NoReadingsDay: "no readings for this day", @@ -204,6 +243,27 @@ var plUI = UI{ NavReader: "czytnik", WebBook: "księga", WebChapter: "rozdział", + NavHome: "strona główna", + NavSettings: "ustawienia", + NavBookmarks: "zakładki", + WebVerseOptional: "werset (opcjonalnie)", + WebTagsPlaceholder: "tagi, oddzielone przecinkami", + WebAddBookmark: "zakładka", + WebAllTags: "wszystkie", + WebNoBookmarks: "Brak zakładek.", + WebDelete: "usuń", + WebSaved: "Zapisano.", + WebTradLang: "język tradycyjny", + WebUILang: "język interfejsu", + WebSiglaStyle: "styl sigli", + WebDefaultVersion: "wersja domyślna", + WebVersions: "wersje", + WebWebVersions: "wersje web", + WebOffline: "offline", + WebWidth: "szerokość", + WebPort: "port web", + WebPager: "pager", + WebSave: "Zapisz", Export: "pobierz", Calendar: "kalendarz miesiąca", NoReadingsDay: "brak czytań na ten dzień", diff --git a/internal/web/templates/bookmarks.html b/internal/web/templates/bookmarks.html index 3597b74..efc988a 100644 --- a/internal/web/templates/bookmarks.html +++ b/internal/web/templates/bookmarks.html @@ -16,19 +16,19 @@ <div class="page"> <p> - <a class="nav-link" href="/reader">← reader</a> - <a class="nav-link" href="/">home</a> + <a class="nav-link" href="/reader">← {{.L.NavReader}}</a> + <a class="nav-link" href="/">{{.L.NavHome}}</a> </p> <nav class="tag-filter"> - <a class="nav-link{{if eq .Tag ""}} active{{end}}" href="/bookmarks">all</a> + <a class="nav-link{{if eq .Tag ""}} active{{end}}" href="/bookmarks">{{.L.WebAllTags}}</a> {{range .AllTags}} <a class="nav-link{{if eq $.Tag .}} active{{end}}" href="/bookmarks?tag={{.}}">{{.}}</a> {{end}} </nav> {{if not .Items}} - <p>No bookmarks yet.</p> + <p>{{.L.WebNoBookmarks}}</p> {{else}} <div class="bookmarks"> {{range .Items}} @@ -38,7 +38,7 @@ {{if .Tags}}<span class="tags">{{range .Tags}}#{{.}} {{end}}</span>{{end}} <form method="post" action="/bookmarks/delete"> <input type="hidden" name="id" value="{{.ID}}"> - <button type="submit">delete</button> + <button type="submit">{{$.L.WebDelete}}</button> </form> </div> {{end}} diff --git a/internal/web/templates/index.html b/internal/web/templates/index.html index 1e43df4..c8a48ed 100644 --- a/internal/web/templates/index.html +++ b/internal/web/templates/index.html @@ -62,8 +62,8 @@ </label> <a class="nav-link" href="/reader">{{.L.NavReader}} →</a> - <a class="nav-link" href="/settings">settings</a> - <a class="nav-link" href="/bookmarks">bookmarks</a> + <a class="nav-link" href="/settings">{{.L.NavSettings}}</a> + <a class="nav-link" href="/bookmarks">{{.L.NavBookmarks}}</a> </form> <label class="theme-picker">{{.L.Theme}} diff --git a/internal/web/templates/reader.html b/internal/web/templates/reader.html index 02ecf38..ef144cc 100644 --- a/internal/web/templates/reader.html +++ b/internal/web/templates/reader.html @@ -20,8 +20,8 @@ <form class="controls" action="/reader" method="get" hx-get="/reader" hx-target="#reader-root" hx-select="#reader-root" hx-swap="outerHTML" hx-trigger="change"> <a class="nav-link" href="/">← {{.L.BannerReadings}}</a> - <a class="nav-link" href="/settings">settings</a> - <a class="nav-link" href="/bookmarks">bookmarks</a> + <a class="nav-link" href="/settings">{{.L.NavSettings}}</a> + <a class="nav-link" href="/bookmarks">{{.L.NavBookmarks}}</a> <label>{{.L.WebBook}} <select name="book"> @@ -58,10 +58,10 @@ <form class="bookmark-add" method="post" action="/reader/bookmark"> <input type="hidden" name="book" value="{{.Book}}"> <input type="hidden" name="chap" value="{{.Chap}}"> - <input type="number" name="verse" min="1" placeholder="verse (optional)"> - <input type="text" name="note" placeholder="note"> - <input type="text" name="tags" placeholder="tags, comma-separated"> - <button type="submit">★ bookmark</button> + <input type="number" name="verse" min="1" placeholder="{{.L.WebVerseOptional}}"> + <input type="text" name="note" placeholder="{{.L.ReaderMarkNote}}"> + <input type="text" name="tags" placeholder="{{.L.WebTagsPlaceholder}}"> + <button type="submit">★ {{.L.WebAddBookmark}}</button> </form> {{/* #pane is OUTSIDE the form so its reading text inherits body's diff --git a/internal/web/templates/settings.html b/internal/web/templates/settings.html index bea6fb9..be08e6d 100644 --- a/internal/web/templates/settings.html +++ b/internal/web/templates/settings.html @@ -18,7 +18,7 @@ <p><a class="nav-link" href="/">← {{.L.BannerReadings}}</a></p> - {{if .Saved}}<p class="saved">Saved.</p>{{end}} + {{if .Saved}}<p class="saved">{{.L.WebSaved}}</p>{{end}} {{if .Error}}<p class="error">{{.Error}}</p>{{end}} <form class="settings" method="post" action="/settings"> @@ -30,21 +30,21 @@ </select> </label> - <label>traditional language + <label>{{.L.WebTradLang}} <select name="traditional_lang"> <option value="pl" {{if eq .Cfg.TraditionalLang "pl"}}selected{{end}}>pl</option> <option value="en" {{if eq .Cfg.TraditionalLang "en"}}selected{{end}}>en</option> </select> </label> - <label>UI language + <label>{{.L.WebUILang}} <select name="ui_language"> <option value="en" {{if eq .Cfg.UILanguage "en"}}selected{{end}}>en</option> <option value="pl" {{if eq .Cfg.UILanguage "pl"}}selected{{end}}>pl</option> </select> </label> - <label>sigla style + <label>{{.L.WebSiglaStyle}} <select name="sigla_style"> <option value="auto" {{if eq .Cfg.SiglaStyle "auto"}}selected{{end}}>auto</option> <option value="polish" {{if eq .Cfg.SiglaStyle "polish"}}selected{{end}}>polish</option> @@ -66,37 +66,37 @@ </select> </label> - <label>default version + <label>{{.L.WebDefaultVersion}} <select name="default_version"> {{range .VersionOpts}}<option value="{{.Code}}" {{if eq .Code $.Cfg.DefaultVersion}}selected{{end}}>{{.Code}}</option>{{end}} </select> </label> <div class="row"> - versions + {{.L.WebVersions}} {{range .VersionOpts}}<label><input type="checkbox" name="versions" value="{{.Code}}" {{if .Checked}}checked{{end}}> {{.Code}}</label>{{end}} </div> <div class="row"> - web versions + {{.L.WebWebVersions}} {{range .WebVersionOpts}}<label><input type="checkbox" name="web_versions" value="{{.Code}}" {{if .Checked}}checked{{end}}> {{.Code}}</label>{{end}} </div> <div class="row"> <label><input type="checkbox" name="all" {{if .Cfg.All}}checked{{end}}> {{.L.OptAll}}</label> - <label><input type="checkbox" name="offline" {{if .Cfg.Offline}}checked{{end}}> offline</label> + <label><input type="checkbox" name="offline" {{if .Cfg.Offline}}checked{{end}}> {{.L.WebOffline}}</label> <label><input type="checkbox" name="web_mono" {{if .Cfg.WebMono}}checked{{end}}> {{.L.Mono}}</label> </div> - <label>width + <label>{{.L.WebWidth}} <input type="number" name="width" value="{{.Cfg.Width}}"> </label> - <label>web port + <label>{{.L.WebPort}} <input type="number" name="web_port" value="{{.Cfg.WebPort}}"> </label> - <label>pager + <label>{{.L.WebPager}} <input type="text" name="pager" value="{{.Cfg.Pager}}"> </label> @@ -105,7 +105,7 @@ </label> <div class="row"> - <button type="submit">Save</button> + <button type="submit">{{.L.WebSave}}</button> </div> </form> |
