diff --git a/chrome/content/zotero/bibliography.js b/chrome/content/zotero/bibliography.js
index 038ebd781..23b2b9564 100644
--- a/chrome/content/zotero/bibliography.js
+++ b/chrome/content/zotero/bibliography.js
@@ -235,7 +235,10 @@ var Zotero_File_Interface_Bibliography = new function() {
this.acceptSelection = function () {
// collect code
_io.style = document.getElementById("style-listbox").value;
- _io.locale = document.getElementById("locale-menu").value;
+
+ let localeMenu = document.getElementById("locale-menu");
+ _io.locale = localeMenu.disabled ? undefined : localeMenu.value;
+
if(document.getElementById("output-method-radio")) {
// collect settings
_io.mode = document.getElementById("output-mode-radio").selectedItem.id;
diff --git a/chrome/content/zotero/xpcom/integration.js b/chrome/content/zotero/xpcom/integration.js
index a6c6e7bdb..0ef306611 100644
--- a/chrome/content/zotero/xpcom/integration.js
+++ b/chrome/content/zotero/xpcom/integration.js
@@ -2029,7 +2029,7 @@ Zotero.Integration.Session.prototype.resetRequest = function(doc) {
* @param data {Zotero.Integration.DocumentData}
* @param resetStyle {Boolean} Whether to force the style to be reset
* regardless of whether it has changed. This is desirable if the
- * automaticJournalAbbreviations has changed.
+ * automaticJournalAbbreviations or locale has changed.
*/
Zotero.Integration.Session.prototype.setData = function(data, resetStyle) {
var oldStyle = (this.data && this.data.style ? this.data.style : false);
@@ -2039,7 +2039,7 @@ Zotero.Integration.Session.prototype.setData = function(data, resetStyle) {
try {
var getStyle = Zotero.Styles.get(data.style.styleID);
data.style.hasBibliography = getStyle.hasBibliography;
- this.style = getStyle.getCiteProc(data.locale, data.prefs.automaticJournalAbbreviations);
+ this.style = getStyle.getCiteProc(data.style.locale, data.prefs.automaticJournalAbbreviations);
this.style.setOutputFormat("rtf");
this.styleClass = getStyle.class;
this.dateModified = new Object();
@@ -2069,7 +2069,7 @@ Zotero.Integration.Session.prototype.setDocPrefs = function(doc, primaryFieldTyp
if(this.data) {
io.style = this.data.style.styleID;
- io.locale = this.data.locale;
+ io.locale = this.data.style.locale;
io.useEndnotes = this.data.prefs.noteType == 0 ? 0 : this.data.prefs.noteType-1;
io.fieldType = this.data.prefs.fieldType;
io.primaryFieldType = primaryFieldType;
@@ -2092,19 +2092,17 @@ Zotero.Integration.Session.prototype.setDocPrefs = function(doc, primaryFieldTyp
var data = new Zotero.Integration.DocumentData();
data.sessionID = oldData.sessionID;
data.style.styleID = io.style;
- data.locale = io.locale;
+ data.style.locale = io.locale;
data.prefs.fieldType = io.fieldType;
data.prefs.storeReferences = io.storeReferences;
data.prefs.automaticJournalAbbreviations = io.automaticJournalAbbreviations;
-
- var localeChanged = false;
- if (!oldData.locale || (oldData.locale != io.locale)) {
- localeChanged = true;
- }
-
- me.setData(data, oldData &&
- (oldData.prefs.automaticJournalAbbreviations !=
- data.prefs.automaticJournalAbbreviations || localeChanged));
+
+ var forceStyleReset = oldData
+ && (
+ oldData.prefs.automaticJournalAbbreviations != data.prefs.automaticJournalAbbreviations
+ || oldData.style.locale != io.locale
+ );
+ me.setData(data, forceStyleReset);
// need to do this after setting the data so that we know if it's a note style
me.data.prefs.noteType = me.style && me.styleClass == "note" ? io.useEndnotes+1 : 0;
@@ -2983,6 +2981,7 @@ Zotero.Integration.DocumentData.prototype.serializeXML = function() {
'zotero-version="'+Zotero.Utilities.htmlSpecialChars(Zotero.version)+'">'+
''+
''+
(prefs ? ''+prefs+'' : '')+'';
@@ -2998,6 +2997,7 @@ Zotero.Integration.DocumentData.prototype.unserializeXML = function(xmlData) {
this.sessionID = Zotero.Utilities.xpathText(doc, '/data/session[1]/@id');
this.style = {"styleID":Zotero.Utilities.xpathText(doc, '/data/style[1]/@id'),
+ "locale":Zotero.Utilities.xpathText(doc, '/data/style[1]/@locale'),
"hasBibliography":(Zotero.Utilities.xpathText(doc, '/data/style[1]/@hasBibliography') == 1),
"bibliographyStyleHasBeenSet":(Zotero.Utilities.xpathText(doc, '/data/style[1]/@bibliographyStyleHasBeenSet') == 1)};
this.prefs = {};