Globalize.format не работает для других локалей или форматов даты
Я относительно новичок в современном Javascript (я использовал его все время около десяти лет назад) и у меня проблемы с globalize.js.
Вот что я имею в виду, поскольку это относится к глобализации
<script src ="{% static "js/jquery-2.1.0.min.js" %}" type="text/javascript"></script>
<script src ="{% static "js/node_modules/globalize/dist/globalize.min.js" %}" type="text/javascript"></script>
<script>
$.get( "{% static "json/en/ca-gregorian.json" %}", Globalize.load );
$.get( "{% static "json/de/ca-gregorian.json" %}", Globalize.load );
$.get( "{% static "json/supplemental/likelySubtags.json" %}", Globalize.load );
$.get( "{% static "json/supplemental/timeData.json" %}", Globalize.load );
$.get( "{% static "json/supplemental/weekData.json" %}", Globalize.load );
console.log("short:" + Globalize.format( new Date( 2010, 10, 30, 17, 55 ), { datetime: "short" }));
console.log("medium:" + Globalize.format( new Date( 2010, 10, 30, 17, 55 ), { datetime: "medium" }));
console.log("long:" + Globalize.format( new Date( 2010, 10, 30, 17, 55 ), { datetime: "long" }, "de" ));
</script>
И вот вывод:
short:11/30/2010 5:55:00 PM (index):21
medium:11/30/2010 5:55:00 PM (index):22
Uncaught TypeError: Cannot read property 'calendar' of null
Как видите, я сталкиваюсь с двумя проблемами - параметр {datetime: }, похоже, не влияет на вывод. Что еще более важно, я не могу понять, почему он не может перевести даты на другие языки. Я пропустил включение? Другие темы в их списке проблем указывали на то, что это все, что мне нужно для локализации дат.
2 ответа
Я предлагаю вам использовать это вместо:
new Date().toLocaleDateString('de', { year: 'numeric', month: 'long', day: 'numeric' })
или даже:
new Date().toLocaleDateString(Globalize.culture().name, { year: 'numeric', month: 'long', day: 'numeric' })
Globalize.culture().name
Предполагается, что вы добавили возможные культуры для глобализации вручную или путем импорта globalize.culture.{culture}[.min].js
файл для каждого из них, например globalize.culture.fr.min.js
Следуйте примерам использования Globalize 1.x:
Там также пример использования $.get
призывает динамически загружать данные CLDR в globalize.js: динамическая загрузка
Пожалуйста, просто дайте мне знать, если у вас есть какие-либо вопросы.