UNPKG

nsn-util

Version:

NSN工具辅助组件

158 lines (119 loc) 3.44 kB
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } import { NConst } from 'nsn-const'; import { LangEnum } from 'nsn-enum'; import { getIntl, getLocale, setLocale } from 'umi'; import * as NStore from './NStore'; import * as NStr from './NStr'; /** umi语言环境设置的变量 */ var UMI_LOCALE_KEY = 'umi_locale'; /** * 获取语言 * @returns [ zh-CN,简体中文,🇨🇳 ] / [ en-US,English,🇺🇸 ] */ var getLangValue = function getLangValue(lang) { return NStr.split(lang, NConst.COLON); }; /** * 获取语言编码 * @return EG: zh-CN / en-US */ var getLangCode = function getLangCode(lang) { return getLangValue(lang)[0]; }; /** * 获取语言描述 * @return EG: 简体中文 / English */ var getLangLabel = function getLangLabel(lang) { return getLangValue(lang)[1]; }; /** * 获取语言国旗 * @return EG: 🇨🇳 / 🇺🇸 */ var getLangIcon = function getLangIcon(lang) { return getLangValue(lang)[2]; }; /** * 获取当前语言环境. * @returns en-US / zh-CN */ var get = function get() { var lang = NConst.EMPTY; // support ssr if (!NStr.isBrowser()) { return lang; } lang = NStore.get(UMI_LOCALE_KEY); lang = lang || window.g_locale || navigator.language || getLocale() || NConst.EMPTY; var langLowerCase = lang.toLocaleLowerCase(); if (langLowerCase.includes('en') || langLowerCase.includes('us')) { lang = 'en-US'; } else { lang = 'zh-CN'; } NStore.set(_defineProperty({}, UMI_LOCALE_KEY, lang)); return lang; }; var isLang = function isLang(lang) { return NStr.isEqual(get(), getLangCode(lang)); }; /** 英文环境 */ var isEN = function isEN() { return isLang(LangEnum.EN); }; /** 中文环境 */ var isCN = function isCN() { return isLang(LangEnum.CN); }; /** 切换语言 */ var setLang = function setLang(lang) { return setLocale(getLangCode(lang)); }; /** 切换语言 */ var set = function set(lang) { NStore.set(_defineProperty({}, UMI_LOCALE_KEY, lang)); setLocale(lang); }; /** 获取全部语言环境 */ var getLangAll = function getLangAll() { return Object.values(LangEnum); }; /** 获取当前语言环境 */ var getLang = function getLang() { var locale = get(); var currentLangEnum = LangEnum.CN; // default Object.values(LangEnum).every(function (v) { if (locale === getLangCode(v)) { currentLangEnum = v; return false; // break; } return true; }); return currentLangEnum; }; /** 格式化语言 */ var format = function format(descriptor, values) { return getIntl(get()).formatMessage(descriptor, values); }; /** * 获取国际化内容 * @param ID 规范 id 的可选值 * @param id 配置的 locales 的标识 * @param values 格式化参数 */ var getText = function getText(id, values) { if (id) { return getIntl(get()).formatMessage({ id: id }, values); } return NConst.EMPTY; }; /** 从响应数据中返回当前语言环境的提示信息 */ var getMsg = function getMsg(repData) { if (repData) { return (isEN() ? repData.msgEn : repData.msgCn) || NConst.EMPTY; } return NConst.EMPTY; }; export { isEN, isCN, set, setLang, get, getLang, getLangAll, getLangValue, getLangCode, getLangLabel, getLangIcon, getText, format, getMsg, UMI_LOCALE_KEY };