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) {