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); };