322 votes

Comment changer la langue de moment.js ?

J'essaie de changer la langue de la date qui est définie par moment.js. La langue par défaut est l'anglais, mais je veux changer la langue allemande. Voici ce que j'ai essayé :

var now = moment().format("LLL").lang("de");

Il donne NaN .

var now = moment("de").format("LLL");

Ce n'est même pas une réaction.

var now = moment().format("LLL", "de");

Pas de changement : le résultat est toujours en anglais.

Comment cela est-il possible ?

431voto

kalley Points 7737

Vous avez besoin de moment.lang ( AVERTISSEMENT : lang() est obsolète depuis le moment où 2.8.0 , utiliser locale() à la place) :

moment.lang("de").format('LLL');

http://momentjs.com/docs/#/i18n/


À partir de la version 2.8.1, moment.locale('de') définit la localisation, mais ne renvoie pas de code moment . Quelques exemples :

var march = moment('2017-03')
console.log(march.format('MMMM')) // 'March'

moment.locale('de') // returns the new locale, in this case 'de'
console.log(march.format('MMMM')) // 'March' still, since the instance was before the locale was set

var deMarch = moment('2017-03')
console.log(deMarch.format('MMMM')) // 'März'

// You can, however, change just the locale of a specific moment
march.locale('es')
console.log(march.format('MMMM')) // 'Marzo'

En résumé, appeler locale sur le plan mondial moment définit la locale pour tous les futurs moment mais ne renvoie pas d'instance de moment . Appel locale sur une instance, la définit pour cette instance ET renvoie cette instance.

De plus, comme l'a dit Shiv dans les commentaires, assurez-vous d'utiliser "moment-with-locales.min.js" et non "moment.min.js", sinon cela ne fonctionnera pas.

409voto

Agu Dondo Points 4299

J'ai également dû importer la langue :

import moment from 'moment'
import 'moment/locale/es'  // without this line it didn't work
moment.locale('es')

Ensuite, utilisez le moment comme vous le feriez normalement

console.log(moment(date).fromNow())

58voto

Sir Ben Benji Points 1063

Méthode la plus rapide : Installer avec Bower

Je viens d'installer moment avec bower et de lier de.js comme ressource javascript dans mon projet html.

bower install moment --save

Vous pouvez également télécharger manuellement le moment.js y de.js .

Lien 'de.js' dans votre projet

Relier les de.js dans mon fichier de projet principal a automatiquement changé la locale pour tous les accès à la classe moment et à ses méthodes.

Il y aura plus besoin de faire une moment.locale("de"). ou moment.lang("de"). dans le code source.

Il suffit de lier le lieu souhaité de la manière suivante :

<script src="/bower_components/moment/moment.js"></script>
<script src="/bower_components/moment/locale/de.js"></script>

Vous pouvez également lier les bibliothèques sans l'option bower_components si vous avez téléchargé moment.js 1990ies-style par un clic droit, ce qui fonctionne toujours très bien dans la plupart des cas.

44voto

Nashenas Points 1513

Avec momentjs 2.8+, faites ce qui suit :

moment.locale("de").format('LLL');

http://momentjs.com/docs/#/i18n/

24voto

Alan P. Points 591

Après avoir lutté, cela a fonctionné pour moi pendant moment v2.26.0 :

import React from "react";
import moment from "moment";
import frLocale from "moment/locale/fr";
import esLocale from "moment/locale/es";

export default function App() {
  moment.locale('fr', [frLocale, esLocale]) // can pass in 'en', 'fr', or 'es'

  let x = moment("2020-01-01 00:00:01");
  return (
    <div className="App">
      {x.format("LLL")}
      <br />
      {x.fromNow()}
    </div>
  );
}

Vous pouvez passer en , fr ou es . Si vous souhaitez une autre langue, vous devez importer la locale et l'ajouter au tableau.

Si vous ne devez prendre en charge qu'une seule langue, c'est un peu plus simple :

import React from "react";
import moment from "moment";
import "moment/locale/fr"; //always use French

export default function App() {  
  let x = moment("2020-01-01 00:00:01");
  return (
    <div className="App">
      {x.format("LLL")}
      <br />
      {x.fromNow()}
    </div>
  );
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X