diff options
Diffstat (limited to 'src/templates/language.html.tmpl')
-rw-r--r-- | src/templates/language.html.tmpl | 130 |
1 files changed, 103 insertions, 27 deletions
diff --git a/src/templates/language.html.tmpl b/src/templates/language.html.tmpl index ee66bf8..c3bfa94 100644 --- a/src/templates/language.html.tmpl +++ b/src/templates/language.html.tmpl @@ -1,48 +1,124 @@ +{{ define "header" }} +{{ template "header-navbar" . }} + +<style> + .lang-fade-in-out { + transition: opacity 1s; + + &.hide { + opacity: 0; + } + } + + .lang-grid { + --button-min-width: 22ch; + + button { + display: flex; + align-items: center; + padding-block: 1ch; + text-align: left; + + > :first-child { + font-size: 2em; + font-weight: 600; /* Between normal and bold */ + min-width: calc(var(--pico-form-element-spacing-horizontal) + 2ch); + } + } + } +</style> + +<script> + (() => { + let i = -1; + let nodes; + const Δt = 5000; /* Total time a text is shown */ + const Δf = 1000; /* Fade duration */ + const texts = [ + {{ $save := . }} + {{ $ps := .Printers }} + {{ range locales }} + {{ if (and .Enabledp (ne .Bcp $save.Printer.Bcp)) }} + [ + "{{ .Bcp }}", + {{ $p := (index $ps .Bcp) }} + "{{ $p.Get `Select Your Language` }}", + "{{ $p.Get `Eurozone Languages` }}", + "{{ $p.Get `Other Languages` }}", + ], + {{ end }} + {{ end }} + ]; + + const change = () => { + nodes.forEach(n => n.classList.add("hide")); + setTimeout(() => { + i = (i + 1) % texts.length; + nodes.forEach((n, j) => { + const [lang, ...strs] = texts[i]; + n.lang = lang; + n.textContent = strs[j]; + n.classList.remove("hide"); + }); + }, Δf); + }; + + document.addEventListener("DOMContentLoaded", _ => { + nodes = $$('.lang-fade-in-out'); + change(); + setInterval(change, Δt); + }); + })(); +</script> +{{ end }} + {{ define "content" }} -<header> +<header class="container"> {{ template "navbar" . }} - <h1>{{ .T "Select Your Language" }}</h1> + <h1> + {{ .Get "Select Your Language" }} + <br><span class="lang-fade-in-out translation"> </span> + </h1> </header> -<main> - <p> - {{ .T "Select your preferred language to use on the site." }} - </p> - <p> - If you are an American user, it’s suggested that you select - American English instead of British English. This will ensure that - dates will be formatted with the month before the day. - </p> - <hr /> - <h2>{{ .T "Eurozone Languages" }}</h2> - {{ template "langgrid" true }} - <h2>{{ .T "Other Languages" }}</h2> - {{ template "langgrid" false }} +<main class="container"> + <h2> + {{ .Get "Eurozone Languages" }} + <br><span class="lang-fade-in-out translation"> </span> + </h2> + {{ template "langgrid" (tuple .Printer true) }} + <h2> + {{ .Get "Other Languages" }} + <br><span class="lang-fade-in-out translation"> </span> + </h2> + {{ template "langgrid" (tuple .Printer false) }} </main> {{ end }} {{ define "langgrid" }} -{{ $ez := . }} +{{ $p := index . 0 }} +{{ $ez := index . 1 }} <form action="/language" method="POST"> - <div class="lang-grid"> + <div class="button-grid lang-grid"> {{ range locales }} - {{ if eq $ez .Eurozone }} + {{ if eq $ez .Eurozonep }} <button type="submit" name="locale" - value={{ .Bcp }} - {{ if not .Enabled }} + value="{{ .Bcp }}" + {{ if not .Enabledp }} disabled {{ end }} > - <span - lang={{ .Bcp }} - data-code={{ .Language | toUpper }} - > - {{ .Name }} + <span>{{ .Language | toUpper }}</span> + <span lang="{{ .Bcp }}"> + {{ .Name }}<br> + <span lang="{{ $p.Bcp }}" class="translation"> + {{ $p.GetC .Name "Language Name" }} + </span> </span> </button> {{ end }} {{ end }} </div> </form> -{{ end }} +{{ end }}
\ No newline at end of file |