Итак, я попробовал два способа установить локаль Moment.js.Оба способа не сработают, или я должен сказать, что уже слишком поздно.Мое "желание" - импортировать файлы локали асинхронно (вдохновенно здесь ).
Когда я попадаю на мою страницу, дата по-прежнему в английском формате, даже если она должна быть, например,на немецком языке.
Я загружаю данные асинхронно с:
window.moment = require('moment');
moment().format();
window.moment = require('moment-shortformat');
moment().short()
window.moment = require('moment-timezone');
const lang = document.documentElement.lang.substr(0, 2); //for the language
if(lang != 'en'){
import(`moment/locale/${lang}.js`);
moment.locale(lang)
}
Поскольку import(moment/locale/${lang}.js);
разрешает обещание, я проверял в консоли, когда файл загружается.Это примерно через 1 секунду после строки moment.locale(lang)
(неудивительно, что момент не готов к отображению правильной переведенной даты).
Небольшая проверка работоспособности показывает: локаль установлена правильно, когда я пишу moment.locale()
вconsole.
Если я не использую отложенную загрузку, вот так:
import 'moment/locale/de';
moment.locale(lang);
Все работает нормально.
Мой второй подход немного длиннее, но все равно не повезло.Подвести итог.Я создал файл javascript на сервере с помощью php:
...
$file = base_path('node_modules/moment/locale/' . $locale . '.js');
...
, чтобы я мог динамически вызывать нужный файл js.Но все равно не повезло.
Есть идеи, что я делаю не так?