nsn-util
Version:
NSN工具辅助组件
158 lines (119 loc) • 3.44 kB
JavaScript
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 };