return value;
}
+ function normalizeLanguage(key) {
+ return key.toLowerCase().replace('_', '-');
+ }
+
/************************************
Languages
************************************/
// definition for 'en', so long as 'en' has already been loaded using
// moment.lang.
function getLangDefinition(key) {
- if (!key) {
- return moment.fn._lang;
- }
- if (!languages[key] && hasModule) {
- try {
- require('./lang/' + key);
- } catch (e) {
- // call with no params to set to default
- return moment.fn._lang;
+ var i, lang,
+ get = function (k) {
+ k = normalizeLanguage(k);
+ if (!languages[k] && hasModule) {
+ try {
+ require('./lang/' + k);
+ } catch (e) { }
+ }
+ return languages[k];
+ };
+
+ if (isArray(key)) {
+ for (i in key) {
+ lang = get(key[i]);
+ if (lang) {
+ return lang;
+ }
}
}
- return languages[key] || moment.fn._lang;
+ else if (key) {
+ return get(key) || moment.fn._lang;
+ }
+
+ return moment.fn._lang;
}
// no arguments are passed in, it will simply return the current global
// language key.
moment.lang = function (key, values) {
+ var r;
if (!key) {
return moment.fn._lang._abbr;
}
- key = key.toLowerCase();
- key = key.replace('_', '-');
if (values) {
- loadLang(key, values);
+ loadLang(normalizeLanguage(key), values);
} else if (values === null) {
unloadLang(key);
key = 'en';
} else if (!languages[key]) {
getLangDefinition(key);
}
- moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key);
+ r = moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key);
+ return r._abbr;
};
// returns language data
exports.lang = {
"library getter" : function (test) {
- test.expect(7);
+ var r;
+ test.expect(8);
- moment.lang('en');
+ r = moment.lang('en');
+ test.equal(r, 'en', 'Lang should return en by default');
test.equal(moment.lang(), 'en', 'Lang should return en by default');
moment.lang('fr');
test.done();
},
+ "library getter array of langs" : function (test) {
+ test.equal(moment.lang(['non-existent', 'fr', 'also-non-existent']), 'fr', "passing an array uses the first valid language");
+ test.equal(moment.lang(['es', 'fr', 'also-non-existent']), 'es', "passing an array uses the first valid language");
+ test.done();
+ },
+
"library ensure inheritance" : function (test) {
test.expect(2);
test.done();
},
+ "instance lang method with array" : function (test) {
+ var m = moment().lang(['non-existent', 'fr', 'also-non-existent']);
+ test.equal(m.lang()._abbr, 'fr', "passing an array uses the first valid language");
+ m = moment().lang(['es', 'fr', 'also-non-existent']);
+ test.equal(m.lang()._abbr, 'es', "passing an array uses the first valid language");
+ test.done();
+ },
+
"instance lang persists with manipulation" : function (test) {
test.expect(3);
moment.lang('en');