How do I change the language of moment.js?

javascript, momentjs

Solution

You need moment.lang (WARNING: `lang()` is deprecated since moment `2.8.0`, use `locale()` instead):

moment.lang("de").format('LLL');

http://momentjs.com/docs/#/i18n/

As of v2.8.1, `moment.locale('de')` sets the localization, but does not return a `moment`. Some examples:

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'

In summation, calling `locale` on the global `moment` sets the locale for all future `moment` instances, but does not return an instance of `moment`. Calling `locale` on an instance, sets it for that instance AND returns that instance.

Also, as Shiv said in the comments, make sure you use "moment-with-locales.min.js" and not "moment.min.js", otherwise it won't work.

Problem

I am trying to change the language of the date which is being set by moment.js. The default one is English, but I want to set the German language. These is what I tried: ``` var now = moment().format("LLL").lang("de"); ``` It’s giving `NaN`. ``` var now = moment("de").format("LLL"); ``` This isn’t even reacting. ``` var now = moment().format("LLL", "de"); ``` No change: this is still producing a result in English. How is this possible?

Original source

Related problems