Always try English short month strings when parsing dates in addition to those of the bibliography locale

This commit is contained in:
Dan Stillman 2007-10-23 00:51:41 +00:00
parent 5bf7106d5b
commit 9a44efa8cf
2 changed files with 14 additions and 3 deletions

View File

@ -1161,8 +1161,13 @@ Zotero.CSL.Global = new function() {
this.getLocatorStrings = getLocatorStrings;
this.cleanXML = cleanXML;
this.parseLocales = parseLocales;
this.ns = "http://purl.org/net/xbiblio/csl";
this.locale = this.__defineGetter__("locale", function() {
Zotero.CSL.Global.init()
return Zotero.CSL.Global._xmlLang;
});
this.collation = Components.classes["@mozilla.org/intl/collation-factory;1"]
.getService(Components.interfaces.nsICollationFactory)
.CreateCollation(Components.classes["@mozilla.org/intl/nslocaleservice;1"]

View File

@ -1329,14 +1329,20 @@ Zotero.Date = new function(){
// MONTH
if(!date.month) {
// compile month regular expression
var months = Zotero.CSL.Global.getMonthStrings("short");
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',
+ 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
// If using a non-English bibliography locale, try those too
if (Zotero.CSL.Global.locale != 'en-US') {
months = months.concat(Zotero.CSL.Global.getMonthStrings("short"));
}
if(!_monthRe) {
_monthRe = new RegExp("^(.*)\\b("+months.join("|")+")[^ ]*(?: (.*)$|$)", "i");
}
var m = _monthRe.exec(date.part);
if(m) {
date.month = months.indexOf(m[2][0].toUpperCase()+m[2].substr(1).toLowerCase());
// Modulo 12 in case we have multiple languages
date.month = months.indexOf(m[2][0].toUpperCase()+m[2].substr(1).toLowerCase()) % 12;
date.part = m[1]+m[3];
Zotero.debug("DATE: got month ("+date.month+", "+date.part+")");
}