Merge pull request #2935 from aplgr/feature/client-language-redirect

✨ Add opt-in client-side language redirect
This commit is contained in:
Nuno C. authored and GitHub committed 2026-07-02 12:46:49 +01:00
commit bacf607405
5 files changed
+382

No files matched your search

+1
View File
@@ -139,6 +139,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 }}