Closes #541, Option to force use of English (or any arbitrary locale?) in bibliographies
For now, via hidden pref, extensions.zotero.export.bibliographyLocale -- we'll add it to the UI in 1.5
This commit is contained in:
parent
96a95f0e1c
commit
5bf7106d5b
|
@ -1178,18 +1178,57 @@ Zotero.CSL.Global = new function() {
|
|||
*/
|
||||
function init() {
|
||||
if(!Zotero.CSL.Global._xmlLang) {
|
||||
// get XML lang
|
||||
Zotero.CSL.Global._xmlLang = Zotero.locale;
|
||||
var prefix = "chrome://zotero/content/locale/csl/locales-";
|
||||
var ext = ".xml";
|
||||
|
||||
// read locales.xml from directory
|
||||
var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].
|
||||
createInstance();
|
||||
req.open("GET", "chrome://zotero/locale/locales.xml", false);
|
||||
req.overrideMimeType("text/plain");
|
||||
req.send(null);
|
||||
// If explicit bib locale, try to use that
|
||||
var bibLocale = Zotero.Prefs.get('export.bibliographyLocale');
|
||||
if (bibLocale) {
|
||||
var loc = bibLocale;
|
||||
var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].
|
||||
createInstance();
|
||||
req.open("GET", prefix + loc + ext, false);
|
||||
req.overrideMimeType("text/plain");
|
||||
req.send(null);
|
||||
|
||||
if (req.responseText) {
|
||||
Zotero.CSL.Global._xmlLang = loc;
|
||||
var xml = req.responseText;
|
||||
}
|
||||
}
|
||||
|
||||
// If no or invalid bib locale, try Firefox locale
|
||||
if (!xml) {
|
||||
var loc = Zotero.locale;
|
||||
var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].
|
||||
createInstance();
|
||||
req.open("GET", prefix + loc + ext, false);
|
||||
req.overrideMimeType("text/plain");
|
||||
req.send(null);
|
||||
|
||||
if (req.responseText) {
|
||||
Zotero.CSL.Global._xmlLang = loc;
|
||||
var xml = req.responseText;
|
||||
}
|
||||
}
|
||||
|
||||
// Fall back to en-US if no locales.xml
|
||||
if (!xml) {
|
||||
var loc = 'en-US';
|
||||
var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].
|
||||
createInstance();
|
||||
req.open("GET", prefix + loc + ext, false);
|
||||
req.overrideMimeType("text/plain");
|
||||
req.send(null);
|
||||
|
||||
Zotero.CSL.Global._xmlLang = loc;
|
||||
var xml = req.responseText;
|
||||
}
|
||||
|
||||
Zotero.debug('CSL: Using ' + loc + ' as bibliography locale');
|
||||
|
||||
// get default terms
|
||||
var locales = new XML(Zotero.CSL.Global.cleanXML(req.responseText));
|
||||
var locales = new XML(Zotero.CSL.Global.cleanXML(xml));
|
||||
Zotero.CSL.Global._defaultTerms = Zotero.CSL.Global.parseLocales(locales, true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -132,18 +132,57 @@ Zotero.CSL.Compat.Global = new function() {
|
|||
*/
|
||||
this.init = function() {
|
||||
if(!Zotero.CSL.Compat.Global._xmlLang) {
|
||||
// get XML lang
|
||||
Zotero.CSL.Compat.Global._xmlLang = Zotero.locale;
|
||||
var prefix = "chrome://zotero/content/locale/csl/locales-";
|
||||
var ext = ".xml";
|
||||
|
||||
// read locales.xml from directory
|
||||
var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].
|
||||
createInstance();
|
||||
req.open("GET", "chrome://zotero/locale/locales.xml", false);
|
||||
req.overrideMimeType("text/plain");
|
||||
req.send(null);
|
||||
// If explicit bib locale, try to use that
|
||||
var bibLocale = Zotero.Prefs.get('export.bibliographyLocale');
|
||||
if (bibLocale) {
|
||||
var loc = bibLocale;
|
||||
var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].
|
||||
createInstance();
|
||||
req.open("GET", prefix + loc + ext, false);
|
||||
req.overrideMimeType("text/plain");
|
||||
req.send(null);
|
||||
|
||||
if (req.responseText) {
|
||||
Zotero.CSL.Compat.Global._xmlLang = bibLocale;
|
||||
var xml = req.responseText;
|
||||
}
|
||||
}
|
||||
|
||||
// If no or invalid bib locale, try Firefox locale
|
||||
if (!xml) {
|
||||
var loc = Zotero.locale;
|
||||
var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].
|
||||
createInstance();
|
||||
req.open("GET", prefix + loc + ext, false);
|
||||
req.overrideMimeType("text/plain");
|
||||
req.send(null);
|
||||
|
||||
if (req.responseText) {
|
||||
Zotero.CSL.Compat.Global._xmlLang = loc;
|
||||
var xml = req.responseText;
|
||||
}
|
||||
}
|
||||
|
||||
// Fall back to en-US if no locales.xml
|
||||
if (!xml) {
|
||||
var loc = 'en-US';
|
||||
var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].
|
||||
createInstance();
|
||||
req.open("GET", prefix + loc + ext, false);
|
||||
req.overrideMimeType("text/plain");
|
||||
req.send(null);
|
||||
|
||||
Zotero.CSL.Compat.Global._xmlLang = loc;
|
||||
var xml = req.responseText;
|
||||
}
|
||||
|
||||
Zotero.debug('CSL: Using ' + loc + ' as bibliography locale');
|
||||
|
||||
// get default terms
|
||||
var locales = new XML(Zotero.CSL.Compat.Global.cleanXML(req.responseText));
|
||||
var locales = new XML(Zotero.CSL.Compat.Global.cleanXML(xml));
|
||||
Zotero.CSL.Compat.Global._defaultTerms = Zotero.CSL.Compat.Global.parseLocales(locales, true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,6 +58,7 @@ pref("extensions.zotero.export.lastTranslator", '14763d24-8ba0-45df-8f52-b8d1108
|
|||
pref("extensions.zotero.export.translatorSettings", 'true,false');
|
||||
pref("extensions.zotero.export.lastStyle", 'http://purl.org/net/xbiblio/csl/styles/chicago-note.csl');
|
||||
pref("extensions.zotero.export.bibliographySettings", 'save-as-rtf');
|
||||
pref("extensions.zotero.export.bibliographyLocale", '');
|
||||
|
||||
pref("extensions.zotero.export.quickCopy.setting", 'bibliography=http://purl.org/net/xbiblio/csl/styles/chicago-note.csl');
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user