From 55280e52560ee3b04cdcc38aac3c14c1272e7a00 Mon Sep 17 00:00:00 2001 From: Simon Kornblith Date: Fri, 17 Jun 2011 20:05:48 +0000 Subject: [PATCH] - fix Zotero.loadTranslator() from sandbox - add (currently only en-US) months to Zotero.Date for connectors (localization is #1830) --- chrome/content/zotero/xpcom/date.js | 35 ++++++++++++------- .../zotero/xpcom/translation/translate.js | 16 +++++---- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/chrome/content/zotero/xpcom/date.js b/chrome/content/zotero/xpcom/date.js index e855bd5734..2fe26ad070 100644 --- a/chrome/content/zotero/xpcom/date.js +++ b/chrome/content/zotero/xpcom/date.js @@ -51,19 +51,28 @@ Zotero.Date = new function(){ * 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(var i=1; i<=12; i++) { - _months.short.push(bundle.GetStringFromName("month."+i+".Mmm")); - _months.long.push(bundle.GetStringFromName("month."+i+".name")); + if(Zotero.isFx) { + 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(var i=1; i<=12; i++) { + _months.short.push(bundle.GetStringFromName("month."+i+".Mmm")); + _months.long.push(bundle.GetStringFromName("month."+i+".name")); + } + } else { + // TODO localize for Chrome/Safari + _months = { + "short":["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", + "Oct", "Nov", "Dec"], + "long":["January", "February", "March", "April", "May", "June", "July", + "Auguest", "September", "October", "November", "December"]}; } } diff --git a/chrome/content/zotero/xpcom/translation/translate.js b/chrome/content/zotero/xpcom/translation/translate.js index 8dd093d6c0..3fb07ea0ae 100644 --- a/chrome/content/zotero/xpcom/translation/translate.js +++ b/chrome/content/zotero/xpcom/translation/translate.js @@ -181,11 +181,15 @@ Zotero.Translate.Sandbox = { translation.setHandler(arg1, function(obj, item) { try { - // necessary to get around object wrappers - if(Zotero.isFx && arg1 == "itemDone" - && (translate instanceof Zotero.Translate.Web - || translate instanceof Zotero.Translate.Search)) { - item = translate._sandboxManager.sandbox.Zotero._transferItem(JSON.stringify(item)); + if(arg1 == "itemDone") { + if(Zotero.isFx && (translate instanceof Zotero.Translate.Web + || translate instanceof Zotero.Translate.Search)) { + // necessary to get around object wrappers in Firefox + item = translate._sandboxManager.sandbox.Zotero._transferItem(JSON.stringify(item)); + } else { + // otherwise, just use parent translator's complete function + item.complete = translate._sandboxManager.sandbox.Zotero.Item.prototype.complete; + } } arg2(obj, item); } catch(e) { @@ -665,7 +669,7 @@ Zotero.Translate.Base.prototype = { } for(var i in this._handlers[type]) { - Zotero.debug("Translate: running handler "+i+" for "+type, 5); + Zotero.debug("Translate: Running handler "+i+" for "+type, 5); try { returnValue = this._handlers[type][i].apply(null, args); } catch(e) {