aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/templates/language.html.tmpl
diff options
context:
space:
mode:
Diffstat (limited to 'src/templates/language.html.tmpl')
-rw-r--r--src/templates/language.html.tmpl130
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">&nbsp;</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">&nbsp;</span>
+ </h2>
+ {{ template "langgrid" (tuple .Printer true) }}
+ <h2>
+ {{ .Get "Other Languages" }}
+ <br><span class="lang-fade-in-out translation">&nbsp;</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