Ich versuche, die Sprache des Datums zu ändern, das von moment.js festgelegt wird. Die Standardeinstellung ist Englisch, aber ich möchte die deutsche Sprache einstellen. Folgendes habe ich versucht:
var now = moment().format("LLL").lang("de");
Es gibt NaN
.
var now = moment("de").format("LLL");
Das reagiert nicht einmal.
var now = moment().format("LLL", "de");
Keine Änderung: Dies führt immer noch zu einem Ergebnis auf Englisch.
Wie ist das möglich?
javascript
momentjs
Doniyor
quelle
quelle
Antworten:
Sie müssen moment.lang ( ACHTUNG :
lang()
da Moment ist veraltet2.8.0
, verwenden Sielocale()
stattdessen):http://momentjs.com/docs/#/i18n/
Ab Version 2.8.1 wird
moment.locale('de')
die Lokalisierung festgelegt, a wird jedoch nicht zurückgegebenmoment
. Einige Beispiele:Zusammenfassend lässt sich sagen, dass beim Aufrufen
locale
von globalmoment
das Gebietsschema für alle zukünftigenmoment
Instanzen festgelegt wird, jedoch keine Instanz von zurückgegeben wirdmoment
. Wenn Sielocale
eine Instanz aufrufen, wird sie für diese Instanz festgelegt UND diese Instanz zurückgegeben.Stellen Sie außerdem, wie Shiv in den Kommentaren sagte, sicher, dass Sie "moment-with-locales.min.js" und nicht "moment.min.js" verwenden, da dies sonst nicht funktioniert.
quelle
var deMoment = moment(); deMoment.lang('de')
Wiederverwenden"deMoment
anstelle von "Moment" verwenden.Deprecation warning: moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages. Arguments: fr
import moment from 'moment'; import localization from 'moment/locale/de'
moment().locale("de", localization).format('LLL')
Ich musste auch die Sprache importieren:
Verwenden Sie dann den Moment wie gewohnt
quelle
import 'moment/locale/es'
require("moment/min/locales.min");
oder importierenimport 'moment/min/locales.min'
Schnellste Methode: Mit Bower installieren
Ich habe gerade moment mit bower installiert und
de.js
als Javascript-Ressource in meinem HTML-Projekt verlinkt .bower install moment --save
Sie können das
moment.js
und auch manuell herunterladende.js
.Verknüpfen Sie 'de.js' in Ihrem Projekt
Durch das Verknüpfen der
de.js
Datei in meiner Hauptprojektdatei wurde automatisch das Gebietsschema für alle Zugriffe auf die Moment-Klasse und ihre Methoden geändert.Es ist nicht mehr erforderlich, ein
moment.locale("de").
odermoment.lang("de").
im Quellcode auszuführen.Verknüpfen Sie einfach Ihr gewünschtes Gebietsschema wie folgt:
Oder Sie können die Bibliotheken ohne
bower_components
Pfad verknüpfen , wenn Sie moment.js im Stil der 90er Jahre per Rechtsklick heruntergeladen haben, was in den meisten Szenarien immer noch gut funktioniert.quelle
<script src="/bower_components/moment/locale/de.js"></script>
Es funktioniert gerade für mich.Gehen Sie mit momentjs 2.8+ wie folgt vor:
http://momentjs.com/docs/#/i18n/
quelle
moment.locale('de')
und erstellen ein neues Objekt, das das Datum von jetzt bismoment()
(beachten Sie die Klammern) und dannformat('LLL')
es. Die Klammer ist wichtig. Getestet in 2.20. Denken Sie auch daranmoment-with-locale.js
, den Namen zu verwenden und gegebenenfalls zu ändernmoment.js
. Django weigert sich einfach,moment-with-locale.js
in meinem Fall zu laden .moment().locale('de').format('LLL');
Sie müssten
moment.lang(navigator.language)
in Ihrem Skript hinzufügen .Außerdem muss jedes Ländergebietsschema hinzugefügt werden, in dem Sie anzeigen möchten: Zum Beispiel für GB oder FR müssen Sie dieses Gebietsschemaformat in der Bibliothek moment.js hinzufügen. Ein Beispiel für ein solches Format finden Sie in der Dokumentation von momentjs. Wenn Sie dieses Format nicht in moment.js hinzufügen, wird IMMER das US-Gebietsschema übernommen, da dies das einzige ist, das ich derzeit sehe.
quelle
Ende 2017/2018: Die anderen Antworten haben zu viel alten Code zum Bearbeiten, also hier meine alternative saubere Antwort:
mit erfordern
mit Importen
Verwenden:
mit Zeitzone
*benötigen:
*importieren:
Zonen verwenden:
Funktion zum Formatieren des Datums
quelle
import moment from 'moment/min/moment-with-locales';
FÜR METEOR-BENUTZER:
Sobald Gebietsschemas in meteor nicht standardmäßig installiert sind, erhalten Sie das Gebietsschema 'en' nur mit der Standardinstallation.
Sie verwenden den Code also wie in anderen Antworten korrekt gezeigt:
Es bleibt jedoch in Englisch, bis Sie das gewünschte Gebietsschema installieren.
Es gibt eine schöne, saubere Möglichkeit, einzelne Gebietsschemas für den Moment in Meteor hinzuzufügen (geliefert von rzymek ).
Installieren Sie das Moment- Paket auf die übliche Meteor-Weise mit:
Fügen Sie dann einfach die Gebietsschemas hinzu, die Sie benötigen, z. B. für Italienisch:
Oder wenn Sie wirklich alle verfügbaren Gebietsschemas hinzufügen möchten (fügt Ihrer Seite etwa 30.000 hinzu):
quelle
rzymek:moment-locale-de
und es hat funktioniert :)Ab Moment 2.18.1:
quelle
Demo
quelle
Da ich Webpack mit Schluck und Freunden benutzte ( dieser Generator hat alles für mich eingerichtet), musste ich eine Änderung an der Datei bower.json vornehmen. Ich musste den Standardimport für das Moment-Paket überschreiben und die Datei auswählen, die mit allen Sprachen geliefert wird:
Dies ist meine vollständige Datei bower.json:
quelle
Ich verwende angle2-moment, aber die Verwendung muss ähnlich sein.
quelle
Ändern Sie den Moment js Sprache gemäß Version
Version: 2.8+
moment.locale ('hi');
Version: 2.5.1
moment.lang ('hi');
quelle
so gut funktionieren:
return moment(status.created_at).locale('es').fromNow();
quelle
Ich bin nicht sicher, was sich geändert hat, aber das Importieren der Sprachdatei wie diese hat bei mir funktioniert
Beachten Sie den src in der import-Anweisung
quelle
Führen Sie für momentjs 2.12+ Folgendes aus:
Beachten Sie auch, dass Sie
moment.updateLocale(localeName, config)
ein vorhandenes Gebietsschema ändern müssen .moment.defineLocale(localeName, config)
sollte nur zum Erstellen eines neuen Gebietsschemas verwendet werden.quelle
Für mich sind einige Änderungen vorzunehmen (Ver. 2.20)
moment.locale('de')
und erstellen ein neues Objekt, das das Datum bis jetzt darstelltmoment()
(beachten Sie die Klammern), und dannformat('LLL')
. Die Klammer ist wichtig.Das bedeutet also:
moment-with-locale.js
. Die Datei enthält alle Gebietsschemainformationen und hat eine größere Dateigröße. Das Herunterladen deslocale
Ordners reicht nicht aus. Ändern Sie gegebenenfalls den Namen inmoment.js
. Django weigert sich nur,moment-with-locale.js
in meinem Fall zu laden .BEARBEITEN: Es stellte sich heraus, dass das Umbenennen der Datei nicht erforderlich ist. Ich habe nur vergessen, es auf der Seite aufzurufen, damit Django das Laden nicht für notwendig hält, also meine Schuld.
quelle
Dieser funktioniert nur durch automatische Erkennung des aktuellen Benutzerstandorts.
quelle
Whoops Slip of the Pen. Ich würde das lösen:
var moment = function(x) { return moment(x).locale('de'); }
Die anderen Wege scheinen unter Bedingungen (für mich) nicht wirklich zu bleiben.quelle
Verhalten sich in asynchronen Umgebungen
moment
beim Laden von Gebietsschemas bei Bedarf unerwartet.Anstatt
kehre die Reihenfolge um
Es scheint, als würden die Gebietsschemas in das aktuell ausgewählte Gebietsschema geladen und überschreiben alle zuvor festgelegten Gebietsschemainformationen. Wenn Sie also zuerst das Gebietsschema wechseln und dann die Gebietsschemainformationen laden, tritt dieses Problem nicht auf.
quelle
Nach dem Kämpfen funktionierte dies für mich für
moment
v2.26.0:Sie können übergeben
en
,fr
oderes
. Wenn Sie eine andere Sprache möchten, müssen Sie das Gebietsschema importieren und dem Array hinzufügen.Wenn Sie nur eine Sprache unterstützen müssen, ist dies etwas einfacher:
quelle