web-dev-qa-db-fra.com

Réagir au moment natif.locale Native ne fonctionne pas

Je travaille avec la version 0.45.1 de React Native et avec la version 2.18.1 de moment.

J'essaie de changer la date en fonction du périphérique local, mais la date est toujours enregistrée dans l'environnement local «en-Us». Je ne peux pas importer tous les paramètres régionaux comme je l'ai vu dans certaines 'ne connaît pas à l'avance les paramètres régionaux du périphérique. (par exemple: https://github.com/moment/moment/issues/2962 )

d'autres options?

6
asaf.b

Je ne peux pas importer tous les paramètres régionaux comme je l'ai vu dans certaines solutions car je ne connais pas les paramètres régionaux du périphérique à l'avance.

En fait, vous pouvez importer tous les paramètres régionaux dans un moment comme celui-ci (moment-with-locales est mentionné sur la page d'accueil ):

import moment from 'moment/min/moment-with-locales'
// Or if you are using require instead:
var moment = require('moment/min/moment-with-locales')

Ensuite, vous devriez pouvoir obtenir les paramètres régionaux de votre périphérique avec le module/la méthode de votre choix (dans mon exemple, je vais utiliser Expo ) et modifier les paramètres régionaux du moment. Par exemple:

var deviceLocale = await Expo.Util.getCurrentLocaleAsync()
moment.locale(deviceLocale)

Je ne dirai pas que tout importer est la meilleure méthode pour gérer cela car moment-with-locales est plus grand que juste moment, mais il fait ce que vous voulez. Vous pouvez également choisir d'importer les paramètres régionaux que vous prenez en charge, comme indiqué dans le commentaire Github que j'ai lié.

16
Michael Cheng

Au lieu d'importer des paramètres régionaux, nous utilisons cette solution pour définir les paramètres régionaux globalement:

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

Partager ceci avec ceux qui en ont besoin

2
Annie Tan