как получить локаль динамически из dayjs https://www.npmjs.com/package/dayjs?
Когда я использую как dayjs(date).locale('te').format('YYYY MMM DD')
, затем я получаю значение месяца на английском языке. Для работы с локалью мне нужно импортировать локаль.
import * as locale from 'dayjs/locale/te';
Проблема в том, что я не вижу способа динамически импортировать локаль. У меня нет доступа к функции nodejs require(). У меня есть приложение на основе реакции. Как решить эту проблему?
5 ответов
Обходной путь для динамического импорта без ошибок:
const locales = {
de: () => import('dayjs/locale/de'),
en: () => import('dayjs/locale/en'),
}
function loadLocale (language) {
locales[language]().then(() => dayjs.locale(language))
}
Вы можете использовать import как выражение импорта и динамически импортировать все, что захотите. например:
import dayjs from "dayjs";
import localeData from "dayjs/plugin/localeData";
dayjs.extend(localeData);
const LOCALE = "de";
import(`dayjs/locale/${LOCALE}`)
.then(() => {
dayjs.locale(LOCALE);
console.log(dayjs.weekdays());
});
Вы можете увидеть рабочий пример в этом Codeandbox.
для получения дополнительной информации о динамическом импорте я предлагаю вам прочитать https://javascript.info/modules-dynamic-imports
Вам необходимо сначала импортировать необходимые файлы локали, как показано ниже
import 'dayjs/locale/te'
import 'dayjs/locale/en'
Затем вы можете динамически переключаться между местными жителями, как показано ниже.
dayjs().locale('en').format()
dayjs('2018-4-28', { locale: 'te' })
Попробуйте этот код.
const language = {
en: import('dayjs/locale/en'),
te: import('dayjs/locale/te')
}
language['te'].then(lng => { console.log((dayjs(new Date()).locale(lng.name).format('YYYY MMMM DD')))})
Одна вещь, которую вы могли бы сделать, если не против добавить обещание, - это динамически импортировать нужную вам локаль. Код будет выглядеть так:
const convertToLocale = (date, locale) => {
return import(`dayjs/locale/${locale}`)
.then(() => dayjs(date).locale(locale));
}
Это загрузит все файлы локали, как и упомянутый вами импорт, без необходимости добавлять операторы импорта вручную.