UNPKG

@cainiaofe/cn-ui-m

Version:
47 lines (46 loc) 1.88 kB
import { pandaEvent, langToShortLang, getLang, } from '@cainiaofe/cn-i18n'; import dayjs, { Dayjs } from 'dayjs'; import isoWeek from 'dayjs/plugin/isoWeek'; import localeData from 'dayjs/plugin/localeData'; import weekOfYear from 'dayjs/plugin/weekOfYear'; import isoWeeksInYear from 'dayjs/plugin/isoWeeksInYear'; import isLeapYear from 'dayjs/plugin/isLeapYear'; import weekday from 'dayjs/plugin/weekday'; import "../locales/dayjs"; import isBtw from 'dayjs/plugin/isBetween'; import updateLocale from 'dayjs/plugin/updateLocale'; import weekYear from 'dayjs/plugin/weekYear'; import advancedFormat from 'dayjs/plugin/advancedFormat'; dayjs.extend(advancedFormat); dayjs.extend(isoWeek); dayjs.extend(localeData); dayjs.extend(weekOfYear); dayjs.extend(isoWeeksInYear); dayjs.extend(isLeapYear); dayjs.extend(weekday); dayjs.extend(isBtw); dayjs.extend(updateLocale); dayjs.extend(weekYear); // 基于标准语种返回dayjs的国际化语种 var getDayjsLang = function (lang) { var lowLang = lang === null || lang === void 0 ? void 0 : lang.toLowerCase(); if (lowLang && dayjs.Ls[lowLang]) { return lowLang; } var slang = langToShortLang(lang); // 兼容希伯来语(cn-i18n对于希伯来语可能存在2种版本的,dayjs只提供的he的翻译) slang = slang === 'iw' ? 'he' : slang; // 兼容英文本地语种,为了提高英文本地语种的兼容性,所有英文本地语种全部fallback到en slang = slang.startsWith('en-') ? 'en' : slang; // 不再支持范围的默认为英文 return dayjs.Ls[slang] ? slang : 'en'; }; dayjs.locale(getDayjsLang(getLang())); pandaEvent.on('CHANGE_LANG', function (_lang) { dayjs.locale(getDayjsLang(_lang)); }); function updateDayjsLocale(opts) { var lang = getDayjsLang(getLang()); dayjs.updateLocale(lang, opts); } export { dayjs, Dayjs, updateDayjsLocale };