load date strings from Fx dateFormat bundle instead of using citeproc-js

This commit is contained in:
Simon Kornblith 2010-12-11 07:00:42 +00:00
parent ac9d524a9f
commit 83d34a9f77
2 changed files with 33 additions and 40 deletions

View file

@ -373,38 +373,3 @@ Zotero.Cite.makeFormattedBibliography = function(cslEngine, format) {
Zotero.Cite.labels = ["page", "book", "chapter", "column", "figure", "folio",
"issue", "line", "note", "opus", "paragraph", "part", "section", "sub verbo",
"volume", "verse"];
Zotero.Cite._monthStrings = false;
Zotero.Cite.getMonthStrings = function(form, locale) {
if(Zotero.Cite._monthStrings){
return Zotero.Cite._monthStrings[form];
} else {
Zotero.Cite._monthStrings = {"long":[], "short":[]};
var sys = {'xml':new Zotero.CiteProc.CSL.System.Xml.Parsing()};
if(!locale) locale = Zotero.locale;
var cslLocale = Zotero.CiteProc.CSL.localeResolve(Zotero.locale);
if(!Zotero.CiteProc.CSL.locale[cslLocale.best]) {
let localexml = sys.xml.makeXml(Zotero.Cite.System.retrieveLocale(cslLocale.best));
Zotero.CiteProc.CSL.localeSet.call(Zotero.CiteProc.CSL, sys, localexml, cslLocale.best, cslLocale.best);
}
var locale = Zotero.CiteProc.CSL.locale[cslLocale.best];
if(!locale) {
Zotero.log("No locale "+cslLocale.best+"; using en-US", "warning");
return Zotero.Cite.getMonthStrings(form, "en-US");
}
for(let i=1; i<=12; i++) {
let term = locale.terms["month-"+(i<10 ? "0" : "")+i];
if(term) {
Zotero.Cite._monthStrings["long"][i-1] = term["long"];
Zotero.Cite._monthStrings["short"][i-1] = (term["short"] ? term["short"].replace(".", "", "g") : term["long"]);
} else {
Zotero.log("No month "+i+" specified for locale "+cslLocale.best, "warning");
}
}
return Zotero.Cite._monthStrings[form];
}
}

View file

@ -45,7 +45,35 @@ Zotero.Date = new function(){
this.getLocaleDateOrder = getLocaleDateOrder;
var _localeDateOrder = null;
var _months = null;
/**
* Load dateFormat bundle into _dateFormatsBundle
*/
function _loadDateFormatsBundle() {
var src = 'chrome://global/locale/dateFormat.properties';
var localeService = Components.classes['@mozilla.org/intl/nslocaleservice;1'].
getService(Components.interfaces.nsILocaleService);
var appLocale = localeService.getApplicationLocale();
var bundle =
Components.classes["@mozilla.org/intl/stringbundle;1"]
.getService(Components.interfaces.nsIStringBundleService).createBundle(src, appLocale);
_months = {"short":[], "long":[]};
for(let i=1; i<=12; i++) {
_months.short.push(bundle.GetStringFromName("month."+i+".Mmm"));
_months.long.push(bundle.GetStringFromName("month."+i+".name"));
}
}
/**
* Lazy getter for reading month strings from dateFormat.properties
*/
this.__defineGetter__("months", function() {
if(!_months) _loadDateFormatsBundle();
return _months;
});
/**
* Convert an SQL date in the form '2006-06-13 11:03:05' into a JS Date object
@ -305,9 +333,9 @@ Zotero.Date = new function(){
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.locale != 'en-US') {
months = months.concat(Zotero.Cite.getMonthStrings("short"));
}
//if (Zotero.locale != 'en-US') {
months = months.concat(Zotero.Date.months.short);
//}
if(!_monthRe) {
_monthRe = new RegExp("^(.*)\\b("+months.join("|")+")[^ ]*(?: (.*)$|$)", "i");
}
@ -383,7 +411,7 @@ Zotero.Date = new function(){
string += date.part+" ";
}
var months = Zotero.Cite.getMonthStrings("long");
var months = Zotero.Date.months.long;
if(date.month != undefined && months[date.month]) {
// get short month strings from CSL interpreter
string += months[date.month];