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 définir la langue allemande. Voici ce que j'ai essayé:
var now = moment().format("LLL").lang("de");
C’est donner NaN
.
var now = moment("de").format("LLL");
Cela ne réagit même pas.
var now = moment().format("LLL", "de");
Pas de changement: cela produit toujours un résultat en anglais.
Comment est-ce possible?
Vous avez besoin de moment.lang (WARNING: lang()
est obsolète depuis l'instant 2.8.0
, utilisez 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 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é, l'appel de locale
sur le global moment
définit les paramètres régionaux pour toutes les futures instances de moment
, mais ne renvoie pas d'instance de moment
. L'appel de locale
sur une instance la définit pour cette instance ET renvoie cette instance.
En outre, comme Shiv l’a dit dans les commentaires, assurez-vous d’utiliser "moment-avec-locales.min.js" et non "moment.min.js", sinon cela ne fonctionnerait pas.
J'ai dû importer aussi la langue:
import moment from 'moment'
import 'moment/locale/es' // without this line it didn't work
moment.locale('es')
Puis utilisez le moment comme vous le feriez normalement
alert(moment(date).fromNow())
Je viens d'installer moment avec bower et lié de.js
comme ressource javascript dans mon projet html.
bower install moment --save
Vous pouvez également télécharger manuellement les fichiers moment.js
et de.js
.
La liaison du de.js
dans mon fichier de projet principal a automatiquement modifié les paramètres régionaux pour tous les accès à la classe moment et à ses méthodes.
Il y aura plus besoin maintenant de faire une moment.locale("de").
ou moment.lang("de").
dans le code source.
Liez simplement les paramètres régionaux souhaités comme ceci:
<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 le chemin bower_components
si vous avez téléchargé le style moment.js des années 1990 via un clic droit, ce qui fonctionne toujours bien dans la plupart des scénarios.
Avec momentjs 2.8+, procédez comme suit:
moment.locale("de").format('LLL');
Vous devez ajouter moment.lang(navigator.language)
dans votre script.
Et vous devez également ajouter chaque paramètre régional du pays dans lequel vous souhaitez afficher: par exemple, en GB ou en FR, vous devez ajouter le format de ce paramètre dans la bibliothèque moment.js. Un exemple de ce format est disponible dans la documentation de momentjs. Si vous n’ajoutez pas ce format dans moment.js, il sélectionnera TOUJOURS les paramètres régionaux américains car c’est le seul que je voie actuellement.
fin 2017/2018: les réponses anothers ont trop de code ancien à modifier, alors voici ma réponse propre alternative:
avec besoin
let moment = require('moment');
require('moment/locale/fr.js');
avec les importations
import moment from 'moment';
import 'moment/locale/fr';
Utilisation:
moment.locale('fr');
moment().format('D MMM YY'); // Correct, set default global format
// moment.locale('fr').format('D MMM YY') //Wrong old versions for global default format
avec fuseau horaire
*exiger:
require('moment-range');
require('moment-timezone');
*importation:
import 'moment-range';
import 'moment-timezone';
zones d'utilisation:
const newYork = moment.tz("2014-06-01 12:00", "America/New_York");
const losAngeles = newYork.clone().tz("America/Los_Angeles");
const london = newYork.clone().tz("Europe/London");
fonction pour formater la date
const ISOtoDate = function (dateString, format='') {
// if date is not string use conversion:
// value.toLocaleDateString() +' '+ value.toLocaleTimeString();
if ( !dateString ) {
return '';
}
if (format ) {
return moment(dateString).format(format);
} else {
return moment(dateString); // It will use default global format
}
};
POUR LES UTILISATEURS DE METEOR:
moment les paramètres régionaux ne sont pas installés par défaut dans meteor, vous obtenez uniquement les paramètres régionaux 'en' avec l'installation par défaut.
Donc, vous utilisez le code comme indiqué correctement dans d'autres réponses:
moment.locale('it').format('LLL');
mais il restera en anglais jusqu'à ce que vous installiez les paramètres régionaux dont vous avez besoin.
Il existe un moyen propre et agréable d’ajouter des paramètres régionaux individuels pour moment dans météore (fourni par rzymek ).
Installez le paquet moment de la manière habituelle de météore avec:
meteor add rzymek:moment
Ensuite, ajoutez simplement les paramètres régionaux dont vous avez besoin, par exemple pour l'italien:
meteor add rzymek:moment-locale-it
Ou si vous voulez vraiment ajouter tous les paramètres régionaux disponibles (ajoute environ 30 000 à votre page):
meteor add rzymek:moment-locales
À partir du moment 2.18.1 et suivants:
moment.locale("de");
var m = moment().format("LLL")
fonctionne bien comme ça: return moment(status.created_at).locale('es').fromNow();
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MomentJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script type="text/javascript" src="moment.js"></script>
<script type="text/javascript" src="locale/ne.js"></script>
</head>
<body>
<script>
jQuery(document).ready(function($) {
moment.locale('en'); // default the locale to English
var localLocale = moment();
moment.locale('ne'); // change the global locale to Nepalese
var ne1 = localLocale.format('LLLL');
var ne2 = moment().format('LLLL');
$('.ne1').text(ne1);
$('.ne2').text(ne2);
});
</script>
<p class="ne1"></p>
<p class="ne2"></p>
</body>
</html>
Comme j'utilisais webpack avec gulp et mes amis ( ce générateur tout configuré pour moi), j'ai dû modifier le fichier bower.json. J'ai dû remplacer l'importation par défaut pour le paquetage moment et sélectionner le fichier fourni avec toutes les langues:
"overrides": {
"moment": {
"main": [
"min/moment-with-locales.min.js"
]
}
}
Ceci est mon fichier complet bower.json:
{
"name": "html5",
"version": "0.0.0",
"dependencies": {
"angular-animate": "~1.4.2",
"angular-cookies": "~1.4.2",
"angular-touch": "~1.4.2",
"angular-sanitize": "~1.4.2",
"angular-messages": "~1.4.2",
"angular-ui-router": "~0.2.15",
"bootstrap-sass": "~3.3.5",
"angular-bootstrap": "~0.13.4",
"malarkey": "yuanqing/malarkey#~1.3.1",
"angular-toastr": "~1.5.0",
"moment": "~2.10.6",
"animate.css": "~3.4.0",
"angular": "~1.4.2",
"lodash": "^4.13.1",
"angular-moment": "^0.10.3",
"angularLocalStorage": "ngStorage#^0.3.2",
"ngstorage": "^0.3.10"
},
"devDependencies": {
"angular-mocks": "~1.4.2"
},
"overrides": {
"bootstrap-sass": {
"main": [
"assets/stylesheets/_bootstrap.scss",
"assets/fonts/bootstrap/glyphicons-halflings-regular.eot",
"assets/fonts/bootstrap/glyphicons-halflings-regular.svg",
"assets/fonts/bootstrap/glyphicons-halflings-regular.ttf",
"assets/fonts/bootstrap/glyphicons-halflings-regular.woff",
"assets/fonts/bootstrap/glyphicons-halflings-regular.woff2"
]
},
"moment": {
"main": [
"min/moment-with-locales.min.js"
]
}
},
"resolutions": {
"angular": "~1.4.2"
}
}
Pour moi, il y a quelques changements à faire (ver. 2.20)
moment.locale('de')
, et vous créez un nouvel objet représentant la date d'aujourd'hui par moment()
(notez la parenthèse) puis par format('LLL')
it. La parenthèse est importante.Donc ça signifie:
moment.locale('de');
var now = moment();
now.format('LLL');
moment-with-locale.js
. Le fichier contient toutes les informations sur les paramètres régionaux et a une taille de fichier supérieure. Télécharger le dossier locale
ne suffit pas. Si nécessaire, remplacez le nom par moment.js
. Django refuse simplement de charger moment-with-locale.js
dans mon cas.EDIT: Il s'est avéré qu'il n'est pas nécessaire de renommer le fichier. J'ai juste oublié de l'invoquer dans la page pour que Django ne pense pas que le charger est nécessaire, c'est donc ma faute.
Changer le moment js langue selon la version
Version: 2.8 +
moment.locale ('salut');
Version: 2.5.1
moment.lang ('salut');
J'utilise angular2-moment, mais l'utilisation doit être similaire.
import { MomentModule } from "angular2-moment";
import moment = require("moment");
export class AppModule {
constructor() {
moment.locale('ru');
}
}
pour momentjs 2.12 +, procédez comme suit:
moment.updateLocale('de');
Notez également que vous devez utiliser moment.updateLocale(localeName, config)
pour modifier un environnement local existant. moment.defineLocale(localeName, config)
ne doit être utilisé que pour créer un nouveau paramètre régional.
Oups glisser du stylo. Je résoudrais ceci: var moment = function(x) { return moment(x).locale('de'); }
Les autres moyens ne semblent pas vraiment tenir/tenir dans certaines conditions (pour moi).