RunLoop
RunLoop

Reputation: 20376

Locale detection with Moment.js

I am using Moment.js in my project and formatting dates as follows:

var date = moment.unix(1318781876);
return date.format('LLLL');

The moment docs state the multiple locales are supported. I would like to know if moment.js will auto-detect the locale, or do I need to detect the locale and pass it to moment?

Update My goal is to ensure the displayed date is in the format of the user's region. i.e. in the US the short date format is mm/dd/yy whereas in the UK it is dd/mm/yy

Upvotes: 78

Views: 75487

Answers (3)

Ckuessner
Ckuessner

Reputation: 731

For everyone stumbling on this question:

 const locale = navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.language;

 moment.locale(locale);

in my case I had to not only import moment but also the different locales so I was able to make sure the locale was actually set in moment. Otherwise functions like

moment.localeData();

would just return the default value.

This worked for me:

import moment from "moment/min/moment-with-locales";

Upvotes: 3

MAHENDRA. A.R
MAHENDRA. A.R

Reputation: 101

import moment from 'moment';  
import 'moment/locale/fr';  
moment.locale('fr')

View issue comment

Upvotes: -2

Joanvo
Joanvo

Reputation: 5817

As of momentjs documentation:

By default, Moment.js comes with English locale strings. If you need other locales, you can load them into Moment.js for later use.

You can change it with that:

moment.locale(locale);

To get the user's locale with javascript you can do that:

var locale = window.navigator.userLanguage || window.navigator.language;

Refer to: http://momentjs.com/docs/#/i18n/changing-locale/

and JavaScript for detecting browser language preference

Upvotes: 162

Related Questions