Saya mencoba mengubah bahasa tanggal yang disetel oleh moment.js. Yang standar adalah bahasa Inggris, tetapi saya ingin mengatur bahasa Jerman. Inilah yang saya coba:
var now = moment().format("LLL").lang("de");
Itu memberi NaN
.
var now = moment("de").format("LLL");
Ini bahkan tidak bereaksi.
var now = moment().format("LLL", "de");
Tidak ada perubahan: ini masih menghasilkan hasil dalam bahasa Inggris.
Bagaimana ini mungkin?
javascript
momentjs
doniyor
sumber
sumber
Jawaban:
Anda memerlukan moment.lang ( PERINGATAN :
lang()
sudah ditinggalkan sejak saat itu2.8.0
, gunakanlocale()
sebagai gantinya):http://momentjs.com/docs/#/i18n/
Pada v2.8.1,
moment.locale('de')
set lokalisasi, tetapi tidak mengembalikan amoment
. Beberapa contoh:Singkatnya, memanggil
locale
globalmoment
menetapkan lokal untuk semuamoment
instance di masa mendatang , tetapi tidak mengembalikan instance darimoment
. Memanggillocale
sebuah instance, set itu untuk instance DAN mengembalikan instance itu.Juga, seperti yang dikatakan Shiv dalam komentar, pastikan Anda menggunakan "moment-with-locales.min.js" dan bukan "moment.min.js", jika tidak, itu tidak akan berfungsi.
sumber
var deMoment = moment(); deMoment.lang('de')
dan menggunakan kembalideMoment
alih-alih momen di seluruh skrip Anda.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')
Saya juga harus mengimpor bahasa:
Kemudian gunakan momen seperti biasanya
sumber
import 'moment/locale/es'
require("moment/min/locales.min");
atau menggunakan imporimport 'moment/min/locales.min'
Metode tercepat: Instal dengan Bower
Saya baru saja menginstal momen dengan bower dan terhubung
de.js
sebagai sumber javascript dalam proyek html saya.bower install moment --save
Anda juga dapat mengunduh
moment.js
dande.js
.Tautkan 'de.js' di proyek Anda
Menautkan
de.js
file proyek utama saya secara otomatis mengubah lokal untuk semua akses ke kelas momen dan metodenya.Tidak perlu lagi melakukan
moment.locale("de").
ataumoment.lang("de").
dalam kode sumber.Tautkan lokal yang Anda inginkan seperti ini:
Atau Anda dapat menautkan pustaka tanpa
bower_components
jalur, jika Anda mengunduh gaya 1990-an moment.js melalui klik kanan, yang masih berfungsi dengan baik di sebagian besar skenario.sumber
<script src="/bower_components/moment/locale/de.js"></script>
. Ini berfungsi untuk saya sekarang.Dengan momentjs 2.8+, lakukan hal berikut:
http://momentjs.com/docs/#/i18n/
sumber
moment.locale('de')
, dan Anda membuat objek baru yang mewakili tanggal sekarang denganmoment()
(perhatikan tanda kurung) dan kemudianformat('LLL')
. Tanda kurung itu penting. Diuji dalam 2.20. Juga, ingatlah untuk menggunakanmoment-with-locale.js
dan jika perlu, ubah nama menjadimoment.js
. Django hanya menolak untuk memuatmoment-with-locale.js
dalam kasus saya.moment().locale('de').format('LLL');
Anda harus menambahkan
moment.lang(navigator.language)
skrip Anda.Dan juga harus menambahkan setiap lokal negara yang ingin Anda tampilkan: misalnya untuk GB atau FR, Anda perlu menambahkan format lokal itu di perpustakaan moment.js. Contoh format tersebut tersedia dalam dokumentasi momentjs. Jika Anda tidak menambahkan format ini di moment.js maka SELALU akan mengambil lokal AS karena hanya itu yang saya lihat saat ini.
sumber
akhir 2017/2018: jawaban lain memiliki terlalu banyak kode lama untuk diedit, jadi di sini alternatif bersih saya jawab:
dengan membutuhkan
dengan impor
Menggunakan:
dengan zona waktu
*memerlukan:
*impor:
gunakan zona:
berfungsi untuk memformat tanggal
sumber
import moment from 'moment/min/moment-with-locales';
UNTUK PENGGUNA METEOR:
saat lokal tidak diinstal secara default di meteor, Anda hanya mendapatkan lokal 'en' dengan instalasi default.
Jadi, Anda menggunakan kode seperti yang ditunjukkan dengan benar dalam jawaban lain:
tetapi akan tetap dalam bahasa Inggris sampai Anda menginstal lokal yang Anda butuhkan.
Ada cara yang bagus dan bersih untuk menambahkan masing-masing lokal untuk saat ini dalam meteor (disediakan oleh rzymek ).
Instal paket momen dengan cara meteor biasa dengan:
Kemudian tambahkan saja lokal yang Anda butuhkan, misalnya untuk Italia:
Atau jika Anda benar-benar ingin menambahkan semua lokal yang tersedia (tambahkan sekitar 30rb ke halaman Anda):
sumber
rzymek:moment-locale-de
dan berhasil :)Dengan momen 2.18.1 dan selanjutnya:
sumber
Demo
sumber
Karena saya menggunakan webpack dengan gulp dan teman-teman ( generator ini mengatur segalanya untuk saya), saya harus melakukan perubahan pada file bower.json. Saya harus mengganti impor default untuk paket saat ini dan memilih file yang datang dengan semua bahasa:
Ini adalah file bower.json lengkap saya:
sumber
Saya menggunakan angular2-moment, tetapi penggunaannya harus serupa.
sumber
Ubah bahasa js saat sesuai Versi
Versi: 2.8+
moment.locale ('hai');
Versi: 2.5.1
moment.lang ('hai');
sumber
berfungsi dengan baik seperti itu:
return moment(status.created_at).locale('es').fromNow();
sumber
Saya tidak yakin apa yang berubah tetapi mengimpor file bahasa seperti ini berhasil untuk saya
Perhatikan src dalam pernyataan impor
sumber
untuk momentjs 2.12+ , lakukan hal berikut:
Perhatikan juga bahwa Anda harus menggunakan
moment.updateLocale(localeName, config)
untuk mengubah lokal yang ada.moment.defineLocale(localeName, config)
seharusnya hanya digunakan untuk membuat lokal baru.sumber
Bagi saya, ada beberapa perubahan yang harus dilakukan (ver. 2.20)
moment.locale('de')
, dan Anda membuat objek baru yang mewakili tanggal sekarang denganmoment()
(perhatikan tanda kurung) dan kemudianformat('LLL')
itu. Tanda kurung itu penting.Jadi itu berarti:
moment-with-locale.js
. File berisi semua info lokal dan memiliki ukuran file yang lebih besar. Unduhlocale
folder tidak cukup. Jika perlu, ubah nama menjadimoment.js
. Django hanya menolak untuk memuatmoment-with-locale.js
dalam kasus saya.EDIT: Ternyata mengganti nama file tidak perlu. Saya hanya lupa memohonnya di halaman sehingga Django tidak berpikir memuat itu perlu, jadi salah saya.
sumber
Yang ini hanya berfungsi dengan secara otomatis mendeteksi lokasi pengguna saat ini.
sumber
Selipkan pena. Saya akan memecahkan ini:
var moment = function(x) { return moment(x).locale('de'); }
Cara-cara lain tampaknya tidak benar-benar menempel / bertahan dalam kondisi (bagi saya).sumber
Bagi mereka yang bekerja di lingkungan asinkron,
moment
berperilaku tak terduga saat memuat lokal berdasarkan permintaan.Dari pada
membalikkan urutan
Sepertinya lokal dimuat ke lokal yang dipilih saat ini, mengesampingkan informasi lokal yang ditetapkan sebelumnya. Jadi beralih lokal terlebih dahulu, lalu memuat informasi lokal tidak menyebabkan masalah ini.
sumber
Setelah berjuang, ini bekerja untuk saya untuk
moment
v2.26.0:Anda bisa lewat
en
,fr
ataues
. Jika Anda ingin bahasa lain, Anda harus mengimpor lokal dan menambahkannya ke array.Jika Anda hanya perlu mendukung satu bahasa, itu sedikit lebih sederhana:
sumber