Реагировать родной момент.локаль не работает
Я работаю с React Native версии 0.45.1 и с moment версии 2.18.1.
Я пытаюсь изменить дату в соответствии с локальным устройством, но я всегда получаю дату в локали "en-Us". Я не могу импортировать все локали, как я видел в некоторых решениях, так как я не знаю языковой стандарт устройства заранее. (например: https://github.com/moment/moment/issues/2962)
какие-то другие варианты?
2 ответов
Я не могу импортировать все локали, как я видел в некоторых решениях, так как я не знаю языковой стандарт устройства заранее.
на самом деле, вы можете импортировать все локали в этот момент (moment-with-locales
упоминается прямо там на Домашняя страница):
import moment from 'moment/min/moment-with-locales'
// Or if you are using require instead:
var moment = require('moment/min/moment-with-locales')
тогда вы должны иметь возможность получить языковой стандарт устройства с любым модулем / методом, который вы предпочитаете (в моем примере я буду использовать Экспо) и изменения момент для этого. Например:
var deviceLocale = await Expo.Util.getCurrentLocaleAsync()
moment.locale(deviceLocale)
Я не скажу, что импорт всего является лучшим методом для обработки этого как moment-with-locales
- это больше, чем просто moment
, но он делает то, что вы хотите, чтобы он выполнил. Вы также можете просто импортировать поддерживаемые вами локали, как указано в комментарии Github, с которым я связан.
вместо импорта локали по локали я использую это решение для установки локали глобально:
import { getDeviceLocale } from "react-native-device-info";
import moment from "moment";
import "moment/min/locales";
const deviceLocale = getDeviceLocale();
moment.locale(deviceLocale); //set your locale (eg: fr)
moment(1316116057189).fromNow(); // il y a 7 ans
поделиться с теми, кто в этом нуждается