wszhyWx/src/utils/language.js
2025-06-20 17:28:16 +08:00

56 lines
1.3 KiB
JavaScript

import ElementUI from 'element-ui';
// 语言选项缓存的key
const CACHE_KEY = "local";
// 缓存语言类型
const SET_CACHE_LANGUAGE = (language) => {
localStorage.setItem(CACHE_KEY, language);
};
// 读取语言类型
const GET_CACHE_LANGUAGE = () => {
return localStorage.getItem(CACHE_KEY);
};
// 默认语言选项
export const DEFAULT_LANGUAGE = "zh";
// 可选语言列表
export let languageOption = [
{ label: "中文", value: "zh" },
{ label: "英文", value: "en" },
];
/**
* @desc 获取网站语言
* @return {string} 语言类型
*/
export const getLanguage = () => {
const { language } = navigator;
const lang = language && language.split("-")[0];
const isValidLanguage = languageOption.some((s) => s.value === lang);
const browserLanguage = isValidLanguage ? lang : DEFAULT_LANGUAGE;
// TODO: 已设置vue-i18n默认值和兜底都是zh 所以这里没有缓存zh 可自行按需求缓存
return GET_CACHE_LANGUAGE() || browserLanguage;
};
/**
* @param {string} language - 语言类型: en、ch
* @param {object} vm - 当前vue实例指向
* @desc 改变网站语言
* @example
* ```js
* changeLanguage("en",this);
* ```
*/
export const changeLanguage = (language, vm) => {
if (!vm) {
throw "缺少 vm 实例入参";
}
vm.$i18n.locale = language;
SET_CACHE_LANGUAGE(language);
};