mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-06-06 07:26:45 +00:00
fix: language switching now strictly follows URL path
- Remove localStorage dependency for language persistence - Add route change listener for language updates - Simplify language switching logic - Fix language reset issue when refreshing /en pages
This commit is contained in:
31
lib/lang.js
31
lib/lang.js
@@ -70,34 +70,21 @@ export function generateLocaleDict(langString) {
|
||||
*/
|
||||
export function initLocale(lang, locale, changeLang, changeLocale) {
|
||||
if (isBrowser) {
|
||||
// 用户请求的语言
|
||||
let queryLang =
|
||||
getQueryVariable('locale') ||
|
||||
getQueryVariable('lang') ||
|
||||
loadLangFromLocalStorage()
|
||||
// 只使用 URL 参数,忽略 localStorage
|
||||
const queryLang = getQueryVariable('locale') || getQueryVariable('lang')
|
||||
|
||||
if (queryLang) {
|
||||
// 用正则表达式匹配有效的语言标识符例如zh-CN(可选的 -CN 部分)
|
||||
queryLang = queryLang.match(/[a-zA-Z]{2}(?:-[a-zA-Z]{2})?/)
|
||||
if (queryLang) {
|
||||
queryLang = queryLang[0]
|
||||
const match = queryLang.match(/[a-zA-Z]{2}(?:-[a-zA-Z]{2})?/)
|
||||
if (match) {
|
||||
const targetLang = match[0]
|
||||
changeLang(targetLang)
|
||||
const targetLocale = generateLocaleDict(targetLang)
|
||||
changeLocale(targetLocale)
|
||||
}
|
||||
}
|
||||
|
||||
let currentLang = lang
|
||||
if (queryLang && queryLang !== lang) {
|
||||
currentLang = queryLang
|
||||
}
|
||||
|
||||
changeLang(currentLang)
|
||||
saveLangToLocalStorage(currentLang)
|
||||
|
||||
const targetLocale = generateLocaleDict(currentLang)
|
||||
if (JSON.stringify(locale) !== JSON.stringify(currentLang)) {
|
||||
changeLocale(targetLocale)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取语言
|
||||
* @returns {*}
|
||||
|
||||
Reference in New Issue
Block a user