Próbuję zmienić język daty ustawianej przez moment.js. Domyślnym jest angielski, ale chcę ustawić język niemiecki. Oto, co próbowałem:
var now = moment().format("LLL").lang("de");
Daje NaN
.
var now = moment("de").format("LLL");
To nawet nie reaguje.
var now = moment().format("LLL", "de");
Bez zmian: nadal daje wynik w języku angielskim.
Jak to jest możliwe?
javascript
momentjs
dawca
źródło
źródło
Odpowiedzi:
Potrzebujesz moment.lang ( OSTRZEŻENIE :
lang()
jest przestarzałe od chwili2.8.0
,locale()
zamiast tego użyj ):http://momentjs.com/docs/#/i18n/
Począwszy od wersji 2.8.1,
moment.locale('de')
ustawia lokalizację, ale nie zwraca amoment
. Kilka przykładów:Podsumowując, wywołanie
locale
globalnegomoment
ustawia ustawienia regionalne dla wszystkich przyszłychmoment
instancji, ale nie zwraca instancjimoment
. Wywołanielocale
instancji ustawia ją dla tej instancji ORAZ zwraca tę instancję.Ponadto, jak powiedział Shiv w komentarzach, upewnij się, że używasz „moment-with-locales.min.js”, a nie „moment.min.js”, w przeciwnym razie nie zadziała.
źródło
var deMoment = moment(); deMoment.lang('de')
i użyć ponowniedeMoment
zamiast chwili w całym skrypcie.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')
Musiałem zaimportować również język:
Następnie wykorzystaj moment, jak zwykle
źródło
import 'moment/locale/es'
require("moment/min/locales.min");
lub importuimport 'moment/min/locales.min'
Najszybsza metoda: zainstaluj z Bower
Właśnie zainstalowałem moment z altaną i połączono
de.js
jako zasób javascript w moim projekcie HTML.bower install moment --save
Możesz także ręcznie pobrać
moment.js
ide.js
.Link „de.js” w swoim projekcie
Łączenie
de.js
w moim głównym pliku projektu automatycznie zmieniało ustawienia regionalne dla wszystkich dostępów do klasy momentu i jej metod.Tam będzie już potrzeby wykonywania
moment.locale("de").
animoment.lang("de").
w kodzie źródłowym.Po prostu połącz swoje pożądane ustawienia regionalne w ten sposób:
Możesz też połączyć biblioteki bez
bower_components
ścieżki, jeśli pobrałeś plik moment.js w stylu lat 90. za pomocą kliknięcia prawym przyciskiem myszy, co nadal działa dobrze w większości scenariuszy.źródło
<script src="/bower_components/moment/locale/de.js"></script>
To działa teraz dla mnie.Z momentjs 2.8+ wykonaj następujące czynności:
http://momentjs.com/docs/#/i18n/
źródło
moment.locale('de')
i tworzysz nowy obiekt reprezentujący datę teraz przezmoment()
(zwróć uwagę na nawias), a następnieformat('LLL')
to. Nawias jest ważny. Testowany w 2.20. Pamiętaj również, aby użyćmoment-with-locale.js
i, jeśli to konieczne, zmień nazwę namoment.js
. Django po prostu odmawia załadowaniamoment-with-locale.js
w moim przypadku.moment().locale('de').format('LLL');
Musisz dodać
moment.lang(navigator.language)
w skrypcie.Musisz także dodać ustawienia regionalne dla każdego kraju, w którym chcesz wyświetlać: na przykład dla GB lub FR, musisz dodać ten format ustawień regionalnych do biblioteki moment.js. Przykład takiego formatu jest dostępny w dokumentacji momentjs. Jeśli nie dodasz tego formatu w chwili.js, ZAWSZE wybierzesz ustawienia regionalne w USA, ponieważ jest to jedyny, który obecnie widzę.
źródło
koniec 2017/2018: inne odpowiedzi mają zbyt stary kod do edycji, więc tutaj moja alternatywna czysta odpowiedź:
z wymaganiem
z importem
Posługiwać się:
ze strefą czasową
*wymagać:
*import:
użyj stref:
funkcja formatowania daty
źródło
import moment from 'moment/min/moment-with-locales';
DLA UŻYTKOWNIKÓW METEOR:
W chwili, gdy ustawienia narodowe nie są instalowane domyślnie w Meteorze, dostajesz tylko ustawienia narodowe „en” z domyślną instalacją.
Więc używasz kodu pokazanego poprawnie w innych odpowiedziach:
ale pozostanie po angielsku, dopóki nie zainstalujesz potrzebnych ustawień regionalnych.
Jest ładny, czysty sposób dodawania poszczególne lokalizacje na chwilę w meteor (dostarczony przez Rzymek ).
Zainstaluj pakiet chwil w zwykły sposób meteorologiczny za pomocą:
Następnie po prostu dodaj potrzebne lokalizacje, np. Dla języka włoskiego:
Lub jeśli naprawdę chcesz dodać wszystkie dostępne ustawienia narodowe (dodaje około 30k na swojej stronie):
źródło
rzymek:moment-locale-de
i zadziałało :)Z momentem 2.18.1 i nowszym:
źródło
Próbny
źródło
Kiedy korzystałem z webpacka z gulpem i przyjaciółmi ( ten generator skonfigurował dla mnie wszystko) musiałem zmienić plik bower.json. Musiałem zastąpić domyślny import pakietu chwilowego i wybrać plik dostarczany we wszystkich językach:
To jest mój pełny plik bower.json:
źródło
Używam momentu kątowego2, ale użycie musi być podobne.
źródło
Zmień język js momentu zgodnie z wersją
Wersja: 2.8+
moment.locale („cześć”);
Wersja: 2.5.1
moment.lang („cześć”);
źródło
działaj dobrze tak:
return moment(status.created_at).locale('es').fromNow();
źródło
Nie jestem pewien, co się zmieniło, ale importowanie takiego pliku językowego działało dla mnie
Zwróć uwagę na src w instrukcji importu
źródło
dla momentjs 2.12+ wykonaj następujące czynności:
Pamiętaj też, że musisz użyć,
moment.updateLocale(localeName, config)
aby zmienić istniejące ustawienia narodowe.moment.defineLocale(localeName, config)
powinien być używany tylko do tworzenia nowych ustawień regionalnych.źródło
Dla mnie są pewne zmiany do wprowadzenia (wer. 2.20)
moment.locale('de')
i tworzysz nowy obiekt reprezentujący datę teraz przezmoment()
(zwróć uwagę na nawias), a następnieformat('LLL')
go. Nawias jest ważny.Wiec to znaczy:
moment-with-locale.js
. Plik zawiera wszystkie informacje o ustawieniach regionalnych i ma większy rozmiar. Pobierzlocale
folder to za mało. W razie potrzeby zmień nazwę namoment.js
. Django po prostu odmawia załadowaniamoment-with-locale.js
w moim przypadku.EDYCJA: Okazało się, że zmiana nazwy pliku nie jest konieczna. Właśnie zapomniałem wywołać go na stronie, więc Django nie uważa, aby ładowanie było konieczne, więc moja wina.
źródło
Ten działa po prostu przez automatyczne wykrywanie bieżącej lokalizacji użytkownika.
źródło
Ups, długopis. Rozwiązałbym to:
var moment = function(x) { return moment(x).locale('de'); }
inne sposoby nie wydają się trzymać / trzymać w określonych warunkach (dla mnie).źródło
Dla osób pracujących w środowiskach asynchronicznych
moment
zachowują się nieoczekiwanie podczas ładowania ustawień regionalnych na żądanie.Zamiast
odwrócić kolejność
Wygląda na to, że ustawienia narodowe są ładowane do aktualnie wybranych ustawień regionalnych, przesłaniając wcześniej ustawione informacje dotyczące ustawień regionalnych. Dlatego najpierw zmiana ustawień regionalnych, a następnie ładowanie informacji o ustawieniach regionalnych nie powoduje tego problemu.
źródło
Po zmaganiach zadziałało to dla mnie w wersji
moment
2.26.0:Można przejść się
en
,fr
czyes
. Jeśli chcesz mieć inny język, musisz zaimportować ustawienia regionalne i dodać je do tablicy.Jeśli potrzebujesz obsługiwać tylko jeden język, jest to nieco prostsze:
źródło