nsn-util
Version:
NSN工具辅助组件
203 lines (141 loc) • 5.62 kB
JavaScript
;
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;