Moment: Gebietsschemaänderungen funktionieren nicht

Erstellt am 15. Feb. 2016  ·  22Kommentare  ·  Quelle: moment/moment

Wenn ich versuche, den Gebietsschemawert zu ändern, passiert nichts, nicht einmal ein Fehler.

      this.$log.log(moment.locale()); // returns 'en'
      this.$log.log(moment.locale('fr')); // set to french but returns 'en'
      this.$log.log(moment.locale()); // of course, still returns 'en' instead of 'fr'

Ich habe es auch über die Chrome-Entwicklertools-Konsole versucht:

> moment.locale('fr')
-> "en"
Troubleshooting

Hilfreichster Kommentar

Ich fügte hinzu:
import 'moment/locale/fr';

und verwenden:
moment.locale('fr')

setzt jetzt das Gebietsschema richtig auf Französisch.
Es ist nicht dynamisch, aber es wird die Arbeit für den Moment erledigen.

Ich kann es schließen denke ich und danke für alle Leute, die geantwortet haben.
Ich hoffe, dieses Problem wird Leuten helfen, die TypeScript/Angular/Jspm verwenden.

Alle 22 Kommentare

Verwenden Sie einen Modullader, der Ihnen möglicherweise einen anderen Moment gibt?

import m from 'moment';

this.$log.log(m.locale());
this.$log.log(m.locale('fr'));
this.$log.log(m.locale());

this.$log.log(window.moment.locale());
this.$log.log(window.moment.locale('is'));
this.$log.log(window.moment.locale());

Ich bin in einem eckigen Projekt, Module sind Handles mit JSPM.
Ich verstehe nicht, was du mit "das könnte dir einen anderen Moment geben" meinst.

Die 3 Zeilen sind echter Code, den ich im selben Moment in derselben Methode ausprobiert habe.
Ich habe das gleiche Ergebnis, wenn ich eine bestimmte Variable verwende.

import * as moment from 'moment';

export function registerDateFormatService(appModule: angular.IModule) {
   appModule.service('dateFormatService', DateFormatService);
}

export class DateFormatService {
   constructor(private $log: ng.ILogService) {
   }

   public format(value: moment.Moment, displayFormat: string): string {
      this.$log.log(value.locale());
      this.$log.log(value.locale('fr'));
      this.$log.log(value.locale());
      return value.format(displayFormat);
   }
}

Ergebnisse sind:

angular.js:13239 Moment {_isAMomentObject: true, _i: "2010-10-20 4:30", _f: "YYYY-MM-DD", _isUTC: false, _pf: Object…}_d: Wed Oct 20 2010 00:00:00 GMT+0200 (CEST)_f: "YYYY-MM-DD"_i: "2010-10-20 4:30"_isAMomentObject: true_isUTC: false_isValid: true_locale: Locale_abbr: "en"_ordinalParse: /\d{1,2}(th|st|nd|rd)/_ordinalParseLenient: /\d{1,2}(th|st|nd|rd)|\d{1,2}/ordinal: (number)__proto__: Locale_pf: Object__proto__: Moment
angular.js:13239 en

Importieren Sie die Gebietsschemadaten? Welche .js-Datei(en) verwenden Sie?

Meinst du das Hinzufügen eines weiteren Imports nach der Zeile:
import * als Moment von 'moment';

oder im Modul sens importieren, hier mit JSPM.
(Ich habe moment.js und vieles von dem, was wie localexx.js aussieht, wie in meinem Fall fr.js im Ordner jspm modules.)

Lesen Sie den Abschnitt moment-with-locales.js oder die Gebietsschemadaten separat geladen haben. Die meisten Ladeprogramme übernehmen die Sprachdatei nicht automatisch, daher müssen Sie sie möglicherweise separat importieren.

Wenn Sie versuchen, zu einem nicht geladenen Gebietsschema zu wechseln, kehrt der Moment grundsätzlich zum Gebietsschema en .

Ich werde damit experimentieren, was ich kann.
Ich verwende eine einfache Zeile, die zu package.json hinzugefügt wurde, mit wird dann von jspm bis npm install verwendet
"moment": "github:moment/moment@^2.11.2"

Ich verwende es dann mit einem einzigen Import:
import * as moment from 'moment';

Ich habe es in diesem Kommentar geschrieben, um einen Überblick für zukünftige Benutzer zu behalten, die möglicherweise die gleiche Verwendung haben.
Ich werde das Ergebnis meiner Versuche posten.
Vielen Dank

Ich fügte hinzu:
import 'moment/locale/fr';

und verwenden:
moment.locale('fr')

setzt jetzt das Gebietsschema richtig auf Französisch.
Es ist nicht dynamisch, aber es wird die Arbeit für den Moment erledigen.

Ich kann es schließen denke ich und danke für alle Leute, die geantwortet haben.
Ich hoffe, dieses Problem wird Leuten helfen, die TypeScript/Angular/Jspm verwenden.

Vielleicht fügen Sie dies der Dokumentation hinzu. Ich hatte das gleiche Problem und immer mehr Leute verwenden jspm anstelle von Bower.

Schön, dass es funktioniert! Ich habe dem Dokumenten-Repository ein Problem hinzugefügt. Senden Sie dort gerne eine PR.

so importieren
import 'moment/src/locale/fr-ca';
import 'moment/src/locale/en-ca';

Danke @younss , deine Methode hat bei mir funktioniert. Ich benutze Ionic 2 RC 2.

@younss du bist mein Retter! es ist 10.10.2017 und die Dokumente geben diese Änderung nicht an! von Moment 2.18 auf 2.19.0 aktualisiert und Gebietsschema-Importe sind vollständig abgestürzt :(
Reagieren verwenden.
Danke noch einmal!

Ich hatte das gleiche Problem, als ich auf 2.19.1 aktualisiert habe
Vielleicht könnte das helfen:

Entfernen :

  • node_modules-Ordner
  • package-lock.json

Neustart:
npm installieren

Ich importiere 'moment' normal und verwende das Gebietsschema in meinen Quellen. Es ist also kein Import wie bei @younss erforderlich .
Verwenden von VueJS.
Das hat bei mir funktioniert.

Vielleicht befindet sich das pb in der Datei package-lock.json, die die Momentknotendaten nicht richtig aktualisiert. Durch Entfernen und Neustarten von npm install erstellen Sie eine neue Datei package-lock.json mit allen aktualisierten Daten.

@younss , danke , funktioniert bei mir, ich benutze Paket-Bündel

Diese Lösung hat bei mir funktioniert.. Hier

Ich fügte hinzu:
import 'moment/locale/fr';

Hat sich das wieder geändert?
Ich installierte:

npm i moment-with-locales-es6
npm i moment

Ich habe eine Klasse mit einer Funktion erstellt:

import * as moment from 'moment';
import 'moment/locale/pt-br';
import 'moment/locale/fr-ca';

export class DatetimeFormatPipe
    transform(date: string): string {
        moment.locale('pt-BR');
        console.log(moment.locale()); 
        console.log('pt-BR', moment(date).toLocaleString());

        moment.locale('fr-CA');
        console.log(moment.locale());
        console.log('fr-CA', moment(date).toLocaleString());

        return "";
    }
}

Die Protokolle sind wie folgt:

pt-br
pt-BR Di 20 Dez 2016 10:45:12 GMT+0100
fr-ca
fr-CA Di 20. Dez. 2016 10:45:12 GMT+0100

so importieren
import 'moment/src/locale/fr-ca';
import 'moment/src/locale/en-ca';

Bei mir funktioniert es danke!

Ich benutze:

import moment from 'moment/dist/moment';
import fr from 'moment/dist/locale/fr';

moment.locale('fr', fr);

und es funktioniert.
Andere Lösungen haben bei mir nicht funktioniert.

import moment from 'moment/dist/moment';
import 'moment/dist/locale/ru';

moment.locale('ru');

Das einzige funktioniert für mich. @ligne13 Danke für den Hinweis!

Moment 2.25.2

Hi,

Bei Verwendung von 'import 'moment/locale/fr';' in meiner Node/Express-App habe ich diesen Fehler erhalten: "SyntaxError: Cannot use import statement outside a module" .

Ich habe das gegoogelt und versuche, --experimental-modules --es-module-specifier-resolution=node- Flags hinzuzufügen, aber jetzt ist meine App ein Chaos.

Wenn ich diesen Import nicht hinzufügen kann, gibt es eine andere Möglichkeit, das Gebietsschema zu ändern?

Vielen Dank

Paul


Spezifikationen:

  • Betriebssystem: Ubuntu 20.04 bis WSL2
  • Knoten: 12.18.3
  • NPM: 6.14.6
  • Express: 4.16.1
  • MomentJS : 2.27

Hi,

Bei Verwendung von 'import 'moment/locale/fr';' in meiner Node/Express-App habe ich diesen Fehler erhalten: "SyntaxError: Cannot use import statement outside a module" .

Ich habe das gegoogelt und versuche, --experimental-modules --es-module-specifier-resolution=node- Flags hinzuzufügen, aber jetzt ist meine App ein Chaos.

Wenn ich diesen Import nicht hinzufügen kann, gibt es eine andere Möglichkeit, das Gebietsschema zu ändern?

Vielen Dank

Paul

Spezifikationen:

  • Betriebssystem: Ubuntu 20.04 bis WSL2
  • Knoten: 12.18.3
  • NPM: 6.14.6
  • Express: 4.16.1
  • MomentJS : 2.27

@pbrissaud

Sie können 'import' in node.js noch nicht verwenden. Ich habe es selbst noch nicht ausprobiert, aber ich denke, das würde funktionieren:

require('moment/locale/fr')
moment.locale('fr');
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

chitgoks picture chitgoks  ·  3Kommentare

tanepiper picture tanepiper  ·  3Kommentare

slavafomin picture slavafomin  ·  3Kommentare

ninigix picture ninigix  ·  3Kommentare

IbraheemAlSaady picture IbraheemAlSaady  ·  3Kommentare