forked from natuka/web.puabadge.com
电商翻译
This commit is contained in:
1 parent
6938e12196
commit
75e04a4de3
12 files changed
+854
-891
No files matched your search
+29
-68
@@ -12,89 +12,50 @@ import ko from 'vant/es/locale/lang/ko-KR';
|
||||
const { i18next, t } = useTranslation();
|
||||
i18n.set(t);
|
||||
|
||||
|
||||
|
||||
watch(
|
||||
() => i18next.language,
|
||||
(val: any) => {
|
||||
console.log("val", val);
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
// function getLocaleName() {
|
||||
// switch (i18next.language) {
|
||||
// case 'zh':
|
||||
// case "zh-CN":
|
||||
// return 'zh-CN';
|
||||
// case "en-US":
|
||||
// case "en":
|
||||
// return 'en-US';
|
||||
// case "es":
|
||||
// case "es-AR":
|
||||
// case "es-BO":
|
||||
// case "es-CL":
|
||||
// case "es-ES":
|
||||
// case "es-MX":
|
||||
// case "es-AR":
|
||||
// return 'es';
|
||||
// case "zh-TW":
|
||||
// case "zh-HK":
|
||||
// return 'zh-TW';
|
||||
// default:
|
||||
// return 'en';
|
||||
// }
|
||||
// }
|
||||
|
||||
function getLocale() {
|
||||
switch (i18next.language) {
|
||||
// 根据 i18next 语言获取对应的 Vant Locale
|
||||
function getVantLocale() {
|
||||
const lang = i18next.language || "zh-CN";
|
||||
switch (lang) {
|
||||
case "zh-CN":
|
||||
return zhCN;
|
||||
case "en":
|
||||
return enUS;
|
||||
case "es":
|
||||
case "es-AR":
|
||||
case "es-BO":
|
||||
case "es-CL":
|
||||
case "es-ES":
|
||||
case "es-MX":
|
||||
case "es-AR":
|
||||
case "en-US":
|
||||
return enUS;
|
||||
case "zh-TW":
|
||||
case "zh-HK":
|
||||
return zhTW;
|
||||
case "ko":
|
||||
case "ko-KR":
|
||||
return ko;
|
||||
default:
|
||||
return enUS;
|
||||
return zhCN; // 默认使用简体中文
|
||||
}
|
||||
}
|
||||
|
||||
// 更新 Vant Locale
|
||||
function updateVantLocale() {
|
||||
const lang = i18next.language || "zh-CN";
|
||||
const vantLocale = getVantLocale();
|
||||
Locale.use(lang, vantLocale);
|
||||
console.log("语言已切换为:", lang);
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
let obj = filterUrl(window.location.href)
|
||||
// console.log(obj)
|
||||
let urlLan = obj.lang;
|
||||
// 浏览器缓存判断
|
||||
let cookieLan = localStorage.getItem("i18nextLng")
|
||||
// 浏览器语言判断
|
||||
let userLan = navigator.language;
|
||||
let lang = urlLan || cookieLan || userLan || "zh-CN";
|
||||
|
||||
Locale.use(lang || i18next.language, getLocale())
|
||||
})
|
||||
|
||||
function filterUrl(url) {
|
||||
let filter = url.split("?")[1]?.split("&");
|
||||
var obj = {};
|
||||
for (var i = 0; i < filter?.length; i++) {
|
||||
var item = filter[i].split('=');
|
||||
var key = item[0];
|
||||
var value = item[1];
|
||||
obj[key] = value;
|
||||
// 监听 i18next 语言变化,自动更新 Vant Locale
|
||||
watch(
|
||||
() => i18next.language,
|
||||
(newLang: string) => {
|
||||
if (newLang) {
|
||||
updateVantLocale();
|
||||
}
|
||||
return obj
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
// 组件挂载时初始化 Vant Locale
|
||||
onMounted(() => {
|
||||
// i18next 会自动检测浏览器语言,这里只需要确保 Vant Locale 同步
|
||||
updateVantLocale();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
Reference in new issue
Block a user