Make auto lang more robust

This commit is contained in:
Alex Hua 2023-04-08 21:11:22 +08:00
parent 5981551998
commit 6271e51376

View File

@ -1,27 +1,25 @@
{{ if .Site.IsMultiLingual }} {{ if .Site.IsMultiLingual }}
<script> <script>
(function () { (function () {
const BASE_URL = '{{ .Site.BaseURL }}'; if (window.location.pathname !== '/') return;
const DEFAULT_LANG = '{{ .Site.Language.Lang }}';
const CURRENT_LANG = '{{ .Site.Language.Lang }}';
if (!window.location.href.endsWith(BASE_URL)) return;
let userLangList = [...navigator.languages]; let userLangList = [...navigator.languages];
if (localStorage.userLang) if (localStorage.userLang)
userLangList.unshift(localStorage.userLang); userLangList.unshift(localStorage.userLang);
else
localStorage.userLang = userLangList[0].toLowerCase();
let supportLangs = new Set(); let supportLangs = new Set();
{{ range .Site.Languages }} {{ range .Site.Languages }}
supportLangs.add('{{ .Lang }}'); supportLangs.add('{{ .Lang }}');
{{ end }} {{ end }}
for (let userLang of userLangList) { for (let userLang of userLangList) {
userLang = userLang.toLowerCase(); userLang = userLang.toLowerCase();
if (DEFAULT_LANG == userLang) { if (CURRENT_LANG == userLang) {
return; return;
} }
if (supportLangs.has(userLang)) { if (supportLangs.has(userLang)) {
localStorage.userLang = userLang;
window.location.href = window.location.href + userLang; window.location.href = window.location.href + userLang;
return; return;
} }