✨ Add opt-in client-side language redirect

This commit is contained in:
André Plöger committed 2026-05-10 10:47:49 -03:00
1 parent da8ca782aa
commit 3a86a7656e
5 files changed
+305

No files matched your search

+1
View File
@@ -129,6 +129,7 @@
type="text/javascript"
src="{{ $jsAppearance.RelPermalink }}"
integrity="{{ $jsAppearance.Data.Integrity }}"></script>
{{ partial "language-redirect.html" . }}
{{ $enableA11y := .Site.Params.enableA11y | default false }}
{{ if $enableA11y }}
{{ $jsA11y := resources.Get "js/a11y.js" | resources.Minify | resources.Fingerprint $alg }}
+35
View File
@@ -0,0 +1,35 @@
{{ $params := site.Params.languageRedirect | default dict }}
{{ if and ($params.enabled | default false) hugo.IsMultilingual }}
{{ $translations := slice }}
{{ range .AllTranslations }}
{{ $translations = $translations | append (dict "lang" .Language.Lang "languageCode" (.Language.LanguageCode | default "") "url" .RelPermalink) }}
{{ end }}
{{ $browserRedirectHomeOnly := true }}
{{ if isset $params "browserredirecthomeonly" }}
{{ $browserRedirectHomeOnly = $params.browserRedirectHomeOnly }}
{{ end }}
{{ $storedLanguageRedirect := true }}
{{ if isset $params "storedlanguageredirect" }}
{{ $storedLanguageRedirect = $params.storedLanguageRedirect }}
{{ end }}
{{ $fallbackLanguage := hugo.Sites.Default.Language.Lang }}
{{ with $params.fallbackLanguage }}
{{ $fallbackLanguage = . }}
{{ end }}
{{ $config := dict "enabled" true "storageKey" ($params.storageKey | default "blowfish_preferred_language") "fallbackLanguage" $fallbackLanguage "browserRedirectHomeOnly" $browserRedirectHomeOnly "storedLanguageRedirect" $storedLanguageRedirect "currentLanguage" .Language.Lang "currentLanguageCode" (.Language.LanguageCode | default "") "isHome" .IsHome "translations" $translations }}
<script>
window.BlowfishLanguageRedirectConfig = {{ $config | jsonify | safeJS }};
</script>
{{ $alg := site.Params.fingerprintAlgorithm | default "sha512" }}
{{ with resources.Get "js/language-redirect.js" }}
{{ $jsLanguageRedirect := . | resources.Minify | resources.Fingerprint $alg }}
<script
type="text/javascript"
src="{{ $jsLanguageRedirect.RelPermalink }}"
integrity="{{ $jsLanguageRedirect.Data.Integrity }}"></script>
{{ end }}
{{ end }}