UNPKG

nsn-util

Version:

NSN工具辅助组件

203 lines (141 loc) 5.62 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.UMI_LOCALE_KEY = exports.getMsg = exports.format = exports.getText = exports.getLangIcon = exports.getLangLabel = exports.getLangCode = exports.getLangValue = exports.getLangAll = exports.getLang = exports.get = exports.setLang = exports.set = exports.isCN = exports.isEN = void 0; var _nsnConst = require("nsn-const"); var _nsnEnum = require("nsn-enum"); var _umi = require("umi"); var NStore = _interopRequireWildcard(require("./NStore")); var NStr = _interopRequireWildcard(require("./NStr")); function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } 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; } /** umi语言环境设置的变量 */ var UMI_LOCALE_KEY = 'umi_locale'; /** * 获取语言 * @returns [ zh-CN,简体中文,🇨🇳 ] / [ en-US,English,🇺🇸 ] */ exports.UMI_LOCALE_KEY = UMI_LOCALE_KEY; var getLangValue = function getLangValue(lang) { return NStr.split(lang, _nsnConst.NConst.COLON); }; /** * 获取语言编码 * @return EG: zh-CN / en-US */ exports.getLangValue = getLangValue; var getLangCode = function getLangCode(lang) { return getLangValue(lang)[0]; }; /** * 获取语言描述 * @return EG: 简体中文 / English */ exports.getLangCode = getLangCode; var getLangLabel = function getLangLabel(lang) { return getLangValue(lang)[1]; }; /** * 获取语言国旗 * @return EG: 🇨🇳 / 🇺🇸 */ exports.getLangLabel = getLangLabel; var getLangIcon = function getLangIcon(lang) { return getLangValue(lang)[2]; }; /** * 获取当前语言环境. * @returns en-US / zh-CN */ exports.getLangIcon = getLangIcon; var get = function get() { var lang = _nsnConst.NConst.EMPTY; // support ssr if (!NStr.isBrowser()) { return lang; } lang = NStore.get(UMI_LOCALE_KEY); lang = lang || window.g_locale || navigator.language || (0, _umi.getLocale)() || _nsnConst.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; }; exports.get = get; var isLang = function isLang(lang) { return NStr.isEqual(get(), getLangCode(lang)); }; /** 英文环境 */ var isEN = function isEN() { return isLang(_nsnEnum.LangEnum.EN); }; /** 中文环境 */ exports.isEN = isEN; var isCN = function isCN() { return isLang(_nsnEnum.LangEnum.CN); }; /** 切换语言 */ exports.isCN = isCN; var setLang = function setLang(lang) { return (0, _umi.setLocale)(getLangCode(lang)); }; /** 切换语言 */ exports.setLang = setLang; var set = function set(lang) { NStore.set(_defineProperty({}, UMI_LOCALE_KEY, lang)); (0, _umi.setLocale)(lang); }; /** 获取全部语言环境 */ exports.set = set; var getLangAll = function getLangAll() { return Object.values(_nsnEnum.LangEnum); }; /** 获取当前语言环境 */ exports.getLangAll = getLangAll; var getLang = function getLang() { var locale = get(); var currentLangEnum = _nsnEnum.LangEnum.CN; // default Object.values(_nsnEnum.LangEnum).every(function (v) { if (locale === getLangCode(v)) { currentLangEnum = v; return false; // break; } return true; }); return currentLangEnum; }; /** 格式化语言 */ exports.getLang = getLang; var format = function format(descriptor, values) { return (0, _umi.getIntl)(get()).formatMessage(descriptor, values); }; /** * 获取国际化内容 * @param ID 规范 id 的可选值 * @param id 配置的 locales 的标识 * @param values 格式化参数 */ exports.format = format; var getText = function getText(id, values) { if (id) { return (0, _umi.getIntl)(get()).formatMessage({ id: id }, values); } return _nsnConst.NConst.EMPTY; }; /** 从响应数据中返回当前语言环境的提示信息 */ exports.getText = getText; var getMsg = function getMsg(repData) { if (repData) { return (isEN() ? repData.msgEn : repData.msgCn) || _nsnConst.NConst.EMPTY; } return _nsnConst.NConst.EMPTY; }; exports.getMsg = getMsg;