Lang menu and autodetect
All checks were successful
ci / test-commons-core (push) Successful in 56s
ci / analyze (push) Successful in 1m39s
site / deploy (push) Successful in 44s
ci / test-app-seeds (push) Successful in 7m29s
release / fdroid_reference_armeabi_v7a (push) Successful in 42m36s
release / fdroid_reference_arm64_v8a (push) Successful in 33m58s
release / fdroid_reference_x86_64 (push) Successful in 26m15s
release / play (push) Successful in 12m49s

This commit is contained in:
vjrj 2026-07-21 18:24:09 +02:00
parent 1b439e9499
commit 538b28e5d2
6 changed files with 128 additions and 18 deletions

View file

@ -1,16 +1,34 @@
{{- /* Links to this page in the other language; falls back to that language's home. */ -}}
<span class="lang-switch">
{{- range .Site.Languages -}}
{{- $lang := . -}}
{{- if eq $lang.Lang $.Site.Language.Lang -}}
<span class="lang current" aria-current="true">{{ $lang.LanguageName }}</span>
{{- else -}}
{{- $target := "" -}}
{{- range $.AllTranslations -}}
{{- if eq .Language.Lang $lang.Lang -}}{{- $target = .RelPermalink -}}{{- end -}}
{{- end -}}
{{- if not $target -}}{{- $target = ($lang.Lang | printf "/%s/" | relURL) -}}{{- end -}}
<a class="lang" href="{{ $target }}" lang="{{ $lang.LanguageCode }}">{{ $lang.LanguageName }}</a>
{{- /*
A typical "globe + code" language menu, done with <details>/<summary> so it
needs no JS (site stays static per config.toml). Links to this page in the
other language; falls back to that language's home.
*/ -}}
<details class="lang-switch">
<summary aria-label="{{ T "navLanguage" }}">
{{- /* Material Icons "translate" glyph (文A) — the same icon the app uses
for its language picker (Icons.translate in settings_screen.dart).
Inline so it needs no icon font or external request (self-contained
per CSP). */ -}}
<svg class="lang-globe" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
<path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"/>
</svg>
<span class="lang-code">{{ .Site.Language.LanguageCode | upper }}</span>
</summary>
<ul class="lang-menu">
{{- range .Site.Languages -}}
{{- $lang := . -}}
<li>
{{- if eq $lang.Lang $.Site.Language.Lang -}}
<span class="lang current" aria-current="true">{{ $lang.LanguageName }}</span>
{{- else -}}
{{- $target := "" -}}
{{- range $.AllTranslations -}}
{{- if eq .Language.Lang $lang.Lang -}}{{- $target = .RelPermalink -}}{{- end -}}
{{- end -}}
{{- if not $target -}}{{- $target = ($lang.Lang | printf "/%s/" | relURL) -}}{{- end -}}
<a class="lang" href="{{ $target }}" lang="{{ $lang.LanguageCode }}">{{ $lang.LanguageName }}</a>
{{- end -}}
</li>
{{- end -}}
{{- end -}}
</span>
</ul>
</details>