Я пытаюсь изменить язык даты, которая устанавливается моментом. По умолчанию используется английский, но я хочу установить немецкий язык. Вот что я попробовал:
var now = moment().format("LLL").lang("de");
Это дает NaN
.
var now = moment("de").format("LLL");
Это даже не реагирует.
var now = moment().format("LLL", "de");
Без изменений: это все еще дает результат на английском языке.
Как это возможно?
javascript
momentjs
Doniyor
источник
источник
Ответы:
Вам нужен moment.lang ( ВНИМАНИЕ :
lang()
устарел с момента2.8.0
, используйтеlocale()
вместо):http://momentjs.com/docs/#/i18n/
Начиная с v2.8.1,
moment.locale('de')
устанавливает локализацию, но не возвращает amoment
. Некоторые примеры:В итоге, вызов
locale
глобальногоmoment
задает языковой стандарт для всех будущихmoment
экземпляров, но не возвращает экземплярmoment
. Вызовlocale
экземпляра, установка его для этого экземпляра и возврат этого экземпляра.Также, как сказал Шив в комментариях, убедитесь, что вы используете «moment-with-locales.min.js», а не «moment.min.js», иначе это не будет работать.
источник
var deMoment = moment(); deMoment.lang('de')
и использоватьdeMoment
вместо момента в течение всего сценария.Deprecation warning: moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages. Arguments: fr
import moment from 'moment'; import localization from 'moment/locale/de'
moment().locale("de", localization).format('LLL')
Мне пришлось импортировать также язык:
Тогда используйте момент, как обычно
источник
import 'moment/locale/es'
require("moment/min/locales.min");
или использовать импортimport 'moment/min/locales.min'
Самый быстрый метод: установка с Bower
Я только что установил момент с bower и связал
de.js
как ресурс javascript в моем html-проекте.bower install moment --save
Вы также можете вручную загрузить
moment.js
иde.js
.Ссылка "de.js" в вашем проекте
Ссылка
de.js
в моем главном файле проекта автоматически изменяла локаль для всех обращений к классу момента и его методам.Там больше не будет необходимости делать
moment.locale("de").
илиmoment.lang("de").
в исходном коде.Просто свяжите желаемую локаль так:
Или вы можете связать библиотеки без
bower_components
пути, если вы загрузили моментальный стиль в стиле 1990-х через щелчок правой кнопкой мыши, который по-прежнему хорошо работает в большинстве сценариев.источник
<script src="/bower_components/moment/locale/de.js"></script>
Это работает для меня прямо сейчас.С моментом 2.8+ сделайте следующее:
http://momentjs.com/docs/#/i18n/
источник
moment.locale('de')
, и вы создаете новый объект, представляющий текущую датуmoment()
(обратите внимание на круглые скобки), а затемformat('LLL')
ее. Скобка важна. Проверено в 2.20. Кроме того, не забудьте использоватьmoment-with-locale.js
и при необходимости изменить имя наmoment.js
. Джанго просто отказывается загружатьсяmoment-with-locale.js
в моем случае.moment().locale('de').format('LLL');
Вам нужно добавить
moment.lang(navigator.language)
в свой сценарий.Также необходимо добавить каждую локаль страны, в которой вы хотите отобразить: например, для ГБ или FR, вам нужно добавить этот формат локали в библиотеку moment.js. Пример такого формата доступен в документации моментов. Если вы не добавите этот формат в moment.js, то он ВСЕГДА выберет локали США, так как это единственный, который я сейчас вижу.
источник
Конец 2017/2018: в чужих ответах слишком много старого кода для редактирования, поэтому вот мой альтернативный чистый ответ:
с требованием
с импортом
Использование:
с часовым поясом
* Требуется:
*Импортировать:
использовать зоны:
функция для форматирования даты
источник
import moment from 'moment/min/moment-with-locales';
ДЛЯ ПОЛЬЗОВАТЕЛЕЙ METEOR:
в то время как локали не установлены по умолчанию в метеоре, вы получаете только локаль 'en' с установкой по умолчанию.
Таким образом, вы используете код, как показано правильно в других ответах:
но он останется на английском, пока вы не установите нужный язык.
Есть хороший, чистый способ добавления отдельных локалей для момента в метеоре (предоставлен rzymek ).
Установите моментальный пакет обычным способом:
Затем просто добавьте нужные вам локали, например, для итальянского:
Или, если вы действительно хотите добавить все доступные локали (добавляет около 30 Кб на вашу страницу):
источник
rzymek:moment-locale-de
и всеС момента 2.18.1 и далее:
источник
демонстрация
источник
Поскольку я использовал веб-пакет с gulp и друзьями ( этот генератор настроил все для меня), мне пришлось внести изменения в файл bower.json. Мне пришлось переопределить импорт по умолчанию для пакета момента и выбрать файл, который поставляется со всеми языками:
Это мой полный файл bower.json:
источник
Я использую angular2-момент, но использование должно быть похожим.
источник
Измените язык языка в соответствии с версией
Версия: 2.8+
moment.locale ( 'Привет');
Версия: 2.5.1
moment.lang ( 'Привет');
источник
нормально работать так:
return moment(status.created_at).locale('es').fromNow();
источник
Я не уверен, что изменилось, но импорт языкового файла, как это сработало для меня
Обратите внимание на src в операторе импорта
источник
для момента 2.12+ выполните следующие действия:
Также обратите внимание, что вы должны использовать,
moment.updateLocale(localeName, config)
чтобы изменить существующую локаль.moment.defineLocale(localeName, config)
следует использовать только для создания новой локали.источник
Для меня есть некоторые изменения (версия 2.20)
moment.locale('de')
, и вы создаете новый объект, представляющий дату сейчасmoment()
(обратите внимание на круглые скобки), а затемformat('LLL')
ее. Скобка важна.Так что это означает:
moment-with-locale.js
. Файл содержит всю информацию о локали и имеет больший размер файла. Скачатьlocale
папку недостаточно. При необходимости измените имя наmoment.js
. Джанго просто отказывается загружатьсяmoment-with-locale.js
в моем случае.РЕДАКТИРОВАТЬ: Оказалось, что переименование файла не является необходимым. Я просто забыл вызвать его на странице, поэтому Django не считает, что загрузка необходима, поэтому я виноват.
источник
Этот просто работает, автоматически определяя текущее местоположение пользователя.
источник
Упс ручку. Я бы решил это:
var moment = function(x) { return moment(x).locale('de'); }
другие способы на самом деле, кажется, не держатся / держатся в условиях (для меня).источник
Для тех, кто работает в асинхронных средах,
moment
ведет себя неожиданно при загрузке локалей по требованию.Вместо того
отменить заказ
Кажется, что локали загружаются в текущую выбранную локаль, переопределяя любую ранее установленную информацию о локали. Таким образом, сначала переключение локали, а затем загрузка информации о локали не вызывает этой проблемы.
источник
После борьбы это работало на меня для
moment
v2.26.0:Вы можете пройти
en
,fr
илиes
. Если вам нужен другой язык, вам нужно будет импортировать локаль и добавить ее в массив.Если вам нужно поддерживать только один язык, это немного проще:
источник