commit bd0a4a3b96d92c8ff47f3451aba34d70f5c51ccc
parent 79d3122f58b9f225bb8d30227a22d6799aad6668
Author: Simon Kornblith <simon@simonster.com>
Date: Sun, 30 May 2010 11:25:25 +0000
Use citeproc-js as CSL parser. There is an issue with multiple citations in numbered styles that I will probably need Frank's help to track down, but otherwise, this seems to work. Many things are completely untested, including EndNote style support. Currently requires CSL 1.0 styles. In the near future, I hope to use the XSLT stylesheet to transform CSL 0.8 to CSL 1.0.
closes #1650: suppress author does not work for multiple sources
closes #1505: Edit Biblography Button Strips Year Disambiguation
closes #1503: Editing a bibliography resets all reference numbers to 1 (new)
closes #1262: Broken pluralization with et al. + other issues
closes #1238: Localize quotation marks
closes #1191: Harmonize 'plural/pluralize' label attribute with CSL schema
closes #1154: Only one works page numbers are added to the citation are when citing multiple works by the same author
closes #1097: Disambiguation issues
closes #1083: Defect in IEEE CSL with Multiple Citations
closes #993: more sophisticated subsequent-author-substitute
closes #833: text-transform doesn't work with name
Diffstat:
54 files changed, 20161 insertions(+), 11605 deletions(-)
diff --git a/chrome/content/zotero/bindings/styled-textbox.xml b/chrome/content/zotero/bindings/styled-textbox.xml
@@ -60,15 +60,30 @@
"<b>":"\\b ",
"</b>":"\\b0 ",
"<br />":"\x0B",
- "<sup>":"\\super ",
- "</sup>":"\\super0 ",
- "<sub>":"\\sub ",
- "</sub>":"\\sub0 ",
// there's no way to mimic a tab stop in CSS without
// tables, which wouldn't work here.
- '<span class="tab"> </span>':"\t"
+ '<span class="tab"> </span>':"\\tab "
};
+ this._rtfToHtmlMap = [
+ [/\\uc0\{?\\u([0-9]+)\}? ?/g, function(wholeStr, aCode) { return String.fromCharCode(aCode) }],
+ ["\\t ", '<span class="tab"> </span>'],
+ [/(?:\\par |\\\r?\n)/g, "</p><p>"],
+ [/\\super (.*?)\\nosupersub /g, "<sup>$1</sup>"],
+ [/\\sub (.*?)\\nosupersub /g, "<sub>$1</sub>"],
+ ];
+
+ this._htmlToRtfMap = [
+ [/[\x7F-\uFFFF]/g, function(aChar) { return "\\uc0\\u"+aChar.charCodeAt(0).toString()+" " }],
+ ["<p>", ""],
+ ["</p>", "\\par "],
+ [/<\/?div[^>]*>/g, ""],
+ ["<sup>", "\\super "],
+ ["</sup>", "\\nosupersub "],
+ ["<sub>", "\\sub "],
+ ["</sub>", "\\nosupersub "],
+ ];
+
this._rtfRexMap = [
["<span style=\"font-variant:small-caps;\">",
/small-caps/,
@@ -117,7 +132,6 @@
break;
case 'change':
- Zotero.debug("Event type is " + event.type);
break;
default:
@@ -163,16 +177,9 @@
<!-- Sets or returns contents of rich text box -->
<property name="value">
<getter><![CDATA[
- var output = this._editor.getBody();
- output = output.innerHTML;
- Zotero.debug("RAW");
- Zotero.debug(output);
-
var output = this._editor.getContent();
- Zotero.debug("XHTML");
- Zotero.debug(output);
- if(this._format == "Integration" || this._format == "RTF") {
+ if(this._format == "RTF") {
// do appropriate replacement operations
for(var needle in this._rtfMap) {
output = output.replace(needle, this._rtfMap[needle], "g");
@@ -201,9 +208,9 @@
};
output = l.join("");
};
- output = output.replace("<p>", "", "g");
- output = output.replace("</p>", "\\par ", "g");
- output = output.replace(/<\/?div[^>]*>/g, "");
+ for each(var entry in this._htmlToRtfMap) {
+ output = output.replace(entry[0], entry[1], "g");
+ }
output = Zotero.Utilities.prototype.trim(output);
output = output.replace(" ", " ", "g");
output = Zotero.Utilities.prototype.unescapeHTML(output);
@@ -213,8 +220,6 @@
return output;
]]></getter>
<setter><![CDATA[
- Zotero.debug("Setting value!");
-
if (self._timer) {
clearTimeout(self._timer);
}
@@ -233,16 +238,8 @@
return ;
}
- if (this.value == val) {
- Zotero.debug("Value hasn't changed!");
- return;
- }
-
- Zotero.debug("Value has changed");
-
var html = val;
-
- if(this._format == "Integration" || this._format == "RTF") {
+ if(this._format == "RTF") {
var bodyStyle = "";
if(html.substr(0, 3) == "\\li") {
// try to show paragraph formatting
@@ -277,8 +274,10 @@
html = html.replace(tagspec[2], tagspec[0], "g");
html = html.replace(tagspec[3], "</span>", "g");
}
- html = '<div style="'+bodyStyle+'"><p>'+html.replace("\par ", "</p><p>")+"</p></div>";
- Zotero.debug("setting content to "+html);
+ for each(var entry in this._rtfToHtmlMap) {
+ html = html.replace(entry[0], entry[1], "g");
+ }
+ html = '<div style="'+bodyStyle+'"><p>'+html+"</p></div>";
}
this._editor.setContent(html);
diff --git a/chrome/content/zotero/fileInterface.js b/chrome/content/zotero/fileInterface.js
@@ -379,11 +379,11 @@ var Zotero_File_Interface = new function() {
createInstance(Components.interfaces.nsITransferable);
var clipboardService = Components.classes["@mozilla.org/widget/clipboard;1"].
getService(Components.interfaces.nsIClipboard);
- var csl = Zotero.Styles.get(style).csl;
- var itemSet = csl.createItemSet(items);
+ var style = Zotero.Styles.get(style).csl;
+ style.updateItems([item.id for each(item in items)]);
// add HTML
- var bibliography = csl.formatBibliography(itemSet, "HTML");
+ var bibliography = Zotero.Cite.makeFormattedBibliography(style, "html");
var str = Components.classes["@mozilla.org/supports-string;1"].
createInstance(Components.interfaces.nsISupportsString);
str.data = bibliography;
@@ -391,7 +391,9 @@ var Zotero_File_Interface = new function() {
transferable.setTransferData("text/html", str, bibliography.length*2);
// add text (or HTML source)
- var bibliography = csl.formatBibliography(itemSet, asHTML ? 'HTML' : 'Text');
+ if(!asHTML) {
+ var bibliography = Zotero.Cite.makeFormattedBibliography(style, "text");
+ }
var str = Components.classes["@mozilla.org/supports-string;1"].
createInstance(Components.interfaces.nsISupportsString);
str.data = bibliography;
@@ -416,16 +418,13 @@ var Zotero_File_Interface = new function() {
var clipboardService = Components.classes["@mozilla.org/widget/clipboard;1"].
getService(Components.interfaces.nsIClipboard);
- var csl = Zotero.Styles.get(style).csl;
- var itemSet = csl.createItemSet(items);
- var itemIDs = [];
- for (var i=0; i<items.length; i++) {
- itemIDs.push(items[i].getID());
- }
- var citation = csl.createCitation(itemSet.getItemsByIds(itemIDs));
+ var style = Zotero.Styles.get(style).csl;
+ style.updateItems([item.id for each(item in items)]);
+ var citation = {"citationItems":[{id:item.id} for each(item in items)], properties:{}};
// add HTML
- var bibliography = csl.formatCitation(citation, "HTML");
+ style.setOutputFormat("html");
+ var bibliography = style.appendCitationCluster(citation, true)[0][1];
var str = Components.classes["@mozilla.org/supports-string;1"].
createInstance(Components.interfaces.nsISupportsString);
str.data = bibliography;
@@ -433,7 +432,10 @@ var Zotero_File_Interface = new function() {
transferable.setTransferData("text/html", str, bibliography.length*2);
// add text (or HTML source)
- var bibliography = csl.formatCitation(citation, asHTML ? 'HTML' : 'Text');
+ if(!asHTML) {
+ style.setOutputFormat("text");
+ var bibliography = style.appendCitationCluster(citation, true)[0][1];
+ }
var str = Components.classes["@mozilla.org/supports-string;1"].
createInstance(Components.interfaces.nsISupportsString);
str.data = bibliography;
@@ -467,9 +469,9 @@ var Zotero_File_Interface = new function() {
if(!io.output) return;
// determine output format
- var format = "HTML";
+ var format = "html";
if(io.output == "save-as-rtf") {
- format = "RTF";
+ format = "rtf";
}
// generate bibliography
@@ -479,9 +481,9 @@ var Zotero_File_Interface = new function() {
return;
}
else {
- var csl = Zotero.Styles.get(io.style).csl;
- var itemSet = csl.createItemSet(items);
- var bibliography = csl.formatBibliography(itemSet, format);
+ var style = Zotero.Styles.get(io.style).csl;
+ style.updateItems([item.id for each(item in items)]);
+ var bibliography = Zotero.Cite.makeFormattedBibliography(style, format);
}
} catch(e) {
window.alert(Zotero.getString("fileInterface.bibliographyGenerationError"));
diff --git a/chrome/content/zotero/integration/addCitationDialog.js b/chrome/content/zotero/integration/addCitationDialog.js
@@ -27,9 +27,9 @@ var Zotero_Citation_Dialog = new function () {
var _preserveData = {
"prefix":"value",
"suffix":"value",
- "locatorType":"selectedIndex",
+ "label":"selectedIndex",
"locator":"value",
- "suppressAuthor":"checked"
+ "suppress-author":"checked"
};
var _itemData = new Object();
@@ -38,6 +38,7 @@ var Zotero_Citation_Dialog = new function () {
var _previewShown = false;
var _suppressNextTreeSelect = false;
var _locatorIndexArray = {};
+ var _locatorNameArray = {};
var _autoRegeneratePref;
var _acceptButton;
var _sortCheckbox;
@@ -78,20 +79,21 @@ var Zotero_Citation_Dialog = new function () {
}
// load locators
- var locators = Zotero.CSL.Global.getLocatorStrings();
- var menu = document.getElementById("locatorType");
+ var locators = Zotero.Cite.labels;
+ var menu = document.getElementById("label");
var popup = document.getElementById("locator-type-popup");
var i = 0;
for(var value in locators) {
var locator = locators[value];
- locator = locator[0].toUpperCase()+locator.substr(1);
+ var locatorLabel = locator[0].toUpperCase()+locator.substr(1);
// add to popup
var child = document.createElement("menuitem");
child.setAttribute("value", value);
- child.setAttribute("label", locator);
+ child.setAttribute("label", locatorLabel);
popup.appendChild(child);
// add to array
- _locatorIndexArray[value] = i;
+ _locatorIndexArray[locator] = i;
+ _locatorNameArray[i] = locator;
i++;
}
menu.selectedIndex = 0;
@@ -100,15 +102,15 @@ var Zotero_Citation_Dialog = new function () {
doLoad();
// if we already have a citation, load data from it
- document.getElementById('editor').format = "Integration";
+ document.getElementById('editor').format = "RTF";
if(io.citation.citationItems.length) {
if(io.citation.citationItems.length == 1) {
// single citation
_suppressNextTreeSelect = true;
- itemsView.selectItem(io.citation.citationItems[0].itemID); // treeview from selectItemsDialog.js
+ itemsView.selectItem(io.citation.citationItems[0].id); // treeview from selectItemsDialog.js
for(var property in _preserveData) {
if(io.citation.citationItems[0][property]) {
- if(property == "locatorType") {
+ if(property == "label") {
document.getElementById(property)[_preserveData[property]] = _locatorIndexArray[io.citation.citationItems[0][property]];
} else {
document.getElementById(property)[_preserveData[property]] = io.citation.citationItems[0][property];
@@ -119,10 +121,10 @@ var Zotero_Citation_Dialog = new function () {
// multiple citations
toggleMultipleSources();
for(var i=0; i<io.citation.citationItems.length; i++) {
- var item = Zotero.Items.get(io.citation.citationItems[i].itemID);
+ var item = Zotero.Items.get(io.citation.citationItems[i].id);
if(item) {
_addItem(item);
- _itemData[io.citation.citationItems[i].itemID] = io.citation.citationItems[i];
+ _itemData[io.citation.citationItems[i].id] = io.citation.citationItems[i];
}
}
}
@@ -288,7 +290,7 @@ var Zotero_Citation_Dialog = new function () {
// add items back to list
for(var i=0; i<io.citation.citationItems.length; i++) {
- var item = Zotero.Items.get(io.citation.citationItems[i].itemID);
+ var item = Zotero.Items.get(io.citation.citationItems[i].id);
_addItem(item);
}
}
@@ -361,7 +363,9 @@ var Zotero_Citation_Dialog = new function () {
* called when accept button is clicked
*/
function accept() {
+ Zotero.debug("Trying to accept");
_getCitation();
+ Zotero.debug("got citation");
var isCustom = _previewShown && io.citation.citationItems.length // if a citation is selected
&& document.getElementById('editor').value != _originalHTML // and citation has been edited
@@ -370,6 +374,7 @@ var Zotero_Citation_Dialog = new function () {
} else {
var citation = (io.citation.citationItems.length ? io.previewFunction() : "");
}
+ Zotero.debug("verified not custom");
if(Zotero.Utilities.prototype.trim(citation) == "") {
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
@@ -379,6 +384,7 @@ var Zotero_Citation_Dialog = new function () {
Zotero.getString("integration.emptyCitationWarning.body"));
if(!insert) return false;
}
+ Zotero.debug("verified not empty");
if(isCustom) io.citation.properties.custom = citation;
@@ -431,8 +437,8 @@ var Zotero_Citation_Dialog = new function () {
// save property
if(_lastSelected) {
- if(property == "locatorType") {
- _itemData[_lastSelected][box] = domBox.selectedItem.value;
+ if(property == "label") {
+ _itemData[_lastSelected][box] = _locatorNameArray[domBox.selectedIndex];
} else {
_itemData[_lastSelected][box] = domBox[property];
}
@@ -441,7 +447,7 @@ var Zotero_Citation_Dialog = new function () {
if(itemID) {
domBox.disabled = false;
if(_itemData[itemID] && _itemData[itemID][box] !== undefined) {
- if(property == "locatorType") {
+ if(property == "label") {
domBox[property] = _locatorIndexArray[_itemData[itemID][box]];
} else {
domBox[property] = _itemData[itemID][box];
@@ -463,7 +469,7 @@ var Zotero_Citation_Dialog = new function () {
io.citation.citationItems = new Array();
// use to map selectedIndexes back to page/paragraph/line
- var locatorTypeElements = document.getElementById("locatorType").getElementsByTagName("menuitem");
+ var locatorTypeElements = document.getElementById("label").getElementsByTagName("menuitem");
if(_multipleSourcesOn) {
_itemSelected(); // store locator info
@@ -477,25 +483,25 @@ var Zotero_Citation_Dialog = new function () {
var itemID = citationList.childNodes[i].value;
var citationItem = _itemData[itemID];
- citationItem.itemID = itemID;
+ citationItem.id = itemID;
io.citation.citationItems.push(citationItem);
}
}
} else {
var items = itemsView.getSelectedItems(true); // treeview from selectItemsDialog.js
- var citationItem = new Zotero.CSL.CitationItem();
- citationItem.itemID = items[0];
+ var citationItem = {};
+ citationItem.id = items[0];
for(var property in _preserveData) {
- if(property == "locatorType") {
- citationItem[property] = document.getElementById(property).selectedItem.value;
+ if(property == "label") {
+ citationItem[property] = _locatorNameArray[document.getElementById(property).selectedIndex];
} else {
citationItem[property] = document.getElementById(property)[_preserveData[property]];
}
}
if(citationItem["locator"] == "") {
- citationItem["locator"] = citationItem["locatorType"] = undefined;
+ citationItem["locator"] = citationItem["label"] = undefined;
}
io.citation.citationItems = [citationItem];
diff --git a/chrome/content/zotero/integration/addCitationDialog.xul b/chrome/content/zotero/integration/addCitationDialog.xul
@@ -187,13 +187,13 @@
<separator flex="4"/>
<vbox flex="1">
<hbox align="stretch">
- <menulist onchange="Zotero_Citation_Dialog.confirmRegenerate(true)" id="locatorType">
+ <menulist onchange="Zotero_Citation_Dialog.confirmRegenerate(true)" id="label">
<menupopup id="locator-type-popup"/>
</menulist>
<textbox oninput="Zotero_Citation_Dialog.confirmRegenerate(false)" onchange="Zotero_Citation_Dialog.confirmRegenerate(true)" id="locator" flex="1"/>
</hbox>
<separator style="height: 2px" flex="1"/>
- <checkbox oncommand="Zotero_Citation_Dialog.confirmRegenerate(true)" id="suppressAuthor" label="&zotero.citation.suppressAuthor.label;"/>
+ <checkbox oncommand="Zotero_Citation_Dialog.confirmRegenerate(true)" id="suppress-author" label="&zotero.citation.suppressAuthor.label;"/>
</vbox>
</hbox>
</vbox>
diff --git a/chrome/content/zotero/integration/editBibliographyDialog.js b/chrome/content/zotero/integration/editBibliographyDialog.js
@@ -25,9 +25,9 @@
var Zotero_Bibliography_Dialog = new function () {
var bibEditInterface;
- var itemSet;
- var _originalBibEntry;
- var _lastSelectedItem;
+ var _lastSelectedItemID = false;
+ var _lastSelectedIndex = false;
+ var _lastSelectedValue = false;
this.load = load;
this.treeItemSelected = treeItemSelected;
@@ -40,10 +40,9 @@ var Zotero_Bibliography_Dialog = new function () {
* initialize add citation dialog
*/
function load() {
- document.getElementById('editor').format = "Integration";
+ document.getElementById('editor').format = "RTF";
bibEditInterface = window.arguments[0].wrappedJSObject;
- itemSet = bibEditInterface.getItemSet();
// load (from selectItemsDialog.js)
doLoad();
@@ -56,10 +55,10 @@ var Zotero_Bibliography_Dialog = new function () {
* called when an item in the item selection tree is clicked
*/
function treeItemSelected() {
- var items = itemsView.getSelectedItems(true); // treeview from selectItemsDialog.js
+ var selectedItems = itemsView.getSelectedItems(true); // treeview from selectItemsDialog.js
// disable add if item already in itemSet
- document.getElementById("add").disabled = !items.length || itemSet.getItemsByIds([items[0]])[0];
+ document.getElementById("add").disabled = selectedItems.length && bibEditInterface.bibliography[0].entry_ids.indexOf(selectedItems[0].id) !== -1;
}
/*
@@ -72,9 +71,9 @@ var Zotero_Bibliography_Dialog = new function () {
document.getElementById("remove").disabled = !selectedListItem;
if(selectedListItem) {
- _updatePreview(itemSet.getItemsByIds([selectedListItem.value])[0]);
+ _updatePreview(selectedListItem.value);
} else {
- _updatePreview(false);
+ _updatePreview();
}
}
@@ -82,9 +81,10 @@ var Zotero_Bibliography_Dialog = new function () {
* Adds a citation to the reference list
*/
function add() {
- var item = itemsView.getSelectedItems()[0]; // treeview from selectItemsDialog.js
+ var selectedItem = itemsView.getSelectedItems()[0]; // treeview from selectItemsDialog.js
+ Zotero.debug(selectedItem);
- bibEditInterface.add(item);
+ bibEditInterface.add(selectedItem.id);
document.getElementById("add").disabled = true;
_loadItems();
}
@@ -94,10 +94,9 @@ var Zotero_Bibliography_Dialog = new function () {
*/
function remove() {
var selectedListItem = document.getElementById("item-list").getSelectedItem(0);
- var itemID = selectedListItem.value;
- var item = itemSet.getItemsByIds([itemID])[0];
+ var itemID = bibEditInterface.bibliography[0].entry_ids[selectedListItem.value];
- if(bibEditInterface.isCited(item)) {
+ if(bibEditInterface.isCited(itemID)) {
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
.getService(Components.interfaces.nsIPromptService);
@@ -113,13 +112,10 @@ var Zotero_Bibliography_Dialog = new function () {
if(regenerate != 0) return;
}
- bibEditInterface.remove(item);
+ bibEditInterface.remove(itemID);
_loadItems();
}
- /*
- * Called on "Accept" button
- */
function accept() {
_updatePreview();
}
@@ -127,23 +123,39 @@ var Zotero_Bibliography_Dialog = new function () {
/*
* Updates the contents of the preview pane
*/
- function _updatePreview(item) {
+ function _updatePreview(index) {
+ Zotero.debug("_updatePreview called");
var editor = document.getElementById('editor');
- if(_lastSelectedItem && editor.value != _originalBibEntry) {
- Zotero.debug("setting bibliography for "+_lastSelectedItem.getID()+" to "+editor.value);
- _lastSelectedItem.setProperty("bibliography-RTF", editor.value);
+ if(_lastSelectedItemID) {
+ var newValue = editor.value;
+ if(_lastSelectedValue != newValue) {
+ Zotero.debug("setting bibliography for "+_lastSelectedItemID+" to "+newValue);
+ bibEditInterface.setCustomText(_lastSelectedItemID, newValue);
+ }
}
- editor.readonly = !item;
- editor.value = _originalBibEntry = (item ? bibEditInterface.preview(item) : "");
- _lastSelectedItem = item;
+ editor.readonly = index === undefined;
+ if(index !== undefined) {
+ Zotero.debug("updating preview of "+index);
+ var itemID = bibEditInterface.bibliography[0].entry_ids[index];
+ editor.value = bibEditInterface.bibliography[1][index];
+ _lastSelectedIndex = index;
+ _lastSelectedItemID = itemID;
+ _lastSelectedValue = editor.value;
+ } else {
+ editor.value = "";
+ _lastSelectedIndex = _lastSelectedItemID = _lastSelectedValue = false;
+ }
}
/*
* loads items from itemSet
*/
function _loadItems() {
+ var itemIDs = bibEditInterface.bibliography[0].entry_ids;
+ var items = Zotero.Items.get(itemIDs);
+
// delete all existing items from list
var itemList = document.getElementById("item-list");
while(itemList.firstChild) {
@@ -151,14 +163,12 @@ var Zotero_Bibliography_Dialog = new function () {
}
// add new items
- for(var i=0; i<itemSet.items.length; i++) {
- var item = itemSet.items[i].zoteroItem;
-
+ for(var i=0; i<items.length; i++) {
var itemNode = document.createElement("listitem");
- itemNode.setAttribute("value", item.getID());
- itemNode.setAttribute("label", item.getField("title"));
+ itemNode.setAttribute("value", i);
+ itemNode.setAttribute("label", items[i].getField("title"));
itemNode.setAttribute("class", "listitem-iconic");
- itemNode.setAttribute("image", item.getImageSrc());
+ itemNode.setAttribute("image", items[i].getImageSrc());
itemList.appendChild(itemNode);
}
diff --git a/chrome/content/zotero/locale/csl/locales-af-ZA.xml b/chrome/content/zotero/locale/csl/locales-af-ZA.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="af">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">toegang verkry</term>
- <term name="retrieved">opgehaal</term>
- <term name="from">van</term>
- <term name="forthcoming">voorhande</term>
- <term name="references">Verwysings</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">n.d.</term>
- <term name="and">en</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>reël</single>
- <multiple>reëls</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>bladsy</single>
- <multiple>bladsye</multiple>
- </term>
- <term name="paragraph">
- <single>paragraaf</single>
- <multiple>paragrawe</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>bl</single>
- <multiple>bll</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>redakteur</single>
- <multiple>redakteurs</multiple>
- </term>
- <term name="translator">
- <single>vertaler</single>
- <multiple>vertalers</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>red</single>
- <multiple>reds</multiple>
- </term>
- <term name="translator" form="short">
- <single>vert</single>
- <multiple>verts</multiple>
- </term>
- <term name="editor" form="verb">onder redaksie van</term>
- <term name="translator" form="verb">vertaal deur</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">red</term>
- <term name="translator" form="verb-short">verts</term>
- <term name="month-01">Januarie</term>
- <term name="month-02">Februarie</term>
- <term name="month-03">Maart</term>
- <term name="month-04">April</term>
- <term name="month-05">Mei</term>
- <term name="month-06">Junie</term>
- <term name="month-07">Julie</term>
- <term name="month-08">Augustus</term>
- <term name="month-09">September</term>
- <term name="month-10">Oktober</term>
- <term name="month-11">November</term>
- <term name="month-12">Desember</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mrt</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">Mei</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Okt</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Des</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="af">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">toegang verkry</term>
+ <term name="retrieved">opgehaal</term>
+ <term name="from">van</term>
+ <term name="forthcoming">voorhande</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">n.d.</term>
+ <term name="and">en</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>reël</single>
+ <multiple>reëls</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>bladsy</single>
+ <multiple>bladsye</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraaf</single>
+ <multiple>paragrawe</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">no</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>bl</single>
+ <multiple>bll</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>redakteur</single>
+ <multiple>redakteurs</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>vertaler</single>
+ <multiple>vertalers</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>red</single>
+ <multiple>reds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>vert</single>
+ <multiple>verts</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">onder redaksie van</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">vertaal deur</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">red</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">verts</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Januarie</term>
+ <term name="month-02">Februarie</term>
+ <term name="month-03">Maart</term>
+ <term name="month-04">April</term>
+ <term name="month-05">Mei</term>
+ <term name="month-06">Junie</term>
+ <term name="month-07">Julie</term>
+ <term name="month-08">Augustus</term>
+ <term name="month-09">September</term>
+ <term name="month-10">Oktober</term>
+ <term name="month-11">November</term>
+ <term name="month-12">Desember</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mrt</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">Mei</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Okt</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Des</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-ar-AR.xml b/chrome/content/zotero/locale/csl/locales-ar-AR.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="ar">
- <term name="at">عند</term>
- <term name="in">في</term>
- <term name="ibid">آيبيد</term>
- <term name="accessed">زير</term>
- <term name="retrieved">جلب</term>
- <term name="from">من</term>
- <term name="forthcoming">القادم</term>
- <term name="references">مراجع</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date"/>
- <term name="and">و</term>
- <term name="et-al">et al.</term>
- <term name="interview">مقابلة</term>
- <term name="letter">رسالة</term>
- <term name="anonymous">مجهول</term>
- <term name="anonymous" form="short">مجهول</term>
- <term name="and others">وآخرون</term>
- <term name="in press">تحت الطبع</term>
- <term name="online">ربط مباشر</term>
- <term name="cited">وثِّقَ</term>
- <term name="internet">الإنترنت</term>
- <term name="presented at">قُدَّم في</term>
- <term name="anthropology">علم الإنسان</term>
- <term name="astronomy">علم الفلك</term>
- <term name="biology">علم الأحياء</term>
- <term name="botany">علم النبات</term>
- <term name="chemistry">علم الكيمياء</term>
- <term name="engineering">الهندسة</term>
- <term name="generic-base">أساس عام</term>
- <term name="geography">جغرافيا</term>
- <term name="geology">علم الأرض</term>
- <term name="history">التاريخ</term>
- <term name="humanities">الإنسانيات</term>
- <term name="literature">الأدب</term>
- <term name="math">الرياضيات</term>
- <term name="medicine">الطب</term>
- <term name="philosophy">الفلسفة</term>
- <term name="physics">الفيزياء</term>
- <term name="psychology">علم النفس</term>
- <term name="sociology">علم الإجتماع</term>
- <term name="science">العلوم</term>
- <term name="political_science">العلوم السياسية</term>
- <term name="social_science">العلوم الإجتماعية</term>
- <term name="theology">العلوم الإلهية</term>
- <term name="zoology">علم الحيوان</term>
- <term name="book">
- <single>كتاب</single>
- <multiple>كُتُب</multiple>
- </term>
- <term name="chapter">
- <single>فصل</single>
- <multiple>فصول</multiple>
- </term>
- <term name="column">
- <single>عمود</single>
- <multiple>أعمدة</multiple>
- </term>
- <term name="figure">
- <single>رسم توضيحي</single>
- <multiple>رسوم توضيحية</multiple>
- </term>
- <term name="folio">
- <single>ورقة</single>
- <multiple>أوراق</multiple>
- </term>
- <term name="issue">
- <single>عدد</single>
- <multiple>أعداد</multiple>
- </term>
- <term name="line">
- <single>سطر</single>
- <multiple>أسطر</multiple>
- </term>
- <term name="note">
- <single>ملاحظة</single>
- <multiple>ملاحظات</multiple>
- </term>
- <term name="opus">
- <single>قطعة موسيقية</single>
- <multiple>أوبرا</multiple>
- </term>
- <term name="page">
- <single>صفحة</single>
- <multiple>صفحات</multiple>
- </term>
- <term name="paragraph">
- <single>فقرة</single>
- <multiple>فقرات</multiple>
- </term>
- <term name="part">
- <single>جزء</single>
- <multiple>أجزاء</multiple>
- </term>
- <term name="section">
- <single>قسم</single>
- <multiple>أقسام</multiple>
- </term>
- <term name="volume">
- <single>مجلد</single>
- <multiple>مجلدات</multiple>
- </term>
- <term name="edition">
- <single>الطبعة</single>
- <multiple>الطبعات</multiple>
- </term>
- <term name="verse">
- <single>بيت</single>
- <multiple>أبيات</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">ك</term>
- <term name="chapter" form="short">ف</term>
- <term name="column" form="short">عم</term>
- <term name="figure" form="short">ر</term>
- <term name="folio" form="short">و</term>
- <term name="issue" form="short">عد</term>
- <term name="opus" form="short">مم</term>
- <term name="page" form="short">
- <single>ص</single>
- <multiple>ص.ص</multiple>
- </term>
- <term name="paragraph" form="short">فق</term>
- <term name="part" form="short">جز</term>
- <term name="section" form="short">ق</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>ب</single>
- <multiple>بب</multiple>
- </term>
- <term name="volume" form="short">
- <single>مج</single>
- <multiple>مجج</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ط</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>تحرير</single>
- <multiple>تحرير</multiple>
- </term>
- <term name="translator">
- <single>ترجمة</single>
- <multiple>ترجمة</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>مح</single>
- <multiple>محح</multiple>
- </term>
- <term name="translator" form="short">
- <single>تر</single>
- <multiple>ترر</multiple>
- </term>
- <term name="editor" form="verb">حرره</term>
- <term name="translator" form="verb">ترجمه</term>
- <term name="recipient" form="verb">إلى</term>
- <term name="interviewer" form="verb">مقابلة بواسطة</term>
- <term name="editor" form="verb-short">مح</term>
- <term name="translator" form="verb-short">مت</term>
- <term name="month-01">يناير</term>
- <term name="month-02">فبراير</term>
- <term name="month-03">مارس</term>
- <term name="month-04">ابريل</term>
- <term name="month-05">مايو</term>
- <term name="month-06">يونيو</term>
- <term name="month-07">يوليو</term>
- <term name="month-08">اغسطس</term>
- <term name="month-09">سبتمبر</term>
- <term name="month-10">اكتوبر</term>
- <term name="month-11">نوفمبر</term>
- <term name="month-12">ديسمبر</term>
- <term name="month-01" form="short">يناير</term>
- <term name="month-02" form="short">فبراير</term>
- <term name="month-03" form="short">مارس</term>
- <term name="month-04" form="short">ابريل</term>
- <term name="month-05" form="short">مايو</term>
- <term name="month-06" form="short">يونيو</term>
- <term name="month-07" form="short">يوليو</term>
- <term name="month-08" form="short">اغسطس</term>
- <term name="month-09" form="short">سبتمبر</term>
- <term name="month-10" form="short">اكتوبر</term>
- <term name="month-11" form="short">نوفمبر</term>
- <term name="month-12" form="short">ديسمبر</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="ar">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">عند</term>
+ <term name="in">في</term>
+ <term name="ibid">آيبيد</term>
+ <term name="accessed">زير</term>
+ <term name="retrieved">جلب</term>
+ <term name="from">من</term>
+ <term name="forthcoming">القادم</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date"/>
+ <term name="and">و</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">مقابلة</term>
+ <term name="letter">رسالة</term>
+ <term name="anonymous">مجهول</term>
+ <term name="anonymous" form="short">مجهول</term>
+ <term name="and others">وآخرون</term>
+ <term name="in press">تحت الطبع</term>
+ <term name="online">ربط مباشر</term>
+ <term name="cited">وثِّقَ</term>
+ <term name="internet">الإنترنت</term>
+ <term name="presented at">قُدَّم في</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">علم الإنسان</term>
+ <term name="astronomy">علم الفلك</term>
+ <term name="biology">علم الأحياء</term>
+ <term name="botany">علم النبات</term>
+ <term name="chemistry">علم الكيمياء</term>
+ <term name="engineering">الهندسة</term>
+ <term name="generic-base">أساس عام</term>
+ <term name="geography">جغرافيا</term>
+ <term name="geology">علم الأرض</term>
+ <term name="history">التاريخ</term>
+ <term name="humanities">الإنسانيات</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">الأدب</term>
+ <term name="math">الرياضيات</term>
+ <term name="medicine">الطب</term>
+ <term name="philosophy">الفلسفة</term>
+ <term name="physics">الفيزياء</term>
+ <term name="psychology">علم النفس</term>
+ <term name="sociology">علم الإجتماع</term>
+ <term name="science">العلوم</term>
+ <term name="political_science">العلوم السياسية</term>
+ <term name="social_science">العلوم الإجتماعية</term>
+ <term name="theology">العلوم الإلهية</term>
+ <term name="zoology">علم الحيوان</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>كتاب</single>
+ <multiple>كُتُب</multiple>
+ </term>
+ <term name="chapter">
+ <single>فصل</single>
+ <multiple>فصول</multiple>
+ </term>
+ <term name="column">
+ <single>عمود</single>
+ <multiple>أعمدة</multiple>
+ </term>
+ <term name="figure">
+ <single>رسم توضيحي</single>
+ <multiple>رسوم توضيحية</multiple>
+ </term>
+ <term name="folio">
+ <single>ورقة</single>
+ <multiple>أوراق</multiple>
+ </term>
+ <term name="issue">
+ <single>عدد</single>
+ <multiple>أعداد</multiple>
+ </term>
+ <term name="line">
+ <single>سطر</single>
+ <multiple>أسطر</multiple>
+ </term>
+ <term name="note">
+ <single>ملاحظة</single>
+ <multiple>ملاحظات</multiple>
+ </term>
+ <term name="opus">
+ <single>قطعة موسيقية</single>
+ <multiple>أوبرا</multiple>
+ </term>
+ <term name="page">
+ <single>صفحة</single>
+ <multiple>صفحات</multiple>
+ </term>
+ <term name="paragraph">
+ <single>فقرة</single>
+ <multiple>فقرات</multiple>
+ </term>
+ <term name="part">
+ <single>جزء</single>
+ <multiple>أجزاء</multiple>
+ </term>
+ <term name="section">
+ <single>قسم</single>
+ <multiple>أقسام</multiple>
+ </term>
+ <term name="volume">
+ <single>مجلد</single>
+ <multiple>مجلدات</multiple>
+ </term>
+ <term name="edition">
+ <single>الطبعة</single>
+ <multiple>الطبعات</multiple>
+ </term>
+ <term name="verse">
+ <single>بيت</single>
+ <multiple>أبيات</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">ك</term>
+ <term name="chapter" form="short">ف</term>
+ <term name="column" form="short">عم</term>
+ <term name="figure" form="short">ر</term>
+ <term name="folio" form="short">و</term>
+ <term name="issue" form="short">عد</term>
+ <term name="opus" form="short">مم</term>
+ <term name="page" form="short">
+ <single>ص</single>
+ <multiple>ص.ص</multiple>
+ </term>
+ <term name="paragraph" form="short">فق</term>
+ <term name="part" form="short">جز</term>
+ <term name="section" form="short">ق</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>ب</single>
+ <multiple>بب</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>مج</single>
+ <multiple>مجج</multiple>
+ </term>
+ <term name="edition" form="short">ط</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>تحرير</single>
+ <multiple>تحرير</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>ترجمة</single>
+ <multiple>ترجمة</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>مح</single>
+ <multiple>محح</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>تر</single>
+ <multiple>ترر</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">حرره</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">ترجمه</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">إلى</term>
+ <term name="interviewer" form="verb">مقابلة بواسطة</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">مح</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">مت</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">يناير</term>
+ <term name="month-02">فبراير</term>
+ <term name="month-03">مارس</term>
+ <term name="month-04">ابريل</term>
+ <term name="month-05">مايو</term>
+ <term name="month-06">يونيو</term>
+ <term name="month-07">يوليو</term>
+ <term name="month-08">اغسطس</term>
+ <term name="month-09">سبتمبر</term>
+ <term name="month-10">اكتوبر</term>
+ <term name="month-11">نوفمبر</term>
+ <term name="month-12">ديسمبر</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">يناير</term>
+ <term name="month-02" form="short">فبراير</term>
+ <term name="month-03" form="short">مارس</term>
+ <term name="month-04" form="short">ابريل</term>
+ <term name="month-05" form="short">مايو</term>
+ <term name="month-06" form="short">يونيو</term>
+ <term name="month-07" form="short">يوليو</term>
+ <term name="month-08" form="short">اغسطس</term>
+ <term name="month-09" form="short">سبتمبر</term>
+ <term name="month-10" form="short">اكتوبر</term>
+ <term name="month-11" form="short">نوفمبر</term>
+ <term name="month-12" form="short">ديسمبر</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-bg-BG.xml b/chrome/content/zotero/locale/csl/locales-bg-BG.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="bg">
- <term name="at">в</term>
- <term name="in">в</term>
- <term name="ibid">пак там</term>
- <term name="accessed">отворен на</term>
- <term name="retrieved">изтеглен на</term>
- <term name="from">от</term>
- <term name="forthcoming">предстоящ</term>
- <term name="references">цитати</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">без дата</term>
- <term name="and">и</term>
- <term name="et-al">и съавт.</term>
- <term name="interview">интервю</term>
- <term name="letter">писмо</term>
- <term name="anonymous">анонимен</term>
- <term name="anonymous" form="short">анон</term>
- <term name="and others">и други</term>
- <term name="in press">под печат</term>
- <term name="online">онлайн</term>
- <term name="cited">цитиран</term>
- <term name="internet">интернет</term>
- <term name="presented at">представен на</term>
- <term name="anthropology">антропология</term>
- <term name="astronomy">астрономия</term>
- <term name="biology">биология</term>
- <term name="botany">ботаника</term>
- <term name="chemistry">химия</term>
- <term name="engineering">инженерство</term>
- <term name="generic-base">обща база</term>
- <term name="geography">география</term>
- <term name="geology">геология</term>
- <term name="history">история</term>
- <term name="humanities">хуманитарни науки</term>
- <term name="literature">литература</term>
- <term name="math">математика</term>
- <term name="medicine">медицина</term>
- <term name="philosophy">философия</term>
- <term name="physics">физика</term>
- <term name="psychology">физиология</term>
- <term name="sociology">социология</term>
- <term name="science">наука</term>
- <term name="political_science">политически науки</term>
- <term name="social_science">обществени науки</term>
- <term name="theology">теология</term>
- <term name="zoology">зоология</term>
- <term name="book">
- <single>книга</single>
- <multiple>книги</multiple>
- </term>
- <term name="chapter">
- <single>глава</single>
- <multiple>глави</multiple>
- </term>
- <term name="column">
- <single>колона</single>
- <multiple>колони</multiple>
- </term>
- <term name="figure">
- <single>фигура</single>
- <multiple>фигури</multiple>
- </term>
- <term name="folio">
- <single>фолио</single>
- <multiple>фолия</multiple>
- </term>
- <term name="issue">
- <single>брой</single>
- <multiple>броеве</multiple>
- </term>
- <term name="line">
- <single>ред</single>
- <multiple>редове</multiple>
- </term>
- <term name="note">
- <single>бележка</single>
- <multiple>бележки</multiple>
- </term>
- <term name="opus">
- <single>опус</single>
- <multiple>опуси</multiple>
- </term>
- <term name="page">
- <single>страница</single>
- <multiple>страници</multiple>
- </term>
- <term name="paragraph">
- <single>параграф</single>
- <multiple>параграфи</multiple>
- </term>
- <term name="part">
- <single>част</single>
- <multiple>части</multiple>
- </term>
- <term name="section">
- <single>раздел</single>
- <multiple>раздели</multiple>
- </term>
- <term name="volume">
- <single>том</single>
- <multiple>томове</multiple>
- </term>
- <term name="edition">
- <single>издание</single>
- <multiple>издания</multiple>
- </term>
- <term name="verse">
- <single>стих</single>
- <multiple>стихове</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">кн</term>
- <term name="chapter" form="short">гл</term>
- <term name="column" form="short">кол</term>
- <term name="figure" form="short">фиг</term>
- <term name="folio" form="short">фол</term>
- <term name="issue" form="short">бр</term>
- <term name="opus" form="short">оп</term>
- <term name="page" form="short">
- <single>с</single>
- <multiple>с-ци</multiple>
- </term>
- <term name="paragraph" form="short">п</term>
- <term name="part" form="short">ч</term>
- <term name="section" form="short">разд</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>ст</single>
- <multiple>ст-ове</multiple>
- </term>
- <term name="volume" form="short">
- <single>том</single>
- <multiple>т-ове</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">изд</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single>автор</single>
- <multiple>автори</multiple>
- </term>
- <term name="editor">
- <single>редактор</single>
- <multiple>редактори</multiple>
- </term>
- <term name="translator">
- <single>преводач</single>
- <multiple>преводачи</multiple>
- </term>
- <term name="author" form="short">
- <single>авт</single>
- <multiple>авт-ри</multiple>
- </term>
- <term name="editor" form="short">
- <single>ред</single>
- <multiple>ред-ри</multiple>
- </term>
- <term name="translator" form="short">
- <single>прев</single>
- <multiple>прев-чи</multiple>
- </term>
- <term name="editor" form="verb">редактиран от</term>
- <term name="translator" form="verb">преведен от</term>
- <term name="recipient" form="verb">до</term>
- <term name="interviewer" form="verb">интервюиран от</term>
- <term name="editor" form="verb-short">ред</term>
- <term name="translator" form="verb-short">прев</term>
- <term name="month-01">Януари</term>
- <term name="month-02">Февруари</term>
- <term name="month-03">Март</term>
- <term name="month-04">Април</term>
- <term name="month-05">Май</term>
- <term name="month-06">Юни</term>
- <term name="month-07">Юли</term>
- <term name="month-08">Август</term>
- <term name="month-09">Септември</term>
- <term name="month-10">Октомври</term>
- <term name="month-11">Ноември</term>
- <term name="month-12">Декември</term>
- <term name="month-01" form="short">Яну</term>
- <term name="month-02" form="short">Фев</term>
- <term name="month-03" form="short">Мар</term>
- <term name="month-04" form="short">Апр</term>
- <term name="month-05" form="short">Май</term>
- <term name="month-06" form="short">Юни</term>
- <term name="month-07" form="short">Юли</term>
- <term name="month-08" form="short">Авг</term>
- <term name="month-09" form="short">Сеп</term>
- <term name="month-10" form="short">Окт</term>
- <term name="month-11" form="short">Ное</term>
- <term name="month-12" form="short">Дек</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="bg">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">в</term>
+ <term name="in">в</term>
+ <term name="ibid">пак там</term>
+ <term name="accessed">отворен на</term>
+ <term name="retrieved">изтеглен на</term>
+ <term name="from">от</term>
+ <term name="forthcoming">предстоящ</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">без дата</term>
+ <term name="and">и</term>
+ <term name="et-al">и съавт.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">интервю</term>
+ <term name="letter">писмо</term>
+ <term name="anonymous">анонимен</term>
+ <term name="anonymous" form="short">анон</term>
+ <term name="and others">и други</term>
+ <term name="in press">под печат</term>
+ <term name="online">онлайн</term>
+ <term name="cited">цитиран</term>
+ <term name="internet">интернет</term>
+ <term name="presented at">представен на</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">антропология</term>
+ <term name="astronomy">астрономия</term>
+ <term name="biology">биология</term>
+ <term name="botany">ботаника</term>
+ <term name="chemistry">химия</term>
+ <term name="engineering">инженерство</term>
+ <term name="generic-base">обща база</term>
+ <term name="geography">география</term>
+ <term name="geology">геология</term>
+ <term name="history">история</term>
+ <term name="humanities">хуманитарни науки</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">литература</term>
+ <term name="math">математика</term>
+ <term name="medicine">медицина</term>
+ <term name="philosophy">философия</term>
+ <term name="physics">физика</term>
+ <term name="psychology">физиология</term>
+ <term name="sociology">социология</term>
+ <term name="science">наука</term>
+ <term name="political_science">политически науки</term>
+ <term name="social_science">обществени науки</term>
+ <term name="theology">теология</term>
+ <term name="zoology">зоология</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>книга</single>
+ <multiple>книги</multiple>
+ </term>
+ <term name="chapter">
+ <single>глава</single>
+ <multiple>глави</multiple>
+ </term>
+ <term name="column">
+ <single>колона</single>
+ <multiple>колони</multiple>
+ </term>
+ <term name="figure">
+ <single>фигура</single>
+ <multiple>фигури</multiple>
+ </term>
+ <term name="folio">
+ <single>фолио</single>
+ <multiple>фолия</multiple>
+ </term>
+ <term name="issue">
+ <single>брой</single>
+ <multiple>броеве</multiple>
+ </term>
+ <term name="line">
+ <single>ред</single>
+ <multiple>редове</multiple>
+ </term>
+ <term name="note">
+ <single>бележка</single>
+ <multiple>бележки</multiple>
+ </term>
+ <term name="opus">
+ <single>опус</single>
+ <multiple>опуси</multiple>
+ </term>
+ <term name="page">
+ <single>страница</single>
+ <multiple>страници</multiple>
+ </term>
+ <term name="paragraph">
+ <single>параграф</single>
+ <multiple>параграфи</multiple>
+ </term>
+ <term name="part">
+ <single>част</single>
+ <multiple>части</multiple>
+ </term>
+ <term name="section">
+ <single>раздел</single>
+ <multiple>раздели</multiple>
+ </term>
+ <term name="volume">
+ <single>том</single>
+ <multiple>томове</multiple>
+ </term>
+ <term name="edition">
+ <single>издание</single>
+ <multiple>издания</multiple>
+ </term>
+ <term name="verse">
+ <single>стих</single>
+ <multiple>стихове</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">кн</term>
+ <term name="chapter" form="short">гл</term>
+ <term name="column" form="short">кол</term>
+ <term name="figure" form="short">фиг</term>
+ <term name="folio" form="short">фол</term>
+ <term name="issue" form="short">бр</term>
+ <term name="opus" form="short">оп</term>
+ <term name="page" form="short">
+ <single>с</single>
+ <multiple>с-ци</multiple>
+ </term>
+ <term name="paragraph" form="short">п</term>
+ <term name="part" form="short">ч</term>
+ <term name="section" form="short">разд</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>ст</single>
+ <multiple>ст-ове</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>том</single>
+ <multiple>т-ове</multiple>
+ </term>
+ <term name="edition" form="short">изд</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single>автор</single>
+ <multiple>автори</multiple>
+ </term>
+ <term name="editor">
+ <single>редактор</single>
+ <multiple>редактори</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>преводач</single>
+ <multiple>преводачи</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single>авт</single>
+ <multiple>авт-ри</multiple>
+ </term>
+ <term name="editor" form="short">
+ <single>ред</single>
+ <multiple>ред-ри</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>прев</single>
+ <multiple>прев-чи</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">редактиран от</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">преведен от</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">до</term>
+ <term name="interviewer" form="verb">интервюиран от</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ред</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">прев</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Януари</term>
+ <term name="month-02">Февруари</term>
+ <term name="month-03">Март</term>
+ <term name="month-04">Април</term>
+ <term name="month-05">Май</term>
+ <term name="month-06">Юни</term>
+ <term name="month-07">Юли</term>
+ <term name="month-08">Август</term>
+ <term name="month-09">Септември</term>
+ <term name="month-10">Октомври</term>
+ <term name="month-11">Ноември</term>
+ <term name="month-12">Декември</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Яну</term>
+ <term name="month-02" form="short">Фев</term>
+ <term name="month-03" form="short">Мар</term>
+ <term name="month-04" form="short">Апр</term>
+ <term name="month-05" form="short">Май</term>
+ <term name="month-06" form="short">Юни</term>
+ <term name="month-07" form="short">Юли</term>
+ <term name="month-08" form="short">Авг</term>
+ <term name="month-09" form="short">Сеп</term>
+ <term name="month-10" form="short">Окт</term>
+ <term name="month-11" form="short">Ное</term>
+ <term name="month-12" form="short">Дек</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-ca-AD.xml b/chrome/content/zotero/locale/csl/locales-ca-AD.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="ca">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accessed</term>
- <term name="retrieved">retrieved</term>
- <term name="from">from</term>
- <term name="forthcoming">forthcoming</term>
- <term name="references">References</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">nd</term>
- <term name="and">and</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>line</single>
- <multiple>line</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>page</single>
- <multiple>pages</multiple>
- </term>
- <term name="paragraph">
- <single>paragraph</single>
- <multiple>paragraph</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editors</multiple>
- </term>
- <term name="translator">
- <single>translator</single>
- <multiple>translators</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>tran</single>
- <multiple>trans</multiple>
- </term>
- <term name="editor" form="verb">edited by</term>
- <term name="translator" form="verb">translated by</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">January</term>
- <term name="month-02">February</term>
- <term name="month-03">March</term>
- <term name="month-04">April</term>
- <term name="month-05">May</term>
- <term name="month-06">June</term>
- <term name="month-07">July</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">October</term>
- <term name="month-11">November</term>
- <term name="month-12">December</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Oct</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="ca">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accessed</term>
+ <term name="retrieved">retrieved</term>
+ <term name="from">from</term>
+ <term name="forthcoming">forthcoming</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">nd</term>
+ <term name="and">and</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>line</single>
+ <multiple>line</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraph</single>
+ <multiple>paragraph</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">no</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>translator</single>
+ <multiple>translators</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tran</single>
+ <multiple>trans</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">edited by</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">translated by</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">January</term>
+ <term name="month-02">February</term>
+ <term name="month-03">March</term>
+ <term name="month-04">April</term>
+ <term name="month-05">May</term>
+ <term name="month-06">June</term>
+ <term name="month-07">July</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">October</term>
+ <term name="month-11">November</term>
+ <term name="month-12">December</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Oct</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-cs-CZ.xml b/chrome/content/zotero/locale/csl/locales-cs-CZ.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="cs">
- <term name="at">v</term>
- <term name="in">v</term>
- <term name="ibid">ibid</term>
- <term name="accessed">přistoupeno</term>
- <term name="retrieved">získáno</term>
- <term name="from">z</term>
- <term name="forthcoming">nadcházející</term>
- <term name="references">reference</term>
- <term name="reference item">
- <single>zdroj</single>
- <multiple>zdroje</multiple>
- </term>
- <term name="no date">bez data</term>
- <term name="and">a</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">dopis</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">a další</term>
- <term name="in press">v tisku</term>
- <term name="online">online</term>
- <term name="cited">citován</term>
- <term name="internet">internet</term>
- <term name="presented at">prezentován v</term>
- <term name="anthropology">antropologie</term>
- <term name="astronomy">astronomie</term>
- <term name="biology">biologie</term>
- <term name="botany">botanika</term>
- <term name="chemistry">chemie</term>
- <term name="engineering">technika</term>
- <term name="generic-base">všeobecný základ</term>
- <term name="geography">geografie</term>
- <term name="geology">geologie</term>
- <term name="history">historie</term>
- <term name="humanities">humanitní</term>
- <term name="literature">literatura</term>
- <term name="math">matematika</term>
- <term name="medicine">medicína</term>
- <term name="philosophy">filosofie</term>
- <term name="physics">fyzika</term>
- <term name="psychology">psychologie</term>
- <term name="sociology">sociologie</term>
- <term name="science">věda</term>
- <term name="political_science">politologie</term>
- <term name="social_science">společenská věda</term>
- <term name="theology">teologie</term>
- <term name="zoology">zoologie</term>
- <term name="book">
- <single>kniha</single>
- <multiple>knihy</multiple>
- </term>
- <term name="chapter">
- <single>kapitola</single>
- <multiple>kapitoly</multiple>
- </term>
- <term name="column">
- <single>sloupec</single>
- <multiple>sloupce</multiple>
- </term>
- <term name="figure">
- <single>obrázek</single>
- <multiple>obrázky</multiple>
- </term>
- <term name="folio">
- <single>list</single>
- <multiple>listy</multiple>
- </term>
- <term name="issue">
- <single>číslo</single>
- <multiple>číslo</multiple>
- </term>
- <term name="line">
- <single>řádek</single>
- <multiple>řádky</multiple>
- </term>
- <term name="note">
- <single>poznámka</single>
- <multiple>poznámky</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>strana</single>
- <multiple>strany</multiple>
- </term>
- <term name="paragraph">
- <single>odstavec</single>
- <multiple>odstavce</multiple>
- </term>
- <term name="part">
- <single>část</single>
- <multiple>části</multiple>
- </term>
- <term name="section">
- <single>sekce</single>
- <multiple>sekce</multiple>
- </term>
- <term name="volume">
- <single>ročník</single>
- <multiple>ročníky</multiple>
- </term>
- <term name="edition">
- <single>edice</single>
- <multiple>edice</multiple>
- </term>
- <term name="verse">
- <single>verš</single>
- <multiple>verše</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">kn</term>
- <term name="chapter" form="short">kap</term>
- <term name="column" form="short">sl</term>
- <term name="figure" form="short">obr</term>
- <term name="folio" form="short">l</term>
- <term name="issue" form="short">čís</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>s</single>
- <multiple>s</multiple>
- </term>
- <term name="paragraph" form="short">odst</term>
- <term name="part" form="short">č</term>
- <term name="section" form="short">sek</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>v</multiple>
- </term>
- <term name="volume" form="short">
- <single>roč</single>
- <multiple>roč</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single>autor</single>
- <multiple>autoři</multiple>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editoři</multiple>
- </term>
- <term name="translator">
- <single>překladatel</single>
- <multiple>překladatelé</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>ed</multiple>
- </term>
- <term name="translator" form="short">
- <single>překl</single>
- <multiple>překl</multiple>
- </term>
- <term name="editor" form="verb">editoval</term>
- <term name="translator" form="verb">přeložil</term>
- <term name="recipient" form="verb">pro</term>
- <term name="interviewer" form="verb">rozhovor vedl</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">překl</term>
- <term name="month-01">leden</term>
- <term name="month-02">únor</term>
- <term name="month-03">březen</term>
- <term name="month-04">duben</term>
- <term name="month-05">květen</term>
- <term name="month-06">červen</term>
- <term name="month-07">červenec</term>
- <term name="month-08">srpen</term>
- <term name="month-09">září</term>
- <term name="month-10">říjen</term>
- <term name="month-11">listopad</term>
- <term name="month-12">prosinec</term>
- <term name="month-01" form="short">led</term>
- <term name="month-02" form="short">úno</term>
- <term name="month-03" form="short">bře</term>
- <term name="month-04" form="short">dub</term>
- <term name="month-05" form="short">kvě</term>
- <term name="month-06" form="short">čer</term>
- <term name="month-07" form="short">čvc</term>
- <term name="month-08" form="short">srp</term>
- <term name="month-09" form="short">zář</term>
- <term name="month-10" form="short">říj</term>
- <term name="month-11" form="short">lis</term>
- <term name="month-12" form="short">pro</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="cs">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">v</term>
+ <term name="in">v</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">přístup</term>
+ <term name="retrieved">získáno</term>
+ <term name="from">z</term>
+ <term name="forthcoming">nadcházející</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">bez data</term>
+ <term name="and">a</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">dopis</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">a další</term>
+ <term name="in press">v tisku</term>
+ <term name="online">online</term>
+ <term name="cited">citován</term>
+ <term name="internet">internet</term>
+ <term name="presented at">prezentován v</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropologie</term>
+ <term name="astronomy">astronomie</term>
+ <term name="biology">biologie</term>
+ <term name="botany">botanika</term>
+ <term name="chemistry">chemie</term>
+ <term name="engineering">technika</term>
+ <term name="generic-base">všeobecný základ</term>
+ <term name="geography">geografie</term>
+ <term name="geology">geologie</term>
+ <term name="history">historie</term>
+ <term name="humanities">humanitní</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literatura</term>
+ <term name="math">matematika</term>
+ <term name="medicine">medicína</term>
+ <term name="philosophy">filosofie</term>
+ <term name="physics">fyzika</term>
+ <term name="psychology">psychologie</term>
+ <term name="sociology">sociologie</term>
+ <term name="science">věda</term>
+ <term name="political_science">politologie</term>
+ <term name="social_science">sociální věda</term>
+ <term name="theology">teologie</term>
+ <term name="zoology">zoologie</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>kniha</single>
+ <multiple>knihy</multiple>
+ </term>
+ <term name="chapter">
+ <single>kapitola</single>
+ <multiple>kapitoly</multiple>
+ </term>
+ <term name="column">
+ <single>sloupec</single>
+ <multiple>sloupce</multiple>
+ </term>
+ <term name="figure">
+ <single>obrázek</single>
+ <multiple>obrázky</multiple>
+ </term>
+ <term name="folio">
+ <single>list</single>
+ <multiple>listy</multiple>
+ </term>
+ <term name="issue">
+ <single>číslo</single>
+ <multiple>číslo</multiple>
+ </term>
+ <term name="line">
+ <single>řádek</single>
+ <multiple>řádky</multiple>
+ </term>
+ <term name="note">
+ <single>poznámka</single>
+ <multiple>poznámky</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>strana</single>
+ <multiple>strany</multiple>
+ </term>
+ <term name="paragraph">
+ <single>odstavec</single>
+ <multiple>odstavce</multiple>
+ </term>
+ <term name="part">
+ <single>část</single>
+ <multiple>části</multiple>
+ </term>
+ <term name="section">
+ <single>sekce</single>
+ <multiple>sekce</multiple>
+ </term>
+ <term name="volume">
+ <single>ročník</single>
+ <multiple>ročníky</multiple>
+ </term>
+ <term name="edition">
+ <single>edice</single>
+ <multiple>edice</multiple>
+ </term>
+ <term name="verse">
+ <single>verš</single>
+ <multiple>verše</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">kn</term>
+ <term name="chapter" form="short">kap</term>
+ <term name="column" form="short">sl</term>
+ <term name="figure" form="short">obr</term>
+ <term name="folio" form="short">l</term>
+ <term name="issue" form="short">čís</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>s</single>
+ <multiple>s</multiple>
+ </term>
+ <term name="paragraph" form="short">odst</term>
+ <term name="part" form="short">č</term>
+ <term name="section" form="short">sek</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>v</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>roč</single>
+ <multiple>roč</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single>autor</single>
+ <multiple>autoři</multiple>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editoři</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>překladatel</single>
+ <multiple>překladatelé</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>ed</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>překl</single>
+ <multiple>překl</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">editoval</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">přeložil</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">pro</term>
+ <term name="interviewer" form="verb">rozhovor vedl</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">překl</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">leden</term>
+ <term name="month-02">únor</term>
+ <term name="month-03">březen</term>
+ <term name="month-04">duben</term>
+ <term name="month-05">květen</term>
+ <term name="month-06">červen</term>
+ <term name="month-07">červenec</term>
+ <term name="month-08">srpen</term>
+ <term name="month-09">září</term>
+ <term name="month-10">říjen</term>
+ <term name="month-11">listopad</term>
+ <term name="month-12">prosinec</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">led</term>
+ <term name="month-02" form="short">úno</term>
+ <term name="month-03" form="short">bře</term>
+ <term name="month-04" form="short">dub</term>
+ <term name="month-05" form="short">kvě</term>
+ <term name="month-06" form="short">čer</term>
+ <term name="month-07" form="short">čvc</term>
+ <term name="month-08" form="short">srp</term>
+ <term name="month-09" form="short">zář</term>
+ <term name="month-10" form="short">říj</term>
+ <term name="month-11" form="short">lis</term>
+ <term name="month-12" form="short">pro</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-da-DK.xml b/chrome/content/zotero/locale/csl/locales-da-DK.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="da">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accessed</term>
- <term name="retrieved">retrieved</term>
- <term name="from">from</term>
- <term name="forthcoming">forthcoming</term>
- <term name="references">References</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">nd</term>
- <term name="and">and</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>line</single>
- <multiple>line</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>page</single>
- <multiple>pages</multiple>
- </term>
- <term name="paragraph">
- <single>paragraph</single>
- <multiple>paragraph</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editors</multiple>
- </term>
- <term name="translator">
- <single>translator</single>
- <multiple>translators</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>tran</single>
- <multiple>trans</multiple>
- </term>
- <term name="editor" form="verb">edited by</term>
- <term name="translator" form="verb">translated by</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">January</term>
- <term name="month-02">February</term>
- <term name="month-03">March</term>
- <term name="month-04">April</term>
- <term name="month-05">May</term>
- <term name="month-06">June</term>
- <term name="month-07">July</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">October</term>
- <term name="month-11">November</term>
- <term name="month-12">December</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Oct</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="da">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accessed</term>
+ <term name="retrieved">retrieved</term>
+ <term name="from">from</term>
+ <term name="forthcoming">forthcoming</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">nd</term>
+ <term name="and">and</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>line</single>
+ <multiple>line</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraph</single>
+ <multiple>paragraph</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">no</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>translator</single>
+ <multiple>translators</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tran</single>
+ <multiple>trans</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">edited by</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">translated by</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">January</term>
+ <term name="month-02">February</term>
+ <term name="month-03">March</term>
+ <term name="month-04">April</term>
+ <term name="month-05">May</term>
+ <term name="month-06">June</term>
+ <term name="month-07">July</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">October</term>
+ <term name="month-11">November</term>
+ <term name="month-12">December</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Oct</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-de-AT.xml b/chrome/content/zotero/locale/csl/locales-de-AT.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="de">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ebd.</term>
- <term name="accessed">zugegriffen</term>
- <term name="retrieved">abgerufen</term>
- <term name="from">von</term>
- <term name="forthcoming">i.E.</term>
- <term name="references">Quellenangabe</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">o.J.</term>
- <term name="and">und</term>
- <term name="et-al">u.a.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>Zeile</single>
- <multiple>Zeilen</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>Seite</single>
- <multiple>Seiten</multiple>
- </term>
- <term name="paragraph">
- <single>Absatz</single>
- <multiple>Absätze</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">Nr</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>S</single>
- <multiple>S</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>Herausgeber</single>
- <multiple>Herausgeber</multiple>
- </term>
- <term name="translator">
- <single>Übersetzer</single>
- <multiple>Übersetzer</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>Hrsg</single>
- <multiple>Hrsg</multiple>
- </term>
- <term name="translator" form="short">
- <single>Übers</single>
- <multiple>Übers</multiple>
- </term>
- <term name="editor" form="verb">Hg. v</term>
- <term name="translator" form="verb">Übers. v</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">Jänner</term>
- <term name="month-02">Februar</term>
- <term name="month-03">März</term>
- <term name="month-04">April</term>
- <term name="month-05">Mai</term>
- <term name="month-06">Juni</term>
- <term name="month-07">Juli</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">Oktober</term>
- <term name="month-11">November</term>
- <term name="month-12">Dezember</term>
- <term name="month-01" form="short">Jän</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">Mai</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Okt</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dez</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="de">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ebd.</term>
+ <term name="accessed">zugegriffen</term>
+ <term name="retrieved">abgerufen</term>
+ <term name="from">von</term>
+ <term name="forthcoming">i.E.</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">o.J.</term>
+ <term name="and">und</term>
+ <term name="et-al">u.a.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>Zeile</single>
+ <multiple>Zeilen</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>Seite</single>
+ <multiple>Seiten</multiple>
+ </term>
+ <term name="paragraph">
+ <single>Absatz</single>
+ <multiple>Absätze</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">Nr</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>S</single>
+ <multiple>S</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>Herausgeber</single>
+ <multiple>Herausgeber</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>Übersetzer</single>
+ <multiple>Übersetzer</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>Hrsg</single>
+ <multiple>Hrsg</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>Übers</single>
+ <multiple>Übers</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">Hg. v</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">Übers. v</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Jänner</term>
+ <term name="month-02">Februar</term>
+ <term name="month-03">März</term>
+ <term name="month-04">April</term>
+ <term name="month-05">Mai</term>
+ <term name="month-06">Juni</term>
+ <term name="month-07">Juli</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">Oktober</term>
+ <term name="month-11">November</term>
+ <term name="month-12">Dezember</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jän</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">Mai</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Okt</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dez</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-de-CH.xml b/chrome/content/zotero/locale/csl/locales-de-CH.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="de">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ebd.</term>
- <term name="accessed">zugegriffen</term>
- <term name="retrieved">abgerufen</term>
- <term name="from">von</term>
- <term name="forthcoming">i.E.</term>
- <term name="references">Quellenangabe</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">o.J.</term>
- <term name="and">und</term>
- <term name="et-al">u.a.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>Zeile</single>
- <multiple>Zeilen</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>Seite</single>
- <multiple>Seiten</multiple>
- </term>
- <term name="paragraph">
- <single>Absatz</single>
- <multiple>Absätze</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">Nr</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>S</single>
- <multiple>S</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>Herausgeber</single>
- <multiple>Herausgeber</multiple>
- </term>
- <term name="translator">
- <single>Übersetzer</single>
- <multiple>Übersetzer</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>Hrsg</single>
- <multiple>Hrsg</multiple>
- </term>
- <term name="translator" form="short">
- <single>Übers</single>
- <multiple>Übers</multiple>
- </term>
- <term name="editor" form="verb">Hg. v</term>
- <term name="translator" form="verb">Übers. v</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">Januar</term>
- <term name="month-02">Februar</term>
- <term name="month-03">März</term>
- <term name="month-04">April</term>
- <term name="month-05">Mai</term>
- <term name="month-06">Juni</term>
- <term name="month-07">Juli</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">Oktober</term>
- <term name="month-11">November</term>
- <term name="month-12">Dezember</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">Mai</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Okt</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dez</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="de">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ebd.</term>
+ <term name="accessed">zugegriffen</term>
+ <term name="retrieved">abgerufen</term>
+ <term name="from">von</term>
+ <term name="forthcoming">i.E.</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">o.J.</term>
+ <term name="and">und</term>
+ <term name="et-al">u.a.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>Zeile</single>
+ <multiple>Zeilen</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>Seite</single>
+ <multiple>Seiten</multiple>
+ </term>
+ <term name="paragraph">
+ <single>Absatz</single>
+ <multiple>Absätze</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">Nr</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>S</single>
+ <multiple>S</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>Herausgeber</single>
+ <multiple>Herausgeber</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>Übersetzer</single>
+ <multiple>Übersetzer</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>Hrsg</single>
+ <multiple>Hrsg</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>Übers</single>
+ <multiple>Übers</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">Hg. v</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">Übers. v</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Januar</term>
+ <term name="month-02">Februar</term>
+ <term name="month-03">März</term>
+ <term name="month-04">April</term>
+ <term name="month-05">Mai</term>
+ <term name="month-06">Juni</term>
+ <term name="month-07">Juli</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">Oktober</term>
+ <term name="month-11">November</term>
+ <term name="month-12">Dezember</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">Mai</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Okt</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dez</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-de-DE.xml b/chrome/content/zotero/locale/csl/locales-de-DE.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="de">
- <term name="at">auf</term>
- <term name="in">in</term>
- <term name="ibid">ebd</term>
- <term name="accessed">zugegriffen</term>
- <term name="retrieved">abgerufen</term>
- <term name="from">von</term>
- <term name="forthcoming">i. E.</term>
- <term name="references">Quellenangabe</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">o. J.</term>
- <term name="and">und</term>
- <term name="et-al">u. a.</term>
- <term name="interview">Interview</term>
- <term name="letter">Brief</term>
- <term name="anonymous">ohne Autor</term>
- <term name="anonymous" form="short">o. A.</term>
- <term name="and others">und andere</term>
- <term name="in press">im Druck</term>
- <term name="online">online</term>
- <term name="cited">zitiert</term>
- <term name="internet">Internet</term>
- <term name="presented at">gehalten auf der</term>
- <term name="anthropology">Anthropologie</term>
- <term name="astronomy">Astronomie</term>
- <term name="biology">Biologie</term>
- <term name="botany">Botanik</term>
- <term name="chemistry">Chemie</term>
- <term name="engineering">Ingenieurswissenschaften</term>
- <term name="generic-base">generischer Stil</term>
- <term name="geography">Geographie</term>
- <term name="geology">Geologie</term>
- <term name="history">Geschichte</term>
- <term name="humanities">Geisteswissenschaften</term>
- <term name="literature">Literatur</term>
- <term name="math">Mathematik</term>
- <term name="medicine">Medizin</term>
- <term name="philosophy">Philosophie</term>
- <term name="physics">Physik</term>
- <term name="psychology">Psychologie</term>
- <term name="sociology">Soziologie</term>
- <term name="science">Naturwissenschaften</term>
- <term name="political_science">Politikwissenschaft</term>
- <term name="social_science">Sozialwissenschaften</term>
- <term name="theology">Theologie</term>
- <term name="zoology">Zoologie</term>
- <term name="book">
- <single>Buch</single>
- <multiple>Bücher</multiple>
- </term>
- <term name="chapter">
- <single>Kapitel</single>
- <multiple>Kapitel</multiple>
- </term>
- <term name="column">
- <single>Spalte</single>
- <multiple>Spalten</multiple>
- </term>
- <term name="figure">
- <single>Abbildung</single>
- <multiple>Abbildungen</multiple>
- </term>
- <term name="folio">
- <single>Blatt</single>
- <multiple>Blätter</multiple>
- </term>
- <term name="issue">
- <single>Nummer</single>
- <multiple>Nummern</multiple>
- </term>
- <term name="line">
- <single>Zeile</single>
- <multiple>Zeilen</multiple>
- </term>
- <term name="note">
- <single>Note</single>
- <multiple>Noten</multiple>
- </term>
- <term name="opus">
- <single>Opus</single>
- <multiple>Opera</multiple>
- </term>
- <term name="page">
- <single>Seite</single>
- <multiple>Seiten</multiple>
- </term>
- <term name="paragraph">
- <single>Absatz</single>
- <multiple>Absätze</multiple>
- </term>
- <term name="part">
- <single>Teil</single>
- <multiple>Teile</multiple>
- </term>
- <term name="section">
- <single>Abschnitt</single>
- <multiple>Abschnitte</multiple>
- </term>
- <term name="volume">
- <single>Band</single>
- <multiple>Bände</multiple>
- </term>
- <term name="edition">
- <single>Auflage</single>
- <multiple>Auflagen</multiple>
- </term>
- <term name="verse">
- <single>Vers</single>
- <multiple>Verse</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">B</term>
- <term name="chapter" form="short">Kap</term>
- <term name="column" form="short">Sp</term>
- <term name="figure" form="short">Abb</term>
- <term name="folio" form="short">Fol</term>
- <term name="issue" form="short">Nr</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>S</single>
- <multiple>S</multiple>
- </term>
- <term name="paragraph" form="short">Abs</term>
- <term name="part" form="short">Teil</term>
- <term name="section" form="short">Abschn</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>V</single>
- <multiple>Vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>Bd</single>
- <multiple>Bd</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">Aufl</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>Herausgeber</single>
- <multiple>Herausgeber</multiple>
- </term>
- <term name="translator">
- <single>Übersetzer</single>
- <multiple>Übersetzer</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>Hrsg</single>
- <multiple>Hrsg</multiple>
- </term>
- <term name="translator" form="short">
- <single>Übers</single>
- <multiple>Übers</multiple>
- </term>
- <term name="editor" form="verb">herausgegeben von</term>
- <term name="translator" form="verb">übersetzt von</term>
- <term name="recipient" form="verb">an</term>
- <term name="interviewer" form="verb">interviewt von</term>
- <term name="editor" form="verb-short">hg. v</term>
- <term name="translator" form="verb-short">übers. v</term>
- <term name="month-01">Januar</term>
- <term name="month-02">Februar</term>
- <term name="month-03">März</term>
- <term name="month-04">April</term>
- <term name="month-05">Mai</term>
- <term name="month-06">Juni</term>
- <term name="month-07">Juli</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">Oktober</term>
- <term name="month-11">November</term>
- <term name="month-12">Dezember</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">März</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">Mai</term>
- <term name="month-06" form="short">Juni</term>
- <term name="month-07" form="short">Juli</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Okt</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dez</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="de">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">auf</term>
+ <term name="in">in</term>
+ <term name="ibid">ebd</term>
+ <term name="accessed">zugegriffen</term>
+ <term name="retrieved">abgerufen</term>
+ <term name="from">von</term>
+ <term name="forthcoming">i. E.</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">o. J.</term>
+ <term name="and">und</term>
+ <term name="et-al">u. a.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">Interview</term>
+ <term name="letter">Brief</term>
+ <term name="anonymous">ohne Autor</term>
+ <term name="anonymous" form="short">o. A.</term>
+ <term name="and others">und andere</term>
+ <term name="in press">im Druck</term>
+ <term name="online">online</term>
+ <term name="cited">zitiert</term>
+ <term name="internet">Internet</term>
+ <term name="presented at">gehalten auf der</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">Anthropologie</term>
+ <term name="astronomy">Astronomie</term>
+ <term name="biology">Biologie</term>
+ <term name="botany">Botanik</term>
+ <term name="chemistry">Chemie</term>
+ <term name="engineering">Ingenieurswissenschaften</term>
+ <term name="generic-base">generischer Stil</term>
+ <term name="geography">Geographie</term>
+ <term name="geology">Geologie</term>
+ <term name="history">Geschichte</term>
+ <term name="humanities">Geisteswissenschaften</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">Literatur</term>
+ <term name="math">Mathematik</term>
+ <term name="medicine">Medizin</term>
+ <term name="philosophy">Philosophie</term>
+ <term name="physics">Physik</term>
+ <term name="psychology">Psychologie</term>
+ <term name="sociology">Soziologie</term>
+ <term name="science">Naturwissenschaften</term>
+ <term name="political_science">Politikwissenschaft</term>
+ <term name="social_science">Sozialwissenschaften</term>
+ <term name="theology">Theologie</term>
+ <term name="zoology">Zoologie</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>Buch</single>
+ <multiple>Bücher</multiple>
+ </term>
+ <term name="chapter">
+ <single>Kapitel</single>
+ <multiple>Kapitel</multiple>
+ </term>
+ <term name="column">
+ <single>Spalte</single>
+ <multiple>Spalten</multiple>
+ </term>
+ <term name="figure">
+ <single>Abbildung</single>
+ <multiple>Abbildungen</multiple>
+ </term>
+ <term name="folio">
+ <single>Blatt</single>
+ <multiple>Blätter</multiple>
+ </term>
+ <term name="issue">
+ <single>Nummer</single>
+ <multiple>Nummern</multiple>
+ </term>
+ <term name="line">
+ <single>Zeile</single>
+ <multiple>Zeilen</multiple>
+ </term>
+ <term name="note">
+ <single>Note</single>
+ <multiple>Noten</multiple>
+ </term>
+ <term name="opus">
+ <single>Opus</single>
+ <multiple>Opera</multiple>
+ </term>
+ <term name="page">
+ <single>Seite</single>
+ <multiple>Seiten</multiple>
+ </term>
+ <term name="paragraph">
+ <single>Absatz</single>
+ <multiple>Absätze</multiple>
+ </term>
+ <term name="part">
+ <single>Teil</single>
+ <multiple>Teile</multiple>
+ </term>
+ <term name="section">
+ <single>Abschnitt</single>
+ <multiple>Abschnitte</multiple>
+ </term>
+ <term name="volume">
+ <single>Band</single>
+ <multiple>Bände</multiple>
+ </term>
+ <term name="edition">
+ <single>Auflage</single>
+ <multiple>Auflagen</multiple>
+ </term>
+ <term name="verse">
+ <single>Vers</single>
+ <multiple>Verse</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">B</term>
+ <term name="chapter" form="short">Kap</term>
+ <term name="column" form="short">Sp</term>
+ <term name="figure" form="short">Abb</term>
+ <term name="folio" form="short">Fol</term>
+ <term name="issue" form="short">Nr</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>S</single>
+ <multiple>S</multiple>
+ </term>
+ <term name="paragraph" form="short">Abs</term>
+ <term name="part" form="short">Teil</term>
+ <term name="section" form="short">Abschn</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>V</single>
+ <multiple>Vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>Bd</single>
+ <multiple>Bd</multiple>
+ </term>
+ <term name="edition" form="short">Aufl</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>Herausgeber</single>
+ <multiple>Herausgeber</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>Übersetzer</single>
+ <multiple>Übersetzer</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>Hrsg</single>
+ <multiple>Hrsg</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>Übers</single>
+ <multiple>Übers</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">herausgegeben von</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">übersetzt von</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">an</term>
+ <term name="interviewer" form="verb">interviewt von</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">hg. v</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">übers. v</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Januar</term>
+ <term name="month-02">Februar</term>
+ <term name="month-03">März</term>
+ <term name="month-04">April</term>
+ <term name="month-05">Mai</term>
+ <term name="month-06">Juni</term>
+ <term name="month-07">Juli</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">Oktober</term>
+ <term name="month-11">November</term>
+ <term name="month-12">Dezember</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">März</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">Mai</term>
+ <term name="month-06" form="short">Juni</term>
+ <term name="month-07" form="short">Juli</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Okt</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dez</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-el-GR.xml b/chrome/content/zotero/locale/csl/locales-el-GR.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="el">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accessed</term>
- <term name="retrieved">retrieved</term>
- <term name="from">from</term>
- <term name="forthcoming">forthcoming</term>
- <term name="references">references</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">n.d.</term>
- <term name="and">and</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>line</single>
- <multiple>lines</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>page</single>
- <multiple>pages</multiple>
- </term>
- <term name="paragraph">
- <single>paragraph</single>
- <multiple>paragraph</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editors</multiple>
- </term>
- <term name="translator">
- <single>translator</single>
- <multiple>translators</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>tran</single>
- <multiple>trans</multiple>
- </term>
- <term name="editor" form="verb">edited by</term>
- <term name="translator" form="verb">translated by</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">January</term>
- <term name="month-02">February</term>
- <term name="month-03">March</term>
- <term name="month-04">April</term>
- <term name="month-05">May</term>
- <term name="month-06">June</term>
- <term name="month-07">July</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">October</term>
- <term name="month-11">November</term>
- <term name="month-12">December</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Oct</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="el">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accessed</term>
+ <term name="retrieved">retrieved</term>
+ <term name="from">from</term>
+ <term name="forthcoming">forthcoming</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">n.d.</term>
+ <term name="and">and</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>line</single>
+ <multiple>lines</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraph</single>
+ <multiple>paragraph</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">no</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>translator</single>
+ <multiple>translators</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tran</single>
+ <multiple>trans</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">edited by</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">translated by</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">January</term>
+ <term name="month-02">February</term>
+ <term name="month-03">March</term>
+ <term name="month-04">April</term>
+ <term name="month-05">May</term>
+ <term name="month-06">June</term>
+ <term name="month-07">July</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">October</term>
+ <term name="month-11">November</term>
+ <term name="month-12">December</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Oct</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-en-US.xml b/chrome/content/zotero/locale/csl/locales-en-US.xml
@@ -1,231 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="en">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accessed</term>
- <term name="retrieved">retrieved</term>
- <term name="from">from</term>
- <term name="forthcoming">forthcoming</term>
- <term name="references">references</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">n.d.</term>
- <term name="and">and</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
-
- <!-- CATEGORIES -->
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
-
- <!-- LONG LOCATOR FORMS -->
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>line</single>
- <multiple>lines</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>page</single>
- <multiple>pages</multiple>
- </term>
- <term name="paragraph">
- <single>paragraph</single>
- <multiple>paragraph</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
-
- <!-- SHORT LOCATOR FORMS -->
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
-
- <!-- SYMBOL LOCATOR FORMS -->
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
-
- <!-- LONG ROLE FORMS -->
- <term name="author">
- <single></single>
- <multiple></multiple>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editors</multiple>
- </term>
- <term name="translator">
- <single>translator</single>
- <multiple>translators</multiple>
- </term>
-
- <!-- SHORT ROLE FORMS -->
- <term name="author" form="short">
- <single></single>
- <multiple></multiple>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>tran</single>
- <multiple>trans</multiple>
- </term>
-
- <!-- VERB ROLE FORMS -->
- <term name="editor" form="verb">edited by</term>
- <term name="translator" form="verb">translated by</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
-
- <!-- SHORT VERB ROLE FORMS -->
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
-
- <!-- LONG MONTH FORMS -->
- <term name="month-01">January</term>
- <term name="month-02">February</term>
- <term name="month-03">March</term>
- <term name="month-04">April</term>
- <term name="month-05">May</term>
- <term name="month-06">June</term>
- <term name="month-07">July</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">October</term>
- <term name="month-11">November</term>
- <term name="month-12">December</term>
-
- <!-- SHORT MONTH FORMS -->
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Oct</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="en">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accessed</term>
+ <term name="retrieved">retrieved</term>
+ <term name="from">from</term>
+ <term name="forthcoming">forthcoming</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">n.d.</term>
+ <term name="and">and</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon.</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>line</single>
+ <multiple>lines</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraph</single>
+ <multiple>paragraph</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>sub verbis</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk.</term>
+ <term name="chapter" form="short">chap.</term>
+ <term name="column" form="short">col.</term>
+ <term name="figure" form="short">fig.</term>
+ <term name="folio" form="short">f.</term>
+ <term name="issue" form="short">no.</term>
+ <term name="opus" form="short">op.</term>
+ <term name="page" form="short">
+ <single>p.</single>
+ <multiple>pp.</multiple>
+ </term>
+ <term name="paragraph" form="short">para.</term>
+ <term name="part" form="short">pt.</term>
+ <term name="section" form="short">sec.</term>
+ <term name="sub verbo" form="short">
+ <single>s.v.</single>
+ <multiple>s.vv.</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v.</single>
+ <multiple>vv.</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol.</single>
+ <multiple>vols.</multiple>
+ </term>
+ <term name="edition" form="short">ed.</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>translator</single>
+ <multiple>translators</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tran.</single>
+ <multiple>trans.</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">edited by</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">translated by</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed.</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans.</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">January</term>
+ <term name="month-02">February</term>
+ <term name="month-03">March</term>
+ <term name="month-04">April</term>
+ <term name="month-05">May</term>
+ <term name="month-06">June</term>
+ <term name="month-07">July</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">October</term>
+ <term name="month-11">November</term>
+ <term name="month-12">December</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan.</term>
+ <term name="month-02" form="short">Feb.</term>
+ <term name="month-03" form="short">Mar.</term>
+ <term name="month-04" form="short">Apr.</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Jun.</term>
+ <term name="month-07" form="short">Jul.</term>
+ <term name="month-08" form="short">Aug.</term>
+ <term name="month-09" form="short">Sep.</term>
+ <term name="month-10" form="short">Oct.</term>
+ <term name="month-11" form="short">Nov.</term>
+ <term name="month-12" form="short">Dec.</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-es-ES.xml b/chrome/content/zotero/locale/csl/locales-es-ES.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="es">
- <term name="at">en</term>
- <term name="in">en</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accedido</term>
- <term name="retrieved">recuperado</term>
- <term name="from">a partir de</term>
- <term name="forthcoming">previsto</term>
- <term name="references">Referencias</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">s.d.</term>
- <term name="and">y</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>libro</single>
- <multiple>libros</multiple>
- </term>
- <term name="chapter">
- <single>capítulo</single>
- <multiple>capítulos</multiple>
- </term>
- <term name="column">
- <single>columna</single>
- <multiple>columnas</multiple>
- </term>
- <term name="figure">
- <single>figura</single>
- <multiple>figuras</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>número</single>
- <multiple>números</multiple>
- </term>
- <term name="line">
- <single>línea</single>
- <multiple>líneas</multiple>
- </term>
- <term name="note">
- <single>nota</single>
- <multiple>notas</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>página</single>
- <multiple>páginas</multiple>
- </term>
- <term name="paragraph">
- <single>párrafo</single>
- <multiple>párrafos</multiple>
- </term>
- <term name="part">
- <single>parte</single>
- <multiple>partes</multiple>
- </term>
- <term name="section">
- <single>sección</single>
- <multiple>secciones</multiple>
- </term>
- <term name="volume">
- <single>volumen</single>
- <multiple>volúmenes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verso</single>
- <multiple>versos</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">lib</term>
- <term name="chapter" form="short">cap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">nº</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>pág</single>
- <multiple>págs</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editores</multiple>
- </term>
- <term name="translator">
- <single>traductor</single>
- <multiple>traductores</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>trad</single>
- <multiple>trads</multiple>
- </term>
- <term name="editor" form="verb">editado por</term>
- <term name="translator" form="verb">traducido por</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trad</term>
- <term name="month-01">Enero</term>
- <term name="month-02">Febrero</term>
- <term name="month-03">Marzo</term>
- <term name="month-04">Abril</term>
- <term name="month-05">Mayo</term>
- <term name="month-06">Junio</term>
- <term name="month-07">Julio</term>
- <term name="month-08">Agosto</term>
- <term name="month-09">Septiembre</term>
- <term name="month-10">Octubre</term>
- <term name="month-11">Noviembre</term>
- <term name="month-12">Diciembre</term>
- <term name="month-01" form="short">Ene</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Abr</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Ago</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Oct</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dic</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="es">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">en</term>
+ <term name="in">en</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accedido</term>
+ <term name="retrieved">recuperado</term>
+ <term name="from">a partir de</term>
+ <term name="forthcoming">previsto</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">s.d.</term>
+ <term name="and">y</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>libro</single>
+ <multiple>libros</multiple>
+ </term>
+ <term name="chapter">
+ <single>capítulo</single>
+ <multiple>capítulos</multiple>
+ </term>
+ <term name="column">
+ <single>columna</single>
+ <multiple>columnas</multiple>
+ </term>
+ <term name="figure">
+ <single>figura</single>
+ <multiple>figuras</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>número</single>
+ <multiple>números</multiple>
+ </term>
+ <term name="line">
+ <single>línea</single>
+ <multiple>líneas</multiple>
+ </term>
+ <term name="note">
+ <single>nota</single>
+ <multiple>notas</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>página</single>
+ <multiple>páginas</multiple>
+ </term>
+ <term name="paragraph">
+ <single>párrafo</single>
+ <multiple>párrafos</multiple>
+ </term>
+ <term name="part">
+ <single>parte</single>
+ <multiple>partes</multiple>
+ </term>
+ <term name="section">
+ <single>sección</single>
+ <multiple>secciones</multiple>
+ </term>
+ <term name="volume">
+ <single>volumen</single>
+ <multiple>volúmenes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verso</single>
+ <multiple>versos</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">lib</term>
+ <term name="chapter" form="short">cap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">nº</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>pág</single>
+ <multiple>págs</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editores</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>traductor</single>
+ <multiple>traductores</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>trad</single>
+ <multiple>trads</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">editado por</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">traducido por</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trad</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Enero</term>
+ <term name="month-02">Febrero</term>
+ <term name="month-03">Marzo</term>
+ <term name="month-04">Abril</term>
+ <term name="month-05">Mayo</term>
+ <term name="month-06">Junio</term>
+ <term name="month-07">Julio</term>
+ <term name="month-08">Agosto</term>
+ <term name="month-09">Septiembre</term>
+ <term name="month-10">Octubre</term>
+ <term name="month-11">Noviembre</term>
+ <term name="month-12">Diciembre</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Ene</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Abr</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Ago</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Oct</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dic</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-et-EE.xml b/chrome/content/zotero/locale/csl/locales-et-EE.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="et">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accessed</term>
- <term name="retrieved">retrieved</term>
- <term name="from">from</term>
- <term name="forthcoming">forthcoming</term>
- <term name="references">references</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">n.d.</term>
- <term name="and">and</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>line</single>
- <multiple>lines</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>page</single>
- <multiple>pages</multiple>
- </term>
- <term name="paragraph">
- <single>paragraph</single>
- <multiple>paragraph</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editors</multiple>
- </term>
- <term name="translator">
- <single>translator</single>
- <multiple>translators</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>tran</single>
- <multiple>trans</multiple>
- </term>
- <term name="editor" form="verb">edited by</term>
- <term name="translator" form="verb">translated by</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">January</term>
- <term name="month-02">February</term>
- <term name="month-03">March</term>
- <term name="month-04">April</term>
- <term name="month-05">May</term>
- <term name="month-06">June</term>
- <term name="month-07">July</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">October</term>
- <term name="month-11">November</term>
- <term name="month-12">December</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Oct</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="et">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accessed</term>
+ <term name="retrieved">retrieved</term>
+ <term name="from">from</term>
+ <term name="forthcoming">forthcoming</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">n.d.</term>
+ <term name="and">and</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>line</single>
+ <multiple>lines</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraph</single>
+ <multiple>paragraph</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">no</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>translator</single>
+ <multiple>translators</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tran</single>
+ <multiple>trans</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">edited by</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">translated by</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">January</term>
+ <term name="month-02">February</term>
+ <term name="month-03">March</term>
+ <term name="month-04">April</term>
+ <term name="month-05">May</term>
+ <term name="month-06">June</term>
+ <term name="month-07">July</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">October</term>
+ <term name="month-11">November</term>
+ <term name="month-12">December</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Oct</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-fr-FR.xml b/chrome/content/zotero/locale/csl/locales-fr-FR.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="fr">
- <term name="at">à</term>
- <term name="in">dans</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accédé</term>
- <term name="retrieved">retrouvé</term>
- <term name="from">de</term>
- <term name="forthcoming">à venir</term>
- <term name="references">références</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">sans date</term>
- <term name="and">et</term>
- <term name="et-al">et al.</term>
- <term name="interview">entrevue</term>
- <term name="letter">lettre</term>
- <term name="anonymous">anonyme</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">et autres</term>
- <term name="in press">sous presse</term>
- <term name="online">en ligne</term>
- <term name="cited">cité</term>
- <term name="internet">Internet</term>
- <term name="presented at">présenté au</term>
- <term name="anthropology">anthropologie</term>
- <term name="astronomy">astronomie</term>
- <term name="biology">biologie</term>
- <term name="botany">botanique</term>
- <term name="chemistry">chimie</term>
- <term name="engineering">ingénierie</term>
- <term name="generic-base">base générique</term>
- <term name="geography">géographie</term>
- <term name="geology">géologie</term>
- <term name="history">histoire</term>
- <term name="humanities">lettres et sciences humaines</term>
- <term name="literature">littérature</term>
- <term name="math">mathématiques</term>
- <term name="medicine">médecine</term>
- <term name="philosophy">philosophie</term>
- <term name="physics">physique</term>
- <term name="psychology">psychologie</term>
- <term name="sociology">sociologie</term>
- <term name="science">sciences de la nature</term>
- <term name="political_science">science politique</term>
- <term name="social_science">sciences sociales</term>
- <term name="theology">théologie</term>
- <term name="zoology">zoologie</term>
- <term name="book">
- <single>livre</single>
- <multiple>livres</multiple>
- </term>
- <term name="chapter">
- <single>chapitre</single>
- <multiple>chapitres</multiple>
- </term>
- <term name="column">
- <single>colonne</single>
- <multiple>colonnes</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>numéro</single>
- <multiple>numéros</multiple>
- </term>
- <term name="line">
- <single>ligne</single>
- <multiple>lignes</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opus</multiple>
- </term>
- <term name="page">
- <single>page</single>
- <multiple>pages</multiple>
- </term>
- <term name="paragraph">
- <single>paragraphe</single>
- <multiple>paragraphes</multiple>
- </term>
- <term name="part">
- <single>tome</single>
- <multiple>tomes</multiple>
- </term>
- <term name="section">
- <single>rubrique</single>
- <multiple>rubriques</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>édition</single>
- <multiple>éditions</multiple>
- </term>
- <term name="verse">
- <single>vers</single>
- <multiple>vers</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>sub verbo</multiple>
- </term>
- <term name="book" form="short">liv</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">n°</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>p</multiple>
- </term>
- <term name="paragraph" form="short">paragr</term>
- <term name="part" form="short">t</term>
- <term name="section" form="short">rub</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.v</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>v</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vol</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">éd</term>
- <term name="paragraph" form="symbol">
- <single>§</single>
- <multiple>§</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§</multiple>
- </term>
- <term name="author">
- <single>auteur</single>
- <multiple>auteurs</multiple>
- </term>
- <term name="editor">
- <single>éditeur</single>
- <multiple>éditeurs</multiple>
- </term>
- <term name="translator">
- <single>traducteur</single>
- <multiple>traducteurs</multiple>
- </term>
- <term name="author" form="short">
- <single>aut</single>
- <multiple>aut</multiple>
- </term>
- <term name="editor" form="short">
- <single>éd</single>
- <multiple>éd</multiple>
- </term>
- <term name="translator" form="short">
- <single>trad</single>
- <multiple>trad</multiple>
- </term>
- <term name="editor" form="verb">édité par</term>
- <term name="translator" form="verb">traduit par</term>
- <term name="recipient" form="verb">vers</term>
- <term name="interviewer" form="verb">entrevue par</term>
- <term name="editor" form="verb-short">éd</term>
- <term name="translator" form="verb-short">trad</term>
- <term name="month-01">janvier</term>
- <term name="month-02">février</term>
- <term name="month-03">mars</term>
- <term name="month-04">avril</term>
- <term name="month-05">mai</term>
- <term name="month-06">juin</term>
- <term name="month-07">juillet</term>
- <term name="month-08">août</term>
- <term name="month-09">septembre</term>
- <term name="month-10">octobre</term>
- <term name="month-11">novembre</term>
- <term name="month-12">décembre</term>
- <term name="month-01" form="short">jan</term>
- <term name="month-02" form="short">fév</term>
- <term name="month-03" form="short">mar</term>
- <term name="month-04" form="short">avr</term>
- <term name="month-05" form="short">mai</term>
- <term name="month-06" form="short">jun</term>
- <term name="month-07" form="short">jul</term>
- <term name="month-08" form="short">aoû</term>
- <term name="month-09" form="short">sep</term>
- <term name="month-10" form="short">oct</term>
- <term name="month-11" form="short">nov</term>
- <term name="month-12" form="short">déc</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="fr">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">à</term>
+ <term name="in">dans</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accédé</term>
+ <term name="retrieved">retrouvé</term>
+ <term name="from">de</term>
+ <term name="forthcoming">à venir</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">pas de date</term>
+ <term name="and">et</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">lettre</term>
+ <term name="anonymous">anonyme</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">et autres</term>
+ <term name="in press">sous presse</term>
+ <term name="online">en ligne</term>
+ <term name="cited">cité</term>
+ <term name="internet">Internet</term>
+ <term name="presented at">présenté au</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropologie</term>
+ <term name="astronomy">astronomie</term>
+ <term name="biology">biologie</term>
+ <term name="botany">botanique</term>
+ <term name="chemistry">chimie</term>
+ <term name="engineering">ingénierie</term>
+ <term name="generic-base">base générique</term>
+ <term name="geography">géographie</term>
+ <term name="geology">géologie</term>
+ <term name="history">histoire</term>
+ <term name="humanities">sciences humaines</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">littérature</term>
+ <term name="math">mathématiques</term>
+ <term name="medicine">médecine</term>
+ <term name="philosophy">philosophie</term>
+ <term name="physics">physique</term>
+ <term name="psychology">psychologie</term>
+ <term name="sociology">sociologie</term>
+ <term name="science">science</term>
+ <term name="political_science">science politique</term>
+ <term name="social_science">science sociale</term>
+ <term name="theology">théologie</term>
+ <term name="zoology">zoologie</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>livre</single>
+ <multiple>livres</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapitre</single>
+ <multiple>chapitres</multiple>
+ </term>
+ <term name="column">
+ <single>colonne</single>
+ <multiple>colonnes</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>numéro</single>
+ <multiple>numéros</multiple>
+ </term>
+ <term name="line">
+ <single>ligne</single>
+ <multiple>lignes</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opus</multiple>
+ </term>
+ <term name="page">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraphe</single>
+ <multiple>paragraphes</multiple>
+ </term>
+ <term name="part">
+ <single>partie</single>
+ <multiple>parties</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verset</single>
+ <multiple>versets</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">liv</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">n°</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">par</term>
+ <term name="part" form="short">part</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">éd</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>éditeur</single>
+ <multiple>éditeurs</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>traducteur</single>
+ <multiple>traducteurs</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>éd</single>
+ <multiple>éd</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>trad</single>
+ <multiple>trad</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">édité par</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">traduit par</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">vers</term>
+ <term name="interviewer" form="verb">interview par</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">éd</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trad</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Janvier</term>
+ <term name="month-02">Février</term>
+ <term name="month-03">Mars</term>
+ <term name="month-04">Avril</term>
+ <term name="month-05">Mai</term>
+ <term name="month-06">Juin</term>
+ <term name="month-07">Juillet</term>
+ <term name="month-08">Août</term>
+ <term name="month-09">Septembre</term>
+ <term name="month-10">Octobre</term>
+ <term name="month-11">Novembre</term>
+ <term name="month-12">Décembre</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Fév</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Avr</term>
+ <term name="month-05" form="short">Mai</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aoû</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Oct</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Déc</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-he-IL.xml b/chrome/content/zotero/locale/csl/locales-he-IL.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="he">
- <term name="at">-ב</term>
- <term name="in">בתוך</term>
- <term name="ibid">שם</term>
- <term name="accessed">גישה</term>
- <term name="retrieved">אוחזר</term>
- <term name="from">מתוך</term>
- <term name="forthcoming">forthcoming</term>
- <term name="references">References</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">nd</term>
- <term name="and">ו</term>
- <term name="et-al">ואחרים</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>ספר</single>
- <multiple>ספרים</multiple>
- </term>
- <term name="chapter">
- <single>פרק</single>
- <multiple>פרקים</multiple>
- </term>
- <term name="column">
- <single>טור</single>
- <multiple>טורים</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>מספר</single>
- <multiple>מספרים</multiple>
- </term>
- <term name="line">
- <single>שורה</single>
- <multiple>שורות</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>אופוס</single>
- <multiple>אופרה</multiple>
- </term>
- <term name="page">
- <single>עמוד</single>
- <multiple>עמודים</multiple>
- </term>
- <term name="paragraph">
- <single>paragraph</single>
- <multiple>פיסקה</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>כרך</single>
- <multiple>כרכים</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>בית</single>
- <multiple>בתים</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>'עמ</single>
- <multiple>'עמ</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>עורך</single>
- <multiple>עורכים</multiple>
- </term>
- <term name="translator">
- <single>מתרגם</single>
- <multiple>מתרגמים</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>tran</single>
- <multiple>trans</multiple>
- </term>
- <term name="editor" form="verb">נערך ע"י</term>
- <term name="translator" form="verb">תורגם ע"י</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">ינואר</term>
- <term name="month-02">פברואר</term>
- <term name="month-03">מרץ</term>
- <term name="month-04">אפריל</term>
- <term name="month-05">מאי</term>
- <term name="month-06">יוני</term>
- <term name="month-07">יולי</term>
- <term name="month-08">אוגוסט</term>
- <term name="month-09">ספטמבר</term>
- <term name="month-10">אוקטובר</term>
- <term name="month-11">נובמבר</term>
- <term name="month-12">דצמבר</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Oct</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="he">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">-ב</term>
+ <term name="in">בתוך</term>
+ <term name="ibid">שם</term>
+ <term name="accessed">גישה</term>
+ <term name="retrieved">אוחזר</term>
+ <term name="from">מתוך</term>
+ <term name="forthcoming">forthcoming</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">nd</term>
+ <term name="and">ו</term>
+ <term name="et-al">ואחרים</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>ספר</single>
+ <multiple>ספרים</multiple>
+ </term>
+ <term name="chapter">
+ <single>פרק</single>
+ <multiple>פרקים</multiple>
+ </term>
+ <term name="column">
+ <single>טור</single>
+ <multiple>טורים</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>מספר</single>
+ <multiple>מספרים</multiple>
+ </term>
+ <term name="line">
+ <single>שורה</single>
+ <multiple>שורות</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>אופוס</single>
+ <multiple>אופרה</multiple>
+ </term>
+ <term name="page">
+ <single>עמוד</single>
+ <multiple>עמודים</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraph</single>
+ <multiple>פיסקה</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>כרך</single>
+ <multiple>כרכים</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>בית</single>
+ <multiple>בתים</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">no</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>'עמ</single>
+ <multiple>'עמ</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>עורך</single>
+ <multiple>עורכים</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>מתרגם</single>
+ <multiple>מתרגמים</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tran</single>
+ <multiple>trans</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">נערך ע"י</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">תורגם ע"י</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">ינואר</term>
+ <term name="month-02">פברואר</term>
+ <term name="month-03">מרץ</term>
+ <term name="month-04">אפריל</term>
+ <term name="month-05">מאי</term>
+ <term name="month-06">יוני</term>
+ <term name="month-07">יולי</term>
+ <term name="month-08">אוגוסט</term>
+ <term name="month-09">ספטמבר</term>
+ <term name="month-10">אוקטובר</term>
+ <term name="month-11">נובמבר</term>
+ <term name="month-12">דצמבר</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Oct</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-hu-HU.xml b/chrome/content/zotero/locale/csl/locales-hu-HU.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="hu">
- <term name="at"/>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">elérés</term>
- <term name="retrieved">elérés</term>
- <term name="from">forrás</term>
- <term name="forthcoming">megjelenés alatt</term>
- <term name="references">hivatkozások</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">nd</term>
- <term name="and">és</term>
- <term name="et-al">et al.</term>
- <term name="interview">interjú</term>
- <term name="letter">levél</term>
- <term name="anonymous">név nélkül</term>
- <term name="anonymous" form="short">nn</term>
- <term name="and others">és mások</term>
- <term name="in press">nyomtatás alatt</term>
- <term name="online">online</term>
- <term name="cited">idézi</term>
- <term name="internet">internet</term>
- <term name="presented at">előadás</term>
- <term name="anthropology">antropológia</term>
- <term name="astronomy">csillagászat</term>
- <term name="biology">biológia</term>
- <term name="botany">botanika</term>
- <term name="chemistry">kémia</term>
- <term name="engineering">mérnöki tudományok</term>
- <term name="generic-base">általános</term>
- <term name="geography">földrajz</term>
- <term name="geology">geológia</term>
- <term name="history">történelem</term>
- <term name="humanities">bölcsésztudományok</term>
- <term name="literature">irodalom</term>
- <term name="math">matematika</term>
- <term name="medicine">orvostudomány</term>
- <term name="philosophy">filozófia</term>
- <term name="physics">fizika</term>
- <term name="psychology">pszichológia</term>
- <term name="sociology">szociológia</term>
- <term name="science">tudomány</term>
- <term name="political_science">politikatudomány</term>
- <term name="social_science">társadalomtudomány</term>
- <term name="theology">teológia</term>
- <term name="zoology">zoológia</term>
- <term name="book">
- <single>könyv</single>
- <multiple>könyv</multiple>
- </term>
- <term name="chapter">
- <single>fejezet</single>
- <multiple>fejezet</multiple>
- </term>
- <term name="column">
- <single>oszlop</single>
- <multiple>oszlop</multiple>
- </term>
- <term name="figure">
- <single>ábra</single>
- <multiple>ábra</multiple>
- </term>
- <term name="folio">
- <single>fóliáns</single>
- <multiple>fóliáns</multiple>
- </term>
- <term name="issue">
- <single>szám</single>
- <multiple>szám</multiple>
- </term>
- <term name="line">
- <single>sor</single>
- <multiple>sor</multiple>
- </term>
- <term name="note">
- <single>jegyzet</single>
- <multiple>jegyzet</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>oldal</single>
- <multiple>oldal</multiple>
- </term>
- <term name="paragraph">
- <single>bekezdés</single>
- <multiple>bekezdés</multiple>
- </term>
- <term name="part">
- <single>rész</single>
- <multiple>rész</multiple>
- </term>
- <term name="section">
- <single>szakasz</single>
- <multiple>szakasz</multiple>
- </term>
- <term name="volume">
- <single>kötet</single>
- <multiple>kötet</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>versszak</single>
- <multiple>versszak</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">könyv</term>
- <term name="chapter" form="short">fej</term>
- <term name="column" form="short">oszl</term>
- <term name="figure" form="short">ábr</term>
- <term name="folio" form="short">fol</term>
- <term name="issue" form="short">sz</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>o</single>
- <multiple>o</multiple>
- </term>
- <term name="paragraph" form="short">bek</term>
- <term name="part" form="short">rész</term>
- <term name="section" form="short">szak</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>vsz</single>
- <multiple>vsz</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>szerkesztő</single>
- <multiple>szerkesztő</multiple>
- </term>
- <term name="translator">
- <single>fordító</single>
- <multiple>fordító</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>szerk</single>
- <multiple>szerk</multiple>
- </term>
- <term name="translator" form="short">
- <single>ford</single>
- <multiple>ford</multiple>
- </term>
- <term name="editor" form="verb">szerkesztette</term>
- <term name="translator" form="verb">fordította</term>
- <term name="recipient" form="verb">címzett</term>
- <term name="interviewer" form="verb">interjúkészítő</term>
- <term name="editor" form="verb-short">szerk</term>
- <term name="translator" form="verb-short">ford</term>
- <term name="month-01">január</term>
- <term name="month-02">február</term>
- <term name="month-03">március</term>
- <term name="month-04">április</term>
- <term name="month-05">május</term>
- <term name="month-06">június</term>
- <term name="month-07">július</term>
- <term name="month-08">augusztus</term>
- <term name="month-09">szeptember</term>
- <term name="month-10">október</term>
- <term name="month-11">november</term>
- <term name="month-12">december</term>
- <term name="month-01" form="short">jan</term>
- <term name="month-02" form="short">febr</term>
- <term name="month-03" form="short">márc</term>
- <term name="month-04" form="short">ápr</term>
- <term name="month-05" form="short">máj</term>
- <term name="month-06" form="short">jún</term>
- <term name="month-07" form="short">júl</term>
- <term name="month-08" form="short">aug</term>
- <term name="month-09" form="short">szept</term>
- <term name="month-10" form="short">okt</term>
- <term name="month-11" form="short">nov</term>
- <term name="month-12" form="short">dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="hu">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at"/>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">elérés</term>
+ <term name="retrieved">elérés</term>
+ <term name="from">forrás</term>
+ <term name="forthcoming">megjelenés alatt</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">nd</term>
+ <term name="and">és</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interjú</term>
+ <term name="letter">levél</term>
+ <term name="anonymous">név nélkül</term>
+ <term name="anonymous" form="short">nn</term>
+ <term name="and others">és mások</term>
+ <term name="in press">nyomtatás alatt</term>
+ <term name="online">online</term>
+ <term name="cited">idézi</term>
+ <term name="internet">internet</term>
+ <term name="presented at">előadás</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropológia</term>
+ <term name="astronomy">csillagászat</term>
+ <term name="biology">biológia</term>
+ <term name="botany">botanika</term>
+ <term name="chemistry">kémia</term>
+ <term name="engineering">mérnöki tudományok</term>
+ <term name="generic-base">általános</term>
+ <term name="geography">földrajz</term>
+ <term name="geology">geológia</term>
+ <term name="history">történelem</term>
+ <term name="humanities">bölcsésztudományok</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">irodalom</term>
+ <term name="math">matematika</term>
+ <term name="medicine">orvostudomány</term>
+ <term name="philosophy">filozófia</term>
+ <term name="physics">fizika</term>
+ <term name="psychology">pszichológia</term>
+ <term name="sociology">szociológia</term>
+ <term name="science">tudomány</term>
+ <term name="political_science">politikatudomány</term>
+ <term name="social_science">társadalomtudomány</term>
+ <term name="theology">teológia</term>
+ <term name="zoology">zoológia</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>könyv</single>
+ <multiple>könyv</multiple>
+ </term>
+ <term name="chapter">
+ <single>fejezet</single>
+ <multiple>fejezet</multiple>
+ </term>
+ <term name="column">
+ <single>oszlop</single>
+ <multiple>oszlop</multiple>
+ </term>
+ <term name="figure">
+ <single>ábra</single>
+ <multiple>ábra</multiple>
+ </term>
+ <term name="folio">
+ <single>fóliáns</single>
+ <multiple>fóliáns</multiple>
+ </term>
+ <term name="issue">
+ <single>szám</single>
+ <multiple>szám</multiple>
+ </term>
+ <term name="line">
+ <single>sor</single>
+ <multiple>sor</multiple>
+ </term>
+ <term name="note">
+ <single>jegyzet</single>
+ <multiple>jegyzet</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>oldal</single>
+ <multiple>oldal</multiple>
+ </term>
+ <term name="paragraph">
+ <single>bekezdés</single>
+ <multiple>bekezdés</multiple>
+ </term>
+ <term name="part">
+ <single>rész</single>
+ <multiple>rész</multiple>
+ </term>
+ <term name="section">
+ <single>szakasz</single>
+ <multiple>szakasz</multiple>
+ </term>
+ <term name="volume">
+ <single>kötet</single>
+ <multiple>kötet</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>versszak</single>
+ <multiple>versszak</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">könyv</term>
+ <term name="chapter" form="short">fej</term>
+ <term name="column" form="short">oszl</term>
+ <term name="figure" form="short">ábr</term>
+ <term name="folio" form="short">fol</term>
+ <term name="issue" form="short">sz</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>o</single>
+ <multiple>o</multiple>
+ </term>
+ <term name="paragraph" form="short">bek</term>
+ <term name="part" form="short">rész</term>
+ <term name="section" form="short">szak</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>vsz</single>
+ <multiple>vsz</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>szerkesztő</single>
+ <multiple>szerkesztő</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>fordító</single>
+ <multiple>fordító</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>szerk</single>
+ <multiple>szerk</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>ford</single>
+ <multiple>ford</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">szerkesztette</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">fordította</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">címzett</term>
+ <term name="interviewer" form="verb">interjúkészítő</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">szerk</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">ford</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">január</term>
+ <term name="month-02">február</term>
+ <term name="month-03">március</term>
+ <term name="month-04">április</term>
+ <term name="month-05">május</term>
+ <term name="month-06">június</term>
+ <term name="month-07">július</term>
+ <term name="month-08">augusztus</term>
+ <term name="month-09">szeptember</term>
+ <term name="month-10">október</term>
+ <term name="month-11">november</term>
+ <term name="month-12">december</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">jan</term>
+ <term name="month-02" form="short">febr</term>
+ <term name="month-03" form="short">márc</term>
+ <term name="month-04" form="short">ápr</term>
+ <term name="month-05" form="short">máj</term>
+ <term name="month-06" form="short">jún</term>
+ <term name="month-07" form="short">júl</term>
+ <term name="month-08" form="short">aug</term>
+ <term name="month-09" form="short">szept</term>
+ <term name="month-10" form="short">okt</term>
+ <term name="month-11" form="short">nov</term>
+ <term name="month-12" form="short">dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-is-IS.xml b/chrome/content/zotero/locale/csl/locales-is-IS.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="is">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accessed</term>
- <term name="retrieved">retrieved</term>
- <term name="from">from</term>
- <term name="forthcoming">forthcoming</term>
- <term name="references">References</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">nd</term>
- <term name="and">and</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>line</single>
- <multiple>line</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>page</single>
- <multiple>pages</multiple>
- </term>
- <term name="paragraph">
- <single>paragraph</single>
- <multiple>paragraph</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editors</multiple>
- </term>
- <term name="translator">
- <single>translator</single>
- <multiple>translators</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>tran</single>
- <multiple>trans</multiple>
- </term>
- <term name="editor" form="verb">edited by</term>
- <term name="translator" form="verb">translated by</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">January</term>
- <term name="month-02">February</term>
- <term name="month-03">March</term>
- <term name="month-04">April</term>
- <term name="month-05">May</term>
- <term name="month-06">June</term>
- <term name="month-07">July</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">October</term>
- <term name="month-11">November</term>
- <term name="month-12">December</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Oct</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="is">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accessed</term>
+ <term name="retrieved">retrieved</term>
+ <term name="from">from</term>
+ <term name="forthcoming">forthcoming</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">nd</term>
+ <term name="and">and</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>line</single>
+ <multiple>line</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraph</single>
+ <multiple>paragraph</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">no</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>translator</single>
+ <multiple>translators</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tran</single>
+ <multiple>trans</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">edited by</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">translated by</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">January</term>
+ <term name="month-02">February</term>
+ <term name="month-03">March</term>
+ <term name="month-04">April</term>
+ <term name="month-05">May</term>
+ <term name="month-06">June</term>
+ <term name="month-07">July</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">October</term>
+ <term name="month-11">November</term>
+ <term name="month-12">December</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Oct</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-it-IT.xml b/chrome/content/zotero/locale/csl/locales-it-IT.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="it">
- <term name="at">a</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">consultato</term>
- <term name="retrieved">recuperato</term>
- <term name="from">da</term>
- <term name="forthcoming">futuro</term>
- <term name="references">Citazioni bibliografiche</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">S.d.</term>
- <term name="and">e</term>
- <term name="et-al">et al.</term>
- <term name="interview">intervista</term>
- <term name="letter">lettera</term>
- <term name="anonymous">anonimo</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">e altri</term>
- <term name="in press">in stampa</term>
- <term name="online">in linea</term>
- <term name="cited">citato</term>
- <term name="internet">internet</term>
- <term name="presented at">presentato al</term>
- <term name="anthropology">antropologia</term>
- <term name="astronomy">astronomia</term>
- <term name="biology">biologia</term>
- <term name="botany">botanica</term>
- <term name="chemistry">chimica</term>
- <term name="engineering">ingegneria</term>
- <term name="generic-base">generica</term>
- <term name="geography">geografia</term>
- <term name="geology">geologia</term>
- <term name="history">storia</term>
- <term name="humanities">discipline umanistiche</term>
- <term name="literature">letteratura</term>
- <term name="math">matematica</term>
- <term name="medicine">medicina</term>
- <term name="philosophy">filosofia</term>
- <term name="physics">fisica</term>
- <term name="psychology">psicologia</term>
- <term name="sociology">sociologia</term>
- <term name="science">scienze</term>
- <term name="political_science">scienze politiche</term>
- <term name="social_science">sociologia</term>
- <term name="theology">teologia</term>
- <term name="zoology">zoologia</term>
- <term name="book">
- <single>libro</single>
- <multiple>libri</multiple>
- </term>
- <term name="chapter">
- <single>capitolo</single>
- <multiple>capitoli</multiple>
- </term>
- <term name="column">
- <single>colonna</single>
- <multiple>colonne</multiple>
- </term>
- <term name="figure">
- <single>figura</single>
- <multiple>figure</multiple>
- </term>
- <term name="folio">
- <single>foglio</single>
- <multiple>fogli</multiple>
- </term>
- <term name="issue">
- <single>numero</single>
- <multiple>numeri</multiple>
- </term>
- <term name="line">
- <single>riga</single>
- <multiple>righe</multiple>
- </term>
- <term name="note">
- <single>nota</single>
- <multiple>note</multiple>
- </term>
- <term name="opus">
- <single>opera</single>
- <multiple>opere</multiple>
- </term>
- <term name="page">
- <single>pagina</single>
- <multiple>pagine</multiple>
- </term>
- <term name="paragraph">
- <single>capoverso</single>
- <multiple>capoversi</multiple>
- </term>
- <term name="part">
- <single>parte</single>
- <multiple>parti</multiple>
- </term>
- <term name="section">
- <single>paragrafo</single>
- <multiple>paragrafi</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumi</multiple>
- </term>
- <term name="edition">
- <single>edizione</single>
- <multiple>edizioni</multiple>
- </term>
- <term name="verse">
- <single>verso</single>
- <multiple>versi</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">lib</term>
- <term name="chapter" form="short">cap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">fgl</term>
- <term name="issue" form="short">n°</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>pag</single>
- <multiple>pagg</multiple>
- </term>
- <term name="paragraph" form="short">cpv</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">par</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vol</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>curatore</single>
- <multiple>curatori</multiple>
- </term>
- <term name="translator">
- <single>traduttore</single>
- <multiple>traduttori</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>cur</single>
- <multiple>cur</multiple>
- </term>
- <term name="translator" form="short">
- <single>trad</single>
- <multiple>trad</multiple>
- </term>
- <term name="editor" form="verb">a cura di</term>
- <term name="translator" form="verb">tradotto da</term>
- <term name="recipient" form="verb">a</term>
- <term name="interviewer" form="verb">intervista di</term>
- <term name="editor" form="verb-short">cur. da</term>
- <term name="translator" form="verb-short">trad. da</term>
- <term name="month-01">Gennaio</term>
- <term name="month-02">Febbraio</term>
- <term name="month-03">Marzo</term>
- <term name="month-04">Aprile</term>
- <term name="month-05">Maggio</term>
- <term name="month-06">Giugno</term>
- <term name="month-07">Luglio</term>
- <term name="month-08">Agosto</term>
- <term name="month-09">Settembre</term>
- <term name="month-10">Ottobre</term>
- <term name="month-11">Novembre</term>
- <term name="month-12">Dicembre</term>
- <term name="month-01" form="short">Gen</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">Mag</term>
- <term name="month-06" form="short">Giu</term>
- <term name="month-07" form="short">Lug</term>
- <term name="month-08" form="short">Ago</term>
- <term name="month-09" form="short">Set</term>
- <term name="month-10" form="short">Ott</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dic</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="it">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">a</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">consultato</term>
+ <term name="retrieved">recuperato</term>
+ <term name="from">da</term>
+ <term name="forthcoming">futuro</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">S.d.</term>
+ <term name="and">e</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">intervista</term>
+ <term name="letter">lettera</term>
+ <term name="anonymous">anonimo</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">e altri</term>
+ <term name="in press">in stampa</term>
+ <term name="online">in linea</term>
+ <term name="cited">citato</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presentato al</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropologia</term>
+ <term name="astronomy">astronomia</term>
+ <term name="biology">biologia</term>
+ <term name="botany">botanica</term>
+ <term name="chemistry">chimica</term>
+ <term name="engineering">ingegneria</term>
+ <term name="generic-base">generica</term>
+ <term name="geography">geografia</term>
+ <term name="geology">geologia</term>
+ <term name="history">storia</term>
+ <term name="humanities">discipline umanistiche</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">letteratura</term>
+ <term name="math">matematica</term>
+ <term name="medicine">medicina</term>
+ <term name="philosophy">filosofia</term>
+ <term name="physics">fisica</term>
+ <term name="psychology">psicologia</term>
+ <term name="sociology">sociologia</term>
+ <term name="science">scienze</term>
+ <term name="political_science">scienze politiche</term>
+ <term name="social_science">sociologia</term>
+ <term name="theology">teologia</term>
+ <term name="zoology">zoologia</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>libro</single>
+ <multiple>libri</multiple>
+ </term>
+ <term name="chapter">
+ <single>capitolo</single>
+ <multiple>capitoli</multiple>
+ </term>
+ <term name="column">
+ <single>colonna</single>
+ <multiple>colonne</multiple>
+ </term>
+ <term name="figure">
+ <single>figura</single>
+ <multiple>figure</multiple>
+ </term>
+ <term name="folio">
+ <single>foglio</single>
+ <multiple>fogli</multiple>
+ </term>
+ <term name="issue">
+ <single>numero</single>
+ <multiple>numeri</multiple>
+ </term>
+ <term name="line">
+ <single>riga</single>
+ <multiple>righe</multiple>
+ </term>
+ <term name="note">
+ <single>nota</single>
+ <multiple>note</multiple>
+ </term>
+ <term name="opus">
+ <single>opera</single>
+ <multiple>opere</multiple>
+ </term>
+ <term name="page">
+ <single>pagina</single>
+ <multiple>pagine</multiple>
+ </term>
+ <term name="paragraph">
+ <single>capoverso</single>
+ <multiple>capoversi</multiple>
+ </term>
+ <term name="part">
+ <single>parte</single>
+ <multiple>parti</multiple>
+ </term>
+ <term name="section">
+ <single>paragrafo</single>
+ <multiple>paragrafi</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumi</multiple>
+ </term>
+ <term name="edition">
+ <single>edizione</single>
+ <multiple>edizioni</multiple>
+ </term>
+ <term name="verse">
+ <single>verso</single>
+ <multiple>versi</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">lib</term>
+ <term name="chapter" form="short">cap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">fgl</term>
+ <term name="issue" form="short">n°</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>pag</single>
+ <multiple>pagg</multiple>
+ </term>
+ <term name="paragraph" form="short">cpv</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">par</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vol</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>curatore</single>
+ <multiple>curatori</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>traduttore</single>
+ <multiple>traduttori</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>cur</single>
+ <multiple>cur</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>trad</single>
+ <multiple>trad</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">a cura di</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">tradotto da</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">a</term>
+ <term name="interviewer" form="verb">intervista di</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">cur. da</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trad. da</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Gennaio</term>
+ <term name="month-02">Febbraio</term>
+ <term name="month-03">Marzo</term>
+ <term name="month-04">Aprile</term>
+ <term name="month-05">Maggio</term>
+ <term name="month-06">Giugno</term>
+ <term name="month-07">Luglio</term>
+ <term name="month-08">Agosto</term>
+ <term name="month-09">Settembre</term>
+ <term name="month-10">Ottobre</term>
+ <term name="month-11">Novembre</term>
+ <term name="month-12">Dicembre</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Gen</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">Mag</term>
+ <term name="month-06" form="short">Giu</term>
+ <term name="month-07" form="short">Lug</term>
+ <term name="month-08" form="short">Ago</term>
+ <term name="month-09" form="short">Set</term>
+ <term name="month-10" form="short">Ott</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dic</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-ja-JP.xml b/chrome/content/zotero/locale/csl/locales-ja-JP.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="ja">
- <term name="at">at</term>
- <term name="in"> </term>
- <term name="ibid">前掲</term>
- <term name="accessed">アクセス</term>
- <term name="retrieved">読み込み</term>
- <term name="from">から</term>
- <term name="forthcoming">近刊</term>
- <term name="references">参考文献</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">日付なし</term>
- <term name="and">と</term>
- <term name="et-al">他</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>行</single>
- <multiple>行</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>ページ</single>
- <multiple>ページ</multiple>
- </term>
- <term name="paragraph">
- <single>段落</single>
- <multiple>段落</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">号</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>p</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>編集者</single>
- <multiple>編集者</multiple>
- </term>
- <term name="translator">
- <single>翻訳者</single>
- <multiple>翻訳者</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>編集者</single>
- <multiple>編集者</multiple>
- </term>
- <term name="translator" form="short">
- <single>翻訳者</single>
- <multiple>翻訳者</multiple>
- </term>
- <term name="editor" form="verb">編集者:</term>
- <term name="translator" form="verb">翻訳者:</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">1月</term>
- <term name="month-02">2月</term>
- <term name="month-03">3月</term>
- <term name="month-04">4月</term>
- <term name="month-05">5月</term>
- <term name="month-06">6月</term>
- <term name="month-07">7月</term>
- <term name="month-08">8月</term>
- <term name="month-09">9月</term>
- <term name="month-10">10月</term>
- <term name="month-11">11月</term>
- <term name="month-12">12月</term>
- <term name="month-01" form="short">1月</term>
- <term name="month-02" form="short">2月</term>
- <term name="month-03" form="short">3月</term>
- <term name="month-04" form="short">4月</term>
- <term name="month-05" form="short">5月</term>
- <term name="month-06" form="short">6月</term>
- <term name="month-07" form="short">7月</term>
- <term name="month-08" form="short">8月</term>
- <term name="month-09" form="short">9月</term>
- <term name="month-10" form="short">10月</term>
- <term name="month-11" form="short">11月</term>
- <term name="month-12" form="short">12月</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="ja">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in"/>
+ <term name="ibid">前掲</term>
+ <term name="accessed">アクセス</term>
+ <term name="retrieved">読み込み</term>
+ <term name="from">から</term>
+ <term name="forthcoming">近刊</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">日付なし</term>
+ <term name="and">と</term>
+ <term name="et-al">他</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>行</single>
+ <multiple>行</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>ページ</single>
+ <multiple>ページ</multiple>
+ </term>
+ <term name="paragraph">
+ <single>段落</single>
+ <multiple>段落</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">号</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>p</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>編集者</single>
+ <multiple>編集者</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>翻訳者</single>
+ <multiple>翻訳者</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>編集者</single>
+ <multiple>編集者</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>翻訳者</single>
+ <multiple>翻訳者</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">編集者:</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">翻訳者:</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">1月</term>
+ <term name="month-02">2月</term>
+ <term name="month-03">3月</term>
+ <term name="month-04">4月</term>
+ <term name="month-05">5月</term>
+ <term name="month-06">6月</term>
+ <term name="month-07">7月</term>
+ <term name="month-08">8月</term>
+ <term name="month-09">9月</term>
+ <term name="month-10">10月</term>
+ <term name="month-11">11月</term>
+ <term name="month-12">12月</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">1月</term>
+ <term name="month-02" form="short">2月</term>
+ <term name="month-03" form="short">3月</term>
+ <term name="month-04" form="short">4月</term>
+ <term name="month-05" form="short">5月</term>
+ <term name="month-06" form="short">6月</term>
+ <term name="month-07" form="short">7月</term>
+ <term name="month-08" form="short">8月</term>
+ <term name="month-09" form="short">9月</term>
+ <term name="month-10" form="short">10月</term>
+ <term name="month-11" form="short">11月</term>
+ <term name="month-12" form="short">12月</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-ko-KR.xml b/chrome/content/zotero/locale/csl/locales-ko-KR.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="ko">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">접근된</term>
- <term name="retrieved">retrieved</term>
- <term name="from">(으)로부터</term>
- <term name="forthcoming">근간</term>
- <term name="references">참고 문헌</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">일자 없음</term>
- <term name="and">와/과</term>
- <term name="et-al">기타</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>행</single>
- <multiple>행</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>페이지</single>
- <multiple>페이지</multiple>
- </term>
- <term name="paragraph">
- <single>단락</single>
- <multiple>단락</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">호</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>편집자</single>
- <multiple>편집자</multiple>
- </term>
- <term name="translator">
- <single>번역자</single>
- <multiple>번역자</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>편집자</single>
- <multiple>편집자</multiple>
- </term>
- <term name="translator" form="short">
- <single>번역자</single>
- <multiple>번역자</multiple>
- </term>
- <term name="editor" form="verb">편집자:</term>
- <term name="translator" form="verb">번역자:</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">1월</term>
- <term name="month-02">2월</term>
- <term name="month-03">3월</term>
- <term name="month-04">4월</term>
- <term name="month-05">5월</term>
- <term name="month-06">6월</term>
- <term name="month-07">7월</term>
- <term name="month-08">8월</term>
- <term name="month-09">9월</term>
- <term name="month-10">10월</term>
- <term name="month-11">11월</term>
- <term name="month-12">12월</term>
- <term name="month-01" form="short">1</term>
- <term name="month-02" form="short">2</term>
- <term name="month-03" form="short">3</term>
- <term name="month-04" form="short">4</term>
- <term name="month-05" form="short">5</term>
- <term name="month-06" form="short">6</term>
- <term name="month-07" form="short">7</term>
- <term name="month-08" form="short">8</term>
- <term name="month-09" form="short">9</term>
- <term name="month-10" form="short">10</term>
- <term name="month-11" form="short">11</term>
- <term name="month-12" form="short">12</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="ko">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">접근된</term>
+ <term name="retrieved">retrieved</term>
+ <term name="from">(으)로부터</term>
+ <term name="forthcoming">근간</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">일자 없음</term>
+ <term name="and">와/과</term>
+ <term name="et-al">기타</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>행</single>
+ <multiple>행</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>페이지</single>
+ <multiple>페이지</multiple>
+ </term>
+ <term name="paragraph">
+ <single>단락</single>
+ <multiple>단락</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">호</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>편집자</single>
+ <multiple>편집자</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>번역자</single>
+ <multiple>번역자</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>편집자</single>
+ <multiple>편집자</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>번역자</single>
+ <multiple>번역자</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">편집자:</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">번역자:</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">1월</term>
+ <term name="month-02">2월</term>
+ <term name="month-03">3월</term>
+ <term name="month-04">4월</term>
+ <term name="month-05">5월</term>
+ <term name="month-06">6월</term>
+ <term name="month-07">7월</term>
+ <term name="month-08">8월</term>
+ <term name="month-09">9월</term>
+ <term name="month-10">10월</term>
+ <term name="month-11">11월</term>
+ <term name="month-12">12월</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">1</term>
+ <term name="month-02" form="short">2</term>
+ <term name="month-03" form="short">3</term>
+ <term name="month-04" form="short">4</term>
+ <term name="month-05" form="short">5</term>
+ <term name="month-06" form="short">6</term>
+ <term name="month-07" form="short">7</term>
+ <term name="month-08" form="short">8</term>
+ <term name="month-09" form="short">9</term>
+ <term name="month-10" form="short">10</term>
+ <term name="month-11" form="short">11</term>
+ <term name="month-12" form="short">12</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-mn-MN.xml b/chrome/content/zotero/locale/csl/locales-mn-MN.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="mn">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accessed</term>
- <term name="retrieved">retrieved</term>
- <term name="from">from</term>
- <term name="forthcoming">forthcoming</term>
- <term name="references">references</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">n.d.</term>
- <term name="and">and</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>line</single>
- <multiple>lines</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>page</single>
- <multiple>pages</multiple>
- </term>
- <term name="paragraph">
- <single>paragraph</single>
- <multiple>paragraph</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editors</multiple>
- </term>
- <term name="translator">
- <single>translator</single>
- <multiple>translators</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>tran</single>
- <multiple>trans</multiple>
- </term>
- <term name="editor" form="verb">edited by</term>
- <term name="translator" form="verb">translated by</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">January</term>
- <term name="month-02">February</term>
- <term name="month-03">March</term>
- <term name="month-04">April</term>
- <term name="month-05">May</term>
- <term name="month-06">June</term>
- <term name="month-07">July</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">October</term>
- <term name="month-11">November</term>
- <term name="month-12">December</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Oct</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="mn">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accessed</term>
+ <term name="retrieved">retrieved</term>
+ <term name="from">from</term>
+ <term name="forthcoming">forthcoming</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">n.d.</term>
+ <term name="and">and</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>line</single>
+ <multiple>lines</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraph</single>
+ <multiple>paragraph</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">no</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>translator</single>
+ <multiple>translators</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tran</single>
+ <multiple>trans</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">edited by</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">translated by</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">January</term>
+ <term name="month-02">February</term>
+ <term name="month-03">March</term>
+ <term name="month-04">April</term>
+ <term name="month-05">May</term>
+ <term name="month-06">June</term>
+ <term name="month-07">July</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">October</term>
+ <term name="month-11">November</term>
+ <term name="month-12">December</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Oct</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-nb-NO.xml b/chrome/content/zotero/locale/csl/locales-nb-NO.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="nb">
- <term name="at">på</term>
- <term name="in">i</term>
- <term name="ibid">ibid</term>
- <term name="accessed">aksessert</term>
- <term name="retrieved">hentet</term>
- <term name="from">fra</term>
- <term name="forthcoming">kommende</term>
- <term name="references">referanser</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">udatert</term>
- <term name="and">og</term>
- <term name="et-al">mfl</term>
- <term name="interview">intervju</term>
- <term name="letter">brev</term>
- <term name="anonymous">anonym</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">med flere</term>
- <term name="in press">i trykk</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">Internett</term>
- <term name="presented at">presentert på</term>
- <term name="anthropology">antropologi</term>
- <term name="astronomy">astronomi</term>
- <term name="biology">biologi</term>
- <term name="botany">botanikk</term>
- <term name="chemistry">kjemi</term>
- <term name="engineering">ingeniørvitenskap</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geografi</term>
- <term name="geology">geologi</term>
- <term name="history">historie</term>
- <term name="humanities">humanistiske fag</term>
- <term name="literature">litteratur</term>
- <term name="math">matte</term>
- <term name="medicine">medisin</term>
- <term name="philosophy">filosofi</term>
- <term name="physics">fysikk</term>
- <term name="psychology">fysiologi</term>
- <term name="sociology">sosiologi</term>
- <term name="science">naturvitenskap</term>
- <term name="political_science">political science</term>
- <term name="social_science">sosialvitenskap</term>
- <term name="theology">teologi</term>
- <term name="zoology">zoologi</term>
- <term name="book">
- <single>bok</single>
- <multiple>bøker</multiple>
- </term>
- <term name="chapter">
- <single>kapittel</single>
- <multiple>kapitler</multiple>
- </term>
- <term name="column">
- <single>kolonne</single>
- <multiple>kolenner</multiple>
- </term>
- <term name="figure">
- <single>figur</single>
- <multiple>figurer</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folioer</multiple>
- </term>
- <term name="issue">
- <single>nummer</single>
- <multiple>numre</multiple>
- </term>
- <term name="line">
- <single>linje</single>
- <multiple>linjer</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>noter</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opus</multiple>
- </term>
- <term name="page">
- <single>side</single>
- <multiple>sider</multiple>
- </term>
- <term name="paragraph">
- <single>avsnitt</single>
- <multiple>avsnitt</multiple>
- </term>
- <term name="part">
- <single>del</single>
- <multiple>deler</multiple>
- </term>
- <term name="section">
- <single>seksjon</single>
- <multiple>seksjoner</multiple>
- </term>
- <term name="volume">
- <single>bind</single>
- <multiple>bind</multiple>
- </term>
- <term name="edition">
- <single>utgave</single>
- <multiple>utgaver</multiple>
- </term>
- <term name="verse">
- <single>vers</single>
- <multiple>vers</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">b</term>
- <term name="chapter" form="short">kap</term>
- <term name="column" form="short">kol</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">fol</term>
- <term name="issue" form="short">nr</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>s</single>
- <multiple>s</multiple>
- </term>
- <term name="paragraph" form="short">avsn</term>
- <term name="part" form="short">d</term>
- <term name="section" form="short">sek</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>v</multiple>
- </term>
- <term name="volume" form="short">
- <single>bd</single>
- <multiple>bd</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">utg</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>redaktør</single>
- <multiple>redaktører</multiple>
- </term>
- <term name="translator">
- <single>oversetter</single>
- <multiple>oversettere</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>red</single>
- <multiple>red</multiple>
- </term>
- <term name="translator" form="short">
- <single>overs</single>
- <multiple>overs</multiple>
- </term>
- <term name="editor" form="verb">redigert av</term>
- <term name="translator" form="verb">oversatt av</term>
- <term name="recipient" form="verb">mottatt av</term>
- <term name="interviewer" form="verb">intervjuet av</term>
- <term name="editor" form="verb-short">utg</term>
- <term name="translator" form="verb-short">overs</term>
- <term name="month-01">Januar</term>
- <term name="month-02">Februar</term>
- <term name="month-03">Mars</term>
- <term name="month-04">April</term>
- <term name="month-05">Mai</term>
- <term name="month-06">Juni</term>
- <term name="month-07">Juli</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">Oktober</term>
- <term name="month-11">November</term>
- <term name="month-12">Desember</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">Mai</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Okt</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Des</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="nb">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">på</term>
+ <term name="in">i</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">aksessert</term>
+ <term name="retrieved">hentet</term>
+ <term name="from">fra</term>
+ <term name="forthcoming">kommende</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">udatert</term>
+ <term name="and">og</term>
+ <term name="et-al">mfl</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">intervju</term>
+ <term name="letter">brev</term>
+ <term name="anonymous">anonym</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">med flere</term>
+ <term name="in press">i trykk</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">Internett</term>
+ <term name="presented at">presentert på</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropologi</term>
+ <term name="astronomy">astronomi</term>
+ <term name="biology">biologi</term>
+ <term name="botany">botanikk</term>
+ <term name="chemistry">kjemi</term>
+ <term name="engineering">ingeniørvitenskap</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geografi</term>
+ <term name="geology">geologi</term>
+ <term name="history">historie</term>
+ <term name="humanities">humanistiske fag</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">litteratur</term>
+ <term name="math">matte</term>
+ <term name="medicine">medisin</term>
+ <term name="philosophy">filosofi</term>
+ <term name="physics">fysikk</term>
+ <term name="psychology">fysiologi</term>
+ <term name="sociology">sosiologi</term>
+ <term name="science">naturvitenskap</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">sosialvitenskap</term>
+ <term name="theology">teologi</term>
+ <term name="zoology">zoologi</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>bok</single>
+ <multiple>bøker</multiple>
+ </term>
+ <term name="chapter">
+ <single>kapittel</single>
+ <multiple>kapitler</multiple>
+ </term>
+ <term name="column">
+ <single>kolonne</single>
+ <multiple>kolenner</multiple>
+ </term>
+ <term name="figure">
+ <single>figur</single>
+ <multiple>figurer</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folioer</multiple>
+ </term>
+ <term name="issue">
+ <single>nummer</single>
+ <multiple>numre</multiple>
+ </term>
+ <term name="line">
+ <single>linje</single>
+ <multiple>linjer</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>noter</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opus</multiple>
+ </term>
+ <term name="page">
+ <single>side</single>
+ <multiple>sider</multiple>
+ </term>
+ <term name="paragraph">
+ <single>avsnitt</single>
+ <multiple>avsnitt</multiple>
+ </term>
+ <term name="part">
+ <single>del</single>
+ <multiple>deler</multiple>
+ </term>
+ <term name="section">
+ <single>seksjon</single>
+ <multiple>seksjoner</multiple>
+ </term>
+ <term name="volume">
+ <single>bind</single>
+ <multiple>bind</multiple>
+ </term>
+ <term name="edition">
+ <single>utgave</single>
+ <multiple>utgaver</multiple>
+ </term>
+ <term name="verse">
+ <single>vers</single>
+ <multiple>vers</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">b</term>
+ <term name="chapter" form="short">kap</term>
+ <term name="column" form="short">kol</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">fol</term>
+ <term name="issue" form="short">nr</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>s</single>
+ <multiple>s</multiple>
+ </term>
+ <term name="paragraph" form="short">avsn</term>
+ <term name="part" form="short">d</term>
+ <term name="section" form="short">sek</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>v</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>bd</single>
+ <multiple>bd</multiple>
+ </term>
+ <term name="edition" form="short">utg</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>redaktør</single>
+ <multiple>redaktører</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>oversetter</single>
+ <multiple>oversettere</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>red</single>
+ <multiple>red</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>overs</single>
+ <multiple>overs</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">redigert av</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">oversatt av</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">mottatt av</term>
+ <term name="interviewer" form="verb">intervjuet av</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">utg</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">overs</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Januar</term>
+ <term name="month-02">Februar</term>
+ <term name="month-03">Mars</term>
+ <term name="month-04">April</term>
+ <term name="month-05">Mai</term>
+ <term name="month-06">Juni</term>
+ <term name="month-07">Juli</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">Oktober</term>
+ <term name="month-11">November</term>
+ <term name="month-12">Desember</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">Mai</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Okt</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Des</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-nl-NL.xml b/chrome/content/zotero/locale/csl/locales-nl-NL.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="nl">
- <term name="at">bij</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">bezocht</term>
- <term name="retrieved">verkregen</term>
- <term name="from">van</term>
- <term name="forthcoming">in voorbereiding</term>
- <term name="references">referenties</term>
- <term name="reference item">
- <single>referentie</single>
- <multiple>referenties</multiple>
- </term>
- <term name="no date">geen datum</term>
- <term name="and">en</term>
- <term name="et-al">e.a.</term>
- <term name="interview">interview</term>
- <term name="letter">brief</term>
- <term name="anonymous">anoniem</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">en anderen</term>
- <term name="in press">in druk</term>
- <term name="online">online</term>
- <term name="cited">geciteerd</term>
- <term name="internet">internet</term>
- <term name="presented at">gepresenteerd bij</term>
- <term name="anthropology">anthropologie</term>
- <term name="astronomy">astronomie</term>
- <term name="biology">biologie</term>
- <term name="botany">botanie</term>
- <term name="chemistry">scheikunde</term>
- <term name="engineering">techniek</term>
- <term name="generic-base">generiek</term>
- <term name="geography">geografie</term>
- <term name="geology">geologie</term>
- <term name="history">geschiedenis</term>
- <term name="humanities">geesteswetenschappen</term>
- <term name="literature">literatuur</term>
- <term name="math">wiskunde</term>
- <term name="medicine">medicijnen</term>
- <term name="philosophy">filosofie</term>
- <term name="physics">natuurkunde</term>
- <term name="psychology">psychologie</term>
- <term name="sociology">sociologie</term>
- <term name="science">wetenschap</term>
- <term name="political_science">politieke wetenschappen</term>
- <term name="social_science">sociale wetenschappen</term>
- <term name="theology">theologie</term>
- <term name="zoology">zoologie</term>
- <term name="book">
- <single>boek</single>
- <multiple>boeken</multiple>
- </term>
- <term name="chapter">
- <single>hoofdstuk</single>
- <multiple>hoofdstukken</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figuur</single>
- <multiple>figuren</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folio's</multiple>
- </term>
- <term name="issue">
- <single>nummer</single>
- <multiple>nummers</multiple>
- </term>
- <term name="line">
- <single>regel</single>
- <multiple>regels</multiple>
- </term>
- <term name="note">
- <single>aantekening</single>
- <multiple>aantekeningen</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>pagina</single>
- <multiple>pagina's</multiple>
- </term>
- <term name="paragraph">
- <single>paragraaf</single>
- <multiple>paragrafen</multiple>
- </term>
- <term name="part">
- <single>deel</single>
- <multiple>delen</multiple>
- </term>
- <term name="section">
- <single>sectie</single>
- <multiple>secties</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>editie</single>
- <multiple>edities</multiple>
- </term>
- <term name="verse">
- <single>vers</single>
- <multiple>versen</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>sub verbis</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">hfdst</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">nr</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">par</term>
- <term name="part" form="short">deel</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>redacteur</single>
- <multiple>redacteuren</multiple>
- </term>
- <term name="translator">
- <single>vertaler</single>
- <multiple>vertalers</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>red</single>
- <multiple>red</multiple>
- </term>
- <term name="translator" form="short">
- <single>vert</single>
- <multiple>vert</multiple>
- </term>
- <term name="editor" form="verb">bewerkt door</term>
- <term name="translator" form="verb">vertaald door</term>
- <term name="recipient" form="verb">ontvangen door</term>
- <term name="interviewer" form="verb">geinterviewd door</term>
- <term name="editor" form="verb-short">red</term>
- <term name="translator" form="verb-short">vert</term>
- <term name="month-01">januari</term>
- <term name="month-02">februari</term>
- <term name="month-03">maart</term>
- <term name="month-04">april</term>
- <term name="month-05">mei</term>
- <term name="month-06">juni</term>
- <term name="month-07">juli</term>
- <term name="month-08">augustus</term>
- <term name="month-09">september</term>
- <term name="month-10">oktober</term>
- <term name="month-11">november</term>
- <term name="month-12">december</term>
- <term name="month-01" form="short">jan</term>
- <term name="month-02" form="short">feb</term>
- <term name="month-03" form="short">mrt</term>
- <term name="month-04" form="short">apr</term>
- <term name="month-05" form="short">mei</term>
- <term name="month-06" form="short">jun</term>
- <term name="month-07" form="short">jul</term>
- <term name="month-08" form="short">aug</term>
- <term name="month-09" form="short">sep</term>
- <term name="month-10" form="short">okt</term>
- <term name="month-11" form="short">nov</term>
- <term name="month-12" form="short">dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="nl">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">bij</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">bezocht</term>
+ <term name="retrieved">verkregen</term>
+ <term name="from">van</term>
+ <term name="forthcoming">in voorbereiding</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">geen datum</term>
+ <term name="and">en</term>
+ <term name="et-al">e.a.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">brief</term>
+ <term name="anonymous">anoniem</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">en anderen</term>
+ <term name="in press">in druk</term>
+ <term name="online">online</term>
+ <term name="cited">geciteerd</term>
+ <term name="internet">internet</term>
+ <term name="presented at">gepresenteerd bij</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropologie</term>
+ <term name="astronomy">astronomie</term>
+ <term name="biology">biologie</term>
+ <term name="botany">botanie</term>
+ <term name="chemistry">scheikunde</term>
+ <term name="engineering">techniek</term>
+ <term name="generic-base">generiek</term>
+ <term name="geography">geografie</term>
+ <term name="geology">geologie</term>
+ <term name="history">geschiedenis</term>
+ <term name="humanities">geesteswetenschappen</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literatuur</term>
+ <term name="math">wiskunde</term>
+ <term name="medicine">medicijnen</term>
+ <term name="philosophy">filosofie</term>
+ <term name="physics">natuurkunde</term>
+ <term name="psychology">psychologie</term>
+ <term name="sociology">sociologie</term>
+ <term name="science">wetenschap</term>
+ <term name="political_science">politieke wetenschappen</term>
+ <term name="social_science">sociale wetenschappen</term>
+ <term name="theology">theologie</term>
+ <term name="zoology">zoologie</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>boek</single>
+ <multiple>boeken</multiple>
+ </term>
+ <term name="chapter">
+ <single>hoofdstuk</single>
+ <multiple>hoofdstukken</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figuur</single>
+ <multiple>figuren</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folio's</multiple>
+ </term>
+ <term name="issue">
+ <single>nummer</single>
+ <multiple>nummers</multiple>
+ </term>
+ <term name="line">
+ <single>regel</single>
+ <multiple>regels</multiple>
+ </term>
+ <term name="note">
+ <single>aantekening</single>
+ <multiple>aantekeningen</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>pagina</single>
+ <multiple>pagina's</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraaf</single>
+ <multiple>paragrafen</multiple>
+ </term>
+ <term name="part">
+ <single>deel</single>
+ <multiple>delen</multiple>
+ </term>
+ <term name="section">
+ <single>sectie</single>
+ <multiple>secties</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>editie</single>
+ <multiple>edities</multiple>
+ </term>
+ <term name="verse">
+ <single>vers</single>
+ <multiple>versen</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">hfdst</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">nr</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">par</term>
+ <term name="part" form="short">deel</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>redacteur</single>
+ <multiple>redacteuren</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>vertaler</single>
+ <multiple>vertalers</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>red</single>
+ <multiple>red</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>vert</single>
+ <multiple>vert</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">bewerkt door</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">vertaald door</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">ontvangen door</term>
+ <term name="interviewer" form="verb">geinterviewd door</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">red</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">vert</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">januari</term>
+ <term name="month-02">februari</term>
+ <term name="month-03">maart</term>
+ <term name="month-04">april</term>
+ <term name="month-05">mei</term>
+ <term name="month-06">juni</term>
+ <term name="month-07">juli</term>
+ <term name="month-08">augustus</term>
+ <term name="month-09">september</term>
+ <term name="month-10">oktober</term>
+ <term name="month-11">november</term>
+ <term name="month-12">december</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">jan</term>
+ <term name="month-02" form="short">feb</term>
+ <term name="month-03" form="short">mrt</term>
+ <term name="month-04" form="short">apr</term>
+ <term name="month-05" form="short">mei</term>
+ <term name="month-06" form="short">jun</term>
+ <term name="month-07" form="short">jul</term>
+ <term name="month-08" form="short">aug</term>
+ <term name="month-09" form="short">sep</term>
+ <term name="month-10" form="short">okt</term>
+ <term name="month-11" form="short">nov</term>
+ <term name="month-12" form="short">dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-pl-PL.xml b/chrome/content/zotero/locale/csl/locales-pl-PL.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="pl">
- <term name="at">at</term>
- <term name="in">w</term>
- <term name="ibid">ibid</term>
- <term name="accessed">udostępniono</term>
- <term name="retrieved">pobrano</term>
- <term name="from">z</term>
- <term name="forthcoming">w druku</term>
- <term name="references">Referencje</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">bez daty</term>
- <term name="and">i</term>
- <term name="et-al">et al.</term>
- <term name="interview">wywiad</term>
- <term name="letter">list</term>
- <term name="anonymous">anonim</term>
- <term name="anonymous" form="short">anonim</term>
- <term name="and others">i inni</term>
- <term name="in press">w druku</term>
- <term name="online">online</term>
- <term name="cited">cytowane</term>
- <term name="internet">internet</term>
- <term name="presented at">zaprezentowano</term>
- <term name="anthropology">antropologia</term>
- <term name="astronomy">astronomia</term>
- <term name="biology">biologia</term>
- <term name="botany">botanika</term>
- <term name="chemistry">chemia</term>
- <term name="engineering">inżynieria</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geografia</term>
- <term name="geology">geologia</term>
- <term name="history">historia</term>
- <term name="humanities">humanistyka</term>
- <term name="literature">literatura</term>
- <term name="math">matematyka</term>
- <term name="medicine">medycyna</term>
- <term name="philosophy">filozofia</term>
- <term name="physics">fizyka</term>
- <term name="psychology">psychologia</term>
- <term name="sociology">socjologia</term>
- <term name="science">nauki ścisłe</term>
- <term name="political_science">nauki polityczne</term>
- <term name="social_science">nauki społeczne</term>
- <term name="theology">teologia</term>
- <term name="zoology">zoologia</term>
- <term name="book">
- <single>książka</single>
- <multiple>książki</multiple>
- </term>
- <term name="chapter">
- <single>rozdział</single>
- <multiple>rozdziały</multiple>
- </term>
- <term name="column">
- <single>kolumna</single>
- <multiple>kolumny</multiple>
- </term>
- <term name="figure">
- <single>rycina</single>
- <multiple>ryciny</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>numer</single>
- <multiple>numery</multiple>
- </term>
- <term name="line">
- <single>wers</single>
- <multiple>wersy</multiple>
- </term>
- <term name="note">
- <single>notatka</single>
- <multiple>notatki</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>strona</single>
- <multiple>strony</multiple>
- </term>
- <term name="paragraph">
- <single>akapit</single>
- <multiple>akapity</multiple>
- </term>
- <term name="part">
- <single>część</single>
- <multiple>części</multiple>
- </term>
- <term name="section">
- <single>sekcja</single>
- <multiple>sekcja</multiple>
- </term>
- <term name="volume">
- <single>tom</single>
- <multiple>tomy</multiple>
- </term>
- <term name="edition">
- <single>wydanie</single>
- <multiple>wydania</multiple>
- </term>
- <term name="verse">
- <single>wers</single>
- <multiple>wersy</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">książka</term>
- <term name="chapter" form="short">rozdz</term>
- <term name="column" form="short">kolumna</term>
- <term name="figure" form="short">ryc</term>
- <term name="folio" form="short">folio</term>
- <term name="issue" form="short">nr</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>s</single>
- <multiple>s</multiple>
- </term>
- <term name="paragraph" form="short">akapit</term>
- <term name="part" form="short">część</term>
- <term name="section" form="short">sekcja</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>wers</single>
- <multiple>wersy</multiple>
- </term>
- <term name="volume" form="short">
- <single>t</single>
- <multiple>t</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">wyd</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>redaktor</single>
- <multiple>redaktorzy</multiple>
- </term>
- <term name="translator">
- <single>tłumacz</single>
- <multiple>tłumacze</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>red</single>
- <multiple>red</multiple>
- </term>
- <term name="translator" form="short">
- <single>tłum</single>
- <multiple>tłum</multiple>
- </term>
- <term name="editor" form="verb">zredagowane przez</term>
- <term name="translator" form="verb">przetłumaczone przez</term>
- <term name="recipient" form="verb">dla</term>
- <term name="interviewer" form="verb">przeprowadzony przez</term>
- <term name="editor" form="verb-short">red</term>
- <term name="translator" form="verb-short">tłum</term>
- <term name="month-01">styczeń</term>
- <term name="month-02">luty</term>
- <term name="month-03">marzec</term>
- <term name="month-04">kwiecień</term>
- <term name="month-05">maj</term>
- <term name="month-06">czerwiec</term>
- <term name="month-07">lipiec</term>
- <term name="month-08">sierpień</term>
- <term name="month-09">wrzesień</term>
- <term name="month-10">październik</term>
- <term name="month-11">listopad</term>
- <term name="month-12">grudzień</term>
- <term name="month-01" form="short">styczeń</term>
- <term name="month-02" form="short">luty</term>
- <term name="month-03" form="short">marzec</term>
- <term name="month-04" form="short">kwiecień</term>
- <term name="month-05" form="short">maj</term>
- <term name="month-06" form="short">czerwiec</term>
- <term name="month-07" form="short">lipiec</term>
- <term name="month-08" form="short">sierpień</term>
- <term name="month-09" form="short">wrzesień</term>
- <term name="month-10" form="short">październik</term>
- <term name="month-11" form="short">listopad</term>
- <term name="month-12" form="short">grudzień</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="pl">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">w</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">udostępniono</term>
+ <term name="retrieved">pobrano</term>
+ <term name="from">z</term>
+ <term name="forthcoming">w druku</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">bez daty</term>
+ <term name="and">i</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">wywiad</term>
+ <term name="letter">list</term>
+ <term name="anonymous">anonim</term>
+ <term name="anonymous" form="short">anonim</term>
+ <term name="and others">i inni</term>
+ <term name="in press">w druku</term>
+ <term name="online">online</term>
+ <term name="cited">cytowane</term>
+ <term name="internet">internet</term>
+ <term name="presented at">zaprezentowano</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropologia</term>
+ <term name="astronomy">astronomia</term>
+ <term name="biology">biologia</term>
+ <term name="botany">botanika</term>
+ <term name="chemistry">chemia</term>
+ <term name="engineering">inżynieria</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geografia</term>
+ <term name="geology">geologia</term>
+ <term name="history">historia</term>
+ <term name="humanities">humanistyka</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literatura</term>
+ <term name="math">matematyka</term>
+ <term name="medicine">medycyna</term>
+ <term name="philosophy">filozofia</term>
+ <term name="physics">fizyka</term>
+ <term name="psychology">psychologia</term>
+ <term name="sociology">socjologia</term>
+ <term name="science">nauki ścisłe</term>
+ <term name="political_science">nauki polityczne</term>
+ <term name="social_science">nauki społeczne</term>
+ <term name="theology">teologia</term>
+ <term name="zoology">zoologia</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>książka</single>
+ <multiple>książki</multiple>
+ </term>
+ <term name="chapter">
+ <single>rozdział</single>
+ <multiple>rozdziały</multiple>
+ </term>
+ <term name="column">
+ <single>kolumna</single>
+ <multiple>kolumny</multiple>
+ </term>
+ <term name="figure">
+ <single>rycina</single>
+ <multiple>ryciny</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>numer</single>
+ <multiple>numery</multiple>
+ </term>
+ <term name="line">
+ <single>wers</single>
+ <multiple>wersy</multiple>
+ </term>
+ <term name="note">
+ <single>notatka</single>
+ <multiple>notatki</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>strona</single>
+ <multiple>strony</multiple>
+ </term>
+ <term name="paragraph">
+ <single>akapit</single>
+ <multiple>akapity</multiple>
+ </term>
+ <term name="part">
+ <single>część</single>
+ <multiple>części</multiple>
+ </term>
+ <term name="section">
+ <single>sekcja</single>
+ <multiple>sekcja</multiple>
+ </term>
+ <term name="volume">
+ <single>tom</single>
+ <multiple>tomy</multiple>
+ </term>
+ <term name="edition">
+ <single>wydanie</single>
+ <multiple>wydania</multiple>
+ </term>
+ <term name="verse">
+ <single>wers</single>
+ <multiple>wersy</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">książka</term>
+ <term name="chapter" form="short">rozdz</term>
+ <term name="column" form="short">kolumna</term>
+ <term name="figure" form="short">ryc</term>
+ <term name="folio" form="short">folio</term>
+ <term name="issue" form="short">nr</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>s</single>
+ <multiple>s</multiple>
+ </term>
+ <term name="paragraph" form="short">akapit</term>
+ <term name="part" form="short">część</term>
+ <term name="section" form="short">sekcja</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>wers</single>
+ <multiple>wersy</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>t</single>
+ <multiple>t</multiple>
+ </term>
+ <term name="edition" form="short">wyd</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>redaktor</single>
+ <multiple>redaktorzy</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>tłumacz</single>
+ <multiple>tłumacze</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>red</single>
+ <multiple>red</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tłum</single>
+ <multiple>tłum</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">zredagowane przez</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">przetłumaczone przez</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">dla</term>
+ <term name="interviewer" form="verb">przeprowadzony przez</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">red</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">tłum</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">styczeń</term>
+ <term name="month-02">luty</term>
+ <term name="month-03">marzec</term>
+ <term name="month-04">kwiecień</term>
+ <term name="month-05">maj</term>
+ <term name="month-06">czerwiec</term>
+ <term name="month-07">lipiec</term>
+ <term name="month-08">sierpień</term>
+ <term name="month-09">wrzesień</term>
+ <term name="month-10">październik</term>
+ <term name="month-11">listopad</term>
+ <term name="month-12">grudzień</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">styczeń</term>
+ <term name="month-02" form="short">luty</term>
+ <term name="month-03" form="short">marzec</term>
+ <term name="month-04" form="short">kwiecień</term>
+ <term name="month-05" form="short">maj</term>
+ <term name="month-06" form="short">czerwiec</term>
+ <term name="month-07" form="short">lipiec</term>
+ <term name="month-08" form="short">sierpień</term>
+ <term name="month-09" form="short">wrzesień</term>
+ <term name="month-10" form="short">październik</term>
+ <term name="month-11" form="short">listopad</term>
+ <term name="month-12" form="short">grudzień</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-pt-BR.xml b/chrome/content/zotero/locale/csl/locales-pt-BR.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="pt">
- <term name="at">em</term>
- <term name="in">in</term>
- <term name="ibid">ibidem</term>
- <term name="accessed">acessado</term>
- <term name="retrieved">recuperado</term>
- <term name="from">de</term>
- <term name="forthcoming">a ser publicado</term>
- <term name="references">referências</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">[s.d.]</term>
- <term name="and">e</term>
- <term name="et-al">et al.</term>
- <term name="interview">entrevista</term>
- <term name="letter">carta</term>
- <term name="anonymous">anônimo</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">e outros</term>
- <term name="in press">no prelo</term>
- <term name="online">online</term>
- <term name="cited">citado</term>
- <term name="internet">internet</term>
- <term name="presented at">apresentado em</term>
- <term name="anthropology">antropologia</term>
- <term name="astronomy">astronomia</term>
- <term name="biology">biologia</term>
- <term name="botany">botânica</term>
- <term name="chemistry">química</term>
- <term name="engineering">engenharia</term>
- <term name="generic-base">base genérica</term>
- <term name="geography">geografia</term>
- <term name="geology">geologia</term>
- <term name="history">história</term>
- <term name="humanities">humanidades</term>
- <term name="literature">literatura</term>
- <term name="math">matemática</term>
- <term name="medicine">medicina</term>
- <term name="philosophy">philosofia</term>
- <term name="physics">física</term>
- <term name="psychology">psicologia</term>
- <term name="sociology">sociologia</term>
- <term name="science">ciências</term>
- <term name="political_science">ciências políticas</term>
- <term name="social_science">ciências sociais</term>
- <term name="theology">teologia</term>
- <term name="zoology">zoologia</term>
- <term name="book">
- <single>livro</single>
- <multiple>livros</multiple>
- </term>
- <term name="chapter">
- <single>capítulo</single>
- <multiple>capítulos</multiple>
- </term>
- <term name="column">
- <single>coluna</single>
- <multiple>colunas</multiple>
- </term>
- <term name="figure">
- <single>figura</single>
- <multiple>figuras</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>número</single>
- <multiple>números</multiple>
- </term>
- <term name="line">
- <single>linha</single>
- <multiple>linhas</multiple>
- </term>
- <term name="note">
- <single>nota</single>
- <multiple>notas</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>página</single>
- <multiple>páginas</multiple>
- </term>
- <term name="paragraph">
- <single>parágrafo</single>
- <multiple>parágrafos</multiple>
- </term>
- <term name="part">
- <single>parte</single>
- <multiple>partes</multiple>
- </term>
- <term name="section">
- <single>seção</single>
- <multiple>seções</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edição</single>
- <multiple>edições</multiple>
- </term>
- <term name="verse">
- <single>verso</single>
- <multiple>versos</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">liv</term>
- <term name="chapter" form="short">cap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">n</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">seç</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>organizador</single>
- <multiple>organizadores</multiple>
- </term>
- <term name="translator">
- <single>tradutor</single>
- <multiple>tradutores</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>org</single>
- <multiple>orgs</multiple>
- </term>
- <term name="translator" form="short">
- <single>trad</single>
- <multiple>trads</multiple>
- </term>
- <term name="editor" form="verb">organizado por</term>
- <term name="translator" form="verb">traduzido por</term>
- <term name="recipient" form="verb">para</term>
- <term name="interviewer" form="verb">intrevista de</term>
- <term name="editor" form="verb-short">org</term>
- <term name="translator" form="verb-short">trad</term>
- <term name="month-01">janeiro</term>
- <term name="month-02">fevereiro</term>
- <term name="month-03">março</term>
- <term name="month-04">abril</term>
- <term name="month-05">maio</term>
- <term name="month-06">junho</term>
- <term name="month-07">julho</term>
- <term name="month-08">agosto</term>
- <term name="month-09">setembro</term>
- <term name="month-10">outubro</term>
- <term name="month-11">novembro</term>
- <term name="month-12">dezembro</term>
- <term name="month-01" form="short">jan</term>
- <term name="month-02" form="short">fev</term>
- <term name="month-03" form="short">mar</term>
- <term name="month-04" form="short">abr</term>
- <term name="month-05" form="short">maio</term>
- <term name="month-06" form="short">jun</term>
- <term name="month-07" form="short">jul</term>
- <term name="month-08" form="short">ago</term>
- <term name="month-09" form="short">set</term>
- <term name="month-10" form="short">out</term>
- <term name="month-11" form="short">nov</term>
- <term name="month-12" form="short">dez</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="pt">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">em</term>
+ <term name="in">in</term>
+ <term name="ibid">ibidem</term>
+ <term name="accessed">acessado</term>
+ <term name="retrieved">recuperado</term>
+ <term name="from">de</term>
+ <term name="forthcoming">a ser publicado</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">[s.d.]</term>
+ <term name="and">e</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">entrevista</term>
+ <term name="letter">carta</term>
+ <term name="anonymous">anônimo</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">e outros</term>
+ <term name="in press">no prelo</term>
+ <term name="online">online</term>
+ <term name="cited">citado</term>
+ <term name="internet">internet</term>
+ <term name="presented at">apresentado em</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropologia</term>
+ <term name="astronomy">astronomia</term>
+ <term name="biology">biologia</term>
+ <term name="botany">botânica</term>
+ <term name="chemistry">química</term>
+ <term name="engineering">engenharia</term>
+ <term name="generic-base">base genérica</term>
+ <term name="geography">geografia</term>
+ <term name="geology">geologia</term>
+ <term name="history">história</term>
+ <term name="humanities">humanidades</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literatura</term>
+ <term name="math">matemática</term>
+ <term name="medicine">medicina</term>
+ <term name="philosophy">philosofia</term>
+ <term name="physics">física</term>
+ <term name="psychology">psicologia</term>
+ <term name="sociology">sociologia</term>
+ <term name="science">ciências</term>
+ <term name="political_science">ciências políticas</term>
+ <term name="social_science">ciências sociais</term>
+ <term name="theology">teologia</term>
+ <term name="zoology">zoologia</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>livro</single>
+ <multiple>livros</multiple>
+ </term>
+ <term name="chapter">
+ <single>capítulo</single>
+ <multiple>capítulos</multiple>
+ </term>
+ <term name="column">
+ <single>coluna</single>
+ <multiple>colunas</multiple>
+ </term>
+ <term name="figure">
+ <single>figura</single>
+ <multiple>figuras</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>número</single>
+ <multiple>números</multiple>
+ </term>
+ <term name="line">
+ <single>linha</single>
+ <multiple>linhas</multiple>
+ </term>
+ <term name="note">
+ <single>nota</single>
+ <multiple>notas</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>página</single>
+ <multiple>páginas</multiple>
+ </term>
+ <term name="paragraph">
+ <single>parágrafo</single>
+ <multiple>parágrafos</multiple>
+ </term>
+ <term name="part">
+ <single>parte</single>
+ <multiple>partes</multiple>
+ </term>
+ <term name="section">
+ <single>seção</single>
+ <multiple>seções</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edição</single>
+ <multiple>edições</multiple>
+ </term>
+ <term name="verse">
+ <single>verso</single>
+ <multiple>versos</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">liv</term>
+ <term name="chapter" form="short">cap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">n</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">seç</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>organizador</single>
+ <multiple>organizadores</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>tradutor</single>
+ <multiple>tradutores</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>org</single>
+ <multiple>orgs</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>trad</single>
+ <multiple>trads</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">organizado por</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">traduzido por</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">para</term>
+ <term name="interviewer" form="verb">intrevista de</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">org</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trad</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">janeiro</term>
+ <term name="month-02">fevereiro</term>
+ <term name="month-03">março</term>
+ <term name="month-04">abril</term>
+ <term name="month-05">maio</term>
+ <term name="month-06">junho</term>
+ <term name="month-07">julho</term>
+ <term name="month-08">agosto</term>
+ <term name="month-09">setembro</term>
+ <term name="month-10">outubro</term>
+ <term name="month-11">novembro</term>
+ <term name="month-12">dezembro</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">jan</term>
+ <term name="month-02" form="short">fev</term>
+ <term name="month-03" form="short">mar</term>
+ <term name="month-04" form="short">abr</term>
+ <term name="month-05" form="short">maio</term>
+ <term name="month-06" form="short">jun</term>
+ <term name="month-07" form="short">jul</term>
+ <term name="month-08" form="short">ago</term>
+ <term name="month-09" form="short">set</term>
+ <term name="month-10" form="short">out</term>
+ <term name="month-11" form="short">nov</term>
+ <term name="month-12" form="short">dez</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-pt-PT.xml b/chrome/content/zotero/locale/csl/locales-pt-PT.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="pt">
- <term name="at">em</term>
- <term name="in">em</term>
- <term name="ibid">ibid</term>
- <term name="accessed">acedido</term>
- <term name="retrieved">obtido</term>
- <term name="from">de</term>
- <term name="forthcoming">a publicar</term>
- <term name="references">Referências</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">sem data</term>
- <term name="and">e</term>
- <term name="et-al">et al.</term>
- <term name="interview">entrevista</term>
- <term name="letter">carta</term>
- <term name="anonymous">anónimo</term>
- <term name="anonymous" form="short">anón</term>
- <term name="and others">e outros</term>
- <term name="in press">no prelo</term>
- <term name="online">em linha</term>
- <term name="cited">citado</term>
- <term name="internet">internet</term>
- <term name="presented at">apresentado na</term>
- <term name="anthropology">antropologia</term>
- <term name="astronomy">astronomia</term>
- <term name="biology">biologia</term>
- <term name="botany">botânica</term>
- <term name="chemistry">química</term>
- <term name="engineering">engenharia</term>
- <term name="generic-base">base genérica</term>
- <term name="geography">geografia</term>
- <term name="geology">geologia</term>
- <term name="history">história</term>
- <term name="humanities">humanidades</term>
- <term name="literature">literatura</term>
- <term name="math">matemática</term>
- <term name="medicine">medicina</term>
- <term name="philosophy">filosofia</term>
- <term name="physics">física</term>
- <term name="psychology">psicologia</term>
- <term name="sociology">sociologia</term>
- <term name="science">ciência</term>
- <term name="political_science">ciência política</term>
- <term name="social_science">ciência social</term>
- <term name="theology">teologia</term>
- <term name="zoology">zoologia</term>
- <term name="book">
- <single>livro</single>
- <multiple>livros</multiple>
- </term>
- <term name="chapter">
- <single>capítulo</single>
- <multiple>capítulos</multiple>
- </term>
- <term name="column">
- <single>coluna</single>
- <multiple>colunas</multiple>
- </term>
- <term name="figure">
- <single>figura</single>
- <multiple>figuras</multiple>
- </term>
- <term name="folio">
- <single>fólio</single>
- <multiple>fólios</multiple>
- </term>
- <term name="issue">
- <single>número</single>
- <multiple>número</multiple>
- </term>
- <term name="line">
- <single>linha</single>
- <multiple>linhas</multiple>
- </term>
- <term name="note">
- <single>nota</single>
- <multiple>notas</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>página</single>
- <multiple>páginas</multiple>
- </term>
- <term name="paragraph">
- <single>parágrafo</single>
- <multiple>parágrafos</multiple>
- </term>
- <term name="part">
- <single>parte</single>
- <multiple>partes</multiple>
- </term>
- <term name="section">
- <single>secção</single>
- <multiple>secções</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edição</single>
- <multiple>edições</multiple>
- </term>
- <term name="verse">
- <single>versículo</single>
- <multiple>versículos</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">liv</term>
- <term name="chapter" form="short">cap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">n</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">par</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single>autor</single>
- <multiple>autores</multiple>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editores</multiple>
- </term>
- <term name="translator">
- <single>tradutor</single>
- <multiple>tradutores</multiple>
- </term>
- <term name="author" form="short">
- <single>aut</single>
- <multiple>auts</multiple>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>trad</single>
- <multiple>trads</multiple>
- </term>
- <term name="editor" form="verb">editado por</term>
- <term name="translator" form="verb">traduzido por</term>
- <term name="recipient" form="verb">para</term>
- <term name="interviewer" form="verb">entrevistado por</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trad</term>
- <term name="month-01">Janeiro</term>
- <term name="month-02">Fevereiro</term>
- <term name="month-03">Março</term>
- <term name="month-04">Abril</term>
- <term name="month-05">Maio</term>
- <term name="month-06">Junho</term>
- <term name="month-07">Julho</term>
- <term name="month-08">Agosto</term>
- <term name="month-09">Setembro</term>
- <term name="month-10">Outubro</term>
- <term name="month-11">Novembro</term>
- <term name="month-12">Dezembro</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Fev</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Abr</term>
- <term name="month-05" form="short">Mai</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Ago</term>
- <term name="month-09" form="short">Set</term>
- <term name="month-10" form="short">Out</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dez</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="pt">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">em</term>
+ <term name="in">em</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">acedido</term>
+ <term name="retrieved">obtido</term>
+ <term name="from">de</term>
+ <term name="forthcoming">a publicar</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">sem data</term>
+ <term name="and">e</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">entrevista</term>
+ <term name="letter">carta</term>
+ <term name="anonymous">anónimo</term>
+ <term name="anonymous" form="short">anón</term>
+ <term name="and others">e outros</term>
+ <term name="in press">no prelo</term>
+ <term name="online">em linha</term>
+ <term name="cited">citado</term>
+ <term name="internet">internet</term>
+ <term name="presented at">apresentado na</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropologia</term>
+ <term name="astronomy">astronomia</term>
+ <term name="biology">biologia</term>
+ <term name="botany">botânica</term>
+ <term name="chemistry">química</term>
+ <term name="engineering">engenharia</term>
+ <term name="generic-base">base genérica</term>
+ <term name="geography">geografia</term>
+ <term name="geology">geologia</term>
+ <term name="history">história</term>
+ <term name="humanities">humanidades</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literatura</term>
+ <term name="math">matemática</term>
+ <term name="medicine">medicina</term>
+ <term name="philosophy">filosofia</term>
+ <term name="physics">física</term>
+ <term name="psychology">psicologia</term>
+ <term name="sociology">sociologia</term>
+ <term name="science">ciência</term>
+ <term name="political_science">ciência política</term>
+ <term name="social_science">ciência social</term>
+ <term name="theology">teologia</term>
+ <term name="zoology">zoologia</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>livro</single>
+ <multiple>livros</multiple>
+ </term>
+ <term name="chapter">
+ <single>capítulo</single>
+ <multiple>capítulos</multiple>
+ </term>
+ <term name="column">
+ <single>coluna</single>
+ <multiple>colunas</multiple>
+ </term>
+ <term name="figure">
+ <single>figura</single>
+ <multiple>figuras</multiple>
+ </term>
+ <term name="folio">
+ <single>fólio</single>
+ <multiple>fólios</multiple>
+ </term>
+ <term name="issue">
+ <single>número</single>
+ <multiple>número</multiple>
+ </term>
+ <term name="line">
+ <single>linha</single>
+ <multiple>linhas</multiple>
+ </term>
+ <term name="note">
+ <single>nota</single>
+ <multiple>notas</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>página</single>
+ <multiple>páginas</multiple>
+ </term>
+ <term name="paragraph">
+ <single>parágrafo</single>
+ <multiple>parágrafos</multiple>
+ </term>
+ <term name="part">
+ <single>parte</single>
+ <multiple>partes</multiple>
+ </term>
+ <term name="section">
+ <single>secção</single>
+ <multiple>secções</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edição</single>
+ <multiple>edições</multiple>
+ </term>
+ <term name="verse">
+ <single>versículo</single>
+ <multiple>versículos</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">liv</term>
+ <term name="chapter" form="short">cap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">n</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">par</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editores</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>tradutor</single>
+ <multiple>tradutores</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>trad</single>
+ <multiple>trads</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">editado por</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">traduzido por</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">para</term>
+ <term name="interviewer" form="verb">entrevistado por</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trad</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Janeiro</term>
+ <term name="month-02">Fevereiro</term>
+ <term name="month-03">Março</term>
+ <term name="month-04">Abril</term>
+ <term name="month-05">Maio</term>
+ <term name="month-06">Junho</term>
+ <term name="month-07">Julho</term>
+ <term name="month-08">Agosto</term>
+ <term name="month-09">Setembro</term>
+ <term name="month-10">Outubro</term>
+ <term name="month-11">Novembro</term>
+ <term name="month-12">Dezembro</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Fev</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Abr</term>
+ <term name="month-05" form="short">Mai</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Ago</term>
+ <term name="month-09" form="short">Set</term>
+ <term name="month-10" form="short">Out</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dez</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-ro-RO.xml b/chrome/content/zotero/locale/csl/locales-ro-RO.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="ro">
- <term name="at">la</term>
- <term name="in">în</term>
- <term name="ibid">ibidem</term>
- <term name="accessed">data de acces</term>
- <term name="retrieved">data de preluare</term>
- <term name="from">din</term>
- <term name="forthcoming">în curs de apariție</term>
- <term name="references">Bibliografie</term>
- <term name="reference item">
- <single>sursă</single>
- <multiple>surse</multiple>
- </term>
- <term name="no date">f.a.</term>
- <term name="and">și</term>
- <term name="et-al">et al.</term>
- <term name="interview">interviu</term>
- <term name="letter">scrisoare</term>
- <term name="anonymous">anonim</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">și alții</term>
- <term name="in press">sub tipar</term>
- <term name="online">online</term>
- <term name="cited">citat</term>
- <term name="internet">internet</term>
- <term name="presented at">prezentat la</term>
- <term name="anthropology">antropologie</term>
- <term name="astronomy">astronomie</term>
- <term name="biology">biologie</term>
- <term name="botany">botanică</term>
- <term name="chemistry">chimie</term>
- <term name="engineering">inginerie</term>
- <term name="generic-base">general (de bază)</term>
- <term name="geography">geografie</term>
- <term name="geology">geologie</term>
- <term name="history">istorie</term>
- <term name="humanities">umanioare</term>
- <term name="literature">literatură</term>
- <term name="math">matematică</term>
- <term name="medicine">medicină</term>
- <term name="philosophy">filosofie</term>
- <term name="physics">fizică</term>
- <term name="psychology">psihologie</term>
- <term name="sociology">sociologie</term>
- <term name="science">știință</term>
- <term name="political_science">știinţe politice</term>
- <term name="social_science">științe sociale</term>
- <term name="theology">teologie</term>
- <term name="zoology">zoologie</term>
- <term name="book">
- <single>cartea</single>
- <multiple>cărțile</multiple>
- </term>
- <term name="chapter">
- <single>capitolul</single>
- <multiple>capitolele</multiple>
- </term>
- <term name="column">
- <single>coloana</single>
- <multiple>coloanele</multiple>
- </term>
- <term name="figure">
- <single>figura</single>
- <multiple>figurile</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folio</multiple>
- </term>
- <term name="issue">
- <single>numărul</single>
- <multiple>numerele</multiple>
- </term>
- <term name="line">
- <single>linia</single>
- <multiple>liniile</multiple>
- </term>
- <term name="note">
- <single>nota</single>
- <multiple>notele</multiple>
- </term>
- <term name="opus">
- <single>opusul</single>
- <multiple>opusurile</multiple>
- </term>
- <term name="page">
- <single>pagina</single>
- <multiple>paginile</multiple>
- </term>
- <term name="paragraph">
- <single>paragraful</single>
- <multiple>paragrafele</multiple>
- </term>
- <term name="part">
- <single>partea</single>
- <multiple>părțile</multiple>
- </term>
- <term name="section">
- <single>secțiunea</single>
- <multiple>secțiunile</multiple>
- </term>
- <term name="volume">
- <single>volumul</single>
- <multiple>volumele</multiple>
- </term>
- <term name="edition">
- <single>ediția</single>
- <multiple>edițiile</multiple>
- </term>
- <term name="verse">
- <single>versetul</single>
- <multiple>versetele</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">cart</term>
- <term name="chapter" form="short">cap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">fol</term>
- <term name="issue" form="short">nr</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">par</term>
- <term name="part" form="short">part</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vol</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single>autor</single>
- <multiple>autori</multiple>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editori</multiple>
- </term>
- <term name="translator">
- <single>traducător</single>
- <multiple>traducători</multiple>
- </term>
- <term name="author" form="short">
- <single>aut</single>
- <multiple>aut</multiple>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>ed</multiple>
- </term>
- <term name="translator" form="short">
- <single>trad</single>
- <multiple>trad</multiple>
- </term>
- <term name="editor" form="verb">ediţie de</term>
- <term name="translator" form="verb">traducere de</term>
- <term name="recipient" form="verb">în</term>
- <term name="interviewer" form="verb">interviu de</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trad</term>
- <term name="month-01">ianuarie</term>
- <term name="month-02">februarie</term>
- <term name="month-03">martie</term>
- <term name="month-04">aprilie</term>
- <term name="month-05">mai</term>
- <term name="month-06">iunie</term>
- <term name="month-07">iulie</term>
- <term name="month-08">august</term>
- <term name="month-09">septembrie</term>
- <term name="month-10">octombrie</term>
- <term name="month-11">noiembrie</term>
- <term name="month-12">decembrie</term>
- <term name="month-01" form="short">ian</term>
- <term name="month-02" form="short">feb</term>
- <term name="month-03" form="short">mar</term>
- <term name="month-04" form="short">apr</term>
- <term name="month-05" form="short">mai</term>
- <term name="month-06" form="short">iun</term>
- <term name="month-07" form="short">iul</term>
- <term name="month-08" form="short">aug</term>
- <term name="month-09" form="short">sep</term>
- <term name="month-10" form="short">oct</term>
- <term name="month-11" form="short">nov</term>
- <term name="month-12" form="short">dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="ro">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">la</term>
+ <term name="in">în</term>
+ <term name="ibid">ibidem</term>
+ <term name="accessed">accesat în</term>
+ <term name="retrieved">preluat în</term>
+ <term name="from">din</term>
+ <term name="forthcoming">în curs de apariţie</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">f.a.</term>
+ <term name="and">şi</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interviu</term>
+ <term name="letter">scrisoare</term>
+ <term name="anonymous">anonim</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">şi alţii</term>
+ <term name="in press">sub tipar</term>
+ <term name="online">online</term>
+ <term name="cited">citat</term>
+ <term name="internet">internet</term>
+ <term name="presented at">prezentat la</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropologie</term>
+ <term name="astronomy">astronomie</term>
+ <term name="biology">biologie</term>
+ <term name="botany">botanică</term>
+ <term name="chemistry">chimie</term>
+ <term name="engineering">inginerie</term>
+ <term name="generic-base">general (de bază)</term>
+ <term name="geography">geografie</term>
+ <term name="geology">geologie</term>
+ <term name="history">istorie</term>
+ <term name="humanities">umanioare</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literatură</term>
+ <term name="math">matematică</term>
+ <term name="medicine">medicină</term>
+ <term name="philosophy">filosofie</term>
+ <term name="physics">fizică</term>
+ <term name="psychology">psihologie</term>
+ <term name="sociology">sociologie</term>
+ <term name="science">ştiinţă</term>
+ <term name="political_science">ştiinţe politice</term>
+ <term name="social_science">ştiinţe sociale</term>
+ <term name="theology">teologie</term>
+ <term name="zoology">zoologie</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>cartea</single>
+ <multiple>cărţile</multiple>
+ </term>
+ <term name="chapter">
+ <single>capitolul</single>
+ <multiple>capitolele</multiple>
+ </term>
+ <term name="column">
+ <single>coloana</single>
+ <multiple>coloanele</multiple>
+ </term>
+ <term name="figure">
+ <single>figura</single>
+ <multiple>figurile</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folio</multiple>
+ </term>
+ <term name="issue">
+ <single>numărul</single>
+ <multiple>numerele</multiple>
+ </term>
+ <term name="line">
+ <single>linia</single>
+ <multiple>liniile</multiple>
+ </term>
+ <term name="note">
+ <single>nota</single>
+ <multiple>notele</multiple>
+ </term>
+ <term name="opus">
+ <single>opusul</single>
+ <multiple>opusurile</multiple>
+ </term>
+ <term name="page">
+ <single>pagina</single>
+ <multiple>paginile</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraful</single>
+ <multiple>paragrafele</multiple>
+ </term>
+ <term name="part">
+ <single>partea</single>
+ <multiple>părţile</multiple>
+ </term>
+ <term name="section">
+ <single>secţiunea</single>
+ <multiple>secţiunile</multiple>
+ </term>
+ <term name="volume">
+ <single>volumul</single>
+ <multiple>volumele</multiple>
+ </term>
+ <term name="edition">
+ <single>ediţia</single>
+ <multiple>ediţiile</multiple>
+ </term>
+ <term name="verse">
+ <single>versetul</single>
+ <multiple>versetele</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">cart</term>
+ <term name="chapter" form="short">cap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">fol</term>
+ <term name="issue" form="short">nr</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">par</term>
+ <term name="part" form="short">part</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vol</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single>autor</single>
+ <multiple>autori</multiple>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editori</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>traducător</single>
+ <multiple>traducători</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single>aut</single>
+ <multiple>aut</multiple>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>ed</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>trad</single>
+ <multiple>trad</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">ediţie de</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">traducere de</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">în</term>
+ <term name="interviewer" form="verb">interviu de</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trad</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">ianuarie</term>
+ <term name="month-02">februarie</term>
+ <term name="month-03">martie</term>
+ <term name="month-04">aprilie</term>
+ <term name="month-05">mai</term>
+ <term name="month-06">iunie</term>
+ <term name="month-07">iulie</term>
+ <term name="month-08">august</term>
+ <term name="month-09">septembrie</term>
+ <term name="month-10">octombrie</term>
+ <term name="month-11">noiembrie</term>
+ <term name="month-12">decembrie</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">ian</term>
+ <term name="month-02" form="short">feb</term>
+ <term name="month-03" form="short">mar</term>
+ <term name="month-04" form="short">apr</term>
+ <term name="month-05" form="short">mai</term>
+ <term name="month-06" form="short">iun</term>
+ <term name="month-07" form="short">iul</term>
+ <term name="month-08" form="short">aug</term>
+ <term name="month-09" form="short">sep</term>
+ <term name="month-10" form="short">oct</term>
+ <term name="month-11" form="short">nov</term>
+ <term name="month-12" form="short">dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-ru-RU.xml b/chrome/content/zotero/locale/csl/locales-ru-RU.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="ru">
- <term name="at">на</term>
- <term name="in">в</term>
- <term name="ibid">так же</term>
- <term name="accessed">вызвано</term>
- <term name="retrieved">извлечено</term>
- <term name="from">от</term>
- <term name="forthcoming">грядущие</term>
- <term name="references">ссылки</term>
- <term name="reference item">
- <single>источник</single>
- <multiple>источники</multiple>
- </term>
- <term name="no date">нет даты</term>
- <term name="and">и</term>
- <term name="et-al">и др.</term>
- <term name="interview">интервью</term>
- <term name="letter">письмо</term>
- <term name="anonymous">анонимно</term>
- <term name="anonymous" form="short">анон</term>
- <term name="and others">и другие</term>
- <term name="in press">в печати</term>
- <term name="online">онлайн</term>
- <term name="cited">цитированно</term>
- <term name="internet">Интернет</term>
- <term name="presented at">представлено на</term>
- <term name="anthropology">антропология</term>
- <term name="astronomy">астрономия</term>
- <term name="biology">биология</term>
- <term name="botany">ботаника</term>
- <term name="chemistry">химия</term>
- <term name="engineering">инженерное дело</term>
- <term name="generic-base">общая основа</term>
- <term name="geography">география</term>
- <term name="geology">геология</term>
- <term name="history">история</term>
- <term name="humanities">гуманитарные науки</term>
- <term name="literature">литература</term>
- <term name="math">математика</term>
- <term name="medicine">медицина</term>
- <term name="philosophy">философия</term>
- <term name="physics">физика</term>
- <term name="psychology">психология</term>
- <term name="sociology">социология</term>
- <term name="science">естественные науки</term>
- <term name="political_science">политология</term>
- <term name="social_science">общественные науки</term>
- <term name="theology">теология</term>
- <term name="zoology">зоология</term>
- <term name="book">
- <single>книга</single>
- <multiple>книги</multiple>
- </term>
- <term name="chapter">
- <single>глава</single>
- <multiple>главы</multiple>
- </term>
- <term name="column">
- <single>колонка</single>
- <multiple>колонки</multiple>
- </term>
- <term name="figure">
- <single>рисунок</single>
- <multiple>рисунки</multiple>
- </term>
- <term name="folio">
- <single>лист</single>
- <multiple>листы</multiple>
- </term>
- <term name="issue">
- <single>номер</single>
- <multiple>номера</multiple>
- </term>
- <term name="line">
- <single>линия</single>
- <multiple>линии</multiple>
- </term>
- <term name="note">
- <single>запись</single>
- <multiple>записи</multiple>
- </term>
- <term name="opus">
- <single>опус</single>
- <multiple>опусы</multiple>
- </term>
- <term name="page">
- <single>страница</single>
- <multiple>страницы</multiple>
- </term>
- <term name="paragraph">
- <single>параграф</single>
- <multiple>параграфы</multiple>
- </term>
- <term name="part">
- <single>часть</single>
- <multiple>части</multiple>
- </term>
- <term name="section">
- <single>раздел</single>
- <multiple>разделы</multiple>
- </term>
- <term name="volume">
- <single>том</single>
- <multiple>тома</multiple>
- </term>
- <term name="edition">
- <single>издание</single>
- <multiple>издания</multiple>
- </term>
- <term name="verse">
- <single>стих</single>
- <multiple>стихи</multiple>
- </term>
- <term name="sub verbo">
- <single>под рубрикой</single>
- <multiple>под рубриками</multiple>
- </term>
- <term name="book" form="short">кн</term>
- <term name="chapter" form="short">гл</term>
- <term name="column" form="short">кол</term>
- <term name="figure" form="short">рис</term>
- <term name="folio" form="short">л</term>
- <term name="issue" form="short">ном</term>
- <term name="opus" form="short">оп</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">пар</term>
- <term name="part" form="short">ч</term>
- <term name="section" form="short">разд</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">изд</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>редактор</single>
- <multiple>редакторы</multiple>
- </term>
- <term name="translator">
- <single>переводчик</single>
- <multiple>переводчики</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ред-р</single>
- <multiple>ред-ры</multiple>
- </term>
- <term name="translator" form="short">
- <single>перев-к</single>
- <multiple>перев-и</multiple>
- </term>
- <term name="editor" form="verb">отредактировано</term>
- <term name="translator" form="verb">переведено</term>
- <term name="recipient" form="verb"/>
- <term name="interviewer" form="verb">интервью взято</term>
- <term name="editor" form="verb-short">ред</term>
- <term name="translator" form="verb-short">перев</term>
- <term name="month-01">Январь</term>
- <term name="month-02">Февраль</term>
- <term name="month-03">Март</term>
- <term name="month-04">Апрель</term>
- <term name="month-05">Май</term>
- <term name="month-06">Июнь</term>
- <term name="month-07">Июль</term>
- <term name="month-08">Август</term>
- <term name="month-09">Сентябрь</term>
- <term name="month-10">Октябрь</term>
- <term name="month-11">Ноябрь</term>
- <term name="month-12">Декабрь</term>
- <term name="month-01" form="short">Янв</term>
- <term name="month-02" form="short">Фев</term>
- <term name="month-03" form="short">Мар</term>
- <term name="month-04" form="short">Апр</term>
- <term name="month-05" form="short">Май</term>
- <term name="month-06" form="short">Июн</term>
- <term name="month-07" form="short">Июл</term>
- <term name="month-08" form="short">Авг</term>
- <term name="month-09" form="short">Сен</term>
- <term name="month-10" form="short">Окт</term>
- <term name="month-11" form="short">Ноя</term>
- <term name="month-12" form="short">Дек</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="ru">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">в</term>
+ <term name="ibid">так же</term>
+ <term name="accessed">вызвано</term>
+ <term name="retrieved">извлечено</term>
+ <term name="from">от</term>
+ <term name="forthcoming">грядущие</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">нет даты</term>
+ <term name="and">и</term>
+ <term name="et-al">и др.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>линия</single>
+ <multiple>линии</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>страницы</single>
+ <multiple>страницы</multiple>
+ </term>
+ <term name="paragraph">
+ <single>параграф</single>
+ <multiple>параграфы</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">ном</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>стр-а</single>
+ <multiple>стр-ы</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>редактор</single>
+ <multiple>редакторы</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>переводчик</single>
+ <multiple>переводчики</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ред-р</single>
+ <multiple>ред-ры</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>перев-к</single>
+ <multiple>перев-и</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">отредактировано</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">переведено</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ред</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">перев</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Январь</term>
+ <term name="month-02">Февраль</term>
+ <term name="month-03">Март</term>
+ <term name="month-04">Апрель</term>
+ <term name="month-05">Май</term>
+ <term name="month-06">Июнь</term>
+ <term name="month-07">Июль</term>
+ <term name="month-08">Август</term>
+ <term name="month-09">Сентябрь</term>
+ <term name="month-10">Октябрь</term>
+ <term name="month-11">Ноябрь</term>
+ <term name="month-12">Декабрь</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Янв</term>
+ <term name="month-02" form="short">Фев</term>
+ <term name="month-03" form="short">Мар</term>
+ <term name="month-04" form="short">Апр</term>
+ <term name="month-05" form="short">Май</term>
+ <term name="month-06" form="short">Июн</term>
+ <term name="month-07" form="short">Июл</term>
+ <term name="month-08" form="short">Авг</term>
+ <term name="month-09" form="short">Сен</term>
+ <term name="month-10" form="short">Окт</term>
+ <term name="month-11" form="short">Ноя</term>
+ <term name="month-12" form="short">Дек</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-sk-SK.xml b/chrome/content/zotero/locale/csl/locales-sk-SK.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="sk">
- <term name="at">v</term>
- <term name="in">v</term>
- <term name="ibid">ibid</term>
- <term name="accessed">cit</term>
- <term name="retrieved">cit</term>
- <term name="from">z</term>
- <term name="forthcoming">nadchádzajúci</term>
- <term name="references">referencie</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">n.d.</term>
- <term name="and">a</term>
- <term name="et-al">et al</term>
- <term name="interview">osobná komunikácia</term>
- <term name="letter">list</term>
- <term name="anonymous">anonym</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and ďalší</term>
- <term name="in press">v tlači</term>
- <term name="online">online</term>
- <term name="cited">cit</term>
- <term name="internet">internet</term>
- <term name="presented at">prezentované na</term>
- <term name="anthropology">antropológia</term>
- <term name="astronomy">astronómia</term>
- <term name="biology">biológia</term>
- <term name="botany">botanika</term>
- <term name="chemistry">chémia</term>
- <term name="engineering">strojárstvo/technika</term>
- <term name="generic-base">všeobecný základ</term>
- <term name="geography">geografia</term>
- <term name="geology">geológia</term>
- <term name="history">história</term>
- <term name="humanities">humanitné vedy</term>
- <term name="literature">literatúra</term>
- <term name="math">matematika</term>
- <term name="medicine">medicína</term>
- <term name="philosophy">filozofia</term>
- <term name="physics">fyzika</term>
- <term name="psychology">psychológia</term>
- <term name="sociology">sociológia</term>
- <term name="science">veda</term>
- <term name="political_science">politické vedy</term>
- <term name="social_science">sociálne vedy</term>
- <term name="theology">teológia</term>
- <term name="zoology">zoológia</term>
- <term name="book">
- <single>kniha</single>
- <multiple>knihy</multiple>
- </term>
- <term name="chapter">
- <single>kapitola</single>
- <multiple>kapitoly</multiple>
- </term>
- <term name="column">
- <single>stĺpec</single>
- <multiple>stĺpce</multiple>
- </term>
- <term name="figure">
- <single>obrázok</single>
- <multiple>obrázky</multiple>
- </term>
- <term name="folio">
- <single>list</single>
- <multiple>listy</multiple>
- </term>
- <term name="issue">
- <single>číslo</single>
- <multiple>čísla</multiple>
- </term>
- <term name="line">
- <single>riadok</single>
- <multiple>riadky</multiple>
- </term>
- <term name="note">
- <single>poznámka</single>
- <multiple>poznámky</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>strana</single>
- <multiple>strany</multiple>
- </term>
- <term name="paragraph">
- <single>odstavec</single>
- <multiple>odstavce</multiple>
- </term>
- <term name="part">
- <single>časť</single>
- <multiple>časti</multiple>
- </term>
- <term name="section">
- <single>sekcia</single>
- <multiple>sekcie</multiple>
- </term>
- <term name="volume">
- <single>ročník</single>
- <multiple>ročníky</multiple>
- </term>
- <term name="edition">
- <single>vydanie</single>
- <multiple>vydania</multiple>
- </term>
- <term name="verse">
- <single>verš</single>
- <multiple>verše</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">k</term>
- <term name="chapter" form="short">kap</term>
- <term name="column" form="short">stĺp</term>
- <term name="figure" form="short">obr</term>
- <term name="folio" form="short">l</term>
- <term name="issue" form="short">č</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>s</single>
- <multiple>s</multiple>
- </term>
- <term name="paragraph" form="short">par</term>
- <term name="part" form="short">č</term>
- <term name="section" form="short">sek</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>v</multiple>
- </term>
- <term name="volume" form="short">
- <single>roč</single>
- <multiple>roč</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">vyd</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§</multiple>
- </term>
- <term name="author">
- <single>autor</single>
- <multiple>autori</multiple>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editori</multiple>
- </term>
- <term name="translator">
- <single>prekladateľ</single>
- <multiple>prekladatelia</multiple>
- </term>
- <term name="author" form="short">
- <single>aut</single>
- <multiple>aut</multiple>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>ed</multiple>
- </term>
- <term name="translator" form="short">
- <single>prek</single>
- <multiple>prek</multiple>
- </term>
- <term name="editor" form="verb">editoval</term>
- <term name="translator" form="verb">preložil</term>
- <term name="recipient" form="verb">adresát</term>
- <term name="interviewer" form="verb">rozhovor urobil</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">prel</term>
- <term name="month-01">január</term>
- <term name="month-02">február</term>
- <term name="month-03">marec</term>
- <term name="month-04">apríl</term>
- <term name="month-05">máj</term>
- <term name="month-06">jún</term>
- <term name="month-07">júl</term>
- <term name="month-08">august</term>
- <term name="month-09">september</term>
- <term name="month-10">október</term>
- <term name="month-11">november</term>
- <term name="month-12">december</term>
- <term name="month-01" form="short">jan</term>
- <term name="month-02" form="short">feb</term>
- <term name="month-03" form="short">mar</term>
- <term name="month-04" form="short">apr</term>
- <term name="month-05" form="short">máj</term>
- <term name="month-06" form="short">jún</term>
- <term name="month-07" form="short">júl</term>
- <term name="month-08" form="short">aug</term>
- <term name="month-09" form="short">sep</term>
- <term name="month-10" form="short">okt</term>
- <term name="month-11" form="short">nov</term>
- <term name="month-12" form="short">dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="sk">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">v</term>
+ <term name="in">v</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">cit</term>
+ <term name="retrieved">cit</term>
+ <term name="from">z</term>
+ <term name="forthcoming">nadchádzajúci</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">n.d.</term>
+ <term name="and">a</term>
+ <term name="et-al">et al</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">osobná komunikácia</term>
+ <term name="letter">list</term>
+ <term name="anonymous">anonym</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and ďalší</term>
+ <term name="in press">v tlači</term>
+ <term name="online">online</term>
+ <term name="cited">cit</term>
+ <term name="internet">internet</term>
+ <term name="presented at">prezentované na</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropológia</term>
+ <term name="astronomy">astronómia</term>
+ <term name="biology">biológia</term>
+ <term name="botany">botanika</term>
+ <term name="chemistry">chémia</term>
+ <term name="engineering">strojárstvo/technika</term>
+ <term name="generic-base">všeobecný základ</term>
+ <term name="geography">geografia</term>
+ <term name="geology">geológia</term>
+ <term name="history">história</term>
+ <term name="humanities">humanitné vedy</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literatúra</term>
+ <term name="math">matematika</term>
+ <term name="medicine">medicína</term>
+ <term name="philosophy">filozofia</term>
+ <term name="physics">fyzika</term>
+ <term name="psychology">psychológia</term>
+ <term name="sociology">sociológia</term>
+ <term name="science">veda</term>
+ <term name="political_science">politické vedy</term>
+ <term name="social_science">sociálne vedy</term>
+ <term name="theology">teológia</term>
+ <term name="zoology">zoológia</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>kniha</single>
+ <multiple>knihy</multiple>
+ </term>
+ <term name="chapter">
+ <single>kapitola</single>
+ <multiple>kapitoly</multiple>
+ </term>
+ <term name="column">
+ <single>stĺpec</single>
+ <multiple>stĺpce</multiple>
+ </term>
+ <term name="figure">
+ <single>obrázok</single>
+ <multiple>obrázky</multiple>
+ </term>
+ <term name="folio">
+ <single>list</single>
+ <multiple>listy</multiple>
+ </term>
+ <term name="issue">
+ <single>číslo</single>
+ <multiple>čísla</multiple>
+ </term>
+ <term name="line">
+ <single>riadok</single>
+ <multiple>riadky</multiple>
+ </term>
+ <term name="note">
+ <single>poznámka</single>
+ <multiple>poznámky</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>strana</single>
+ <multiple>strany</multiple>
+ </term>
+ <term name="paragraph">
+ <single>odstavec</single>
+ <multiple>odstavce</multiple>
+ </term>
+ <term name="part">
+ <single>časť</single>
+ <multiple>časti</multiple>
+ </term>
+ <term name="section">
+ <single>sekcia</single>
+ <multiple>sekcie</multiple>
+ </term>
+ <term name="volume">
+ <single>ročník</single>
+ <multiple>ročníky</multiple>
+ </term>
+ <term name="edition">
+ <single>vydanie</single>
+ <multiple>vydania</multiple>
+ </term>
+ <term name="verse">
+ <single>verš</single>
+ <multiple>verše</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">k</term>
+ <term name="chapter" form="short">kap</term>
+ <term name="column" form="short">stĺp</term>
+ <term name="figure" form="short">obr</term>
+ <term name="folio" form="short">l</term>
+ <term name="issue" form="short">č</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>s</single>
+ <multiple>s</multiple>
+ </term>
+ <term name="paragraph" form="short">par</term>
+ <term name="part" form="short">č</term>
+ <term name="section" form="short">sek</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>v</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>roč</single>
+ <multiple>roč</multiple>
+ </term>
+ <term name="edition" form="short">vyd</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editori</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>prekladateľ</single>
+ <multiple>prekladatelia</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>ed</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>prek</single>
+ <multiple>prek</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">editoval</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">preložil</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">adresát</term>
+ <term name="interviewer" form="verb">rozhovor urobil</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">prel</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">január</term>
+ <term name="month-02">február</term>
+ <term name="month-03">marec</term>
+ <term name="month-04">apríl</term>
+ <term name="month-05">máj</term>
+ <term name="month-06">jún</term>
+ <term name="month-07">júl</term>
+ <term name="month-08">august</term>
+ <term name="month-09">september</term>
+ <term name="month-10">október</term>
+ <term name="month-11">november</term>
+ <term name="month-12">december</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">jan</term>
+ <term name="month-02" form="short">feb</term>
+ <term name="month-03" form="short">mar</term>
+ <term name="month-04" form="short">apr</term>
+ <term name="month-05" form="short">máj</term>
+ <term name="month-06" form="short">jún</term>
+ <term name="month-07" form="short">júl</term>
+ <term name="month-08" form="short">aug</term>
+ <term name="month-09" form="short">sep</term>
+ <term name="month-10" form="short">okt</term>
+ <term name="month-11" form="short">nov</term>
+ <term name="month-12" form="short">dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-sl-SI.xml b/chrome/content/zotero/locale/csl/locales-sl-SI.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="sl">
- <term name="at">pri</term>
- <term name="in">v</term>
- <term name="ibid">isto</term>
- <term name="accessed">dostopano</term>
- <term name="retrieved">pridobljeno</term>
- <term name="from">od</term>
- <term name="forthcoming">pred izidom</term>
- <term name="references">sklici</term>
- <term name="reference item">
- <single>vir</single>
- <multiple>viri</multiple>
- </term>
- <term name="no date">b.d.</term>
- <term name="and">in</term>
- <term name="et-al">idr.</term>
- <term name="interview">intervju</term>
- <term name="letter">pismo</term>
- <term name="anonymous">anonimni</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">in drugi</term>
- <term name="in press">v tisku</term>
- <term name="online">na spletu</term>
- <term name="cited">citirano</term>
- <term name="internet">internet</term>
- <term name="presented at">predstavljeno na</term>
- <term name="anthropology">antropologija</term>
- <term name="astronomy">astronomija</term>
- <term name="biology">biologija</term>
- <term name="botany">botanika</term>
- <term name="chemistry">kemija</term>
- <term name="engineering">strojništvo</term>
- <term name="generic-base">splošno</term>
- <term name="geography">geografija</term>
- <term name="geology">geologija</term>
- <term name="history">zgodovina</term>
- <term name="humanities">humanistika</term>
- <term name="literature">literatura</term>
- <term name="math">matematika</term>
- <term name="medicine">medicina</term>
- <term name="philosophy">filozofija</term>
- <term name="physics">fizika</term>
- <term name="psychology">psihologija</term>
- <term name="sociology">sociologija</term>
- <term name="science">znanost</term>
- <term name="political_science">politologija</term>
- <term name="social_science">družbene vede</term>
- <term name="theology">teologija</term>
- <term name="zoology">zoologija</term>
- <term name="book">
- <single>knjiga</single>
- <multiple>knjige</multiple>
- </term>
- <term name="chapter">
- <single>poglavje</single>
- <multiple>poglavja</multiple>
- </term>
- <term name="column">
- <single>stolpec</single>
- <multiple>stolpci</multiple>
- </term>
- <term name="figure">
- <single>slika</single>
- <multiple>slike</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folii</multiple>
- </term>
- <term name="issue">
- <single>številka</single>
- <multiple>številke</multiple>
- </term>
- <term name="line">
- <single>vrstica</single>
- <multiple>vrstice</multiple>
- </term>
- <term name="note">
- <single>opomba</single>
- <multiple>opombe</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>stran</single>
- <multiple>strani</multiple>
- </term>
- <term name="paragraph">
- <single>odstavek</single>
- <multiple>odstavki</multiple>
- </term>
- <term name="part">
- <single>del</single>
- <multiple>deli</multiple>
- </term>
- <term name="section">
- <single>odsek</single>
- <multiple>odseki</multiple>
- </term>
- <term name="volume">
- <single>letnik</single>
- <multiple>letniki</multiple>
- </term>
- <term name="edition">
- <single>izdaja</single>
- <multiple>izdaje</multiple>
- </term>
- <term name="verse">
- <single>verz</single>
- <multiple>verzi</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">knj</term>
- <term name="chapter" form="short">pogl</term>
- <term name="column" form="short">sto</term>
- <term name="figure" form="short">sl</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">št</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>str</single>
- <multiple>str</multiple>
- </term>
- <term name="paragraph" form="short">odst</term>
- <term name="part" form="short">del</term>
- <term name="section" form="short">odsk</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>v</multiple>
- </term>
- <term name="volume" form="short">
- <single>let</single>
- <multiple>let</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">iz</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>urednik</single>
- <multiple>uredniki</multiple>
- </term>
- <term name="translator">
- <single>prevajalec</single>
- <multiple>prevajalci</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ur</single>
- <multiple>ur</multiple>
- </term>
- <term name="translator" form="short">
- <single>prev</single>
- <multiple>prev</multiple>
- </term>
- <term name="editor" form="verb">uredil</term>
- <term name="translator" form="verb">prevedel</term>
- <term name="recipient" form="verb">za</term>
- <term name="interviewer" form="verb">intervjuval</term>
- <term name="editor" form="verb-short">ur</term>
- <term name="translator" form="verb-short">prev</term>
- <term name="month-01">januar</term>
- <term name="month-02">februar</term>
- <term name="month-03">marec</term>
- <term name="month-04">april</term>
- <term name="month-05">maj</term>
- <term name="month-06">junij</term>
- <term name="month-07">julij</term>
- <term name="month-08">avgust</term>
- <term name="month-09">september</term>
- <term name="month-10">oktober</term>
- <term name="month-11">november</term>
- <term name="month-12">december</term>
- <term name="month-01" form="short">jan</term>
- <term name="month-02" form="short">feb</term>
- <term name="month-03" form="short">mar</term>
- <term name="month-04" form="short">apr</term>
- <term name="month-05" form="short">maj</term>
- <term name="month-06" form="short">jun</term>
- <term name="month-07" form="short">jul</term>
- <term name="month-08" form="short">avg</term>
- <term name="month-09" form="short">sep</term>
- <term name="month-10" form="short">okt</term>
- <term name="month-11" form="short">nov</term>
- <term name="month-12" form="short">dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="sl">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">pri</term>
+ <term name="in">v</term>
+ <term name="ibid">isto</term>
+ <term name="accessed">dostopano</term>
+ <term name="retrieved">pridobljeno</term>
+ <term name="from">od</term>
+ <term name="forthcoming">pred izidom</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">b.d.</term>
+ <term name="and">in</term>
+ <term name="et-al">idr.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">intervju</term>
+ <term name="letter">pismo</term>
+ <term name="anonymous">anonimni</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">in drugi</term>
+ <term name="in press">v tisku</term>
+ <term name="online">na spletu</term>
+ <term name="cited">citirano</term>
+ <term name="internet">internet</term>
+ <term name="presented at">predstavljeno na</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropologija</term>
+ <term name="astronomy">astronomija</term>
+ <term name="biology">biologija</term>
+ <term name="botany">botanika</term>
+ <term name="chemistry">kemija</term>
+ <term name="engineering">strojništvo</term>
+ <term name="generic-base">splošno</term>
+ <term name="geography">geografija</term>
+ <term name="geology">geologija</term>
+ <term name="history">zgodovina</term>
+ <term name="humanities">humanistika</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literatura</term>
+ <term name="math">matematika</term>
+ <term name="medicine">medicina</term>
+ <term name="philosophy">filozofija</term>
+ <term name="physics">fizika</term>
+ <term name="psychology">psihologija</term>
+ <term name="sociology">sociologija</term>
+ <term name="science">znanost</term>
+ <term name="political_science">politologija</term>
+ <term name="social_science">družbene vede</term>
+ <term name="theology">teologija</term>
+ <term name="zoology">zoologija</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>knjiga</single>
+ <multiple>knjige</multiple>
+ </term>
+ <term name="chapter">
+ <single>poglavje</single>
+ <multiple>poglavja</multiple>
+ </term>
+ <term name="column">
+ <single>stolpec</single>
+ <multiple>stolpci</multiple>
+ </term>
+ <term name="figure">
+ <single>slika</single>
+ <multiple>slike</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folii</multiple>
+ </term>
+ <term name="issue">
+ <single>številka</single>
+ <multiple>številke</multiple>
+ </term>
+ <term name="line">
+ <single>vrstica</single>
+ <multiple>vrstice</multiple>
+ </term>
+ <term name="note">
+ <single>opomba</single>
+ <multiple>opombe</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>stran</single>
+ <multiple>strani</multiple>
+ </term>
+ <term name="paragraph">
+ <single>odstavek</single>
+ <multiple>odstavki</multiple>
+ </term>
+ <term name="part">
+ <single>del</single>
+ <multiple>deli</multiple>
+ </term>
+ <term name="section">
+ <single>odsek</single>
+ <multiple>odseki</multiple>
+ </term>
+ <term name="volume">
+ <single>letnik</single>
+ <multiple>letniki</multiple>
+ </term>
+ <term name="edition">
+ <single>izdaja</single>
+ <multiple>izdaje</multiple>
+ </term>
+ <term name="verse">
+ <single>verz</single>
+ <multiple>verzi</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">knj</term>
+ <term name="chapter" form="short">pogl</term>
+ <term name="column" form="short">sto</term>
+ <term name="figure" form="short">sl</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">št</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>str</single>
+ <multiple>str</multiple>
+ </term>
+ <term name="paragraph" form="short">odst</term>
+ <term name="part" form="short">del</term>
+ <term name="section" form="short">odsk</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>v</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>let</single>
+ <multiple>let</multiple>
+ </term>
+ <term name="edition" form="short">iz</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>urednik</single>
+ <multiple>uredniki</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>prevajalec</single>
+ <multiple>prevajalci</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ur</single>
+ <multiple>ur</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>prev</single>
+ <multiple>prev</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">uredil</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">prevedel</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">za</term>
+ <term name="interviewer" form="verb">intervjuval</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ur</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">prev</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">januar</term>
+ <term name="month-02">februar</term>
+ <term name="month-03">marec</term>
+ <term name="month-04">april</term>
+ <term name="month-05">maj</term>
+ <term name="month-06">junij</term>
+ <term name="month-07">julij</term>
+ <term name="month-08">avgust</term>
+ <term name="month-09">september</term>
+ <term name="month-10">oktober</term>
+ <term name="month-11">november</term>
+ <term name="month-12">december</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">jan</term>
+ <term name="month-02" form="short">feb</term>
+ <term name="month-03" form="short">mar</term>
+ <term name="month-04" form="short">apr</term>
+ <term name="month-05" form="short">maj</term>
+ <term name="month-06" form="short">jun</term>
+ <term name="month-07" form="short">jul</term>
+ <term name="month-08" form="short">avg</term>
+ <term name="month-09" form="short">sep</term>
+ <term name="month-10" form="short">okt</term>
+ <term name="month-11" form="short">nov</term>
+ <term name="month-12" form="short">dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-sr-RS.xml b/chrome/content/zotero/locale/csl/locales-sr-RS.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="sr">
- <term name="at">на</term>
- <term name="in">у</term>
- <term name="ibid">ibid</term>
- <term name="accessed">приступљено</term>
- <term name="retrieved">преузето</term>
- <term name="from">од</term>
- <term name="forthcoming">долазећи</term>
- <term name="references">референце</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">без датума</term>
- <term name="and">и</term>
- <term name="et-al">и остали</term>
- <term name="interview">интервју</term>
- <term name="letter">писмо</term>
- <term name="anonymous">анонимна</term>
- <term name="anonymous" form="short">анон.</term>
- <term name="and others">и остали</term>
- <term name="in press">у штампи</term>
- <term name="online">на Интернету</term>
- <term name="cited">цитирано</term>
- <term name="internet">Интернет</term>
- <term name="presented at">представљено на</term>
- <term name="anthropology">антропологија</term>
- <term name="astronomy">астрономија</term>
- <term name="biology">биологија</term>
- <term name="botany">ботаника</term>
- <term name="chemistry">хемија</term>
- <term name="engineering">инжињерство</term>
- <term name="generic-base">уопштена основа</term>
- <term name="geography">географија</term>
- <term name="geology">геологија</term>
- <term name="history">историја</term>
- <term name="humanities">култура и уметност</term>
- <term name="literature">литература</term>
- <term name="math">математика</term>
- <term name="medicine">медицина</term>
- <term name="philosophy">филозофија</term>
- <term name="physics">физика</term>
- <term name="psychology">психологија</term>
- <term name="sociology">социологија</term>
- <term name="science">наука</term>
- <term name="political_science">политичка наука</term>
- <term name="social_science">друштвена наука</term>
- <term name="theology">теологија</term>
- <term name="zoology">зоологија</term>
- <term name="book">
- <single>књига</single>
- <multiple>књиге</multiple>
- </term>
- <term name="chapter">
- <single>поглавље</single>
- <multiple>поглавља</multiple>
- </term>
- <term name="column">
- <single>колона</single>
- <multiple>колоне</multiple>
- </term>
- <term name="figure">
- <single>цртеж</single>
- <multiple>цртежи</multiple>
- </term>
- <term name="folio">
- <single>фолио</single>
- <multiple>фолији</multiple>
- </term>
- <term name="issue">
- <single>број</single>
- <multiple>бројеви</multiple>
- </term>
- <term name="line">
- <single>линија</single>
- <multiple>линије</multiple>
- </term>
- <term name="note">
- <single>белешка</single>
- <multiple>белешке</multiple>
- </term>
- <term name="opus">
- <single>опус</single>
- <multiple>опера</multiple>
- </term>
- <term name="page">
- <single>страница</single>
- <multiple>странице</multiple>
- </term>
- <term name="paragraph">
- <single>параграф</single>
- <multiple>параграфи</multiple>
- </term>
- <term name="part">
- <single>део</single>
- <multiple>делова</multiple>
- </term>
- <term name="section">
- <single>одељак</single>
- <multiple>одељака</multiple>
- </term>
- <term name="volume">
- <single>том</single>
- <multiple>томова</multiple>
- </term>
- <term name="edition">
- <single>издање</single>
- <multiple>издања</multiple>
- </term>
- <term name="verse">
- <single>строфа</single>
- <multiple>строфе</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">књига</term>
- <term name="chapter" form="short">Пог.</term>
- <term name="column" form="short">кол.</term>
- <term name="figure" form="short">црт.</term>
- <term name="folio" form="short">фолио</term>
- <term name="issue" form="short">изд.</term>
- <term name="opus" form="short">оп.</term>
- <term name="page" form="short">
- <single>стр.</single>
- <multiple>стр.</multiple>
- </term>
- <term name="paragraph" form="short">пар.</term>
- <term name="part" form="short">део</term>
- <term name="section" form="short">од.</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>стр.</single>
- <multiple>стр.</multiple>
- </term>
- <term name="volume" form="short">
- <single>том</single>
- <multiple>томови</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">изд.</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>уредник</single>
- <multiple>урединици</multiple>
- </term>
- <term name="translator">
- <single>преводилац</single>
- <multiple>преводиоци</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ур.</single>
- <multiple>ур.</multiple>
- </term>
- <term name="translator" form="short">
- <single>прев.</single>
- <multiple>прев.</multiple>
- </term>
- <term name="editor" form="verb">уредио</term>
- <term name="translator" form="verb">превео</term>
- <term name="recipient" form="verb">прима</term>
- <term name="interviewer" form="verb">интервјуисао</term>
- <term name="editor" form="verb-short">ур.</term>
- <term name="translator" form="verb-short">прев.</term>
- <term name="month-01">Јануар</term>
- <term name="month-02">Фебруар</term>
- <term name="month-03">Март</term>
- <term name="month-04">Април</term>
- <term name="month-05">Мај</term>
- <term name="month-06">Јуни</term>
- <term name="month-07">Јули</term>
- <term name="month-08">Август</term>
- <term name="month-09">Септембар</term>
- <term name="month-10">Октобар</term>
- <term name="month-11">Новембар</term>
- <term name="month-12">Децембар</term>
- <term name="month-01" form="short">Јан.</term>
- <term name="month-02" form="short">Феб.</term>
- <term name="month-03" form="short">Март</term>
- <term name="month-04" form="short">Апр.</term>
- <term name="month-05" form="short">Мај</term>
- <term name="month-06" form="short">Јуни</term>
- <term name="month-07" form="short">Јули</term>
- <term name="month-08" form="short">Авг.</term>
- <term name="month-09" form="short">Сеп.</term>
- <term name="month-10" form="short">Окт.</term>
- <term name="month-11" form="short">Нов.</term>
- <term name="month-12" form="short">Дец.</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="sr">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">на</term>
+ <term name="in">у</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">приступљено</term>
+ <term name="retrieved">преузето</term>
+ <term name="from">од</term>
+ <term name="forthcoming">долазећи</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">без датума</term>
+ <term name="and">и</term>
+ <term name="et-al">и остали</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">интервју</term>
+ <term name="letter">писмо</term>
+ <term name="anonymous">анонимна</term>
+ <term name="anonymous" form="short">анон.</term>
+ <term name="and others">и остали</term>
+ <term name="in press">у штампи</term>
+ <term name="online">на Интернету</term>
+ <term name="cited">цитирано</term>
+ <term name="internet">Интернет</term>
+ <term name="presented at">представљено на</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">антропологија</term>
+ <term name="astronomy">астрономија</term>
+ <term name="biology">биологија</term>
+ <term name="botany">ботаника</term>
+ <term name="chemistry">хемија</term>
+ <term name="engineering">инжињерство</term>
+ <term name="generic-base">уопштена основа</term>
+ <term name="geography">географија</term>
+ <term name="geology">геологија</term>
+ <term name="history">историја</term>
+ <term name="humanities">култура и уметност</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">литература</term>
+ <term name="math">математика</term>
+ <term name="medicine">медицина</term>
+ <term name="philosophy">филозофија</term>
+ <term name="physics">физика</term>
+ <term name="psychology">психологија</term>
+ <term name="sociology">социологија</term>
+ <term name="science">наука</term>
+ <term name="political_science">политичка наука</term>
+ <term name="social_science">друштвена наука</term>
+ <term name="theology">теологија</term>
+ <term name="zoology">зоологија</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>књига</single>
+ <multiple>књиге</multiple>
+ </term>
+ <term name="chapter">
+ <single>поглавље</single>
+ <multiple>поглавља</multiple>
+ </term>
+ <term name="column">
+ <single>колона</single>
+ <multiple>колоне</multiple>
+ </term>
+ <term name="figure">
+ <single>цртеж</single>
+ <multiple>цртежи</multiple>
+ </term>
+ <term name="folio">
+ <single>фолио</single>
+ <multiple>фолији</multiple>
+ </term>
+ <term name="issue">
+ <single>број</single>
+ <multiple>бројеви</multiple>
+ </term>
+ <term name="line">
+ <single>линија</single>
+ <multiple>линије</multiple>
+ </term>
+ <term name="note">
+ <single>белешка</single>
+ <multiple>белешке</multiple>
+ </term>
+ <term name="opus">
+ <single>опус</single>
+ <multiple>опера</multiple>
+ </term>
+ <term name="page">
+ <single>страница</single>
+ <multiple>странице</multiple>
+ </term>
+ <term name="paragraph">
+ <single>параграф</single>
+ <multiple>параграфи</multiple>
+ </term>
+ <term name="part">
+ <single>део</single>
+ <multiple>делова</multiple>
+ </term>
+ <term name="section">
+ <single>одељак</single>
+ <multiple>одељака</multiple>
+ </term>
+ <term name="volume">
+ <single>том</single>
+ <multiple>томова</multiple>
+ </term>
+ <term name="edition">
+ <single>издање</single>
+ <multiple>издања</multiple>
+ </term>
+ <term name="verse">
+ <single>строфа</single>
+ <multiple>строфе</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">књига</term>
+ <term name="chapter" form="short">Пог.</term>
+ <term name="column" form="short">кол.</term>
+ <term name="figure" form="short">црт.</term>
+ <term name="folio" form="short">фолио</term>
+ <term name="issue" form="short">изд.</term>
+ <term name="opus" form="short">оп.</term>
+ <term name="page" form="short">
+ <single>стр.</single>
+ <multiple>стр.</multiple>
+ </term>
+ <term name="paragraph" form="short">пар.</term>
+ <term name="part" form="short">део</term>
+ <term name="section" form="short">од.</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>стр.</single>
+ <multiple>стр.</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>том</single>
+ <multiple>томови</multiple>
+ </term>
+ <term name="edition" form="short">изд.</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>уредник</single>
+ <multiple>урединици</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>преводилац</single>
+ <multiple>преводиоци</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ур.</single>
+ <multiple>ур.</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>прев.</single>
+ <multiple>прев.</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">уредио</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">превео</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">прима</term>
+ <term name="interviewer" form="verb">интервјуисао</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ур.</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">прев.</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Јануар</term>
+ <term name="month-02">Фебруар</term>
+ <term name="month-03">Март</term>
+ <term name="month-04">Април</term>
+ <term name="month-05">Мај</term>
+ <term name="month-06">Јуни</term>
+ <term name="month-07">Јули</term>
+ <term name="month-08">Август</term>
+ <term name="month-09">Септембар</term>
+ <term name="month-10">Октобар</term>
+ <term name="month-11">Новембар</term>
+ <term name="month-12">Децембар</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Јан.</term>
+ <term name="month-02" form="short">Феб.</term>
+ <term name="month-03" form="short">Март</term>
+ <term name="month-04" form="short">Апр.</term>
+ <term name="month-05" form="short">Мај</term>
+ <term name="month-06" form="short">Јуни</term>
+ <term name="month-07" form="short">Јули</term>
+ <term name="month-08" form="short">Авг.</term>
+ <term name="month-09" form="short">Сеп.</term>
+ <term name="month-10" form="short">Окт.</term>
+ <term name="month-11" form="short">Нов.</term>
+ <term name="month-12" form="short">Дец.</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-sv-SE.xml b/chrome/content/zotero/locale/csl/locales-sv-SE.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="sv">
- <term name="at">vid</term>
- <term name="in">i</term>
- <term name="ibid">ibid</term>
- <term name="accessed">åtkomstdatum</term>
- <term name="retrieved">hämtad</term>
- <term name="from">från</term>
- <term name="forthcoming">kommande</term>
- <term name="references">Referenser</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">nd</term>
- <term name="and">och</term>
- <term name="et-al">m.fl.</term>
- <term name="interview">intervju</term>
- <term name="letter">brev</term>
- <term name="anonymous">anonym</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">och andra</term>
- <term name="in press">i tryck</term>
- <term name="online">online</term>
- <term name="cited">citerad</term>
- <term name="internet">internet</term>
- <term name="presented at">presenterad vid</term>
- <term name="anthropology">antropologi</term>
- <term name="astronomy">astronomi</term>
- <term name="biology">biologi</term>
- <term name="botany">botanik</term>
- <term name="chemistry">kemi</term>
- <term name="engineering">teknik</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geografi</term>
- <term name="geology">geologi</term>
- <term name="history">historia</term>
- <term name="humanities">humaniora</term>
- <term name="literature">litteraturvetenskap</term>
- <term name="math">matematik</term>
- <term name="medicine">medicin</term>
- <term name="philosophy">filosofi</term>
- <term name="physics">fysik</term>
- <term name="psychology">psykologi</term>
- <term name="sociology">sociologi</term>
- <term name="science">vetenskap</term>
- <term name="political_science">statsvetenskap</term>
- <term name="social_science">samhällsvetenskap</term>
- <term name="theology">teologi</term>
- <term name="zoology">zoologi</term>
- <term name="book">
- <single>bok</single>
- <multiple>böcker</multiple>
- </term>
- <term name="chapter">
- <single>kapitel</single>
- <multiple>kapitel</multiple>
- </term>
- <term name="column">
- <single>kolumn</single>
- <multiple>kolumner</multiple>
- </term>
- <term name="figure">
- <single>figur</single>
- <multiple>figurer</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>nummer</single>
- <multiple>nummer</multiple>
- </term>
- <term name="line">
- <single>rad</single>
- <multiple>rader</multiple>
- </term>
- <term name="note">
- <single>not</single>
- <multiple>noter</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>sida</single>
- <multiple>sidor</multiple>
- </term>
- <term name="paragraph">
- <single>stycke</single>
- <multiple>stycken</multiple>
- </term>
- <term name="part">
- <single>dek</single>
- <multiple>delar</multiple>
- </term>
- <term name="section">
- <single>avnitt</single>
- <multiple>avsnitt</multiple>
- </term>
- <term name="volume">
- <single>volym</single>
- <multiple>volumer</multiple>
- </term>
- <term name="edition">
- <single>upplaga</single>
- <multiple>upplagor</multiple>
- </term>
- <term name="verse">
- <single>vers</single>
- <multiple>verser</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bok</term>
- <term name="chapter" form="short">kap</term>
- <term name="column" form="short">kol</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">num</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>s</single>
- <multiple>ss</multiple>
- </term>
- <term name="paragraph" form="short">st</term>
- <term name="part" form="short">del</term>
- <term name="section" form="short">avs</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>vers</single>
- <multiple>verser</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">uppl</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>redaktör</single>
- <multiple>redaktörer</multiple>
- </term>
- <term name="translator">
- <single>översättare</single>
- <multiple>översättare</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>red</single>
- <multiple>reds</multiple>
- </term>
- <term name="translator" form="short">
- <single>övers</single>
- <multiple>övers</multiple>
- </term>
- <term name="editor" form="verb">redigerad av</term>
- <term name="translator" form="verb">översatt av</term>
- <term name="recipient" form="verb">till</term>
- <term name="interviewer" form="verb">intervju av</term>
- <term name="editor" form="verb-short">red</term>
- <term name="translator" form="verb-short">övers</term>
- <term name="month-01">Januari</term>
- <term name="month-02">Februari</term>
- <term name="month-03">Mars</term>
- <term name="month-04">April</term>
- <term name="month-05">Maj</term>
- <term name="month-06">Juni</term>
- <term name="month-07">Juli</term>
- <term name="month-08">Augusti</term>
- <term name="month-09">September</term>
- <term name="month-10">Oktober</term>
- <term name="month-11">November</term>
- <term name="month-12">December</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">Maj</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Okt</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="sv">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">vid</term>
+ <term name="in">i</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">åtkomstdatum</term>
+ <term name="retrieved">hämtad</term>
+ <term name="from">från</term>
+ <term name="forthcoming">kommande</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">nd</term>
+ <term name="and">och</term>
+ <term name="et-al">m.fl.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">intervju</term>
+ <term name="letter">brev</term>
+ <term name="anonymous">anonym</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">och andra</term>
+ <term name="in press">i tryck</term>
+ <term name="online">online</term>
+ <term name="cited">citerad</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presenterad vid</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropologi</term>
+ <term name="astronomy">astronomi</term>
+ <term name="biology">biologi</term>
+ <term name="botany">botanik</term>
+ <term name="chemistry">kemi</term>
+ <term name="engineering">teknik</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geografi</term>
+ <term name="geology">geologi</term>
+ <term name="history">historia</term>
+ <term name="humanities">humaniora</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">litteraturvetenskap</term>
+ <term name="math">matematik</term>
+ <term name="medicine">medicin</term>
+ <term name="philosophy">filosofi</term>
+ <term name="physics">fysik</term>
+ <term name="psychology">psykologi</term>
+ <term name="sociology">sociologi</term>
+ <term name="science">vetenskap</term>
+ <term name="political_science">statsvetenskap</term>
+ <term name="social_science">samhällsvetenskap</term>
+ <term name="theology">teologi</term>
+ <term name="zoology">zoologi</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>bok</single>
+ <multiple>böcker</multiple>
+ </term>
+ <term name="chapter">
+ <single>kapitel</single>
+ <multiple>kapitel</multiple>
+ </term>
+ <term name="column">
+ <single>kolumn</single>
+ <multiple>kolumner</multiple>
+ </term>
+ <term name="figure">
+ <single>figur</single>
+ <multiple>figurer</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>nummer</single>
+ <multiple>nummer</multiple>
+ </term>
+ <term name="line">
+ <single>rad</single>
+ <multiple>rader</multiple>
+ </term>
+ <term name="note">
+ <single>not</single>
+ <multiple>noter</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>sida</single>
+ <multiple>sidor</multiple>
+ </term>
+ <term name="paragraph">
+ <single>stycke</single>
+ <multiple>stycken</multiple>
+ </term>
+ <term name="part">
+ <single>dek</single>
+ <multiple>delar</multiple>
+ </term>
+ <term name="section">
+ <single>avnitt</single>
+ <multiple>avsnitt</multiple>
+ </term>
+ <term name="volume">
+ <single>volym</single>
+ <multiple>volumer</multiple>
+ </term>
+ <term name="edition">
+ <single>upplaga</single>
+ <multiple>upplagor</multiple>
+ </term>
+ <term name="verse">
+ <single>vers</single>
+ <multiple>verser</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bok</term>
+ <term name="chapter" form="short">kap</term>
+ <term name="column" form="short">kol</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">num</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>s</single>
+ <multiple>ss</multiple>
+ </term>
+ <term name="paragraph" form="short">st</term>
+ <term name="part" form="short">del</term>
+ <term name="section" form="short">avs</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>vers</single>
+ <multiple>verser</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">uppl</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>redaktör</single>
+ <multiple>redaktörer</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>översättare</single>
+ <multiple>översättare</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>red</single>
+ <multiple>reds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>övers</single>
+ <multiple>övers</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">redigerad av</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">översatt av</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">till</term>
+ <term name="interviewer" form="verb">intervju av</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">red</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">övers</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Januari</term>
+ <term name="month-02">Februari</term>
+ <term name="month-03">Mars</term>
+ <term name="month-04">April</term>
+ <term name="month-05">Maj</term>
+ <term name="month-06">Juni</term>
+ <term name="month-07">Juli</term>
+ <term name="month-08">Augusti</term>
+ <term name="month-09">September</term>
+ <term name="month-10">Oktober</term>
+ <term name="month-11">November</term>
+ <term name="month-12">December</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">Maj</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Okt</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-th-TH.xml b/chrome/content/zotero/locale/csl/locales-th-TH.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="th">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accessed</term>
- <term name="retrieved">retrieved</term>
- <term name="from">from</term>
- <term name="forthcoming">forthcoming</term>
- <term name="references">references</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">n.d.</term>
- <term name="and">and</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>line</single>
- <multiple>lines</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>page</single>
- <multiple>pages</multiple>
- </term>
- <term name="paragraph">
- <single>paragraph</single>
- <multiple>paragraph</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editors</multiple>
- </term>
- <term name="translator">
- <single>translator</single>
- <multiple>translators</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>tran</single>
- <multiple>trans</multiple>
- </term>
- <term name="editor" form="verb">edited by</term>
- <term name="translator" form="verb">translated by</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">January</term>
- <term name="month-02">February</term>
- <term name="month-03">March</term>
- <term name="month-04">April</term>
- <term name="month-05">May</term>
- <term name="month-06">June</term>
- <term name="month-07">July</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">October</term>
- <term name="month-11">November</term>
- <term name="month-12">December</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Oct</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="th">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accessed</term>
+ <term name="retrieved">retrieved</term>
+ <term name="from">from</term>
+ <term name="forthcoming">forthcoming</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">n.d.</term>
+ <term name="and">and</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>line</single>
+ <multiple>lines</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraph</single>
+ <multiple>paragraph</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">no</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>translator</single>
+ <multiple>translators</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tran</single>
+ <multiple>trans</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">edited by</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">translated by</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">January</term>
+ <term name="month-02">February</term>
+ <term name="month-03">March</term>
+ <term name="month-04">April</term>
+ <term name="month-05">May</term>
+ <term name="month-06">June</term>
+ <term name="month-07">July</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">October</term>
+ <term name="month-11">November</term>
+ <term name="month-12">December</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Oct</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-tr-TR.xml b/chrome/content/zotero/locale/csl/locales-tr-TR.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="tr">
- <term name="at">de</term>
- <term name="in">içinde</term>
- <term name="ibid">ibid</term>
- <term name="accessed">erişildi</term>
- <term name="retrieved">erişildi</term>
- <term name="from">den</term>
- <term name="forthcoming">gelecek</term>
- <term name="references">referans</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">tarih yok</term>
- <term name="and">ve</term>
- <term name="et-al">ve diğ.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">isimsiz</term>
- <term name="anonymous" form="short">isimsiz</term>
- <term name="and others">ve diğ.</term>
- <term name="in press">basımda</term>
- <term name="online">çevrimiçi</term>
- <term name="cited">kaynak</term>
- <term name="internet">internet</term>
- <term name="presented at">sunulan</term>
- <term name="anthropology">antropoloji</term>
- <term name="astronomy">astronomi</term>
- <term name="biology">biyoloji</term>
- <term name="botany">botanik</term>
- <term name="chemistry">kimya</term>
- <term name="engineering">mühendislik</term>
- <term name="generic-base">generic-base</term>
- <term name="geography">coğrafya</term>
- <term name="geology">jeoloji</term>
- <term name="history">tarih</term>
- <term name="humanities">humanities</term>
- <term name="literature">edebiyat</term>
- <term name="math">matematik</term>
- <term name="medicine">tıp</term>
- <term name="philosophy">felsefe</term>
- <term name="physics">fizik</term>
- <term name="psychology">pisikoloji</term>
- <term name="sociology">sosyoloji</term>
- <term name="science">bilim</term>
- <term name="political_science">siyaset bilimi</term>
- <term name="social_science">sosyal bilimler</term>
- <term name="theology">din bilimi</term>
- <term name="zoology">hayvanbilimi</term>
- <term name="book">
- <single>kitap</single>
- <multiple>kitaplar</multiple>
- </term>
- <term name="chapter">
- <single>bölüm</single>
- <multiple>bölümler</multiple>
- </term>
- <term name="column">
- <single>sütun</single>
- <multiple>sütunlar</multiple>
- </term>
- <term name="figure">
- <single>şekil</single>
- <multiple>şekiller</multiple>
- </term>
- <term name="folio">
- <single>folyo</single>
- <multiple>folyo</multiple>
- </term>
- <term name="issue">
- <single>sayı</single>
- <multiple>sayılar</multiple>
- </term>
- <term name="line">
- <single>satır</single>
- <multiple>satırlar</multiple>
- </term>
- <term name="note">
- <single>not</single>
- <multiple>notlar</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>sayfa</single>
- <multiple>sayfalar</multiple>
- </term>
- <term name="paragraph">
- <single>paragraf</single>
- <multiple>paragraflar</multiple>
- </term>
- <term name="part">
- <single>kısım</single>
- <multiple>kısımlar</multiple>
- </term>
- <term name="section">
- <single>bölüm</single>
- <multiple>bölümler</multiple>
- </term>
- <term name="volume">
- <single>cilt</single>
- <multiple>ciltler</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>dize</single>
- <multiple>dizeler</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">kit</term>
- <term name="chapter" form="short">böl</term>
- <term name="column" form="short">süt</term>
- <term name="figure" form="short">şek</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">sayı</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>s</single>
- <multiple>ss</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">kıs</term>
- <term name="section" form="short">böl</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>editör</single>
- <multiple>editörler</multiple>
- </term>
- <term name="translator">
- <single>çevirmen</single>
- <multiple>çevirmenler</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>ed</multiple>
- </term>
- <term name="translator" form="short">
- <single>çev</single>
- <multiple>çev</multiple>
- </term>
- <term name="editor" form="verb">editör</term>
- <term name="translator" form="verb">çeviren</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">Röportaj yapan</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">çev</term>
- <term name="month-01">Ocak</term>
- <term name="month-02">Şubat</term>
- <term name="month-03">Mart</term>
- <term name="month-04">Nisan</term>
- <term name="month-05">Mayıs</term>
- <term name="month-06">Haziran</term>
- <term name="month-07">Temmuz</term>
- <term name="month-08">Ağustos</term>
- <term name="month-09">Eylül</term>
- <term name="month-10">Ekim</term>
- <term name="month-11">Kasım</term>
- <term name="month-12">Aralık</term>
- <term name="month-01" form="short">Oca</term>
- <term name="month-02" form="short">Şub</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Nis</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Haz</term>
- <term name="month-07" form="short">Tem</term>
- <term name="month-08" form="short">Ağu</term>
- <term name="month-09" form="short">Eyl</term>
- <term name="month-10" form="short">Eki</term>
- <term name="month-11" form="short">Kas</term>
- <term name="month-12" form="short">Ara</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="tr">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">de</term>
+ <term name="in">içinde</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">erişildi</term>
+ <term name="retrieved">erişildi</term>
+ <term name="from">den</term>
+ <term name="forthcoming">gelecek</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">tarih yok</term>
+ <term name="and">ve</term>
+ <term name="et-al">ve diğ.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">isimsiz</term>
+ <term name="anonymous" form="short">isimsiz</term>
+ <term name="and others">ve diğ.</term>
+ <term name="in press">basımda</term>
+ <term name="online">çevrimiçi</term>
+ <term name="cited">kaynak</term>
+ <term name="internet">internet</term>
+ <term name="presented at">sunulan</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">antropoloji</term>
+ <term name="astronomy">astronomi</term>
+ <term name="biology">biyoloji</term>
+ <term name="botany">botanik</term>
+ <term name="chemistry">kimya</term>
+ <term name="engineering">mühendislik</term>
+ <term name="generic-base">generic-base</term>
+ <term name="geography">coğrafya</term>
+ <term name="geology">jeoloji</term>
+ <term name="history">tarih</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">edebiyat</term>
+ <term name="math">matematik</term>
+ <term name="medicine">tıp</term>
+ <term name="philosophy">felsefe</term>
+ <term name="physics">fizik</term>
+ <term name="psychology">pisikoloji</term>
+ <term name="sociology">sosyoloji</term>
+ <term name="science">bilim</term>
+ <term name="political_science">siyaset bilimi</term>
+ <term name="social_science">sosyal bilimler</term>
+ <term name="theology">din bilimi</term>
+ <term name="zoology">hayvanbilimi</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>kitap</single>
+ <multiple>kitaplar</multiple>
+ </term>
+ <term name="chapter">
+ <single>bölüm</single>
+ <multiple>bölümler</multiple>
+ </term>
+ <term name="column">
+ <single>sütun</single>
+ <multiple>sütunlar</multiple>
+ </term>
+ <term name="figure">
+ <single>şekil</single>
+ <multiple>şekiller</multiple>
+ </term>
+ <term name="folio">
+ <single>folyo</single>
+ <multiple>folyo</multiple>
+ </term>
+ <term name="issue">
+ <single>sayı</single>
+ <multiple>sayılar</multiple>
+ </term>
+ <term name="line">
+ <single>satır</single>
+ <multiple>satırlar</multiple>
+ </term>
+ <term name="note">
+ <single>not</single>
+ <multiple>notlar</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>sayfa</single>
+ <multiple>sayfalar</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraf</single>
+ <multiple>paragraflar</multiple>
+ </term>
+ <term name="part">
+ <single>kısım</single>
+ <multiple>kısımlar</multiple>
+ </term>
+ <term name="section">
+ <single>bölüm</single>
+ <multiple>bölümler</multiple>
+ </term>
+ <term name="volume">
+ <single>cilt</single>
+ <multiple>ciltler</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>dize</single>
+ <multiple>dizeler</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">kit</term>
+ <term name="chapter" form="short">böl</term>
+ <term name="column" form="short">süt</term>
+ <term name="figure" form="short">şek</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">sayı</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>s</single>
+ <multiple>ss</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">kıs</term>
+ <term name="section" form="short">böl</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editör</single>
+ <multiple>editörler</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>çevirmen</single>
+ <multiple>çevirmenler</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>ed</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>çev</single>
+ <multiple>çev</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">editör</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">çeviren</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">Röportaj yapan</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">çev</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Ocak</term>
+ <term name="month-02">Şubat</term>
+ <term name="month-03">Mart</term>
+ <term name="month-04">Nisan</term>
+ <term name="month-05">Mayıs</term>
+ <term name="month-06">Haziran</term>
+ <term name="month-07">Temmuz</term>
+ <term name="month-08">Ağustos</term>
+ <term name="month-09">Eylül</term>
+ <term name="month-10">Ekim</term>
+ <term name="month-11">Kasım</term>
+ <term name="month-12">Aralık</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Oca</term>
+ <term name="month-02" form="short">Şub</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Nis</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Haz</term>
+ <term name="month-07" form="short">Tem</term>
+ <term name="month-08" form="short">Ağu</term>
+ <term name="month-09" form="short">Eyl</term>
+ <term name="month-10" form="short">Eki</term>
+ <term name="month-11" form="short">Kas</term>
+ <term name="month-12" form="short">Ara</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-uk-UA.xml b/chrome/content/zotero/locale/csl/locales-uk-UA.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="uk">
- <term name="at">на</term>
- <term name="in">в</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accessed</term>
- <term name="retrieved">retrieved</term>
- <term name="from">із</term>
- <term name="forthcoming">forthcoming</term>
- <term name="references">посилання</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">n.d.</term>
- <term name="and">і</term>
- <term name="et-al">et al.</term>
- <term name="interview">інтервю</term>
- <term name="letter">лист</term>
- <term name="anonymous">анонімний</term>
- <term name="anonymous" form="short">анон.</term>
- <term name="and others">та інші</term>
- <term name="in press">у пресі</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">інтернет</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">антропологія</term>
- <term name="astronomy">астрономія</term>
- <term name="biology">біологія</term>
- <term name="botany">ботаніка</term>
- <term name="chemistry">хімія</term>
- <term name="engineering">інженерія</term>
- <term name="generic-base">generic base</term>
- <term name="geography">географія</term>
- <term name="geology">геологія</term>
- <term name="history">історія</term>
- <term name="humanities">гуманітарні</term>
- <term name="literature">література</term>
- <term name="math">математика</term>
- <term name="medicine">медицина</term>
- <term name="philosophy">філософія</term>
- <term name="physics">фізика</term>
- <term name="psychology">психологія</term>
- <term name="sociology">соціологія</term>
- <term name="science">наука</term>
- <term name="political_science">політичні науки</term>
- <term name="social_science">соціальні науки</term>
- <term name="theology">теологія</term>
- <term name="zoology">зоологія</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>line</single>
- <multiple>lines</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>page</single>
- <multiple>pages</multiple>
- </term>
- <term name="paragraph">
- <single>paragraph</single>
- <multiple>paragraph</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editors</multiple>
- </term>
- <term name="translator">
- <single>translator</single>
- <multiple>translators</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>tran</single>
- <multiple>trans</multiple>
- </term>
- <term name="editor" form="verb">edited by</term>
- <term name="translator" form="verb">translated by</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">Січень</term>
- <term name="month-02">Лютий</term>
- <term name="month-03">Березень</term>
- <term name="month-04">Квітень</term>
- <term name="month-05">Травень</term>
- <term name="month-06">Червень</term>
- <term name="month-07">Липень</term>
- <term name="month-08">Серпень</term>
- <term name="month-09">Вересень</term>
- <term name="month-10">Жовтень</term>
- <term name="month-11">Листопад</term>
- <term name="month-12">Грудень</term>
- <term name="month-01" form="short">Січ</term>
- <term name="month-02" form="short">Лют</term>
- <term name="month-03" form="short">Бер</term>
- <term name="month-04" form="short">Квіт</term>
- <term name="month-05" form="short">Трав</term>
- <term name="month-06" form="short">Чер</term>
- <term name="month-07" form="short">Лип</term>
- <term name="month-08" form="short">Сер</term>
- <term name="month-09" form="short">Вер</term>
- <term name="month-10" form="short">Жов</term>
- <term name="month-11" form="short">Лис</term>
- <term name="month-12" form="short">Груд</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="uk">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">на</term>
+ <term name="in">в</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accessed</term>
+ <term name="retrieved">retrieved</term>
+ <term name="from">із</term>
+ <term name="forthcoming">forthcoming</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">n.d.</term>
+ <term name="and">і</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">інтервю</term>
+ <term name="letter">лист</term>
+ <term name="anonymous">анонімний</term>
+ <term name="anonymous" form="short">анон.</term>
+ <term name="and others">та інші</term>
+ <term name="in press">у пресі</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">інтернет</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">антропологія</term>
+ <term name="astronomy">астрономія</term>
+ <term name="biology">біологія</term>
+ <term name="botany">ботаніка</term>
+ <term name="chemistry">хімія</term>
+ <term name="engineering">інженерія</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">географія</term>
+ <term name="geology">геологія</term>
+ <term name="history">історія</term>
+ <term name="humanities">гуманітарні</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">література</term>
+ <term name="math">математика</term>
+ <term name="medicine">медицина</term>
+ <term name="philosophy">філософія</term>
+ <term name="physics">фізика</term>
+ <term name="psychology">психологія</term>
+ <term name="sociology">соціологія</term>
+ <term name="science">наука</term>
+ <term name="political_science">політичні науки</term>
+ <term name="social_science">соціальні науки</term>
+ <term name="theology">теологія</term>
+ <term name="zoology">зоологія</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>line</single>
+ <multiple>lines</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraph</single>
+ <multiple>paragraph</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">no</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>translator</single>
+ <multiple>translators</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tran</single>
+ <multiple>trans</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">edited by</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">translated by</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Січень</term>
+ <term name="month-02">Лютий</term>
+ <term name="month-03">Березень</term>
+ <term name="month-04">Квітень</term>
+ <term name="month-05">Травень</term>
+ <term name="month-06">Червень</term>
+ <term name="month-07">Липень</term>
+ <term name="month-08">Серпень</term>
+ <term name="month-09">Вересень</term>
+ <term name="month-10">Жовтень</term>
+ <term name="month-11">Листопад</term>
+ <term name="month-12">Грудень</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Січ</term>
+ <term name="month-02" form="short">Лют</term>
+ <term name="month-03" form="short">Бер</term>
+ <term name="month-04" form="short">Квіт</term>
+ <term name="month-05" form="short">Трав</term>
+ <term name="month-06" form="short">Чер</term>
+ <term name="month-07" form="short">Лип</term>
+ <term name="month-08" form="short">Сер</term>
+ <term name="month-09" form="short">Вер</term>
+ <term name="month-10" form="short">Жов</term>
+ <term name="month-11" form="short">Лис</term>
+ <term name="month-12" form="short">Груд</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-vi-VN.xml b/chrome/content/zotero/locale/csl/locales-vi-VN.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="vi">
- <term name="at">at</term>
- <term name="in">trong</term>
- <term name="ibid">n.t.</term>
- <term name="accessed">truy cập</term>
- <term name="retrieved">truy vấn</term>
- <term name="from">từ</term>
- <term name="forthcoming">sắp tới</term>
- <term name="references">tham khảo</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">không ngày</term>
- <term name="and">và</term>
- <term name="et-al">và c.s.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>dòng</single>
- <multiple>dòng</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>trang</single>
- <multiple>trang</multiple>
- </term>
- <term name="paragraph">
- <single>đoạn văn</single>
- <multiple>đoạn văn</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">số p.h</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>tr</single>
- <multiple>tr</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>biên tập viên</single>
- <multiple>biên tập viên</multiple>
- </term>
- <term name="translator">
- <single>biên dịch viên</single>
- <multiple>biên dịch viên</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>b.t.v</single>
- <multiple>b.t.v</multiple>
- </term>
- <term name="translator" form="short">
- <single>b.d.v</single>
- <multiple>b.d.v</multiple>
- </term>
- <term name="editor" form="verb">biên tập bởi</term>
- <term name="translator" form="verb">biên dịch bởi</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">b.t</term>
- <term name="translator" form="verb-short">b.d</term>
- <term name="month-01">Tháng Giêng</term>
- <term name="month-02">Tháng Hai</term>
- <term name="month-03">Tháng Ba</term>
- <term name="month-04">Tháng Tư</term>
- <term name="month-05">Tháng Năm</term>
- <term name="month-06">Tháng Sáu</term>
- <term name="month-07">Tháng Bảy</term>
- <term name="month-08">Tháng Tám</term>
- <term name="month-09">Tháng Chín</term>
- <term name="month-10">Tháng Mười</term>
- <term name="month-11">Tháng Mười-Một</term>
- <term name="month-12">Tháng Chạp</term>
- <term name="month-01" form="short">tháng 1</term>
- <term name="month-02" form="short">tháng 2</term>
- <term name="month-03" form="short">tháng 3</term>
- <term name="month-04" form="short">tháng 4</term>
- <term name="month-05" form="short">tháng 5</term>
- <term name="month-06" form="short">tháng 6</term>
- <term name="month-07" form="short">tháng 7</term>
- <term name="month-08" form="short">tháng 8</term>
- <term name="month-09" form="short">tháng 9</term>
- <term name="month-10" form="short">tháng 10</term>
- <term name="month-11" form="short">tháng 11</term>
- <term name="month-12" form="short">tháng 12</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="vi">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">trong</term>
+ <term name="ibid">n.t.</term>
+ <term name="accessed">truy cập</term>
+ <term name="retrieved">truy vấn</term>
+ <term name="from">từ</term>
+ <term name="forthcoming">sắp tới</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">không ngày</term>
+ <term name="and">và</term>
+ <term name="et-al">và c.s.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>dòng</single>
+ <multiple>dòng</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>trang</single>
+ <multiple>trang</multiple>
+ </term>
+ <term name="paragraph">
+ <single>đoạn văn</single>
+ <multiple>đoạn văn</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">số p.h</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>tr</single>
+ <multiple>tr</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>biên tập viên</single>
+ <multiple>biên tập viên</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>biên dịch viên</single>
+ <multiple>biên dịch viên</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>b.t.v</single>
+ <multiple>b.t.v</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>b.d.v</single>
+ <multiple>b.d.v</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">biên tập bởi</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">biên dịch bởi</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">b.t</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">b.d</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Tháng Giêng</term>
+ <term name="month-02">Tháng Hai</term>
+ <term name="month-03">Tháng Ba</term>
+ <term name="month-04">Tháng Tư</term>
+ <term name="month-05">Tháng Năm</term>
+ <term name="month-06">Tháng Sáu</term>
+ <term name="month-07">Tháng Bảy</term>
+ <term name="month-08">Tháng Tám</term>
+ <term name="month-09">Tháng Chín</term>
+ <term name="month-10">Tháng Mười</term>
+ <term name="month-11">Tháng Mười-Một</term>
+ <term name="month-12">Tháng Chạp</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">tháng 1</term>
+ <term name="month-02" form="short">tháng 2</term>
+ <term name="month-03" form="short">tháng 3</term>
+ <term name="month-04" form="short">tháng 4</term>
+ <term name="month-05" form="short">tháng 5</term>
+ <term name="month-06" form="short">tháng 6</term>
+ <term name="month-07" form="short">tháng 7</term>
+ <term name="month-08" form="short">tháng 8</term>
+ <term name="month-09" form="short">tháng 9</term>
+ <term name="month-10" form="short">tháng 10</term>
+ <term name="month-11" form="short">tháng 11</term>
+ <term name="month-12" form="short">tháng 12</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-zh-CN.xml b/chrome/content/zotero/locale/csl/locales-zh-CN.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="zh">
- <term name="at">at</term>
- <term name="in">in</term>
- <term name="ibid">ibid</term>
- <term name="accessed">accessed</term>
- <term name="retrieved">retrieved</term>
- <term name="from">from</term>
- <term name="forthcoming">forthcoming</term>
- <term name="references">References</term>
- <term name="reference item">
- <single>source</single>
- <multiple>sources</multiple>
- </term>
- <term name="no date">nd</term>
- <term name="and">and</term>
- <term name="et-al">et al.</term>
- <term name="interview">interview</term>
- <term name="letter">letter</term>
- <term name="anonymous">anonymous</term>
- <term name="anonymous" form="short">anon</term>
- <term name="and others">and others</term>
- <term name="in press">in press</term>
- <term name="online">online</term>
- <term name="cited">cited</term>
- <term name="internet">internet</term>
- <term name="presented at">presented at the</term>
- <term name="anthropology">anthropology</term>
- <term name="astronomy">astronomy</term>
- <term name="biology">biology</term>
- <term name="botany">botany</term>
- <term name="chemistry">chemistry</term>
- <term name="engineering">engineering</term>
- <term name="generic-base">generic base</term>
- <term name="geography">geography</term>
- <term name="geology">geology</term>
- <term name="history">history</term>
- <term name="humanities">humanities</term>
- <term name="literature">literature</term>
- <term name="math">math</term>
- <term name="medicine">medicine</term>
- <term name="philosophy">philosophy</term>
- <term name="physics">physics</term>
- <term name="psychology">psychology</term>
- <term name="sociology">sociology</term>
- <term name="science">science</term>
- <term name="political_science">political science</term>
- <term name="social_science">social science</term>
- <term name="theology">theology</term>
- <term name="zoology">zoology</term>
- <term name="book">
- <single>book</single>
- <multiple>books</multiple>
- </term>
- <term name="chapter">
- <single>chapter</single>
- <multiple>chapters</multiple>
- </term>
- <term name="column">
- <single>column</single>
- <multiple>columns</multiple>
- </term>
- <term name="figure">
- <single>figure</single>
- <multiple>figures</multiple>
- </term>
- <term name="folio">
- <single>folio</single>
- <multiple>folios</multiple>
- </term>
- <term name="issue">
- <single>number</single>
- <multiple>numbers</multiple>
- </term>
- <term name="line">
- <single>line</single>
- <multiple>line</multiple>
- </term>
- <term name="note">
- <single>note</single>
- <multiple>notes</multiple>
- </term>
- <term name="opus">
- <single>opus</single>
- <multiple>opera</multiple>
- </term>
- <term name="page">
- <single>page</single>
- <multiple>pages</multiple>
- </term>
- <term name="paragraph">
- <single>paragraph</single>
- <multiple>paragraph</multiple>
- </term>
- <term name="part">
- <single>part</single>
- <multiple>parts</multiple>
- </term>
- <term name="section">
- <single>section</single>
- <multiple>sections</multiple>
- </term>
- <term name="volume">
- <single>volume</single>
- <multiple>volumes</multiple>
- </term>
- <term name="edition">
- <single>edition</single>
- <multiple>editions</multiple>
- </term>
- <term name="verse">
- <single>verse</single>
- <multiple>verses</multiple>
- </term>
- <term name="sub verbo">
- <single>sub verbo</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="book" form="short">bk</term>
- <term name="chapter" form="short">chap</term>
- <term name="column" form="short">col</term>
- <term name="figure" form="short">fig</term>
- <term name="folio" form="short">f</term>
- <term name="issue" form="short">no</term>
- <term name="opus" form="short">op</term>
- <term name="page" form="short">
- <single>p</single>
- <multiple>pp</multiple>
- </term>
- <term name="paragraph" form="short">para</term>
- <term name="part" form="short">pt</term>
- <term name="section" form="short">sec</term>
- <term name="sub verbo" form="short">
- <single>s.v</single>
- <multiple>s.vv</multiple>
- </term>
- <term name="verse" form="short">
- <single>v</single>
- <multiple>vv</multiple>
- </term>
- <term name="volume" form="short">
- <single>vol</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">ed</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single/>
- <multiple/>
- </term>
- <term name="editor">
- <single>editor</single>
- <multiple>editors</multiple>
- </term>
- <term name="translator">
- <single>translator</single>
- <multiple>translators</multiple>
- </term>
- <term name="author" form="short">
- <single/>
- <multiple/>
- </term>
- <term name="editor" form="short">
- <single>ed</single>
- <multiple>eds</multiple>
- </term>
- <term name="translator" form="short">
- <single>tran</single>
- <multiple>trans</multiple>
- </term>
- <term name="editor" form="verb">edited by</term>
- <term name="translator" form="verb">translated by</term>
- <term name="recipient" form="verb">to</term>
- <term name="interviewer" form="verb">interview by</term>
- <term name="editor" form="verb-short">ed</term>
- <term name="translator" form="verb-short">trans</term>
- <term name="month-01">January</term>
- <term name="month-02">February</term>
- <term name="month-03">March</term>
- <term name="month-04">April</term>
- <term name="month-05">May</term>
- <term name="month-06">June</term>
- <term name="month-07">July</term>
- <term name="month-08">August</term>
- <term name="month-09">September</term>
- <term name="month-10">October</term>
- <term name="month-11">November</term>
- <term name="month-12">December</term>
- <term name="month-01" form="short">Jan</term>
- <term name="month-02" form="short">Feb</term>
- <term name="month-03" form="short">Mar</term>
- <term name="month-04" form="short">Apr</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">Jun</term>
- <term name="month-07" form="short">Jul</term>
- <term name="month-08" form="short">Aug</term>
- <term name="month-09" form="short">Sep</term>
- <term name="month-10" form="short">Oct</term>
- <term name="month-11" form="short">Nov</term>
- <term name="month-12" form="short">Dec</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="zh">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">at</term>
+ <term name="in">in</term>
+ <term name="ibid">ibid</term>
+ <term name="accessed">accessed</term>
+ <term name="retrieved">retrieved</term>
+ <term name="from">from</term>
+ <term name="forthcoming">forthcoming</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">nd</term>
+ <term name="and">and</term>
+ <term name="et-al">et al.</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">interview</term>
+ <term name="letter">letter</term>
+ <term name="anonymous">anonymous</term>
+ <term name="anonymous" form="short">anon</term>
+ <term name="and others">and others</term>
+ <term name="in press">in press</term>
+ <term name="online">online</term>
+ <term name="cited">cited</term>
+ <term name="internet">internet</term>
+ <term name="presented at">presented at the</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">anthropology</term>
+ <term name="astronomy">astronomy</term>
+ <term name="biology">biology</term>
+ <term name="botany">botany</term>
+ <term name="chemistry">chemistry</term>
+ <term name="engineering">engineering</term>
+ <term name="generic-base">generic base</term>
+ <term name="geography">geography</term>
+ <term name="geology">geology</term>
+ <term name="history">history</term>
+ <term name="humanities">humanities</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">literature</term>
+ <term name="math">math</term>
+ <term name="medicine">medicine</term>
+ <term name="philosophy">philosophy</term>
+ <term name="physics">physics</term>
+ <term name="psychology">psychology</term>
+ <term name="sociology">sociology</term>
+ <term name="science">science</term>
+ <term name="political_science">political science</term>
+ <term name="social_science">social science</term>
+ <term name="theology">theology</term>
+ <term name="zoology">zoology</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>book</single>
+ <multiple>books</multiple>
+ </term>
+ <term name="chapter">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="column">
+ <single>column</single>
+ <multiple>columns</multiple>
+ </term>
+ <term name="figure">
+ <single>figure</single>
+ <multiple>figures</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="line">
+ <single>line</single>
+ <multiple>line</multiple>
+ </term>
+ <term name="note">
+ <single>note</single>
+ <multiple>notes</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="paragraph">
+ <single>paragraph</single>
+ <multiple>paragraph</multiple>
+ </term>
+ <term name="part">
+ <single>part</single>
+ <multiple>parts</multiple>
+ </term>
+ <term name="section">
+ <single>section</single>
+ <multiple>sections</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="edition">
+ <single>edition</single>
+ <multiple>editions</multiple>
+ </term>
+ <term name="verse">
+ <single>verse</single>
+ <multiple>verses</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">bk</term>
+ <term name="chapter" form="short">chap</term>
+ <term name="column" form="short">col</term>
+ <term name="figure" form="short">fig</term>
+ <term name="folio" form="short">f</term>
+ <term name="issue" form="short">no</term>
+ <term name="opus" form="short">op</term>
+ <term name="page" form="short">
+ <single>p</single>
+ <multiple>pp</multiple>
+ </term>
+ <term name="paragraph" form="short">para</term>
+ <term name="part" form="short">pt</term>
+ <term name="section" form="short">sec</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v</single>
+ <multiple>vv</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol</single>
+ <multiple>vols</multiple>
+ </term>
+ <term name="edition" form="short">ed</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>translator</single>
+ <multiple>translators</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single/>
+ <multiple/>
+ </term>
+ <term name="editor" form="short">
+ <single>ed</single>
+ <multiple>eds</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>tran</single>
+ <multiple>trans</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">edited by</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">translated by</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">to</term>
+ <term name="interviewer" form="verb">interview by</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">ed</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">trans</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">January</term>
+ <term name="month-02">February</term>
+ <term name="month-03">March</term>
+ <term name="month-04">April</term>
+ <term name="month-05">May</term>
+ <term name="month-06">June</term>
+ <term name="month-07">July</term>
+ <term name="month-08">August</term>
+ <term name="month-09">September</term>
+ <term name="month-10">October</term>
+ <term name="month-11">November</term>
+ <term name="month-12">December</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Jan</term>
+ <term name="month-02" form="short">Feb</term>
+ <term name="month-03" form="short">Mar</term>
+ <term name="month-04" form="short">Apr</term>
+ <term name="month-05" form="short">May</term>
+ <term name="month-06" form="short">Jun</term>
+ <term name="month-07" form="short">Jul</term>
+ <term name="month-08" form="short">Aug</term>
+ <term name="month-09" form="short">Sep</term>
+ <term name="month-10" form="short">Oct</term>
+ <term name="month-11" form="short">Nov</term>
+ <term name="month-12" form="short">Dec</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/locale/csl/locales-zh-TW.xml b/chrome/content/zotero/locale/csl/locales-zh-TW.xml
@@ -1,211 +1,299 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<terms xmlns="http://purl.org/net/xbiblio/csl">
- <locale xml:lang="zh">
- <term name="at">在</term>
- <term name="in">在</term>
- <term name="ibid">同上出處</term>
- <term name="accessed">被取用</term>
- <term name="retrieved">被取回</term>
- <term name="from">從</term>
- <term name="forthcoming">將來的</term>
- <term name="references">參考資料</term>
- <term name="reference item">
- <single>來源</single>
- <multiple>來源</multiple>
- </term>
- <term name="no date">無日期</term>
- <term name="and">及</term>
- <term name="et-al">等人</term>
- <term name="interview">訪問</term>
- <term name="letter">信件</term>
- <term name="anonymous">不具名的</term>
- <term name="anonymous" form="short">無名</term>
- <term name="and others">及其他</term>
- <term name="in press">印行中</term>
- <term name="online">在線上</term>
- <term name="cited">被引用</term>
- <term name="internet">網際網路</term>
- <term name="presented at">簡報於</term>
- <term name="anthropology">人類學</term>
- <term name="astronomy">天文學</term>
- <term name="biology">生物學</term>
- <term name="botany">植物學</term>
- <term name="chemistry">化學</term>
- <term name="engineering">工程學</term>
- <term name="generic-base">一般基礎</term>
- <term name="geography">地理學</term>
- <term name="geology">地質學</term>
- <term name="history">歷史學</term>
- <term name="humanities">人文學科</term>
- <term name="literature">文學</term>
- <term name="math">數學</term>
- <term name="medicine">醫學</term>
- <term name="philosophy">哲學</term>
- <term name="physics">物理學</term>
- <term name="psychology">心理學</term>
- <term name="sociology">社會學</term>
- <term name="science">自然科學</term>
- <term name="political_science">政治科學</term>
- <term name="social_science">社會科學</term>
- <term name="theology">神學</term>
- <term name="zoology">動物學</term>
- <term name="book">
- <single>書</single>
- <multiple>書</multiple>
- </term>
- <term name="chapter">
- <single>章</single>
- <multiple>章</multiple>
- </term>
- <term name="column">
- <single>欄</single>
- <multiple>欄</multiple>
- </term>
- <term name="figure">
- <single>圖</single>
- <multiple>圖</multiple>
- </term>
- <term name="folio">
- <single>對開紙</single>
- <multiple>對開紙</multiple>
- </term>
- <term name="issue">
- <single>期數</single>
- <multiple>期數</multiple>
- </term>
- <term name="line">
- <single>行</single>
- <multiple>行</multiple>
- </term>
- <term name="note">
- <single>筆記</single>
- <multiple>筆記</multiple>
- </term>
- <term name="opus">
- <single>作品</single>
- <multiple>作品</multiple>
- </term>
- <term name="page">
- <single>頁</single>
- <multiple>頁</multiple>
- </term>
- <term name="paragraph">
- <single>段落</single>
- <multiple>段落</multiple>
- </term>
- <term name="part">
- <single>部</single>
- <multiple>部</multiple>
- </term>
- <term name="section">
- <single>節</single>
- <multiple>節</multiple>
- </term>
- <term name="volume">
- <single>冊</single>
- <multiple>冊</multiple>
- </term>
- <term name="edition">
- <single>版本</single>
- <multiple>版本</multiple>
- </term>
- <term name="verse">
- <single>詩句</single>
- <multiple>詩句</multiple>
- </term>
- <term name="sub verbo">
- <single>詞下</single>
- <multiple>詞下</multiple>
- </term>
- <term name="book" form="short">書</term>
- <term name="chapter" form="short">章</term>
- <term name="column" form="short">欄</term>
- <term name="figure" form="short">圖</term>
- <term name="folio" form="short">開</term>
- <term name="issue" form="short">期</term>
- <term name="opus" form="short">作</term>
- <term name="page" form="short">
- <single>頁</single>
- <multiple>頁</multiple>
- </term>
- <term name="paragraph" form="short">段</term>
- <term name="part" form="short">部</term>
- <term name="section" form="short">節</term>
- <term name="sub verbo" form="short">
- <single>詞下</single>
- <multiple>詞下</multiple>
- </term>
- <term name="verse" form="short">
- <single>句</single>
- <multiple>句</multiple>
- </term>
- <term name="volume" form="short">
- <single>冊</single>
- <multiple>冊</multiple>
- </term>
- <term name="edition">edition</term>
- <term name="edition" form="short">版</term>
- <term name="paragraph" form="symbol">
- <single>¶</single>
- <multiple>¶¶</multiple>
- </term>
- <term name="section" form="symbol">
- <single>§</single>
- <multiple>§§</multiple>
- </term>
- <term name="author">
- <single>作者</single>
- <multiple>作者</multiple>
- </term>
- <term name="editor">
- <single>編輯</single>
- <multiple>編輯</multiple>
- </term>
- <term name="translator">
- <single>翻譯</single>
- <multiple>翻譯</multiple>
- </term>
- <term name="author" form="short">
- <single>作</single>
- <multiple>作</multiple>
- </term>
- <term name="editor" form="short">
- <single>編</single>
- <multiple>編</multiple>
- </term>
- <term name="translator" form="short">
- <single>譯</single>
- <multiple>譯</multiple>
- </term>
- <term name="editor" form="verb">編者是</term>
- <term name="translator" form="verb">譯者是</term>
- <term name="recipient" form="verb">授與</term>
- <term name="interviewer" form="verb">訪問者是</term>
- <term name="editor" form="verb-short">編</term>
- <term name="translator" form="verb-short">譯</term>
- <term name="month-01">一月</term>
- <term name="month-02">二月</term>
- <term name="month-03">三月</term>
- <term name="month-04">四月</term>
- <term name="month-05">五月</term>
- <term name="month-06">六月</term>
- <term name="month-07">七月</term>
- <term name="month-08">八月</term>
- <term name="month-09">九月</term>
- <term name="month-10">十月</term>
- <term name="month-11">十一月</term>
- <term name="month-12">十二月</term>
- <term name="month-01" form="short">1月</term>
- <term name="month-02" form="short">2月</term>
- <term name="month-03" form="short">3月</term>
- <term name="month-04" form="short">4月</term>
- <term name="month-05" form="short">5月</term>
- <term name="month-06" form="short">6月</term>
- <term name="month-07" form="short">7月</term>
- <term name="month-08" form="short">8月</term>
- <term name="month-09" form="short">9月</term>
- <term name="month-10" form="short">10月</term>
- <term name="month-11" form="short">11月</term>
- <term name="month-12" form="short">12月</term>
- </locale>
-</terms>
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="zh">
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="month" suffix=" "/>
+ <date-part name="day" suffix=", "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
+ <date-part name="day" prefix="-" range-delimiter="/"/>
+ </date>
+ <terms>
+ <term name="at">在</term>
+ <term name="in">在</term>
+ <term name="ibid">同上出處</term>
+ <term name="accessed">被取用</term>
+ <term name="retrieved">被取回</term>
+ <term name="from">從</term>
+ <term name="forthcoming">將來的</term>
+ <term name="reference">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="no date">無日期</term>
+ <term name="and">及</term>
+ <term name="et-al">等人</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="interview">訪問</term>
+ <term name="letter">信件</term>
+ <term name="anonymous">不具名的</term>
+ <term name="anonymous" form="short">無名</term>
+ <term name="and others">及其他</term>
+ <term name="in press">印行中</term>
+ <term name="online">在線上</term>
+ <term name="cited">被引用</term>
+ <term name="internet">網際網路</term>
+ <term name="presented at">簡報於</term>
+ <term name="ad">AD</term>
+ <term name="bc">BC</term>
+
+ <!-- QUOTES -->
+ <term name="open-quote">“</term>
+ <term name="close-quote">”</term>
+ <term name="open-inner-quote">‘</term>
+ <term name="close-inner-quote">’</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal-01">st</term>
+ <term name="ordinal-02">nd</term>
+ <term name="ordinal-03">rd</term>
+ <term name="ordinal-04">th</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01">first</term>
+ <term name="long-ordinal-02">second</term>
+ <term name="long-ordinal-03">third</term>
+ <term name="long-ordinal-04">fourth</term>
+ <term name="long-ordinal-05">fifth</term>
+ <term name="long-ordinal-06">sixth</term>
+ <term name="long-ordinal-07">seventh</term>
+ <term name="long-ordinal-08">eighth</term>
+ <term name="long-ordinal-09">ninth</term>
+ <term name="long-ordinal-10">tenth</term>
+
+ <!-- CATEGORIES -->
+ <term name="anthropology">人類學</term>
+ <term name="astronomy">天文學</term>
+ <term name="biology">生物學</term>
+ <term name="botany">植物學</term>
+ <term name="chemistry">化學</term>
+ <term name="engineering">工程學</term>
+ <term name="generic-base">一般基礎</term>
+ <term name="geography">地理學</term>
+ <term name="geology">地質學</term>
+ <term name="history">歷史學</term>
+ <term name="humanities">人文學科</term>
+ <term name="linguistics">linguistics</term>
+ <term name="literature">文學</term>
+ <term name="math">數學</term>
+ <term name="medicine">醫學</term>
+ <term name="philosophy">哲學</term>
+ <term name="physics">物理學</term>
+ <term name="psychology">心理學</term>
+ <term name="sociology">社會學</term>
+ <term name="science">自然科學</term>
+ <term name="political_science">政治科學</term>
+ <term name="social_science">社會科學</term>
+ <term name="theology">神學</term>
+ <term name="zoology">動物學</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="book">
+ <single>書</single>
+ <multiple>書</multiple>
+ </term>
+ <term name="chapter">
+ <single>章</single>
+ <multiple>章</multiple>
+ </term>
+ <term name="column">
+ <single>欄</single>
+ <multiple>欄</multiple>
+ </term>
+ <term name="figure">
+ <single>圖</single>
+ <multiple>圖</multiple>
+ </term>
+ <term name="folio">
+ <single>對開紙</single>
+ <multiple>對開紙</multiple>
+ </term>
+ <term name="issue">
+ <single>期數</single>
+ <multiple>期數</multiple>
+ </term>
+ <term name="line">
+ <single>行</single>
+ <multiple>行</multiple>
+ </term>
+ <term name="note">
+ <single>筆記</single>
+ <multiple>筆記</multiple>
+ </term>
+ <term name="opus">
+ <single>作品</single>
+ <multiple>作品</multiple>
+ </term>
+ <term name="page">
+ <single>頁</single>
+ <multiple>頁</multiple>
+ </term>
+ <term name="paragraph">
+ <single>段落</single>
+ <multiple>段落</multiple>
+ </term>
+ <term name="part">
+ <single>部</single>
+ <multiple>部</multiple>
+ </term>
+ <term name="section">
+ <single>節</single>
+ <multiple>節</multiple>
+ </term>
+ <term name="volume">
+ <single>冊</single>
+ <multiple>冊</multiple>
+ </term>
+ <term name="edition">
+ <single>版本</single>
+ <multiple>版本</multiple>
+ </term>
+ <term name="verse">
+ <single>詩句</single>
+ <multiple>詩句</multiple>
+ </term>
+ <term name="sub verbo">
+ <single>sub verbo</single>
+ <multiple>s.vv</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">書</term>
+ <term name="chapter" form="short">章</term>
+ <term name="column" form="short">欄</term>
+ <term name="figure" form="short">圖</term>
+ <term name="folio" form="short">開</term>
+ <term name="issue" form="short">期</term>
+ <term name="opus" form="short">作</term>
+ <term name="page" form="short">
+ <single>頁</single>
+ <multiple>頁</multiple>
+ </term>
+ <term name="paragraph" form="short">段</term>
+ <term name="part" form="short">部</term>
+ <term name="section" form="short">節</term>
+ <term name="sub verbo" form="short">
+ <single>s.v</single>
+ <multiple>s.vv</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>句</single>
+ <multiple>句</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>冊</single>
+ <multiple>冊</multiple>
+ </term>
+ <term name="edition" form="short">版</term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="author">
+ <single>作者</single>
+ <multiple>作者</multiple>
+ </term>
+ <term name="editor">
+ <single>編輯</single>
+ <multiple>編輯</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editors</multiple>
+ </term>
+ <term name="translator">
+ <single>翻譯</single>
+ <multiple>翻譯</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor & translator</single>
+ <multiple>editors & translators</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="author" form="short">
+ <single>作</single>
+ <multiple>作</multiple>
+ </term>
+ <term name="editor" form="short">
+ <single>編</single>
+ <multiple>編</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="translator" form="short">
+ <single>譯</single>
+ <multiple>譯</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. & tran.</single>
+ <multiple>eds. & trans.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="editor" form="verb">編者是</term>
+ <term name="editorial-director" form="verb">edited by</term>
+ <term name="translator" form="verb">譯者是</term>
+ <term name="editortranslator" form="verb">edited & translated by</term>
+ <term name="recipient" form="verb">授與</term>
+ <term name="interviewer" form="verb">訪問者是</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="editor" form="verb-short">編</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="translator" form="verb-short">譯</term>
+ <term name="editortranslator" form="verb-short">ed. & trans. by</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">一月</term>
+ <term name="month-02">二月</term>
+ <term name="month-03">三月</term>
+ <term name="month-04">四月</term>
+ <term name="month-05">五月</term>
+ <term name="month-06">六月</term>
+ <term name="month-07">七月</term>
+ <term name="month-08">八月</term>
+ <term name="month-09">九月</term>
+ <term name="month-10">十月</term>
+ <term name="month-11">十一月</term>
+ <term name="month-12">十二月</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">1月</term>
+ <term name="month-02" form="short">2月</term>
+ <term name="month-03" form="short">3月</term>
+ <term name="month-04" form="short">4月</term>
+ <term name="month-05" form="short">5月</term>
+ <term name="month-06" form="short">6月</term>
+ <term name="month-07" form="short">7月</term>
+ <term name="month-08" form="short">8月</term>
+ <term name="month-09" form="short">9月</term>
+ <term name="month-10" form="short">10月</term>
+ <term name="month-11" form="short">11月</term>
+ <term name="month-12" form="short">12月</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Spring</term>
+ <term name="season-02">Summer</term>
+ <term name="season-03">Autumn</term>
+ <term name="season-04">Winter</term>
+ </terms>
+</locale>
+\ No newline at end of file
diff --git a/chrome/content/zotero/rtfScan.js b/chrome/content/zotero/rtfScan.js
@@ -495,58 +495,47 @@ var Zotero_RTFScan = new function() {
function _formatRTF() {
// load style and create ItemSet with all items
- var style = Zotero.Styles.get(document.getElementById("style-listbox").selectedItem.value).csl;
+ var zStyle = Zotero.Styles.get(document.getElementById("style-listbox").selectedItem.value)
+ var style = zStyle.csl;
+ style.setOutputFormat("rtf");
var isNote = style.class == "note";
- var itemSet = style.createItemSet();
// create citations
var k = 0;
var cslCitations = [];
+ var itemIDs = {};
var shouldBeSubsequent = {};
for(var i=0; i<citations.length; i++) {
var citation = citations[i];
- var cslCitation = style.createCitation();
- cslCitations.push(cslCitation);
+ var cslCitation = {"citationItems":[], "properties":{}};
+ if(isNote) {
+ cslCitation.properties.noteIndex = i;
+ }
// create citation items
for(var j=0; j<citation.citationStrings.length; j++) {
- var itemID = citationItemIDs[citation.citationStrings[j]];
- var cslItem = itemSet.getItemsByIds(itemID)[0];
-
- // determine position
- var position = Zotero.CSL.POSITION_SUBSEQUENT;
- if(!cslItem) { // if item is not yet in item set, add it and mark as first citation
- var position = Zotero.CSL.POSITION_FIRST;
- var cslItem = itemSet.add(itemID)[0];
- } else if(// this citation and previous citation only cite one item
- citation.citationStrings.length == citations[i-1].citationStrings.length == 1
- // this citation and previous citation cite the same item
- && citation.citationStrings[0] == citations[i-1].citationStrings[0]
- // either previous item had no locator, or this item has a locator
- && (!citations[i-1].pages[0] || citation.pages[0])) {
- if(citation.pages[0] == citations[i-1].pages[0]) {
- var position = Zotero.CSL.POSITION_IBID;
- } else {
- var position = Zotero.CSL.POSITION_IBID_WITH_LOCATOR;
- }
- }
-
- var cslCitationItem = new Zotero.CSL.CitationItem(cslItem);
- cslCitation.add([cslCitationItem]);
- cslCitationItem.position = position;
- cslCitationItem.locator = citation.pages[j];
- cslCitationItem.suppressAuthor = citation.suppressAuthor && !isNote;
+ var citationItem = {};
+ citationItem.id = citationItemIDs[citation.citationStrings[j]][0];
+ itemIDs[citationItem.id] = true;
+ citationItem.locator = citation.pages[j];
+ citationItem.label = "page";
+ citationItem["suppress-author"] = citation.suppressAuthor && !isNote;
+ cslCitation.citationItems.push(citationItem);
}
+
+ cslCitations.push(cslCitation);
}
+ Zotero.debug(cslCitations);
- // sort item set, now that we have the indices
- itemSet.resort();
+ itemIDs = [itemID for(itemID in itemIDs)];
+ Zotero.debug(itemIDs);
+ style.updateItems(itemIDs);
// format citations
var contentArray = [];
var lastEnd = 0;
for(var i=0; i<citations.length; i++) {
- var citation = style.formatCitation(cslCitations[i], "RTF");
+ var citation = style.appendCitationCluster(cslCitations[i], true)[0][1];
Zotero.debug("Formatted "+citation);
// if using notes, we might have to move the note after the punctuation
@@ -576,10 +565,9 @@ var Zotero_RTFScan = new function() {
contents = contentArray.join("");
// add bibliography
- if(style.hasBibliography) {
- var bibliography = style.formatBibliography(itemSet, "RTF");
- // cut off initial font formatting
- bibliography = bibliography.substr(bibliography.indexOf("\r\n"));
+ if(zStyle.hasBibliography) {
+ var bibliography = Zotero.Cite.makeFormattedBibliography(style, "rtf");
+ bibliography = bibliography.substring(5, bibliography.length-1);
// fix line breaks
var linebreak = "\r\n";
if(contents.indexOf("\r\n") == -1) {
@@ -591,14 +579,14 @@ var Zotero_RTFScan = new function() {
contents = contents.replace(BIBLIOGRAPHY_PLACEHOLDER, bibliography);
} else {
// add two newlines before bibliography
- bibliography = linebreak+"\\"+linebreak+"\\"+bibliography;
+ bibliography = linebreak+"\\"+linebreak+"\\"+linebreak+bibliography;
// add bibliography automatically inside last set of brackets closed
const bracketRe = /^\{+/;
var m = bracketRe.exec(contents);
if(m) {
var closeBracketRe = new RegExp("(\\}{"+m[0].length+"}\\s*)$");
- contents = contents.replace(closeBracketRe, bibliography+"\\1");
+ contents = contents.replace(closeBracketRe, bibliography+"$1");
} else {
contents += bibliography;
}
diff --git a/chrome/content/zotero/xpcom/cite.js b/chrome/content/zotero/xpcom/cite.js
@@ -0,0 +1,318 @@
+Zotero.Cite = function(){}
+Zotero.Cite.System = function(){};
+
+/**
+ * Mappings for names
+ * Note that this is the reverse of the text variable map, since all mappings should be one to one
+ * and it makes the code cleaner
+ */
+Zotero.Cite.System._zoteroNameMap = {
+ "author":"author",
+ "editor":"editor",
+ "translator":"translator",
+ "seriesEditor":"collection-editor",
+ "bookAuthor":"container-author"
+}
+
+/**
+ * Mappings for text variables
+ */
+Zotero.Cite.System._zoteroFieldMap = {
+ "long":{
+ "title":["title"],
+ "container-title":["publicationTitle", "reporter", "code"], /* reporter and code should move to SQL mapping tables */
+ "collection-title":["seriesTitle", "series"],
+ "collection-number":["seriesNumber"],
+ "publisher":["publisher", "distributor"], /* distributor should move to SQL mapping tables */
+ "publisher-place":["place"],
+ "authority":["court"],
+ "page":["pages"],
+ "volume":["volume"],
+ "issue":["issue"],
+ "number-of-volumes":["numberOfVolumes"],
+ "edition":["edition"],
+ "version":["version"],
+ "section":["section"],
+ "genre":["type", "artworkSize"], /* artworkSize should move to SQL mapping tables, or added as a CSL variable */
+ "medium":["medium"],
+ "archive":["archive"],
+ "archive_location":["archiveLocation"],
+ "event":["meetingName", "conferenceName"], /* these should be mapped to the same base field in SQL mapping tables */
+ "event-place":["place"],
+ "abstract":["abstractNote"],
+ "URL":["url"],
+ "DOI":["DOI"],
+ "ISBN":["ISBN"],
+ "call-number":["callNumber"],
+ "note":["extra"],
+ "number":["number"],
+ "references":["history"]
+ },
+ "short":{
+ "title":["shortTitle", "title"],
+ "container-title":["journalAbbreviation"],
+ "genre":["shortTitle", "type"] /* needed for subsequent citations of items with no title */
+ }
+}
+
+Zotero.Cite.System._zoteroDateMap = {
+ "issued":"date",
+ "accessed":"accessDate"
+}
+
+Zotero.Cite.System._zoteroTypeMap = {
+ 'book':"book",
+ 'bookSection':'chapter',
+ 'journalArticle':"article-journal",
+ 'magazineArticle':"article-magazine",
+ 'newspaperArticle':"article-newspaper",
+ 'thesis':"thesis",
+ 'encyclopediaArticle':"chapter",
+ 'dictionaryEntry':"chapter",
+ 'conferencePaper':"paper-conference",
+ 'letter':"personal_communication",
+ 'manuscript':"manuscript",
+ 'interview':"interview",
+ 'film':"motion_picture",
+ 'artwork':"graphic",
+ 'webpage':"webpage",
+ 'report':"report",
+ 'bill':"bill",
+ 'case':"legal_case",
+ 'hearing':"bill", // ??
+ 'patent':"patent",
+ 'statute':"bill", // ??
+ 'email':"personal_communication",
+ 'map':"map",
+ 'blogPost':"webpage",
+ 'instantMessage':"personal_communication",
+ 'forumPost':"webpage",
+ 'audioRecording':"song", // ??
+ 'presentation':"speech",
+ 'videoRecording':"motion_picture",
+ 'tvBroadcast':"broadcast",
+ 'radioBroadcast':"broadcast",
+ 'podcast':"song", // ??
+ 'computerProgram':"book" // ??
+};
+
+Zotero.Cite.System._quotedRegexp = /^".+"$/;
+
+// TODO: Clear this cache from time to time
+Zotero.Cite.System._cache = new Object();
+
+Zotero.Cite.System.retrieveItem = function(item){
+ if(item instanceof Zotero.Item) {
+ if(this._cache[item.id]) return this._cache[item.id];
+ var zoteroItem = item;
+ } else {
+ // is an item ID
+ if(this._cache[item]) return this._cache[item];
+ var zoteroItem = Zotero.Items.get(item);
+ }
+
+ if(!zoteroItem) {
+ throw "Zotero.Cite.getCSLItem called to wrap a non-item";
+ }
+
+ // don't return URL or accessed information for journal articles if a
+ // pages field exists
+ var itemType = Zotero.ItemTypes.getName(zoteroItem.itemTypeID);
+ var cslType = Zotero.Cite.System._zoteroTypeMap[itemType];
+ if(!cslType) cslType = "article";
+ var ignoreURL = ((zoteroItem.getField("accessDate", true, true) || zoteroItem.getField("url", true, true)) &&
+ ["journalArticle", "newspaperArticle", "magazineArticle"].indexOf(itemType) !== -1
+ && zoteroItem.getField("pages")
+ && !Zotero.Prefs.get("export.citePaperJournalArticleURL"));
+
+ var cslItem = {
+ 'id':zoteroItem.id,
+ 'type':cslType
+ };
+
+ // get all text variables (there must be a better way)
+ // TODO: does citeproc-js permit short forms?
+ for(var variable in Zotero.Cite.System._zoteroFieldMap["long"]) {
+ var fields = Zotero.Cite.System._zoteroFieldMap["long"][variable];
+ if(variable == "URL" && ignoreURL) continue;
+ for each(var field in fields) {
+ var value = zoteroItem.getField(field, false, true).toString();
+ if(value != "") {
+ // Strip enclosing quotes
+ if(value.match(Zotero.Cite.System._quotedRegexp)) {
+ value = value.substr(1, value.length-2);
+ }
+ cslItem[variable] = value;
+ break;
+ }
+ }
+ }
+
+ // separate name variables
+ var authorID = Zotero.CreatorTypes.getPrimaryIDForType(zoteroItem.itemTypeID);
+ var creators = zoteroItem.getCreators();
+ for each(var creator in creators) {
+ if(creator.creatorTypeID == authorID) {
+ var creatorType = "author";
+ } else {
+ var creatorType = Zotero.CreatorTypes.getName(creator.creatorTypeID);
+ }
+
+ var creatorVariable = Zotero.Cite.System._zoteroNameMap[creatorType];
+ if(!creatorVariable) continue;
+
+ var nameObj = {'family':creator.ref.lastName, 'given':creator.ref.firstName};
+
+ if(cslItem[creatorType]) {
+ cslItem[creatorType].push(nameObj);
+ } else {
+ cslItem[creatorType] = [nameObj];
+ }
+ }
+
+ // get date variables
+ for(var variable in Zotero.Cite.System._zoteroDateMap) {
+ var date = zoteroItem.getField(Zotero.Cite.System._zoteroDateMap[variable], false, true);
+ if(date) {
+ date = Zotero.Date.strToDate(date);
+ if(date.part && !date.month) {
+ // if there's a part but no month, interpret literally
+ cslItem[variable] = {"literal": date};
+ } else {
+ // otherwise, use date-parts
+ var dateParts = [];
+ if(date.year) {
+ dateParts.push(date.year);
+ if(date.month) {
+ dateParts.push(date.month+1);
+ if(date.day) {
+ dateParts.push(date.day);
+ }
+ }
+ }
+ cslItem[variable] = {"date-parts":[dateParts]};
+ }
+ }
+ }
+
+ this._cache[zoteroItem.id] = cslItem;
+ return cslItem;
+};
+
+Zotero.Cite.System.retrieveLocale = function(lang){
+ var localesDir = Zotero.getInstallDirectory();
+ [localesDir.append(dir) for each(dir in ["chrome", "content", "zotero", "locale", "csl"])];
+
+ var base = "locales-"+lang;
+
+ var localesFile = localesDir.clone();
+ localesFile.append(base+".xml");
+ if(!localesFile.exists()) {
+ var contents = localesDir.directoryEntries;
+ while(contents.hasMoreElements()) {
+ var file = contents.getNext().QueryInterface(Components.interfaces.nsIFile);
+ if(file.leafName.substr(0, base.length) == base && file.leafName.substr(-4) == ".xml") {
+ localesFile = file;
+ break;
+ }
+ }
+ }
+
+ return Zotero.File.getContents(localesFile);
+};
+
+Zotero.Cite.System.getAbbreviations = function() {
+ return {};
+}
+
+Zotero.Cite.makeFormattedBibliography = function(cslEngine, format, customBibliographyText) {
+ if(format) cslEngine.setOutputFormat(format);
+ var bib = cslEngine.makeBibliography();
+ if(format == "html") {
+ // TODO CSS
+ return bib[0].bibstart+bib[1].join("")+bib[0].bibend;
+ } else if(format == "text") {
+ return bib[0].bibstart+bib[1].join("")+bib[0].bibend;
+ } else if(format == "rtf") {
+ var tabStop = null;
+ var indent = 0;
+ var firstLineIndent = 0;
+ if(bib[0].hangingindent) {
+ indent = 720; // 720 twips = 0.5 in
+ firstLineIndent = -720; // -720 twips = -0.5 in
+ } else if(bib[0]["second-field-align"]) {
+ // this is a really sticky issue. the below works for first fields that look like "[1]"
+ // and "1." otherwise, i have no idea. luckily, this will be good enough 99% of the time.
+ var alignAt = 24+bib[0].maxoffset*120;
+ firstLineIndent = -alignAt;
+ if(bib[0]["second-field-align"] == "margin") {
+ tabStop = 0;
+ } else {
+ indent = alignAt;
+ tabStop = alignAt;
+ }
+ }
+
+ var preamble = "";
+ if(tabStop !== null) preamble += "\\tx"+tabStop+" ";
+ preamble += "\\li"+indent+" \\fi"+firstLineIndent+" ";
+ preamble += "\\sl"+(240*bib[0].linespacing)+" \\slmult1 ";
+
+ if(customBibliographyText) {
+ // customBibliographyText is an optional map of strings to replace specific citations
+ // in the bibliography (values) to item IDs (keys)
+ for(var i in bib[0].entry_ids) {
+ if(customBibliographyText[bib[0].entry_ids[i]]) {
+ bib[1][i] = customBibliographyText[bib[0].entry_ids[i]];
+ }
+ }
+ }
+
+ return bib[0].bibstart+preamble+bib[1].join("\\\r\n")+"\\\r\n"+bib[0].bibend;
+ } else {
+ throw "Unimplemented bibliography format "+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));
+ if(!localexml) {
+ Zotero.log("No locale "+cslLocale.best+"; using en-US", "warning");
+ return Zotero.Cite.getMonthStrings(form, "en-US");
+ }
+ 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];
+ }
+}
+\ No newline at end of file
diff --git a/chrome/content/zotero/xpcom/citeproc.js b/chrome/content/zotero/xpcom/citeproc.js
@@ -0,0 +1,7832 @@
+if (!Array.indexOf) {
+ Array.prototype.indexOf = function (obj) {
+ var i, len;
+ for (i = 0, len = this.length; i < len; i += 1) {
+ if (this[i] === obj) {
+ return i;
+ }
+ }
+ return -1;
+ };
+}
+var CSL = {
+ error: function (str) {
+ print(str);
+ },
+ START: 0,
+ END: 1,
+ SINGLETON: 2,
+ SEEN: 6,
+ SUCCESSOR: 3,
+ SUCCESSOR_OF_SUCCESSOR: 4,
+ SUPPRESS: 5,
+ SINGULAR: 0,
+ PLURAL: 1,
+ LITERAL: true,
+ BEFORE: 1,
+ AFTER: 2,
+ DESCENDING: 1,
+ ASCENDING: 2,
+ ONLY_FIRST: 1,
+ ALWAYS: 2,
+ ONLY_LAST: 3,
+ FINISH: 1,
+ POSITION_FIRST: 0,
+ POSITION_SUBSEQUENT: 1,
+ POSITION_IBID: 2,
+ POSITION_IBID_WITH_LOCATOR: 3,
+ MARK_TRAILING_NAMES: true,
+ POSITION_TEST_VARS: ["position", "first-reference-note-number", "near-note"],
+ AREAS: ["citation", "citation_sort", "bibliography", "bibliography_sort"],
+ MULTI_FIELDS: ["publisher", "publisher-place", "title", "container-title", "collection-title", "institution", "authority"],
+ CITE_FIELDS: ["first-reference-note-number", "locator"],
+ MINIMAL_NAME_FIELDS: ["literal", "family"],
+ SWAPPING_PUNCTUATION: [".", ",", ";", ":"],
+ TERMINAL_PUNCTUATION: [".", "!", "?", ":", "X", "Y"],
+ NONE: 0,
+ NUMERIC: 1,
+ POSITION: 2,
+ COLLAPSE_VALUES: ["citation-number", "year", "year-suffix"],
+ DATE_PARTS: ["year", "month", "day"],
+ DATE_PARTS_ALL: ["year", "month", "day", "season"],
+ DATE_PARTS_INTERNAL: ["year", "month", "day", "year_end", "month_end", "day_end"],
+ NAME_PARTS: ["family", "given", "dropping-particle", "non-dropping-particle", "suffix"],
+ DECORABLE_NAME_PARTS: ["given", "family", "suffix"],
+ ET_AL_NAMES: [
+ "et-al-min",
+ "et-al-use-first",
+ "et-al-subsequent-min",
+ "et-al-subsequent-use-first"
+ ],
+ DISAMBIGUATE_OPTIONS: [
+ "disambiguate-add-names",
+ "disambiguate-add-givenname",
+ "disambiguate-add-year-suffix"
+ ],
+ GIVENNAME_DISAMBIGUATION_RULES: [
+ "all-names",
+ "all-names-with-initials",
+ "primary-name",
+ "primary-name-with-initials",
+ "by-cite"
+ ],
+ NAME_ATTRIBUTES: [
+ "and",
+ "delimiter-precedes-last",
+ "initialize-with",
+ "name-as-sort-order",
+ "sort-separator",
+ "et-al-min",
+ "et-al-use-first",
+ "et-al-subsequent-min",
+ "et-al-subsequent-use-first"
+ ],
+ PARALLEL_MATCH_VARS: ["title", "container-title"],
+ PARALLEL_TYPES: ["legal_case", "legislation"],
+ LOOSE: 0,
+ STRICT: 1,
+ PREFIX_PUNCTUATION: /[.;:]\s*$/,
+ SUFFIX_PUNCTUATION: /^\s*[.;:,\(\)]/,
+ NUMBER_REGEXP: /(?:^\d+|\d+$|\d{3,})/, // avoid evaluating "F.2d" as numeric
+ QUOTED_REGEXP_START: /^"/,
+ QUOTED_REGEXP_END: /^"$/,
+ NAME_INITIAL_REGEXP: /^([A-Z\u0080-\u017f\u0400-\u042f])([a-zA-Z\u0080-\u017f\u0400-\u052f]*|)/,
+ ROMANESQUE_REGEXP: /[a-zA-Z\u0080-\u017f\u0400-\u052f]/,
+ STARTSWITH_ROMANESQUE_REGEXP: /^[&a-zA-Z\u0080-\u017f\u0400-\u052f]/,
+ ENDSWITH_ROMANESQUE_REGEXP: /[&a-zA-Z\u0080-\u017f\u0400-\u052f]$/,
+ DISPLAY_CLASSES: ["block", "left-margin", "right-inline", "indent"],
+ NAME_VARIABLES: [
+ "author",
+ "editor",
+ "translator",
+ "contributor",
+ "collection-editor",
+ "composer",
+ "container-author",
+ "editorial-director",
+ "interviewer",
+ "original-author",
+ "recipient"
+ ],
+ NUMERIC_VARIABLES: ["edition", "volume", "number-of-volumes", "number", "issue", "citation-number"],
+ DATE_VARIABLES: ["issued", "event-date", "accessed", "container", "original-date"],
+ TAG_ESCAPE: function (str) {
+ var mx, lst, len, pos, m, buf1, buf2, idx, ret, myret;
+ mx = str.match(/(<span\s+class=\"no(?:case|decor)\">)/g);
+ lst = str.split(/<span\s+class=\"no(?:case|decor)\">/g);
+ myret = [lst[0]];
+ for (pos = 1, len = lst.length; pos < len; pos += 1) {
+ myret.push(mx[pos - 1]);
+ myret.push(lst[pos]);
+ }
+ lst = myret.slice();
+ len = lst.length - 1;
+ for (pos = len; pos > 1; pos += -2) {
+ m = lst[pos].match(/<\/span>/);
+ if (m) {
+ idx = lst[pos].indexOf("</span>");
+ buf1 = lst[pos].slice(0, idx);
+ buf2 = lst[pos].slice(idx + 7);
+ lst[pos - 1] += buf1 + "</span>";
+ lst[pos] = buf2;
+ } else {
+ buf1 = lst.slice(0, pos - 1);
+ if (pos < (lst.length - 1)) {
+ buf2 = lst[pos - 1] + lst[pos];
+ } else {
+ buf2 = lst[pos - 1] + lst[pos] + lst[pos + 1];
+ }
+ lst = buf1.push(buf2).concat(lst.slice(pos + 2));
+ }
+ }
+ return lst;
+ },
+ TAG_USEALL: function (str) {
+ var ret, open, close, end;
+ ret = [""];
+ open = str.indexOf("<");
+ close = str.indexOf(">");
+ while (open > -1 && close > -1) {
+ if (open > close) {
+ end = open + 1;
+ } else {
+ end = close + 1;
+ }
+ if (open < close && str.slice(open + 1, close).indexOf("<") === -1) {
+ ret[ret.length - 1] += str.slice(0, open);
+ ret.push(str.slice(open, close + 1));
+ ret.push("");
+ str = str.slice(end);
+ } else {
+ ret[ret.length - 1] += str.slice(0, close + 1);
+ str = str.slice(end);
+ }
+ open = str.indexOf("<");
+ close = str.indexOf(">");
+ }
+ ret[ret.length - 1] += str;
+ return ret;
+ },
+ SKIP_WORDS: ["a", "the", "an"],
+ FORMAT_KEY_SEQUENCE: [
+ "@strip-periods",
+ "@font-style",
+ "@font-variant",
+ "@font-weight",
+ "@text-decoration",
+ "@vertical-align",
+ "@quotes"
+ ],
+ SUFFIX_CHARS: "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z",
+ ROMAN_NUMERALS: [
+ [ "", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix" ],
+ [ "", "x", "xx", "xxx", "xl", "l", "lx", "lxx", "lxxx", "xc" ],
+ [ "", "c", "cc", "ccc", "cd", "d", "dc", "dcc", "dccc", "cm" ],
+ [ "", "m", "mm", "mmm", "mmmm", "mmmmm"]
+ ],
+ CREATORS: [
+ "author",
+ "editor",
+ "contributor",
+ "translator",
+ "recipient",
+ "interviewer",
+ "composer",
+ "original-author",
+ "container-author",
+ "collection-editor"
+ ],
+ LANG_BASES: {
+ af: "af_ZA",
+ ar: "ar_AR",
+ bg: "bg_BG",
+ ca: "ca_AD",
+ cs: "cs_CZ",
+ da: "da_DK",
+ de: "de_DE",
+ el: "el_GR",
+ en: "en_US",
+ es: "es_ES",
+ et: "et_EE",
+ fr: "fr_FR",
+ he: "he_IL",
+ hu: "hu_HU",
+ is: "is_IS",
+ it: "it_IT",
+ ja: "ja_JP",
+ ko: "ko_KR",
+ mn: "mn_MN",
+ nb: "nb_NO",
+ nl: "nl_NL",
+ pl: "pl_PL",
+ pt: "pt_PT",
+ ro: "ro_RO",
+ ru: "ru_RU",
+ sk: "sk_SK",
+ sl: "sl_SI",
+ sr: "sr_RS",
+ sv: "sv_SE",
+ th: "th_TH",
+ tr: "tr_TR",
+ uk: "uk_UA",
+ vi: "vi_VN",
+ zh: "zh_CN"
+ },
+ locale: {},
+ locale_opts: {},
+ locale_dates: {}
+};
+CSL.TERMINAL_PUNCTUATION_REGEXP = new RegExp("^([" + CSL.TERMINAL_PUNCTUATION.join("") + "])(.*)");
+var CSL_E4X = function () {};
+CSL_E4X.prototype.clean = function (xml) {
+ xml = xml.replace(/<\?[^?]+\?>/g, "");
+ xml = xml.replace(/<![^>]+>/g, "");
+ xml = xml.replace(/^\s+/g, "");
+ xml = xml.replace(/\s+$/g, "");
+ return xml;
+};
+CSL_E4X.prototype.children = function (myxml) {
+ return myxml.children();
+};
+CSL_E4X.prototype.nodename = function (myxml) {
+ var ret = myxml.localName();
+ return ret;
+};
+CSL_E4X.prototype.attributes = function (myxml) {
+ var ret, attrs, attr, key, xml;
+ default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
+ ret = new Object();
+ attrs = myxml.attributes();
+ for each (attr in attrs) {
+ key = "@" + attr.localName();
+ if (key.slice(0,5) == "@e4x_") {
+ continue;
+ }
+ ret[key] = attr.toString();
+ }
+ return ret;
+};
+CSL_E4X.prototype.content = function (myxml) {
+ return myxml.toString();
+};
+CSL_E4X.prototype.namespace = {
+ "xml":"http://www.w3.org/XML/1998/namespace"
+}
+CSL_E4X.prototype.numberofnodes = function (myxml) {
+ return myxml.length();
+};
+CSL_E4X.prototype.getAttributeName = function (attr) {
+ var ret = attr.localName();
+ return ret;
+}
+CSL_E4X.prototype.getAttributeValue = function (myxml,name,namespace) {
+ var xml;
+ default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
+ if (namespace) {
+ var ns = new Namespace(this.namespace[namespace]);
+ var ret = myxml.@ns::[name].toString();
+ } else {
+ if (name) {
+ var ret = myxml.attribute(name).toString();
+ } else {
+ var ret = myxml.toString();
+ }
+ }
+ return ret;
+}
+CSL_E4X.prototype.getNodeValue = function (myxml,name) {
+ var xml;
+ default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
+ if (name){
+ return myxml[name].toString();
+ } else {
+ return myxml.toString();
+ }
+}
+CSL_E4X.prototype.setAttributeOnNodeIdentifiedByNameAttribute = function (myxml,nodename,attrname,attr,val) {
+ var xml;
+ default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
+ if (attr[0] != '@'){
+ attr = '@'+attr;
+ }
+ myxml[nodename].(@name == attrname)[0][attr] = val;
+}
+CSL_E4X.prototype.deleteNodeByNameAttribute = function (myxml,val) {
+ delete myxml.*.(@name==val)[0];
+}
+CSL_E4X.prototype.deleteAttribute = function (myxml,attr) {
+ delete myxml["@"+attr];
+}
+CSL_E4X.prototype.setAttribute = function (myxml,attr,val) {
+ myxml['@'+attr] = val;
+}
+CSL_E4X.prototype.nodeCopy = function (myxml) {
+ return myxml.copy();
+}
+CSL_E4X.prototype.getNodesByName = function (myxml,name,nameattrval) {
+ var xml, ret;
+ default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
+ ret = myxml.descendants(name);
+ if (nameattrval){
+ ret = ret.(@name == nameattrval);
+ }
+ return ret;
+}
+CSL_E4X.prototype.nodeNameIs = function (myxml,name) {
+ var xml;
+ default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
+ if (myxml.localName().toString() == name){
+ return true;
+ }
+ return false;
+}
+CSL_E4X.prototype.makeXml = function (myxml) {
+ var xml;
+ if ("xml" == typeof myxml){
+ myxml = myxml.toXMLString();
+ };
+ default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
+ xml = new Namespace("http://www.w3.org/XML/1998/namespace");
+ if (myxml){
+ myxml = myxml.replace(/\s*<\?[^>]*\?>\s*\n*/g, "");
+ myxml = new XML(myxml);
+ } else {
+ myxml = new XML();
+ }
+ return myxml;
+};
+CSL_E4X.prototype.insertChildNodeAfter = function (parent,node,pos,datexml) {
+ var myxml, xml;
+ default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
+ myxml = XML(datexml.toXMLString());
+ parent.insertChildAfter(node,myxml);
+ delete parent.*[pos];
+ return parent;
+};
+CSL_E4X.prototype.addInstitutionNodes = function(myxml) {
+ var institution_long, institution_short, children, node, xml;
+ default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
+ institution_long = <institution
+ institution-parts="long"
+ delimiter=", "
+ substitute-use-first="1"
+ use-last="1"/>;
+ institution_short = <institution
+ institution-parts="long"
+ delimiter=", "
+ substitute-use-first="1"
+ use-last="1"/>;
+ for each (node in myxml..names) {
+ if ("xml" == typeof node && node.elements("name").length() > 0) {
+ if (!node.institution.toString()) {
+ node.name += institution_long;
+ }
+ }
+ }
+};
+CSL.Output = {};
+CSL.Output.Queue = function (state) {
+ this.levelname = ["top"];
+ this.state = state;
+ this.queue = [];
+ this.empty = new CSL.Token("empty");
+ var tokenstore = {};
+ tokenstore.empty = this.empty;
+ this.formats = new CSL.Stack(tokenstore);
+ this.current = new CSL.Stack(this.queue);
+};
+CSL.Output.Queue.prototype.getToken = function (name) {
+ var ret = this.formats.value()[name];
+ return ret;
+};
+CSL.Output.Queue.prototype.mergeTokenStrings = function (base, modifier) {
+ var base_token, modifier_token, ret, key;
+ base_token = this.formats.value()[base];
+ modifier_token = this.formats.value()[modifier];
+ ret = base_token;
+ if (modifier_token) {
+ if (!base_token) {
+ base_token = new CSL.Token(base, CSL.SINGLETON);
+ base_token.decorations = [];
+ }
+ ret = new CSL.Token(base, CSL.SINGLETON);
+ key = "";
+ for (key in base_token.strings) {
+ if (base_token.strings.hasOwnProperty(key)) {
+ ret.strings[key] = base_token.strings[key];
+ }
+ }
+ for (key in modifier_token.strings) {
+ if (modifier_token.strings.hasOwnProperty(key)) {
+ ret.strings[key] = modifier_token.strings[key];
+ }
+ }
+ ret.decorations = base_token.decorations.concat(modifier_token.decorations);
+ }
+ return ret;
+};
+CSL.Output.Queue.prototype.addToken = function (name, modifier, token) {
+ var newtok, attr;
+ newtok = new CSL.Token("output");
+ if ("string" === typeof token) {
+ token = this.formats.value()[token];
+ }
+ if (token && token.strings) {
+ for (attr in token.strings) {
+ if (token.strings.hasOwnProperty(attr)) {
+ newtok.strings[attr] = token.strings[attr];
+ }
+ }
+ newtok.decorations = token.decorations;
+ }
+ if ("string" === typeof modifier) {
+ newtok.strings.delimiter = modifier;
+ }
+ this.formats.value()[name] = newtok;
+};
+CSL.Output.Queue.prototype.pushFormats = function (tokenstore) {
+ if (!tokenstore) {
+ tokenstore = {};
+ }
+ tokenstore.empty = this.empty;
+ this.formats.push(tokenstore);
+};
+CSL.Output.Queue.prototype.popFormats = function (tokenstore) {
+ this.formats.pop();
+};
+CSL.Output.Queue.prototype.startTag = function (name, token) {
+ var tokenstore = {};
+ tokenstore[name] = token;
+ this.pushFormats(tokenstore);
+ this.openLevel(name);
+};
+CSL.Output.Queue.prototype.endTag = function () {
+ this.closeLevel();
+ this.popFormats();
+};
+CSL.Output.Queue.prototype.openLevel = function (token, ephemeral) {
+ var blob, curr, x, has_ephemeral;
+ if (!this.formats.value()[token]) {
+ throw "CSL processor error: call to nonexistent format token \"" + token + "\"";
+ }
+ blob = new CSL.Blob(this.formats.value()[token], false, token);
+ if (this.state.tmp.count_offset_characters && blob.strings.prefix.length) {
+ this.state.tmp.offset_characters += blob.strings.prefix.length;
+ }
+ if (this.state.tmp.count_offset_characters && blob.strings.suffix.length) {
+ this.state.tmp.offset_characters += blob.strings.suffix.length;
+ }
+ curr = this.current.value();
+ has_ephemeral = false;
+ for (x in this.state.tmp.names_cut.variable) {
+ if (this.state.tmp.names_cut.variable.hasOwnProperty(x)) {
+ has_ephemeral = x;
+ break;
+ }
+ }
+ if (ephemeral && (!has_ephemeral || ephemeral === has_ephemeral)) {
+ if (!this.state.tmp.names_cut.variable[ephemeral]) {
+ this.state.tmp.names_cut.variable[ephemeral] = [];
+ this.state.tmp.names_cut.used = ephemeral;
+ }
+ this.state.tmp.names_cut.variable[ephemeral].push([curr, curr.blobs.length]);
+ }
+ curr.push(blob);
+ this.current.push(blob);
+};
+CSL.Output.Queue.prototype.closeLevel = function (name) {
+ if (name && name !== this.current.value().levelname) {
+ CSL.error("Level mismatch error: wanted " + name + " but found " + this.current.value().levelname);
+ }
+ this.current.pop();
+};
+CSL.Output.Queue.prototype.append = function (str, tokname) {
+ var token, blob, curr;
+ if ("undefined" === typeof str) {
+ return;
+ }
+ if ("number" === typeof str) {
+ str = "" + str;
+ }
+ if (this.state.tmp.element_trace && this.state.tmp.element_trace.value() === "suppress-me") {
+ return;
+ }
+ blob = false;
+ if (!tokname) {
+ token = this.formats.value().empty;
+ } else if (tokname === "literal") {
+ token = true;
+ } else if ("string" === typeof tokname) {
+ token = this.formats.value()[tokname];
+ } else {
+ token = tokname;
+ }
+ if (!token) {
+ throw "CSL processor error: unknown format token name: " + tokname;
+ }
+ if ("string" === typeof str && str.length) {
+ this.last_char_rendered = str.slice(-1);
+ str = str.replace(/\s+'/g, " \'").replace(/^'/g, " \'");
+ this.state.tmp.term_predecessor = true;
+ }
+ blob = new CSL.Blob(token, str);
+ if (this.state.tmp.count_offset_characters && blob.strings.prefix) {
+ this.state.tmp.offset_characters += blob.strings.prefix.length;
+ }
+ if (this.state.tmp.count_offset_characters && blob.strings.suffix) {
+ this.state.tmp.offset_characters += blob.strings.suffix.length;
+ }
+ curr = this.current.value();
+ if ("string" === typeof blob.blobs) {
+ this.state.tmp.term_predecessor = true;
+ }
+ if (this.state.tmp.count_offset_characters) {
+ if ("string" === typeof str) {
+ this.state.tmp.offset_characters += blob.strings.prefix.length;
+ this.state.tmp.offset_characters += blob.strings.suffix.length;
+ this.state.tmp.offset_characters += blob.blobs.length;
+ } else if ("undefined" !== str.num) {
+ this.state.tmp.offset_characters += str.strings.prefix.length;
+ this.state.tmp.offset_characters += str.strings.suffix.length;
+ this.state.tmp.offset_characters += str.formatter.format(str.num).length;
+ }
+ }
+ this.state.parallel.AppendBlobPointer(curr);
+ if ("string" === typeof str) {
+ curr.push(blob);
+ if (blob.strings["text-case"]) {
+ blob.blobs = CSL.Output.Formatters[blob.strings["text-case"]](this.state, str);
+ }
+ this.state.fun.flipflopper.init(str, blob);
+ this.state.fun.flipflopper.processTags();
+ } else {
+ curr.push(str);
+ }
+};
+CSL.Output.Queue.prototype.string = function (state, myblobs, blob) {
+ var blobs, ret, blob_last_chars, blob_delimiter, i, params, blobjr, last_str, last_char, b, use_suffix, qres, addtoret, span_split, j, res, blobs_start, blobs_end, key, pos, len, ppos, llen, ttype, ltype, terminal, leading;
+ blobs = myblobs.slice();
+ ret = [];
+ if (blobs.length === 0) {
+ return ret;
+ }
+ if (!blob) {
+ CSL.Output.Queue.normalizePrefixPunctuation(blobs, true);
+ }
+ blob_last_chars = [];
+ if (blob) {
+ blob_delimiter = blob.strings.delimiter;
+ } else {
+ blob_delimiter = "";
+ }
+ len = blobs.length;
+ for (pos = 0; pos < len; pos += 1) {
+ blobjr = blobs[pos];
+ if ("string" === typeof blobjr.blobs) {
+ last_str = "";
+ if (blobjr.strings.suffix) {
+ last_str = blobjr.strings.suffix;
+ } else if (blobjr.blobs) {
+ last_str = blobjr.blobs;
+ }
+ last_char = last_str.slice(-1);
+ if ("number" === typeof blobjr.num) {
+ ret.push(blobjr);
+ blob_last_chars.push(last_char);
+ } else if (blobjr.blobs) {
+ b = blobjr.blobs;
+ if (!state.tmp.suppress_decorations) {
+ llen = blobjr.decorations.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ params = blobjr.decorations[ppos];
+ b = state.fun.decorate[params[0]][params[1]](state, b);
+ }
+ }
+ use_suffix = blobjr.strings.suffix;
+ if (b[(b.length - 1)] === "." && use_suffix && use_suffix[0] === ".") {
+ use_suffix = use_suffix.slice(1);
+ }
+ qres = this.swapQuotePunctuation(b, use_suffix);
+ b = qres[0];
+ use_suffix = qres[1];
+ if (b && b.length) {
+ b = blobjr.strings.prefix + b + use_suffix;
+ ret.push(b);
+ blob_last_chars.push(last_char);
+ }
+ }
+ } else if (blobjr.blobs.length) {
+ res = state.output.string(state, blobjr.blobs, blobjr);
+ addtoret = res[0];
+ if (ret.slice(-1)[0] && addtoret.slice(-1)[0]) {
+ ttype = typeof ret.slice(-1)[0];
+ ltype = typeof addtoret.slice(-1)[0];
+ if ("string" === ttype && "string" === ltype) {
+ terminal = ret.slice(-1)[0].slice(-1);
+ leading = addtoret.slice(-1)[0].slice(0, 1);
+ if (CSL.TERMINAL_PUNCTUATION.indexOf(terminal) > -1 && CSL.TERMINAL_PUNCTUATION.indexOf(leading) > -1) {
+ ret[(ret.length - 1)] = ret[(ret.length - 1)].slice(0, -1);
+ }
+ }
+ }
+ ret = ret.concat(addtoret);
+ blob_last_chars = blob_last_chars.concat(res[1]);
+ } else {
+ continue;
+ }
+ }
+ span_split = 0;
+ len = ret.length;
+ for (pos = 0; pos < len; pos += 1) {
+ if ("string" === typeof ret[pos]) {
+ span_split = (parseInt(pos, 10) + 1);
+ }
+ }
+ if (blob && (blob.decorations.length || blob.strings.suffix || blob.strings.prefix)) {
+ span_split = ret.length;
+ }
+ res = state.output.renderBlobs(ret.slice(0, span_split), blob_delimiter, blob_last_chars);
+ blobs_start = res[0];
+ blob_last_chars = res[1].slice();
+ if (blobs_start && blob && (blob.decorations.length || blob.strings.suffix || blob.strings.prefix)) {
+ if (!state.tmp.suppress_decorations) {
+ len = blob.decorations.length;
+ for (pos = 0; pos < len; pos += 1) {
+ params = blob.decorations[pos];
+ if (["@bibliography", "@display"].indexOf(params[0]) > -1) {
+ continue;
+ }
+ blobs_start = state.fun.decorate[params[0]][params[1]](state, blobs_start);
+ }
+ }
+ b = blobs_start;
+ use_suffix = blob.strings.suffix;
+ if (b[(b.length - 1)] === "." && use_suffix && use_suffix[0] === ".") {
+ use_suffix = use_suffix.slice(1);
+ }
+ qres = this.swapQuotePunctuation(b, use_suffix);
+ b = qres[0];
+ if (b && b.length) {
+ use_suffix = qres[1];
+ b = blob.strings.prefix + b + use_suffix;
+ }
+ blobs_start = b;
+ if (!state.tmp.suppress_decorations) {
+ len = blob.decorations.length;
+ for (pos = 0; pos < len; pos += 1) {
+ params = blob.decorations[pos];
+ if (["@bibliography", "@display"].indexOf(params[0]) === -1) {
+ continue;
+ }
+ blobs_start = state.fun.decorate[params[0]][params[1]](state, blobs_start);
+ }
+ }
+ }
+ blobs_end = ret.slice(span_split, ret.length);
+ if (!blobs_end.length && blobs_start) {
+ ret = [blobs_start];
+ } else if (blobs_end.length && !blobs_start) {
+ ret = blobs_end;
+ } else if (blobs_start && blobs_end.length) {
+ ret = [blobs_start].concat(blobs_end);
+ }
+ if ("undefined" === typeof blob) {
+ this.queue = [];
+ this.current.mystack = [];
+ this.current.mystack.push(this.queue);
+ if (state.tmp.suppress_decorations) {
+ res = state.output.renderBlobs(ret);
+ ret = res[0];
+ blob_last_chars = res[1].slice();
+ }
+ } else if ("boolean" === typeof blob) {
+ res = state.output.renderBlobs(ret);
+ ret = res[0];
+ blob_last_chars = res[1].slice();
+ }
+ if (blob) {
+ return [ret, blob_last_chars.slice()];
+ } else {
+ return ret;
+ }
+};
+CSL.Output.Queue.prototype.clearlevel = function () {
+ var blob, pos, len;
+ blob = this.current.value();
+ len = blob.blobs.length;
+ for (pos = 0; pos < len; pos += 1) {
+ blob.blobs.pop();
+ }
+};
+CSL.Output.Queue.prototype.renderBlobs = function (blobs, delim, blob_last_chars) {
+ var state, ret, ret_last_char, use_delim, i, blob, pos, len, ppos, llen, pppos, lllen, res, str, params;
+ if (!delim) {
+ delim = "";
+ }
+ if (!blob_last_chars) {
+ blob_last_chars = [];
+ }
+ state = this.state;
+ ret = "";
+ ret_last_char = [];
+ use_delim = "";
+ len = blobs.length;
+ for (pos = 0; pos < len; pos += 1) {
+ if (blobs[pos].checkNext) {
+ blobs[pos].checkNext(blobs[(pos + 1)]);
+ }
+ }
+ len = blobs.length;
+ for (pos = 0; pos < len; pos += 1) {
+ blob = blobs[pos];
+ if (ret) {
+ use_delim = delim;
+ }
+ if (blob && "string" === typeof blob) {
+ if (use_delim && blob_last_chars[(pos - 1)] === use_delim[0]) {
+ use_delim = use_delim.slice(1);
+ }
+ res = this.swapQuotePunctuation(ret, use_delim);
+ ret = res[0];
+ use_delim = res[1];
+ ret += use_delim;
+ ret += blob;
+ ret_last_char = blob_last_chars.slice(-1);
+ } else if (blob.status !== CSL.SUPPRESS) {
+ str = blob.formatter.format(blob.num);
+ if (blob.strings["text-case"]) {
+ str = CSL.Output.Formatters[blob.strings["text-case"]](this.state, str);
+ }
+ if (!state.tmp.suppress_decorations) {
+ llen = blob.decorations.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ params = blob.decorations[ppos];
+ str = state.fun.decorate[params[0]][params[1]](state, str);
+ }
+ }
+ str = blob.strings.prefix + str + blob.strings.suffix;
+ if (blob.status === CSL.END) {
+ ret += blob.range_prefix;
+ } else if (blob.status === CSL.SUCCESSOR) {
+ ret += blob.successor_prefix;
+ } else if (blob.status === CSL.START) {
+ ret += "";
+ } else if (blob.status === CSL.SEEN) {
+ ret += blob.successor_prefix;
+ }
+ ret += str;
+ ret_last_char = blob_last_chars.slice(-1);
+ }
+ }
+ return [ret, ret_last_char];
+};
+CSL.Output.Queue.prototype.swapQuotePunctuation = function (ret, use_delim) {
+ var pre_quote, pos, len;
+ if (ret.length && this.state.getOpt("punctuation-in-quote") && this.state.opt.close_quotes_array.indexOf(ret.slice(-1)) > -1) {
+ if (use_delim) {
+ pos = use_delim.indexOf(" ");
+ if (pos === -1) {
+ pos = use_delim.length;
+ }
+ if (pos > -1) {
+ if (CSL.SWAPPING_PUNCTUATION.indexOf(use_delim.slice(0, 1)) > -1) {
+ pre_quote = use_delim.slice(0, pos);
+ use_delim = use_delim.slice(pos);
+ } else {
+ pre_quote = "";
+ }
+ } else {
+ pre_quote = use_delim;
+ use_delim = "";
+ }
+ ret = ret.slice(0, (ret.length - 1)) + pre_quote + ret.slice((ret.length - 1));
+ }
+ }
+ return [ret, use_delim];
+};
+CSL.Output.Queue.normalizePrefixPunctuation = function (blobs, top) {
+ var pos, len, m, punct, suff, predecessor, rex;
+ punct = "";
+ if ("object" === typeof blobs[0] && blobs[0].blobs.length) {
+ CSL.Output.Queue.normalizePrefixPunctuation(blobs[0].blobs);
+ }
+ if ("object" === typeof blobs) {
+ len = blobs.length - 1;
+ for (pos = len; pos > 0; pos += -1) {
+ if (!blobs[pos].blobs) {
+ continue;
+ }
+ m = blobs[pos].strings.prefix.match(CSL.TERMINAL_PUNCTUATION_REGEXP);
+ if (m) {
+ blobs[pos].strings.prefix = m[2];
+ predecessor = blobs[(pos - 1)];
+ CSL.Output.Queue.appendPunctuationToSuffix(predecessor, m[1]);
+ }
+ if ("object" === typeof blobs[pos] && blobs[pos].blobs.length) {
+ CSL.Output.Queue.normalizePrefixPunctuation(blobs[pos].blobs);
+ }
+ }
+ }
+};
+CSL.Output.Queue.appendPunctuationToSuffix = function (predecessor, punct) {
+ var suff, newpredecessor;
+ suff = predecessor.strings.suffix;
+ if (suff) {
+ if (CSL.TERMINAL_PUNCTUATION.indexOf(suff.slice(-1)) === -1) {
+ predecessor.strings.suffix += punct;
+ }
+ } else {
+ if ("string" === typeof predecessor.blobs) {
+ if (CSL.TERMINAL_PUNCTUATION.indexOf(predecessor.blobs.slice(-1)) === -1) {
+ predecessor.strings.suffix += punct;
+ }
+ } else {
+ newpredecessor = predecessor.blobs.slice(-1)[0];
+ if (newpredecessor) {
+ CSL.Output.Queue.appendPunctuationToSuffix(newpredecessor, punct);
+ }
+ }
+ }
+};
+CSL.localeResolve = function (langstr) {
+ var ret, langlst;
+ ret = {};
+ if ("undefined" === typeof langstr) {
+ langstr = "en_US";
+ }
+ langlst = langstr.split(/[\-_]/);
+ ret.base = CSL.LANG_BASES[langlst[0]];
+ if (langlst.length === 1 || langlst[1] === "x") {
+ ret.best = ret.base.replace("_", "-");
+ } else {
+ ret.best = langlst.slice(0, 2).join("-");
+ }
+ ret.bare = langlst[0];
+ return ret;
+};
+CSL.localeSet = function (sys, myxml, lang_in, lang_out) {
+ var blob, locale, nodes, attributes, pos, ppos, term, form, termname, styleopts, attr, date, attrname, len;
+ lang_in = lang_in.replace("_", "-");
+ lang_out = lang_out.replace("_", "-");
+ if (!this.locale[lang_out]) {
+ this.locale[lang_out] = {};
+ this.locale[lang_out].terms = {};
+ this.locale[lang_out].opts = {};
+ this.locale[lang_out].dates = {};
+ }
+ locale = sys.xml.makeXml();
+ if (sys.xml.nodeNameIs(myxml, 'locale')) {
+ locale = myxml;
+ } else {
+ nodes = sys.xml.getNodesByName(myxml, "locale");
+ for (pos = 0, len = sys.xml.numberofnodes(nodes); pos < len; pos += 1) {
+ if (true) {
+ blob = nodes[pos];
+ if (sys.xml.getAttributeValue(blob, 'lang', 'xml') === lang_in) {
+ locale = blob;
+ break;
+ }
+ }
+ }
+ }
+ nodes = sys.xml.getNodesByName(locale, 'term');
+ for (pos = 0, len = sys.xml.numberofnodes(nodes); pos < len; pos += 1) {
+ if (true) {
+ term = nodes[pos];
+ termname = sys.xml.getAttributeValue(term, 'name');
+ if ("undefined" === typeof this.locale[lang_out].terms[termname]) {
+ this.locale[lang_out].terms[termname] = {};
+ }
+ form = "long";
+ if (sys.xml.getAttributeValue(term, 'form')) {
+ form = sys.xml.getAttributeValue(term, 'form');
+ }
+ if (sys.xml.numberofnodes(sys.xml.getNodesByName(term, 'multiple'))) {
+ this.locale[lang_out].terms[termname][form] = [];
+ this.locale[lang_out].terms[sys.xml.getAttributeValue(term, 'name')][form][0] = sys.xml.getNodeValue(term, 'single');
+ this.locale[lang_out].terms[sys.xml.getAttributeValue(term, 'name')][form][1] = sys.xml.getNodeValue(term, 'multiple');
+ } else {
+ this.locale[lang_out].terms[sys.xml.getAttributeValue(term, 'name')][form] = sys.xml.getNodeValue(term);
+ }
+ }
+ }
+ nodes = sys.xml.getNodesByName(locale, 'style-options');
+ for (pos = 0, len = sys.xml.numberofnodes(nodes); pos < len; pos += 1) {
+ if (true) {
+ styleopts = nodes[pos];
+ attributes = sys.xml.attributes(styleopts);
+ for (attrname in attributes) {
+ if (attributes.hasOwnProperty(attrname)) {
+ if (attributes[attrname] === "true") {
+ this.locale[lang_out].opts[attrname.slice(1)] = true;
+ } else {
+ this.locale[lang_out].opts[attrname.slice(1)] = false;
+ }
+ }
+ }
+ }
+ }
+ nodes = sys.xml.getNodesByName(locale, 'date');
+ for (pos = 0, len = sys.xml.numberofnodes(nodes); pos < len; pos += 1) {
+ if (true) {
+ date = nodes[pos];
+ this.locale[lang_out].dates[sys.xml.getAttributeValue(date, "form")] = date;
+ }
+ }
+};
+CSL.substituteOne = function (template) {
+ return function (state, list) {
+ if (!list) {
+ return "";
+ } else {
+ return template.replace("%%STRING%%", list);
+ }
+ };
+};
+CSL.substituteTwo = function (template) {
+ return function (param) {
+ var template2 = template.replace("%%PARAM%%", param);
+ return function (state, list) {
+ if (!list) {
+ return "";
+ } else {
+ return template2.replace("%%STRING%%", list);
+ }
+ };
+ };
+};
+CSL.Mode = function (mode) {
+ var decorations, params, param, func, val, args;
+ decorations = {};
+ params = CSL.Output.Formats[mode];
+ for (param in params) {
+ if (true) {
+ if ("@" !== param.slice(0, 1)) {
+ decorations[param] = params[param];
+ continue;
+ }
+ func = false;
+ val = params[param];
+ args = param.split('/');
+ if (typeof val === "string" && val.indexOf("%%STRING%%") > -1) {
+ if (val.indexOf("%%PARAM%%") > -1) {
+ func = CSL.substituteTwo(val);
+ } else {
+ func = CSL.substituteOne(val);
+ }
+ } else if (typeof val === "boolean" && !val) {
+ func = CSL.Output.Formatters.passthrough;
+ } else if (typeof val === "function") {
+ func = val;
+ } else {
+ throw "CSL.Compiler: Bad " + mode + " config entry for " + param + ": " + val;
+ }
+ if (args.length === 1) {
+ decorations[args[0]] = func;
+ } else if (args.length === 2) {
+ if (!decorations[args[0]]) {
+ decorations[args[0]] = {};
+ }
+ decorations[args[0]][args[1]] = func;
+ }
+ }
+ }
+ return decorations;
+};
+CSL.setDecorations = function (state, attributes) {
+ var ret, key, pos;
+ ret = [];
+ for (pos in CSL.FORMAT_KEY_SEQUENCE) {
+ if (true) {
+ key = CSL.FORMAT_KEY_SEQUENCE[pos];
+ if (attributes[key]) {
+ ret.push([key, attributes[key]]);
+ delete attributes[key];
+ }
+ }
+ }
+ return ret;
+};
+CSL.cloneAmbigConfig = function (config, oldconfig, itemID) {
+ var ret, param, pos, ppos, len, llen;
+ ret = {};
+ ret.names = [];
+ ret.givens = [];
+ ret.year_suffix = false;
+ ret.disambiguate = false;
+ len = config.names.length;
+ for (pos = 0; pos < len; pos += 1) {
+ param = config.names[pos];
+ if (oldconfig && oldconfig.names[pos] !== param) {
+ this.tmp.taintedItemIDs[itemID] = true;
+ oldconfig = false;
+ }
+ ret.names[pos] = param;
+ }
+ len = config.givens.length;
+ for (pos = 0; pos < len; pos += 1) {
+ param = [];
+ llen = config.givens[pos].length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ if (oldconfig && oldconfig.givens[pos] && oldconfig.givens[pos][ppos] !== config.givens[pos][ppos]) {
+ this.tmp.taintedItemIDs[itemID] = true;
+ oldconfig = false;
+ }
+ param.push(config.givens[pos][ppos]);
+ }
+ ret.givens.push(param);
+ }
+ if (oldconfig && oldconfig.year_suffix !== config.year_suffix) {
+ this.tmp.taintedItemIDs[itemID] = true;
+ oldconfig = false;
+ }
+ ret.year_suffix = config.year_suffix;
+ if (oldconfig && oldconfig.year_suffix !== config.year_suffix) {
+ this.tmp.taintedItemIDs[itemID] = true;
+ oldconfig = false;
+ }
+ ret.disambiguate = config.disambiguate;
+ return ret;
+};
+CSL.tokenExec = function (token, Item, item) {
+ var next, maybenext, exec, pos, len, debug;
+ debug = false;
+ next = token.next;
+ maybenext = false;
+ if (token.evaluator) {
+ next = token.evaluator(token, this, Item, item);
+ }
+ len = token.execs.length;
+ for (pos = 0; pos < len; pos += 1) {
+ exec = token.execs[pos];
+ maybenext = exec.call(token, this, Item, item);
+ if (maybenext) {
+ next = maybenext;
+ }
+ }
+ if (false) {
+ CSL.debug(token.name + " (" + token.tokentype + ") ---> done");
+ }
+ return next;
+};
+CSL.expandMacro = function (macro_key_token) {
+ var mkey, start_token, key, end_token, navi, macroxml, newoutput, mergeoutput, end_of_macro;
+ mkey = macro_key_token.postponed_macro;
+ if (this.build.macro_stack.indexOf(mkey) > -1) {
+ throw "CSL processor error: call to macro \"" + mkey + "\" would cause an infinite loop";
+ } else {
+ this.build.macro_stack.push(mkey);
+ }
+ macro_key_token.tokentype = CSL.START;
+ CSL.Node.group.build.call(macro_key_token, this, this[this.build.area].tokens, true);
+ macroxml = this.sys.xml.getNodesByName(this.cslXml, 'macro', mkey);
+ if (!this.sys.xml.getNodeValue(macroxml)) {
+ throw "CSL style error: undefined macro \"" + mkey + "\"";
+ }
+ navi = new this.getNavi(this, macroxml);
+ CSL.buildStyle.call(this, navi);
+ end_of_macro = new CSL.Token("group", CSL.END);
+ CSL.Node.group.build.call(end_of_macro, this, this[this.build.area].tokens, true);
+ this.build.macro_stack.pop();
+};
+CSL.XmlToToken = function (state, tokentype) {
+ var name, txt, attrfuncs, attributes, decorations, token, key, target;
+ name = state.sys.xml.nodename(this);
+ if (state.build.skip && state.build.skip !== name) {
+ return;
+ }
+ if (!name) {
+ txt = state.sys.xml.content(this);
+ if (txt) {
+ state.build.text = txt;
+ }
+ return;
+ }
+ if (!CSL.Node[state.sys.xml.nodename(this)]) {
+ throw "Undefined node name \"" + name + "\".";
+ }
+ attrfuncs = [];
+ attributes = state.sys.xml.attributes(this);
+ decorations = CSL.setDecorations.call(this, state, attributes);
+ token = new CSL.Token(name, tokentype);
+ if (tokentype !== CSL.END) {
+ for (key in attributes) {
+ if (attributes.hasOwnProperty(key)) {
+ try {
+ CSL.Attributes[key].call(token, state, "" + attributes[key]);
+ } catch (e) {
+ if (e === "TypeError: Cannot call method \"call\" of undefined") {
+ throw "Unknown attribute \"" + key + "\" in node \"" + name + "\" while processing CSL file";
+ } else {
+ throw "CSL processor error, " + key + " attribute: " + e;
+ }
+ }
+ }
+ }
+ token.decorations = decorations;
+ }
+ target = state[state.build.area].tokens;
+ CSL.Node[name].build.call(token, state, target);
+};
+CSL.dateParser = function (txt) {
+ var jiy_list, jiy, jiysplitter, jy, jmd, jr, pos, key, val, yearlast, yearfirst, number, rangesep, fuzzychar, chars, rex, rexdash, rexdashslash, rexslashdash, seasonstrs, seasonrexes, seasonstr, monthstrs, monthstr, monthrexes, seasonrex, len, jiymatchstring, jiymatcher;
+ jiy_list = [
+ ["\u660E\u6CBB", 1867],
+ ["\u5927\u6B63", 1911],
+ ["\u662D\u548C", 1925],
+ ["\u5E73\u6210", 1988]
+ ];
+ jiy = {};
+ len = jiy_list.length;
+ for (pos = 0; pos < len; pos += 1) {
+ key = jiy_list[pos][0];
+ val = jiy_list[pos][1];
+ jiy[key] = val;
+ }
+ jiymatchstring = [];
+ for (pos = 0; pos < len; pos += 1) {
+ val = jiy_list[pos][0];
+ jiymatchstring.push(val);
+ }
+ jiymatchstring = jiymatchstring.join("|");
+ jiysplitter = "(?:" + jiymatchstring + ")(?:[0-9]+)";
+ jiysplitter = new RegExp(jiysplitter);
+ jiymatcher = "(?:" + jiymatchstring + ")(?:[0-9]+)";
+ jiymatcher = new RegExp(jiymatcher, "g");
+ jmd = /(\u6708|\u5E74)/g;
+ jy = /\u65E5/;
+ jr = /\u301c/g;
+ yearlast = "(?:[?0-9]{1,2}%%NUMD%%){0,2}[?0-9]{4}(?![0-9])";
+ yearfirst = "[?0-9]{4}(?:%%NUMD%%[?0-9]{1,2}){0,2}(?![0-9])";
+ number = "[?0-9]{1,3}";
+ rangesep = "[%%DATED%%]";
+ fuzzychar = "[?~]";
+ chars = "[a-zA-Z]+";
+ rex = "(" + yearfirst + "|" + yearlast + "|" + number + "|" + rangesep + "|" + fuzzychar + "|" + chars + ")";
+ rexdash = new RegExp(rex.replace(/%%NUMD%%/g, "-").replace(/%%DATED%%/g, "-"));
+ rexdashslash = new RegExp(rex.replace(/%%NUMD%%/g, "-").replace(/%%DATED%%/g, "\/"));
+ rexslashdash = new RegExp(rex.replace(/%%NUMD%%/g, "\/").replace(/%%DATED%%/g, "-"));
+ seasonstrs = ["spr", "sum", "fal", "win"];
+ seasonrexes = [];
+ len = seasonstrs.length;
+ for (pos = 0; pos < len; pos += 1) {
+ seasonrex = new RegExp(seasonstrs[pos] + ".*");
+ seasonrexes.push(seasonrex);
+ }
+ monthstrs = "jan feb mar apr may jun jul aug sep oct nov dec";
+ monthstrs = monthstrs.split(" ");
+ monthrexes = [];
+ len = monthstrs.length;
+ for (pos = 0; pos < len; pos += 1) {
+ monthstr = monthstrs[pos];
+ rex = new RegExp(monthstr);
+ monthrexes.push(rex);
+ }
+ this.parse = function (txt) {
+ var slash, dash, lst, l, m, number, note, thedate, slashcount, range_delim, date_delim, ret, delim_pos, delims, isrange, suff, date, breakme, item, pos, delim, ppos, element, pppos, len, llen, lllen, mm, slst, mmpos;
+ m = txt.match(jmd);
+ if (m) {
+ txt = txt.replace(jy, "");
+ txt = txt.replace(jmd, "-");
+ txt = txt.replace(jr, "/");
+ txt = txt.replace("-/", "/");
+ txt = txt.replace(/-$/,"");
+ slst = txt.split(jiysplitter);
+ lst = [];
+ mm = txt.match(jiymatcher);
+ var mmx = [];
+ for (pos = 0, len = mm.length; pos < len; pos += 1) {
+ mmx = mmx.concat(mm[pos].match(/([^0-9]+)([0-9]+)/).slice(1));
+ }
+ for (pos = 0, len = slst.length; pos < len; pos += 1) {
+ lst.push(slst[pos]);
+ if (pos !== (len - 1)) {
+ mmpos = (pos * 2);
+ lst.push(mmx[mmpos]);
+ lst.push(mmx[mmpos + 1]);
+ }
+ }
+ l = lst.length;
+ for (pos = 1; pos < l; pos += 3) {
+ lst[pos + 1] = jiy[lst[pos]] + parseInt(lst[pos + 1], 10);
+ lst[pos] = "";
+ }
+ txt = lst.join("");
+ txt = txt.replace(/\s*-\s*$/, "").replace(/\s*-\s*\//, "/");
+ txt = txt.replace(/\.\s*$/, "");
+ txt = txt.replace(/\.(?! )/, "");
+ slash = txt.indexOf("/");
+ dash = txt.indexOf("-");
+ }
+ txt = txt.replace(/([A-Za-z])\./g, "$1");
+ number = "";
+ note = "";
+ thedate = {};
+ if (txt.slice(0, 1) === "\"" && txt.slice(-1) === "\"") {
+ thedate.literal = txt.slice(1, -1);
+ return thedate;
+ }
+ if (slash > -1 && dash > -1) {
+ slashcount = txt.split("/");
+ if (slashcount.length > 3) {
+ range_delim = "-";
+ date_delim = "/";
+ lst = txt.split(rexslashdash);
+ } else {
+ range_delim = "/";
+ date_delim = "-";
+ lst = txt.split(rexdashslash);
+ }
+ } else {
+ txt = txt.replace("/", "-");
+ range_delim = "-";
+ date_delim = "-";
+ lst = txt.split(rexdash);
+ }
+ ret = [];
+ len = lst.length;
+ for (pos = 0; pos < len; pos += 1) {
+ item = lst[pos];
+ m = item.match(/^\s*([\-\/]|[a-zA-Z]+|[\-~?0-9]+)\s*$/);
+ if (m) {
+ ret.push(m[1]);
+ }
+ }
+ delim_pos = ret.indexOf(range_delim);
+ delims = [];
+ isrange = false;
+ if (delim_pos > -1) {
+ delims.push([0, delim_pos]);
+ delims.push([(delim_pos + 1), ret.length]);
+ isrange = true;
+ } else {
+ delims.push([0, ret.length]);
+ }
+ suff = "";
+ len = delims.length;
+ for (pos = 0; pos < len; pos += 1) {
+ delim = delims[pos];
+ date = ret.slice(delim[0], delim[1]);
+ llen = date.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ element = date[ppos];
+ if (element.indexOf(date_delim) > -1) {
+ this.parseNumericDate(thedate, date_delim, suff, element);
+ continue;
+ }
+ if (element.match(/[0-9]{4}/)) {
+ thedate[("year" + suff)] = element.replace(/^0*/, "");
+ continue;
+ }
+ breakme = false;
+ lllen = monthrexes.length;
+ for (pppos = 0; pppos < lllen; pppos += 1) {
+ if (element.toLocaleLowerCase().match(monthrexes[pppos])) {
+ thedate[("month" + suff)] = "" + (parseInt(pppos, 10) + 1);
+ breakme = true;
+ break;
+ }
+ if (breakme) {
+ continue;
+ }
+ if (element.match(/^[0-9]+$/)) {
+ number = parseInt(element, 10);
+ }
+ if (element.toLocaleLowerCase().match(/^bc/) && number) {
+ thedate[("year" + suff)] = "" + (number * -1);
+ number = "";
+ continue;
+ }
+ if (element.toLocaleLowerCase().match(/^ad/) && number) {
+ thedate[("year" + suff)] = "" + number;
+ number = "";
+ continue;
+ }
+ }
+ breakme = false;
+ lllen = seasonrexes.length;
+ for (pppos = 0; pppos < lllen; pppos += 1) {
+ if (element.toLocaleLowerCase().match(seasonrexes[pppos])) {
+ thedate[("season" + suff)] = "" + (parseInt(pppos, 10) + 1);
+ breakme = true;
+ break;
+ }
+ }
+ if (breakme) {
+ continue;
+ }
+ if (element === "~" || element === "?" || element === "c" || element.match(/^cir/)) {
+ thedate.fuzzy = "" + 1;
+ continue;
+ }
+ if (element.toLocaleLowerCase().match(/(?:mic|tri|hil|eas)/) && !thedate[("season" + suff)]) {
+ note = element;
+ continue;
+ }
+ }
+ if (number) {
+ thedate[("day" + suff)] = number;
+ number = "";
+ }
+ if (note && !thedate[("season" + suff)]) {
+ thedate[("season" + suff)] = note;
+ note = "";
+ }
+ suff = "_end";
+ }
+ if (isrange) {
+ len = CSL.DATE_PARTS_ALL.length;
+ for (pos = 0; pos < len; pos += 1) {
+ item = CSL.DATE_PARTS_ALL[pos];
+ if (thedate[item] && !thedate[(item + "_end")]) {
+ thedate[(item + "_end")] = thedate[item];
+ } else if (!thedate[item] && thedate[(item + "_end")]) {
+ thedate[item] = thedate[(item + "_end")];
+ }
+ }
+ }
+ if (!thedate.year) {
+ thedate = { "literal": txt };
+ }
+ return thedate;
+ };
+ this.parseNumericDate = function (ret, delim, suff, txt) {
+ var lst, pos, len;
+ lst = txt.split(delim);
+ len = lst.length;
+ for (pos = 0; pos < len; pos += 1) {
+ if (lst[pos].length === 4) {
+ ret[("year" + suff)] = lst[pos].replace(/^0*/, "");
+ if (!pos) {
+ lst = lst.slice(1);
+ } else {
+ lst = lst.slice(0, pos);
+ }
+ break;
+ }
+ }
+ len = lst.length;
+ for (pos = 0; pos < len; pos += 1) {
+ lst[pos] = parseInt(lst[pos], 10);
+ }
+ if (lst.length === 1) {
+ ret[("month" + suff)] = "" + lst[0];
+ } else if (lst.length === 2) {
+ if (lst[0] > 12) {
+ ret[("month" + suff)] = "" + lst[1];
+ ret[("day" + suff)] = "" + lst[0];
+ } else {
+ ret[("month" + suff)] = "" + lst[0];
+ ret[("day" + suff)] = "" + lst[1];
+ }
+ }
+ };
+};
+CSL.Engine = function (sys, style, lang, xmlmode) {
+ var attrs, langspec, localexml, locale;
+ this.processor_version = "1.0.16";
+ this.csl_version = "1.0";
+ this.sys = sys;
+ this.sys.xml = new CSL.System.Xml.Parsing();
+ if ("string" !== typeof style) {
+ style = "";
+ }
+ this.parallel = new CSL.Parallel(this);
+ this.transform = new CSL.Transform(this);
+ this.setAbbreviations = function (nick) {
+ this.transform.setAbbreviations(nick);
+ };
+ this.opt = new CSL.Engine.Opt();
+ this.tmp = new CSL.Engine.Tmp();
+ this.build = new CSL.Engine.Build();
+ this.fun = new CSL.Engine.Fun();
+ this.configure = new CSL.Engine.Configure();
+ this.citation_sort = new CSL.Engine.CitationSort();
+ this.bibliography_sort = new CSL.Engine.BibliographySort();
+ this.citation = new CSL.Engine.Citation(this);
+ this.bibliography = new CSL.Engine.Bibliography();
+ this.output = new CSL.Output.Queue(this);
+ this.dateput = new CSL.Output.Queue(this);
+ this.cslXml = this.sys.xml.makeXml(style);
+ this.sys.xml.addInstitutionNodes(this.cslXml);
+ attrs = this.sys.xml.attributes(this.cslXml);
+ if ("undefined" === typeof attrs["@sort-separator"]) {
+ this.sys.xml.setAttribute(this.cslXml, "sort-separator", ", ");
+ }
+ if ("undefined" === typeof attrs["@name-delimiter"]) {
+ this.sys.xml.setAttribute(this.cslXml, "name-delimiter", ", ");
+ }
+ this.opt["initialize-with-hyphen"] = true;
+ this.setStyleAttributes();
+ CSL.Util.Names.initNameSlices(this);
+ this.opt.xclass = sys.xml.getAttributeValue(this.cslXml, "class");
+ lang = this.opt["default-locale"][0];
+ langspec = CSL.localeResolve(lang);
+ this.opt.lang = langspec.best;
+ if (!CSL.locale[langspec.best]) {
+ localexml = sys.xml.makeXml(sys.retrieveLocale(langspec.best));
+ CSL.localeSet.call(CSL, sys, localexml, langspec.best, langspec.best);
+ }
+ this.locale = {};
+ locale = sys.xml.makeXml();
+ if (!this.locale[langspec.best]) {
+ CSL.localeSet.call(this, sys, this.cslXml, "", langspec.best);
+ CSL.localeSet.call(this, sys, this.cslXml, langspec.bare, langspec.best);
+ CSL.localeSet.call(this, sys, this.cslXml, langspec.best, langspec.best);
+ }
+ this.buildTokenLists("citation");
+ this.buildTokenLists("bibliography");
+ this.configureTokenLists();
+ this.registry = new CSL.Registry(this);
+ this.splice_delimiter = false;
+ this.fun.dateparser = new CSL.dateParser();
+ this.fun.flipflopper = new CSL.Util.FlipFlopper(this);
+ this.setCloseQuotesArray();
+ this.fun.ordinalizer.init(this);
+ this.fun.long_ordinalizer.init(this);
+ this.fun.page_mangler = CSL.Util.PageRangeMangler.getFunction(this);
+ this.setOutputFormat("html");
+};
+CSL.Engine.prototype.setCloseQuotesArray = function () {
+ var ret;
+ ret = [];
+ ret.push(this.getTerm("close-quote"));
+ ret.push(this.getTerm("close-inner-quote"));
+ ret.push('"');
+ ret.push("'");
+ this.opt.close_quotes_array = ret;
+};
+CSL.Engine.prototype.buildTokenLists = function (area) {
+ var area_nodes, navi;
+ area_nodes = this.sys.xml.getNodesByName(this.cslXml, area);
+ if (!this.sys.xml.getNodeValue(area_nodes)) {
+ return;
+ }
+ navi = new this.getNavi(this, area_nodes);
+ this.build.area = area;
+ CSL.buildStyle.call(this, navi);
+};
+CSL.Engine.prototype.setStyleAttributes = function () {
+ var dummy, attr, key, attributes, attrname;
+ dummy = {};
+ dummy.name = this.sys.xml.nodename(this.cslXml);
+ attributes = this.sys.xml.attributes(this.cslXml);
+ for (attrname in attributes) {
+ if (attributes.hasOwnProperty(attrname)) {
+ CSL.Attributes[attrname].call(dummy, this, attributes[attrname]);
+ }
+ }
+};
+CSL.buildStyle = function (navi) {
+ if (navi.getkids()) {
+ CSL.buildStyle.call(this, navi);
+ } else {
+ if (navi.getbro()) {
+ CSL.buildStyle.call(this, navi);
+ } else {
+ while (navi.nodeList.length > 1) {
+ if (navi.remember()) {
+ CSL.buildStyle.call(this, navi);
+ }
+ }
+ }
+ }
+};
+CSL.Engine.prototype.getNavi = function (state, myxml) {
+ this.sys = state.sys;
+ this.state = state;
+ this.nodeList = [];
+ this.nodeList.push([0, myxml]);
+ this.depth = 0;
+};
+CSL.Engine.prototype.getNavi.prototype.remember = function () {
+ var node;
+ this.depth += -1;
+ this.nodeList.pop();
+ node = this.nodeList[this.depth][1][(this.nodeList[this.depth][0])];
+ CSL.XmlToToken.call(node, this.state, CSL.END);
+ return this.getbro();
+};
+CSL.Engine.prototype.getNavi.prototype.getbro = function () {
+ var sneakpeek;
+ sneakpeek = this.nodeList[this.depth][1][(this.nodeList[this.depth][0] + 1)];
+ if (sneakpeek) {
+ this.nodeList[this.depth][0] += 1;
+ return true;
+ } else {
+ return false;
+ }
+};
+CSL.Engine.prototype.getNavi.prototype.getkids = function () {
+ var currnode, sneakpeek, pos, node, len;
+ currnode = this.nodeList[this.depth][1][this.nodeList[this.depth][0]];
+ sneakpeek = this.sys.xml.children(currnode);
+ if (this.sys.xml.numberofnodes(sneakpeek) === 0) {
+ CSL.XmlToToken.call(currnode, this.state, CSL.SINGLETON);
+ return false;
+ } else {
+ for (pos in sneakpeek) {
+ if (true) {
+ node = sneakpeek[pos];
+ if ("date" === this.sys.xml.nodename(node)) {
+ currnode = CSL.Util.fixDateNode.call(this, currnode, pos, node);
+ sneakpeek = this.sys.xml.children(currnode);
+ }
+ }
+ }
+ CSL.XmlToToken.call(currnode, this.state, CSL.START);
+ this.depth += 1;
+ this.nodeList.push([0, sneakpeek]);
+ return true;
+ }
+};
+CSL.Engine.prototype.getNavi.prototype.getNodeListValue = function () {
+ return this.nodeList[this.depth][1];
+};
+CSL.Engine.prototype.setOutputFormat = function (mode) {
+ this.opt.mode = mode;
+ this.fun.decorate = CSL.Mode(mode);
+ if (!this.output[mode]) {
+ this.output[mode] = {};
+ this.output[mode].tmp = {};
+ }
+};
+CSL.Engine.prototype.getTerm = function (term, form, plural) {
+ var ret = CSL.Engine.getField(CSL.LOOSE, this.locale[this.opt.lang].terms, term, form, plural);
+ if (typeof ret === "undefined") {
+ ret = CSL.Engine.getField(CSL.STRICT, CSL.locale[this.opt.lang].terms, term, form, plural);
+ }
+ return ret;
+};
+CSL.Engine.prototype.getDate = function (form) {
+ if (this.locale[this.opt.lang].dates[form]) {
+ return this.locale[this.opt.lang].dates[form];
+ } else {
+ return CSL.locale[this.opt.lang].dates[form];
+ }
+};
+CSL.Engine.prototype.getOpt = function (arg) {
+ if ("undefined" !== typeof this.locale[this.opt.lang].opts[arg]) {
+ return this.locale[this.opt.lang].opts[arg];
+ } else {
+ return CSL.locale[this.opt.lang].opts[arg];
+ }
+};
+CSL.Engine.prototype.getVariable = function (Item, varname, form, plural) {
+ return CSL.Engine.getField(CSL.LOOSE, Item, varname, form, plural);
+};
+CSL.Engine.prototype.getDateNum = function (ItemField, partname) {
+ if ("undefined" === typeof ItemField) {
+ return 0;
+ } else {
+ return ItemField[partname];
+ }
+};
+CSL.Engine.getField = function (mode, hash, term, form, plural) {
+ var ret, forms, f, pos, len;
+ ret = "";
+ if ("undefined" === typeof hash[term]) {
+ if (mode === CSL.STRICT) {
+ throw "Error in getField: term\"" + term + "\" does not exist.";
+ } else {
+ return undefined;
+ }
+ }
+ forms = [];
+ if (form === "symbol") {
+ forms = ["symbol", "short"];
+ } else if (form === "verb-short") {
+ forms = ["verb-short", "verb"];
+ } else if (form !== "long") {
+ forms = [form];
+ }
+ forms = forms.concat(["long"]);
+ len = forms.length;
+ for (pos = 0; pos < len; pos += 1) {
+ f = forms[pos];
+ if ("string" === typeof hash[term] || "number" === typeof hash[term]) {
+ ret = hash[term];
+ } else if ("undefined" !== typeof hash[term][f]) {
+ if ("string" === typeof hash[term][f] || "number" === typeof hash[term][f]) {
+ ret = hash[term][f];
+ } else {
+ if ("number" === typeof plural) {
+ ret = hash[term][f][plural];
+ } else {
+ ret = hash[term][f][0];
+ }
+ }
+ break;
+ }
+ }
+ return ret;
+};
+CSL.Engine.prototype.configureTokenLists = function () {
+ var dateparts_master, area, pos, token, dateparts, part, ppos, pppos, len, llen, lllen;
+ dateparts_master = ["year", "month", "day"];
+ len = CSL.AREAS.length;
+ for (pos = 0; pos < len; pos += 1) {
+ area = CSL.AREAS[pos];
+ llen = this[area].tokens.length - 1;
+ for (ppos = llen; ppos > -1; ppos += -1) {
+ token = this[area].tokens[ppos];
+ if ("date" === token.name && CSL.END === token.tokentype) {
+ dateparts = [];
+ }
+ if ("date-part" === token.name && token.strings.name) {
+ lllen = dateparts_master.length;
+ for (pppos = 0; pppos < lllen; pppos += 1) {
+ part = dateparts_master[pppos];
+ if (part === token.strings.name) {
+ dateparts.push(token.strings.name);
+ }
+ }
+ }
+ if ("date" === token.name && CSL.START === token.tokentype) {
+ dateparts.reverse();
+ token.dateparts = dateparts;
+ }
+ token.next = (ppos + 1);
+ if (token.name && CSL.Node[token.name].configure) {
+ CSL.Node[token.name].configure.call(token, this, ppos);
+ }
+ }
+ }
+ this.version = CSL.version;
+ return this.state;
+};
+CSL.Engine.prototype.getNameSubFields = function (names) {
+ var pos, ppos, pppos, count, ret, mode, use_static_ordering, name, newname, addme, updateme, part, o, p, m, newopt, len, llen, lllen, i, key, str, lang;
+ count = -1;
+ ret = [];
+ mode = "locale-name";
+ use_static_ordering = false;
+ if (this.tmp.area.slice(-5) === "_sort") {
+ mode = "locale-sort";
+ }
+ len = names.length;
+ for (pos = 0; pos < len; pos += 1) {
+ newname = {};
+ for (key in names[pos]) {
+ if (names[pos].hasOwnProperty(key)) {
+ newname[key] = names[pos][key];
+ }
+ }
+ if (newname.given && !newname.family) {
+ newname.family = "";
+ } else if (newname.family && !newname.given) {
+ newname.given = "";
+ }
+ addme = true;
+ updateme = false;
+ llen = CSL.MINIMAL_NAME_FIELDS;
+ for (ppos = 0; ppos < len; ppos += 1) {
+ part = CSL.MINIMAL_NAME_FIELDS[ppos];
+ p = newname[part];
+ if (p) {
+ if (newname[part].length && newname[part][0] !== ":") {
+ if (newname["static-ordering"]) {
+ use_static_ordering = true;
+ } else if (!newname[part].match(CSL.ROMANESQUE_REGEXP)) {
+ use_static_ordering = true;
+ } else {
+ use_static_ordering = false;
+ }
+ }
+ newname["static-ordering"] = use_static_ordering;
+ m = p.match(/^(:[\-a-zA-Z0-9]+:\s+)/);
+ if (m) {
+ str = p.slice(m[1].length);
+ lang = m[1].slice(1).replace(/:\s+$/, "");
+ addme = false;
+ lllen = this.opt[mode].length;
+ for (pppos = 0; pppos < len; pppos += 1) {
+ o = this.opt[mode][pppos];
+ if (lang === o) {
+ updateme = true;
+ newname[part] = str;
+ break;
+ }
+ }
+ if (!updateme) {
+ if (this.opt.lang) {
+ if (this.opt.lang.indexOf("-") > -1) {
+ newopt = this.opt.lang.slice(0, this.opt.lang.indexOf("-"));
+ } else {
+ newopt = this.opt.lang;
+ }
+ if (lang === newopt) {
+ updateme = true;
+ newname[part] = str;
+ if (newname[part].match(CSL.ROMANESQUE_REGEXP)) {
+ newname["static-ordering"] = false;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (addme) {
+ ret.push(newname);
+ count += 1;
+ } else if (updateme) {
+ for (key in newname) {
+ if (newname.hasOwnProperty(key)) {
+ ret[count][key] = newname[key];
+ }
+ }
+ }
+ if (!newname.literal && !newname.given && newname.family) {
+ newname.literal = newname.family;
+ }
+ if (newname.literal) {
+ delete newname.family;
+ delete newname.given;
+ }
+ }
+ return ret;
+};
+CSL.Engine.prototype.retrieveItems = function (ids) {
+ var ret, pos, len;
+ ret = [];
+ len = ids.length;
+ for (pos = 0; pos < len; pos += 1) {
+ ret.push(this.sys.retrieveItem(ids[pos]));
+ }
+ return ret;
+};
+CSL.Engine.prototype.dateParseArray = function (date_obj) {
+ var ret, field, dpos, ppos, dp, exts, llen, pos, len, pppos, lllen;
+ ret = {};
+ for (field in date_obj) {
+ if (field === "date-parts") {
+ dp = date_obj["date-parts"];
+ if (dp.length > 1) {
+ if (dp[0].length !== dp[1].length) {
+ CSL.error("CSL data error: element mismatch in date range input.");
+ }
+ }
+ exts = ["", "_end"];
+ llen = dp.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ lllen = CSL.DATE_PARTS.length;
+ for (pppos = 0; pppos < lllen; pppos += 1) {
+ ret[(CSL.DATE_PARTS[pppos] + exts[ppos])] = dp[ppos][pppos];
+ }
+ }
+ } else if (date_obj.hasOwnProperty(field)) {
+ ret[field] = date_obj[field];
+ }
+ }
+ return ret;
+};
+CSL.Engine.prototype.setOpt = function (token, name, value) {
+ if (token.name === "style") {
+ this.opt[name] = value;
+ } else if (["citation", "bibliography"].indexOf(token.name) > -1) {
+ this[token.name].opt[name] = value;
+ } else if (["name-form", "name-delimiter", "names-delimiter"].indexOf(name) === -1) {
+ token.strings[name] = value;
+ }
+};
+CSL.Engine.prototype.fixOpt = function (token, name, localname) {
+ if ("citation" === token.name || "bibliography" === token.name) {
+ if (! this[token.name].opt[name] && "undefined" !== this.opt[name]) {
+ this[token.name].opt[name] = this.opt[name];
+ }
+ }
+ if ("name" === token.name || "names" === token.name) {
+ if (! token.strings[localname] && "undefined" !== typeof this[this.build.area].opt[name]) {
+ token.strings[localname] = this[this.build.area].opt[name];
+ }
+ }
+};
+CSL.Engine.Opt = function () {
+ this.has_disambiguate = false;
+ this.mode = "html";
+ this.dates = {};
+ this["locale-sort"] = [];
+ this["locale-pri"] = [];
+ this["locale-sec"] = [];
+ this["locale-name"] = [];
+ this["default-locale"] = ["en"];
+ this.update_mode = CSL.NONE;
+ this["et-al-min"] = 0;
+ this["et-al-use-first"] = 1;
+ this["et-al-subsequent-min"] = false;
+ this["et-al-subsequent-use-first"] = false;
+ this["demote-non-dropping-particle"] = "display-and-sort";
+};
+CSL.Engine.Tmp = function () {
+ this.names_max = new CSL.Stack();
+ this.names_base = new CSL.Stack();
+ this.givens_base = new CSL.Stack();
+ this.value = [];
+ this.namepart_decorations = {};
+ this.namepart_type = false;
+ this.area = "citation";
+ this.can_substitute = new CSL.Stack(0, CSL.LITERAL);
+ this.element_rendered_ok = false;
+ this.element_trace = new CSL.Stack("style");
+ this.nameset_counter = 0;
+ this.term_sibling = new CSL.Stack([false, false, false], CSL.LITERAL);
+ this.term_predecessor = false;
+ this.jump = new CSL.Stack(0, CSL.LITERAL);
+ this.decorations = new CSL.Stack();
+ this.tokenstore_stack = new CSL.Stack();
+ this.last_suffix_used = "";
+ this.last_names_used = [];
+ this.last_years_used = [];
+ this.years_used = [];
+ this.names_used = [];
+ this.taintedItemIDs = false;
+ this.taintedCitationIDs = false;
+ this.initialize_with = new CSL.Stack();
+ this.disambig_request = false;
+ this["name-as-sort-order"] = false;
+ this.suppress_decorations = false;
+ this.disambig_settings = new CSL.AmbigConfig();
+ this.bib_sort_keys = [];
+ this.prefix = new CSL.Stack("", CSL.LITERAL);
+ this.suffix = new CSL.Stack("", CSL.LITERAL);
+ this.delimiter = new CSL.Stack("", CSL.LITERAL);
+ this.names_cut = {};
+};
+CSL.Engine.Fun = function () {
+ this.match = new CSL.Util.Match();
+ this.suffixator = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);
+ this.romanizer = new CSL.Util.Romanizer();
+ this.ordinalizer = new CSL.Util.Ordinalizer();
+ this.long_ordinalizer = new CSL.Util.LongOrdinalizer();
+};
+CSL.Engine.Build = function () {
+ this["alternate-term"] = false;
+ this.in_bibliography = false;
+ this.in_style = false;
+ this.skip = false;
+ this.postponed_macro = false;
+ this.layout_flag = false;
+ this.name = false;
+ this.form = false;
+ this.term = false;
+ this.macro = {};
+ this.macro_stack = [];
+ this.text = false;
+ this.lang = false;
+ this.area = "citation";
+ this.substitute_level = new CSL.Stack(0, CSL.LITERAL);
+ this.render_nesting_level = 0;
+ this.render_seen = false;
+};
+CSL.Engine.Configure = function () {
+ this.fail = [];
+ this.succeed = [];
+};
+CSL.Engine.Citation = function (state) {
+ this.opt = {};
+ this.tokens = [];
+ this.srt = new CSL.Registry.Comparifier(state, "citation_sort");
+ this.opt.collapse = [];
+ this.opt["disambiguate-add-names"] = false;
+ this.opt["disambiguate-add-givenname"] = false;
+ this.opt["near-note-distance"] = 5;
+ this.opt.topdecor = [];
+};
+CSL.Engine.Bibliography = function () {
+ this.opt = {};
+ this.tokens = [];
+ this.opt.collapse = [];
+ this.opt["disambiguate-add-names"] = false;
+ this.opt["disambiguate-add-givenname"] = false;
+ this.opt.topdecor = [];
+ this.opt.layout_decorations = [];
+ this.opt.layout_prefix = "";
+ this.opt.layout_suffix = "";
+ this.opt.layout_delimiter = "";
+ this.opt["line-spacing"] = 1;
+ this.opt["entry-spacing"] = 1;
+};
+CSL.Engine.BibliographySort = function () {
+ this.tokens = [];
+ this.opt = {};
+ this.opt.sort_directions = [];
+ this.keys = [];
+ this.opt.topdecor = [];
+};
+CSL.Engine.CitationSort = function () {
+ this.tokens = [];
+ this.opt = {};
+ this.opt.sort_directions = [];
+ this.keys = [];
+ this.opt.topdecor = [];
+};
+CSL.Engine.prototype.setCitationId = function (citation) {
+ var ret, id, direction;
+ ret = false;
+ if (!citation.citationID) {
+ ret = true;
+ id = Math.floor(Math.random() * 100000000000000);
+ while (true) {
+ direction = 0;
+ if (!this.registry.citationreg.citationById[id]) {
+ citation.citationID = id.toString(32);
+ break;
+ } else if (!direction && id < 50000000000000) {
+ direction = 1;
+ } else {
+ direction = -1;
+ }
+ if (direction === 1) {
+ id += 1;
+ } else {
+ id += -1;
+ }
+ }
+ }
+ this.registry.citationreg.citationById[citation.citationID] = citation;
+ return ret;
+};
+CSL.Engine.prototype.updateItems = function (idList) {
+ var debug = false;
+ this.registry.init(idList);
+ this.registry.dodeletes(this.registry.myhash);
+ this.registry.doinserts(this.registry.mylist);
+ this.registry.dorefreshes();
+ this.registry.rebuildlist();
+ this.registry.setdisambigs();
+ this.registry.setsortkeys();
+ this.registry.sorttokens();
+ this.registry.renumber();
+ this.registry.yearsuffix();
+ return this.registry.getSortedIds();
+};
+CSL.Engine.prototype.updateUncitedItems = function (idList) {
+ var debug = false;
+ this.registry.init(idList, true);
+ this.registry.doinserts(this.registry.mylist);
+ this.registry.douncited();
+ this.registry.rebuildlist();
+ this.registry.setdisambigs();
+ this.registry.setsortkeys();
+ this.registry.sorttokens();
+ this.registry.renumber();
+ this.registry.yearsuffix();
+ return this.registry.getSortedIds();
+};
+CSL.Engine.prototype.makeBibliography = function (bibsection) {
+ var debug, ret, params, maxoffset, item, len, pos, tok, tokk, tokkk, entry_ids, entry_strings;
+ debug = false;
+ ret = CSL.getBibliographyEntries.call(this, bibsection);
+ entry_ids = ret[0];
+ entry_strings = ret[1];
+ params = {
+ "maxoffset": 0,
+ "entryspacing": this.bibliography.opt["entry-spacing"],
+ "linespacing": this.bibliography.opt["line-spacing"],
+ "second-field-align": false,
+ "entry_ids": entry_ids
+ };
+ if (this.bibliography.opt["second-field-align"]) {
+ params["second-field-align"] = this.bibliography.opt["second-field-align"];
+ }
+ maxoffset = 0;
+ len = this.registry.reflist.length;
+ for (pos = 0; pos < len; pos += 1) {
+ item = this.registry.reflist[pos];
+ if (item.offset > params.maxoffset) {
+ params.maxoffset = item.offset;
+ }
+ }
+ if (this.bibliography.opt.hangingindent) {
+ params.hangingindent = this.bibliography.opt.hangingindent;
+ }
+ params.bibstart = this.fun.decorate.bibstart;
+ params.bibend = this.fun.decorate.bibend;
+ return [params, entry_strings];
+};
+CSL.getBibliographyEntries = function (bibsection) {
+ var ret, input, include, anymatch, allmatch, bib_entry, res, len, pos, item, llen, ppos, spec, lllen, pppos, bib_layout, topblobs, all_item_ids, entry_item_ids, debug, collapse_parallel, i, siblings, skips, sortedItems, eyetem;
+ ret = [];
+ this.tmp.area = "bibliography";
+ input = this.retrieveItems(this.registry.getSortedIds());
+ this.tmp.disambig_override = true;
+ function eval_string(a, b) {
+ if (a === b) {
+ return true;
+ }
+ return false;
+ }
+ function eval_list(a, lst) {
+ lllen = lst.length;
+ for (pppos = 0; pppos < lllen; pppos += 1) {
+ if (eval_string(a, lst[pppos])) {
+ return true;
+ }
+ }
+ return false;
+ }
+ function eval_spec(a, b) {
+ if ((a === "none" || !a) && !b) {
+ return true;
+ }
+ if ("string" === typeof b) {
+ return eval_string(a, b);
+ } else if (!b) {
+ return false;
+ } else {
+ return eval_list(a, b);
+ }
+ }
+ skips = {};
+ all_item_ids = [];
+ len = input.length;
+ for (pos = 0; pos < len; pos += 1) {
+ item = input[pos];
+ if (skips[item.id]) {
+ continue;
+ }
+ if (bibsection) {
+ include = true;
+ if (bibsection.include) {
+ include = false;
+ llen = bibsection.include.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ spec = bibsection.include[ppos];
+ if (eval_spec(spec.value, item[spec.field])) {
+ include = true;
+ break;
+ }
+ }
+ } else if (bibsection.exclude) {
+ anymatch = false;
+ llen = bibsection.exclude.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ spec = bibsection.exclude[ppos];
+ if (eval_spec(spec.value, item[spec.field])) {
+ anymatch = true;
+ break;
+ }
+ }
+ if (anymatch) {
+ include = false;
+ }
+ } else if (bibsection.select) {
+ include = false;
+ allmatch = true;
+ llen = bibsection.select.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ spec = bibsection.select[ppos];
+ if (!eval_spec(spec.value, item[spec.field])) {
+ allmatch = false;
+ }
+ }
+ if (allmatch) {
+ include = true;
+ }
+ }
+ if (bibsection.quash) {
+ allmatch = true;
+ llen = bibsection.quash.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ spec = bibsection.quash[ppos];
+ if (!eval_spec(spec.value, item[spec.field])) {
+ allmatch = false;
+ }
+ }
+ if (allmatch) {
+ include = false;
+ }
+ }
+ if (!include) {
+ continue;
+ }
+ }
+ bib_entry = new CSL.Token("group", CSL.START);
+ bib_entry.decorations = [["@bibliography", "entry"]].concat(this[this.build.area].opt.layout_decorations);
+ this.output.startTag("bib_entry", bib_entry);
+ sortedItems = [[{id: item.id}, item]];
+ entry_item_ids = [];
+ if (this.registry.registry[item.id].master) {
+ collapse_parallel = true;
+ this.parallel.StartCitation(sortedItems);
+ this.output.queue[0].strings.delimiter = ", ";
+ entry_item_ids.push(CSL.getCite.call(this, item));
+ skips[item.id] = true;
+ siblings = this.registry.registry[item.id].siblings;
+ for (ppos = 0, llen = siblings.length; ppos < llen; ppos += 1) {
+ i = this.registry.registry[item.id].siblings[ppos];
+ eyetem = this.sys.retrieveItem(i);
+ entry_item_ids.push(CSL.getCite.call(this, eyetem));
+ skips[eyetem.id] = true;
+ }
+ this.parallel.ComposeSet();
+ this.parallel.PruneOutputQueue();
+ } else if (!this.registry.registry[item.id].siblings) {
+ entry_item_ids.push(CSL.getCite.call(this, item));
+ }
+ all_item_ids.push(entry_item_ids);
+ this.output.endTag("bib_entry");
+ if (this.output.queue[0].blobs.length && this.output.queue[0].blobs[0].blobs.length) {
+ if (collapse_parallel) {
+ topblobs = this.output.queue[0].blobs;
+ collapse_parallel = false;
+ } else {
+ topblobs = this.output.queue[0].blobs[0].blobs;
+ }
+ llen = topblobs.length - 1;
+ for (ppos = llen; ppos > -1; ppos += -1) {
+ if (topblobs[ppos].blobs && topblobs[ppos].blobs.length !== 0) {
+ topblobs[ppos].strings.suffix += this[this.build.area].opt.layout_suffix;
+ break;
+ }
+ }
+ topblobs[0].strings.prefix = this[this.build.area].opt.layout_prefix + topblobs[0].strings.prefix;
+ }
+ res = this.output.string(this, this.output.queue)[0];
+ if (!res) {
+ res = "\n[CSL STYLE ERROR: reference with no printed form.]\n";
+ }
+ ret.push(res);
+ }
+ this.tmp.disambig_override = false;
+ return [all_item_ids, ret];
+};
+CSL.Engine.prototype.appendCitationCluster = function (citation, has_bibliography) {
+ var pos, len, c, citationsPre;
+ citationsPre = [];
+ len = this.registry.citationreg.citationByIndex.length;
+ for (pos = 0; pos < len; pos += 1) {
+ c = this.registry.citationreg.citationByIndex[pos];
+ citationsPre.push([c.citationID, c.properties.noteIndex]);
+ }
+ return this.processCitationCluster(citation, citationsPre, []);
+};
+CSL.Engine.prototype.processCitationCluster = function (citation, citationsPre, citationsPost, has_bibliography) {
+ var sortedItems, new_citation, pos, len, item, citationByIndex, c, Item, newitem, k, textCitations, noteCitations, update_items, citations, first_ref, last_ref, ipos, ilen, cpos, onecitation, oldvalue, ibidme, suprame, useme, items, i, key, prev_locator, curr_locator, param, ret, obj, ppos, llen, lllen, pppos, ppppos, llllen, cids, note_distance;
+ this.tmp.taintedItemIDs = {};
+ this.tmp.taintedCitationIDs = {};
+ sortedItems = [];
+ new_citation = this.setCitationId(citation);
+ len = citation.citationItems.length;
+ for (pos = 0; pos < len; pos += 1) {
+ item = citation.citationItems[pos];
+ Item = this.sys.retrieveItem(item.id);
+ newitem = [Item, item];
+ sortedItems.push(newitem);
+ citation.citationItems[pos].item = Item;
+ }
+ if (sortedItems && sortedItems.length > 1 && this.citation_sort.tokens.length > 0) {
+ len = sortedItems.length;
+ for (pos = 0; pos < len; pos += 1) {
+ sortedItems[pos][1].sortkeys = CSL.getSortKeys.call(this, sortedItems[pos][0], "citation_sort");
+ }
+ sortedItems.sort(this.citation.srt.compareCompositeKeys);
+ }
+ citation.sortedItems = sortedItems;
+ citationByIndex = [];
+ len = citationsPre.length;
+ for (pos = 0; pos < len; pos += 1) {
+ c = citationsPre[pos];
+ this.registry.citationreg.citationById[c[0]].properties.noteIndex = c[1];
+ citationByIndex.push(this.registry.citationreg.citationById[c[0]]);
+ }
+ citationByIndex.push(citation);
+ len = citationsPost.length;
+ for (pos = 0; pos < len; pos += 1) {
+ c = citationsPost[pos];
+ this.registry.citationreg.citationById[c[0]].properties.noteIndex = c[1];
+ citationByIndex.push(this.registry.citationreg.citationById[c[0]]);
+ }
+ this.registry.citationreg.citationByIndex = citationByIndex;
+ this.registry.citationreg.citationsByItemId = {};
+ if (this.opt.update_mode === CSL.POSITION || true) {
+ textCitations = [];
+ noteCitations = [];
+ }
+ update_items = [];
+ len = citationByIndex.length;
+ for (pos = 0; pos < len; pos += 1) {
+ citationByIndex[pos].properties.index = pos;
+ llen = citationByIndex[pos].sortedItems.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ item = citationByIndex[pos].sortedItems[ppos];
+ if (!this.registry.citationreg.citationsByItemId[item[1].id]) {
+ this.registry.citationreg.citationsByItemId[item[1].id] = [];
+ update_items.push(item[1].id);
+ }
+ if (this.registry.citationreg.citationsByItemId[item[1].id].indexOf(citationByIndex[pos]) === -1) {
+ this.registry.citationreg.citationsByItemId[item[1].id].push(citationByIndex[pos]);
+ }
+ }
+ if (this.opt.update_mode === CSL.POSITION || true) {
+ if (citationByIndex[pos].properties.noteIndex) {
+ noteCitations.push(citationByIndex[pos]);
+ } else {
+ textCitations.push(citationByIndex[pos]);
+ }
+ }
+ }
+ if (!has_bibliography) {
+ this.updateItems(update_items);
+ }
+ if (this.opt.update_mode === CSL.POSITION || true) {
+ for (pos = 0; pos < 2; pos += 1) {
+ citations = [textCitations, noteCitations][pos];
+ first_ref = {};
+ last_ref = {};
+ llen = citations.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ onecitation = citations[ppos];
+ lllen = citations[ppos].sortedItems.length;
+ for (pppos = 0; pppos < lllen; pppos += 1) {
+ item = citations[ppos].sortedItems[pppos];
+ oldvalue = {};
+ oldvalue.position = item[1].position;
+ oldvalue["first-reference-note-number"] = item[1]["first-reference-note-number"];
+ oldvalue["near-note"] = item[1]["near-note"];
+ item[1]["first-reference-note-number"] = 0;
+ item[1]["near-note"] = false;
+ if ("number" !== typeof first_ref[item[1].id]) {
+ if (!onecitation.properties.noteIndex) {
+ onecitation.properties.noteIndex = 0;
+ }
+ first_ref[item[1].id] = onecitation.properties.noteIndex;
+ last_ref[item[1].id] = onecitation.properties.noteIndex;
+ item[1].position = CSL.POSITION_FIRST;
+ } else {
+ ibidme = false;
+ suprame = false;
+ if (ppos > 0 && parseInt(pppos, 10) === 0) {
+ items = citations[(ppos - 1)].sortedItems;
+ useme = false;
+ if ((citations[(ppos - 1)].sortedItems[0][1].id === item[1].id && citations[ppos - 1].properties.noteIndex >= (citations[ppos].properties.noteIndex - 1)) || citations[(ppos - 1)].sortedItems[0][1].id === this.registry.registry[item[1].id].parallel) {
+ useme = true;
+ }
+ llllen = items.slice(1).length;
+ for (ppppos = 0; ppppos < llllen; ppppos += 1) {
+ i = items.slice(1)[ppppos];
+ if (!this.registry.registry[i[1].id].parallel || this.registry.registry[i[1].id].parallel === this.registry.registry[i[1].id]) {
+ useme = false;
+ }
+ }
+ if (useme) {
+ ibidme = true;
+ } else {
+ suprame = true;
+ }
+ } else if (pppos > 0 && onecitation.sortedItems[(pppos - 1)][1].id === item[1].id) {
+ ibidme = true;
+ } else {
+ suprame = true;
+ }
+ if (ibidme) {
+ if (pppos > 0) {
+ prev_locator = onecitation.sortedItems[(pppos - 1)][1].locator;
+ } else {
+ prev_locator = citations[(ppos - 1)].sortedItems[0][1].locator;
+ }
+ curr_locator = item[1].locator;
+ }
+ if (ibidme && prev_locator && !curr_locator) {
+ ibidme = false;
+ suprame = true;
+ }
+ if (ibidme) {
+ if (!prev_locator && curr_locator) {
+ item[1].position = CSL.POSITION_IBID_WITH_LOCATOR;
+ } else if (!prev_locator && !curr_locator) {
+ item[1].position = CSL.POSITION_IBID;
+ } else if (prev_locator && curr_locator === prev_locator) {
+ item[1].position = CSL.POSITION_IBID;
+ } else if (prev_locator && curr_locator && curr_locator !== prev_locator) {
+ item[1].position = CSL.POSITION_IBID_WITH_LOCATOR;
+ } else {
+ ibidme = false; // just to be clear
+ suprame = true;
+ }
+ }
+ if (suprame) {
+ item[1].position = CSL.POSITION_SUBSEQUENT;
+ if (first_ref[item[1].id] !== onecitation.properties.noteIndex) {
+ item[1]["first-reference-note-number"] = first_ref[item[1].id];
+ }
+ }
+ }
+ if (onecitation.properties.noteIndex) {
+ cids = this.registry.citationreg.citationsByItemId[item[0].id];
+ for (ppppos = (cids.length - 1); ppppos > -1; ppppos += -1) {
+ if (cids[ppppos].properties.noteIndex < onecitation.properties.noteIndex) {
+ note_distance = onecitation.properties.noteIndex - cids[ppppos].properties.noteIndex;
+ if (note_distance <= this.citation.opt["near-note-distance"]) {
+ item[1]["near-note"] = true;
+ }
+ }
+ }
+ }
+ if (onecitation.citationID !== citation.citationID) {
+ llllen = CSL.POSITION_TEST_VARS.length;
+ for (ppppos = 0; ppppos < llllen; ppppos += 1) {
+ param = CSL.POSITION_TEST_VARS[ppppos];
+ if (item[1][param] !== oldvalue[param]) {
+ this.tmp.taintedCitationIDs[onecitation.citationID] = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ for (key in this.tmp.taintedItemIDs) {
+ if (this.tmp.taintedItemIDs.hasOwnProperty(key)) {
+ citations = this.registry.citationreg.citationsByItemId[key];
+ for (pos = 0, len = citations.length; pos < len; pos += 1) {
+ this.tmp.taintedCitationIDs[citations[pos].citationID] = true;
+ }
+ }
+ }
+ ret = [];
+ for (key in this.tmp.taintedCitationIDs) {
+ if (this.tmp.taintedCitationIDs.hasOwnProperty(key)) {
+ obj = [];
+ citation = this.registry.citationreg.citationById[key];
+ obj.push(citation.properties.index);
+ obj.push(this.process_CitationCluster.call(this, citation.sortedItems));
+ ret.push(obj);
+ }
+ }
+ this.tmp.taintedItemIDs = false;
+ this.tmp.taintedCitationIDs = false;
+ obj = [];
+ obj.push(citationsPre.length);
+ obj.push(this.process_CitationCluster.call(this, sortedItems));
+ ret.push(obj);
+ ret.sort(function (a, b) {
+ if (a[0] > b[0]) {
+ return 1;
+ } else if (a[0] < b[0]) {
+ return -1;
+ } else {
+ return 0;
+ }
+ });
+ return ret;
+};
+CSL.Engine.prototype.process_CitationCluster = function (sortedItems) {
+ var str;
+ this.parallel.StartCitation(sortedItems);
+ str = CSL.getCitationCluster.call(this, sortedItems);
+ return str;
+};
+CSL.Engine.prototype.makeCitationCluster = function (rawList) {
+ var inputList, newitem, str, pos, len, item, Item;
+ inputList = [];
+ len = rawList.length;
+ for (pos = 0; pos < len; pos += 1) {
+ item = rawList[pos];
+ Item = this.sys.retrieveItem(item.id);
+ newitem = [Item, item];
+ inputList.push(newitem);
+ }
+ if (inputList && inputList.length > 1 && this.citation_sort.tokens.length > 0) {
+ len = inputList.length;
+ for (pos = 0; pos < len; pos += 1) {
+ rawList[pos].sortkeys = CSL.getSortKeys.call(this, inputList[pos][0], "citation_sort");
+ }
+ inputList.sort(this.citation.srt.compareCompositeKeys);
+ }
+ this.parallel.StartCitation(inputList);
+ str = CSL.getCitationCluster.call(this, inputList);
+ return str;
+};
+CSL.getAmbiguousCite = function (Item, disambig) {
+ var use_parallels, ret;
+ if (disambig) {
+ this.tmp.disambig_request = disambig;
+ } else {
+ this.tmp.disambig_request = false;
+ }
+ this.tmp.area = "citation";
+ use_parallels = this.parallel.use_parallels;
+ this.parallel.use_parallels = false;
+ this.tmp.suppress_decorations = true;
+ this.tmp.just_looking = true;
+ CSL.getCite.call(this, Item, {position: 1});
+ ret = this.output.string(this, this.output.queue);
+ this.tmp.just_looking = false;
+ this.tmp.suppress_decorations = false;
+ this.parallel.use_parallels = use_parallels;
+ return ret;
+};
+CSL.getSpliceDelimiter = function (last_collapsed) {
+ if (last_collapsed && ! this.tmp.have_collapsed && this.citation.opt["after-collapse-delimiter"]) {
+ this.tmp.splice_delimiter = this.citation.opt["after-collapse-delimiter"];
+ }
+ return this.tmp.splice_delimiter;
+};
+CSL.getCitationCluster = function (inputList, citationID) {
+ var delimiter, result, objects, myparams, len, pos, item, last_collapsed, params, empties, composite, compie, myblobs, Item, llen, ppos, obj;
+ this.tmp.area = "citation";
+ delimiter = "";
+ result = "";
+ objects = [];
+ this.tmp.last_suffix_used = "";
+ this.tmp.last_names_used = [];
+ this.tmp.last_years_used = [];
+ this.tmp.backref_index = [];
+ if (citationID) {
+ this.registry.citationreg.citationById[citationID].properties.backref_index = false;
+ this.registry.citationreg.citationById[citationID].properties.backref_citation = false;
+ }
+ myparams = [];
+ len = inputList.length;
+ for (pos = 0; pos < len; pos += 1) {
+ Item = inputList[pos][0];
+ item = inputList[pos][1];
+ last_collapsed = this.tmp.have_collapsed;
+ params = {};
+ if (pos > 0) {
+ CSL.getCite.call(this, Item, item, inputList[(pos - 1)][1].id);
+ } else {
+ this.tmp.term_predecessor = false;
+ CSL.getCite.call(this, Item, item);
+ }
+ if (pos === (inputList.length - 1)) {
+ this.parallel.ComposeSet();
+ }
+ params.splice_delimiter = CSL.getSpliceDelimiter.call(this, last_collapsed);
+ if (item && item["author-only"]) {
+ this.tmp.suppress_decorations = true;
+ }
+ params.suppress_decorations = this.tmp.suppress_decorations;
+ params.have_collapsed = this.tmp.have_collapsed;
+ myparams.push(params);
+ }
+ this.parallel.PruneOutputQueue(this);
+ empties = 0;
+ myblobs = this.output.queue.slice();
+ len = myblobs.length;
+ for (pos = 0; pos < len; pos += 1) {
+ this.output.queue = [myblobs[pos]];
+ this.tmp.suppress_decorations = myparams[pos].suppress_decorations;
+ this.tmp.splice_delimiter = myparams[pos].splice_delimiter;
+ if (myblobs[pos].parallel_delimiter) {
+ this.tmp.splice_delimiter = myblobs[pos].parallel_delimiter;
+ }
+ this.tmp.have_collapsed = myparams[pos].have_collapsed;
+ composite = this.output.string(this, this.output.queue);
+ this.tmp.suppress_decorations = false;
+ if (item && item["author-only"]) {
+ return composite;
+ }
+ if ("object" === typeof composite && composite.length === 0 && !item["suppress-author"]) {
+ composite.push("[CSL STYLE ERROR: reference with no printed form.]");
+ }
+ if (objects.length && "string" === typeof composite[0]) {
+ composite.reverse();
+ objects.push(this.tmp.splice_delimiter + composite.pop());
+ } else {
+ composite.reverse();
+ compie = composite.pop();
+ if ("undefined" !== typeof compie) {
+ objects.push(compie);
+ }
+ }
+ composite.reverse();
+ llen = composite.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ obj = composite[ppos];
+ if ("string" === typeof obj) {
+ objects.push(this.tmp.splice_delimiter + obj);
+ continue;
+ }
+ compie = composite.pop();
+ if ("undefined" !== typeof compie) {
+ objects.push(compie);
+ }
+ }
+ if (objects.length === 0 && !inputList[pos][1]["suppress-author"]) {
+ empties += 1;
+ }
+ }
+ result += this.output.renderBlobs(objects)[0];
+ if (result) {
+ if (result.slice(-1) === this.citation.opt.layout_suffix.slice(0)) {
+ result = result.slice(0, -1);
+ }
+ result = this.citation.opt.layout_prefix + result + this.citation.opt.layout_suffix;
+ if (!this.tmp.suppress_decorations) {
+ len = this.citation.opt.layout_decorations.length;
+ for (pos = 0; pos < len; pos += 1) {
+ params = this.citation.opt.layout_decorations[pos];
+ result = this.fun.decorate[params[0]][params[1]](this, result);
+ }
+ }
+ }
+ return result;
+};
+CSL.getCite = function (Item, item, prevItemID) {
+ var next;
+ this.parallel.StartCite(Item, item, prevItemID);
+ CSL.citeStart.call(this, Item);
+ next = 0;
+ while (next < this[this.tmp.area].tokens.length) {
+ next = CSL.tokenExec.call(this, this[this.tmp.area].tokens[next], Item, item);
+ }
+ CSL.citeEnd.call(this, Item);
+ this.parallel.CloseCite(this);
+ return Item.id;
+};
+CSL.citeStart = function (Item) {
+ this.tmp.have_collapsed = true;
+ this.tmp.render_seen = false;
+ if (this.tmp.disambig_request && ! this.tmp.disambig_override) {
+ this.tmp.disambig_settings = this.tmp.disambig_request;
+ } else if (this.registry.registry[Item.id] && ! this.tmp.disambig_override) {
+ this.tmp.disambig_request = this.registry.registry[Item.id].disambig;
+ this.tmp.disambig_settings = this.registry.registry[Item.id].disambig;
+ } else {
+ this.tmp.disambig_settings = new CSL.AmbigConfig();
+ }
+ this.tmp.names_used = [];
+ this.tmp.nameset_counter = 0;
+ this.tmp.years_used = [];
+ this.tmp.names_max.clear();
+ this.tmp.splice_delimiter = this[this.tmp.area].opt.delimiter;
+ this.bibliography_sort.keys = [];
+ this.citation_sort.keys = [];
+ this.tmp.count_offset_characters = false;
+ this.tmp.offset_characters = 0;
+ this.tmp.has_done_year_suffix = false;
+ CSL.Util.Names.initNameSlices(this);
+};
+CSL.citeEnd = function (Item) {
+ if (this.tmp.last_suffix_used && this.tmp.last_suffix_used.match(/[\-.,;:]$/)) {
+ this.tmp.splice_delimiter = " ";
+ } else if (this.tmp.prefix.value() && this.tmp.prefix.value().match(/^[.,:;a-z]/)) {
+ this.tmp.splice_delimiter = " ";
+ }
+ this.tmp.last_suffix_used = this.tmp.suffix.value();
+ this.tmp.last_years_used = this.tmp.years_used.slice();
+ this.tmp.last_names_used = this.tmp.names_used.slice();
+ if (this.tmp.disambig_restore && this.registry.registry[Item.id]) {
+ this.registry.registry[Item.id].disambig = this.tmp.disambig_restore;
+ }
+ this.tmp.disambig_request = false;
+ if (!this.tmp.suppress_decorations && this.tmp.offset_characters) {
+ this.registry.registry[Item.id].offset = this.tmp.offset_characters;
+ }
+};
+CSL.Node = {};
+CSL.Node.bibliography = {
+ build: function (state, target) {
+ if (this.tokentype === CSL.START) {
+ state.fixOpt(this, "names-delimiter", "delimiter");
+ state.fixOpt(this, "name-delimiter", "delimiter");
+ state.fixOpt(this, "name-form", "form");
+ state.fixOpt(this, "and", "and");
+ state.fixOpt(this, "delimiter-precedes-last", "delimiter-precedes-last");
+ state.fixOpt(this, "initialize-with", "initialize-with");
+ state.fixOpt(this, "name-as-sort-order", "name-as-sort-order");
+ state.fixOpt(this, "sort-separator", "sort-separator");
+ state.fixOpt(this, "et-al-min", "et-al-min");
+ state.fixOpt(this, "et-al-use-first", "et-al-use-first");
+ state.fixOpt(this, "et-al-subsequent-min", "et-al-subsequent-min");
+ state.fixOpt(this, "et-al-subsequent-use-first", "et-al-subsequent-use-first");
+ state.build.area_return = state.build.area;
+ state.build.area = "bibliography";
+ }
+ if (this.tokentype === CSL.END) {
+ state.build.area = state.build.area_return;
+ }
+ target.push(this);
+ }
+};
+CSL.Node.choose = {
+ build: function (state, target) {
+ var func;
+ if (this.tokentype === CSL.START) {
+ func = function (state, Item) {
+ state.tmp.jump.push(undefined, CSL.LITERAL);
+ };
+ }
+ if (this.tokentype === CSL.END) {
+ func = function (state, Item) {
+ state.tmp.jump.pop();
+ };
+ }
+ this.execs.push(func);
+ target.push(this);
+ },
+ configure: function (state, pos) {
+ if (this.tokentype === CSL.END) {
+ state.configure.fail.push((pos));
+ state.configure.succeed.push((pos));
+ } else {
+ state.configure.fail.pop();
+ state.configure.succeed.pop();
+ }
+ }
+};
+CSL.Node.citation = {
+ build: function (state, target) {
+ if (this.tokentype === CSL.START) {
+ state.fixOpt(this, "names-delimiter", "delimiter");
+ state.fixOpt(this, "name-delimiter", "delimiter");
+ state.fixOpt(this, "name-form", "form");
+ state.fixOpt(this, "and", "and");
+ state.fixOpt(this, "delimiter-precedes-last", "delimiter-precedes-last");
+ state.fixOpt(this, "initialize-with", "initialize-with");
+ state.fixOpt(this, "name-as-sort-order", "name-as-sort-order");
+ state.fixOpt(this, "sort-separator", "sort-separator");
+ state.fixOpt(this, "et-al-min", "et-al-min");
+ state.fixOpt(this, "et-al-use-first", "et-al-use-first");
+ state.fixOpt(this, "et-al-subsequent-min", "et-al-subsequent-min");
+ state.fixOpt(this, "et-al-subsequent-use-first", "et-al-subsequent-use-first");
+ state.build.area_return = state.build.area;
+ state.build.area = "citation";
+ }
+ if (this.tokentype === CSL.END) {
+ state.build.area = state.build.area_return;
+ }
+ }
+};
+CSL.Node.date = {
+ build: function (state, target) {
+ var func, date_obj, tok, len, pos, part, dpx, parts, mypos, start, end;
+ if (this.tokentype === CSL.START || this.tokentype === CSL.SINGLETON) {
+ state.build.date_parts = [];
+ state.build.date_variables = this.variables;
+ if (!state.build.sort_flag) {
+ CSL.Util.substituteStart.call(this, state, target);
+ }
+ func = function (state, Item) {
+ var key, dp;
+ state.tmp.element_rendered_ok = false;
+ state.tmp.donesies = [];
+ state.tmp.dateparts = [];
+ dp = [];
+ if (this.variables.length) {
+ state.parallel.StartVariable(this.variables[0]);
+ date_obj = Item[this.variables[0]];
+ if ("undefined" === typeof date_obj) {
+ date_obj = {"date-parts": [[0]] };
+ }
+ if (date_obj.raw) {
+ state.tmp.date_object = state.fun.dateparser.parse(date_obj.raw);
+ } else if (date_obj["date-parts"]) {
+ state.tmp.date_object = state.dateParseArray(date_obj);
+ }
+ len = this.dateparts.length;
+ for (pos = 0; pos < len; pos += 1) {
+ part = this.dateparts[pos];
+ if ("undefined" !== typeof state.tmp.date_object[(part + "_end")]) {
+ dp.push(part);
+ } else if (part === "month" && "undefined" !== typeof state.tmp.date_object.season_end) {
+ dp.push(part);
+ }
+ }
+ dpx = [];
+ parts = ["year", "month", "day"];
+ len = parts.length;
+ for (pos = 0; pos < len; pos += 1) {
+ if (dp.indexOf(parts[pos]) > -1) {
+ dpx.push(parts[pos]);
+ }
+ }
+ dp = dpx.slice();
+ if (state.tmp.area.slice(-5) !== "_sort" && ("" + Item.volume) === "" + state.tmp.date_object.year) {
+ for (key in state.tmp.date_object) {
+ if (state.tmp.date_object.hasOwnProperty(key)) {
+ if (key.slice(0, 4) === "year") {
+ delete state.tmp.date_object[key];
+ }
+ }
+ }
+ }
+ mypos = 2;
+ len = dp.length;
+ for (pos = 0; pos < len; pos += 1) {
+ part = dp[pos];
+ start = state.tmp.date_object[part];
+ end = state.tmp.date_object[(part + "_end")];
+ if (start !== end) {
+ mypos = pos;
+ break;
+ }
+ }
+ state.tmp.date_collapse_at = dp.slice(mypos);
+ } else {
+ state.tmp.date_object = false;
+ }
+ };
+ this.execs.push(func);
+ func = function (state, Item) {
+ state.output.startTag("date", this);
+ var tok = new CSL.Token("date-part", CSL.SINGLETON);
+ if (state.tmp.date_object.literal) {
+ state.parallel.AppendToVariable(state.tmp.date_object.literal);
+ state.output.append(state.tmp.date_object.literal, tok);
+ state.tmp.date_object = {};
+ }
+ tok.strings.suffix = " ";
+ };
+ this.execs.push(func);
+ }
+ if (state.build.sort_flag && (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON)) {
+ tok = new CSL.Token("key", CSL.SINGLETON);
+ tok.dateparts = state.build.date_parts.slice();
+ tok.variables = state.build.date_variables;
+ CSL.Node.key.build.call(tok, state, target);
+ state.build.sort_flag = false;
+ }
+ if (!state.build.sort_flag && (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON)) {
+ func = function (state, Item) {
+ state.output.endTag();
+ state.parallel.CloseVariable("date");
+ };
+ this.execs.push(func);
+ }
+ target.push(this);
+ if (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON) {
+ if (!state.build.sort_flag) {
+ CSL.Util.substituteEnd.call(this, state, target);
+ }
+ }
+ }
+};
+CSL.Node["date-part"] = {
+ build: function (state, target) {
+ var func, pos, len, decor, first_date, value, value_end, real, have_collapsed, invoked, precondition, known_year, bc, ad, bc_end, ad_end, ready, curr, dcurr, number, num, formatter, item;
+ if (!this.strings.form) {
+ this.strings.form = "long";
+ }
+ state.build.date_parts.push(this.strings.name);
+ func = function (state, Item) {
+ first_date = true;
+ value = "";
+ value_end = "";
+ state.tmp.donesies.push(this.strings.name);
+ if (state.tmp.date_object) {
+ value = state.tmp.date_object[this.strings.name];
+ value_end = state.tmp.date_object[(this.strings.name + "_end")];
+ }
+ if ("year" === this.strings.name && value === 0 && !state.tmp.suppress_decorations) {
+ value = false;
+ }
+ real = !state.tmp.suppress_decorations;
+ have_collapsed = state.tmp.have_collapsed;
+ invoked = state[state.tmp.area].opt.collapse === "year-suffix" || state[state.tmp.area].opt.collapse === "year-suffix-ranged";
+ precondition = state[state.tmp.area].opt["disambiguate-add-year-suffix"];
+ if (real && precondition && invoked) {
+ state.tmp.years_used.push(value);
+ known_year = state.tmp.last_years_used.length >= state.tmp.years_used.length;
+ if (known_year && have_collapsed) {
+ if (state.tmp.last_years_used[(state.tmp.years_used.length - 1)] === value) {
+ value = false;
+ }
+ }
+ }
+ if ("undefined" !== typeof value) {
+ bc = false;
+ ad = false;
+ bc_end = false;
+ ad_end = false;
+ if ("year" === this.strings.name) {
+ if (parseInt(value, 10) < 500 && parseInt(value, 10) > 0) {
+ ad = state.getTerm("ad");
+ }
+ if (parseInt(value, 10) < 0) {
+ bc = state.getTerm("bc");
+ value = (parseInt(value, 10) * -1);
+ }
+ if (value_end) {
+ if (parseInt(value_end, 10) < 500 && parseInt(value_end, 10) > 0) {
+ ad_end = state.getTerm("ad");
+ }
+ if (parseInt(value_end, 10) < 0) {
+ bc_end = state.getTerm("bc");
+ value_end = (parseInt(value_end, 10) * -1);
+ }
+ }
+ }
+ state.parallel.AppendToVariable(value);
+ if (this.strings.form) {
+ value = CSL.Util.Dates[this.strings.name][this.strings.form](state, value);
+ if (value_end) {
+ value_end = CSL.Util.Dates[this.strings.name][this.strings.form](state, value_end);
+ }
+ }
+ state.output.openLevel("empty");
+ if (state.tmp.date_collapse_at.length) {
+ ready = true;
+ len = state.tmp.date_collapse_at.length;
+ for (pos = 0; pos < len; pos += 1) {
+ item = state.tmp.date_collapse_at[pos];
+ if (state.tmp.donesies.indexOf(item) === -1) {
+ ready = false;
+ break;
+ }
+ }
+ if (ready) {
+ if ("" + value_end !== "0") {
+ if (state.dateput.queue.length === 0) {
+ first_date = true;
+ }
+ state.dateput.append(value_end, this);
+ if (first_date) {
+ state.dateput.current.value()[0].strings.prefix = "";
+ }
+ }
+ state.output.append(value, this);
+ curr = state.output.current.value();
+ curr.blobs[(curr.blobs.length - 1)].strings.suffix = "";
+ state.output.append(this.strings["range-delimiter"], "empty");
+ dcurr = state.dateput.current.value();
+ curr.blobs = curr.blobs.concat(dcurr);
+ state.dateput.string(state, state.dateput.queue);
+ state.tmp.date_collapse_at = [];
+ } else {
+ state.output.append(value, this);
+ if (state.tmp.date_collapse_at.indexOf(this.strings.name) > -1) {
+ if ("" + value_end !== "0") {
+ if (state.dateput.queue.length === 0) {
+ first_date = true;
+ }
+ state.dateput.openLevel("empty");
+ state.dateput.append(value_end, this);
+ if (first_date) {
+ state.dateput.current.value().blobs[0].strings.prefix = "";
+ }
+ if (bc) {
+ state.dateput.append(bc);
+ }
+ if (ad) {
+ state.dateput.append(ad);
+ }
+ state.dateput.closeLevel();
+ }
+ }
+ }
+ } else {
+ state.output.append(value, this);
+ }
+ if (bc) {
+ state.output.append(bc);
+ }
+ if (ad) {
+ state.output.append(ad);
+ }
+ state.output.closeLevel();
+ } else if ("month" === this.strings.name) {
+ if (state.tmp.date_object.season) {
+ value = "" + state.tmp.date_object.season;
+ if (value && value.match(/^[1-4]$/)) {
+ state.tmp.term_sibling.replace([false, false, true]);
+ state.output.append(state.getTerm(("season-0" + value)), this);
+ } else if (value) {
+ state.output.append(value, this);
+ }
+ }
+ }
+ state.tmp.value = [];
+ if (!state.opt.has_year_suffix && "year" === this.strings.name) {
+ if (state.registry.registry[Item.id] && state.registry.registry[Item.id].disambig[2] && !state.tmp.has_done_year_suffix) {
+ state.tmp.has_done_year_suffix = true;
+ num = parseInt(state.registry.registry[Item.id].disambig[2], 10);
+ number = new CSL.NumericBlob(num, this);
+ formatter = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);
+ number.setFormatter(formatter);
+ state.output.append(number, "literal");
+ }
+ }
+ };
+ this.execs.push(func);
+ if ("undefined" === typeof this.strings["range-delimiter"]) {
+ this.strings["range-delimiter"] = "-";
+ }
+ target.push(this);
+ }
+};
+CSL.Node["else-if"] = {
+ build: function (state, target) {
+ var func, tryposition;
+ if (this.tokentype === CSL.START) {
+ if ("number" === typeof this.strings.position) {
+ tryposition = this.strings.position;
+ func = function (state, Item, item) {
+ if (item && "undefined" === typeof item.position) {
+ item.position = 0;
+ }
+ if (item && typeof item.position === "number") {
+ if (item.position === 0 && tryposition === 0) {
+ return true;
+ } else if (tryposition > 0 && item.position >= tryposition) {
+ return true;
+ }
+ } else if (tryposition === 0) {
+ return true;
+ }
+ return false;
+ };
+ this.tests.push(func);
+ }
+ if (this.strings["near-note-distance-check"]) {
+ func = function (state, Item, item) {
+ if (item && item["near-note"]) {
+ return true;
+ }
+ return false;
+ };
+ this.tests.push(func);
+ }
+ if (! this.evaluator) {
+ this.evaluator = state.fun.match.any;
+ }
+ }
+ if (this.tokentype === CSL.END) {
+ func = function (state, Item) {
+ var next = this[state.tmp.jump.value()];
+ return next;
+ };
+ this.execs.push(func);
+ }
+ target.push(this);
+ },
+ configure: function (state, pos) {
+ if (this.tokentype === CSL.START) {
+ this.fail = state.configure.fail.slice(-1)[0];
+ this.succeed = this.next;
+ state.configure.fail[(state.configure.fail.length - 1)] = pos;
+ } else {
+ this.succeed = state.configure.succeed.slice(-1)[0];
+ this.fail = this.next;
+ }
+ }
+};
+CSL.Node["else"] = {
+ build: function (state, target) {
+ target.push(this);
+ },
+ configure: function (state, pos) {
+ if (this.tokentype === CSL.START) {
+ state.configure.fail[(state.configure.fail.length - 1)] = pos;
+ }
+ }
+};
+CSL.Node["et-al"] = {
+ build: function (state, target) {
+ var func;
+ if (state.build.area === "citation") {
+ func = function (state, Item) {
+ state.output.addToken("et-al-pers", false, this);
+ state.output.addToken("et-al-org", false, this);
+ };
+ this.execs.push(func);
+ } else if (state.build.area === "bibliography") {
+ func = function (state, Item) {
+ state.output.addToken("et-al-pers", false, this);
+ state.output.addToken("et-al-org", false, this);
+ };
+ this.execs.push(func);
+ }
+ target.push(this);
+ }
+};
+CSL.Node.group = {
+ build: function (state, target, quashquash) {
+ var func, execs;
+ if (this.tokentype === CSL.START) {
+ CSL.Util.substituteStart.call(this, state, target);
+ if (state.build.substitute_level.value()) {
+ state.build.substitute_level.replace((state.build.substitute_level.value() + 1));
+ }
+ if (!quashquash || true) {
+ func = function (state, Item) {
+ state.tmp.term_sibling.push([false, false, false], CSL.LITERAL);
+ };
+ this.execs.push(func);
+ }
+ func = function (state, Item) {
+ state.output.startTag("group", this);
+ };
+ execs = [];
+ execs.push(func);
+ this.execs = execs.concat(this.execs);
+ } else {
+ if (!quashquash || true) {
+ func = function (state, Item) {
+ var flag = state.tmp.term_sibling.value();
+ state.output.endTag();
+ if (!flag[2] && (flag[1] || (!flag[1] && !flag[0]))) {
+ if (state.output.current.value().blobs) {
+ state.output.current.value().blobs.pop();
+ }
+ }
+ state.tmp.term_sibling.pop();
+ if ((flag[2] || (!flag[1] && flag[0])) && state.tmp.term_sibling.mystack.length > 1) {
+ state.tmp.term_sibling.replace([false, false, true]);
+ }
+ };
+ this.execs.push(func);
+ }
+ }
+ target.push(this);
+ if (this.tokentype === CSL.END) {
+ if (state.build.substitute_level.value()) {
+ state.build.substitute_level.replace((state.build.substitute_level.value() - 1));
+ }
+ CSL.Util.substituteEnd.call(this, state, target);
+ }
+ }
+};
+CSL.Node["if"] = {
+ build: function (state, target) {
+ var tryposition, func;
+ if (this.tokentype === CSL.START) {
+ if ("number" === typeof this.strings.position) {
+ tryposition = this.strings.position;
+ func = function (state, Item, item) {
+ if (item && "undefined" === typeof item.position) {
+ item.position = 0;
+ }
+ if (item && typeof item.position === "number") {
+ if (item.position === 0 && tryposition === 0) {
+ return true;
+ } else if (tryposition > 0 && item.position >= tryposition) {
+ return true;
+ }
+ } else if (tryposition === 0) {
+ return true;
+ }
+ return false;
+ };
+ this.tests.push(func);
+ }
+ if (this.strings["near-note-distance-check"]) {
+ func = function (state, Item, item) {
+ if (item && item["near-note"]) {
+ return true;
+ }
+ return false;
+ };
+ this.tests.push(func);
+ }
+ if (!this.evaluator) {
+ this.evaluator = state.fun.match.any;
+ }
+ }
+ if (this.tokentype === CSL.END) {
+ func = function (state, Item) {
+ var next = this[state.tmp.jump.value()];
+ return next;
+ };
+ this.execs.push(func);
+ }
+ target.push(this);
+ },
+ configure: function (state, pos) {
+ if (this.tokentype === CSL.START) {
+ this.fail = state.configure.fail.slice(-1)[0];
+ this.succeed = this.next;
+ } else {
+ this.succeed = state.configure.succeed.slice(-1)[0];
+ this.fail = this.next;
+ }
+ }
+};
+CSL.Node.info = {
+ build: function (state, target) {
+ if (this.tokentype === CSL.START) {
+ state.build.skip = "info";
+ } else {
+ state.build.skip = false;
+ }
+ }
+};
+CSL.Node.institution = {
+ build: function (state, target) {
+ if ([CSL.SINGLETON, CSL.START].indexOf(this.tokentype) > -1) {
+ var func = function (state, Item) {
+ state.output.addToken("institution", false, this);
+ };
+ this.execs.push(func);
+ }
+ target.push(this);
+ },
+ configure: function (state, pos) {
+ if ([CSL.SINGLETON, CSL.START].indexOf(this.tokentype) > -1) {
+ state.build.has_institution = true;
+ }
+ }
+};
+CSL.Node["institution-part"] = {
+ build: function (state, target) {
+ var func;
+ if ("long" === this.strings.name) {
+ if (this.strings["if-short"]) {
+ func = function (state, Item) {
+ state.output.addToken("institution-if-short", false, this);
+ };
+ } else {
+ func = function (state, Item) {
+ state.output.addToken("institution-long", false, this);
+ };
+ }
+ } else if ("short" === this.strings.name) {
+ func = function (state, Item) {
+ state.output.addToken("institution-short", false, this);
+ };
+ }
+ this.execs.push(func);
+ target.push(this);
+ }
+};
+CSL.Node.key = {
+ build: function (state, target) {
+ var start_key, func, sort_direction, variable, names_start_token, name_token, names_end_token, single_text, token, pos, keypos, ppos, len, llen, tok, gtok, saveme, end_key, tlen, tlst, debug;
+ debug = false;
+ start_key = new CSL.Token("key", CSL.START);
+ start_key.strings["et-al-min"] = this.strings["et-al-min"];
+ start_key.strings["et-al-use-first"] = this.strings["et-al-use-first"];
+ func = function (state, Item) {
+ state.tmp.done_vars = [];
+ };
+ start_key.execs.push(func);
+ sort_direction = [];
+ if (this.strings.sort_direction === CSL.DESCENDING) {
+ sort_direction.push(1);
+ sort_direction.push(-1);
+ } else {
+ sort_direction.push(-1);
+ sort_direction.push(1);
+ }
+ state[state.build.area].opt.sort_directions.push(sort_direction);
+ func = function (state, Item) {
+ state.tmp.sort_key_flag = true;
+ if (this.strings["et-al-min"]) {
+ state.tmp["et-al-min"] = this.strings["et-al-min"];
+ }
+ if (this.strings["et-al-use-first"]) {
+ state.tmp["et-al-use-first"] = this.strings["et-al-use-first"];
+ }
+ };
+ start_key.execs.push(func);
+ target.push(start_key);
+ if (this.variables.length) {
+ variable = this.variables[0];
+ if (CSL.CREATORS.indexOf(variable) > -1) {
+ names_start_token = new CSL.Token("names", CSL.START);
+ names_start_token.tokentype = CSL.START;
+ names_start_token.variables = this.variables;
+ CSL.Node.names.build.call(names_start_token, state, target);
+ name_token = new CSL.Token("name", CSL.SINGLETON);
+ name_token.tokentype = CSL.SINGLETON;
+ name_token.strings["name-as-sort-order"] = "all";
+ CSL.Node.name.build.call(name_token, state, target);
+ names_end_token = new CSL.Token("names", CSL.END);
+ names_end_token.tokentype = CSL.END;
+ CSL.Node.names.build.call(names_end_token, state, target);
+ } else {
+ single_text = new CSL.Token("text", CSL.SINGLETON);
+ single_text.dateparts = this.dateparts;
+ if (CSL.NUMERIC_VARIABLES.indexOf(variable) > -1) {
+ func = function (state, Item) {
+ var num, m;
+ num = false;
+ if ("citation-number" === variable) {
+ num = state.registry.registry[Item.id].seq.toString();
+ } else {
+ num = Item[variable];
+ }
+ if (num) {
+ m = num.match(/\s*(-{0,1}[0-9]+)/);
+ if (m) {
+ num = parseInt(m[1], 10);
+ if (num < 0) {
+ num = 99999999999999999999 + num;
+ }
+ num = "" + num;
+ while (num.length < 20) {
+ num = "0" + num;
+ }
+ }
+ }
+ state.output.append(num, this);
+ };
+ } else if (CSL.DATE_VARIABLES.indexOf(variable) > -1) {
+ func = function (state, Item) {
+ var dp, elem, value, e, yr, prefix;
+ dp = Item[variable];
+ if ("undefined" === typeof dp) {
+ dp = {"date-parts": [[0]] };
+ if (!dp.year) {
+ state.tmp.empty_date = true;
+ }
+ }
+ if ("undefined" === typeof this.dateparts) {
+ this.dateparts = ["year", "month", "day"];
+ }
+ if (dp.raw) {
+ dp = state.fun.dateparser.parse(dp.raw);
+ } else if (dp["date-parts"]) {
+ dp = state.dateParseArray(dp);
+ }
+ if ("undefined" === typeof dp) {
+ dp = {};
+ }
+ len = CSL.DATE_PARTS_INTERNAL.length;
+ for (pos = 0; pos < len; pos += 1) {
+ elem = CSL.DATE_PARTS_INTERNAL[pos];
+ value = 0;
+ e = elem;
+ if (e.slice(-4) === "_end") {
+ e = e.slice(0, -4);
+ }
+ if (dp[elem] && this.dateparts.indexOf(e) > -1) {
+ value = dp[elem];
+ }
+ if (elem.slice(0, 4) === "year") {
+ yr = CSL.Util.Dates[e].numeric(state, value);
+ prefix = "Y";
+ if (yr[0] === "-") {
+ prefix = "X";
+ yr = yr.slice(1);
+ yr = 9999 - parseInt(yr, 10);
+ }
+ state.output.append(CSL.Util.Dates[elem.slice(0, 4)].numeric(state, (prefix + yr)));
+ } else {
+ state.output.append(CSL.Util.Dates[e]["numeric-leading-zeros"](state, value));
+ }
+ }
+ };
+ } else if ("title" === variable) {
+ state.transform.init("empty", "title");
+ state.transform.setTransformLocale("locale-sort");
+ state.transform.setTransformFallback(true);
+ func = state.transform.getOutputFunction();
+ } else {
+ func = function (state, Item) {
+ var varval = Item[variable];
+ state.output.append(varval, "empty");
+ };
+ }
+ single_text.execs.push(func);
+ target.push(single_text);
+ }
+ } else { // macro
+ token = new CSL.Token("text", CSL.SINGLETON);
+ token.postponed_macro = this.postponed_macro;
+ tlen = target.length;
+ keypos = false;
+ CSL.expandMacro.call(state, token);
+ len = target.slice(tlen).length;
+ for (pos = 0; pos < len; pos += 1) {
+ tok = target.slice(tlen)[pos];
+ if (tok && tok.name === "text" && tok.dateparts) {
+ keypos = pos;
+ break;
+ }
+ }
+ if (keypos) {
+ saveme = target[(parseInt(keypos, 10) + parseInt(tlen, 10))];
+ len = target.length - 1;
+ for (pos = len; pos > tlen; pos += -1) {
+ target.pop();
+ }
+ target.push(saveme);
+ gtok = new CSL.Token("group", CSL.END);
+ target.push(gtok);
+ }
+ }
+ end_key = new CSL.Token("key", CSL.END);
+ func = function (state, Item) {
+ var keystring = state.output.string(state, state.output.queue);
+ if ("string" !== typeof keystring || state.tmp.empty_date) {
+ keystring = undefined;
+ state.tmp.empty_date = false;
+ }
+ state[state.tmp.area].keys.push(keystring);
+ state.tmp.value = [];
+ };
+ end_key.execs.push(func);
+ func = function (state, Item) {
+ state.tmp["et-al-min"] = false;
+ state.tmp["et-al-use-first"] = false;
+ state.tmp.sort_key_flag = false;
+ };
+ end_key.execs.push(func);
+ target.push(end_key);
+ }
+};
+CSL.Node.label = {
+ build: function (state, target) {
+ var func, term, plural, form, debug;
+ debug = false;
+ if (state.build.name_flag) {
+ this.strings.label_position = CSL.AFTER;
+ } else {
+ this.strings.label_position = CSL.BEFORE;
+ }
+ func = function (state, Item) {
+ state.output.addToken("label", false, this);
+ };
+ this.execs.push(func);
+ if (state.build.term) {
+ term = state.build.term;
+ plural = 0;
+ if (!this.strings.form) {
+ this.strings.form = "long";
+ }
+ form = this.strings.form;
+ if ("number" === typeof this.strings.plural) {
+ plural = this.strings.plural;
+ }
+ func = function (state, Item, item) {
+ var myterm;
+ if ("locator" === term) {
+ if (item && item.label) {
+ myterm = item.label;
+ }
+ }
+ if (!myterm) {
+ myterm = "page";
+ }
+ myterm = state.getTerm(myterm, form, plural);
+ if (this.strings["include-period"]) {
+ myterm += ".";
+ }
+ state.output.append(myterm, this);
+ };
+ this.execs.push(func);
+ state.build.plural = false;
+ state.build.term = false;
+ state.build.form = false;
+ }
+ target.push(this);
+ }
+};
+CSL.Node.layout = {
+ build: function (state, target) {
+ var func, prefix_token, suffix_token;
+ if (this.tokentype === CSL.START) {
+ state.build.layout_flag = true;
+ state[state.tmp.area].opt.topdecor = [this.decorations];
+ state[(state.tmp.area + "_sort")].opt.topdecor = [this.decorations];
+ func = function (state, Item) {
+ state.tmp.done_vars = [];
+ state.tmp.rendered_name = false;
+ };
+ this.execs.push(func);
+ func = function (state, Item) {
+ state.tmp.sort_key_flag = false;
+ state[state.tmp.area].opt.delimiter = "";
+ if (this.strings.delimiter) {
+ state[state.tmp.area].opt.delimiter = this.strings.delimiter;
+ }
+ };
+ this.execs.push(func);
+ func = function (state, Item) {
+ state.tmp.nameset_counter = 0;
+ };
+ this.execs.push(func);
+ state[state.build.area].opt.layout_prefix = this.strings.prefix;
+ state[state.build.area].opt.layout_suffix = this.strings.suffix;
+ state[state.build.area].opt.layout_delimiter = this.strings.delimiter;
+ state[state.build.area].opt.layout_decorations = this.decorations;
+ func = function (state, Item) {
+ state.output.openLevel("empty");
+ };
+ this.execs.push(func);
+ target.push(this);
+ if (state.build.area === "citation") {
+ prefix_token = new CSL.Token("text", CSL.SINGLETON);
+ func = function (state, Item, item) {
+ var sp;
+ if (item && item.prefix) {
+ sp = "";
+ if (item.prefix.match(CSL.ROMANESQUE_REGEXP)) {
+ sp = " ";
+ }
+ state.output.append((item.prefix + sp), this);
+ }
+ };
+ prefix_token.execs.push(func);
+ target.push(prefix_token);
+ }
+ }
+ if (this.tokentype === CSL.END) {
+ state.build.layout_flag = false;
+ if (state.build.area === "citation") {
+ suffix_token = new CSL.Token("text", CSL.SINGLETON);
+ func = function (state, Item, item) {
+ var sp;
+ if (item && item.suffix) {
+ sp = "";
+ if (item.suffix.match(CSL.ROMANESQUE_REGEXP)) {
+ sp = " ";
+ }
+ state.output.append((sp + item.suffix), this);
+ }
+ };
+ suffix_token.execs.push(func);
+ target.push(suffix_token);
+ }
+ func = function (state, Item) {
+ if (state.tmp.area === "bibliography") {
+ if (state.bibliography.opt["second-field-align"]) {
+ state.output.endTag();
+ }
+ }
+ state.output.closeLevel();
+ };
+ this.execs.push(func);
+ target.push(this);
+ }
+ }
+};
+CSL.Node.macro = {
+ build: function (state, target) {}
+};
+CSL.Node.name = {
+ build: function (state, target) {
+ var func, pos, len, attrname;
+ if ([CSL.SINGLETON, CSL.START].indexOf(this.tokentype) > -1) {
+ state.fixOpt(this, "name-delimiter", "delimiter");
+ state.fixOpt(this, "name-form", "form");
+ state.fixOpt(this, "and", "and");
+ state.fixOpt(this, "delimiter-precedes-last", "delimiter-precedes-last");
+ state.fixOpt(this, "initialize-with", "initialize-with");
+ state.fixOpt(this, "name-as-sort-order", "name-as-sort-order");
+ state.fixOpt(this, "sort-separator", "sort-separator");
+ state.fixOpt(this, "et-al-min", "et-al-min");
+ state.fixOpt(this, "et-al-use-first", "et-al-use-first");
+ state.fixOpt(this, "et-al-subsequent-min", "et-al-subsequent-min");
+ state.fixOpt(this, "et-al-subsequent-use-first", "et-al-subsequent-use-first");
+ state.build.nameattrs = {};
+ len = CSL.NAME_ATTRIBUTES.length;
+ for (pos = 0; pos < len; pos += 1) {
+ attrname = CSL.NAME_ATTRIBUTES[pos];
+ state.build.nameattrs[attrname] = this.strings[attrname];
+ }
+ state.build.form = this.strings.form;
+ state.build.name_flag = true;
+ func = function (state, Item, item) {
+ if ("undefined" === typeof item) {
+ item = {};
+ }
+ if (item.position) {
+ if (! state.tmp["et-al-min"]) {
+ if (this.strings["et-al-subsequent-min"]) {
+ state.tmp["et-al-min"] = this.strings["et-al-subsequent-min"];
+ } else {
+ state.tmp["et-al-min"] = this.strings["et-al-min"];
+ }
+ }
+ if (! state.tmp["et-al-use-first"]) {
+ if (this.strings["et-al-subsequent-use-first"]) {
+ state.tmp["et-al-use-first"] = this.strings["et-al-subsequent-use-first"];
+ } else {
+ state.tmp["et-al-use-first"] = this.strings["et-al-use-first"];
+ }
+ }
+ } else {
+ if (! state.tmp["et-al-min"]) {
+ state.tmp["et-al-min"] = this.strings["et-al-min"];
+ }
+ if (! state.tmp["et-al-use-first"]) {
+ state.tmp["et-al-use-first"] = this.strings["et-al-use-first"];
+ }
+ }
+ };
+ this.execs.push(func);
+ func = function (state, Item) {
+ state.output.addToken("name", false, this);
+ };
+ this.execs.push(func);
+ }
+ target.push(this);
+ }
+};
+CSL.Node["name-part"] = {
+ build: function (state, target) {
+ var func;
+ func = function (state, Item) {
+ state.output.addToken(this.strings.name, false, this);
+ };
+ this.execs.push(func);
+ target.push(this);
+ }
+};
+CSL.Node.names = {
+ build: function (state, target) {
+ var debug, func, len, pos, attrname;
+ debug = false;
+ if (this.tokentype === CSL.START || this.tokentype === CSL.SINGLETON) {
+ CSL.Util.substituteStart.call(this, state, target);
+ state.build.substitute_level.push(1);
+ state.fixOpt(this, "names-delimiter", "delimiter");
+ func = function (state, Item, item) {
+ var namesets, nameset, names, rawlist, after_people_set, pers_seen, in_orgs, last_type, name, len, pos, variable, rawvar, llen, ppos, lllen, pppos, lllst, end, mynameset, tnamesets, frontnames, pair, offset, swaplist;
+ state.parallel.StartVariable("names");
+ if (state.tmp.value.length === 0) {
+ namesets = [];
+ len = this.variables.length;
+ if (len && state.opt.xclass === "in-text") {
+ len = 1;
+ }
+ for (pos = 0; pos < len; pos += 1) {
+ variable = this.variables[pos];
+ if (Item[variable]) {
+ rawvar = Item[variable];
+ if ("string" === typeof Item[variable]) {
+ rawvar = [{literal: Item[variable]}];
+ }
+ rawlist = state.getNameSubFields(rawvar);
+ names = [];
+ tnamesets = [];
+ nameset = {names: []};
+ frontnames = [];
+ llen = rawlist.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ name = rawlist[ppos];
+ if (name.literal) {
+ nameset.variable = variable;
+ nameset.species = "org";
+ if (name.literal.slice(0, 1) === '"' && name.literal.slice(-1)) {
+ lllst = [name.literal.slice(1, -1)];
+ } else {
+ lllst = name.literal.split(/,\s+/);
+ }
+ lllen = lllst.length;
+ for (pppos = 0; pppos < lllen; pppos += 1) {
+ name = {literal: lllst[pppos]};
+ nameset.names.push(name);
+ }
+ tnamesets.push(nameset);
+ nameset = {names: []};
+ } else {
+ nameset.variable = variable;
+ nameset.species = "pers";
+ nameset.names.push(name);
+ if (rawlist.length === (ppos + 1) || rawlist[ppos + 1].literal) {
+ tnamesets.push(nameset);
+ nameset = {names: []};
+ }
+ }
+ }
+ if (tnamesets.length > 1 && tnamesets.slice(-1)[0].species === "pers") {
+ frontnames = tnamesets.slice(-1);
+ tnamesets = tnamesets.slice(0, tnamesets.length - 1);
+ if (tnamesets.length > 0) {
+ tnamesets[0].after_people = true;
+ }
+ } else {
+ frontnames = [];
+ }
+ if (tnamesets.length > 0 && tnamesets.slice(-1)[0].species === "org" && !(state.opt.xclass === "in-text" && state.tmp.area.slice(0, 8) === "citation")) {
+ tnamesets[0].organization_first = true;
+ tnamesets.slice(-1)[0].organization_last = true;
+ if (frontnames.length) {
+ frontnames[0].free_agent_start = true;
+ tnamesets.slice(-1)[0].free_agent_end = true;
+ }
+ }
+ if (frontnames.length === 0) {
+ if (tnamesets.length > 1) {
+ if (tnamesets[0].species === "pers") {
+ tnamesets[1].trailers1_start = true;
+ if (tnamesets.length === 2) {
+ tnamesets[1].trailers1a_end = true;
+ } else {
+ tnamesets[1].trailers1b_end = true;
+ }
+ if (tnamesets.length > 2) {
+ tnamesets[2].trailers2_start = true;
+ tnamesets.slice(-1)[0].trailers2_end = true;
+ }
+ } else {
+ tnamesets[1].trailers2_start = true;
+ tnamesets.slice(-1)[0].trailers2_end = true;
+ }
+ }
+ } else {
+ tnamesets[0].trailers3_start = true;
+ tnamesets.slice(-1)[0].trailers3_end = true;
+ }
+ tnamesets = frontnames.concat(tnamesets);
+ namesets = namesets.concat(tnamesets);
+ }
+ }
+ if ((state.opt.xclass === "in-text" && state.tmp.area.slice(0, 8) === "citation") || (state.opt.xclass === "note" && item && "number" === typeof item.position && item.position !== CSL.POSITION_FIRST)) {
+ namesets = namesets.slice(0, 1);
+ if (namesets.length) {
+ if (namesets[0].species === "pers") {
+ namesets[0].organization_first = false;
+ namesets[0].after_people = false;
+ namesets[0].free_agent_start = false;
+ namesets[0].free_agent_end = false;
+ } else {
+ namesets[0].organization_last = true;
+ }
+ }
+ }
+ len = namesets.length;
+ for (pos = 0; pos < len; pos += 1) {
+ state.tmp.names_max.push(namesets[pos].names.length);
+ state.tmp.names_used.push(namesets[pos]);
+ }
+ state.tmp.value = namesets.slice();
+ }
+ };
+ this.execs.push(func);
+ }
+ if (this.tokentype === CSL.START) {
+ state.build.names_flag = true;
+ func = function (state, Item) {
+ state.tmp.can_substitute.push(true);
+ };
+ this.execs.push(func);
+ func = function (state, Item) {
+ state.output.startTag("names", this);
+ state.tmp.name_node = state.output.current.value();
+ };
+ this.execs.push(func);
+ }
+ if (this.tokentype === CSL.END) {
+ len = CSL.NAME_ATTRIBUTES.length;
+ for (pos = 0; pos < len; pos += 1) {
+ attrname = CSL.NAME_ATTRIBUTES[pos];
+ if (attrname.slice(0, 5) === "et-al") {
+ continue;
+ }
+ if ("undefined" !== typeof state.build.nameattrs[attrname]) {
+ this.strings[attrname] = state.build.nameattrs[attrname];
+ delete state.build.nameattrs[attrname];
+ }
+ }
+ func = function (state, Item, item) {
+ var common_term, nameset, name, local_count, withtoken, namesetIndex, lastones, currentones, compset, display_names, suppress_min, suppress_condition, sane, discretionary_names_length, overlength, et_al, and_term, outer_and_term, use_first, append_last, delim, param, paramx, val, s, myform, myinitials, termname, form, namepart, namesets, llen, ppos, label, plural, last_variable, cutinfo, cut_var, obj, et_al_pers, et_al_org, and_pers, and_org, with_term, chk;
+ namesets = [];
+ common_term = CSL.Util.Names.getCommonTerm(state, state.tmp.value);
+ if (common_term) {
+ namesets = state.tmp.value.slice(0, 1);
+ } else {
+ namesets = state.tmp.value;
+ }
+ len = namesets.length;
+ if (namesets.length && (state.tmp.area === "bibliography" || (state.tmp.area && state.opt.xclass === "note"))) {
+ cut_var = namesets[0].variable;
+ cutinfo = state.tmp.names_cut;
+ if (namesets[0].species === "pers") {
+ namesets[0].names = namesets[0].names.slice(cutinfo.counts[cut_var]);
+ if (namesets[0].names.length === 0) {
+ if (namesets[0].free_agent_start) {
+ namesets[1].free_agent_start = true;
+ }
+ if (namesets[0].organization_first) {
+ namesets[1].organization_first = true;
+ }
+ namesets = namesets.slice(1);
+ }
+ } else {
+ namesets = namesets.slice(0, 1);
+ if (namesets[0].organization_first) {
+ namesets[0].organization_last = true;
+ }
+ }
+ if (cutinfo.used === cut_var) {
+ llen = cutinfo.variable[cut_var].length - 1;
+ for (ppos = llen; ppos > -1; ppos += -1) {
+ obj = cutinfo.variable[cut_var][ppos];
+ obj[0].blobs = obj[0].blobs.slice(0, obj[1]).concat(obj[0].blobs.slice(obj[1] + 1));
+ }
+ }
+ }
+ len = namesets.length;
+ for (pos = 0; pos < len; pos += 1) {
+ nameset = namesets[pos];
+ if ("org" === nameset.species) {
+ if (state.output.getToken("institution").strings["reverse-order"]) {
+ nameset.names.reverse();
+ }
+ }
+ llen = nameset.names.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ name = nameset.names[ppos];
+ if (name["parse-names"]) {
+ state.parseName(name);
+ }
+ if (name.family && name.family.length && name.family.slice(0, 1) === '"' && name.family.slice(-1)) {
+ name.family = name.family.slice(1, -1);
+ }
+ }
+ }
+ local_count = 0;
+ nameset = {};
+ state.output.addToken("term-join");
+ state.output.addToken("etal-join");
+ state.output.addToken("space", " ");
+ state.output.addToken("sortsep", state.output.getToken("name").strings["sort-separator"]);
+ state.output.addToken("suffixsep", " ");
+ if (!state.output.getToken("et-al-pers")) {
+ state.output.addToken("et-al-pers");
+ }
+ state.output.getToken("et-al-pers").strings["prefix-single"] = " ";
+ state.output.getToken("et-al-pers").strings["prefix-multiple"] = ", ";
+ et_al_pers = state.getTerm("et-al", "long", 0);
+ if ("undefined" !== typeof state.output.getToken("et-al-pers").strings.term) {
+ et_al_pers = state.output.getToken("et-al-pers").strings.term;
+ }
+ if (!state.output.getToken("et-al-org")) {
+ state.output.addToken("et-al-org");
+ }
+ state.output.getToken("et-al-org").strings["prefix-single"] = " ";
+ state.output.getToken("et-al-org").strings["prefix-multiple"] = ", ";
+ et_al_org = state.getTerm("et-al", "long", 0);
+ if (!state.output.getToken("and-pers")) {
+ state.output.addToken("and-pers");
+ }
+ state.output.getToken("and-pers").strings["prefix-single"] = " ";
+ state.output.getToken("and-pers").strings["prefix-multiple"] = ", ";
+ and_pers = state.getTerm("and", "long", 0);
+ if (!state.output.getToken("and-org")) {
+ state.output.addToken("and-org");
+ }
+ state.output.getToken("and-org").strings["prefix-single"] = " ";
+ state.output.getToken("and-org").strings["prefix-multiple"] = ", ";
+ and_org = state.getTerm("and", "long", 0);
+ state.output.addToken("with");
+ state.output.getToken("with").strings.prefix = ", ";
+ state.output.getToken("with").strings.suffix = " ";
+ with_term = "with";
+ state.output.addToken("trailing-names");
+ outer_and_term = " " + state.output.getToken("name").strings.and + " ";
+ state.output.addToken("institution-outer", outer_and_term);
+ if (!state.output.getToken("label")) {
+ state.output.addToken("label");
+ }
+ delim = state.output.getToken("name").strings.delimiter;
+ state.output.addToken("inner", delim);
+ state.output.addToken("commasep", ", ");
+ len = CSL.DECORABLE_NAME_PARTS.length;
+ for (pos = 0; pos < len; pos += 1) {
+ namepart = CSL.DECORABLE_NAME_PARTS[pos];
+ if (!state.output.getToken(namepart)) {
+ state.output.addToken(namepart);
+ }
+ }
+ state.output.addToken("dropping-particle", false, state.output.getToken("family"));
+ state.output.addToken("non-dropping-particle", false, state.output.getToken("family"));
+ state.output.addToken("suffix", false, state.output.getToken("family"));
+ state.output.openLevel("term-join");
+ if (label && state.output.getToken("label").strings.label_position === CSL.BEFORE) {
+ state.output.append(label, "label");
+ }
+ len = namesets.length;
+ for (namesetIndex = 0; namesetIndex < len; namesetIndex += 1) {
+ nameset = namesets[namesetIndex];
+ if (!state.tmp.suppress_decorations && (state[state.tmp.area].opt.collapse === "year" || state[state.tmp.area].opt.collapse === "year-suffix" || state[state.tmp.area].opt.collapse === "year-suffix-ranged")) {
+ if (state.tmp.last_names_used.length === state.tmp.names_used.length) {
+ lastones = state.tmp.last_names_used[state.tmp.nameset_counter];
+ currentones = state.tmp.names_used[state.tmp.nameset_counter];
+ compset = [currentones, lastones];
+ if (CSL.Util.Names.getCommonTerm(state, compset)) {
+ continue;
+ } else {
+ state.tmp.have_collapsed = false;
+ }
+ }
+ }
+ if (!state.tmp.disambig_request) {
+ state.tmp.disambig_settings.givens[state.tmp.nameset_counter] = [];
+ }
+ display_names = nameset.names.slice();
+ if ("pers" === nameset.species) {
+ suppress_min = state.output.getToken("name").strings["suppress-min"];
+ if (namesetIndex === 0 && !suppress_min && (state.tmp.area === "bibliography" || (state.tmp.area === "citation" && state.opt.xclass === "note"))) {
+ state.tmp.names_cut.counts[nameset.variable] = state.tmp["et-al-use-first"];
+ }
+ sane = state.tmp["et-al-min"] >= state.tmp["et-al-use-first"];
+ discretionary_names_length = state.tmp["et-al-min"];
+ suppress_condition = suppress_min && display_names.length >= suppress_min;
+ if (suppress_condition) {
+ continue;
+ }
+ if (state.tmp.suppress_decorations) {
+ if (state.tmp.disambig_request) {
+ discretionary_names_length = state.tmp.disambig_request.names[state.tmp.nameset_counter];
+ } else if (display_names.length >= state.tmp["et-al-min"]) {
+ discretionary_names_length = state.tmp["et-al-use-first"];
+ }
+ } else {
+ if (state.tmp.disambig_request && state.tmp["et-al-use-first"] < state.tmp.disambig_request.names[state.tmp.nameset_counter]) {
+ discretionary_names_length = state.tmp.disambig_request.names[state.tmp.nameset_counter];
+ } else if (display_names.length >= state.tmp["et-al-min"]) {
+ discretionary_names_length = state.tmp["et-al-use-first"];
+ }
+ }
+ overlength = display_names.length > discretionary_names_length;
+ et_al = false;
+ and_term = "";
+ if (sane && overlength) {
+ if (! state.tmp.sort_key_flag) {
+ et_al = et_al_pers;
+ if (discretionary_names_length > 1) {
+ state.output.getToken("et-al-pers").strings.prefix = state.output.getToken("et-al-pers").strings["prefix-multiple"];
+ } else {
+ state.output.getToken("et-al-pers").strings.prefix = state.output.getToken("et-al-pers").strings["prefix-single"];
+ }
+ }
+ display_names = display_names.slice(0, discretionary_names_length);
+ } else {
+ if (state.output.getToken("name").strings.and && ! state.tmp.sort_key_flag && display_names.length > 1) {
+ and_term = state.output.getToken("name").strings.and;
+ }
+ }
+ state.output.formats.value().name.strings.delimiter = and_term;
+ } else {
+ if (namesetIndex === 0 && (state.tmp.area === "bibliography" || (state.tmp.area === "citation" && state.opt.xclass === "note"))) {
+ state.tmp.names_cut.counts[nameset.variable] = 1;
+ }
+ use_first = state.output.getToken("institution").strings["use-first"];
+ if (!use_first && namesetIndex === 0) {
+ use_first = state.output.getToken("institution").strings["substitute-use-first"];
+ }
+ if (!use_first) {
+ use_first = 0;
+ }
+ append_last = state.output.getToken("institution").strings["use-last"];
+ if (use_first || append_last) {
+ s = display_names.slice();
+ display_names = [];
+ display_names = s.slice(0, use_first);
+ s = s.slice(use_first);
+ if (append_last) {
+ if (append_last > s.length) {
+ append_last = s.length;
+ }
+ if (append_last) {
+ display_names = display_names.concat(s.slice((s.length - append_last)));
+ }
+ }
+ }
+ }
+ state.tmp.disambig_settings.names[state.tmp.nameset_counter] = display_names.length;
+ local_count += display_names.length;
+ llen = nameset.names.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ state.registry.namereg.addname(Item.id, nameset.names[ppos], ppos);
+ chk = state.tmp.disambig_settings.givens[state.tmp.nameset_counter];
+ if ("undefined" === typeof chk) {
+ state.tmp.disambig_settings.givens.push([]);
+ }
+ chk = state.tmp.disambig_settings.givens[state.tmp.nameset_counter][ppos];
+ if ("undefined" === typeof chk) {
+ myform = state.output.getToken("name").strings.form;
+ myinitials = this.strings["initialize-with"];
+ param = state.registry.namereg.evalname(Item.id, nameset.names[ppos], ppos, 0, myform, myinitials);
+ state.tmp.disambig_settings.givens[state.tmp.nameset_counter].push(param);
+ }
+ myform = state.output.getToken("name").strings.form;
+ myinitials = this.strings["initialize-with"];
+ paramx = state.registry.namereg.evalname(Item.id, nameset.names[ppos], ppos, 0, myform, myinitials);
+ if (state.tmp.sort_key_flag) {
+ state.tmp.disambig_settings.givens[state.tmp.nameset_counter][ppos] = 2;
+ param = 2;
+ } else if (state.tmp.disambig_request) {
+ val = state.tmp.disambig_settings.givens[state.tmp.nameset_counter][ppos];
+ if (val === 1 && "undefined" === typeof this.strings["initialize-with"]) {
+ val = 2;
+ }
+ param = val;
+ if (state[state.tmp.area].opt["disambiguate-add-givenname"]) {
+ param = state.registry.namereg.evalname(Item.id, nameset.names[ppos], ppos, param, state.output.getToken("name").strings.form, this.strings["initialize-with"]);
+ }
+ } else {
+ param = paramx;
+ }
+ if (!state.tmp.just_looking && item && item.position === CSL.POSITION_FIRST) {
+ state.tmp.disambig_restore = CSL.cloneAmbigConfig(state.tmp.disambig_settings);
+ param = paramx;
+ }
+ state.tmp.disambig_settings.givens[state.tmp.nameset_counter][ppos] = param;
+ }
+ label = false;
+ if (state.output.getToken("label").strings.label_position) {
+ if (common_term) {
+ termname = common_term;
+ } else {
+ termname = nameset.variable;
+ }
+ if (!state.output.getToken("label").strings.form) {
+ form = "long";
+ } else {
+ form = state.output.getToken("label").strings.form;
+ }
+ if ("number" === typeof state.output.getToken("label").strings.plural) {
+ plural = state.output.getToken("label").strings.plural;
+ } else if (nameset.names.length > 1) {
+ plural = 1;
+ } else {
+ plural = 0;
+ }
+ label = state.getTerm(termname, form, plural);
+ }
+ if (namesetIndex > 0 && nameset.variable !== last_variable) {
+ state.output.closeLevel("term-join");
+ }
+ if (namesetIndex > 0 && nameset.variable !== last_variable) {
+ state.output.openLevel("term-join");
+ }
+ if (nameset.trailers3_start) {
+ state.output.openLevel("trailing-names", cut_var);
+ }
+ if (nameset.after_people) {
+ state.output.append("with", "with");
+ }
+ if (nameset.organization_first) {
+ state.output.openLevel("institution-outer");
+ }
+ if (nameset.trailers2_start) {
+ state.output.openLevel("trailing-names", cut_var);
+ }
+ if (nameset.organization_first) {
+ state.output.openLevel("inner");
+ }
+ if (nameset.trailers1_start) {
+ state.output.openLevel("trailing-names", cut_var);
+ }
+ if (nameset.species === "pers") {
+ state.output.openLevel("etal-join"); // join for etal
+ CSL.Util.Names.outputNames(state, display_names);
+ if (et_al) {
+ state.output.append(et_al, "et-al-pers");
+ }
+ state.output.closeLevel("etal-join"); // etal
+ } else {
+ CSL.Util.Institutions.outputInstitutions(state, display_names);
+ if (nameset.organization_last) {
+ if (nameset.trailers1a_end) {
+ state.output.closeLevel("trailing-names");
+ }
+ state.output.closeLevel("inner");
+ if (nameset.trailers2_end) {
+ state.output.closeLevel("trailing-names");
+ }
+ state.output.closeLevel("institution-outer");
+ } else {
+ if (nameset.trailers1b_end) {
+ state.output.closeLevel("trailing-names");
+ }
+ state.output.closeLevel("inner");
+ state.output.openLevel("inner");
+ }
+ }
+ if (nameset.trailers3_end) {
+ state.output.closeLevel("trailing-names");
+ }
+ if (namesets.length === namesetIndex + 1 || namesets[namesetIndex + 1].variable !== namesets[namesetIndex].variable) {
+ if (label && state.tmp.name_label_position !== CSL.BEFORE) {
+ state.output.append(label, "label");
+ }
+ }
+ state.tmp.nameset_counter += 1;
+ last_variable = nameset.variable;
+ }
+ state.output.closeLevel("term-join");
+ if (state.output.getToken("name").strings.form === "count") {
+ state.output.clearlevel();
+ state.output.append(local_count.toString());
+ state.tmp["et-al-min"] = false;
+ state.tmp["et-al-use-first"] = false;
+ }
+ };
+ this.execs.push(func);
+ }
+ if (this.tokentype === CSL.END) {
+ func = function (state, Item) {
+ if (!state.tmp.can_substitute.pop()) {
+ state.tmp.can_substitute.replace(false, CSL.LITERAL);
+ }
+ CSL.Util.Names.reinit(state, Item);
+ state.output.endTag();
+ state.parallel.CloseVariable("names");
+ state.tmp["has-institution"] = false;
+ state.tmp["has-first-person"] = false;
+ state.tmp["et-al-min"] = false;
+ state.tmp["et-al-use-first"] = false;
+ state.tmp.can_block_substitute = false;
+ };
+ this.execs.push(func);
+ state.build.names_flag = false;
+ state.build.name_flag = false;
+ }
+ target.push(this);
+ if (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON) {
+ state.build.substitute_level.pop();
+ CSL.Util.substituteEnd.call(this, state, target);
+ }
+ },
+ configure: function (state, pos) {
+ if ([CSL.SINGLETON, CSL.START].indexOf(this.tokentype) > -1) {
+ if (state.build.has_institution) {
+ this.strings["has-institution"] = true;
+ state.build.has_institution = false;
+ }
+ }
+ }
+};
+CSL.Node.number = {
+ build: function (state, target) {
+ var func;
+ CSL.Util.substituteStart.call(this, state, target);
+ if (this.strings.form === "roman") {
+ this.formatter = state.fun.romanizer;
+ } else if (this.strings.form === "ordinal") {
+ this.formatter = state.fun.ordinalizer;
+ } else if (this.strings.form === "long-ordinal") {
+ this.formatter = state.fun.long_ordinalizer;
+ }
+ if ("undefined" === typeof this.successor_prefix) {
+ this.successor_prefix = state[state.tmp.area].opt.layout_delimiter;
+ }
+ func = function (state, Item) {
+ var varname, num, number, m;
+ varname = this.variables[0];
+ state.parallel.StartVariable(this.variables[0]);
+ state.parallel.AppendToVariable(Item[this.variables[0]]);
+ if (varname === "page-range" || varname === "page-first") {
+ varname = "page";
+ }
+ num = Item[varname];
+ if ("undefined" !== typeof num) {
+ if (this.variables[0] === "page-first") {
+ m = num.split(/\s*(?:&|,|-)\s*/);
+ num = m[0];
+ }
+ m = num.match(/\s*([0-9]+)/);
+ if (m) {
+ num = parseInt(m[1], 10);
+ number = new CSL.NumericBlob(num, this);
+ state.output.append(number, "literal");
+ } else {
+ state.output.append(num, this);
+ }
+ }
+ state.parallel.CloseVariable("number");
+ };
+ this.execs.push(func);
+ target.push(this);
+ CSL.Util.substituteEnd.call(this, state, target);
+ }
+};
+CSL.Node.sort = {
+ build: function (state, target) {
+ if (this.tokentype === CSL.START) {
+ if (state.build.area === "citation") {
+ state.parallel.use_parallels = false;
+ }
+ state.build.sort_flag = true;
+ state.build.area_return = state.build.area;
+ state.build.area = state.build.area + "_sort";
+ }
+ if (this.tokentype === CSL.END) {
+ state.build.area = state.build.area_return;
+ state.build.sort_flag = false;
+ }
+ }
+};
+CSL.Node.substitute = {
+ build: function (state, target) {
+ var func;
+ if (this.tokentype === CSL.START) {
+ func = function (state, Item) {
+ state.tmp.can_block_substitute = true;
+ if (state.tmp.value.length) {
+ state.tmp.can_substitute.replace(false, CSL.LITERAL);
+ }
+ };
+ this.execs.push(func);
+ }
+ target.push(this);
+ }
+};
+CSL.Node.text = {
+ build: function (state, target) {
+ var variable, func, form, plural, id, num, number, formatter, firstoutput, specialdelimiter, label, myname, names, name, year, suffix, term, dp, len, pos, n, m, value, flag;
+ CSL.Util.substituteStart.call(this, state, target);
+ if (this.postponed_macro) {
+ CSL.expandMacro.call(state, this);
+ } else {
+ variable = this.variables[0];
+ form = "long";
+ plural = 0;
+ if (this.strings.form) {
+ form = this.strings.form;
+ }
+ if (this.strings.plural) {
+ plural = this.strings.plural;
+ }
+ if ("citation-number" === variable || "year-suffix" === variable || "citation-label" === variable) {
+ if (variable === "citation-number") {
+ state.opt.update_mode = CSL.NUMERIC;
+ if ("citation-number" === state[state.tmp.area].opt.collapse) {
+ this.range_prefix = "-";
+ }
+ this.successor_prefix = state[state.build.area].opt.layout_delimiter;
+ func = function (state, Item, item) {
+ id = Item.id;
+ if (!state.tmp.just_looking) {
+ if (item && item["author-only"]) {
+ state.tmp.element_trace.replace("do-not-suppress-me");
+ term = CSL.Output.Formatters["capitalize-first"](state, state.getTerm("reference", "long", "singular"));
+ state.output.append(term + " ");
+ state.tmp.last_element_trace = true;
+ }
+ if (item && item["suppress-author"]) {
+ if (state.tmp.last_element_trace) {
+ state.tmp.element_trace.replace("suppress-me");
+ }
+ state.tmp.last_element_trace = false;
+ }
+ num = state.registry.registry[id].seq;
+ number = new CSL.NumericBlob(num, this);
+ state.output.append(number, "literal");
+ }
+ };
+ this.execs.push(func);
+ } else if (variable === "year-suffix") {
+ state.opt.has_year_suffix = true;
+ if (state[state.tmp.area].opt.collapse === "year-suffix-ranged") {
+ this.range_prefix = "-";
+ }
+ if (state[state.tmp.area].opt["year-suffix-delimiter"]) {
+ this.successor_prefix = state[state.build.area].opt["year-suffix-delimiter"];
+ }
+ func = function (state, Item) {
+ if (state.registry.registry[Item.id] && state.registry.registry[Item.id].disambig[2]) {
+ num = parseInt(state.registry.registry[Item.id].disambig[2], 10);
+ number = new CSL.NumericBlob(num, this);
+ formatter = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);
+ number.setFormatter(formatter);
+ state.output.append(number, "literal");
+ firstoutput = false;
+ len = state.tmp.term_sibling.mystack.length;
+ for (pos = 0; pos < len; pos += 1) {
+ flag = state.tmp.term_sibling.mystack[pos];
+ if (!flag[2] && (flag[1] || (!flag[1] && !flag[0]))) {
+ firstoutput = true;
+ break;
+ }
+ }
+ specialdelimiter = state[state.tmp.area].opt["year-suffix-delimiter"];
+ if (firstoutput && specialdelimiter && !state.tmp.sort_key_flag) {
+ state.tmp.splice_delimiter = state[state.tmp.area].opt["year-suffix-delimiter"];
+ }
+ }
+ };
+ this.execs.push(func);
+ } else if (variable === "citation-label") {
+ state.opt.has_year_suffix = true;
+ func = function (state, Item) {
+ label = Item["citation-label"];
+ if (!label) {
+ myname = state.getTerm("reference", "short", 0);
+ len = CSL.CREATORS.length;
+ for (pos = 0; pos < len; pos += 1) {
+ n = CSL.CREATORS[pos];
+ if (Item[n]) {
+ names = Item[n];
+ if (names && names.length) {
+ name = names[0];
+ }
+ if (name && name.family) {
+ myname = name.family.replace(/\s+/, "");
+ } else if (name && name.literal) {
+ myname = name.literal;
+ m = myname.toLowerCase().match(/^(a|the|an\s+)/, "");
+ if (m) {
+ myname = myname.slice(m[1].length);
+ }
+ }
+ }
+ }
+ year = "0000";
+ if (Item.issued) {
+ dp = Item.issued["date-parts"];
+ if (dp && dp[0] && dp[0][0]) {
+ year = "" + dp[0][0];
+ }
+ }
+ label = myname + year;
+ }
+ suffix = "";
+ if (state.registry.registry[Item.id] && state.registry.registry[Item.id].disambig[2]) {
+ num = parseInt(state.registry.registry[Item.id].disambig[2], 10);
+ suffix = state.fun.suffixator.format(num);
+ }
+ label += suffix;
+ state.output.append(label, this);
+ };
+ this.execs.push(func);
+ }
+ } else {
+ if (state.build.term) {
+ term = state.build.term;
+ term = state.getTerm(term, form, plural);
+ if (this.strings["strip-periods"]) {
+ term = term.replace(/\./g, "");
+ }
+ func = function (state, Item) {
+ var myterm;
+ if (term !== "") {
+ flag = state.tmp.term_sibling.value();
+ flag[0] = true;
+ state.tmp.term_sibling.replace(flag);
+ }
+ if (!state.tmp.term_predecessor) {
+ myterm = CSL.Output.Formatters["capitalize-first"](state, term);
+ } else {
+ myterm = term;
+ }
+ state.output.append(myterm, this);
+ };
+ this.execs.push(func);
+ state.build.term = false;
+ state.build.form = false;
+ state.build.plural = false;
+ } else if (this.variables.length) {
+ func = function (state, Item) {
+ state.parallel.StartVariable(this.variables[0]);
+ state.parallel.AppendToVariable(Item[this.variables[0]]);
+ };
+ this.execs.push(func);
+ if (CSL.MULTI_FIELDS.indexOf(this.variables[0]) > -1) {
+ if (form === "short") {
+ state.transform.init(this, this.variables[0], this.variables[0]);
+ } else {
+ state.transform.init(this, this.variables[0]);
+ }
+ if (state.build.area.slice(-5) === "_sort") {
+ state.transform.setTransformLocale("locale-sort");
+ state.transform.setTransformFallback(true);
+ func = state.transform.getOutputFunction();
+ } else if (form === "short") {
+ state.transform.setAbbreviationFallback(true);
+ state.transform.setTransformLocale("locale-pri");
+ state.transform.setTransformFallback(true);
+ if (this.variables[0] === "container-title") {
+ state.transform.setAlternativeVariableName("journalAbbreviation");
+ } else if (["publisher", "publisher-place"].indexOf(this.variables[0]) > -1) {
+ state.transform.setTransformLocale("default-locale");
+ }
+ func = state.transform.getOutputFunction();
+ } else if (this.variables[0] === "title") {
+ state.transform.setTransformLocale("locale-sec");
+ state.transform.setTransformFallback(true);
+ func = state.transform.getOutputFunction();
+ } else {
+ state.transform.setTransformLocale("locale-pri");
+ state.transform.setTransformFallback(true);
+ if (["publisher", "publisher-place"].indexOf(this.variables[0]) > -1) {
+ state.transform.setTransformLocale("default-locale");
+ }
+ func = state.transform.getOutputFunction();
+ }
+ } else {
+ if (CSL.CITE_FIELDS.indexOf(this.variables[0]) > -1) {
+ func = function (state, Item, item) {
+ if (item && item[this.variables[0]]) {
+ state.output.append(item[this.variables[0]], this);
+ }
+ };
+ } else if (this.variables[0] === "page-first") {
+ func = function (state, Item) {
+ var idx, value;
+ value = state.getVariable(Item, "page", form);
+ if (value) {
+ idx = value.indexOf("-");
+ if (idx > -1) {
+ value = value.slice(0, idx);
+ }
+ state.output.append(value, this);
+ }
+ };
+ } else if (this.variables[0] === "page") {
+ func = function (state, Item) {
+ var value = state.getVariable(Item, "page", form);
+ if (value) {
+ value = state.fun.page_mangler(value);
+ state.output.append(value, this);
+ }
+ };
+ } else {
+ func = function (state, Item) {
+ var value = state.getVariable(Item, this.variables[0], form);
+ if (value) {
+ state.output.append(value, this);
+ }
+ };
+ }
+ }
+ this.execs.push(func);
+ func = function (state, Item) {
+ state.parallel.CloseVariable("text");
+ };
+ this.execs.push(func);
+ } else if (this.strings.value) {
+ func = function (state, Item) {
+ var flag;
+ flag = state.tmp.term_sibling.value();
+ flag[0] = true;
+ state.tmp.term_sibling.replace(flag);
+ state.output.append(this.strings.value, this);
+ };
+ this.execs.push(func);
+ }
+ }
+ target.push(this);
+ }
+ CSL.Util.substituteEnd.call(this, state, target);
+ }
+};
+CSL.Attributes = {};
+CSL.Attributes["@class"] = function (state, arg) {
+ state.opt["class"] = arg;
+};
+CSL.Attributes["@version"] = function (state, arg) {
+ state.opt.version = arg;
+};
+CSL.Attributes["@value"] = function (state, arg) {
+ this.strings.value = arg;
+};
+CSL.Attributes["@name"] = function (state, arg) {
+ this.strings.name = arg;
+};
+CSL.Attributes["@form"] = function (state, arg) {
+ this.strings.form = arg;
+};
+CSL.Attributes["@date-parts"] = function (state, arg) {
+ this.strings["date-parts"] = arg;
+};
+CSL.Attributes["@range-delimiter"] = function (state, arg) {
+ this.strings["range-delimiter"] = arg;
+};
+CSL.Attributes["@macro"] = function (state, arg) {
+ this.postponed_macro = arg;
+};
+CSL.Attributes["@term"] = function (state, arg) {
+ if (this.name === "et-al") {
+ if (CSL.locale[state.opt.lang].terms[arg]) {
+ this.strings.term = state.getTerm(arg, "long", 0);
+ } else {
+ this.strings.term = arg;
+ }
+ } else {
+ state.build.term = arg;
+ }
+};
+CSL.Attributes["@xmlns"] = function (state, arg) {};
+CSL.Attributes["@lang"] = function (state, arg) {
+ if (arg) {
+ state.build.lang = arg;
+ }
+};
+CSL.Attributes["@type"] = function (state, arg) {
+ var types, ret, func, len, pos;
+ func = function (state, Item) {
+ types = arg.split(/\s+/);
+ ret = [];
+ len = types.length;
+ for (pos = 0; pos < len; pos += 1) {
+ ret.push(Item.type === types[pos]);
+ }
+ return ret;
+ };
+ this.tests.push(func);
+};
+CSL.Attributes["@variable"] = function (state, arg) {
+ var variables, pos, len, func, output, variable, varlen, needlen, ret, x, myitem, key, flag;
+ this.variables = arg.split(/\s+/);
+ if ("label" === this.name && this.variables[0]) {
+ state.build.term = this.variables[0];
+ } else if (["names", "date", "text", "number"].indexOf(this.name) > -1) {
+ func = function (state, Item) {
+ variables = this.variables.slice();
+ this.variables = [];
+ len = variables.length;
+ for (pos = 0; pos < len; pos += 1) {
+ if (state.tmp.done_vars.indexOf(variables[pos]) === -1) {
+ this.variables.push(variables[pos]);
+ }
+ if (state.tmp.can_block_substitute) {
+ state.tmp.done_vars.push(variables[pos]);
+ }
+ }
+ };
+ this.execs.push(func);
+ func = function (state, Item, item) {
+ output = false;
+ len = this.variables.length;
+ for (pos = 0; pos < len; pos += 1) {
+ variable = this.variables[pos];
+ if (CSL.DATE_VARIABLES.indexOf(variable) > -1) {
+ if (!Item[variable] || !Item[variable]['date-parts'] || !Item[variable]['date-parts'].length) {
+ output = true;
+ break;
+ } else if (this.dateparts && this.dateparts.length) {
+ varlen = Item[variable]['date-parts'][0].length;
+ needlen = 4;
+ if (this.dateparts.indexOf("year") > -1) {
+ needlen = 1;
+ } else if (this.dateparts.indexOf("month") > -1) {
+ needlen = 2;
+ } else if (this.dateparts.indexOf('day') > -1) {
+ needlen = 3;
+ }
+ if (varlen >= needlen) {
+ output = true;
+ break;
+ }
+ }
+ } else if ("locator" === variable) {
+ if (item && item.locator) {
+ output = true;
+ break;
+ }
+ } else if ("citation-number" === variable) {
+ output = true;
+ break;
+ } else if ("first-reference-note-number" === variable) {
+ if (item && item["first-reference-note-number"]) {
+ output = true;
+ break;
+ }
+ } else if ("object" === typeof Item[variable]) {
+ if (Item[variable].length) {
+ output = true;
+ break;
+ }
+ } else if ("string" === typeof Item[variable] && Item[variable]) {
+ output = true;
+ break;
+ } else if ("number" === typeof Item[variable]) {
+ output = true;
+ break;
+ }
+ if (output) {
+ break;
+ }
+ }
+ flag = state.tmp.term_sibling.value();
+ if (output) {
+ flag[2] = true;
+ state.tmp.term_sibling.replace(flag);
+ state.tmp.can_substitute.replace(false, CSL.LITERAL);
+ } else {
+ flag[1] = true;
+ }
+ };
+ this.execs.push(func);
+ } else if (["if", "else-if"].indexOf(this.name) > -1) {
+ func = function (state, Item, item) {
+ var key;
+ ret = [];
+ len = this.variables.length;
+ for (pos = 0; pos < len; pos += 1) {
+ variable = this.variables[pos];
+ x = false;
+ myitem = Item;
+ if (item && ["locator", "first-reference-note-number"].indexOf(variable) > -1) {
+ myitem = item;
+ }
+ if (myitem[variable]) {
+ if ("number" === typeof myitem[variable] || "string" === typeof myitem[variable]) {
+ x = true;
+ } else if ("object" === typeof myitem[variable]) {
+ for (key in myitem[variable]) {
+ if (myitem[variable].hasOwnProperty(key)) {
+ x = true;
+ break;
+ }
+ }
+ }
+ }
+ ret.push(x);
+ }
+ return ret;
+ };
+ this.tests.push(func);
+ }
+};
+CSL.Attributes["@suffix"] = function (state, arg) {
+ this.strings.suffix = arg;
+};
+CSL.Attributes["@prefix"] = function (state, arg) {
+ this.strings.prefix = arg;
+};
+CSL.Attributes["@delimiter"] = function (state, arg) {
+ this.strings.delimiter = arg;
+};
+CSL.Attributes["@match"] = function (state, arg) {
+ var evaluator;
+ if (this.tokentype === CSL.START) {
+ if ("none" === arg) {
+ evaluator = state.fun.match.none;
+ } else if ("any" === arg) {
+ evaluator = state.fun.match.any;
+ } else if ("all" === arg) {
+ evaluator = state.fun.match.all;
+ } else {
+ throw "Unknown match condition \"" + arg + "\" in @match";
+ }
+ this.evaluator = evaluator;
+ }
+};
+CSL.Attributes["@is-uncertain-date"] = function (state, arg) {
+ var variables, len, pos, func, variable, ret;
+ variables = arg.split(/\s+/);
+ len = variables.length;
+ func = function (state, Item) {
+ ret = [];
+ for (pos = 0; pos < len; pos += 1) {
+ variable = variables[pos];
+ if (Item[variable] && Item[variable].circa) {
+ ret.push(true);
+ } else {
+ ret.push(false);
+ }
+ }
+ return ret;
+ };
+ this.tests.push(func);
+};
+CSL.Attributes["@is-numeric"] = function (state, arg) {
+ var variables, variable, func, val, pos, len, not_numeric_type, ret;
+ variables = arg.split(/\s+/);
+ len = variables.length;
+ func = function (state, Item) {
+ ret = [];
+ for (pos = 0; pos < len; pos += 1) {
+ variable = variables[pos];
+ not_numeric_type = CSL.NUMERIC_VARIABLES.indexOf(variable) === -1;
+ val = Item[variable];
+ if (typeof val === "number") {
+ val = val.toString();
+ }
+ if (not_numeric_type) {
+ if (Item[variable] && ("" + Item[variable]).match(/[0-9]$/)) {
+ ret.push(true);
+ } else {
+ ret.push(false);
+ }
+ } else if (typeof val === "undefined") {
+ ret.push(false);
+ } else if (typeof val !== "string") {
+ ret.push(false);
+ } else if (val.match(CSL.QUOTED_REGEXP_START) && val.match(CSL.QUOTED_REGEXP_END)) {
+ ret.push(false);
+ } else if (val.match(CSL.NUMBER_REGEXP)) {
+ ret.push(true);
+ } else {
+ ret.push(false);
+ }
+ }
+ return ret;
+ };
+ this.tests.push(func);
+};
+CSL.Attributes["@names-min"] = function (state, arg) {
+ this.strings["et-al-min"] = parseInt(arg, 10);
+};
+CSL.Attributes["@names-use-first"] = function (state, arg) {
+ this.strings["et-al-use-first"] = parseInt(arg, 10);
+};
+CSL.Attributes["@sort"] = function (state, arg) {
+ if (arg === "descending") {
+ this.strings.sort_direction = CSL.DESCENDING;
+ }
+};
+CSL.Attributes["@plural"] = function (state, arg) {
+ if ("always" === arg) {
+ this.strings.plural = 1;
+ } else if ("never" === arg) {
+ this.strings.plural = 0;
+ }
+};
+CSL.Attributes["@locator"] = function (state, arg) {
+ var func;
+ if (["if", "else-if"].indexOf(this.name) > -1) {
+ func = function (state, Item, item) {
+ var label;
+ if ("undefined" === typeof item || !item.label) {
+ label = "page";
+ } else {
+ label = item.label;
+ }
+ if (arg === label) {
+ return true;
+ }
+ return false;
+ };
+ this.tests.push(func);
+ }
+};
+CSL.Attributes["@newdate"] = function (state, arg) {
+};
+CSL.Attributes["@position"] = function (state, arg) {
+ state.opt.update_mode = CSL.POSITION;
+ if (arg === "first") {
+ this.strings.position = CSL.POSITION_FIRST;
+ } else if (arg === "subsequent") {
+ this.strings.position = CSL.POSITION_SUBSEQUENT;
+ } else if (arg === "ibid") {
+ this.strings.position = CSL.POSITION_IBID;
+ } else if (arg === "ibid-with-locator") {
+ this.strings.position = CSL.POSITION_IBID_WITH_LOCATOR;
+ } else if (arg === "near-note") {
+ this.strings["near-note-distance-check"] = true;
+ }
+};
+CSL.Attributes["@disambiguate"] = function (state, arg) {
+ if (this.tokentype === CSL.START && ["if", "else-if"].indexOf(this.name) > -1) {
+ if (arg === "true") {
+ state.opt.has_disambiguate = true;
+ var func = function (state, Item) {
+ if (state.tmp.disambig_settings.disambiguate) {
+ return true;
+ }
+ return false;
+ };
+ this.tests.push(func);
+ }
+ }
+};
+CSL.Attributes["@givenname-disambiguation-rule"] = function (state, arg) {
+ if (CSL.GIVENNAME_DISAMBIGUATION_RULES.indexOf(arg) > -1) {
+ state[this.name].opt["givenname-disambiguation-rule"] = arg;
+ }
+};
+CSL.Attributes["@collapse"] = function (state, arg) {
+ if (arg) {
+ state[this.name].opt.collapse = arg;
+ }
+};
+CSL.Attributes["@names-delimiter"] = function (state, arg) {
+ state.setOpt(this, "names-delimiter", arg);
+};
+CSL.Attributes["@name-form"] = function (state, arg) {
+ state.setOpt(this, "name-form", arg);
+};
+CSL.Attributes["@name-delimiter"] = function (state, arg) {
+ state.setOpt(this, "name-delimiter", arg);
+};
+CSL.Attributes["@et-al-min"] = function (state, arg) {
+ state.setOpt(this, "et-al-min", parseInt(arg, 10));
+};
+CSL.Attributes["@et-al-use-first"] = function (state, arg) {
+ state.setOpt(this, "et-al-use-first", parseInt(arg, 10));
+};
+CSL.Attributes["@et-al-subsequent-min"] = function (state, arg) {
+ state.setOpt(this, "et-al-subsequent-min", parseInt(arg, 10));
+};
+CSL.Attributes["@et-al-subsequent-use-first"] = function (state, arg) {
+ state.setOpt(this, "et-al-subsequent-use-first", parseInt(arg, 10));
+};
+CSL.Attributes["@truncate-min"] = function (state, arg) {
+ this.strings["truncate-min"] = parseInt(arg, 10);
+};
+CSL.Attributes["@suppress-min"] = function (state, arg) {
+ this.strings["suppress-min"] = parseInt(arg, 10);
+};
+CSL.Attributes["@and"] = function (state, arg) {
+ var myarg, and;
+ myarg = "&";
+ if ("text" === arg) {
+ and = state.getTerm("and", "long", 0);
+ myarg = and;
+ }
+ state.setOpt(this, "and", myarg);
+};
+CSL.Attributes["@delimiter-precedes-last"] = function (state, arg) {
+ state.setOpt(this, "delimiter-precedes-last", arg);
+};
+CSL.Attributes["@initialize-with"] = function (state, arg) {
+ state.setOpt(this, "initialize-with", arg);
+};
+CSL.Attributes["@name-as-sort-order"] = function (state, arg) {
+ state.setOpt(this, "name-as-sort-order", arg);
+};
+CSL.Attributes["@sort-separator"] = function (state, arg) {
+ state.setOpt(this, "sort-separator", arg);
+};
+CSL.Attributes["@year-suffix-delimiter"] = function (state, arg) {
+ state[this.name].opt["year-suffix-delimiter"] = arg;
+};
+CSL.Attributes["@after-collapse-delimiter"] = function (state, arg) {
+ state[this.name].opt["after-collapse-delimiter"] = arg;
+};
+CSL.Attributes["@subsequent-author-substitute"] = function (state, arg) {
+ state[this.name].opt["subsequent-author-substitute"] = arg;
+};
+CSL.Attributes["@disambiguate-add-names"] = function (state, arg) {
+ if (arg === "true") {
+ state[this.name].opt["disambiguate-add-names"] = true;
+ }
+};
+CSL.Attributes["@disambiguate-add-givenname"] = function (state, arg) {
+ if (arg === "true") {
+ state[this.name].opt["disambiguate-add-givenname"] = true;
+ }
+};
+CSL.Attributes["@disambiguate-add-year-suffix"] = function (state, arg) {
+ if (arg === "true") {
+ state[this.name].opt["disambiguate-add-year-suffix"] = true;
+ }
+};
+CSL.Attributes["@second-field-align"] = function (state, arg) {
+ if (arg === "flush" || arg === "margin") {
+ state[this.name].opt["second-field-align"] = arg;
+ }
+};
+CSL.Attributes["@hanging-indent"] = function (state, arg) {
+ if (arg === "true") {
+ state[this.name].opt.hangingindent = 2;
+ }
+};
+CSL.Attributes["@line-spacing"] = function (state, arg) {
+ if (arg && arg.match(/^[.0-9]+$/)) {
+ state[this.name].opt["line-spacing"] = parseFloat(arg, 10);
+ }
+};
+CSL.Attributes["@entry-spacing"] = function (state, arg) {
+ if (arg && arg.match(/^[.0-9]+$/)) {
+ state[this.name].opt["entry-spacing"] = parseFloat(arg, 10);
+ }
+};
+CSL.Attributes["@near-note-distance"] = function (state, arg) {
+ state[this.name].opt["near-note-distance"] = parseInt(arg, 10);
+};
+CSL.Attributes["@page-range-format"] = function (state, arg) {
+ state.opt["page-range-format"] = arg;
+};
+CSL.Attributes["@text-case"] = function (state, arg) {
+ this.strings["text-case"] = arg;
+};
+CSL.Attributes["@page-range-format"] = function (state, arg) {
+ state.opt["page-range-format"] = arg;
+};
+CSL.Attributes["@default-locale"] = function (state, arg) {
+ var lst, len, pos, m, ret;
+ m = arg.match(/-x-(sort|pri|sec|name)-/g);
+ if (m) {
+ for (pos = 0, len = m.length; pos < len; pos += 1) {
+ m[pos] = m[pos].replace(/^-x-/, "").replace(/-$/, "");
+ }
+ }
+ lst = arg.split(/-x-(?:sort|pri|sec|name)-/);
+ ret = [lst[0]];
+ for (pos = 1, len = lst.length; pos < len; pos += 1) {
+ ret.push(m[pos - 1]);
+ ret.push(lst[pos]);
+ }
+ lst = ret.slice();
+ len = lst.length;
+ for (pos = 1; pos < len; pos += 2) {
+ state.opt[("locale-" + lst[pos])].push(lst[(pos + 1)].replace(/^\s*/g, "").replace(/\s*$/g, ""));
+ }
+ if (lst.length) {
+ state.opt["default-locale"] = lst.slice(0, 1);
+ } else {
+ state.opt["default-locale"] = ["en"];
+ }
+};
+CSL.Attributes["@demote-non-dropping-particle"] = function (state, arg) {
+ state.opt["demote-non-dropping-particle"] = arg;
+};
+CSL.Attributes["@initialize-with-hyphen"] = function (state, arg) {
+ if (arg === "false") {
+ state.opt["initialize-with-hyphen"] = false;
+ }
+};
+CSL.Attributes["@institution-parts"] = function (state, arg) {
+ this.strings["institution-parts"] = arg;
+};
+CSL.Attributes["@if-short"] = function (state, arg) {
+ if (arg === "true") {
+ this.strings["if-short"] = true;
+ }
+};
+CSL.Attributes["@substitute-use-first"] = function (state, arg) {
+ if (arg.match(/^[0-9]+$/)) {
+ this.strings["substitute-use-first"] = parseInt(arg, 10);
+ }
+};
+CSL.Attributes["@use-first"] = function (state, arg) {
+ if (arg.match(/^[0-9]+$/)) {
+ this.strings["use-first"] = parseInt(arg, 10);
+ }
+};
+CSL.Attributes["@use-last"] = function (state, arg) {
+ if (arg.match(/^[0-9]+$/)) {
+ this.strings["use-last"] = parseInt(arg, 10);
+ }
+};
+CSL.Attributes["@reverse-order"] = function (state, arg) {
+ if ("true" === arg) {
+ this.strings["reverse-order"] = true;
+ }
+};
+CSL.Attributes["@display"] = function (state, arg) {
+ this.strings.cls = arg;
+};
+var XML_PARSING;
+var CSL_E4X;
+var CSL_CHROME;
+var DOMParser;
+if ("undefined" !== typeof CSL_E4X) {
+ XML_PARSING = CSL_E4X;
+} else {
+ XML_PARSING = CSL_CHROME;
+}
+CSL.System = {};
+CSL.System.Xml = {
+ "Parsing": XML_PARSING
+};
+CSL.Stack = function (val, literal) {
+ this.mystack = [];
+ if (literal || val) {
+ this.mystack.push(val);
+ }
+};
+CSL.Stack.prototype.push = function (val, literal) {
+ if (literal || val) {
+ this.mystack.push(val);
+ } else {
+ this.mystack.push("");
+ }
+};
+CSL.Stack.prototype.clear = function () {
+ this.mystack = [];
+};
+CSL.Stack.prototype.replace = function (val, literal) {
+ if (this.mystack.length === 0) {
+ throw "Internal CSL processor error: attempt to replace nonexistent stack item with " + val;
+ }
+ if (literal || val) {
+ this.mystack[(this.mystack.length - 1)] = val;
+ } else {
+ this.mystack[(this.mystack.length - 1)] = "";
+ }
+};
+CSL.Stack.prototype.pop = function () {
+ return this.mystack.pop();
+};
+CSL.Stack.prototype.value = function () {
+ return this.mystack.slice(-1)[0];
+};
+CSL.Stack.prototype.length = function () {
+ return this.mystack.length;
+};
+CSL.Util = {};
+CSL.Util.Match = function () {
+ var func, pos, len, reslist, res, ppos, llen;
+ this.any = function (token, state, Item, item) {
+ var ret = false;
+ len = token.tests.length;
+ for (pos = 0; pos < len; pos += 1) {
+ func = token.tests[pos];
+ reslist = func.call(token, state, Item, item);
+ if ("object" !== typeof reslist) {
+ reslist = [reslist];
+ }
+ llen = reslist.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ if (reslist[ppos]) {
+ ret = true;
+ break;
+ }
+ }
+ if (ret) {
+ break;
+ }
+ }
+ if (ret) {
+ ret = token.succeed;
+ state.tmp.jump.replace("succeed");
+ } else {
+ ret = token.fail;
+ state.tmp.jump.replace("fail");
+ }
+ return ret;
+ };
+ this.none = function (token, state, Item, item) {
+ var ret = true;
+ len = this.tests.length;
+ for (pos = 0; pos < len; pos += 1) {
+ func = this.tests[pos];
+ reslist = func.call(token, state, Item, item);
+ if ("object" !== typeof reslist) {
+ reslist = [reslist];
+ }
+ llen = reslist.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ if (reslist[ppos]) {
+ ret = false;
+ break;
+ }
+ }
+ if (!ret) {
+ break;
+ }
+ }
+ if (ret) {
+ ret = token.succeed;
+ state.tmp.jump.replace("succeed");
+ } else {
+ ret = token.fail;
+ state.tmp.jump.replace("fail");
+ }
+ return ret;
+ };
+ this.all = function (token, state, Item, item) {
+ var ret = true;
+ len = this.tests.length;
+ for (pos = 0; pos < len; pos += 1) {
+ func = this.tests[pos];
+ reslist = func.call(token, state, Item, item);
+ if ("object" !== typeof reslist) {
+ reslist = [reslist];
+ }
+ llen = reslist.length;
+ for (pos = 0; pos < len; pos += 1) {
+ if (!reslist[ppos]) {
+ ret = false;
+ break;
+ }
+ }
+ if (!ret) {
+ break;
+ }
+ }
+ if (ret) {
+ ret = token.succeed;
+ state.tmp.jump.replace("succeed");
+ } else {
+ ret = token.fail;
+ state.tmp.jump.replace("fail");
+ }
+ return ret;
+ };
+};
+CSL.Transform = function (state) {
+ var debug = false, abbreviations, token, fieldname, subsection, opt;
+ this["container-title"] = {};
+ this["collection-title"] = {};
+ this.institution = {};
+ this.authority = {};
+ this.title = {};
+ this.publisher = {};
+ this["publisher-place"] = {};
+ this.hereinafter = {};
+ abbreviations = "default";
+ function init(t, f, x) {
+ token = t;
+ fieldname = f;
+ subsection = x;
+ opt = {
+ abbreviation_fallback: false,
+ alternative_varname: false,
+ transform_locale: false,
+ transform_fallback: false
+ };
+ }
+ this.init = init;
+ function abbreviate(state, Item, altvar, basevalue, mysubsection, use_field) {
+ var value;
+ if (!mysubsection) {
+ return basevalue;
+ }
+ value = "";
+ if (state.transform[mysubsection]) {
+ if (state.transform[mysubsection][basevalue]) {
+ value = state.transform[mysubsection][basevalue];
+ } else if ("string" != typeof state.transform[mysubsection][basevalue]) {
+ state.transform[mysubsection][basevalue] = "";
+ }
+ }
+ if (!value && Item[altvar] && use_field) {
+ value = Item[altvar];
+ }
+ if (!value) {
+ value = basevalue;
+ }
+ return value;
+ }
+ function getTextSubField(value, locale_type, use_default) {
+ var m, lst, opt, o, pos, key, ret, len, myret;
+ if (!value) {
+ return "";
+ }
+ ret = "";
+ m = value.match(/\s*:([\-a-zA-Z0-9]+):\s*/g);
+ if (m) {
+ for (pos = 0, len = m.length; pos < len; pos += 1) {
+ m[pos] = m[pos].replace(/^\s*:/, "").replace(/:\s*$/, "");
+ }
+ }
+ lst = value.split(/\s*:(?:[\-a-zA-Z0-9]+):\s*/);
+ myret = [lst[0]];
+ for (pos = 1, len = lst.length; pos < len; pos += 1) {
+ myret.push(m[pos - 1]);
+ myret.push(lst[pos]);
+ }
+ lst = myret.slice();
+ opt = state.opt[locale_type];
+ if ("undefined" === typeof opt) {
+ opt = state.opt["default-locale"];
+ }
+ for (key in opt) {
+ if (opt.hasOwnProperty(key)) {
+ o = opt[key];
+ if (o && lst.indexOf(o) > -1 && lst.indexOf(o) % 2) {
+ ret = lst[(lst.indexOf(o) + 1)];
+ break;
+ }
+ }
+ }
+ if (!ret && use_default) {
+ ret = lst[0];
+ }
+ return ret;
+ }
+ function setAbbreviationFallback(b) {
+ opt.abbreviation_fallback = b;
+ }
+ this.setAbbreviationFallback = setAbbreviationFallback;
+ function setAlternativeVariableName(s) {
+ opt.alternative_varname = s;
+ }
+ this.setAlternativeVariableName = setAlternativeVariableName;
+ function setTransformLocale(s) {
+ opt.transform_locale = s;
+ }
+ this.setTransformLocale = setTransformLocale;
+ function setTransformFallback(b) {
+ opt.transform_fallback = b;
+ }
+ this.setTransformFallback = setTransformFallback;
+ function setAbbreviations(name) {
+ var vartype, pos, len;
+ if (name) {
+ abbreviations = name;
+ }
+ len = CSL.MULTI_FIELDS.length;
+ for (pos = 0; pos < len; pos += 1) {
+ vartype = CSL.MULTI_FIELDS[pos];
+ this[vartype] = state.sys.getAbbreviations(abbreviations, vartype);
+ }
+ }
+ this.setAbbreviations = setAbbreviations;
+ function getOutputFunction() {
+ var mytoken, mysubsection, myfieldname, abbreviation_fallback, alternative_varname, transform_locale, transform_fallback, getTextSubfield;
+ mytoken = CSL.Util.cloneToken(token); // the token isn't needed, is it?
+ mysubsection = subsection;
+ myfieldname = fieldname;
+ abbreviation_fallback = opt.abbreviation_fallback;
+ alternative_varname = opt.alternative_varname;
+ transform_locale = opt.transform_locale;
+ transform_fallback = opt.transform_fallback;
+ if (mysubsection) {
+ return function (state, Item) {
+ var value, primary;
+ value = Item[myfieldname];
+ primary = getTextSubField(value, transform_locale, transform_fallback);
+ primary = abbreviate(state, Item, alternative_varname, primary, mysubsection, true);
+ state.output.append(primary, this);
+ };
+ } else if (transform_locale === "locale-sec") {
+ return function (state, Item) {
+ var primary, secondary, primary_tok, secondary_tok, key, value;
+ value = Item[myfieldname];
+ if (value) {
+ if ("number" === typeof value) {
+ value = "" + value;
+ }
+ primary = getTextSubField(value, "locale-pri", transform_fallback);
+ secondary = getTextSubField(value, "locale-sec");
+ if (secondary) {
+ primary_tok = CSL.Util.cloneToken(this);
+ primary_tok.strings.suffix = "";
+ secondary_tok = new CSL.Token("text", CSL.SINGLETON);
+ secondary_tok.strings.suffix = "]" + this.strings.suffix;
+ secondary_tok.strings.prefix = " [";
+ state.output.append(primary, primary_tok);
+ state.output.append(secondary, secondary_tok);
+ } else {
+ state.output.append(primary, this);
+ }
+ }
+ return null;
+ };
+ } else {
+ return function (state, Item) {
+ var value, primary;
+ value = Item[myfieldname];
+ if (value) {
+ if ("number" === typeof value) {
+ value = "" + value;
+ }
+ primary = getTextSubField(value, transform_locale, transform_fallback);
+ state.output.append(primary, this);
+ }
+ return null;
+ };
+ }
+ }
+ this.getOutputFunction = getOutputFunction;
+ function output(state, basevalue, token_short, token_long, use_fallback) {
+ var shortvalue;
+ shortvalue = state.transform.institution[basevalue];
+ if (shortvalue) {
+ state.output.append(shortvalue, token_short);
+ } else {
+ if (use_fallback) {
+ state.output.append(basevalue, token_long);
+ }
+ }
+ }
+ this.output = output;
+};
+CSL.Parallel = function (state) {
+ this.state = state;
+ this.sets = new CSL.Stack([]);
+ this.try_cite = true;
+ this.use_parallels = true;
+};
+CSL.Parallel.prototype.isMid = function (variable) {
+ return ["volume", "container-title", "issue", "page", "locator", "number"].indexOf(variable) > -1;
+};
+CSL.Parallel.prototype.StartCitation = function (sortedItems, out) {
+ if (this.use_parallels) {
+ this.sortedItems = sortedItems;
+ this.sortedItemsPos = -1;
+ this.sets.clear();
+ this.sets.push([]);
+ this.in_series = true;
+ this.delim_counter = 0;
+ this.delim_pointers = [];
+ if (out) {
+ this.out = out;
+ } else {
+ this.out = this.state.output.queue;
+ }
+ }
+};
+CSL.Parallel.prototype.StartCite = function (Item, item, prevItemID) {
+ var position, len, pos, x, curr, master, last_id, prev_locator, curr_locator, is_master, parallel;
+ if (this.use_parallels) {
+ if (this.sets.value().length && this.sets.value()[0].itemId === Item.id) {
+ this.ComposeSet();
+ }
+ this.sortedItemsPos += 1;
+ if (item) {
+ position = item.position;
+ }
+ this.try_cite = true;
+ len = CSL.PARALLEL_MATCH_VARS.length;
+ for (pos = 0; pos < len; pos += 1) {
+ x = CSL.PARALLEL_MATCH_VARS[pos];
+ if (!Item[x] || CSL.PARALLEL_TYPES.indexOf(Item.type) === -1) {
+ this.try_cite = false;
+ if (this.in_series) {
+ this.in_series = false;
+ }
+ break;
+ }
+ }
+ this.cite = {};
+ this.cite.front = [];
+ this.cite.mid = [];
+ this.cite.back = [];
+ this.cite.back_forceme = [];
+ this.cite.position = position;
+ this.cite.itemId = Item.id;
+ this.cite.prevItemID = prevItemID;
+ this.target = "front";
+ if (this.sortedItems && this.sortedItemsPos > 0 && this.sortedItemsPos < this.sortedItems.length) {
+ curr = this.sortedItems[this.sortedItemsPos][1];
+ last_id = this.sortedItems[(this.sortedItemsPos - 1)][1].id;
+ master = this.state.registry.registry[last_id].parallel;
+ prev_locator = false;
+ if (master === curr.id) {
+ len = this.sortedItemsPos - 1;
+ for (pos = len; pos > -1; pos += -1) {
+ if (this.sortedItems[pos][1].id === Item.id) {
+ prev_locator = this.sortedItems[pos][1].locator;
+ break;
+ }
+ }
+ curr_locator = this.sortedItems[this.sortedItemsPos][1].locator;
+ if (!prev_locator && curr_locator) {
+ curr.position = CSL.POSITION_IBID_WITH_LOCATOR;
+ } else if (curr_locator === prev_locator) {
+ curr.position = CSL.POSITION_IBID;
+ } else {
+ curr.position = CSL.POSITION_IBID_WITH_LOCATOR;
+ }
+ }
+ }
+ this.force_collapse = false;
+ if (this.state.registry.registry[Item.id].parallel) {
+ this.force_collapse = true;
+ }
+ }
+};
+CSL.Parallel.prototype.StartVariable = function (variable) {
+ if (this.use_parallels && (this.try_cite || this.force_collapse)) {
+ this.variable = variable;
+ this.data = {};
+ this.data.value = "";
+ this.data.blobs = [];
+ var is_mid = this.isMid(variable);
+ if (this.target === "front" && is_mid) {
+ this.target = "mid";
+ } else if (this.target === "mid" && !is_mid) {
+ this.target = "back";
+ } else if (this.target === "back" && is_mid) {
+ this.try_cite = true;
+ this.in_series = false;
+ }
+ this.cite[this.target].push(variable);
+ }
+};
+CSL.Parallel.prototype.AppendBlobPointer = function (blob) {
+ if (this.use_parallels && (this.try_cite || this.force_collapse) && blob && blob.blobs) {
+ this.data.blobs.push([blob, blob.blobs.length]);
+ }
+};
+CSL.Parallel.prototype.AppendToVariable = function (str, varname) {
+ if (this.use_parallels && (this.try_cite || this.force_collapse)) {
+ if (this.target !== "back" || true) {
+ this.data.value += "::" + str;
+ } else {
+ var prev = this.sets.value()[(this.sets.value().length - 1)];
+ if (prev) {
+ if (prev[this.variable]) {
+ if (prev[this.variable].value) {
+ this.data.value += "::" + str;
+ }
+ }
+ }
+ }
+ }
+};
+CSL.Parallel.prototype.CloseVariable = function (hello) {
+ if (this.use_parallels && (this.try_cite || this.force_collapse)) {
+ this.cite[this.variable] = this.data;
+ if (this.sets.value().length > 0) {
+ var prev = this.sets.value()[(this.sets.value().length - 1)];
+ if (this.target === "front") {
+ if (!prev[this.variable] || this.data.value !== prev[this.variable].value) {
+ this.in_series = false;
+ }
+ } else if (this.target === "back") {
+ if (prev[this.variable]) {
+ if (this.data.value !== prev[this.variable].value && this.sets.value().slice(-1)[0].back_forceme.indexOf(this.variable) === -1) {
+ this.in_series = false;
+ }
+ }
+ }
+ }
+ }
+};
+CSL.Parallel.prototype.CloseCite = function () {
+ var x, pos, len, has_issued;
+ if (this.use_parallels) {
+ if (!this.in_series && !this.force_collapse) {
+ this.ComposeSet(true);
+ }
+ if (this.sets.value().length === 0) {
+ has_issued = false;
+ for (pos = 0, len = this.cite.back.length; pos < len; pos += 1) {
+ x = this.cite.back[pos];
+ if (x === "issued" && this.cite.issued && this.cite.issued.value) {
+ has_issued = true;
+ break;
+ }
+ }
+ if (!has_issued) {
+ this.cite.back_forceme.push("issued");
+ }
+ } else {
+ this.cite.back_forceme = this.sets.value().slice(-1)[0].back_forceme;
+ }
+ this.sets.value().push(this.cite);
+ }
+};
+CSL.Parallel.prototype.ComposeSet = function (next_output_in_progress) {
+ var cite, pos, master, len;
+ if (this.use_parallels) {
+ if (this.sets.value().length === 1) {
+ if (!this.in_series) {
+ this.sets.value().pop();
+ this.delim_counter += 1;
+ }
+ } else {
+ len = this.sets.value().length;
+ for (pos = 0; pos < len; pos += 1) {
+ if (pos === 0) {
+ this.delim_counter += 1;
+ } else {
+ this.delim_pointers.push(this.delim_counter);
+ this.delim_counter += 1;
+ }
+ cite = this.sets.value()[pos];
+ if (CSL.POSITION_FIRST === cite.position) {
+ if (pos === 0) {
+ this.state.registry.registry[cite.itemId].master = true;
+ this.state.registry.registry[cite.itemId].siblings = [];
+ } else {
+ if (cite.prevItemID) {
+ if (!this.state.registry.registry[cite.prevItemID].parallel) {
+ this.state.registry.registry[cite.itemId].parallel = cite.prevItemID;
+ } else {
+ this.state.registry.registry[cite.itemId].parallel = this.state.registry.registry[cite.prevItemID].parallel;
+ }
+ this.state.registry.registry[cite.itemId].siblings = this.state.registry.registry[cite.prevItemID].siblings;
+ this.state.registry.registry[cite.itemId].siblings.push(cite.itemId);
+ }
+ }
+ }
+ }
+ this.sets.push([]);
+ }
+ this.in_series = true;
+ }
+};
+CSL.Parallel.prototype.PruneOutputQueue = function () {
+ var len, pos, series, ppos, llen, cite;
+ if (this.use_parallels) {
+ len = this.sets.mystack.length;
+ for (pos = 0; pos < len; pos += 1) {
+ series = this.sets.mystack[pos];
+ if (series.length > 1) {
+ llen = series.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ cite = series[ppos];
+ if (ppos === 0) {
+ this.purgeVariableBlobs(cite, cite.back);
+ } else if (ppos === (series.length - 1)) {
+ this.purgeVariableBlobs(cite, cite.front.concat(cite.back_forceme));
+ } else {
+ this.purgeVariableBlobs(cite, cite.front.concat(cite.back));
+ }
+ }
+ }
+ }
+ }
+};
+CSL.Parallel.prototype.purgeVariableBlobs = function (cite, varnames) {
+ var len, pos, varname, b, llen, ppos, out;
+ if (this.use_parallels) {
+ out = this.state.output.current.value();
+ if ("undefined" === typeof out.length) {
+ out = out.blobs;
+ }
+ for (pos = 0, len = this.delim_pointers.length; pos < len; pos += 1) {
+ ppos = this.delim_pointers[pos];
+ out[ppos].parallel_delimiter = ", ";
+ }
+ len = varnames.length - 1;
+ for (pos = len; pos > -1; pos += -1) {
+ varname = varnames[pos];
+ if (cite[varname]) {
+ llen = cite[varname].blobs.length - 1;
+ for (ppos = llen; ppos > -1; ppos += -1) {
+ b = cite[varname].blobs[ppos];
+ b[0].blobs = b[0].blobs.slice(0, b[1]).concat(b[0].blobs.slice((b[1] + 1)));
+ }
+ }
+ }
+ }
+};
+CSL.Token = function (name, tokentype) {
+ this.name = name;
+ this.strings = {};
+ this.strings.delimiter = "";
+ this.strings.prefix = "";
+ this.strings.suffix = "";
+ this.decorations = false;
+ this.variables = [];
+ this.execs = [];
+ this.tokentype = tokentype;
+ this.evaluator = false;
+ this.tests = [];
+ this.succeed = false;
+ this.fail = false;
+ this.next = false;
+};
+CSL.Util.cloneToken = function (token) {
+ var newtok, key, pos, len;
+ if ("string" === typeof token) {
+ return token;
+ }
+ newtok = new CSL.Token(token.name, token.tokentype);
+ for (key in token.strings) {
+ if (token.strings.hasOwnProperty(key)) {
+ newtok.strings[key] = token.strings[key];
+ }
+ }
+ if (token.decorations) {
+ newtok.decorations = [];
+ for (pos = 0, len = token.decorations.length; pos < len; pos += 1) {
+ newtok.decorations.push(token.decorations[pos].slice());
+ }
+ }
+ newtok.variables = token.variables.slice();
+ return newtok;
+};
+CSL.AmbigConfig = function () {
+ this.maxvals = [];
+ this.minval = 1;
+ this.names = [];
+ this.givens = [];
+ this.year_suffix = 0;
+ this.disambiguate = 0;
+};
+CSL.Blob = function (token, str, levelname) {
+ var len, pos, key;
+ this.levelname = levelname;
+ if (token) {
+ this.strings = {};
+ for (key in token.strings) {
+ if (token.strings.hasOwnProperty(key)) {
+ this.strings[key] = token.strings[key];
+ }
+ }
+ this.decorations = [];
+ if (token.decorations === undefined) {
+ len = 0;
+ } else {
+ len = token.decorations.length;
+ }
+ for (pos = 0; pos < len; pos += 1) {
+ this.decorations.push(token.decorations[pos].slice());
+ }
+ } else {
+ this.strings = {};
+ this.strings.prefix = "";
+ this.strings.suffix = "";
+ this.strings.delimiter = "";
+ this.decorations = [];
+ }
+ if ("string" === typeof str) {
+ this.blobs = str;
+ } else {
+ this.blobs = [];
+ }
+ this.alldecor = [this.decorations];
+};
+CSL.Blob.prototype.push = function (blob) {
+ if ("string" === typeof this.blobs) {
+ throw "Attempt to push blob onto string object";
+ } else {
+ blob.alldecor = blob.alldecor.concat(this.alldecor);
+ this.blobs.push(blob);
+ }
+};
+CSL.NumericBlob = function (num, mother_token) {
+ this.alldecor = [];
+ this.num = num;
+ this.blobs = num.toString();
+ this.status = CSL.START;
+ this.strings = {};
+ if (mother_token) {
+ this.decorations = mother_token.decorations;
+ this.strings.prefix = mother_token.strings.prefix;
+ this.strings.suffix = mother_token.strings.suffix;
+ this.strings["text-case"] = mother_token.strings["text-case"];
+ this.successor_prefix = mother_token.successor_prefix;
+ this.range_prefix = mother_token.range_prefix;
+ this.splice_prefix = "";
+ this.formatter = mother_token.formatter;
+ if (!this.formatter) {
+ this.formatter = new CSL.Output.DefaultFormatter();
+ }
+ if (this.formatter) {
+ this.type = this.formatter.format(1);
+ }
+ } else {
+ this.decorations = [];
+ this.strings.prefix = "";
+ this.strings.suffix = "";
+ this.successor_prefix = "";
+ this.range_prefix = "";
+ this.splice_prefix = "";
+ this.formatter = new CSL.Output.DefaultFormatter();
+ }
+};
+CSL.NumericBlob.prototype.setFormatter = function (formatter) {
+ this.formatter = formatter;
+ this.type = this.formatter.format(1);
+};
+CSL.Output.DefaultFormatter = function () {};
+CSL.Output.DefaultFormatter.prototype.format = function (num) {
+ return num.toString();
+};
+CSL.NumericBlob.prototype.checkNext = function (next) {
+ if (! next || !next.num || this.type !== next.type || next.num !== (this.num + 1)) {
+ if (this.status === CSL.SUCCESSOR_OF_SUCCESSOR) {
+ this.status = CSL.END;
+ }
+ if ("object" === typeof next) {
+ next.status = CSL.SEEN;
+ }
+ } else { // next number is in the sequence
+ if (this.status === CSL.START || this.status === CSL.SEEN) {
+ next.status = CSL.SUCCESSOR;
+ } else if (this.status === CSL.SUCCESSOR || this.status === CSL.SUCCESSOR_OF_SUCCESSOR) {
+ if (this.range_prefix) {
+ next.status = CSL.SUCCESSOR_OF_SUCCESSOR;
+ this.status = CSL.SUPPRESS;
+ } else {
+ next.status = CSL.SUCCESSOR;
+ }
+ }
+ if (this.status === CSL.SEEN) {
+ this.status = CSL.SUCCESSOR;
+ }
+ }
+};
+CSL.Util.fixDateNode = function (parent, pos, node) {
+ var form, variable, datexml, subnode, partname, attr, val, prefix, suffix, children, key, cchildren, kkey, display;
+ form = this.sys.xml.getAttributeValue(node, "form");
+ if (!form) {
+ return parent;
+ }
+ variable = this.sys.xml.getAttributeValue(node, "variable");
+ prefix = this.sys.xml.getAttributeValue(node, "prefix");
+ suffix = this.sys.xml.getAttributeValue(node, "suffix");
+ display = this.sys.xml.getAttributeValue(node, "display");
+ datexml = this.sys.xml.nodeCopy(this.state.getDate(form));
+ this.sys.xml.setAttribute(datexml, 'variable', variable);
+ if (prefix) {
+ this.sys.xml.setAttribute(datexml, "prefix", prefix);
+ }
+ if (suffix) {
+ this.sys.xml.setAttribute(datexml, "suffix", suffix);
+ }
+ if (display) {
+ this.sys.xml.setAttribute(datexml, "display", display);
+ }
+ children = this.sys.xml.children(node);
+ for (key in children) {
+ if (true) {
+ subnode = children[key];
+ if ("date-part" === this.sys.xml.nodename(subnode)) {
+ partname = this.sys.xml.getAttributeValue(subnode, "name");
+ cchildren = this.sys.xml.attributes(subnode);
+ for (attr in cchildren) {
+ if (cchildren.hasOwnProperty(attr)) {
+ if (attr === "@name") {
+ continue;
+ }
+ val = cchildren[attr];
+ this.sys.xml.setAttributeOnNodeIdentifiedByNameAttribute(datexml, "date-part", partname, attr, val);
+ }
+ }
+ }
+ }
+ }
+ this.sys.xml.deleteAttribute(datexml, 'form');
+ if ("year" === this.sys.xml.getAttributeValue(node, "date-parts")) {
+ this.sys.xml.deleteNodeByNameAttribute(datexml, 'month');
+ this.sys.xml.deleteNodeByNameAttribute(datexml, 'day');
+ } else if ("year-month" === this.sys.xml.getAttributeValue(node, "date-parts")) {
+ this.sys.xml.deleteNodeByNameAttribute(datexml, 'day');
+ }
+ return this.sys.xml.insertChildNodeAfter(parent, node, pos, datexml);
+};
+CSL.Util.Institutions = {};
+CSL.Util.Institutions.outputInstitutions = function (state, display_names) {
+ var len, pos, name, institution, value, token_long, token_short, parts;
+ state.output.openLevel("institution");
+ len = display_names.length;
+ for (pos = 0; pos < len; pos += 1) {
+ name = display_names[pos];
+ institution = state.output.getToken("institution");
+ value = name.literal;
+ if (state.transform.institution[value]) {
+ token_long = state.output.mergeTokenStrings("institution-long", "institution-if-short");
+ } else {
+ token_long = state.output.getToken("institution-long");
+ }
+ token_short = state.output.getToken("institution-short");
+ parts = institution.strings["institution-parts"];
+ if ("short" === parts) {
+ state.transform.output(state, value, token_short, token_long, true);
+ } else if ("short-long" === parts) {
+ state.transform.output(state, value, token_short);
+ state.output.append(value, token_long);
+ } else if ("long-short" === parts) {
+ state.output.append(value, token_long);
+ state.transform.output(state, value, token_short);
+ } else {
+ state.output.append(value, token_long);
+ }
+ }
+ state.output.closeLevel();
+};
+CSL.Util.Names = {};
+CSL.Util.Names.outputNames = function (state, display_names) {
+ var segments, and;
+ segments = new this.StartMiddleEnd(state, display_names);
+ and = state.output.getToken("name").strings.delimiter;
+ if (state.output.getToken("name").strings["delimiter-precedes-last"] === "always") {
+ and = state.output.getToken("inner").strings.delimiter + and;
+ } else if (state.output.getToken("name").strings["delimiter-precedes-last"] === "never") {
+ if (!and) {
+ and = state.output.getToken("inner").strings.delimiter;
+ }
+ } else if ((segments.segments.start.length + segments.segments.middle.length) > 1) {
+ and = state.output.getToken("inner").strings.delimiter + and;
+ } else {
+ if (!and) {
+ and = state.output.getToken("inner").strings.delimiter;
+ }
+ }
+ if (and.match(CSL.STARTSWITH_ROMANESQUE_REGEXP)) {
+ and = " " + and;
+ }
+ if (and.match(CSL.ENDSWITH_ROMANESQUE_REGEXP)) {
+ and = and + " ";
+ }
+ state.output.getToken("name").strings.delimiter = and;
+ state.output.openLevel("name");
+ state.output.openLevel("inner");
+ segments.outputSegmentNames("start");
+ segments.outputSegmentNames("middle");
+ state.output.closeLevel(); // inner
+ segments.outputSegmentNames("end");
+ state.output.closeLevel(); // name
+};
+CSL.Util.Names.StartMiddleEnd = function (state, names) {
+ var start, middle, endstart, end, ret;
+ this.state = state;
+ this.nameoffset = 0;
+ start = names.slice(0, 1);
+ middle = names.slice(1, (names.length - 1));
+ endstart = 1;
+ if (names.length > 1) {
+ endstart = (names.length - 1);
+ }
+ end = names.slice(endstart, (names.length));
+ ret = {};
+ ret.start = start;
+ ret.middle = middle;
+ ret.end = end;
+ this.segments = ret;
+};
+CSL.Util.Names.StartMiddleEnd.prototype.outputSegmentNames = function (seg) {
+ var state, value, sequence, pos, len;
+ state = this.state;
+ len = this.segments[seg].length;
+ for (pos = 0; pos < len; pos += 1) {
+ this.namenum = parseInt(pos, 10);
+ this.name = this.segments[seg][pos];
+ if (this.name.literal) {
+ value = this.name.literal;
+ state.output.append(this.name.literal, "empty");
+ } else {
+ sequence = CSL.Util.Names.getNamepartSequence(state, seg, this.name);
+ state.output.openLevel(sequence[0][0]); // articular join
+ state.output.openLevel(sequence[0][1]); // join to last element (?)
+ state.output.openLevel(sequence[0][2]); // inter-element join (?)
+ this.outputNameParts(sequence[1]);
+ state.output.closeLevel();
+ state.output.openLevel(sequence[0][2]);
+ this.outputNameParts(sequence[2]);
+ state.output.closeLevel();
+ state.output.closeLevel();
+ this.outputNameParts(sequence[3]);
+ state.output.closeLevel();
+ }
+ }
+ this.nameoffset += this.segments[seg].length;
+};
+CSL.Util.Names.StartMiddleEnd.prototype.outputNameParts = function (subsequence) {
+ var state, len, pos, key, namepart, initialize_with;
+ state = this.state;
+ len = subsequence.length;
+ for (pos = 0; pos < len; pos += 1) {
+ key = subsequence[pos];
+ namepart = this.name[key];
+ if (["given", "suffix", "dropping-particle"].indexOf(key) > -1 && 0 === state.tmp.disambig_settings.givens[state.tmp.nameset_counter][this.namenum + this.nameoffset]) {
+ continue;
+ }
+ if ("given" === key && 1 === state.tmp.disambig_settings.givens[state.tmp.nameset_counter][(this.namenum + this.nameoffset)]) {
+ initialize_with = state.output.getToken("name").strings["initialize-with"];
+ namepart = CSL.Util.Names.initializeWith(state, namepart, initialize_with);
+ }
+ state.output.append(namepart, key);
+ }
+};
+CSL.Util.Names.getNamepartSequence = function (state, seg, name) {
+ var token, suffix_sep, romanesque, sequence;
+ token = state.output.getToken("name");
+ if (name["comma-suffix"]) {
+ state.output.getToken("suffixsep").strings.delimiter = ", ";
+ } else {
+ state.output.getToken("suffixsep").strings.delimiter = " ";
+ }
+ romanesque = name.family.match(CSL.ROMANESQUE_REGEXP);
+ if (!romanesque) {
+ sequence = [["empty", "empty", "empty"], ["non-dropping-particle", "family"], ["given"], []];
+ } else if (name["static-ordering"]) { // entry likes sort order
+ sequence = [["empty", "space", "space"], ["non-dropping-particle", "family"], ["given"], []];
+ } else if (state.tmp.sort_key_flag) {
+ if (state.opt["demote-non-dropping-particle"] === "never") {
+ sequence = [["suffixsep", "sortsep", "space"], ["non-dropping-particle", "family", "dropping-particle"], ["given"], ["suffix"]];
+ } else {
+ sequence = [["suffixsep", "sortsep", "space"], ["family"], ["given", "dropping-particle", "non-dropping-particle"], ["suffix"]];
+ }
+ } else if (token && (token.strings["name-as-sort-order"] === "all" || (token.strings["name-as-sort-order"] === "first" && seg === "start"))) {
+ if (["always", "display-and-sort"].indexOf(state.opt["demote-non-dropping-particle"]) > -1) {
+ sequence = [["sortsep", "sortsep", "space"], ["family"], ["given", "dropping-particle", "non-dropping-particle"], ["suffix"]];
+ } else {
+ sequence = [["sortsep", "sortsep", "space"], ["non-dropping-particle", "family"], ["given", "dropping-particle"], ["suffix"]];
+ }
+ } else { // plain vanilla
+ sequence = [["suffixsep", "space", "space"], ["given"], ["dropping-particle", "non-dropping-particle", "family"], ["suffix"]];
+ }
+ return sequence;
+};
+CSL.Util.Names.reinit = function (state, Item) {
+ state.tmp.value = [];
+ state.tmp.name_et_al_term = false;
+ state.tmp.name_et_al_decorations = false;
+ state.tmp.name_et_al_form = "long";
+ state.tmp.et_al_prefix = false;
+};
+CSL.Util.Names.getCommonTerm = function (state, namesets) {
+ var base_nameset, varnames, len, pos, short_namesets, nameset;
+ if (namesets.length < 2) {
+ return false;
+ }
+ base_nameset = namesets[0];
+ varnames = [];
+ if (varnames.indexOf(base_nameset.variable) === -1) {
+ varnames.push(base_nameset.variable);
+ }
+ short_namesets = namesets.slice(1);
+ len = short_namesets.length;
+ for (pos = 0; pos < len; pos += 1) {
+ nameset = short_namesets[pos];
+ if (!CSL.Util.Names.compareNamesets(base_nameset, nameset)) {
+ return false;
+ }
+ if (varnames.indexOf(nameset.variable) === -1) {
+ varnames.push(nameset.variable);
+ }
+ }
+ varnames.sort();
+ return varnames.join("");
+};
+CSL.Util.Names.compareNamesets = function (base_nameset, nameset) {
+ var name, pos, len, part, ppos, llen;
+ if (!base_nameset.names || !nameset.names || base_nameset.names.length !== nameset.names.length) {
+ return false;
+ }
+ len = nameset.names.length;
+ for (pos = 0; pos < len; pos += 1) {
+ name = nameset.names[pos];
+ llen = CSL.NAME_PARTS.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ part = CSL.NAME_PARTS[ppos];
+ if (!base_nameset.names[pos] || base_nameset.names[pos][part] !== name[part]) {
+ return false;
+ }
+ }
+ }
+ return true;
+};
+CSL.Util.Names.initializeWith = function (state, name, terminator) {
+ var namelist, l, i, n, m, extra, ret, s, c, pos, len, ppos, llen, llst, mx, lst;
+ if (!name) {
+ return "";
+ }
+ namelist = name;
+ if (state.opt["initialize-with-hyphen"] === false) {
+ namelist = namelist.replace(/\-/g, " ");
+ }
+ namelist = namelist.replace(/\./g, " ").replace(/\s*\-\s*/g, "-").replace(/\s+/g, " ");
+ namelist = namelist.split(/(\-|\s+)/);
+ l = namelist.length;
+ for (pos = 0; pos < l; pos += 2) {
+ n = namelist[pos];
+ m = n.match(CSL.NAME_INITIAL_REGEXP);
+ if (m && m[1] === m[1].toUpperCase()) {
+ extra = "";
+ if (m[2]) {
+ s = "";
+ llst = m[2].split("");
+ llen = llst.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ c = llst[ppos];
+ if (c === c.toUpperCase()) {
+ s += c;
+ } else {
+ break;
+ }
+ }
+ if (s.length < m[2].length) {
+ extra = s.toLocaleLowerCase();
+ }
+ }
+ namelist[pos] = m[1].toLocaleUpperCase() + extra;
+ if (pos < (namelist.length - 1)) {
+ if (namelist[(pos + 1)].indexOf("-") > -1) {
+ namelist[(pos + 1)] = terminator + namelist[(pos + 1)];
+ } else {
+ namelist[(pos + 1)] = terminator;
+ }
+ } else {
+ namelist.push(terminator);
+ }
+ } else if (n.match(CSL.ROMANESQUE_REGEXP)) {
+ namelist[pos] = " " + n;
+ }
+ }
+ ret = CSL.Util.Names.stripRight(namelist.join(""));
+ ret = ret.replace(/\s*\-\s*/g, "-").replace(/\s+/g, " ");
+ return ret;
+};
+CSL.Util.Names.stripRight = function (str) {
+ var end, pos, len;
+ end = 0;
+ len = str.length - 1;
+ for (pos = len; pos > -1; pos += -1) {
+ if (str[pos] !== " ") {
+ end = pos + 1;
+ break;
+ }
+ }
+ return str.slice(0, end);
+};
+CSL.Util.Names.initNameSlices = function (state) {
+ var len, pos;
+ state.tmp.names_cut = {
+ counts: [],
+ variable: {}
+ };
+ len = CSL.NAME_VARIABLES.length;
+ for (pos = 0; pos < len; pos += 1) {
+ state.tmp.names_cut.counts[CSL.NAME_VARIABLES[pos]] = 0;
+ }
+};
+CSL.Engine.prototype.parseName = function (name) {
+ var m, idx;
+ if (! name["non-dropping-particle"]) {
+ m = name.family.match(/^([ a-z]+\s+)/);
+ if (m) {
+ name.family = name.family.slice(m[1].length);
+ name["non-dropping-particle"] = m[1].replace(/\s+$/, "");
+ }
+ }
+ if (! name.suffix) {
+ m = name.given.match(/(\s*,!*\s*)/);
+ if (m) {
+ idx = name.given.indexOf(m[1]);
+ if (name.given.slice(idx, idx + m[1].length).replace(/\s*/g, "").length === 2) {
+ name["comma-suffix"] = true;
+ }
+ name.suffix = name.given.slice(idx + m[1].length);
+ name.given = name.given.slice(0, idx);
+ }
+ }
+ if (! name["dropping-particle"]) {
+ m = name.given.match(/^(\s+[ a-z]*[a-z])$/);
+ if (m) {
+ name.given = name.given.slice(0, m[1].length * -1);
+ name["dropping-particle"] = m[2].replace(/^\s+/, "");
+ }
+ }
+};
+CSL.Util.Dates = {};
+CSL.Util.Dates.year = {};
+CSL.Util.Dates.year["long"] = function (state, num) {
+ if (!num) {
+ if ("boolean" === typeof num) {
+ num = "";
+ } else {
+ num = 0;
+ }
+ }
+ return num.toString();
+};
+CSL.Util.Dates.year["short"] = function (state, num) {
+ num = num.toString();
+ if (num && num.length === 4) {
+ return num.substr(2);
+ }
+};
+CSL.Util.Dates.year.numeric = function (state, num) {
+ var m, pre;
+ num = "" + num;
+ m = num.match(/([0-9]*)$/);
+ if (m) {
+ pre = num.slice(0, m[1].length * -1);
+ num = m[1];
+ } else {
+ pre = num;
+ num = "";
+ }
+ while (num.length < 4) {
+ num = "0" + num;
+ }
+ return (pre + num);
+};
+CSL.Util.Dates.month = {};
+CSL.Util.Dates.month.numeric = function (state, num) {
+ var ret = num.toString();
+ return ret;
+};
+CSL.Util.Dates.month["numeric-leading-zeros"] = function (state, num) {
+ if (!num) {
+ num = 0;
+ }
+ num = num.toString();
+ while (num.length < 2) {
+ num = "0" + num;
+ }
+ return num.toString();
+};
+CSL.Util.Dates.month["long"] = function (state, num) {
+ num = num.toString();
+ while (num.length < 2) {
+ num = "0" + num;
+ }
+ num = "month-" + num;
+ return state.getTerm(num, "long", 0);
+};
+CSL.Util.Dates.month["short"] = function (state, num) {
+ num = num.toString();
+ while (num.length < 2) {
+ num = "0" + num;
+ }
+ num = "month-" + num;
+ return state.getTerm(num, "short", 0);
+};
+CSL.Util.Dates.day = {};
+CSL.Util.Dates.day.numeric = function (state, num) {
+ return num.toString();
+};
+CSL.Util.Dates.day["long"] = CSL.Util.Dates.day.numeric;
+CSL.Util.Dates.day["numeric-leading-zeros"] = function (state, num) {
+ if (!num) {
+ num = 0;
+ }
+ num = num.toString();
+ while (num.length < 2) {
+ num = "0" + num;
+ }
+ return num.toString();
+};
+CSL.Util.Dates.day.ordinal = function (state, num) {
+ return state.fun.ordinalizer(num);
+};
+CSL.Util.Sort = {};
+CSL.Util.Sort.strip_prepositions = function (str) {
+ var m;
+ if ("string" === typeof str) {
+ m = str.toLocaleLowerCase();
+ m = str.match(/^((a|an|the)\s+)/);
+ }
+ if (m) {
+ str = str.substr(m[1].length);
+ }
+ return str;
+};
+CSL.Util.substituteStart = function (state, target) {
+ var element_trace, display, bib_first, func, choose_start, if_start, nodetypes;
+ nodetypes = ["number", "date", "names"];
+ if (("text" === this.name && !this.postponed_macro) || nodetypes.indexOf(this.name) > -1) {
+ element_trace = function (state, Item, item) {
+ if (state.tmp.element_trace.value() === "author" || "names" === this.name) {
+ if (item && item["author-only"]) {
+ state.tmp.element_trace.push("do-not-suppress-me");
+ } else if (item && item["suppress-author"]) {
+ state.tmp.element_trace.push("suppress-me");
+ }
+ } else {
+ if (item && item["author-only"]) {
+ state.tmp.element_trace.push("suppress-me");
+ } else if (item && item["suppress-author"]) {
+ state.tmp.element_trace.push("do-not-suppress-me");
+ }
+ }
+ };
+ this.execs.push(element_trace);
+ }
+ display = this.strings.cls;
+ this.strings.cls = false;
+ if (state.build.render_nesting_level === 0) {
+ if (state.build.area === "bibliography" && state.bibliography.opt["second-field-align"]) {
+ bib_first = new CSL.Token("group", CSL.START);
+ bib_first.decorations = [["@display", "left-margin"]];
+ func = function (state, Item) {
+ if (!state.tmp.render_seen) {
+ state.output.startTag("bib_first", bib_first);
+ state.tmp.count_offset_characters = true;
+ state.output.calculate_offset = true;
+ }
+ };
+ bib_first.execs.push(func);
+ target.push(bib_first);
+ } else if (CSL.DISPLAY_CLASSES.indexOf(display) > -1) {
+ bib_first = new CSL.Token("group", CSL.START);
+ bib_first.decorations = [["@display", display]];
+ func = function (state, Item) {
+ state.output.startTag("bib_first", bib_first);
+ };
+ bib_first.execs.push(func);
+ target.push(bib_first);
+ }
+ state.build.cls = display;
+ }
+ state.build.render_nesting_level += 1;
+ if (state.build.substitute_level.value() === 1) {
+ choose_start = new CSL.Token("choose", CSL.START);
+ CSL.Node.choose.build.call(choose_start, state, target);
+ if_start = new CSL.Token("if", CSL.START);
+ func = function (state, Item) {
+ if (state.tmp.can_substitute.value()) {
+ return true;
+ }
+ return false;
+ };
+ if_start.tests.push(func);
+ if_start.evaluator = state.fun.match.any;
+ target.push(if_start);
+ }
+};
+CSL.Util.substituteEnd = function (state, target) {
+ var func, bib_first_end, bib_other, if_end, choose_end, toplevel, hasval, author_substitute, printing, str;
+ state.build.render_nesting_level += -1;
+ if (state.build.render_nesting_level === 0) {
+ if (state.build.cls) {
+ func = function (state, Item) {
+ state.output.endTag("bib_first");
+ state.tmp.count_offset_characters = false;
+ state.output.calculate_offset = false;
+ };
+ this.execs.push(func);
+ state.build.cls = false;
+ }
+ if (state.build.area === "bibliography" && state.bibliography.opt["second-field-align"]) {
+ bib_first_end = new CSL.Token("group", CSL.END);
+ func = function (state, Item) {
+ if (!state.tmp.render_seen) {
+ state.output.endTag(); // closes bib_first
+ state.tmp.count_offset_characters = false;
+ state.output.calculate_offset = false;
+ }
+ };
+ bib_first_end.execs.push(func);
+ target.push(bib_first_end);
+ bib_other = new CSL.Token("group", CSL.START);
+ bib_other.decorations = [["@display", "right-inline"]];
+ func = function (state, Item) {
+ if (!state.tmp.render_seen) {
+ state.tmp.render_seen = true;
+ state.output.startTag("bib_other", bib_other);
+ }
+ };
+ bib_other.execs.push(func);
+ target.push(bib_other);
+ }
+ }
+ if (state.build.substitute_level.value() === 1) {
+ if_end = new CSL.Token("if", CSL.END);
+ target.push(if_end);
+ choose_end = new CSL.Token("choose", CSL.END);
+ CSL.Node.choose.build.call(choose_end, state, target);
+ }
+ toplevel = "names" === this.name && state.build.substitute_level.value() === 0;
+ hasval = "string" === typeof state[state.build.area].opt["subsequent-author-substitute"];
+ if (toplevel && hasval) {
+ author_substitute = new CSL.Token("text", CSL.SINGLETON);
+ func = function (state, Item) {
+ printing = !state.tmp.suppress_decorations;
+ if (printing) {
+ if (!state.tmp.rendered_name) {
+ state.tmp.rendered_name = state.output.string(state, state.tmp.name_node.blobs, false);
+ if (state.tmp.rendered_name) {
+ if (state.tmp.rendered_name === state.tmp.last_rendered_name) {
+ str = new CSL.Blob(false, state[state.tmp.area].opt["subsequent-author-substitute"]);
+ state.tmp.name_node.blobs = [str];
+ }
+ state.tmp.last_rendered_name = state.tmp.rendered_name;
+ }
+ }
+ }
+ };
+ author_substitute.execs.push(func);
+ target.push(author_substitute);
+ }
+ if (("text" === this.name && !this.postponed_macro) || ["number", "date", "names"].indexOf(this.name) > -1) {
+ func = function (state, Item) {
+ state.tmp.element_trace.pop();
+ };
+ this.execs.push(func);
+ }
+};
+CSL.Util.LongOrdinalizer = function () {};
+CSL.Util.LongOrdinalizer.prototype.init = function (state) {
+ this.state = state;
+ this.names = {};
+ for (var i = 1; i < 10; i += 1) {
+ this.names[("" + i)] = state.getTerm(("long-ordinal-0" + i));
+ }
+ this.names["10"] = state.getTerm("long-ordinal-10");
+};
+CSL.Util.LongOrdinalizer.prototype.format = function (num) {
+ var ret = this.names[("" + num)];
+ if (!ret) {
+ ret = this.state.fun.ordinalizer.format(num);
+ }
+ return ret;
+};
+CSL.Util.Ordinalizer = function () {};
+CSL.Util.Ordinalizer.prototype.init = function (state) {
+ this.suffixes = [];
+ for (var i = 1; i < 5; i += 1) {
+ this.suffixes.push(state.getTerm(("ordinal-0" + i)));
+ }
+};
+CSL.Util.Ordinalizer.prototype.format = function (num) {
+ var str;
+ num = parseInt(num, 10);
+ str = num.toString();
+ if ((num / 10) % 10 === 1) {
+ str += this.suffixes[3];
+ } else if (num % 10 === 1) {
+ str += this.suffixes[0];
+ } else if (num % 10 === 2) {
+ str += this.suffixes[1];
+ } else if (num % 10 === 3) {
+ str += this.suffixes[2];
+ } else {
+ str += this.suffixes[3];
+ }
+ return str;
+};
+CSL.Util.Romanizer = function () {};
+CSL.Util.Romanizer.prototype.format = function (num) {
+ var ret, pos, n, numstr, len;
+ ret = "";
+ if (num < 6000) {
+ numstr = num.toString().split("");
+ numstr.reverse();
+ pos = 0;
+ n = 0;
+ len = numstr.length;
+ for (pos = 0; pos < len; pos += 1) {
+ n = parseInt(numstr[pos], 10);
+ ret = CSL.ROMAN_NUMERALS[pos][n] + ret;
+ }
+ }
+ return ret;
+};
+CSL.Util.Suffixator = function (slist) {
+ if (!slist) {
+ slist = CSL.SUFFIX_CHARS;
+ }
+ this.slist = slist.split(",");
+};
+CSL.Util.Suffixator.prototype.format = function (num) {
+ var suffixes = this.get_suffixes(num);
+ return suffixes[(suffixes.length - 1)];
+};
+CSL.Util.Suffixator.prototype.get_suffixes = function (num) {
+ var suffixes, digits, chrs, pos, len, llen, ppos;
+ num = parseInt(num, 10);
+ suffixes = [];
+ for (pos = 0; pos <= num; pos += 1) {
+ if (!pos) {
+ suffixes.push([0]);
+ } else {
+ suffixes.push(this.incrementArray(suffixes[(suffixes.length - 1)], this.slist));
+ }
+ }
+ len = suffixes.length;
+ for (pos = 0; pos < len; pos += 1) {
+ digits = suffixes[pos];
+ chrs = "";
+ llen = digits.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ chrs = chrs + this.slist[digits[ppos]];
+ }
+ suffixes[pos] = chrs;
+ }
+ return suffixes;
+};
+CSL.Util.Suffixator.prototype.incrementArray = function (array) {
+ var incremented, newdigit, i, pos, len, ppos, llen;
+ array = array.slice();
+ incremented = false;
+ len = array.length - 1;
+ for (pos = len; pos > -1; pos += -1) {
+ if (array[pos] < (this.slist.length - 1)) {
+ array[pos] += 1;
+ for (ppos = (pos + 1), llen = array.length; ppos < llen; ppos += 1) {
+ array[ppos] = 0;
+ }
+ incremented = true;
+ break;
+ }
+ }
+ if (!incremented) {
+ len = array.length;
+ for (pos = 0; pos < len; pos += 1) {
+ array[pos] = 0;
+ }
+ newdigit = [0];
+ array = newdigit.concat(array);
+ }
+ return array;
+};
+CSL.Util.PageRangeMangler = {};
+CSL.Util.PageRangeMangler.getFunction = function (state) {
+ var rangerex, pos, len, stringify, listify, expand, minimize, minimize_internal, chicago, lst, m, b, e, ret, begin, end, ret_func, ppos, llen;
+ rangerex = /([a-zA-Z]*)([0-9]+)\s*-\s*([a-zA-Z]*)([0-9]+)/;
+ stringify = function (lst) {
+ len = lst.length;
+ for (pos = 1; pos < len; pos += 2) {
+ if ("object" === typeof lst[pos]) {
+ lst[pos] = lst[pos].join("");
+ }
+ }
+ return lst.join("");
+ };
+ listify = function (str) {
+ var m, lst, ret;
+ m = str.match(/([a-zA-Z]*[0-9]+\s*-\s*[a-zA-Z]*[0-9]+)/g);
+ lst = str.split(/[a-zA-Z]*[0-9]+\s*-\s*[a-zA-Z]*[0-9]+/);
+ if (lst.length === 0) {
+ ret = m;
+ } else {
+ ret = [lst[0]];
+ for (pos = 1, len = lst.length; pos < len; pos += 1) {
+ ret.push(m[pos - 1]);
+ ret.push(lst[pos]);
+ }
+ }
+ return ret;
+ };
+ expand = function (str) {
+ str = "" + str;
+ lst = listify(str);
+ len = lst.length;
+ for (pos = 1; pos < len; pos += 2) {
+ m = lst[pos].match(rangerex);
+ if (m) {
+ if (!m[3] || m[1] === m[3]) {
+ if (m[4].length < m[2].length) {
+ m[4] = m[2].slice(0, (m[2].length - m[4].length)) + m[4];
+ }
+ if (parseInt(m[2], 10) < parseInt(m[4], 10)) {
+ m[3] = "-" + m[1];
+ lst[pos] = m.slice(1);
+ }
+ }
+ }
+ }
+ return lst;
+ };
+ minimize = function (lst) {
+ len = lst.length;
+ for (pos = 1; pos < len; pos += 2) {
+ lst[pos][3] = minimize_internal(lst[pos][1], lst[pos][3]);
+ if (lst[pos][2].slice(1) === lst[pos][0]) {
+ lst[pos][2] = "-";
+ }
+ }
+ return stringify(lst);
+ };
+ minimize_internal = function (begin, end) {
+ b = ("" + begin).split("");
+ e = ("" + end).split("");
+ ret = e.slice();
+ ret.reverse();
+ if (b.length === e.length) {
+ llen = b.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ if (b[ppos] === e[ppos]) {
+ ret.pop();
+ } else {
+ break;
+ }
+ }
+ }
+ ret.reverse();
+ return ret.join("");
+ };
+ chicago = function (lst) {
+ len = lst.length;
+ for (pos = 1; pos < len; pos += 2) {
+ if ("object" === typeof lst[pos]) {
+ m = lst[pos];
+ begin = parseInt(m[1], 10);
+ end = parseInt(m[3], 10);
+ if (begin > 100 && begin % 100 && parseInt((begin / 100), 10) === parseInt((end / 100), 10)) {
+ m[3] = "" + (end % 100);
+ } else if (begin >= 10000) {
+ m[3] = "" + (end % 1000);
+ }
+ }
+ if (m[2].slice(1) === m[0]) {
+ m[2] = "-";
+ }
+ }
+ return stringify(lst);
+ };
+ if (!state.opt["page-range-format"]) {
+ ret_func = function (str) {
+ return str;
+ };
+ } else if (state.opt["page-range-format"] === "expanded") {
+ ret_func = function (str) {
+ var lst = expand(str);
+ return stringify(lst);
+ };
+ } else if (state.opt["page-range-format"] === "minimal") {
+ ret_func = function (str) {
+ var lst = expand(str);
+ return minimize(lst);
+ };
+ } else if (state.opt["page-range-format"] === "chicago") {
+ ret_func = function (str) {
+ var lst = expand(str);
+ return chicago(lst);
+ };
+ }
+ return ret_func;
+};
+CSL.Util.FlipFlopper = function (state) {
+ var tagdefs, pos, len, p, entry, allTags, ret, def, esc, makeHashes, closeTags, flipTags, openToClose, openToDecorations, okReverse, hashes, allTagsLst, lst;
+ this.state = state;
+ this.blob = false;
+ tagdefs = [
+ ["<i>", "</i>", "italics", "@font-style", ["italic", "normal"], true],
+ ["<b>", "</b>", "bold", "@font-weight", ["bold", "normal"], true],
+ ["<sup>", "</sup>", "superscript", "@vertical-align", ["sup", "sup"], true],
+ ["<sub>", "</sub>", "subscript", "@vertical-align", ["sub", "sub"], true],
+ ["<sc>", "</sc>", "smallcaps", "@font-variant", ["small-caps", "small-caps"], true],
+ ["<span class=\"nocase\">", "</span>", "passthrough", "@passthrough", ["true", "true"], true],
+ ["<span class=\"nodecor\">", "</span>", "passthrough", "@passthrough", ["true", "true"], true],
+ ['"', '"', "quotes", "@quotes", ["true", "inner"], "'"],
+ [" '", "'", "quotes", "@quotes", ["inner", "true"], '"']
+ ];
+ for (pos = 0; pos < 2; pos += 1) {
+ p = ["-", "-inner-"][pos];
+ entry = [];
+ entry.push(state.getTerm(("open" + p + "quote")));
+ entry.push(state.getTerm(("close" + p + "quote")));
+ entry.push(("quote" + "s"));
+ entry.push(("@" + "quote" + "s"));
+ if ("-" === p) {
+ entry.push(["true", "inner"]);
+ } else {
+ entry.push(["inner", "true"]);
+ }
+ entry.push(true);
+ tagdefs.push(entry);
+ }
+ allTags = function (tagdefs) {
+ ret = [];
+ len = tagdefs.length;
+ for (pos = 0; pos < len; pos += 1) {
+ def = tagdefs[pos];
+ if (ret.indexOf(def[0]) === -1) {
+ esc = "";
+ if (["(", ")", "[", "]"].indexOf(def[0]) > -1) {
+ esc = "\\";
+ }
+ ret.push(esc + def[0]);
+ }
+ if (ret.indexOf(def[1]) === -1) {
+ esc = "";
+ if (["(", ")", "[", "]"].indexOf(def[1]) > -1) {
+ esc = "\\";
+ }
+ ret.push(esc + def[1]);
+ }
+ }
+ return ret;
+ };
+ allTagsLst = allTags(tagdefs);
+ lst = [];
+ for (pos = 0, len = allTagsLst.length; pos < len; pos += 1) {
+ if (allTagsLst[pos]) {
+ lst.push(allTagsLst[pos]);
+ }
+ }
+ allTagsLst = lst.slice();
+ this.allTagsRexMatch = new RegExp("(" + allTagsLst.join("|") + ")", "g");
+ this.allTagsRexSplit = new RegExp("(?:" + allTagsLst.join("|") + ")");
+ makeHashes = function (tagdefs) {
+ closeTags = {};
+ flipTags = {};
+ openToClose = {};
+ openToDecorations = {};
+ okReverse = {};
+ len = tagdefs.length;
+ for (pos = 0; pos < len; pos += 1) {
+ closeTags[tagdefs[pos][1]] = true;
+ flipTags[tagdefs[pos][1]] = tagdefs[pos][5];
+ openToClose[tagdefs[pos][0]] = tagdefs[pos][1];
+ openToDecorations[tagdefs[pos][0]] = [tagdefs[pos][3], tagdefs[pos][4]];
+ okReverse[tagdefs[pos][3]] = [tagdefs[pos][3], [tagdefs[pos][4][1], tagdefs[pos][1]]];
+ }
+ return [closeTags, flipTags, openToClose, openToDecorations, okReverse];
+ };
+ hashes = makeHashes(tagdefs);
+ this.closeTagsHash = hashes[0];
+ this.flipTagsHash = hashes[1];
+ this.openToCloseHash = hashes[2];
+ this.openToDecorations = hashes[3];
+ this.okReverseHash = hashes[4];
+};
+CSL.Util.FlipFlopper.prototype.init = function (str, blob) {
+ if (!blob) {
+ this.strs = this.getSplitStrings(str);
+ this.blob = new CSL.Blob();
+ } else {
+ this.blob = blob;
+ this.strs = this.getSplitStrings(this.blob.blobs);
+ this.blob.blobs = [];
+ }
+ this.blobstack = new CSL.Stack(this.blob);
+};
+CSL.Util.FlipFlopper.prototype.getSplitStrings = function (str) {
+ var strs, pos, len, newstr, head, tail, expected_closers, expected_openers, expected_flips, tagstack, badTagStack, posA, sameAsOpen, openRev, flipRev, tag, ibeenrunned, posB, wanted_closer, posC, sep, resplice, params, lenA, lenB, lenC, badTagPos, mx, myret;
+ mx = str.match(this.allTagsRexMatch);
+ strs = str.split(this.allTagsRexSplit);
+ myret = [strs[0]];
+ for (pos = 1, len = strs.length; pos < len; pos += 1) {
+ myret.push(mx[pos - 1]);
+ myret.push(strs[pos]);
+ }
+ strs = myret.slice();
+ len = strs.length - 2;
+ for (pos = len; pos > 0; pos += -2) {
+ if (strs[(pos - 1)].slice((strs[(pos - 1)].length - 1)) === "\\") {
+ newstr = strs[(pos - 1)].slice(0, (strs[(pos - 1)].length - 1)) + strs[pos] + strs[(pos + 1)];
+ head = strs.slice(0, (pos - 1));
+ tail = strs.slice((pos + 2));
+ head.push(newstr);
+ strs = head.concat(tail);
+ }
+ }
+ expected_closers = [];
+ expected_openers = [];
+ expected_flips = [];
+ tagstack = [];
+ badTagStack = [];
+ lenA = strs.length - 1;
+ for (posA = 1; posA < lenA; posA += 2) {
+ tag = strs[posA];
+ if (this.closeTagsHash[tag]) {
+ expected_closers.reverse();
+ sameAsOpen = this.openToCloseHash[tag];
+ openRev = expected_closers.indexOf(tag);
+ flipRev = expected_flips.indexOf(tag);
+ expected_closers.reverse();
+ if (!sameAsOpen || (openRev > -1 && (openRev < flipRev || flipRev === -1))) {
+ ibeenrunned = false;
+ lenB = expected_closers.length - 1;
+ for (posB = lenB; posB > -1; posB += -1) {
+ ibeenrunned = true;
+ wanted_closer = expected_closers[posB];
+ if (tag === wanted_closer) {
+ expected_closers.pop();
+ expected_openers.pop();
+ expected_flips.pop();
+ tagstack.pop();
+ break;
+ }
+ badTagStack.push(posA);
+ }
+ if (!ibeenrunned) {
+ badTagStack.push(posA);
+ }
+ continue;
+ }
+ }
+ if (this.openToCloseHash[tag]) {
+ expected_closers.push(this.openToCloseHash[tag]);
+ expected_openers.push(tag);
+ expected_flips.push(this.flipTagsHash[tag]);
+ tagstack.push(posA);
+ }
+ }
+ lenC = expected_closers.length - 1;
+ for (posC = lenC; posC > -1; posC += -1) {
+ expected_closers.pop();
+ expected_flips.pop();
+ expected_openers.pop();
+ badTagStack.push(tagstack.pop());
+ }
+ badTagStack.sort(
+ function (a, b) {
+ if (a < b) {
+ return 1;
+ } else if (a > b) {
+ return -1;
+ }
+ return 0;
+ }
+ );
+ len = badTagStack.length;
+ for (pos = 0; pos < len; pos += 1) {
+ badTagPos = badTagStack[pos];
+ head = strs.slice(0, (badTagPos - 1));
+ tail = strs.slice((badTagPos + 2));
+ sep = strs[badTagPos];
+ if (sep.length && sep[0] !== "<" && this.openToDecorations[sep]) {
+ params = this.openToDecorations[sep];
+ sep = this.state.fun.decorate[params[0]][params[1][0]](this.state);
+ }
+ resplice = strs[(badTagPos - 1)] + sep + strs[(badTagPos + 1)];
+ head.push(resplice);
+ strs = head.concat(tail);
+ }
+ len = strs.length;
+ for (pos = 0; pos < len; pos += 2) {
+ strs[pos] = strs[pos].replace("'", this.state.getTerm("close-inner-quote"), "g");
+ strs[pos] = CSL.Output.Formats[this.state.opt.mode].text_escape(strs[pos]);
+ }
+ return strs;
+};
+CSL.Util.FlipFlopper.prototype.processTags = function () {
+ var expected_closers, expected_openers, expected_flips, expected_rendering, str, posA, tag, prestr, newblob, blob, sameAsOpen, openRev, flipRev, posB, wanted_closer, newblobnest, param, fulldecor, level, decor, lenA, lenB, posC, lenC;
+ expected_closers = [];
+ expected_openers = [];
+ expected_flips = [];
+ expected_rendering = [];
+ str = "";
+ if (this.strs.length === 1) {
+ this.blob.blobs = this.strs[0];
+ } else if (this.strs.length > 2) {
+ lenA = (this.strs.length - 1);
+ for (posA = 1; posA < lenA; posA += 2) {
+ tag = this.strs[posA];
+ prestr = this.strs[(posA - 1)];
+ newblob = new CSL.Blob(false, prestr);
+ blob = this.blobstack.value();
+ blob.push(newblob);
+ if (this.closeTagsHash[tag]) {
+ expected_closers.reverse();
+ sameAsOpen = this.openToCloseHash[tag];
+ openRev = expected_closers.indexOf(tag);
+ flipRev = expected_flips.indexOf(tag);
+ expected_closers.reverse();
+ if (!sameAsOpen || (openRev > -1 && (openRev < flipRev || flipRev === -1))) {
+ lenB = expected_closers.length;
+ for (posB = lenB; posB > -1; posB += -1) {
+ wanted_closer = expected_closers[posB];
+ if (tag === wanted_closer) {
+ expected_closers.pop();
+ expected_openers.pop();
+ expected_flips.pop();
+ expected_rendering.pop();
+ this.blobstack.pop();
+ break;
+ }
+ }
+ continue;
+ }
+ }
+ if (this.openToCloseHash[tag]) {
+ expected_closers.push(this.openToCloseHash[tag]);
+ expected_openers.push(tag);
+ expected_flips.push(this.flipTagsHash[tag]);
+ blob = this.blobstack.value();
+ newblobnest = new CSL.Blob();
+ blob.push(newblobnest);
+ param = this.addFlipFlop(newblobnest, this.openToDecorations[tag]);
+ if (tag === "<span class=\"nodecor\">") {
+ fulldecor = this.state[this.state.tmp.area].opt.topdecor.concat(this.blob.alldecor).concat([[["@quotes", "inner"]]]);
+ lenB = fulldecor.length;
+ for (posB = 0; posB < lenB; posB += 1) {
+ level = fulldecor[posB];
+ lenC = level.length;
+ for (posC = 0; posC < lenC; posC += 1) {
+ decor = level[posC];
+ if (["@font-style", "@font-weight", "@font-variant"].indexOf(decor[0]) > -1) {
+ param = this.addFlipFlop(newblobnest, this.okReverseHash[decor[0]]);
+ }
+ }
+ }
+ }
+ expected_rendering.push(this.state.fun.decorate[param[0]][param[1]](this.state));
+ this.blobstack.push(newblobnest);
+ }
+ }
+ if (this.strs.length > 2) {
+ str = this.strs[(this.strs.length - 1)];
+ blob = this.blobstack.value();
+ newblob = new CSL.Blob(false, str);
+ blob.push(newblob);
+ }
+ }
+ return this.blob;
+};
+CSL.Util.FlipFlopper.prototype.addFlipFlop = function (blob, fun) {
+ var posA, posB, fulldecor, lenA, decorations, breakme, decor, posC, newdecor, lenC;
+ posB = 0;
+ fulldecor = this.state[this.state.tmp.area].opt.topdecor.concat(blob.alldecor).concat([[["@quotes", "inner"]]]);
+ lenA = fulldecor.length;
+ for (posA = 0; posA < lenA; posA += 1) {
+ decorations = fulldecor[posA];
+ breakme = false;
+ lenC = decorations.length - 1;
+ for (posC = lenC; posC > -1; posC += -1) {
+ decor = decorations[posC];
+ if (decor[0] === fun[0]) {
+ if (decor[1] === fun[1][0]) {
+ posB = 1;
+ }
+ breakme = true;
+ break;
+ }
+ }
+ if (breakme) {
+ break;
+ }
+ }
+ newdecor = [fun[0], fun[1][posB]];
+ blob.decorations.reverse();
+ blob.decorations.push(newdecor);
+ blob.decorations.reverse();
+ return newdecor;
+};
+CSL.Output.Formatters = {};
+CSL.Output.Formatters.strip_periods = function (state, string) {
+ return string.replace(/\./g, " ").replace(/\s*$/g, "").replace(/\s+/g, " ");
+};
+CSL.Output.Formatters.passthrough = function (state, string) {
+ return string;
+};
+CSL.Output.Formatters.lowercase = function (state, string) {
+ var str = CSL.Output.Formatters.doppelString(string, CSL.TAG_USEALL);
+ str.string = str.string.toLowerCase();
+ return CSL.Output.Formatters.undoppelString(str);
+};
+CSL.Output.Formatters.uppercase = function (state, string) {
+ var str = CSL.Output.Formatters.doppelString(string, CSL.TAG_USEALL);
+ str.string = str.string.toUpperCase();
+ return CSL.Output.Formatters.undoppelString(str);
+};
+CSL.Output.Formatters["capitalize-first"] = function (state, string) {
+ var str = CSL.Output.Formatters.doppelString(string, CSL.TAG_ESCAPE);
+ if (str.string.length) {
+ str.string = str.string.slice(0, 1).toUpperCase() + str.string.substr(1);
+ return CSL.Output.Formatters.undoppelString(str);
+ } else {
+ return "";
+ }
+};
+CSL.Output.Formatters.sentence = function (state, string) {
+ var str = CSL.Output.Formatters.doppelString(string, CSL.TAG_ESCAPE);
+ str.string = str.string[0].toUpperCase() + str.string.substr(1).toLowerCase();
+ return CSL.Output.Formatters.undoppelString(str);
+};
+CSL.Output.Formatters["capitalize-all"] = function (state, string) {
+ var str, strings, len, pos;
+ str = CSL.Output.Formatters.doppelString(string, CSL.TAG_ESCAPE);
+ strings = str.string.split(" ");
+ len = strings.length;
+ for (pos = 0; pos < len; pos += 1) {
+ if (strings[pos].length > 1) {
+ strings[pos] = strings[pos][0].toUpperCase() + strings[pos].substr(1).toLowerCase();
+ } else if (strings[pos].length === 1) {
+ strings[pos] = strings[pos].toUpperCase();
+ }
+ }
+ str.string = strings.join(" ");
+ return CSL.Output.Formatters.undoppelString(str);
+};
+CSL.Output.Formatters.title = function (state, string) {
+ var str, words, isUpperCase, newString, lastWordIndex, previousWordIndex, upperCaseVariant, lowerCaseVariant, pos, skip, notfirst, notlast, firstword, aftercolon, len, idx, tmp, skipword, ppos, mx, lst, myret;
+ str = CSL.Output.Formatters.doppelString(string, CSL.TAG_ESCAPE);
+ if (!string) {
+ return "";
+ }
+ mx = str.string.match(/(\s+)/g);
+ lst = str.string.split(/\s+/);
+ myret = [lst[0]];
+ for (pos = 1, len = lst.length; pos < len; pos += 1) {
+ myret.push(mx[pos - 1]);
+ myret.push(lst[pos]);
+ }
+ words = myret.slice();
+ isUpperCase = str.string.toUpperCase() === string;
+ newString = "";
+ lastWordIndex = words.length - 1;
+ previousWordIndex = -1;
+ for (pos = 0; pos <= lastWordIndex; pos += 2) {
+ if (words[pos].length !== 0 && (words[pos].length !== 1 || !/\s+/.test(words[pos]))) {
+ upperCaseVariant = words[pos].toUpperCase();
+ lowerCaseVariant = words[pos].toLowerCase();
+ if (isUpperCase || words[pos] === lowerCaseVariant) {
+ skip = false;
+ len = CSL.SKIP_WORDS.length;
+ for (ppos = 0; ppos < len; ppos += 1) {
+ skipword = CSL.SKIP_WORDS[ppos];
+ idx = lowerCaseVariant.indexOf(skipword);
+ if (idx > -1) {
+ tmp = lowerCaseVariant.slice(0, idx, idx + lowerCaseVariant.slice(skipword.length));
+ if (!tmp.match(/[a-zA-Z]/)) {
+ skip = true;
+ }
+ }
+ }
+ notfirst = pos !== 0;
+ notlast = pos !== lastWordIndex;
+ firstword = previousWordIndex === -1;
+ aftercolon = words[previousWordIndex][(words[previousWordIndex].length - 1)] !== ":";
+ if (skip && notfirst && notlast && (firstword || aftercolon)) {
+ words[pos] = lowerCaseVariant;
+ } else {
+ words[pos] = upperCaseVariant[0] + lowerCaseVariant.substr(1);
+ }
+ }
+ previousWordIndex = pos;
+ }
+ }
+ str.string = words.join("");
+ return CSL.Output.Formatters.undoppelString(str);
+};
+CSL.Output.Formatters.doppelString = function (string, rex) {
+ var ret, pos, len;
+ ret = {};
+ ret.array = rex(string);
+ ret.string = "";
+ len = ret.array.length;
+ for (pos = 0; pos < len; pos += 2) {
+ ret.string += ret.array[pos];
+ }
+ return ret;
+};
+CSL.Output.Formatters.undoppelString = function (str) {
+ var ret, len, pos;
+ ret = "";
+ len = str.array.length;
+ for (pos = 0; pos < len; pos += 1) {
+ if ((pos % 2)) {
+ ret += str.array[pos];
+ } else {
+ ret += str.string.slice(0, str.array[pos].length);
+ str.string = str.string.slice(str.array[pos].length);
+ }
+ }
+ return ret;
+};
+CSL.Output.Formats = function () {};
+CSL.Output.Formats.prototype.html = {
+ "text_escape": function (text) {
+ return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
+ },
+ "bibstart": "<div class=\"csl-bib-body\">\n",
+ "bibend": "</div>",
+ "@font-style/italic": "<i>%%STRING%%</i>",
+ "@font-style/oblique": "<em>%%STRING%%</em>",
+ "@font-style/normal": "<span style=\"font-style:normal;\">%%STRING%%</span>",
+ "@font-variant/small-caps": "<span style=\"font-variant:small-caps;\">%%STRING%%</span>",
+ "@passthrough/true": CSL.Output.Formatters.passthrough,
+ "@font-variant/normal": false,
+ "@font-weight/bold": "<b>%%STRING%%</b>",
+ "@font-weight/normal": "<span style=\"font-weight:normal;\">%%STRING%%</span>",
+ "@font-weight/light": false,
+ "@text-decoration/none": "<span style=\"text-decoration:none;\">%%STRING%%</span>",
+ "@text-decoration/underline": "<span style=\"text-decoration:underline;\">%%STRING%%</span>",
+ "@vertical-align/sup": "<sup>%%STRING%%</sup>",
+ "@vertical-align/sub": "<sub>%%STRING%%</sub>",
+ "@vertical-align/baseline": "<span style=\"baseline\">%%STRING%%</span>",
+ "@strip-periods/true": CSL.Output.Formatters.strip_periods,
+ "@strip-periods/false": function (state, string) {
+ return string;
+ },
+ "@quotes/true": function (state, str) {
+ if ("undefined" === typeof str) {
+ return state.getTerm("open-quote");
+ }
+ return state.getTerm("open-quote") + str + state.getTerm("close-quote");
+ },
+ "@quotes/inner": function (state, str) {
+ if ("undefined" === typeof str) {
+ return "\u2019";
+ }
+ return state.getTerm("open-inner-quote") + str + state.getTerm("close-inner-quote");
+ },
+ "@bibliography/entry": function (state, str) {
+ return " <div class=\"csl-entry\">" + str + "</div>\n";
+ },
+ "@display/block": function (state, str) {
+ return "\n\n <div class=\"csl-block\">" + str + "</div>\n";
+ },
+ "@display/left-margin": function (state, str) {
+ return "\n <div class=\"csl-left-margin\">" + str + "</div>";
+ },
+ "@display/right-inline": function (state, str) {
+ return "<div class=\"csl-right-inline\">" + str + "</div>\n ";
+ },
+ "@display/indent": function (state, str) {
+ return "<div class=\"csl-indent\">" + str + "</div>\n ";
+ }
+};
+CSL.Output.Formats.prototype.text = {
+ "text_escape": function (text) {
+ return text;
+ },
+ "bibstart": "",
+ "bibend": "",
+ "@font-style/italic": false,
+ "@font-style/oblique": false,
+ "@font-style/normal": false,
+ "@font-variant/small-caps": false,
+ "@passthrough/true": CSL.Output.Formatters.passthrough,
+ "@font-variant/normal": false,
+ "@font-weight/bold": false,
+ "@font-weight/normal": false,
+ "@font-weight/light": false,
+ "@text-decoration/none": false,
+ "@text-decoration/underline": false,
+ "@vertical-align/baseline": false,
+ "@vertical-align/sup": false,
+ "@vertical-align/sub": false,
+ "@strip-periods/true": CSL.Output.Formatters.strip_periods,
+ "@strip-periods/false": function (state, string) {
+ return string;
+ },
+ "@quotes/true": function (state, str) {
+ if ("undefined" === typeof str) {
+ return state.getTerm("open-quote");
+ }
+ return state.getTerm("open-quote") + str + state.getTerm("close-quote");
+ },
+ "@quotes/inner": function (state, str) {
+ if ("undefined" === typeof str) {
+ return "\u2019";
+ }
+ return state.getTerm("open-inner-quote") + str + state.getTerm("close-inner-quote");
+ },
+ "@bibliography/entry": function (state, str) {
+ return str+"\n";
+ },
+ "@display/block": function (state, str) {
+ return "\n"+str;
+ },
+ "@display/left-margin": function (state, str) {
+ return str;
+ },
+ "@display/right-inline": function (state, str) {
+ return str;
+ },
+ "@display/indent": function (state, str) {
+ return "\n "+str;
+ }
+};
+CSL.Output.Formats.prototype.rtf = {
+ "text_escape": function (text) {
+ return text.replace("\\", "\\\\", "g").replace(/[\x7F-\uFFFF]/g,
+ function(aChar) { return "\\uc0\\u"+aChar.charCodeAt(0).toString()+" " })
+ .replace("\t", "\\tab ", "g");
+ },
+ "@font-style/italic": false,
+ "@font-style/oblique": false,
+ "@font-style/normal": false,
+ "@font-variant/small-caps": false,
+ "@passthrough/true": CSL.Output.Formatters.passthrough,
+ "@font-variant/normal": false,
+ "@font-weight/bold": false,
+ "@font-weight/normal": false,
+ "@font-weight/light": false,
+ "@text-decoration/none": false,
+ "@text-decoration/underline": false,
+ "@vertical-align/baseline": false,
+ "@vertical-align/sup": false,
+ "@vertical-align/sub": false,
+ "@strip-periods/true": CSL.Output.Formatters.strip_periods,
+ "@font-style/italic":"\\i %%STRING%%\\i0 ",
+ "@font-style/normal":false,
+ "@font-style/oblique":"\\i %%STRING%%\\i0 ",
+ "@font-variant/small-caps":"\\scaps %%STRING%%\\scaps0 ",
+ "@font-variant/normal":false,
+ "@font-weight/bold":"\\b %%STRING%%\\b0 ",
+ "@font-weight/normal":false,
+ "@font-weight/light":false,
+ "@text-decoration/none":false,
+ "@text-decoration/underline":"\\ul %%STRING%%\\ul0 ",
+ "@vertical-align/baseline":false,
+ "@vertical-align/sup":"\\super %%STRING%%\\nosupersub ",
+ "@vertical-align/sub":"\\sub %%STRING%%\\nosupersub ",
+ "@strip-periods/true": CSL.Output.Formatters.strip_periods,
+ "@strip-periods/false": function (state, string) {
+ return string;
+ },
+ "@quotes/true": function (state, str) {
+ if ("undefined" === typeof str) {
+ return CSL.Output.Formats.rtf.text_escape(state.getTerm("open-quote"));
+ }
+ return CSL.Output.Formats.rtf.text_escape(state.getTerm("open-quote")) + str + CSL.Output.Formats.rtf.text_escape(state.getTerm("close-quote"));
+ },
+ "@quotes/inner": function (state, str) {
+ if ("undefined" === typeof str) {
+ return CSL.Output.Formats.rtf.text_escape("\u2019");
+ }
+ return CSL.Output.Formats.rtf.text_escape(state.getTerm("open-inner-quote")) + str + CSL.Output.Formats.rtf.text_escape(state.getTerm("close-inner-quote"));
+ },
+ "bibstart":"{\\rtf ",
+ "bibend":"}",
+ "@display/block":"%%STRING%%\\line\r\n",
+ "@bibliography/entry": function(state,str){
+ var spacing = [];
+ for(var i=0; i<state.opt.entryspacing; i++) {
+ spacing.push("\\\r\n ");
+ }
+ return str+spacing.join("");
+ },
+ "@display/left-margin": function(state,str){
+ return str+"\\tab";
+ },
+ "@display/right-inline": function (state, str) {
+ return str+"\n";
+ },
+ "@display/indent": function (state, str) {
+ return "\n\\tab "+str;
+ }
+};
+CSL.Output.Formats = new CSL.Output.Formats();
+CSL.Registry = function (state) {
+ var pos, len, ret;
+ this.debug = false;
+ this.state = state;
+ this.registry = {};
+ this.reflist = [];
+ this.namereg = new CSL.Registry.NameReg(state);
+ this.citationreg = new CSL.Registry.CitationReg(state);
+ this.mylist = [];
+ this.myhash = {};
+ this.deletes = [];
+ this.inserts = [];
+ this.uncited = [];
+ this.refreshes = {};
+ this.akeys = {};
+ this.ambigcites = {};
+ this.sorter = new CSL.Registry.Comparifier(state, "bibliography_sort");
+ this.modes = CSL.getModes.call(this.state);
+ this.checkerator = new CSL.Checkerator();
+ this.getSortedIds = function () {
+ ret = [];
+ len = this.reflist.length;
+ for (pos = 0; pos < len; pos += 1) {
+ ret.push(this.reflist[pos].id);
+ }
+ return ret;
+ };
+};
+CSL.Registry.prototype.init = function (myitems, uncited_flag) {
+ var len, pos;
+ if (uncited_flag && this.mylist && this.mylist.length) {
+ this.uncited = myitems;
+ for (pos = 0, len = myitems.length; pos < len; pos += 1) {
+ if (!this.myhash[myitems[pos]]) {
+ this.mylist.push(myitems[pos]);
+ }
+ }
+ } else {
+ this.mylist = myitems;
+ }
+ this.myhash = {};
+ len = myitems.length;
+ for (pos = 0; pos < len; pos += 1) {
+ this.myhash[myitems[pos]] = true;
+ }
+ this.refreshes = {};
+ this.touched = {};
+};
+CSL.Registry.prototype.dodeletes = function (myhash) {
+ var otheritems, key, ambig, pos, len, items, kkey, mypos, id;
+ if ("string" === typeof myhash) {
+ myhash = {myhash: true};
+ }
+ for (key in this.registry) {
+ if (this.registry.hasOwnProperty(key) && !myhash[key]) {
+ if (this.registry[key].uncited) {
+ continue;
+ }
+ otheritems = this.namereg.delitems(key);
+ for (kkey in otheritems) {
+ if (otheritems.hasOwnProperty(kkey)) {
+ this.refreshes[kkey] = true;
+ }
+ }
+ ambig = this.registry[key].ambig;
+ mypos = this.ambigcites[ambig].indexOf(key);
+ if (mypos > -1) {
+ items = this.ambigcites[ambig].slice();
+ this.ambigcites[ambig] = items.slice(0, mypos).concat(items.slice([(mypos + 1)], items.length));
+ }
+ len = this.ambigcites[ambig].length;
+ for (pos = 0; pos < len; pos += 1) {
+ id = this.ambigcites[ambig][pos];
+ this.refreshes[id] = true;
+ }
+ delete this.registry[key];
+ }
+ }
+};
+CSL.Registry.prototype.doinserts = function (mylist) {
+ var len, pos, item, Item, akey, newitem, abase;
+ if ("string" === typeof mylist) {
+ mylist = [mylist];
+ }
+ len = mylist.length;
+ for (pos = 0; pos < len; pos += 1) {
+ item = mylist[pos];
+ if (!this.registry[item]) {
+ Item = this.state.sys.retrieveItem(item);
+ akey = CSL.getAmbiguousCite.call(this.state, Item);
+ this.akeys[akey] = true;
+ newitem = {
+ "id": item,
+ "seq": 0,
+ "offset": 0,
+ "sortkeys": false,
+ "ambig": false,
+ "disambig": false
+ };
+ this.registry[item] = newitem;
+ abase = CSL.getAmbigConfig.call(this.state);
+ this.registerAmbigToken(akey, item, abase);
+ this.touched[item] = true;
+ }
+ }
+};
+CSL.Registry.prototype.douncited = function () {
+ var pos, len;
+ for (pos = 0, len = this.mylist.length; pos < len; pos += 1) {
+ this.registry[this.mylist[pos]].uncited = false;
+ }
+ for (pos = 0, len = this.uncited.length; pos < len; pos += 1) {
+ this.registry[this.mylist[pos]].uncited = true;
+ }
+};
+CSL.Registry.prototype.rebuildlist = function () {
+ var count, len, pos, item;
+ this.reflist = [];
+ len = this.mylist.length;
+ for (pos = 0; pos < len; pos += 1) {
+ item = this.mylist[pos];
+ this.reflist.push(this.registry[item]);
+ this.registry[item].seq = (pos + 1);
+ }
+};
+CSL.Registry.prototype.dorefreshes = function () {
+ var key, regtoken, Item, old_akey, akey, abase;
+ for (key in this.refreshes) {
+ if (this.refreshes.hasOwnProperty(key)) {
+ regtoken = this.registry[key];
+ delete this.registry[key];
+ if (!regtoken) {
+ continue;
+ }
+ regtoken.disambig = undefined;
+ regtoken.sortkeys = undefined;
+ regtoken.ambig = undefined;
+ Item = this.state.sys.retrieveItem(key);
+ old_akey = akey;
+ akey = CSL.getAmbiguousCite.call(this.state, Item);
+ if (this.state.tmp.taintedItemIDs && this.state.opt.update_mode !== CSL.NUMERIC && old_akey !== akey) {
+ this.state.tmp.taintedItemIDs[key] = true;
+ }
+ this.registry[key] = regtoken;
+ abase = CSL.getAmbigConfig.call(this.state);
+ this.registerAmbigToken(akey, key, abase);
+ this.akeys[akey] = true;
+ this.touched[key] = true;
+ }
+ }
+};
+CSL.Registry.prototype.setdisambigs = function () {
+ var akey, leftovers, key, pos, len;
+ this.leftovers = [];
+ for (akey in this.akeys) {
+ if (this.akeys.hasOwnProperty(akey)) {
+ if (this.ambigcites[akey].length > 1) {
+ if (this.modes.length) {
+ leftovers = this.disambiguateCites(this.state, akey, this.modes);
+ } else {
+ leftovers = [];
+ len = this.ambigcites[akey].length;
+ for (pos = 0; pos < len; pos += 1) {
+ key = this.ambigcites[akey][pos];
+ leftovers.push(this.registry[key]);
+ }
+ }
+ if (leftovers && leftovers.length && this.state.opt.has_disambiguate) {
+ leftovers = this.disambiguateCites(this.state, akey, this.modes, leftovers);
+ }
+ if (leftovers.length > 1) {
+ this.leftovers.push(leftovers);
+ }
+ }
+ }
+ }
+ this.akeys = {};
+};
+CSL.Registry.prototype.renumber = function () {
+ var len, pos, item;
+ len = this.reflist.length;
+ for (pos = 0; pos < len; pos += 1) {
+ item = this.reflist[pos];
+ if (this.state.opt.update_mode === CSL.NUMERIC && this.state.tmp.taintedItemIDs && item.seq !== (pos + 1)) {
+ this.state.tmp.taintedItemIDs[item.id] = true;
+ }
+ item.seq = (pos + 1);
+ }
+};
+CSL.Registry.prototype.yearsuffix = function () {
+ var leftovers, pos, len, ppos, llen;
+ len = this.leftovers.length;
+ for (pos = 0; pos < len; pos += 1) {
+ leftovers = this.leftovers[pos];
+ if (leftovers && leftovers.length && this.state[this.state.tmp.area].opt["disambiguate-add-year-suffix"]) {
+ leftovers.sort(this.compareRegistryTokens);
+ llen = leftovers.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ this.registry[leftovers[("" + ppos)].id].disambig[2] = "" + ppos;
+ }
+ }
+ }
+};
+CSL.Registry.prototype.setsortkeys = function () {
+ var key;
+ for (key in this.touched) {
+ if (this.touched.hasOwnProperty(key)) {
+ this.registry[key].sortkeys = CSL.getSortKeys.call(this.state, this.state.sys.retrieveItem(key), "bibliography_sort");
+ }
+ }
+};
+CSL.Registry.prototype.sorttokens = function () {
+ this.reflist.sort(this.sorter.compareKeys);
+};
+CSL.Registry.Comparifier = function (state, keyset) {
+ var sort_directions, len, pos, compareKeys;
+ sort_directions = state[keyset].opt.sort_directions;
+ this.compareKeys = function (a, b) {
+ len = a.sortkeys.length;
+ for (pos = 0; pos < len; pos += 1) {
+ var cmp = 0;
+ if (a.sortkeys[pos] === b.sortkeys[pos]) {
+ cmp = 0;
+ } else if ("undefined" === typeof a.sortkeys[pos]) {
+ cmp = sort_directions[pos][1];
+ } else if ("undefined" === typeof b.sortkeys[pos]) {
+ cmp = sort_directions[pos][0];
+ } else {
+ cmp = a.sortkeys[pos].toLocaleLowerCase().localeCompare(b.sortkeys[pos].toLocaleLowerCase());
+ }
+ if (0 < cmp) {
+ return sort_directions[pos][1];
+ } else if (0 > cmp) {
+ return sort_directions[pos][0];
+ }
+ }
+ if (a.seq > b.seq) {
+ return 1;
+ } else if (a.seq < b.seq) {
+ return -1;
+ }
+ return 0;
+ };
+ compareKeys = this.compareKeys;
+ this.compareCompositeKeys = function (a, b) {
+ return compareKeys(a[1], b[1]);
+ };
+};
+CSL.Registry.prototype.compareRegistryTokens = function (a, b) {
+ if (a.seq > b.seq) {
+ return 1;
+ } else if (a.seq < b.seq) {
+ return -1;
+ }
+ return 0;
+};
+CSL.Registry.prototype.registerAmbigToken = function (akey, id, ambig_config) {
+ if (!this.ambigcites[akey]) {
+ this.ambigcites[akey] = [];
+ }
+ if (this.ambigcites[akey].indexOf(id) === -1) {
+ this.ambigcites[akey].push(id);
+ }
+ this.registry[id].ambig = akey;
+ var dome = false;
+ if (this.state.tmp.taintedItemIDs) {
+ this.registry[id].disambig = CSL.cloneAmbigConfig.call(this.state, ambig_config, this.registry[id].disambig, id);
+ } else {
+ this.registry[id].disambig = CSL.cloneAmbigConfig(ambig_config);
+ }
+};
+CSL.getSortKeys = function (Item, key_type) {
+ var area, strip_prepositions, use_parallels, len, pos;
+ area = this.tmp.area;
+ strip_prepositions = CSL.Util.Sort.strip_prepositions;
+ this.tmp.area = key_type;
+ this.tmp.disambig_override = true;
+ this.tmp.disambig_request = false;
+ use_parallels = this.parallel.use_parallels;
+ this.parallel.use_parallels = false;
+ this.tmp.suppress_decorations = true;
+ CSL.getCite.call(this, Item);
+ this.tmp.suppress_decorations = false;
+ this.parallel.use_parallels = use_parallels;
+ this.tmp.disambig_override = false;
+ len = this[key_type].keys.length;
+ for (pos = 0; pos < len; pos += 1) {
+ this[key_type].keys[pos] = strip_prepositions(this[key_type].keys[pos]);
+ }
+ this.tmp.area = area;
+ return this[key_type].keys;
+};
+CSL.Registry.NameReg = function (state) {
+ var pkey, ikey, skey, floor, ceiling, param, dagopt, gdropt, ret, pos, items, strip_periods, set_keys, evalname, delitems, addname, key;
+ this.state = state;
+ this.namereg = {};
+ this.nameind = {};
+ this.itemkeyreg = {};
+ strip_periods = function (str) {
+ if (!str) {
+ str = "";
+ }
+ return str.replace(".", " ").replace(/\s+/, " ");
+ };
+ set_keys = function (state, itemid, nameobj) {
+ pkey = strip_periods(nameobj.family);
+ skey = strip_periods(nameobj.given);
+ ikey = CSL.Util.Names.initializeWith(state, skey, "");
+ if (state[state.tmp.area].opt["givenname-disambiguation-rule"] === "by-cite") {
+ pkey = itemid + pkey;
+ }
+ };
+ evalname = function (item_id, nameobj, namenum, request_base, form, initials) {
+ var pos, len, items;
+ set_keys(this.state, item_id, nameobj);
+ if ("undefined" === typeof this.namereg[pkey] || "undefined" === typeof this.namereg[pkey].ikey[ikey]) {
+ return 2;
+ }
+ param = 2;
+ dagopt = state[state.tmp.area].opt["disambiguate-add-givenname"];
+ gdropt = state[state.tmp.area].opt["givenname-disambiguation-rule"];
+ if (gdropt === "by-cite") {
+ gdropt = "all-names";
+ }
+ if ("short" === form) {
+ param = 0;
+ } else if ("string" === typeof initials) {
+ param = 1;
+ }
+ if (param < request_base) {
+ param = request_base;
+ }
+ if (!dagopt) {
+ return param;
+ }
+ if ("string" === typeof gdropt && gdropt.slice(0, 12) === "primary-name" && namenum > 0) {
+ return param;
+ }
+ if (!gdropt || gdropt === "all-names" || gdropt === "primary-name") {
+ if (this.namereg[pkey].count > 1) {
+ param = 1;
+ }
+ if (this.namereg[pkey].ikey && this.namereg[pkey].ikey[ikey].count > 1) {
+ param = 2;
+ }
+ } else if (gdropt === "all-names-with-initials" || gdropt === "primary-name-with-initials") {
+ if (this.namereg[pkey].count > 1) {
+ param = 1;
+ }
+ }
+ if (param === 0) {
+ pos = this.namereg[pkey].ikey[ikey].items.indexOf(item_id);
+ items = this.namereg[pkey].ikey[ikey].items;
+ if (pos > -1) {
+ items = items.slice(0, pos).concat(items.slice(pos + 1));
+ }
+ for (pos = 0, len = items.length; pos < len; pos += 1) {
+ this.state.tmp.taintedItemIDs[items[pos]] = true;
+ }
+ pos = this.namereg[pkey].ikey[ikey].skey[skey].items.indexOf(item_id);
+ items = this.namereg[pkey].ikey[ikey].skey[skey].items;
+ if (pos > -1) {
+ items = items.slice(0, pos).concat(items.slice(pos + 1));
+ }
+ for (pos = 0, len = items.length; pos < len; pos += 1) {
+ this.state.tmp.taintedItemIDs[items[pos]] = true;
+ }
+ if (this.namereg[pkey].items.indexOf(item_id) === -1) {
+ this.namereg[pkey].items.push(item_id);
+ }
+ } else if (param === 1) {
+ pos = this.namereg[pkey].items.indexOf(item_id);
+ items = this.namereg[pkey].items;
+ if (pos > -1) {
+ items = items.slice(0, pos).concat(items.slice(pos + 1));
+ }
+ for (pos = 0, len = items.length; pos < len; pos += 1) {
+ this.state.tmp.taintedItemIDs[items[pos]] = true;
+ }
+ pos = this.namereg[pkey].ikey[ikey].skey[skey].items.indexOf(item_id);
+ items = this.namereg[pkey].ikey[ikey].skey[skey].items;
+ if (pos > -1) {
+ items = items.slice(0, pos).concat(items.slice(pos + 1));
+ }
+ for (pos = 0, len = items.length; pos < len; pos += 1) {
+ this.state.tmp.taintedItemIDs[items[pos]] = true;
+ }
+ if (this.namereg[pkey].ikey[ikey].items.indexOf(item_id) === -1) {
+ this.namereg[pkey].ikey[ikey].items.push(item_id);
+ }
+ } else if (param === 2) {
+ pos = this.namereg[pkey].items.indexOf(item_id);
+ items = this.namereg[pkey].items;
+ if (pos > -1) {
+ items = items.slice(0, pos).concat(items.slice(pos + 1));
+ }
+ for (pos = 0, len = items.length; pos < len; pos += 1) {
+ this.state.tmp.taintedItemIDs[items[pos]] = true;
+ }
+ pos = this.namereg[pkey].ikey[ikey].items.indexOf(item_id);
+ items = this.namereg[pkey].ikey[ikey].items;
+ if (pos > -1) {
+ items = items.slice(0, pos).concat(items.slice(pos + 1));
+ }
+ for (pos = 0, len = items.length; pos < len; pos += 1) {
+ this.state.tmp.taintedItemIDs[items[pos]] = true;
+ }
+ if (this.namereg[pkey].ikey[ikey].skey[skey].items.indexOf(item_id) === -1) {
+ this.namereg[pkey].ikey[ikey].skey[skey].items.push(item_id);
+ }
+ }
+ return param;
+ };
+ delitems = function (ids) {
+ var i, item, pos, len, posA, posB, id, fullkey, llen, ppos, otherid;
+ if ("string" === typeof ids) {
+ ids = [ids];
+ }
+ ret = {};
+ len = ids.length;
+ for (pos = 0; pos < len; pos += 1) {
+ id = ids[pos];
+ if (!this.nameind[id]) {
+ continue;
+ }
+ for (fullkey in this.nameind[id]) {
+ if (this.nameind[id].hasOwnProperty(fullkey)) {
+ key = fullkey.split("::");
+ pkey = key[0];
+ ikey = key[1];
+ skey = key[2];
+ posA = this.namereg[pkey].items.indexOf(posA);
+ items = this.namereg[pkey].items;
+ if (skey) {
+ posB = this.namereg[pkey].ikey[ikey].skey[skey].items.indexOf(id);
+ if (posB > -1) {
+ items = this.namereg[pkey].ikey[ikey].skey[skey].items.slice();
+ this.namereg[pkey].ikey[ikey].skey[skey].items = items.slice(0, posB).concat(items.slice([(posB + 1)], items.length));
+ }
+ if (this.namereg[pkey].ikey[ikey].skey[skey].items.length === 0) {
+ delete this.namereg[pkey].ikey[ikey].skey[skey];
+ this.namereg[pkey].ikey[ikey].count += -1;
+ if (this.namereg[pkey].ikey[ikey].count < 2) {
+ llen = this.namereg[pkey].ikey[ikey].items.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ otherid = this.namereg[pkey].ikey[ikey].items[ppos];
+ ret[otherid] = true;
+ }
+ }
+ }
+ }
+ if (ikey) {
+ posB = this.namereg[pkey].ikey[ikey].items.indexOf(id);
+ if (posB > -1) {
+ items = this.namereg[pkey].ikey[ikey].items.slice();
+ this.namereg[pkey].ikey[ikey].items = items.slice(0, posB).concat(items.slice([posB + 1], items.length));
+ }
+ if (this.namereg[pkey].ikey[ikey].items.length === 0) {
+ delete this.namereg[pkey].ikey[ikey];
+ this.namereg[pkey].count += -1;
+ if (this.namereg[pkey].count < 2) {
+ llen = this.namereg[pkey].items.length;
+ for (ppos = 0; ppos < llen; ppos += 1) {
+ otherid = this.namereg[pkey].items[ppos];
+ ret[otherid] = true;
+ }
+ }
+ }
+ }
+ if (pkey) {
+ posB = this.namereg[pkey].items.indexOf(id);
+ if (posB > -1) {
+ items = this.namereg[pkey].items.slice();
+ this.namereg[pkey].items = items.slice(0, posB).concat(items.slice([posB + 1], items.length));
+ }
+ if (this.namereg[pkey].items.length === 0) {
+ delete this.namereg[pkey];
+ }
+ }
+ delete this.nameind[id][fullkey];
+ }
+ }
+ }
+ return ret;
+ };
+ addname = function (item_id, nameobj, pos) {
+ set_keys(this.state, item_id, nameobj);
+ if (pkey) {
+ if ("undefined" === typeof this.namereg[pkey]) {
+ this.namereg[pkey] = {};
+ this.namereg[pkey].count = 0;
+ this.namereg[pkey].ikey = {};
+ this.namereg[pkey].items = [];
+ }
+ }
+ if (pkey && ikey) {
+ if ("undefined" === typeof this.namereg[pkey].ikey[ikey]) {
+ this.namereg[pkey].ikey[ikey] = {};
+ this.namereg[pkey].ikey[ikey].count = 0;
+ this.namereg[pkey].ikey[ikey].skey = {};
+ this.namereg[pkey].ikey[ikey].items = [];
+ this.namereg[pkey].count += 1;
+ }
+ }
+ if (pkey && ikey && skey) {
+ if ("undefined" === typeof this.namereg[pkey].ikey[ikey].skey[skey]) {
+ this.namereg[pkey].ikey[ikey].skey[skey] = {};
+ this.namereg[pkey].ikey[ikey].skey[skey].items = [];
+ this.namereg[pkey].ikey[ikey].count += 1;
+ }
+ }
+ if ("undefined" === typeof this.nameind[item_id]) {
+ this.nameind[item_id] = {};
+ }
+ if (pkey) {
+ this.nameind[item_id][pkey + "::" + ikey + "::" + skey] = true;
+ }
+ };
+ this.addname = addname;
+ this.delitems = delitems;
+ this.evalname = evalname;
+};
+var debug = false;
+CSL.Registry.prototype.disambiguateCites = function (state, akey, modes, candidate_list) {
+ var ambigs, reg_token, keypos, id_vals, a, base, token, pos, len, tokens, str, maxvals, minval, testpartner, otherstr, base_return, ret, id, key;
+ if (!candidate_list) {
+ ambigs = this.ambigcites[akey].slice();
+ this.ambigcites[akey] = [];
+ } else {
+ ambigs = [];
+ len = candidate_list.length;
+ for (pos = 0; pos < len; pos += 1) {
+ reg_token = candidate_list[pos];
+ ambigs.push(reg_token.id);
+ keypos = this.ambigcites[akey].indexOf(reg_token.id);
+ if (keypos > -1) {
+ this.ambigcites[akey] = this.ambigcites[akey].slice(0, keypos).concat(this.ambigcites[akey].slice((keypos + 1)));
+ }
+ }
+ }
+ id_vals = [];
+ len = ambigs.length;
+ for (pos = 0; pos < len; pos += 1) {
+ id_vals.push(ambigs[pos]);
+ }
+ tokens = state.retrieveItems(id_vals);
+ if (candidate_list && candidate_list.length) {
+ modes = ["disambiguate_true"].concat(modes);
+ }
+ CSL.initCheckerator.call(this.checkerator, tokens, modes);
+ this.checkerator.lastclashes = (ambigs.length - 1);
+ base = false;
+ this.checkerator.pos = 0;
+ str = CSL.getAmbiguousCite.call(state, tokens[0], base);
+ maxvals = CSL.getMaxVals.call(state);
+ minval = CSL.getMinVal.call(state);
+ base = CSL.getAmbigConfig.call(state);
+ while (CSL.runCheckerator.call(this.checkerator)) {
+ token = this.checkerator.tokens[this.checkerator.pos];
+ if (this.ambigcites[akey].indexOf(token.id) > -1) {
+ this.checkerator.pos += 1;
+ continue;
+ }
+ this.checkerator.candidate = token.id;
+ if (base === false) {
+ this.checkerator.mode = modes[0];
+ }
+ str = CSL.getAmbiguousCite.call(state, token, base);
+ maxvals = CSL.getMaxVals.call(state);
+ minval = CSL.getMinVal.call(state);
+ base = CSL.getAmbigConfig.call(state);
+ if (candidate_list && candidate_list.length) {
+ base.disambiguate = true;
+ }
+ CSL.setCheckeratorBase.call(this.checkerator, base);
+ CSL.setMaxVals.call(this.checkerator, maxvals);
+ CSL.setMinVal.call(this.checkerator, minval);
+ len = tokens.length;
+ for (pos = 0; pos < len; pos += 1) {
+ testpartner = tokens[pos];
+ if (token.id === testpartner.id) {
+ continue;
+ }
+ otherstr = CSL.getAmbiguousCite.call(state, testpartner, base);
+ if (CSL.checkCheckeratorForClash.call(this.checkerator, str, otherstr)) {
+ break;
+ }
+ }
+ if (CSL.evaluateCheckeratorClashes.call(this.checkerator)) {
+ base_return = CSL.decrementCheckeratorNames.call(this, state, base);
+ this.registerAmbigToken(akey, token.id, base_return);
+ this.checkerator.seen.push(token.id);
+ continue;
+ }
+ if (CSL.maxCheckeratorAmbigLevel.call(this.checkerator)) {
+ if (!state.citation.opt["disambiguate-add-year-suffix"]) {
+ this.checkerator.mode1_counts = false;
+ this.checkerator.maxed_out_bases[token.id] = CSL.cloneAmbigConfig(base);
+ } else {
+ }
+ this.checkerator.seen.push(token.id);
+ base = false;
+ continue;
+ }
+ CSL.incrementCheckeratorAmbigLevel.call(this.checkerator);
+ }
+ ret = [];
+ len = this.checkerator.ids.length;
+ for (pos = 0; pos < len; pos += 1) {
+ id = this.checkerator.ids[pos];
+ if (id) {
+ ret.push(this.registry[id]);
+ }
+ }
+ len = this.checkerator.maxed_out_bases.length;
+ for (key in this.checkerator.maxed_out_bases) {
+ if (this.checkerator.maxed_out_bases.hasOwnProperty(key)) {
+ this.registry[key].disambig = this.checkerator.maxed_out_bases[key];
+ }
+ }
+ return ret;
+};
+CSL.Checkerator = function () {};
+CSL.initCheckerator = function (tokens, modes) {
+ var len, pos;
+ this.tokens = tokens;
+ this.seen = [];
+ this.modes = modes;
+ this.mode = this.modes[0];
+ this.tokens_length = tokens.length;
+ this.pos = 0;
+ this.clashes = 0;
+ this.maxvals = false;
+ this.base = false;
+ this.ids = [];
+ this.maxed_out_bases = {};
+ len = tokens.length;
+ for (pos = 0; pos < len; pos += 1) {
+ this.ids.push(tokens[pos].id);
+ }
+ this.lastclashes = -1;
+ this.namepos = 0;
+ this.modepos = 0;
+ this.mode1_counts = false;
+};
+CSL.runCheckerator = function () {
+ var len, pos;
+ if (this.seen.length < this.tokens_length) {
+ return true;
+ }
+ return false;
+};
+CSL.setMaxVals = function (maxvals) {
+ this.maxvals = maxvals;
+};
+CSL.setMinVal = function (minval) {
+ this.minval = minval;
+};
+CSL.setCheckeratorBase = function (base) {
+ var pos, len;
+ this.base = base;
+ if (! this.mode1_counts) {
+ this.mode1_counts = [];
+ len = this.base.givens.length;
+ for (pos = 0; pos < len; pos += 1) {
+ this.mode1_counts.push(0);
+ }
+ }
+};
+CSL.setCheckeratorMode = function (mode) {
+ this.mode = mode;
+};
+CSL.checkCheckeratorForClash = function (str, otherstr) {
+ if (str === otherstr) {
+ if (this.mode === "names" || this.mode === "disambiguate_true") {
+ this.clashes += 1;
+ return true;
+ }
+ if (this.mode === "givens") {
+ this.clashes += 1;
+ }
+ return false;
+ }
+};
+CSL.evaluateCheckeratorClashes = function () {
+ var namepos, ret, old;
+ if (!this.maxvals.length) {
+ return false;
+ }
+ if (this.mode === "names" || this.mode === "disambiguate_true") {
+ if (this.clashes) {
+ this.lastclashes = this.clashes;
+ this.clashes = 0;
+ return false;
+ } else {
+ this.ids[this.pos] = false;
+ this.pos += 1;
+ this.lastclashes = this.clashes;
+ return true;
+ }
+ }
+ if (this.mode === "givens") {
+ ret = true;
+ namepos = this.mode1_counts[this.modepos];
+ if (this.clashes && this.clashes === this.lastclashes) {
+ if (this.mode1_defaults && namepos > 0) {
+ old = this.mode1_defaults[(namepos - 1)];
+ this.base.givens[this.modepos][(namepos - 1)] = old;
+ }
+ ret = false;
+ } else if (this.clashes) {
+ ret = false;
+ } else { // only non-clash should be possible
+ this.mode1_counts = false;
+ this.pos += 1;
+ ret = true;
+ }
+ this.lastclashes = this.clashes;
+ this.clashes = 0;
+ if (ret) {
+ this.ids[this.pos] = false;
+ }
+ return ret;
+ }
+};
+CSL.maxCheckeratorAmbigLevel = function () {
+ if (!this.maxvals.length) {
+ return true;
+ }
+ if (this.mode === "disambiguate_true") {
+ if (this.modes.indexOf("disambiguate_true") < (this.modes.length - 1)) {
+ this.mode = this.modes[(this.modes.indexOf("disambiguate_true") + 1)];
+ this.modepos = 0;
+ } else {
+ this.pos += 1;
+ return true;
+ }
+ }
+ if (this.mode === "names") {
+ if (this.modepos === (this.base.names.length - 1) && this.base.names[this.modepos] === this.maxvals[this.modepos]) {
+ if (this.modes.length === 2) {
+ this.mode = "givens";
+ this.mode1_counts[this.modepos] = 0;
+ this.modepos = 0;
+ } else {
+ this.pos += 1;
+ return true;
+ }
+ }
+ } else if (this.mode === "givens") {
+ if (this.modepos === (this.mode1_counts.length - 1) && this.mode1_counts[this.modepos] === (this.maxvals[this.modepos])) {
+ if (this.modes.length === 2) {
+ this.mode = "givens";
+ this.pos += 1;
+ } else {
+ this.pos += 1;
+ }
+ return true;
+ }
+ }
+ return false;
+};
+CSL.incrementCheckeratorAmbigLevel = function () {
+ var val;
+ if (this.mode === "names") {
+ val = this.base.names[this.modepos];
+ if (val < this.maxvals[this.modepos]) {
+ this.base.names[this.modepos] += 1;
+ } else if (this.modepos < (this.base.names.length - 1)) {
+ this.modepos += 1;
+ this.base.names[this.modepos] = 0;
+ }
+ }
+ if (this.mode === "givens") {
+ val = (this.mode1_counts[this.modepos]);
+ if (val < this.maxvals[this.modepos]) {
+ if (this.given_name_second_pass) {
+ this.given_name_second_pass = false;
+ this.mode1_counts[this.modepos] += 1;
+ this.base.givens[this.modepos][val] += 1;
+ } else {
+ this.mode1_defaults = this.base.givens[this.modepos].slice();
+ this.given_name_second_pass = true;
+ }
+ } else if (this.modepos < (this.base.givens.length - 1)) {
+ this.modepos += 1;
+ this.base.givens[this.modepos][0] += 1;
+ this.mode1_defaults = this.base.givens[this.modepos].slice();
+ } else {
+ this.mode = "names";
+ this.pos += 1;
+ }
+ }
+};
+CSL.decrementCheckeratorNames = function (state, base) {
+ var base_return, do_me, i, j, pos, len, ppos, llen;
+ base_return = CSL.cloneAmbigConfig(base);
+ do_me = false;
+ len = base_return.givens.length - 1;
+ for (pos = len; pos > -1; pos += -1) {
+ llen = base_return.givens[pos].length - 1;
+ for (ppos = llen; ppos > -1; ppos += -1) {
+ if (base_return.givens[pos][ppos] === 2) {
+ do_me = true;
+ }
+ }
+ }
+ if (do_me) {
+ len = base_return.givens.length - 1;
+ for (pos = len; pos > -1; pos += -1) {
+ llen = base_return.givens[pos].length - 1;
+ for (ppos = llen; ppos > -1; ppos += -1) {
+ if (base_return.givens[pos][ppos] === 2) {
+ i = -1;
+ break;
+ }
+ if (ppos < base_return.names[pos]) {
+ base_return.names[pos] += -1;
+ }
+ }
+ }
+ }
+ return base_return;
+};
+CSL.getAmbigConfig = function () {
+ var config, ret;
+ config = this.tmp.disambig_request;
+ if (!config) {
+ config = this.tmp.disambig_settings;
+ }
+ ret = CSL.cloneAmbigConfig(config);
+ return ret;
+};
+CSL.getMaxVals = function () {
+ return this.tmp.names_max.mystack.slice();
+};
+CSL.getMinVal = function () {
+ return this.tmp["et-al-min"];
+};
+CSL.getModes = function () {
+ var ret, dagopt, gdropt;
+ ret = [];
+ if (this[this.tmp.area].opt["disambiguate-add-names"]) {
+ ret.push("names");
+ }
+ dagopt = this[this.tmp.area].opt["disambiguate-add-givenname"];
+ gdropt = this[this.tmp.area].opt["givenname-disambiguation-rule"];
+ if (dagopt) {
+ if (!gdropt || ("string" === typeof gdropt && "primary-name" !== gdropt.slice(0, 12))) {
+ ret.push("givens");
+ }
+ }
+ return ret;
+};
+CSL.Registry.CitationReg = function (state) {
+ this.citationById = {};
+ this.citationByIndex = [];
+};
diff --git a/chrome/content/zotero/xpcom/csl.js b/chrome/content/zotero/xpcom/csl.js
@@ -1,2956 +0,0 @@
-/*
- ***** BEGIN LICENSE BLOCK *****
-
- Copyright © 2009 Center for History and New Media
- George Mason University, Fairfax, Virginia, USA
- http://zotero.org
-
- This file is part of Zotero.
-
- Zotero is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Zotero is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Zotero. If not, see <http://www.gnu.org/licenses/>.
-
- ***** END LICENSE BLOCK *****
-*/
-
-/*
- * CSL: a class for creating bibliographies from CSL files
- * this is abstracted as a separate class for the benefit of anyone who doesn't
- * want to use the Scholar data model, but does want to use CSL in JavaScript
- */
-Zotero.CSL = function(csl) {
- // "with ({});" needed to fix default namespace scope issue
- // See https://bugzilla.mozilla.org/show_bug.cgi?id=330572
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with ({});
-
- if(typeof csl != "xml") {
- this._csl = new XML(Zotero.CSL.Global.cleanXML(csl));
- } else {
- this._csl = csl;
- }
-
- // initialize CSL
- Zotero.CSL.Global.init();
-
- // load localizations
- this._terms = Zotero.CSL.Global.parseLocales(this._csl.terms);
-
- // load class and styleID
- this.styleID = this._csl.info.id.toString();
- this.class = this._csl["@class"].toString();
- Zotero.debug("CSL: style class is "+this.class);
-
- this.hasBibliography = (this._csl.bibliography.length() ? 1 : 0);
-}
-
-/*
- * Constants for citation positions
- */
-Zotero.CSL.POSITION_FIRST = 0;
-Zotero.CSL.POSITION_SUBSEQUENT = 1;
-Zotero.CSL.POSITION_IBID = 2;
-Zotero.CSL.POSITION_IBID_WITH_LOCATOR = 3;
-
-
-Zotero.CSL._dateVariables = {
- "issued":true,
- "accessed":true,
- "submitted":true
-}
-
-Zotero.CSL._namesVariables = {
- "editor":true,
- "translator":true,
- "recipient":true,
- "interviewer":true,
- "collection-editor":true,
- "container-author":true,
- "author":true
-}
-
-/*
- * Constants for name (used for disambiguate-add-givenname)
- */
-Zotero.CSL.NAME_USE_INITIAL = 1;
-Zotero.CSL.NAME_USE_FULL = 2;
-
-/*
- * generate an item set
- */
-Zotero.CSL.prototype.createItemSet = function(items) {
- return new Zotero.CSL.ItemSet(items, this);
-}
-
-/*
- * generate a citation object
- */
-Zotero.CSL.prototype.createCitation = function(citationItems) {
- return new Zotero.CSL.Citation(citationItems, this);
-}
-
-/*
- * create a citation (in-text or footnote)
- */
-Zotero.CSL._firstNameRegexp = /^[^\s]*/;
-Zotero.CSL._textCharRegexp = /[a-zA-Z0-9]/;
-Zotero.CSL._numberRegexp = /\d+/;
-Zotero.CSL._quotedRegexp = /^".+"$/;
-Zotero.CSL.prototype.formatCitation = function(citation, format) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- var context = this._csl.citation;
- if(!context) {
- throw "CSL: formatCitation called on style with no citation context";
- }
- if(!citation.citationItems.length) {
- throw "CSL: formatCitation called with empty citation";
- }
-
- // clone citationItems, so as not to disturb the citation
- var citationItems = citation.citationItems;
-
- // handle collapse
- var cslAdded = [];
-
- var collapse = context.option.(@name == "collapse").@value.toString();
- if(collapse) {
- // clone citationItems, so as not to disturb the citation
- citationItems = new Array();
-
- if(collapse == "citation-number") {
- // loop through, collecting citation numbers
- var citationNumbers = new Object();
- for(var i=0; i<citation.citationItems.length; i++) {
- citationNumbers[citation.citationItems[i].item.getProperty("citation-number")] = i;
- }
- // add -1 at the end so that the last span gets added (loop below
- // must be run once more)
- citationNumbers[-1] = false;
-
- var previousI = -1;
- var span = [];
- // loop through citation numbers and collect ranges in span
- for(var i in citationNumbers) {
- if(i != -1 && !citation.citationItems[citationNumbers[i]].prefix
- && !citation.citationItems[citationNumbers[i]].suffix
- && i == parseInt(previousI, 10)+1) {
- // could be part of a range including the previous number
- span.push(citationNumbers[i]);
- } else { // not part of a range
- if(span.length) citationItems[span[0]] = citation.citationItems[span[0]];
- if(span.length > 2) {
- // if previous set of citations was a range, collapse them
- var firstNumber = citationItems[span[0]].item.getProperty("citation-number");
- citationItems[span[0]]._csl = {"citation-number":(firstNumber+"-"+(parseInt(firstNumber, 10)+span.length-1))};
- cslAdded.push(span[0]);
- } else if(span.length == 2) {
- citationItems[span[1]] = citation.citationItems[span[1]];
- }
-
- span = [citationNumbers[i]];
- }
- previousI = i;
- }
- } else if(collapse.substr(0, 4) == "year") {
- // loop through, collecting citations (sans date) in an array
- var lastNames = {};
- for(var i=0; i<citation.citationItems.length; i++) {
- var citationString = new Zotero.CSL.FormattedString(context, format);
- this._processElements(citation.citationItems[i].item, context.layout, citationString,
- context, null, [{"issued":true}, {}]);
- var cite = citationString.get();
-
- // put into lastNames array
- if(!lastNames[cite]) {
- lastNames[cite] = [i];
- } else {
- lastNames[cite].push(i);
- }
- }
-
- for(var i in lastNames) {
- var itemsSharingName = lastNames[i];
- if(itemsSharingName.length == 1) {
- // if only one, don't worry about grouping
- citationItems[itemsSharingName[0]] = citation.citationItems[itemsSharingName[0]];
- } else {
- var years = [];
- // if grouping by year-suffix, we need to do more (to pull
- // together various letters)
- if(collapse == "year-suffix" && context.option.(@name == "disambiguate-add-year-suffix").@value == "true") {
- var yearsArray = new Object();
- for(var j=0; j<itemsSharingName.length; j++) {
- var year = citation.citationItems[itemsSharingName[j]].item.getDate("issued");
- if(year) {
- year = year.getDateVariable("year");
- if(year) {
- // add to years
- if(!yearsArray[year]) {
- yearsArray[year] = [itemsSharingName[j]];
- } else {
- yearsArray[year].push(itemsSharingName[j]);
- }
- }
- }
-
- if(!year) {
- // if no year, just copy
- years.push("");
- }
- }
-
- // loop through all years
- for(var j in yearsArray) {
- var citationItem = citation.citationItems[yearsArray[j][0]];
-
- // push first year with any suffix
- var year = j;
- var suffix = citationItem.item.getProperty("disambiguate-add-year-suffix");
- if(suffix) year += suffix;
- years.push(year);
-
- // also push subsequent years
- if(yearsArray[j].length > 1) {
- for(k=1; k<yearsArray[j].length; k++) {
- var suffix = citation.citationItems[yearsArray[j][k]].item.getProperty("disambiguate-add-year-suffix");
- if(suffix) years.push(suffix);
- }
- }
- }
- } else {
- // just add years
- for(var j=0; j<itemsSharingName.length; j++) {
- var item = citation.citationItems[itemsSharingName[j]].item;
- var year = item.getDate("issued");
- if(year) {
- years[j] = year.getDateVariable("year");
- var suffix = item.getProperty("disambiguate-add-year-suffix");
- if(suffix) years[j] += suffix;
- }
- }
- }
- citation.citationItems[itemsSharingName[0]]._csl = {"issued":{"year":years.join(", ")}};
- citationItems[itemsSharingName[0]] = citation.citationItems[itemsSharingName[0]];
- cslAdded.push(itemsSharingName[0]);
- }
- }
- }
- }
-
- var string = new Zotero.CSL.FormattedString(context, format, context.layout.@delimiter.toString());
- for(var i=0; i<citationItems.length; i++) {
- var citationItem = citationItems[i];
- if(!citationItem) continue;
-
- var citationString = string.clone();
-
- // suppress author if requested
- var ignore = citationItem.suppressAuthor ? [{"author":true}, {}] : undefined;
-
- // add prefix
- if(citationItem.prefix) {
- var prefix = citationItem.prefix;
-
- // add space to prefix if last char is alphanumeric
- if(Zotero.CSL._textCharRegexp.test(prefix[prefix.length-1])) prefix += " ";
-
- citationString.append(prefix);
- }
-
- this._processElements(citationItem.item, context.layout, citationString,
- context, citationItem, ignore);
-
- // add suffix
- if(citationItem.suffix) {
- var suffix = citationItem.suffix;
-
- // add space to suffix if last char is alphanumeric
- if(Zotero.CSL._textCharRegexp.test(suffix[0])) suffix = " "+suffix;
-
- citationString.append(suffix);
- }
-
- string.concat(citationString);
- }
-
- var returnString = string.clone();
- returnString.concat(string, context.layout);
- var returnString = returnString.get();
-
- // loop through to remove _csl property
- for(var i=0; i<cslAdded.length; i++) {
- citationItems[cslAdded[i]]._csl = undefined;
- }
-
- return returnString;
-}
-
-/*
- * create a bibliography
- */
-Zotero.CSL.prototype.formatBibliography = function(itemSet, format) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- var context = this._csl.bibliography;
- if(!context.length()) {
- context = this._csl.citation;
- var isCitation = true;
- }
- if(!context) {
- throw "CSL: formatBibliography called on style with no bibliography context";
- }
-
- if(!itemSet.items.length) return "";
-
- var hangingIndent = context.option.(@name == "hanging-indent").@value == "true";
- var secondFieldAlign = context.option.(@name == "second-field-align").@value.toString();
- var lineSpacing = context.option.(@name == "line-spacing").@value.toString();
- lineSpacing = (lineSpacing === "" ? 1 : parseInt(lineSpacing, 10));
- if(lineSpacing == NaN) throw "Invalid line spacing";
- var entrySpacing = context.option.(@name == "entry-spacing").@value.toString();
- entrySpacing = (entrySpacing === "" ? 1 : parseInt(entrySpacing, 10));
- if(entrySpacing == NaN) throw "Invalid entry spacing";
-
- var index = 0;
- var output = "";
- var preamble = "";
- if(format == "HTML") {
- if(this.class == "note" && isCitation) {
- // note citations are formatted as an ordered list
- preamble = '<ol>\r\n';
- secondFieldAlign = false;
- } else {
- // needed bc HTML doesn't force lines to be at least as big as the
- // tallest character
- if(lineSpacing <= 1.1) lineSpacing = 1.1;
-
- // add style
- var style = 'line-height:'+lineSpacing+'em;'
- if(hangingIndent) {
- style += 'margin-left:0.5in;text-indent:-0.5in;';
- }
-
- if(secondFieldAlign) {
- preamble += '<table style="border-collapse:collapse;'+style+'">\r\n';
- } else {
- preamble += '<div style="'+style+'">\r\n';
- }
- }
- } else {
- if(format == "RTF" || format == "Integration") {
- if(format == "RTF") {
- preamble = "{\\rtf\\ansi{\\fonttbl\\f0\\froman Times New Roman;}{\\colortbl;\\red255\\green255\\blue255;}\\pard\\f0\r\n";
- }
-
- var tabStop = null;
- if(hangingIndent) {
- var indent = 720; // 720 twips = 0.5 in
- var firstLineIndent = -720; // -720 twips = -0.5 in
- } else {
- var indent = 0;
- var firstLineIndent = 0;
- }
- }
-
- var returnChars = "";
- for(j=0; j<=entrySpacing; j++) {
- if(format == "RTF") {
- returnChars += "\\\r\n";
- } else if(Zotero.isWin) {
- returnChars += "\r\n";
- } else {
- returnChars += "\n";
- }
- }
- }
-
- var maxFirstFieldLength = 0;
- for(var i in itemSet.items) {
- var item = itemSet.items[i];
- if(item == undefined) continue;
-
- // try to get custom bibliography
- var string = item.getProperty("bibliography-"+(format == "Integration" ? "RTF" : format));
- if(!string) {
- string = new Zotero.CSL.FormattedString(context, format);
- this._processElements(item, context.layout, string, context);
- if(!string) {
- continue;
- }
-
- // add format
- string.string = context.layout.@prefix.toString() + string.string;
- if(context.layout.@suffix.length()) {
- string.append(context.layout.@suffix.toString());
- }
-
- string = string.get();
- }
-
- if(secondFieldAlign && (format == "RTF" || format == "Integration")) {
- if(format == "RTF") {
- var tab = string.indexOf("\\tab ");
- } else {
- var tab = string.indexOf("\t");
- }
- if(tab > maxFirstFieldLength) {
- maxFirstFieldLength = tab;
- }
- }
-
- // add line feeds
- if(format == "HTML") {
- var coins = Zotero.OpenURL.createContextObject(item.zoteroItem, "1.0");
-
- // Wrap URLs and DOIs in HTML links
- //
- // This should be handled when the values are still in variables
- // (and presumably will be in the new engine)
- string = Zotero.Utilities.prototype.autoLink(string);
-
- var span = (coins ? ' <span class="Z3988" title="'+coins.replace("&", "&", "g")+'"> </span>' : '');
-
- if(this.class == "note" && isCitation) {
- output += "<li>"+string+span+"</li>\r\n";
- } else if(secondFieldAlign) {
- output += '<tr style="vertical-align:top;"><td>'+string+span+"</td></tr>\r\n";
- for(var j=0; j<entrySpacing; j++) {
- output += '<tr><td colspan="2"> </td></tr>\r\n';
- }
- } else {
- if(i == 0) {
- // first p has no margins
- var margin = "0";
- } else {
- var margin = (entrySpacing*lineSpacing).toString()+"em 0 0 0";
- }
- output += '<p style="margin:'+margin+'">'+string+span+"</p>\r\n";
- }
- } else {
- if(this.class == "note" && isCitation) {
- if(format == "RTF") {
- index++;
- output += index+". ";
- } else if(format == "Text") {
- index++;
- output += index+". ";
- }
- }
- output += string+returnChars;
- }
- }
-
- if(format == "HTML") {
- if(this.class == "note" && isCitation) {
- output += '</ol>';
- } else if(secondFieldAlign) {
- output += '</table>';
- } else {
- output += '</div>';
- }
- } else if(format == "RTF" || format == "Integration") {
- if(secondFieldAlign) {
- // this is a really sticky issue. the below works for first fields
- // that look like "[1]" and "1." otherwise, i have no idea. luckily,
- // this will be good enough 99% of the time.
- var alignAt = 24+maxFirstFieldLength*120;
-
- if(secondFieldAlign == "margin") {
- firstLineIndent -= alignAt;
- tabStop = 0;
- } else {
- indent += alignAt;
- firstLineIndent = -indent;
- tabStop = indent;
- }
- }
-
- preamble += "\\li"+indent+" \\fi"+firstLineIndent+" ";
- if(format == "Integration") {
- preamble += "\\sl"+lineSpacing+" ";
- } else if(format == "RTF" && lineSpacing != 1) {
- preamble += "\\sl"+(240*lineSpacing)+" \\slmult1 ";
- }
-
- if(tabStop !== null) {
- preamble += "\\tx"+tabStop+" ";
- }
- preamble += "\r\n";
-
- // drop last returns
- output = output.substr(0, output.length-returnChars.length);
-
- // add bracket for RTF
- if(format == "RTF") output += "\\par }";
- }
-
- return preamble+output;
-}
-
-/*
- * gets a term, in singular or plural form
- */
-Zotero.CSL.prototype._getTerm = function(term, plural, form, includePeriod) {
- if(!form) {
- form = "long";
- }
-
- if(!this._terms[form] || !this._terms[form][term]) {
- if(form == "verb-short") {
- return this._getTerm(term, plural, "verb");
- } else if(form == "symbol") {
- return this._getTerm(term, plural, "short");
- } else if(form != "long") {
- return this._getTerm(term, plural, "long");
- } else {
- Zotero.debug("CSL: WARNING: could not find term \""+term+'"');
- return "";
- }
- }
-
- var term;
- if(typeof(this._terms[form][term]) == "object") { // singular and plural forms
- // are available
- if(plural) {
- term = this._terms[form][term][1];
- } else {
- term = this._terms[form][term][0];
- }
- } else {
- term = this._terms[form][term];
- }
-
- if((form == "short" || form == "verb-short") && includePeriod) {
- term += ".";
- }
-
- return term;
-}
-
-/*
- * process creator objects; if someone had a creator model that handled
- * non-Western names better than ours, this would be the function to change
- */
-Zotero.CSL.prototype._processNames = function(item, element, formattedString, context, citationItem, variables) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- var children = element.children();
- if(!children.length()) return false;
- var variableSucceeded = false;
-
- for(var j=0; j<variables.length; j++) {
- var success = false;
- var newString = formattedString.clone();
-
- if(formattedString.format != "Sort" && variables[j] == "author" && context
- && context.option.(@name == "subsequent-author-substitute").length()
- && item.getProperty("subsequent-author-substitute")
- && context.localName() == "bibliography") {
- newString.append(context.option.(@name == "subsequent-author-substitute").@value.toString());
- success = true;
- } else {
- var creators = item.getNames(variables[j]);
-
- if(creators && creators.length) {
- var maxCreators = creators.length;
-
- for each(var child in children) {
- if(child.namespace() != Zotero.CSL.Global.ns) continue;
-
- var name = child.localName();
- if(name == "name") {
- var useEtAl = false;
-
- if(context) {
- // figure out if we need to use "et al"
- var etAlMin = context.option.(@name == "et-al-min").@value.toString();
- var etAlUseFirst = context.option.(@name == "et-al-use-first").@value.toString();
-
- if(citationItem && citationItem.position
- && citationItem.position >= Zotero.CSL.POSITION_SUBSEQUENT) {
- if(context.option.(@name == "et-al-subsequent-min").length()) {
- etAlMin = context.option.(@name == "et-al-subsequent-min").@value.toString();
- }
- if(context.option.(@name == "et-al-subsequent-use-first").length()) {
- etAlUseFirst = context.option.(@name == "et-al-subsequent-use-first").@value.toString();
- }
- }
-
- if(etAlMin && etAlUseFirst && maxCreators >= parseInt(etAlMin, 10)) {
- etAlUseFirst = parseInt(etAlUseFirst, 10);
- if(etAlUseFirst != maxCreators) {
- maxCreators = etAlUseFirst;
- useEtAl = true;
- }
- }
-
- // add additional names to disambiguate
- if(variables[j] == "author" && useEtAl) {
- var disambigNames = item.getProperty("disambiguate-add-names");
- if(disambigNames != "") {
- maxCreators = disambigNames;
- if(disambigNames == creators.length) useEtAl = false;
- }
- }
-
- if(child.@form == "short") {
- var fullNames = item.getProperty("disambiguate-add-givenname").split(",");
- }
- }
-
- var authorStrings = [];
- var firstName, lastName;
- // parse authors into strings
- for(var i=0; i<maxCreators; i++) {
- if(formattedString.format == "Sort") {
- // for sort, we use the plain names
- var name = creators[i].getNameVariable("lastName");
-
- // cut off lowercase parts of otherwise capitalized names (e.g., "de")
- var lastNameParts = name.split(" ");
- if(lastNameParts.length > 1 && lastNameParts[0] !== "" && lastNameParts[0].length <= 4
- && lastNameParts[0][0].toLowerCase() == lastNameParts[0][0]
- && lastNameParts[lastNameParts.length-1][0].toUpperCase() == lastNameParts[lastNameParts.length-1][0]) {
- name = "";
- for(var k=1; k<lastNameParts.length; k++) {
- if(lastNameParts[k][0].toUpperCase() == lastNameParts[k][0]) {
- name += " "+lastNameParts[k];
- }
- }
- name = name.substr(1);
- }
-
- var firstName = creators[i].getNameVariable("firstName");
- if(name && firstName) name += ", ";
- name += firstName;
-
- newString.append(name);
- } else {
- var firstName = "";
-
- if(child.@form != "short" || (fullNames && fullNames[i])) {
- if(child["@initialize-with"].length() && (!fullNames ||
- fullNames[i] != Zotero.CSL.NAME_USE_FULL)) {
- // even if initialize-with is simply an empty string, use
- // initials
-
- // use first initials
- var firstNames = creators[i].getNameVariable("firstName").split(" ");
- for(var k in firstNames) {
- if(firstNames[k]) {
- // get first initial, put in upper case, add initializeWith string
- firstName += firstNames[k][0].toUpperCase()+child["@initialize-with"].toString();
- }
- }
-
- if(firstName[firstName.length-1] == " ") {
- firstName = firstName.substr(0, firstName.length-1);
- }
- } else {
- firstName = creators[i].getNameVariable("firstName");
- }
- }
- lastName = creators[i].getNameVariable("lastName");
-
- if(child["@name-as-sort-order"].length()
- && ((i == 0 && child["@name-as-sort-order"] == "first")
- || child["@name-as-sort-order"] == "all")
- && child["@sort-separator"].length()) {
- // if this is the first author and name-as-sort="first"
- // or if this is a subsequent author and name-as-sort="all"
- // then the name gets inverted
- authorStrings.push(lastName+(firstName ? child["@sort-separator"].toString()+firstName : ""));
- } else {
- authorStrings.push((firstName ? firstName+" " : "")+lastName);
- }
- }
- }
-
- if(formattedString.format != "Sort") {
- // figure out if we need an "and" or an "et al"
- var joinString = (child["@delimiter"].length() ? child["@delimiter"].toString() : ", ");
- if(creators.length > 1) {
- if(useEtAl) { // multiple creators and need et al
- authorStrings.push(this._getTerm("et-al"));
- } else { // multiple creators but no et al
- // add and to last creator
- if(child["@and"].length()) {
- if(child["@and"] == "symbol") {
- var and = "&"
- } else if(child["@and"] == "text") {
- var and = this._getTerm("and");
- }
-
- authorStrings[maxCreators-1] = and+" "+authorStrings[maxCreators-1];
- }
- }
-
- // check whether to use a serial comma
- if((authorStrings.length == 2 && (child["@delimiter-precedes-last"] != "always" || useEtAl)) ||
- (authorStrings.length > 2 && child["@delimiter-precedes-last"] == "never")) {
- var lastString = authorStrings.pop();
- authorStrings[authorStrings.length-1] = authorStrings[authorStrings.length-1]+" "+lastString;
- }
- }
- newString.append(authorStrings.join(joinString), child);
- }
- } else if(formattedString.format != "Sort" &&
- name == "label" && variables[j] != "author") {
- newString.append(this._getTerm(variables[j], (maxCreators != 1 || useEtAl), child["@form"].toString(), child["@include-period"] == "true"), child);
- }
- }
- success = true;
- }
- }
-
- if(success) {
- variableSucceeded = true;
- formattedString.concat(newString);
- }
- }
-
- return variableSucceeded;
-}
-
-/*
- * processes an element from a (pre-processed) item into text
- */
-Zotero.CSL.prototype._processElements = function(item, element, formattedString,
- context, citationItem, ignore, isSingle) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- if(!ignore) {
- ignore = [[], []];
- // ignore[0] is for variables; ignore[1] is for macros
- }
-
- var dataAppended = false;
-
- if(isSingle) {
- // handle single elements
- var numberOfChildren = 1;
- var children = [element];
- } else {
- // accept groups of elements by default
- var children = element.children();
- var numberOfChildren = children.length();
- var lastChild = children.length()-1;
- }
-
- for(var i=0; i<numberOfChildren; i++) {
- var child = children[i];
- if(child.namespace() != Zotero.CSL.Global.ns) continue;
- var name = child.localName();
-
- if(name == "text") {
- if(child["@term"].length()) {
- var term = this._getTerm(child["@term"].toString(), child.@plural == "true", child.@form.toString(), child["@include-period"] == "true");
- if(term) {
- formattedString.append(term, child);
- }
- } else if(child.@variable.length()) {
- var form = child.@form.toString();
- var variables = child["@variable"].toString().split(" ");
- var newString = formattedString.clone(child.@delimiter.toString());
- var success = false;
-
- for(var j=0; j<variables.length; j++) {
- if(ignore[0][variables[j]]) continue;
-
- if(variables[j] == "locator") {
- // special case for locator
- var text = citationItem && citationItem.locator ? citationItem.locator : "";
- } else if(citationItem && citationItem._csl && citationItem._csl[variables[j]]) {
- // override if requested
- var text = citationItem._csl[variables[j]];
- } else if(variables[j] == "citation-number") {
- // special case for citation-number
- var text = item.getProperty("citation-number");
- } else {
- var text = item.getVariable(variables[j], form);
- }
-
- if(text) {
- newString.append(text);
- success = true;
- }
- }
-
- if(success) {
- formattedString.concat(newString, child);
- dataAppended = true;
- }
- } else if(child.@macro.length()) {
- var macro = this._csl.macro.(@name == child.@macro);
- if(!macro.length()) throw "CSL: style references undefined macro " + child.@macro;
-
- // If not ignored (bc already used as a substitution)
- if(!ignore[1][child.@macro.toString()]) {
- var newString = formattedString.clone(child.@delimiter.toString());
- var success = this._processElements(item, macro, newString,
- context, citationItem, ignore);
- if(success) dataAppended = true;
- formattedString.concat(newString, child);
- }
- } else if(child.@value.length()) {
- formattedString.append(child.@value.toString(), child);
- }
- } else if(name == "number") {
- if(child.@variable.length()) {
- var form = child.@form.toString();
- var variables = child["@variable"].toString().split(" ");
- var newString = formattedString.clone(child.@delimiter.toString());
- var success = false;
-
- for(var j=0; j<variables.length; j++) {
- if(ignore[0][variables[j]]) continue;
-
- var text = item.getNumericVariable(variables[j], form);
- if(text) {
- newString.append(text);
- success = true;
- }
- }
-
- if(success) {
- formattedString.concat(newString, child);
- dataAppended = true;
- }
- }
- } else if(name == "label") {
- var form = child.@form.toString();
- var variables = child["@variable"].toString().split(" ");
- var newString = formattedString.clone(child.@delimiter.toString());
- var success = false;
-
- for(var j=0; j<variables.length; j++) {
- if(ignore[0][variables[j]]) continue;
-
- if(variables[j] == "locator") {
- // special case for locator
- var term = (citationItem && citationItem.locatorType) ? citationItem.locatorType : "page";
- // if "other" specified as the term, don't do anything
- if(term == "other") term = false;
- var value = citationItem && citationItem.locator ? citationItem.locator : false;
- } else {
- var term = variables[j];
- var value = item.getVariable(variables[j]).toString();
- }
-
- if(term !== false && value) {
- if (child["@pluralize"] == "always") {
- var isPlural = true;
- }
- else if (child["@pluralize"] == "never") {
- var isPlural = false;
- }
- else { // contextual
- var isPlural = value.indexOf("-") != -1 || value.indexOf(",") != -1 || value.indexOf("\u2013") != -1;
- }
- var text = this._getTerm(term, isPlural, child.@form.toString(), child["@include-period"] == "true");
-
- if(text) {
- newString.append(text);
- success = true;
- }
- }
- }
-
- if(success) {
- formattedString.concat(newString, child);
- }
- } else if(name == "names") {
- var variables = child["@variable"].toString().split(" ");
- var newString = formattedString.clone(child.@delimiter.toString());
-
- // remove variables that aren't supposed to be there
- for(var j=0; j<variables.length; j++) {
- if(ignore[0][variables[j]]) {
- variables.splice(j, 1);
- }
- }
- if(!variables.length) continue;
-
- var success = this._processNames(item, child, newString, context,
- citationItem, variables);
-
- if(!success && child.substitute.length()) {
- for each(var newChild in child.substitute.children()) {
- if(newChild.namespace() != Zotero.CSL.Global.ns) continue;
-
- if(newChild.localName() == "names" && newChild.children.length() == 0) {
- // apply same rules to substitute names
- // with no children
- var variable = newChild.@variable.toString();
- variables = variable.split(" ");
- success = this._processNames(item, child, newString,
- context, citationItem, variables);
-
- ignore[0][newChild.@variable.toString()] = true;
-
- if(success) break;
- } else {
- if(!newChild.@suffix.length()) newChild.@suffix = element.@suffix;
- if(!newChild.@prefix.length()) newChild.@prefix = element.@prefix;
-
- success = this._processElements(item,
- newChild, newString, context, citationItem, ignore, true);
-
- // ignore if used as substitution
- if(newChild.@variable.length()) {
- ignore[0][newChild.@variable.toString()] = true;
- } else if(newChild.@macro.length()) {
- ignore[1][newChild.@macro.toString()] = true;
- }
-
- // if substitution was successful, stop
- if(success) break;
- }
- }
- }
-
- if(success) {
- formattedString.concat(newString, child);
- dataAppended = true;
- }
- } else if(name == "date") {
- var variables = child["@variable"].toString().split(" ");
- var newString = formattedString.clone(child.@delimiter.toString());
- var success = false;
-
- for(var j=0; j<variables.length; j++) {
- if(ignore[0][variables[j]]) continue;
-
- var date = item.getDate(variables[j]);
- if(!date) continue;
-
- var variableString = formattedString.clone();
- success = true;
-
- if(formattedString.format == "Sort") {
- variableString.append(date.getDateVariable("sort"));
- } else {
- for each(var newChild in child.children()) {
- if(newChild.namespace() != Zotero.CSL.Global.ns) continue;
- var newName = newChild.localName();
- var newForm = newChild.@form.toString();
-
- if(newName == "date-part") {
- var part = newChild.@name.toString();
-
- if(citationItem && citationItem._csl && citationItem._csl[variables[j]] && citationItem._csl[variables[j]][part]) {
- // date is in citationItem
- var string = citationItem._csl[variables[j]][part];
- } else {
- var string = date.getDateVariable(part);
- if(string === "") continue;
-
- if(part == "year") {
- string = string.toString();
-
- // if 4 digits and no B.C., use short form
- if(newForm == "short" && string.length == 4 && !isNaN(string*1)) {
- string = string.substr(2, 2);
- }
-
- var disambiguate = item.getProperty("disambiguate-add-year-suffix");
- if(disambiguate && variables[j] == "issued") {
- string += disambiguate;
- }
- } else if(part == "month") {
- // if month is a numeric month, format as such
- if(!isNaN(string*1)) {
- if(newForm == "numeric-leading-zeros") {
- string = (string+1).toString();
- if(string.length == 1) {
- string = "0" + string;
- }
- } else if(newForm == "short") {
- string = this._terms["short"]["_months"][string];
- } else if(newForm == "numeric") {
- string = (1+string).toString();
- } else {
- string = this._terms["long"]["_months"][string];
- }
- } else if(newForm == "numeric") {
- string = "";
- }
- } else if(part == "day") {
- string = string.toString();
- if(newForm == "numeric-leading-zeros"
- && string.length == 1) {
- string = "0" + string;
- } else if (newForm == "ordinal") {
- var ind = parseInt(string);
- var daySuffixes = Zotero.getString("date.daySuffixes").replace(/, ?/g, "|").split("|");
- string += (parseInt(ind/10)%10) == 1 ? daySuffixes[3] : (ind % 10 == 1) ? daySuffixes[0] : (ind % 10 == 2) ? daySuffixes[1] : (ind % 10 == 3) ? daySuffixes[2] : daySuffixes[3];
- }
- }
- }
- }
-
- variableString.append(string, newChild);
- }
- }
-
- newString.concat(variableString);
- formattedString.concat(newString, child);
- }
-
- if(success) {
- dataAppended = true;
- }
- } else if(name == "group") {
- var newString = formattedString.clone(child.@delimiter.toString());
- var success = this._processElements(item,
- child, newString, context, citationItem,
- ignore);
-
- // concat only if true data (not text element) was appended
- if(success) {
- formattedString.concat(newString, child);
- dataAppended = true;
- }
- } else if(name == "choose") {
- for each(var newChild in child.children()) {
- if(newChild.namespace() != Zotero.CSL.Global.ns) continue;
-
- var truthValue;
-
- if(newChild.localName() == "else") {
- // always true, if we got to this point in the loop
- truthValue = true;
- } else if(newChild.localName() == "if"
- || newChild.localName() == "else-if") {
-
- var matchAny = newChild.@match == "any";
- var matchNone = newChild.@match == "none";
- if(matchAny) {
- // if matching any, begin with false, then set to true
- // if a condition is true
- truthValue = false;
- } else {
- // if matching all, begin with true, then set to false
- // if a condition is false
- truthValue = true;
- }
-
- // inspect variables
- var done = false;
- var attributes = ["variable", "is-date", "is-numeric", "is-plural", "type", "disambiguate", "locator", "position"];
- for(var k=0; !done && k<attributes.length; k++) {
- var attribute = attributes[k];
-
- if(newChild["@"+attribute].length()) {
- var variables = newChild["@"+attribute].toString().split(" ");
- for(var j=0; !done && j<variables.length; j++) {
- var exists = false;
- if(attribute == "variable") {
- if(variables[j] == "locator") {
- // special case for locator
- exists = citationItem && citationItem.locator && citationItem.locator.length > 0
- }
- else if(Zotero.CSL._dateVariables[variables[j]]) {
- // getDate not false/undefined
- exists = !!item.getDate(variables[j]);
- } else if(Zotero.CSL._namesVariables[variables[j]]) {
- // getNames not false/undefined, not empty
- exists = item.getNames(variables[j]);
- if(exists) exists = !!exists.length;
- } else {
- exists = item.getVariable(variables[j]);
- if (exists) exists = !!exists.length;
- }
- } else if (attribute == "is-numeric") {
- exists = item.getNumericVariable(variables[j]);
- } else if (attribute == "is-date") { // XXX - this needs improving
- if (Zotero.CSL._dateVariables[variables[j]]) {
- exists = !!item.getDate(variables[j]);
- }
- } else if(attribute == "is-plural") {
- if(Zotero.CSL._namesVariables[variables[j]]) {
- exists = item.getNames(variables[j]);
- if(exists) exists = exists.length > 1;
- } else if(variables[j] == "page" || variables[j] == "locator") {
- if(variables[j] == "page") {
- var value = item.getVariable("page");
- } else {
- var value = citationItem && citationItem.locator ? citationItem.locator : "";
- }
- exists = value.indexOf("-") != -1 || value.indexOf(",") != -1 || value.indexOf("\u2013") != -1;
- }
- } else if(attribute == "type") {
- exists = item.isType(variables[j]);
- } else if(attribute == "disambiguate") {
- exists = (variables[j] == "true" && item.getProperty("disambiguate-condition"))
- || (variables[j] == "false" && !item.getProperty("disambiguate-condition"));
- } else if(attribute == "locator") {
- exists = citationItem && citationItem.locator &&
- (citationItem.locatorType == variables[j]
- || (!citationItem.locatorType && variables[j] == "page"));
- } else { // attribute == "position"
- if(variables[j] == "first") {
- exists = !citationItem
- || !citationItem.position
- || citationItem.position == Zotero.CSL.POSITION_FIRST;
- } else if(variables[j] == "subsequent") {
- exists = citationItem && citationItem.position >= Zotero.CSL.POSITION_SUBSEQUENT;
- } else if(variables[j] == "ibid") {
- exists = citationItem && citationItem.position >= Zotero.CSL.POSITION_IBID;
- } else if(variables[j] == "ibid-with-locator") {
- exists = citationItem && citationItem.position == Zotero.CSL.POSITION_IBID_WITH_LOCATOR;
- }
- }
-
- if(matchAny) {
- if(exists) {
- truthValue = true;
- done = true;
- }
- } else if(matchNone) {
- if(exists) {
- truthValue = false;
- done = true;
- }
- } else if(!exists) {
- truthValue = false;
- done = true;
- }
- }
- }
- }
- }
-
- if(truthValue) {
- // if true, process
- var newString = formattedString.clone(newChild.@delimiter.toString());
- var success = this._processElements(item, newChild,
- newString, context, citationItem, ignore);
- if(success) dataAppended = true;
- formattedString.concat(newString, child);
-
- // then break
- break;
- }
- }
- } else {
- Zotero.debug("CSL: WARNING: could not add element "+name);
- }
- }
-
- return dataAppended;
-}
-
-/*
- * Compares two items, in order to sort the reference list
- * Returns -1 if A comes before B, 1 if B comes before A, or 0 if they are equal
- */
-Zotero.CSL.prototype._compareItem = function(a, b, context, cache) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- var sortA = [];
- var sortB = [];
-
- var aID = a.id;
- var bID = b.id;
-
- // author
- if(context.sort.key.length()) {
- var keyA, keyB;
- for each(var key in context.sort.key) {
- if(key.@macro.length()) {
- var aCacheKey = aID+"-macro-"+key.@macro;
- var bCacheKey = bID+"-macro-"+key.@macro;
-
- if(cache[aCacheKey]) {
- keyA = cache[aCacheKey];
- } else {
- keyA = new Zotero.CSL.SortString();
- this._processElements(a, this._csl.macro.(@name == key.@macro), keyA);
- cache[aCacheKey] = keyA;
- }
-
- if(cache[bCacheKey]) {
- keyB = cache[bCacheKey];
- } else {
- keyB = new Zotero.CSL.SortString();
- this._processElements(b, this._csl.macro.(@name == key.@macro), keyB);
- cache[bCacheKey] = keyB;
- }
- } else if(key.@variable.length()) {
- var variable = key.@variable.toString();
- var keyA = new Zotero.CSL.SortString();
- var keyB = new Zotero.CSL.SortString();
-
- if(Zotero.CSL._dateVariables[variable]) { // date
- var date = a.getDate(variable);
- if(date) keyA.append(date.getDateVariable("sort"));
- date = b.getDate(variable);
- if(date) keyB.append(date.getDateVariable("sort"));
- } else if(Zotero.CSL._namesVariables[key.@variable]) { // names
- var element = <names><name/></names>;
- element.setNamespace(Zotero.CSL.Global.ns);
-
- this._processNames(a, element, keyA, context, null, [variable]);
- this._processNames(b, element, keyB, context, null, [variable]);
- } else { // text
- if(variable == "citation-number") {
- keyA.append(a.getProperty(variable));
- keyB.append(b.getProperty(variable));
- } else {
- keyA.append(a.getVariable(variable));
- keyB.append(b.getVariable(variable));
- }
- }
- }
-
- var compare = keyA.compare(keyB);
- if(key.@sort == "descending") { // the compare method sorts ascending
- // so we sort descending by reversing it
- if(compare < 1) return 1;
- if(compare > 1) return -1;
- } else if(compare != 0) {
- return compare;
- }
- }
- }
-
- // sort by index in document
- var aIndex = a.getProperty("index");
- var bIndex = b.getProperty("index");
- if(aIndex !== "" && (bIndex === "" || aIndex < bIndex)) {
- return -1;
- } else if(aIndex != bIndex) {
- return 1;
- }
-
- // sort by old index (to make this a stable sort)
- var aOldIndex = a.getProperty("oldIndex");
- var bOldIndex = b.getProperty("oldIndex");
- if(aOldIndex < bOldIndex) {
- return -1;
- } else if(aOldIndex != bOldIndex) {
- return 1;
- }
-
- return 0;
-}
-
-
-/**
- * Sorts a list of items, keeping a cache of processed keys
- **/
-Zotero.CSL.prototype.cachedSort = function(items, context, field) {
- var me = this;
- var cache = new Object();
-
- for(var i=0; i<items.length; i++) {
- if(items[i].setProperty) items[i].setProperty("oldIndex", i);
- }
-
- if(field) {
- var newItems = items.sort(function(a, b) {
- return me._compareItem(a[field], b[field], context, cache);
- });
- } else {
- var newItems = items.sort(function(a, b) {
- return me._compareItem(a, b, context, cache);
- });
- }
-
- delete cache;
- return newItems;
-}
-
-Zotero.CSL.prototype.getEqualCitations = function(items) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- var citationsEqual = [];
-
- if(items) {
- var context = this._csl.citation;
-
- var string = new Zotero.CSL.FormattedString(context.options, "Text");
- this._processElements(items[0], context.layout, string,
- context, "subsequent");
- var lastString = string.get();
-
- for(var i=1; i<items.length; i++) {
- string = new Zotero.CSL.FormattedString(context.option, "Text");
- this._processElements(items[i], context.layout, string,
- context, "subsequent");
- string = string.get();
-
- citationsEqual[i] = string == lastString;
- lastString = string;
- }
- }
-
- return citationsEqual;
-}
-
-/*
- * Compares two citations; returns true if they are different, false if they are equal
- */
-Zotero.CSL.prototype.compareCitations = function(a, b, context) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- if((!a && b) || (a && !b)) {
- return true;
- } else if(!a && !b) {
- return false;
- }
-
- var option = (context ? context.option : null);
- var aString = new Zotero.CSL.FormattedString(option, "Text");
- this._processElements(a, this._csl.citation.layout, aString,
- context, "subsequent");
-
- var bString = new Zotero.CSL.FormattedString(option, "Text");
- this._processElements(b, this._csl.citation.layout, bString,
- context, "subsequent");
-
- return !(aString.get() == bString.get());
-}
-
-Zotero.CSL.Global = new function() {
- this.init = init;
- this.getMonthStrings = getMonthStrings;
- this.getLocatorStrings = getLocatorStrings;
- this.cleanXML = cleanXML;
- this.parseLocales = parseLocales;
-
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
- this.ns = "http://purl.org/net/xbiblio/csl";
-
- this.__defineGetter__("locale", function() {
- Zotero.CSL.Global.init()
- return Zotero.CSL.Global._xmlLang;
- });
- this.collation = Components.classes["@mozilla.org/intl/collation-factory;1"]
- .getService(Components.interfaces.nsICollationFactory)
- .CreateCollation(Components.classes["@mozilla.org/intl/nslocaleservice;1"]
- .getService(Components.interfaces.nsILocaleService)
- .getApplicationLocale());
-
- var locatorTypeTerms = ["page", "book", "chapter", "column", "figure", "folio",
- "issue", "line", "note", "opus", "paragraph", "part", "section", "sub verbo",
- "volume", "verse"];
-
- /*
- * initializes CSL interpreter
- */
- function init() {
- if(!Zotero.CSL.Global._xmlLang) {
- var prefix = "chrome://zotero/content/locale/csl/locales-";
- var ext = ".xml";
-
- // 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");
- var fail = false;
- try {
- req.send(null);
- }
- catch (e) {
- fail = true;
- }
-
- if (!fail) {
- 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");
- var fail = false;
- try {
- req.send(null);
- }
- catch (e) {
- fail = true;
- }
-
- if (!fail) {
- 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(xml));
- Zotero.CSL.Global._defaultTerms = Zotero.CSL.Global.parseLocales(locales, true);
- }
- }
-
- /*
- * returns an array of short or long month strings
- */
- function getMonthStrings(form) {
- Zotero.CSL.Global.init();
- return Zotero.CSL.Global._defaultTerms[form]["_months"];
- }
-
- /*
- * returns an array of short or long locator strings
- */
- function getLocatorStrings(form) {
- if(!form) form = "long";
-
- Zotero.CSL.Global.init();
- var locatorStrings = new Object();
- for(var i=0; i<locatorTypeTerms.length; i++) {
- var term = locatorTypeTerms[i];
- var termKey = term;
- if(term == "page") termKey = "";
- locatorStrings[termKey] = Zotero.CSL.Global._defaultTerms[form][term];
-
- if(!locatorStrings[termKey] && form == "symbol") {
- locatorStrings[termKey] = Zotero.CSL.Global._defaultTerms["short"][term];
- }
- if(!locatorStrings[termKey]) {
- locatorStrings[termKey] = Zotero.CSL.Global._defaultTerms["long"][term];
- }
-
- // use singular form
- if(typeof(locatorStrings[termKey]) == "object") locatorStrings[termKey] = locatorStrings[termKey][0];
- }
- return locatorStrings;
- }
-
- /*
- * removes parse instructions from XML
- */
- function cleanXML(xml) {
- return xml.replace(/<\?[^>]*\?>/g, "");
- }
-
- /*
- * parses locale strings into an array;
- */
- function parseLocales(termXML, ignoreLang) {
- // return defaults if there are no terms
- if(!termXML.length()) {
- return (Zotero.CSL.Global._defaultTerms ? Zotero.CSL.Global._defaultTerms : {});
- }
-
- var xml = new Namespace("http://www.w3.org/XML/1998/namespace");
-
- if(ignoreLang) {
- // ignore lang if loaded from chrome
- locale = termXML.locale[0];
- } else {
- // get proper locale
- var locale = termXML.locale.(@xml::lang == Zotero.CSL.Global._xmlLang);
- if(!locale.length()) {
- var xmlLang = Zotero.CSL.Global._xmlLang.substr(0, 2);
- locale = termXML.locale.(@xml::lang == xmlLang);
- }
- if(!locale.length()) {
- // return defaults if there are no locales
- return (Zotero.CSL.Global._defaultTerms ? Zotero.CSL.Global._defaultTerms : {});
- }
- }
-
- var termArray = new Object();
- termArray["default"] = new Object();
-
- if(Zotero.CSL.Global._defaultTerms) {
- // ugh. copy default array. javascript dumb.
- for(var i in Zotero.CSL.Global._defaultTerms) {
- termArray[i] = new Object();
- for(var j in Zotero.CSL.Global._defaultTerms[i]) {
- if(typeof(Zotero.CSL.Global._defaultTerms[i][j]) == "object") {
- termArray[i][j] = Zotero.CSL.Global._defaultTerms[i][j].concat();
- } else {
- termArray[i][j] = Zotero.CSL.Global._defaultTerms[i][j];
- }
- }
- }
- }
-
- // loop through terms
- for each(var term in locale.term) {
- var name = term.@name.toString();
- if(!name) {
- throw("CSL: citations cannot be generated: no name defined on term in locales.xml");
- }
- // unless otherwise specified, assume "long" form
- var form = term.@form.toString();
- if(!form) {
- var form = "long";
- }
- if(!termArray[form]) {
- termArray[form] = new Object();
- }
-
- var single = term.single.text().toString();
- var multiple = term.multiple.text().toString();
- if(single || multiple) {
- if((single && multiple) // if there's both elements or
- || !termArray[form][name]) { // no previously defined value
- termArray[form][name] = [single, multiple];
- } else {
- if(typeof(termArray[name]) != "object") {
- // if old object was just a single value, make it two copies
- termArray[form][name] = [termArray[form][name], termArray[form][name]];
- }
-
- // redefine either single or multiple
- if(single) {
- termArray[form][name][0] = single;
- } else {
- termArray[form][name][1] = multiple;
- }
- }
- } else {
- if(name.substr(0, 6) == "month-") {
- // place months into separate array
- if(!termArray[form]["_months"]) {
- termArray[form]["_months"] = new Array();
- }
- var monthIndex = parseInt(name.substr(6),10)-1;
- var term = term.text().toString();
- termArray[form]["_months"][monthIndex] = term[0].toUpperCase()+term.substr(1).toLowerCase();
- } else {
- termArray[form][name] = term.text().toString();
- }
- }
- }
-
- // ensure parity between long and short months
- var longMonths = termArray["long"]["_months"];
- var shortMonths = termArray["short"]["_months"];
- for(var i=0; i<longMonths.length; i++) {
- if(!shortMonths[i]) {
- shortMonths[i] = longMonths[i];
- }
- }
-
- return termArray;
- }
-}
-
-/*
- * the CitationItem object represents an individual source within a citation.
- *
- * PROPERTIES:
- * prefix
- * suffix
- * locatorType
- * locator
- * suppressAuthor
- * item
- * itemID
- */
-Zotero.CSL.CitationItem = function(item) {
- if(item) {
- this.item = item;
- this.itemID = item.id;
- }
-}
-
-/*
- * the Citation object represents a citation.
- */
-Zotero.CSL.Citation = function(citationItems, csl) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- if(csl) {
- this._csl = csl;
- this._citation = csl._csl.citation;
- this.sortable = this._citation.sort.key.length();
- } else {
- this.sortable = false;
- }
-
- this.citationItems = [];
- if(citationItems) this.add(citationItems);
-
- // reserved for application use
- this.properties = {};
-}
-
-/*
- * sorts a citation
- */
-Zotero.CSL.Citation.prototype.sort = function() {
- if(this.sortable) {
- this.citationItems = this._csl.cachedSort(this.citationItems, this._citation, "item");
- }
-}
-
-/*
- * adds a citationItem to a citation
- */
-Zotero.CSL.Citation.prototype.add = function(citationItems) {
- for(var i=0; i<citationItems.length; i++) {
- var citationItem = citationItems[i];
-
- if(citationItem instanceof Zotero.CSL.Item
- || citationItem instanceof Zotero.Item) {
- this.citationItems.push(new Zotero.CSL.CitationItem(citationItem));
- } else {
- this.citationItems.push(citationItem);
- }
- }
-}
-
-/*
- * removes a citationItem from a citation
- */
-Zotero.CSL.Citation.prototype.remove = function(citationItems) {
- for each(var citationItem in citationItems){
- var index = this.citationItems.indexOf(citationItem);
- if(index == -1) throw "Zotero.CSL.Citation: tried to remove an item not in citation";
- this.citationItems.splice(index, 1);
- }
-}
-
-/*
- * copies a citation
- */
-Zotero.CSL.Citation.prototype.clone = function() {
- var clone = new Zotero.CSL.Citation(null, this._csl);
-
- // copy items
- for(var i=0; i<this.citationItems.length; i++) {
- var oldCitationItem = this.citationItems[i];
- var newCitationItem = new Zotero.CSL.CitationItem();
- for(var key in oldCitationItem) {
- newCitationItem[key] = oldCitationItem[key];
- }
- clone.citationItems.push(newCitationItem);
- }
-
- // copy properties
- for(var key in this.properties) {
- clone.properties[key] = this.properties[key];
- }
-
- return clone;
-}
-
-/*
- * This is an item wrapper class for Zotero items. If converting this code to
- * work with another application, this is what needs changing. Potentially, this
- * function could accept an ID or an XML data structure instead of an actual
- * item, provided it implements the same public interfaces (those not beginning
- * with "_") are implemented.
- */
-Zotero.CSL.Item = function(item) {
- if(item instanceof Zotero.Item) {
- this.zoteroItem = item;
- } else if(parseInt(item, 10) == item) {
- // is an item ID
- this.zoteroItem = Zotero.Items.get(item);
- }
-
- if(!this.zoteroItem) {
- throw "Zotero.CSL.Item called to wrap a non-item";
- }
-
- this.id = this.zoteroItem.id;
-
- // don't return URL or accessed information for journal articles if a
- // pages field exists
- var itemType = Zotero.ItemTypes.getName(this.zoteroItem.itemTypeID);
- if(!Zotero.Prefs.get("export.citePaperJournalArticleURL")
- && ["journalArticle", "newspaperArticle", "magazineArticle"].indexOf(itemType) !== -1
- && this.zoteroItem.getField("pages")) {
- this._ignoreURL = true;
- }
-
- this._properties = {};
- this._refreshItem();
-}
-
-
-/**
- * Returns some identifier for the item. Used to create citations. In Zotero,
- * this is the item ID
- *
- * @deprecated
- **/
-Zotero.CSL.Item.prototype.getID = function() {
- Zotero.debug("Zotero.CSL.Item.getID() deprecated; use Zotero.CSL.Item.id");
- return this.zoteroItem.id;
-}
-
-/**
- * Refreshes item if it has been modified
- */
-Zotero.CSL.Item.prototype._refreshItem = function() {
- var previousChanged = this._lastChanged;
- this._lastChanged = this.zoteroItem.getField("dateModified", false, true);
-
- if(this._lastChanged != previousChanged) {
- this._names = undefined;
- this._dates = {};
- }
-}
-
-/*
- * Mappings for names
- */
-Zotero.CSL.Item._zoteroNameMap = {
- "collection-editor":"seriesEditor",
- "container-author":"bookAuthor"
-}
-
-/*
- * Gets an array of Item.Name objects for a variable.
- */
-Zotero.CSL.Item.prototype.getNames = function(variable) {
- var field = Zotero.CSL.Item._zoteroNameMap[variable];
- if (field) variable = field;
- this._refreshItem();
- if(!this._names) {
- this._separateNames();
- }
-
- if(this._names[variable]) {
- return this._names[variable];
- }
- return [];
-}
-
-/*
- * Gets an Item.Date object for a specific type.
- */
-Zotero.CSL.Item.prototype.getDate = function(variable) {
- // ignore accessed date
- if(this._ignoreURL && variable == "accessed") return false;
-
- // load date variable if possible
- this._refreshItem();
- if(this._dates[variable] == undefined) {
- this._createDate(variable);
- }
-
- if(this._dates[variable]) return this._dates[variable];
- return false;
-}
-
-Zotero.CSL.Item._zoteroFieldMap = {
- "long":{
- "title":"title",
- "container-title":["publicationTitle", "reporter", "code"], /* reporter and code should move to SQL mapping tables */
- "collection-title":["seriesTitle", "series"],
- "collection-number":"seriesNumber",
- "publisher":"publisher",
- "publisher-place":"place",
- "authority":"court",
- "page":"pages",
- "volume":"volume",
- "issue":"issue",
- "number-of-volumes":"numberOfVolumes",
- "number-of-pages":"numPages",
- "edition":"edition",
- "version":"version",
- "section":"section",
- "genre":["type", "artworkSize"], /* artworkSize should move to SQL mapping tables, or added as a CSL variable */
- "medium":"medium",
- "archive":"archive",
- "archive_location":"archiveLocation",
- "event":["meetingName", "conferenceName"], /* these should be mapped to the same base field in SQL mapping tables */
- "event-place":"place",
- "abstract":"abstractNote",
- "URL":"url",
- "DOI":"DOI",
- "ISBN" : "ISBN",
- "call-number":"callNumber",
- "note":"extra",
- "number":"number",
- "references":"history"
- },
- "short":{
- "title":["shortTitle", "title"],
- "container-title":"journalAbbreviation",
- "genre":["shortTitle", "type"] /* needed for subsequent citations of items with no title */
- }
-}
-
-/*
- * Gets a text object for a specific type.
- */
-Zotero.CSL.Item.prototype.getVariable = function(variable, form) {
- if(!Zotero.CSL.Item._zoteroFieldMap["long"][variable]) return "";
-
- // ignore URL
- if(this._ignoreURL && variable == "URL") return ""
-
- var zoteroFields = [];
- var field;
-
- if(form == "short" && Zotero.CSL.Item._zoteroFieldMap["short"][variable]) {
- field = Zotero.CSL.Item._zoteroFieldMap["short"][variable];
- if(typeof field == "string") {
- zoteroFields.push(field);
- } else {
- zoteroFields = zoteroFields.concat(field);
- }
- }
-
- field = Zotero.CSL.Item._zoteroFieldMap["long"][variable];
- if(typeof field == "string") {
- zoteroFields.push(field);
- } else {
- zoteroFields = zoteroFields.concat(field);
- }
-
- for each(var zoteroField in zoteroFields) {
- var value = this.zoteroItem.getField(zoteroField, false, true).toString();
- if(value != "") {
- // Strip enclosing quotes
- if(value.match(Zotero.CSL._quotedRegexp)) {
- value = value.substr(1, value.length-2);
- }
- return value;
- }
- }
-
- return "";
-}
-
-/*
- * convert a number into a ordinal number 1st, 2nd, 3rd etc.
- */
-Zotero.CSL.Item.prototype.makeOrdinal = function(value) {
- var ind = parseInt(value);
- var daySuffixes = Zotero.getString("date.daySuffixes").replace(/, ?/g, "|").split("|");
- value += (parseInt(ind/10)%10) == 1 ? daySuffixes[3] : (ind % 10 == 1) ? daySuffixes[0] : (ind % 10 == 2) ? daySuffixes[1] : (ind % 10 == 3) ? daySuffixes[2] : daySuffixes[3];
- return value;
-}
-
-
-Zotero.CSL.Item._zoteroRomanNumerals = {
- "0" : [ "", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix" ],
- "1" : [ "", "x", "xx", "xxx", "xl", "l", "lx", "lxx", "lxxx", "xc" ],
- "2" : [ "", "c", "cc", "ccc", "cd", "d", "dc", "dcc", "dccc", "cm" ],
- "3" : [ "", "m", "mm", "mmm", "mmmm", "mmmmm"],
- }
-
-/*
- * Convert a number into a roman numeral.
- */
-Zotero.CSL.Item.prototype.makeRoman = function(value) {
-
- var number = parseInt(value);
- var result = "";
- if (number > 5000) return "";
- var thousands = parseInt(number/1000);
- if (thousands > 0) {
- result += Zotero.CSL.Item._zoteroRomanNumerals[3][thousands];
- }
- number = number % 1000;
- var hundreds = parseInt(number/100);
- if (hundreds > 0) {
- result += Zotero.CSL.Item._zoteroRomanNumerals[2][hundreds];
- }
- number = number % 100;
- var tens = parseInt(number/10);
- if (tens > 0) {
- result += Zotero.CSL.Item._zoteroRomanNumerals[1][tens];
- }
- number = number % 10;
- if (number > 0) {
- result += Zotero.CSL.Item._zoteroRomanNumerals[0][number];
- }
- return result;
-}
-
-Zotero.CSL.Item._zoteroNumberFieldMap = {
- "volume":"volume",
- "issue":"issue",
- "number-of-volumes":"numberOfVolumes",
- "edition":"edition",
- "number":"number"
-}
-/*
- * Gets a numeric object for a specific type. <number variable="edition" form="roman"/>
- */
-Zotero.CSL.Item.prototype.getNumericVariable = function(variable, form) {
-
- if(!Zotero.CSL.Item._zoteroNumberFieldMap[variable]) return "";
-
- var zoteroFields = [];
- var field;
-
- field = Zotero.CSL.Item._zoteroNumberFieldMap[variable];
- if(typeof field == "string") {
- zoteroFields.push(field);
- } else {
- zoteroFields = zoteroFields.concat(field);
- }
-
- var matches;
- for each(var zoteroField in zoteroFields) {
- var value = this.zoteroItem.getField(zoteroField, false, true).toString();
-
- // Quoted strings are never numeric
- if(value.match(Zotero.CSL._quotedRegexp)) {
- continue;
- }
-
- var matches;
- if(value != "" && (matches = value.match(Zotero.CSL._numberRegexp)) ) {
- value = matches[0];
- if (form == "ordinal") {
- return this.makeOrdinal(value);
- }
- else if (form == "roman") {
- return this.makeRoman(value);
- }
- else
- return value;
- }
- }
- return "";
-}
-
-/*
- * Sets an item-specific property to a given value.
- */
-Zotero.CSL.Item.prototype.setProperty = function(property, value) {
- this._properties[property] = value;
-}
-
-/*
- * Sets an item-specific property to a given value.
- */
-Zotero.CSL.Item.prototype.getProperty = function(property, value) {
- return (this._properties[property] !== undefined ? this._properties[property] : "");
-}
-
-Zotero.CSL.Item._optionalTypeMap = {
- journalArticle:"article-journal",
- magazineArticle:"article-magazine",
- newspaperArticle:"article-newspaper",
- thesis:"thesis",
- conferencePaper:"paper-conference",
- letter:"personal_communication",
- manuscript:"manuscript",
- interview:"interview",
- film:"motion_picture",
- artwork:"graphic",
- webpage:"webpage",
- report:"report",
- bill:"bill",
- case:"legal_case",
- hearing:"bill", // ??
- patent:"patent",
- statute:"bill", // ??
- email:"personal_communication",
- map:"map",
- blogPost:"webpage",
- instantMessage:"personal_communication",
- forumPost:"webpage",
- audioRecording:"song", // ??
- presentation:"speech",
- videoRecording:"motion_picture",
- tvBroadcast:"broadcast",
- radioBroadcast:"broadcast",
- podcast:"song", // ??
- computerProgram:"book" // ??
-};
-
-// TODO: check with Elena/APA/MLA on this
-Zotero.CSL.Item._fallbackTypeMap = {
- book:"book",
- bookSection:"chapter",
- journalArticle:"article",
- magazineArticle:"article",
- newspaperArticle:"article",
- thesis:"article",
- encyclopediaArticle:"chapter",
- dictionaryEntry:"chapter",
- conferencePaper:"chapter",
- letter:"article",
- manuscript:"article",
- interview:"article",
- film:"book",
- artwork:"book",
- webpage:"article",
- report:"book",
- bill:"book",
- case:"book",
- hearing:"book",
- patent:"article",
- statute:"book",
- email:"article",
- map:"article",
- blogPost:"article",
- instantMessage:"article",
- forumPost:"article",
- audioRecording:"book",
- presentation:"article",
- videoRecording:"book",
- tvBroadcast:"article",
- radioBroadcast:"article",
- podcast:"article",
- computerProgram:"book"
-};
-
-/*
- * Determines whether this item is of a given type
- */
-Zotero.CSL.Item.prototype.isType = function(type) {
- var zoteroType = Zotero.ItemTypes.getName(this.zoteroItem.itemTypeID);
-
- return (Zotero.CSL.Item._optionalTypeMap[zoteroType]
- && Zotero.CSL.Item._optionalTypeMap[zoteroType] == type)
- || (Zotero.CSL.Item._fallbackTypeMap[zoteroType] ? Zotero.CSL.Item._fallbackTypeMap[zoteroType] : "article") == type;
-}
-
-/*
- * Separates names into different types.
- */
-Zotero.CSL.Item.prototype._separateNames = function() {
- this._names = [];
-
- var authorID = Zotero.CreatorTypes.getPrimaryIDForType(this.zoteroItem.itemTypeID);
-
- var creators = this.zoteroItem.getCreators();
- for each(var creator in creators) {
- if(creator.creatorTypeID == authorID) {
- var variable = "author";
- } else {
- var variable = Zotero.CreatorTypes.getName(creator.creatorTypeID);
- }
-
- var name = new Zotero.CSL.Item.Name(creator);
-
- if(!this._names[variable]) {
- this._names[variable] = [name];
- } else {
- this._names[variable].push(name);
- }
- }
-}
-
-/*
- * Generates an date object for a given variable (currently supported: issued
- * and accessed)
- */
-Zotero.CSL.Item.prototype._createDate = function(variable) {
- // first, figure out what date variable to use.
- if(variable == "issued") {
- var date = this.zoteroItem.getField("date", false, true);
- var sort = this.zoteroItem.getField("date", true, true);
- } else if(variable == "accessed") {
- var date = this.zoteroItem.getField("accessDate", false, true);
- var sort = this.zoteroItem.getField("accessDate", true, true);
- }
-
- if(date) {
- this._dates[variable] = new Zotero.CSL.Item.Date(date, sort);
- } else {
- this._dates[variable] = false;
- }
-}
-
-/*
- * Date class
- */
-Zotero.CSL.Item.Date = function(date, sort) {
- this.date = date;
- this.sort = sort;
-}
-
-/*
- * Should accept the following variables:
- *
- * year - returns a year (optionally, with attached B.C.)
- * month - returns a month (numeric from 0, or, if numeric is not available, long)
- * day - returns a day (numeric)
- * sort - a date that can be used for sorting purposes
- */
-Zotero.CSL.Item.Date.prototype.getDateVariable = function(variable) {
- if(this.date) {
- if(variable == "sort") {
- return this.sort;
- }
-
- if(!this.dateArray) {
- this.dateArray = Zotero.Date.strToDate(this.date);
- }
-
- if(this.dateArray[variable] !== undefined && this.dateArray[variable] !== false) {
- return this.dateArray[variable];
- } else if(variable == "month") {
- if(this.dateArray.part) {
- return this.dateArray.part;
- }
- }
- }
-
- return "";
-}
-
-/*
- * Name class
- */
-Zotero.CSL.Item.Name = function(zoteroCreator) {
- this._zoteroCreator = zoteroCreator;
-}
-
-/*
- * Should accept the following variables:
- *
- * firstName - first name
- * lastName - last name
- */
-Zotero.CSL.Item.Name.prototype.getNameVariable = function(variable) {
- return this._zoteroCreator.ref[variable] ? this._zoteroCreator.ref[variable] : "";
-}
-
-/*
- * When an array of items are passed to create a new item set, each is wrapped
- * in an item wrapper.
- */
-Zotero.CSL.ItemSet = function(items, csl) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- this.csl = csl;
-
- this.citation = csl._csl.citation;
- this.bibliography = csl._csl.bibliography;
-
- // collect options
- this.options = new Object();
- var options = this.citation.option.(@name.substr(0, 12) == "disambiguate")
- + this.bibliography.option.(@name == "subsequent-author-substitute");
- for each(var option in options) {
- this.options[option.@name.toString()] = option.@value.toString();
- }
-
- // check for disambiguate condition
- for each(var thisIf in csl._csl..if) {
- if(thisIf.@disambiguate.length()) {
- this.options["disambiguate-condition"] = true;
- break;
- }
- }
-
- // check for citation number
- for each(var thisText in csl._csl..text) {
- if(thisText.@variable == "citation-number") {
- this.options["citation-number"] = true;
- break;
- }
- }
-
- // set sortable
- this.sortable = !!this.bibliography.sort.key.length();
-
- this.items = [];
- this.itemsById = {};
-
- // add items
- this.add(items);
-
- // check which disambiguation options are enabled
- this._citationChangingOptions = new Array();
- this._disambiguate = false;
- for(var option in this.options) {
- if(option.substr(0, 12) == "disambiguate" && this.options[option]) {
- this._citationChangingOptions.push(option);
- this._disambiguate = true;
- } else if(option == "citation-number" && this.options[option]) {
- this._citationChangingOptions.push(option);
- }
- }
-
- if(!items) {
- return;
- }
-
- this.resort();
-}
-
-
-/**
- * Gets CSL.Item objects from an item set using their ids
- *
- * @param {Array} ids An array of ids
- * @return {Array} items An array whose indexes correspond to those of ids, whose values are either
- * the CSL.Item objects or false
- **/
-Zotero.CSL.ItemSet.prototype.getItemsByIds = function(ids) {
- var items = [];
- for each(var id in ids) {
- if(this.itemsById[id] != undefined) {
- items.push(this.itemsById[id]);
- } else {
- items.push(false);
- }
- }
- return items;
-}
-
-/*
- * Adds items to the given item set; must be passed either CSL.Item
- * objects or objects that may be wrapped as CSL.Item objects
- */
-Zotero.CSL.ItemSet.prototype.add = function(items) {
- var newItems = new Array();
-
- for(var i in items) {
- if(items[i] instanceof Zotero.CSL.Item) {
- var newItem = items[i];
- } else {
- var newItem = new Zotero.CSL.Item(items[i]);
- }
-
- newItem.setProperty("index", this.items.length);
-
- this.itemsById[newItem.id] = newItem;
- this.items.push(newItem);
- newItems.push(newItem);
- }
-
- return newItems;
-}
-
-/*
- * Removes items from the item set; must be passed either CSL.Item objects
- * or item IDs
- */
-Zotero.CSL.ItemSet.prototype.remove = function(items) {
- for(var i in items) {
- if(!items[i]) continue;
- if(items[i] instanceof Zotero.CSL.Item) {
- var item = items[i];
- } else {
- var item = this.itemsById[items[i]];
- }
- if(item) {
- this.itemsById[item.id] = undefined;
- this.items.splice(this.items.indexOf(item), 1);
- }
- }
-}
-
-/*
- * Sorts the item set, also running postprocessing and returning items whose
- * citations have changed
- */
-Zotero.CSL.ItemSet.prototype.resort = function() {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- // sort
- this.items = this.csl.cachedSort(this.items, this.bibliography);
-
- // first loop through to collect disambiguation data by item, so we can
- // see if any items have changed; also collect last names
- var oldOptions = new Array();
- for(var i in this._citationChangingOptions) {
- oldOptions[i] = new Array();
- for(var j in this.items) {
- if(this.items[j] == undefined) continue;
- oldOptions[i][j] = this.items[j].getProperty(this._citationChangingOptions[i]);
- this.items[j].setProperty(this._citationChangingOptions[i], "");
- }
- }
-
- var namesByItem = new Object();
- for(var i=0; i<this.items.length; i++) {
- var names = this.items[i].getNames("author");
- if(!names) names = this.items[i].getNames("editor");
- if(!names) names = this.items[i].getNames("translator");
- if(!names) names = this.items[i].getNames("recipient");
- if(!names) names = this.items[i].getNames("interviewer");
- if(!names) names = this.items[i].getNames("book-author");
- if(!names) names = this.items[i].getNames("collection-editor");
- if(!names) continue;
- namesByItem[i] = names;
- }
-
- // check where last names are the same but given names are different
- if(this.options["disambiguate-add-givenname"]) {
- var firstNamesByItem = new Object();
- var allNames = new Object();
- var nameType = new Object();
-
- for(var i=0; i<this.items.length; i++) {
- var names = namesByItem[i];
- var firstNames = [];
- for(var j=0; j<names.length; j++) {
- // get firstName and lastName
- var m = Zotero.CSL._firstNameRegexp.exec(names[j].getNameVariable("firstName"));
- var firstName = m[0].toLowerCase();
- firstNames.push(firstName);
- if(!firstName) continue;
- var lastName = names[j].getNameVariable("lastName");
-
- // add last name
- if(!allNames[lastName]) {
- allNames[lastName] = [firstName];
- } else if(allNames[lastName].indexOf(firstName) == -1) {
- allNames[lastName].push(firstName);
- }
- }
-
- firstNamesByItem[i] = firstNames;
- }
-
- // loop through last names
- for(var i=0; i<this.items.length; i++) {
- if(!namesByItem[i]) continue;
-
- var nameFormat = new Array();
- for(var j=0; j<namesByItem[i].length; j++) {
- var lastName = namesByItem[i][j].getNameVariable("lastName");
- if(nameType[lastName] === undefined) {
- // determine how to format name
- var theNames = allNames[lastName];
- if(theNames && theNames.length > 1) {
- // have two items with identical last names but different
- // first names
- nameType[lastName] = Zotero.CSL.NAME_USE_INITIAL;
-
- // check initials to see if any match
- var initials = new Object();
- for(var k=0; k<theNames.length; k++) {
- if(initials[theNames[k][0]]) {
- nameType[lastName] = Zotero.CSL.NAME_USE_FULL;
- break;
- }
- initials[theNames[k][0]] = true;
- }
- }
- }
-
- nameFormat[j] = nameType[lastName];
- }
-
- if(nameFormat.length) {
- // if some names have special formatting, save
- this.items[i].setProperty("disambiguate-add-givenname", nameFormat.join(","));
- }
- }
- }
-
- // loop through once to determine where items equal the previous item
- if(this._disambiguate && this.items.length) {
- var citationsEqual = this.csl.getEqualCitations(this.items, this.citation);
- }
-
- var allNames = {};
-
- var lastItem = false;
- var lastNames = false;
- var lastYear = false;
- var citationNumber = 1;
-
- for(var i=0; i<this.items.length; i++) {
- var item = this.items[i];
- if(item == undefined) continue;
-
- var year = item.getDate("issued");
- if(year) year = year.getDateVariable("year");
- var names = namesByItem[i];
- var disambiguated = false;
-
- if(this._disambiguate && i != 0 && citationsEqual[i] == true) {
- // some options can only be applied if there are actual authors
- if(names && lastNames && this.options["disambiguate-add-names"]) {
- // try adding names to disambiguate
- var oldAddNames = lastItem.getProperty("disambiguate-add-names");
-
- // if a different number of names, disambiguation is
- // easy, although we should still see if there is a
- // smaller number of names that works
- var numberOfNames = names.length;
- if(numberOfNames > lastNames.length) {
- numberOfNames = lastNames.length;
- item.setProperty("disambiguate-add-names", numberOfNames+1);
-
- // have to check old property
- if(!oldAddNames || oldAddNames < numberOfNames) {
- lastItem.setProperty("disambiguate-add-names", numberOfNames);
- }
-
- disambiguated = true;
- } else if(numberOfNames != lastNames.length) {
- item.setProperty("disambiguate-add-names", numberOfNames);
-
- // have to check old property
- if(!oldAddNames || oldAddNames < numberOfNames+1) {
- lastItem.setProperty("disambiguate-add-names", numberOfNames+1);
- }
-
- disambiguated = true;
- }
- }
-
- // now, loop through and see whether there's a
- // dissimilarity before the end
- var namesDiffer = false;
- for(var j=0; j<numberOfNames; j++) {
- namesDiffer = (names[j].getNameVariable("lastName") != lastNames[j].getNameVariable("lastName")
- || (firstNamesByItem && firstNamesByItem[i][j] != firstNamesByItem[i-1][j]));
- if(this.options["disambiguate-add-names"] && namesDiffer) {
- item.setProperty("disambiguate-add-names", j+1);
-
- if(!oldAddNames || oldAddNames < j+1) {
- lastItem.setProperty("disambiguate-add-names", j+1);
- }
-
- disambiguated = true;
- }
-
- if(namesDiffer) {
- break;
- }
- }
-
- // add a year suffix, if the above didn't work
- if(!disambiguated && year && !namesDiffer && this.options["disambiguate-add-year-suffix"]) {
- var lastDisambiguate = lastItem.getProperty("disambiguate-add-year-suffix");
- if(!lastDisambiguate) {
- lastItem.setProperty("disambiguate-add-year-suffix", "a");
- item.setProperty("disambiguate-add-year-suffix", "b");
- } else {
- var newDisambiguate = "";
- var charCode = lastDisambiguate.charCodeAt(lastDisambiguate.length-1);
- if(charCode == 122) {
- newDisambiguate = lastDisambiguate.replace(/z+$/, "");
- var consecutiveZs = lastDisambiguate.length-newDisambiguate.length;
- if(newDisambiguate.length >= 1) {
- var nonZCharCode = lastDisambiguate.charCodeAt(newDisambiguate.length-1);
- newDisambiguate = newDisambiguate.substring(0,newDisambiguate.length-1);
- newDisambiguate += String.fromCharCode(nonZCharCode+1);
- for(i=0;i<consecutiveZs;i++) {
- newDisambiguate += "a";
- }
- }
- else {
- newDisambiguate = lastDisambiguate.replace(/z/g, "a");
- newDisambiguate += "a";
- }
- }
- else {
- // next lowercase letter
- newDisambiguate = lastDisambiguate.substring(0,lastDisambiguate.length-1);
- newDisambiguate += String.fromCharCode(charCode+1);
- }
-
- item.setProperty("disambiguate-add-year-suffix", newDisambiguate);
- }
-
- disambiguated = true;
- }
-
- // use disambiguate condition if above didn't work
- if(!disambiguated && this.options["disambiguate-condition"]) {
- var oldCondition = lastItem.getProperty("disambiguate-condition");
- lastItem.setProperty("disambiguate-condition", true);
- item.setProperty("disambiguate-condition", true);
-
- // if we cannot disambiguate with the conditional, revert
- if(this.csl.compareCitations(lastItem, item) == 0) {
- if(!oldCondition) {
- lastItem.setProperty("disambiguate-condition", undefined);
- }
- item.setProperty("disambiguate-condition", undefined);
- }
- }
- }
-
- if(this.options["subsequent-author-substitute"]
- && lastNames && names.length && lastNames.length == names.length) {
- var namesDiffer = false;
- for(var j=0; j<names.length; j++) {
- namesDiffer = (names[j].getNameVariable("lastName") != lastNames[j].getNameVariable("lastName")
- || (names[j].getNameVariable("firstName") != lastNames[j].getNameVariable("firstName")));
- if(namesDiffer) break;
- }
-
- if(!namesDiffer) item.setProperty("subsequent-author-substitute", true);
- }
-
- item.setProperty("citation-number", citationNumber++);
-
- lastItem = item;
- lastNames = names;
- lastYear = year;
- }
-
- // find changed citations
- var changedCitations = new Array();
- for(var j in this.items) {
- if(this.items[j] == undefined) continue;
- for(var i in this._citationChangingOptions) {
- if(this.items[j].getProperty(this._citationChangingOptions[i]) != oldOptions[i][j]) {
- changedCitations.push(this.items[j]);
- }
- }
- }
-
- return changedCitations;
-}
-
-/*
- * Copies disambiguation settings (with the exception of disambiguate-add-year-suffix)
- * from one item to another
- */
-Zotero.CSL.ItemSet.prototype._copyDisambiguation = function(fromItem, toItem) {
- for each(var option in ["disambiguate-add-givenname", "disambiguate-add-names",
- "disambiguate-add-title"]) {
- var value = fromItem.getProperty(option);
- if(value) {
- toItem.setProperty(option, value);
- }
- }
-}
-
-Zotero.CSL.FormattedString = function(context, format, delimiter, subsequent) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- this.context = context;
- this.option = context ? context.option : new XMLList();
- this.format = format;
- this.delimiter = delimiter;
- this.string = "";
- this.closePunctuation = "";
- this.closeFormatting = "";
- this.useBritishStyleQuotes = false;
-
- // insert tab iff second-field-align is on
- this.insertTabAfterField = (!subsequent && this.option.(@name == "second-field-align").@value.toString());
- this.insertTabBeforeField = false;
- // append line before next
- this.prependLine = false;
-
- if(format == "RTF") {
- this._openQuote = "\\uc0\\u8220 ";
- this._closeQuote = "\\uc0\\u8221 ";
- } else {
- this._openQuote = "\u201c";
- this._closeQuote = "\u201d";
- }
-}
-
-Zotero.CSL.FormattedString._punctuation = "!.,?:";
-
-/*
- * attaches another formatted string to the end of the current one
- */
-Zotero.CSL.FormattedString.prototype.concat = function(formattedString, element) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- if(!formattedString || !formattedString.string) {
- return false;
- }
-
- if(formattedString.format != this.format) {
- throw "CSL: cannot concatenate formatted strings: formats do not match";
- }
-
- var haveAppended = false;
- var suffix = false;
- if(formattedString.string !== "") {
- // first, append the actual string without its suffix
- if(element && element.@suffix.length()) {
- // don't edit original element
- element = element.copy();
- // let us decide to add the suffix
- suffix = element.@suffix.toString();
- element.@suffix = [];
- }
- haveAppended = this.append(formattedString.string, element, false, true);
- }
-
- // if there's close punctuation to append, that also counts
- if(formattedString.closePunctuation || formattedString.closeFormatting) {
- haveAppended = true;
- // add the new close punctuation
- this.closeFormatting += formattedString.closeFormatting;
- this.closePunctuation += formattedString.closePunctuation;
- }
-
- // append suffix, if we didn't before
- if(haveAppended && suffix !== false) this.append(suffix, null, true);
-
- return haveAppended;
-}
-
-Zotero.CSL.FormattedString._rtfEscapeFunction = function(aChar) {
- return "{\\uc0\\u"+aChar.charCodeAt(0).toString()+"}"
-}
-
-/*
- * appends a string (with format parameters) to the current one
- */
-Zotero.CSL.FormattedString.prototype.append = function(string, element, dontDelimit, dontEscape) {
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with({});
-
- if(!string && string !== 0) return false;
-
- if(typeof(string) != "string") {
- string = string.toString();
- }
-
- // get prefix
- var prefix = "";
- if(element && element.@prefix.length()) {
- var prefix = element.@prefix.toString();
- }
-
- // append tab before if necessary
- if(!dontDelimit && this.insertTabBeforeField) {
- // replace any space preceding tab
- this.string = this.string.replace(/\s+$/, "");
-
- if(this.format == "HTML") {
- this.string += '</td><td style="padding-left:4pt;">';
- } else if(this.format == "RTF") {
- this.string += "\\tab ";
- } else if(this.format == "Integration") {
- this.string += "\t";
- } else {
- this.string += " ";
- }
-
- this.insertTabBeforeField = false;
- if(prefix !== "") {
- prefix = prefix.replace(/^\s+/, "");
- } else {
- string = string.replace(/^\s+/, "");
- }
- }
-
- // append delimiter if necessary
- if(this.delimiter && this.string && !dontDelimit) {
- this.append(this.delimiter, null, true);
- }
-
- // append prefix before closing punctuation
- if(prefix !== "") {
- this.append(prefix, null, true);
- }
-
- var addBefore = "";
- var addAfter = "";
-
- // prepend line before if display="block"
- if(element && (element["@display"] == "block" || this.prependLine)) {
- if(this.format == "HTML") {
- if(this.option.(@name == "hanging-indent").@value == "true") {
- addBefore += '<div style="text-indent:0.5in;">'
- } else {
- addBefore += '<div>';
- }
- addAfter = '</div>';
- } else {
- if(this.format == "RTF") {
- addBefore += "\r\n\\line ";
- } else if(this.format == "Integration") {
- addBefore += "\x0B";
- } else {
- addBefore += (Zotero.isWin ? "\r\n" : "\n");
- }
- this.prependLine = element["@display"] == "block";
- }
- }
-
- // close quotes, etc. using punctuation
- if(this.closePunctuation) {
- if(Zotero.CSL.FormattedString._punctuation.indexOf(string[0]) != -1) {
- this.string += string[0];
- string = string.substr(1);
- }
- this.string += this.closePunctuation;
- this.closePunctuation = "";
- }
-
- // clean up
- if(string.length && string[0] == "." &&
- Zotero.CSL.FormattedString._punctuation.indexOf(this.string[this.string.length-1]) != -1) {
- // if string already ends in punctuation, preserve the existing stuff
- // and don't add a period
- string = string.substr(1);
- } else if(this.string[this.string.length-1] == "(" && string[0] == " ") {
- string = string.substr(1);
- } else if(this.string[this.string.length-1] == " " && string[0] == ")") {
- this.string = this.string.substr(0, this.string.length-1);
- }
-
- // close previous formatting
- this.string += this.closeFormatting;
- this.closeFormatting = "";
-
- // handling of "text-transform" attribute (now obsolete)
- if(element && element["@text-transform"].length() && !element["@text-case"].length()) {
- var mapping = {"lowercase":"lowercase", "uppercase":"uppercase", "capitalize":"capitalize-first"};
- element["@text-case"] = mapping[element["@text-transform"].toString()];
- }
-
- // handle text case
- if(element) {
- if(element["@text-case"].length()) {
- if(element["@text-case"] == "lowercase") {
- // all lowercase
- string = string.toLowerCase();
- } else if(element["@text-case"] == "uppercase") {
- // all uppercase
- string = string.toUpperCase();
- } else if(element["@text-case"] == "sentence") {
- // for now capitalizes only the first letter, the rest are lowercase
- string = string[0].toUpperCase()+string.substr(1).toLowerCase();
- } else if(element["@text-case"] == "capitalize-first") {
- // capitalize first
- string = string[0].toUpperCase()+string.substr(1);
- } else if(element["@text-case"] == "capitalize-all") {
- // capitalize first
- var strings = string.split(" ");
- for(var i=0; i<strings.length; i++) {
- if(strings[i].length > 1) {
- strings[i] = strings[i][0].toUpperCase()+strings[i].substr(1).toLowerCase();
- } else if(strings[i].length == 1) {
- strings[i] = strings[i].toUpperCase();
- }
- }
- string = strings.join(" ");
- } else if(element["@text-case"] == "title") {
- string = Zotero.Text.titleCase(string);
- }
- }
-
- // style attributes
- if(this.format == "HTML") {
- var style = "";
-
- var cssAttributes = ["font-family", "font-style", "font-variant",
- "font-weight", "vertical-align", "display",
- "text-decoration" ];
- for(var j in cssAttributes) {
- var value = element["@"+cssAttributes[j]].toString();
- if(value && value.indexOf('"') == -1) {
- style += cssAttributes[j]+":"+value+";";
- }
- }
-
- if(style) {
- addBefore += '<span style="'+style+'">';
- addAfter = '</span>'+addAfter;
- }
- } else {
- if(this.format == "RTF" || this.format == "Integration") {
- var rtfAttributes = {
- "font-style":{"oblique":"i", "italic":"i"},
- "font-variant":{"small-caps":"scaps"},
- "font-weight":{"bold":"b"},
- "text-decoration":{"underline":"ul"},
- "vertical-align":{"sup":"super", "sub":"sub"}
- }
-
- for(var j in rtfAttributes) {
- for(var k in rtfAttributes[j]) {
- if(element["@"+j] == k) {
- addBefore += "\\"+rtfAttributes[j][k]+" ";
- addAfter = "\\"+rtfAttributes[j][k]+"0 "+addAfter;
- }
- }
- }
- }
- }
-
- // add quotes if necessary
- if(element.@quotes == "true") {
- this.string += this._openQuote;
-
- if(this.useBritishStyleQuotes) {
- string += this._closeQuote;
- } else {
- this.closePunctuation = this._closeQuote;
- }
- }
- }
-
- if(!dontEscape) {
- if(this.format == "HTML") {
- string = string.replace("&", "&", "g")
- .replace("<", "<", "g")
- .replace(">", ">", "g")
- .replace(/(\r\n|\r|\n)/g, "<br />")
- .replace(/[\x00-\x1F]/g, "");
- } else if(this.format == "RTF" || this.format == "Integration") {
- string = string.replace("\\", "\\\\", "g")
- .replace(/(\r\n|\r|\n)/g, "\\line ");
- if(string.substr(string.length-6) == "\\line ") {
- string = string.substr(0, string.length-6);
- addAfter = "\\line "+addAfter;
- }
-
- if(this.format == "RTF") {
- string = string.replace(/[{}\x7F-\uFFFF]/g, Zotero.CSL.FormattedString._rtfEscapeFunction)
- .replace("\t", "\\tab ", "g");
-
- if(string.substr(string.length-5) == "\\tab ") {
- string = string.substr(0, string.length-5);
- addAfter = "\\tab "+addAfter;
- }
- }
- } else {
- string = string.replace(/(\r\n|\r|\n)/g, (Zotero.isWin ? "\r\n" : "\n"));
- }
- }
-
- this.string += addBefore+string;
-
- if(element && element.@suffix.length()) {
- this.append(element.@suffix.toString(), null, true);
- }
-
- // save for second-field-align
- if(!dontDelimit && this.insertTabAfterField) {
- this.insertTabAfterField = false;
- this.insertTabBeforeField = true;
- }
-
- this.closeFormatting = addAfter;
-
- return true;
-}
-
-/*
- * gets the formatted string
- */
-Zotero.CSL.FormattedString.prototype.get = function() {
- return this.string+this.closeFormatting+this.closePunctuation;
-}
-
-/*
- * creates a new formatted string with the same formatting parameters as this one
- */
-Zotero.CSL.FormattedString.prototype.clone = function(delimiter) {
- return new Zotero.CSL.FormattedString(this.context, this.format, delimiter, true);
-}
-
-/*
- * Implementation of FormattedString for sort purposes.
- */
-Zotero.CSL.SortString = function() {
- default xml namespace = "http://purl.org/net/xbiblio/csl";
-
- this.format = "Sort";
- this.string = [];
-}
-
-Zotero.CSL.SortString.prototype.concat = function(newString) {
- if(newString.string.length == 0) {
- return;
- } else if(newString.string.length == 1) {
- this.string.push(newString.string[0]);
- } else {
- this.string.push(newString.string);
- }
-}
-
-Zotero.CSL.SortString.prototype.append = function(newString) {
- this.string.push(newString);
-}
-
-Zotero.CSL.SortString.prototype.compare = function(b, a) {
- // by default, a is this string
- if(a == undefined) {
- a = this.string;
- b = b.string;
- }
-
- var aIsString = typeof(a) != "object";
- var bIsString = typeof(b) != "object";
- if(aIsString && bIsString) {
- if(a == b) {
- return 0;
- } else if(!isNaN(a % 1) && !isNaN(b % 1)) {
- // both numeric
- if(b > a) return -1;
- return 1; // already know they're not equal
- } else {
- var cmp = Zotero.CSL.Global.collation.compareString(Zotero.CSL.Global.collation.kCollationCaseInSensitive, a, b);
- if(cmp == 0) {
- // for some reason collation service returned 0; the collation
- // service sucks! they can't be equal!
- if(b > a) {
- return -1;
- } else {
- return 1;
- }
- }
- return cmp;
- }
- } else if(aIsString && !bIsString) {
- var cmp = this.compare(b[0], a);
- if(cmp == 0) {
- return -1; // a before b
- }
- return cmp;
- } else if(bIsString && !aIsString) {
- var cmp = this.compare(b, a[0]);
- if(cmp == 0) {
- return 1; // b before a
- }
- return cmp;
- }
-
- var maxLength = Math.min(b.length, a.length);
- for(var i = 0; i < maxLength; i++) {
- var cmp = this.compare(b[i], a[i]);
- if(cmp != 0) {
- return cmp;
- }
- }
-
- if(b.length > a.length) {
- return -1; // a before b
- } else if(b.length < a.length) {
- return 1; // b before a
- }
-
- return 0;
-}
-
-
-Zotero.CSL.SortString.prototype.clone = function() {
- return new Zotero.CSL.SortString();
-}
-\ No newline at end of file
diff --git a/chrome/content/zotero/xpcom/integration.js b/chrome/content/zotero/xpcom/integration.js
@@ -26,6 +26,7 @@
const RESELECT_KEY_URI = 1;
const RESELECT_KEY_ITEM_KEY = 2;
const RESELECT_KEY_ITEM_ID = 3;
+const DATA_VERSION = 3;
Zotero.Integration = new function() {
var _fifoFile = null;
@@ -222,6 +223,7 @@ Zotero.Integration = new function() {
integration._doc.displayAlert(Zotero.getString("integration.error.generic")+message,
Components.interfaces.zoteroIntegrationDocument.DIALOG_ICON_STOP,
Components.interfaces.zoteroIntegrationDocument.DIALOG_BUTTONS_OK);
+ Zotero.debug(e);
throw e;
}
}
@@ -294,8 +296,11 @@ Zotero.Integration.UserCancelledException.prototype.name = "UserCancelledExcepti
Zotero.Integration.UserCancelledException.prototype.message = "User cancelled document update.";
Zotero.Integration.UserCancelledException.prototype.toString = function() { return this.message; };
-Zotero.Integration.DisplayException = function(name) { this.name = name };
-Zotero.Integration.DisplayException.prototype.toString = function() { return Zotero.getString("integration.error."+this.name); };
+Zotero.Integration.DisplayException = function(name, params) {
+ this.name = name;
+ this.params = params ? params : [];
+};
+Zotero.Integration.DisplayException.prototype.toString = function() { return Zotero.getString("integration.error."+this.name, this.params); };
Zotero.Integration.CorruptFieldException = function(corruptFieldString) {
this.corruptFieldString = corruptFieldString;
@@ -358,14 +363,15 @@ Zotero.Integration.Document.prototype._getSession = function(require, dontRunSet
this._doc.setDocumentData(this._session.data.serializeXML());
}
} else {
- if(dataString[0] != "<") {
+ var data = new Zotero.Integration.DocumentData(dataString);
+ if(data.dataVersion < DATA_VERSION) {
var warning = this._doc.displayAlert(Zotero.getString("integration.upgradeWarning"),
Components.interfaces.zoteroIntegrationDocument.DIALOG_ICON_WARNING,
Components.interfaces.zoteroIntegrationDocument.DIALOG_BUTTONS_OK_CANCEL);
if(!warning) throw new Zotero.Integration.UserCancelledException();
+ } else if(data.dataVersion > DATA_VERSION) {
+ throw new Zotero.Integration.DisplayException("newerDocumentVersion", [data.zoteroVersion, Zotero.version]);
}
-
- var data = new Zotero.Integration.DocumentData(dataString);
if(Zotero.Integration.sessions[data.sessionID]) {
this._session = Zotero.Integration.sessions[data.sessionID];
} else {
@@ -409,7 +415,7 @@ Zotero.Integration.Document.prototype._getFields = function(require) {
while(fields.hasMoreElements()) {
this._fields.push(fields.getNext().QueryInterface(Components.interfaces.zoteroIntegrationField));
}
- var endTime = (new Date()).getTime();;
+ var endTime = (new Date()).getTime();
Zotero.debug("Got "+this._fields.length+" fields in "+(endTime-getFieldsTime)/1000+"; "+1000/((endTime-getFieldsTime)/this._fields.length)+" fields/second");
if(require && !this._fields.length) {
@@ -468,7 +474,7 @@ Zotero.Integration.Document.prototype._updateSession = function(newField, editFi
var fieldCode = field.getCode();
if(fieldCode.substr(0, ITEM_CODE.length) == ITEM_CODE) {
- var noteIndex = (this._session.style.class == "note" ? field.getNoteIndex() : 0);
+ var noteIndex = (this._session.styleClass == "note" ? field.getNoteIndex() : 0);
try {
this._session.addCitation(i, noteIndex, fieldCode.substr(ITEM_CODE.length+1));
} catch(e) {
@@ -582,7 +588,8 @@ Zotero.Integration.Document.prototype._updateSession = function(newField, editFi
}
}
- this._session.updateItemSet();
+ //this._session.updateItems();
+ this._session.updateCitations();
// create new citation or edit existing citation
if(editFieldIndex) {
@@ -602,6 +609,7 @@ Zotero.Integration.Document.prototype._updateSession = function(newField, editFi
}
}
}
+ this._session.updateItems();
}
/**
@@ -632,37 +640,28 @@ Zotero.Integration.Document.prototype._updateDocument = function(forceCitations,
// update citations
this._session.updateUpdateIndices(forceCitations);
- for(var i in this._session.updateIndices) {
+ this._deleteFields = this._deleteFields.concat(this._session.updateCitations());
+ for(var i in this._session.citationText) {
citation = this._session.citationsByIndex[i];
if(!citation) continue;
- if(citation.properties["delete"]) {
- // delete citation
- this._deleteFields.push(i);
+ var fieldCode = this._session.getCitationField(citation);
+ if(fieldCode != citation.properties.field) {
+ this._fields[citation.properties.index].setCode(ITEM_CODE+" "+fieldCode);
+ }
+
+ if(citation.properties.custom) {
+ var citationText = citation.properties.custom;
} else {
- var fieldCode = this._session.getCitationField(citation);
- if(fieldCode != citation.properties.field) {
- this._fields[citation.properties.index].setCode(ITEM_CODE+" "+fieldCode);
- }
-
- if(citation.properties.custom) {
- var citationText = citation.properties.custom;
- // XML uses real RTF, rather than the format used for
- // integration, so we have to escape things properly
- citationText = citationText.replace(/[{}\x7F-\uFFFF]/g,
- Zotero.Integration.Session._rtfEscapeFunction).
- replace("\t", "\\tab ", "g");
- } else {
- var citationText = this._session.style.formatCitation(citation, "RTF");
- }
-
- if(citationText.indexOf("\\") !== -1) {
- // need to set text as RTF
- this._fields[citation.properties.index].setText("{\\rtf "+citationText+"}", true);
- } else {
- // set text as plain
- this._fields[citation.properties.index].setText(citationText, false);
- }
+ var citationText = this._session.citationText[i];
+ }
+
+ if(citationText.indexOf("\\") !== -1) {
+ // need to set text as RTF
+ this._fields[citation.properties.index].setText("{\\rtf "+citationText+"}", true);
+ } else {
+ // set text as plain
+ this._fields[citation.properties.index].setText(citationText, false);
}
}
@@ -713,7 +712,7 @@ Zotero.Integration.Document.prototype.addBibliography = function() {
this._getSession(true);
// Make sure we can have a bibliography
- if(!this._session.style.hasBibliography) {
+ if(!this._session.data.style.hasBibliography) {
throw new Zotero.Integration.DisplayException("noBibliography");
}
@@ -856,7 +855,29 @@ Zotero.Integration.Document.JSEnumerator.prototype.getNext = function() {
Zotero.Integration.Session = function() {
// holds items not in document that should be in bibliography
this.uncitedItems = new Object();
+ this.customBibliographyText = new Object();
this.reselectedItems = new Object();
+ this.citationIDs = new Object();
+}
+
+/**
+ * Resets per-request variables in the CitationSet
+ */
+Zotero.Integration.Session.prototype.resetRequest = function() {
+ this.citationsByItemID = new Object();
+ this.citationsByIndex = new Array();
+ this.uriMap = new Zotero.Integration.URIMap(this);
+
+ this.regenerateAll = false;
+ this.bibliographyHasChanged = false;
+ this.bibliographyDataHasChanged = false;
+ this.updateItemIDs = new Object();
+ this.updateIndices = new Object();
+ this.newIndices = new Object();
+
+ this.oldCitationIDs = this.citationIDs;
+ this.citationIDs = new Object();
+ this.citationText = new Object();
}
/**
@@ -868,12 +889,14 @@ Zotero.Integration.Session.prototype.setData = function(data) {
this.data = data;
if(data.style.styleID && oldStyleID != data.style.styleID) {
this.styleID = data.style.styleID;
+ Zotero.debug("style is "+data.style.styleID);
try {
- this.style = Zotero.Styles.get(data.style.styleID).csl;
+ var getStyle = Zotero.Styles.get(data.style.styleID);
+ data.style.hasBibliography = getStyle.hasBibliography;
+ this.style = getStyle.csl;
+ this.style.setOutputFormat("rtf");
+ this.styleClass = getStyle.class;
this.dateModified = new Object();
-
- this.itemSet = this.style.createItemSet();
- this.loadUncitedItems();
} catch(e) {
Zotero.debug(e)
data.style.styleID = undefined;
@@ -916,7 +939,7 @@ Zotero.Integration.Session.prototype.setDocPrefs = function(primaryFieldType, se
data.prefs.fieldType = io.fieldType;
this.setData(data);
// need to do this after setting the data so that we know if it's a note style
- this.data.prefs.noteType = this.style && this.style.class == "note" ? io.useEndnotes+1 : 0;
+ this.data.prefs.noteType = this.style && this.styleClass == "note" ? io.useEndnotes+1 : 0;
if(!oldData || oldData.style.styleID != data.style.styleID
|| oldData.prefs.noteType != data.prefs.noteType
@@ -961,70 +984,60 @@ Zotero.Integration.Session.prototype.reselectItem = function(exception) {
}
/**
- * Resets per-request variables in the CitationSet
- */
-Zotero.Integration.Session.prototype.resetRequest = function() {
- this.citationsByItemID = new Object();
- this.citationsByIndex = new Array();
- this.uriMap = new Zotero.Integration.URIMap(this);
-
- this.regenerateAll = false;
- this.bibliographyHasChanged = false;
- this.bibliographyDataHasChanged = false;
- this.updateItemIDs = new Object();
- this.updateIndices = new Object();
-}
-
-/**
* Generates a field from a citation object
*/
Zotero.Integration.Session._acceptableTypes = ["string", "boolean", "number"];
Zotero.Integration.Session._saveProperties = ["custom", "sort"];
+Zotero.Integration.Session._saveItems = ["locator", "label", "suppress-author", "author-only", "prefix", "suffix"];
Zotero.Integration.Session.prototype.getCitationField = function(citation) {
- var type, field = "";
+ var type;
+ var field = [];
+ field.push('"citationID":'+Zotero.JSON.serialize(citation.citationID));
+ var properties = [];
for(var j=0; j<Zotero.Integration.Session._saveProperties.length; j++) {
var property = Zotero.Integration.Session._saveProperties[j];
if(citation.properties[property] || citation.properties[property] === false) {
- field += ',"'+property+'":'+Zotero.JSON.serialize(citation.properties[property]);
+ properties.push('"'+property+'":'+Zotero.JSON.serialize(citation.properties[property]));
}
}
+ if(properties.length) field.push('"properties":{'+properties.join(",")+"}");
- var citationItems = "";
+ var citationItems = [];
for(var j=0; j<citation.citationItems.length; j++) {
- var citationItem = "";
+ var citationItem = [];
// save citationItem properties
for(var k in citation.citationItems[j]) {
type = typeof(citation.citationItems[j][k]);
- if(citation.citationItems[j][k] && k != "itemID" && k != "key"
+ if(citation.citationItems[j][k] && Zotero.Integration.Session._saveItems.indexOf(k) !== -1
&& Zotero.Integration.Session._acceptableTypes.indexOf(type) !== -1) {
- citationItem += ',"'+k+'":'+Zotero.JSON.serialize(citation.citationItems[j][k]);
+ citationItem.push('"'+k+'":'+Zotero.JSON.serialize(citation.citationItems[j][k]));
}
}
// save URI
- citationItem += ',"uri":'+Zotero.JSON.serialize(this.uriMap.getURIsForItemID(citation.citationItems[j].itemID));
- citationItems += ",{"+citationItem.substr(1)+"}";
+ citationItem.push('"uri":'+Zotero.JSON.serialize(this.uriMap.getURIsForItemID(citation.citationItems[j].id)));
+ citationItems.push("{"+citationItem.join(",")+"}");
}
- field += ',"citationItems":['+citationItems.substr(1)+"]";
+ field.push('"citationItems":['+citationItems.join(",")+"]");
- return "{"+field.substr(1)+"}";
+ return "{"+field.join(",")+"}";
}
/**
* Adds a citation based on a serialized Word field
*/
Zotero.Integration._oldCitationLocatorMap = {
- p:Zotero.CSL.LOCATOR_PAGES,
- g:Zotero.CSL.LOCATOR_PARAGRAPH,
- l:Zotero.CSL.LOCATOR_LINE
+ p:"page",
+ g:"paragraph",
+ l:"line"
};
/**
- * Gets a Zotero.CSL.Citation object given a field name
+ * Adds a citation to the arrays representing the document
*/
-Zotero.Integration.Session.prototype.addCitation = function(index, noteIndex, arg, update) {
+Zotero.Integration.Session.prototype.addCitation = function(index, noteIndex, arg) {
var index = parseInt(index, 10);
if(typeof(arg) == "string") { // text field
@@ -1035,59 +1048,24 @@ Zotero.Integration.Session.prototype.addCitation = function(index, noteIndex, ar
var citation = arg;
}
- // update if completeCitation tells us to
- if(this.completeCitation(citation)) this.updateIndices[index] = true;
-
- citation.properties.index = index;
- citation.properties.noteIndex = noteIndex;
- this.citationsByIndex[index] = citation;
-
- // add to citationsByItemID and citationsByIndex
- this.getCitationPositions(citation, true);
+ // get items
for(var i=0; i<citation.citationItems.length; i++) {
var citationItem = citation.citationItems[i];
- if(!this.citationsByItemID[citationItem.itemID]) {
- this.citationsByItemID[citationItem.itemID] = [citation];
- } else {
- var byItemID = this.citationsByItemID[citationItem.itemID];
- if(byItemID[byItemID.length-1].properties.index < index) {
- // if index is greater than the last index, add to end
- byItemID.push(citation);
- } else {
- // otherwise, splice in at appropriate location
- for(var j=0; byItemID[j].properties.index < index && j<byItemID.length-1; j++) {}
- byItemID.splice(j++, 0, citation);
- for(; j<byItemID.length; j++) {
- this.getCitationPositions(byItemID[j], true);
- }
- }
- }
- }
-}
-
-/**
- * Adds items to a citation whose citationItems contain only item IDs
- */
-Zotero.Integration.Session.prototype.completeCitation = function(object) {
- // replace item IDs with real items
- var returnNeedUpdate = false;
- for(var i=0; i<object.citationItems.length; i++) {
- var citationItem = object.citationItems[i];
// get Zotero item
var zoteroItem = false;
if(citationItem.uri) {
[zoteroItem, needUpdate] = this.uriMap.getZoteroItemForURIs(citationItem.uri);
-
- if(!returnNeedUpdate && needUpdate) returnNeedUpdate = true;
+ if(needUpdate) this.updateIndices[index] = true;
} else {
if(citationItem.key) {
zoteroItem = Zotero.Items.getByKey(citationItem.key);
} else if(citationItem.itemID) {
zoteroItem = Zotero.Items.get(citationItem.itemID);
+ } else if(citationItem.id) {
+ zoteroItem = Zotero.Items.get(citationItem.id);
}
-
- if(zoteroItem) returnNeedUpdate = true;
+ if(zoteroItem) this.updateIndices[index] = true;
}
// if no item, check if it was already reselected and otherwise handle as a missing item
@@ -1098,6 +1076,9 @@ Zotero.Integration.Session.prototype.completeCitation = function(object) {
} else if(citationItem.key) {
var reselectKeys = [citationItem.key];
var reselectKeyType = RESELECT_KEY_ITEM_KEY;
+ } else if(citationItem.id) {
+ var reselectKeys = [citationItem.id];
+ var reselectKeyType = RESELECT_KEY_ITEM_ID;
} else {
var reselectKeys = [citationItem.itemID];
var reselectKeyType = RESELECT_KEY_ITEM_ID;
@@ -1107,8 +1088,8 @@ Zotero.Integration.Session.prototype.completeCitation = function(object) {
for each(var reselectKey in reselectKeys) {
if(this.reselectedItems[reselectKey]) {
zoteroItem = Zotero.Items.get(this.reselectedItems[reselectKey]);
- citationItem.itemID = zoteroItem.id;
- returnNeedUpdate = true;
+ citationItem.id = zoteroItem.id;
+ this.updateIndices[index] = true;
break;
}
}
@@ -1116,42 +1097,61 @@ Zotero.Integration.Session.prototype.completeCitation = function(object) {
// if not already reselected, throw a MissingItemException
if(!zoteroItem) {
throw(new Zotero.Integration.MissingItemException(
- reselectKeys, reselectKeyType, i, object.citationItems.length));
+ reselectKeys, reselectKeyType, i, citation.citationItems.length));
}
}
- // get CSL item
- var item = this.itemSet.getItemsByIds([zoteroItem.id])[0];
- if(!item) {
- item = this.itemSet.add([zoteroItem])[0];
-
- this.dateModified[zoteroItem.id] = item.zoteroItem.getField("dateModified", true, true);
- this.updateItemIDs[zoteroItem.id] = true;
+ citationItem.id = zoteroItem.id;
+ }
+
+ citation.properties.added = true;
+ citation.properties.index = index;
+ citation.properties.noteIndex = noteIndex;
+ this.citationsByIndex[index] = citation;
+
+ // add to citationsByItemID and citationsByIndex
+ for(var i=0; i<citation.citationItems.length; i++) {
+ var citationItem = citation.citationItems[i];
+ if(!this.citationsByItemID[citationItem.id]) {
+ this.citationsByItemID[citationItem.id] = [citation];
this.bibliographyHasChanged = true;
+ } else {
+ var byItemID = this.citationsByItemID[citationItem.id];
+ if(byItemID[byItemID.length-1].properties.index < index) {
+ // if index is greater than the last index, add to end
+ byItemID.push(citation);
+ } else {
+ // otherwise, splice in at appropriate location
+ for(var j=0; byItemID[j].properties.index < index && j<byItemID.length-1; j++) {}
+ byItemID.splice(j++, 0, citation);
+ }
}
-
- citationItem.item = item;
- if(!citationItem.itemID) citationItem.itemID = item.id;
}
- return returnNeedUpdate;
+ if(!citation.citationID) {
+ this.newIndices[index] = true;
+ this.updateIndices[index] = true;
+ } else if(!this.oldCitationIDs[citation.citationID]) {
+ this.newIndices[index] = true;
+ this.updateIndices[index] = true;
+ }
+ this.citationIDs[citation.citationID] = true;
}
-
/**
* Unserializes a JSON citation into a citation object (sans items)
*/
Zotero.Integration.Session.prototype.unserializeCitation = function(arg, index) {
if(arg[0] == "{") { // JSON field
// create citation
- var citation = this.style.createCitation();
+ var citation = {};
+ var saveCode = true;
// fix for corrupted fields
var lastBracket = arg.lastIndexOf("}");
if(lastBracket+1 != arg.length) {
- arg = arg.substr(0, lastBracket+1);
+ saveCode = false;
this.updateIndices[index] = true;
- } else {
- citation.properties.field = arg;
+ arg = arg.substr(0, lastBracket+1);
}
// get JSON
@@ -1165,8 +1165,10 @@ Zotero.Integration.Session.prototype.unserializeCitation = function(arg, index)
}
}
- // Fix uppercase citation codes
+ // fix for uppercase citation codes
if(object.CITATIONITEMS) {
+ saveCode = false;
+ this.updateIndices[index] = true;
object.citationItems = [];
for (var i=0; i<object.CITATIONITEMS.length; i++) {
for (var j in object.CITATIONITEMS[i]) {
@@ -1187,14 +1189,24 @@ Zotero.Integration.Session.prototype.unserializeCitation = function(arg, index)
}
}
+ if(!citation.properties) citation.properties = {};
// copy properties
for(var i in object) {
if(Zotero.Integration.Session._saveProperties.indexOf(i) != -1) {
citation.properties[i] = object[i];
+ } else if(i == "locatorType") {
+ citation["label"] = object["locatorType"];
+ this.updateIndices[index] = true;
+ } else if(i == "suppressAuthor") {
+ citation["suppress-author"] = object["suppressAuthor"];
+ this.updateIndices[index] = true;
} else {
citation[i] = object[i];
}
}
+
+ if(!citation.citationID) citation.citationID = Zotero.randomString();
+ if(saveCode) citation.properties.field = arg;
} else { // ye olde style field
var underscoreIndex = arg.indexOf("_");
var itemIDs = arg.substr(0, underscoreIndex).split("|");
@@ -1207,15 +1219,15 @@ Zotero.Integration.Session.prototype.unserializeCitation = function(arg, index)
var citationItems = new Array();
for(var i=0; i<itemIDs.length; i++) {
- var citationItem = {itemID:itemIDs[i]};
+ var citationItem = {id:itemIDs[i]};
if(locators) {
citationItem.locator = locators[i].substr(1);
- citationItem.locatorType = Zotero.Integration._oldCitationLocatorMap[locators[i][0]];
+ citationItem.label = Zotero.Integration._oldCitationLocatorMap[locators[i][0]];
}
citationItems.push(citationItem);
}
- var citation = this.style.createCitation(citationItems);
+ var citation = {"citationItems":citationItems, properties:{}};
this.updateIndices[index] = true;
}
@@ -1223,240 +1235,76 @@ Zotero.Integration.Session.prototype.unserializeCitation = function(arg, index)
}
/**
- * <arks a citation for removal
+ * marks a citation for removal
*/
Zotero.Integration.Session.prototype.deleteCitation = function(index) {
+ var oldCitation = this.citationsByIndex[index];
this.citationsByIndex[index] = {properties:{"delete":true}};
- this.updateIndices[index] = true;
-}
-
-/**
- * Returns a preview, given a citation object (whose citationItems lack item
- * and position) and an index
- */
-Zotero.Integration.Session.prototype.previewCitation = function(citation) {
- // get length of item set, so we can tell how many items we've added
- var itemSetLength = this.itemSet.items.length;
- // add citation items
- this.completeCitation(citation);
- // get list of items we later have to delete
- var deleteItems = this.itemSet.items.slice(itemSetLength, this.itemSet.items.length);
- // get position
- this.getCitationPositions(citation);
- // sort item set
- this.sortItemSet();
- // sort citation if desired
- if(citation.properties.sort) {
- citation.sort();
- }
- // get preview citation
- var text = this.style.formatCitation(citation, "Integration");
-
- // delete from item set
- if(deleteItems.length) {
- this.itemSet.remove(deleteItems);
- }
-
- return text;
-}
-
-
-/**
- * Brings up the addCitationDialog, prepopulated if a citation is provided
- */
-Zotero.Integration.Session.prototype.editCitation = function(index, noteIndex, citation) {
- var me = this;
- var io = new function() { this.wrappedJSObject = this; }
- // if there's already a citation, make sure we have item IDs in addition to keys
- if(citation) {
- var zoteroItem;
- for each(var citationItem in citation.citationItems) {
- var item = false;
- if(!citationItem.itemID) {
- zoteroItem = false;
- if(citationItem.uri) {
- [zoteroItem, ] = this.uriMap.getZoteroItemForURIs(citationItem.uri);
- } else if(citationItem.key) {
- zoteroItem = Zotero.Items.getByKey(citationItem.key);
+ if(oldCitation.citationItems & oldCitation.properties.added) {
+ // clear out old citations if necessary
+ for each(var citationItem in oldCitation.citationItems) {
+ if(this.citationsByItemID[citationItem.id]) {
+ var indexInItemID = this.citationsByItemID[citationItem.id].indexOf(oldCitation);
+ if(indexInItemID !== -1) {
+ this.citationsByItemID[citationItem.id] = this.citationsByItemID[citationItem.id].splice(indexInItemID, 1);
+ if(this.citationsByItemID[citationItem.id].length == 0) {
+ delete this.citationsByItemID[citationItem.id];
+ }
}
- if(zoteroItem) citationItem.itemID = zoteroItem.id;
}
}
}
+ if(oldCitation.citationID) delete this.citationIDs[oldCitation.citationID];
- // create object to hold citation
- io.citation = (citation ? citation.clone() : this.style.createCitation());
- io.citation.properties.index = parseInt(index, 10);
- // assign preview function
- io.previewFunction = function() {
- return me.previewCitation(io.citation);
- }
-
- var window = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
- .getService(Components.interfaces.nsIWindowWatcher)
- .openWindow(null, 'chrome://zotero/content/integration/addCitationDialog.xul', '',
- 'chrome,centerscreen,resizable', io);
- while(!window.closed) Zotero.mainThread.processNextEvent(true);
-
- if(citation && !io.citation.citationItems.length) {
- io.citation = citation;
- }
-
- if(io.citation.citationItems.length) { // we have an item
- this.addCitation(index, noteIndex, io.citation);
- this.updateIndices[index] = true;
- }
-
- // resort item set if necessary
- this.sortItemSet();
-
- return !!io.citation.citationItems.length;
+ this.updateIndices[index] = true;
}
/**
- * Sets position attribute on a citation
+ * Gets integration bibliography
*/
-Zotero.Integration.Session.prototype.getCitationPositions = function(citation, update) {
- for(var previousIndex = citation.properties.index-1;
- previousIndex != -1
- && (!this.citationsByIndex[previousIndex]
- || this.citationsByIndex[previousIndex].properties["delete"]);
- previousIndex--) {}
- var previousCitation = (previousIndex == -1 ? false : this.citationsByIndex[previousIndex]);
-
- // if only one source, and it's the same as the last, use ibid
- if( // there must be a previous citation with one item, and this citation
- // may only have one item
- previousCitation && citation.citationItems.length == 1
- && previousCitation.citationItems.length == 1
- // the previous citation must have been a citation of the same item
- && citation.citationItems[0].item == previousCitation.citationItems[0].item
- // the previous citation must reside either in this note or the note before
- && ((!citation.properties.noteIndex && !previousCitation.properties.noteIndex) ||
- (citation.properties.noteIndex == previousCitation.properties.noteIndex+1) ||
- (citation.properties.noteIndex == previousCitation.properties.noteIndex))
- // and if the previous citation had a locator (page number, etc.)
- // then this citation must have a locator, or else we should do the
- // full citation (see Chicago Manual of Style)
- && (!previousCitation.citationItems[0].locator || citation.citationItems[0].locator)) {
- // use ibid, but check whether to use ibid+pages
- var newPosition = (citation.citationItems[0].locator == previousCitation.citationItems[0].locator
- && citation.citationItems[0].locatorType == previousCitation.citationItems[0].locatorType
- ? Zotero.CSL.POSITION_IBID : Zotero.CSL.POSITION_IBID_WITH_LOCATOR);
- // update if desired
- if(update && (citation.citationItems[0].position || newPosition) && citation.citationItems[0].position != newPosition) {
- this.updateIndices[citation.properties.index] = true;
- }
- citation.citationItems[0].position = newPosition;
- } else {
- // loop through to see which are first citations
- for(var i=0; i<citation.citationItems.length; i++) {
- var citationItem = citation.citationItems[i];
- var newPosition = (!this.citationsByItemID[citationItem.itemID]
- || this.citationsByItemID[citationItem.itemID][0].properties.index >= citation.properties.index
- ? Zotero.CSL.POSITION_FIRST : Zotero.CSL.POSITION_SUBSEQUENT);
-
- // update if desired
- if(update && (citation.citationItems[i].position || newPosition) && citation.citationItems[i].position != newPosition) {
- this.updateIndices[citation.properties.index] = true;
- }
- citation.citationItems[i].position = newPosition;
- }
- }
+Zotero.Integration.Session.prototype.getBibliography = function() {
+ // use real RTF, but chop off the first \n
+ return Zotero.Cite.makeFormattedBibliography(this.style, "rtf", this.customBibliographyText);
}
/**
- * Updates the ItemSet, adding and deleting bibliography items as appropriate, then re-sorting
+ * Calls CSL.Engine.updateItems() to reconcile item list with current items in document
*/
-Zotero.Integration.Session.prototype.updateItemSet = function() {
- var deleteItems = [];
- var missingItems = [];
-
- // see if items were deleted from Zotero
- for(var i in this.citationsByItemID) {
- if (!Zotero.Items.get(i)) {
- deleteItems.push(i);
- missingItems.push(i);
+Zotero.Integration.Session.prototype.updateItems = function() {
+ var items = [[i, this.citationsByItemID[i][0]] for(i in this.citationsByItemID)
+ if(this.citationsByItemID[i] && this.citationsByItemID[i].length &&
+ this.citationsByItemID[i].some(function(citation) citation.properties && !citation.properties.delete))];
+
+ items.sort(function(a, b) {
+ // if first citation of each in different citations, use citation index
+ if(a[1].properties.index != b[1].properties.index) {
+ return a[1].properties.index-b[1].properties.index;
}
- }
-
- // see if old items were deleted or changed
- for each(var item in this.itemSet.items) {
- var itemID = item.id;
- // see if items were removed
- if(!this.citationsByItemID[itemID] && !this.uncitedItems[itemID]) {
- deleteItems.push(itemID);
- continue;
- }
-
- if(item.zoteroItem && this.dateModified[itemID] != item.zoteroItem.getField("dateModified", true, true)) {
- // update date modified
- this.dateModified[itemID] = item.zoteroItem.getField("dateModified", true, true);
- // add to list of updated item IDs
- this.updateItemIDs[itemID] = true;
+ // if a and b were both first cited in the same citation, look for index in the citation
+ for each(var citationItem in a[1].citationItems) {
+ if(citationItem.id == a[0]) {
+ return -1;
+ } else if(citationItem.id == b[0]) {
+ return 1;
+ }
}
- }
-
- // delete items from item set
- if(deleteItems.length) {
- this.itemSet.remove(deleteItems);
- this.bibliographyHasChanged = true;
- }
+
+ // should never happen
+ Zotero.debug("WARNING: Zotero.Integration.Session.updateItems sort function returned 0");
+ return 0;
+ });
- this.sortItemSet();
-}
-
-/**
- * Sorts the ItemSet
- */
-Zotero.Integration.Session.prototype.sortItemSet = function() {
- // save first index
- for(var itemID in this.citationsByItemID) {
- if(this.citationsByItemID[itemID]) {
- var item = this.itemSet.getItemsByIds([itemID])[0];
- if(item) item.setProperty("index", this.citationsByItemID[itemID][0].properties.index);
- }
- }
+ // get rid of the second part of the items (the first citation, used for sort purposes)
+ // and also add in the uncited items
+ items = [parseInt(item[0]) for each(item in items)].concat([parseInt(i) for(i in this.uncitedItems)]);
- var citationChanged = this.itemSet.resort();
+ //Zotero.debug("items are ");
+ //Zotero.debug(items);
- // add to list of updated item IDs
- for each(var item in citationChanged) {
- this.updateItemIDs[item.id] = true;
- this.bibliographyHasChanged = true;
- }
-}
-
-/**
- * Edits integration bibliography
- */
-Zotero.Integration.Session.prototype.editBibliography = function() {
- var bibliographyEditor = new Zotero.Integration.Session.BibliographyEditInterface(this);
- var io = new function() { this.wrappedJSObject = bibliographyEditor; }
-
- this.bibliographyDataHasChanged = this.bibliographyHasChanged = true;
-
- var window = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
- .getService(Components.interfaces.nsIWindowWatcher)
- .openWindow(null, 'chrome://zotero/content/integration/editBibliographyDialog.xul', '',
- 'chrome,centerscreen,resizable', io, true);
- while(!window.closed) Zotero.mainThread.processNextEvent(true);
-}
-
-/**
- * Gets integration bibliography
- */
-Zotero.Integration.Session.prototype.getBibliography = function() {
- // use real RTF, but chop off the first \n
- var text = this.style.formatBibliography(this.itemSet, "RTF")
- var nlIndex = text.indexOf("\n");
- if(nlIndex !== -1) {
- return "{\\rtf "+text.substr(text.indexOf("\n"));
- } else {
- return "";
- }
+ // set items in the bibliography
+ this.style.updateItems(items);
}
/**
@@ -1480,8 +1328,70 @@ Zotero.Integration.Session.prototype.updateUpdateIndices = function(regenerateAl
}
}
-Zotero.Integration.Session._rtfEscapeFunction = function(aChar) {
- return "{\\uc0\\u"+aChar.charCodeAt(0).toString()+"}"
+/**
+ * Returns a formatted citation
+ */
+Zotero.Integration.Session.prototype.formatCitation = function(index, citation) {
+ if(!this.citationText[index]) {
+ //this.updateItems();
+ var citationIndices = [];
+ var citationsPre = [];
+ for(var i=0; i<index; i++) {
+ if(this.citationsByIndex[i] && !this.newIndices[i] && !this.citationsByIndex[i].properties.delete) {
+ citationsPre.push([this.citationsByIndex[i].citationID, this.citationsByIndex[i].properties.noteIndex]);
+ citationIndices.push(i);
+ }
+ }
+ citationIndices.push(index);
+ var citationsPost = [];
+ for(var i=index+1; i<this.citationsByIndex.length; i++) {
+ if(this.citationsByIndex[i] && !this.newIndices[i] && !this.citationsByIndex[i].properties.delete) {
+ citationsPost.push([this.citationsByIndex[i].citationID, this.citationsByIndex[i].properties.noteIndex]);
+ citationIndices.push(i);
+ }
+ }
+ //Zotero.debug(citation);
+ //Zotero.debug(citationsPre);
+ //Zotero.debug(citationsPost);
+ //Zotero.debug(this.style.registry.registry.toSource());
+ var newCitations = this.style.processCitationCluster(citation, citationsPre, citationsPost);
+ for each(var newCitation in newCitations) {
+ this.citationText[citationIndices[newCitation[0]]] = newCitation[1];
+ }
+ // this is a heuristic: if other citations get updated, then we should update the
+ // bibliography. it would be nice if citeproc-js gave us a better hint about this
+ return (newCitations.length > 1);
+ }
+}
+
+/**
+ * Updates the list of citations to be serialized to the document
+ */
+Zotero.Integration.Session.prototype.updateCitations = function() {
+ Zotero.debug("Zotero.Integration: indices of new citations");
+ Zotero.debug([key for(key in this.newIndices)]);
+ Zotero.debug("Zotero.Integration: indices of updated citations");
+ Zotero.debug([key for(key in this.updateIndices)]);
+ var deleteCitations = [];
+ for each(var indexList in [this.newIndices, this.updateIndices]) {
+ for(var index in indexList) {
+ index = parseInt(index, 10);
+ var citation = this.citationsByIndex[index];
+ if(citation.properties.delete) {
+ deleteCitations.push(index);
+ continue;
+ }
+ if(this.formatCitation(index, citation)) {
+ this.bibliographyHasChanged = true;
+ }
+ if(!this.citationIDs[citation.citationID]) {
+ this.citationIDs[citation.citationID] = citation;
+ }
+ delete this.newIndices[index];
+ }
+ }
+
+ return deleteCitations;
}
/**
@@ -1519,8 +1429,6 @@ Zotero.Integration.Session.prototype.loadBibliographyData = function(json) {
}
}
- this.loadUncitedItems();
-
// set custom bibliography entries
if(documentData.custom) {
if(documentData.custom[0]) {
@@ -1531,11 +1439,9 @@ Zotero.Integration.Session.prototype.loadBibliographyData = function(json) {
if(!zoteroItem) continue;
if(needUpdate) this.bibliographyDataHasChanged = true;
- var item = this.itemSet.getItemsByIds([zoteroItem.id])[0];
- if(!item) continue;
-
- item.setProperty("bibliography-Integration", custom[1]);
- item.setProperty("bibliography-RTF", custom[1]);
+ if(this.citationsByItemID[zoteroItem.id] || this.uncitedItems[zoteroItem.id]) {
+ this.customBibliographyText[zoteroItem.id] = custom[1];
+ }
}
} else {
// old style hash
@@ -1544,10 +1450,9 @@ Zotero.Integration.Session.prototype.loadBibliographyData = function(json) {
if(!zoteroItem) zoteroItem = Zotero.Items.get(itemID);
if(!zoteroItem) continue;
- var item = this.itemSet.getItemsByIds([zoteroItem.id])[0];
- if (!item) continue;
- item.setProperty("bibliography-Integration", documentData.custom[itemID]);
- item.setProperty("bibliography-RTF", documentData.custom[itemID]);
+ if(this.citationsByItemID[zoteroItem.id] || this.uncitedItems[zoteroItem.id]) {
+ this.customBibliographyText[zoteroItem.id] = documentData.custom[itemID];
+ }
}
this.bibliographyDataHasChanged = true;
}
@@ -1557,21 +1462,6 @@ Zotero.Integration.Session.prototype.loadBibliographyData = function(json) {
}
/**
- * Adds items in this.uncitedItems to itemSet, if they are not already there
- */
-Zotero.Integration.Session.prototype.loadUncitedItems = function() {
- for(var itemID in this.uncitedItems) {
- // skip "undefined"
- if(!this.uncitedItems[itemID]) continue;
- var item = this.itemSet.getItemsByIds([itemID])[0];
- if(!item) {
- var zoteroItem = Zotero.Items.get(itemID);
- if(zoteroItem) this.itemSet.add([zoteroItem]);
- }
- }
-}
-
-/**
* Saves document data from a JSON object
*/
Zotero.Integration.Session.prototype.getBibliographyData = function() {
@@ -1586,17 +1476,8 @@ Zotero.Integration.Session.prototype.getBibliographyData = function() {
}
// look for custom bibliography entries
- if(this.itemSet.items.length) {
- for(var i=0; i<this.itemSet.items.length; i++) {
- var custom = this.itemSet.items[i].getProperty("bibliography-RTF");
- if(custom !== "") {
- if(!bibliographyData.custom) bibliographyData.custom = [];
- bibliographyData.custom.push([
- this.uriMap.getURIsForItemID(this.itemSet.items[i].id),
- this.itemSet.items[i].getProperty("bibliography-RTF")]);
- }
- }
- }
+ bibliographyData.custom = [[this.uriMap.getURIsForItemID(id), this.customBibliographyText[id]]
+ for(id in this.customBibliographyText)];
if(bibliographyData.uncited || bibliographyData.custom) {
return Zotero.JSON.serialize(bibliographyData);
@@ -1606,6 +1487,88 @@ Zotero.Integration.Session.prototype.getBibliographyData = function() {
}
/**
+ * Returns a preview, given a citation object (whose citationItems lack item
+ * and position)
+ */
+Zotero.Integration.Session.prototype.previewCitation = function(citation) {
+ // add citation items
+ this.addCitation(citation.properties.index, citation.properties.noteIndex, citation);
+ //this.updateItems();
+ this.formatCitation(citation.properties.index, citation);
+ this.deleteCitation(citation.properties.index);
+ var citationText = this.citationText[citation.properties.index];
+ delete this.citationText[citation.properties.index];
+ return citationText;
+}
+
+/**
+ * Brings up the addCitationDialog, prepopulated if a citation is provided
+ */
+Zotero.Integration.Session.prototype.editCitation = function(index, noteIndex, citation) {
+ var me = this;
+ var io = new function() { this.wrappedJSObject = this; }
+
+ // if there's already a citation, make sure we have item IDs in addition to keys
+ if(citation) {
+ var zoteroItem;
+ for each(var citationItem in citation.citationItems) {
+ var item = false;
+ if(!citationItem.id) {
+ zoteroItem = false;
+ if(citationItem.uri) {
+ [zoteroItem, ] = this.uriMap.getZoteroItemForURIs(citationItem.uri);
+ } else if(citationItem.key) {
+ zoteroItem = Zotero.Items.getByKey(citationItem.key);
+ }
+ if(zoteroItem) citationItem.id = zoteroItem.id;
+ }
+ }
+ }
+
+ // create object to hold citation
+ io.citation = (citation ? Zotero.JSON.unserialize(Zotero.JSON.serialize(citation)) : {"citationItems":{}, "properties":{}});
+ io.citation.properties.index = parseInt(index, 10);
+ io.citation.properties.noteIndex = parseInt(noteIndex, 10);
+ // assign preview function
+ io.previewFunction = function() {
+ return me.previewCitation(io.citation);
+ }
+
+ var window = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
+ .getService(Components.interfaces.nsIWindowWatcher)
+ .openWindow(null, 'chrome://zotero/content/integration/addCitationDialog.xul', '',
+ 'chrome,centerscreen,resizable', io);
+ while(!window.closed) Zotero.mainThread.processNextEvent(true);
+
+ if(citation && !io.citation.citationItems.length) {
+ io.citation = citation;
+ }
+
+ if(io.citation.citationItems.length) { // we have an item
+ this.addCitation(index, noteIndex, io.citation);
+ this.updateIndices[index] = true;
+ }
+
+ return !!io.citation.citationItems.length;
+}
+
+/**
+ * Edits integration bibliography
+ */
+Zotero.Integration.Session.prototype.editBibliography = function() {
+ var bibliographyEditor = new Zotero.Integration.Session.BibliographyEditInterface(this);
+ var io = new function() { this.wrappedJSObject = bibliographyEditor; }
+
+ this.bibliographyDataHasChanged = this.bibliographyHasChanged = true;
+
+ var window = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
+ .getService(Components.interfaces.nsIWindowWatcher)
+ .openWindow(null, 'chrome://zotero/content/integration/editBibliographyDialog.xul', '',
+ 'chrome,centerscreen,resizable', io, true);
+ while(!window.closed) Zotero.mainThread.processNextEvent(true);
+}
+
+/**
* @class Interface for bibliography editor to alter document bibliography
* @constructor
* Creates a new bibliography editor interface
@@ -1613,63 +1576,65 @@ Zotero.Integration.Session.prototype.getBibliographyData = function() {
*/
Zotero.Integration.Session.BibliographyEditInterface = function(session) {
this.session = session;
+ this._update();
}
/**
- * Gets the @link {Zotero.CSL.ItemSet} for the bibliography being edited
- * The item set should not be modified, but may be used to determine what items are in the
- * bibliography.
+ * Updates stored bibliography
*/
-Zotero.Integration.Session.BibliographyEditInterface.prototype.getItemSet = function() {
- return this.session.itemSet;
+Zotero.Integration.Session.BibliographyEditInterface.prototype._update = function() {
+ this.session.updateItems();
+ this.session.style.setOutputFormat("rtf");
+ this.bibliography = this.session.style.makeBibliography();
+ for(var i in this.bibliography[0].entry_ids) {
+ if(this.session.customBibliographyText[this.bibliography[0].entry_ids[i]]) {
+ this.bibliography[1][i] = this.session.customBibliographyText[this.bibliography[0].entry_ids[i]];
+ }
+ }
}
/**
- * Checks whether an item is cited in the bibliography being edited
+ * Checks whether an item ID is cited in the bibliography being edited
*/
Zotero.Integration.Session.BibliographyEditInterface.prototype.isCited = function(item) {
- if(this.session.citationsByItemID[item.id]) return true;
+ if(this.session.citationsByItemID[item]) return true;
return false;
}
/**
- * Checks whether an item is cited in the bibliography being edited
+ * Adds an item to the bibliography
*/
-Zotero.Integration.Session.BibliographyEditInterface.prototype.add = function(item) {
+Zotero.Integration.Session.BibliographyEditInterface.prototype.add = function(itemID) {
// create new item
- this.session.itemSet.add([item]);
- this.session.uncitedItems[item.id] = true;
- this.session.sortItemSet();
+ this.session.uncitedItems[itemID] = true;
+ this._update();
}
/**
* Removes an item from the bibliography being edited
*/
-Zotero.Integration.Session.BibliographyEditInterface.prototype.remove = function(item) {
- // create new item
- this.session.itemSet.remove([item]);
- this.session.sortItemSet();
-
+Zotero.Integration.Session.BibliographyEditInterface.prototype.remove = function(itemID) {
// delete citations if necessary
- var itemID = item.id;
if(this.session.citationsByItemID[itemID]) {
for(var j=0; j<this.session.citationsByItemID[itemID].length; j++) {
var citation = this.session.citationsByItemID[itemID][j];
this.session.updateIndices[citation.properties.index] = true;
citation.properties["delete"] = true;
}
+ delete this.session.citationsByItemID[itemID];
}
// delete uncited if neceessary
- if(this.session.uncitedItems[itemID]) this.session.uncitedItems[itemID] = undefined;
+ if(this.session.uncitedItems[itemID]) delete this.session.uncitedItems[itemID];
+ this._update();
}
/**
- * Generates a preview of the bibliography entry for a given item
+ * Sets custom bibliography text for a given item
*/
-Zotero.Integration.Session.BibliographyEditInterface.prototype.preview = function(item) {
- var itemSet = this.session.style.createItemSet([item]);
- return this.session.style.formatBibliography(itemSet, "Integration");
+Zotero.Integration.Session.BibliographyEditInterface.prototype.setCustomText = function(itemID, text) {
+ this.session.customBibliographyText[itemID] = text;
+ this._update();
}
/**
@@ -1688,7 +1653,7 @@ Zotero.Integration.DocumentData = function(string) {
* Serializes document-specific data as XML
*/
Zotero.Integration.DocumentData.prototype.serializeXML = function() {
- var xmlData = <data><session id={this.sessionID} />
+ var xmlData = <data data-version={DATA_VERSION} zotero-version={Zotero.version}><session id={this.sessionID} />
<style id={this.style.styleID} hasBibliography={this.style.hasBibliography ? 1 : 0}/>
<prefs/>
</data>;
@@ -1719,6 +1684,8 @@ Zotero.Integration.DocumentData.prototype.unserializeXML = function(xmlData) {
for each(var pref in xmlData.prefs.children()) {
this.prefs[pref.@name.toString()] = pref.@value.toString();
}
+ this.zoteroVersion = xmlData["@zotero-version"].length() ? xmlData["@zotero-version"].toString() : "2.0";
+ this.dataVersion = xmlData["@data-version"].length() ? xmlData["@data-version"].toString() : 2;
}
/**
@@ -1749,6 +1716,9 @@ Zotero.Integration.DocumentData.prototype.unserialize = function(input) {
} else {
this.prefs.noteType = 0;
}
+
+ this.zoteroVersion = "2.0b6 or earlier";
+ this.dataVersion = 1;
}
}
diff --git a/chrome/content/zotero/xpcom/quickCopy.js b/chrome/content/zotero/xpcom/quickCopy.js
@@ -391,28 +391,21 @@ Zotero.QuickCopy = new function() {
}
var csl = Zotero.Styles.get(format).csl;
- var itemSet = csl.createItemSet(items);
+ csl.updateItems([item.id for each(item in items)]);
// Copy citations if shift key pressed
if (modified) {
- var itemIDs = [];
- for (var i=0; i<items.length; i++) {
- itemIDs.push(items[i].id);
- }
- var citation = csl.createCitation(itemSet.getItemsByIds(itemIDs));
- var bibliography = {
- text: csl.formatCitation(citation, contentType == "html" ? 'HTML' : 'Text'),
- html: csl.formatCitation(citation, "HTML")
- }
- }
- else {
- var bibliography = {
- text: csl.formatBibliography(itemSet, contentType == "html" ? "HTML" : "Text"),
- html: csl.formatBibliography(itemSet, "HTML")
- };
+ var citation = {citationItems:[{id:item.id} for each(item in items)], properties:{}};
+ this.session.style.setOutputFormat("html");
+ var html = csl.appendCitationCluster(citation, true)[0][1];
+ this.session.style.setOutputFormat("text");
+ var text = csl.appendCitationCluster(citation, true)[0][1];
+ } else {
+ var html = Zotero.Cite.makeFormattedBibliography(csl, "html");
+ var text = Zotero.Cite.makeFormattedBibliography(csl, "text");
}
- return bibliography;
+ return {text:(contentType == "html" ? html : text), html:html};
}
throw ("Invalid mode '" + mode + "' in Zotero.QuickCopy.getContentFromItems()");
diff --git a/chrome/content/zotero/xpcom/style.js b/chrome/content/zotero/xpcom/style.js
@@ -61,7 +61,7 @@ Zotero.Styles = new function() {
/**
* Reads all styles from a given directory and caches their metadata
- * @privates
+ * @private
*/
function _readStylesFromDirectory(dir, hidden) {
var i = 0;
@@ -156,7 +156,7 @@ Zotero.Styles = new function() {
var xml = enConverter.parse();
} else {
// CSL
- var xml = new XML(Zotero.CSL.Global.cleanXML(style));
+ var xml = new XML(this.cleanXML(xml));
}
} catch(e) {
error = e;
@@ -280,6 +280,13 @@ Zotero.Styles = new function() {
return false;
}
+
+ this.cleanXML = function(str) {
+ // this is where this should happen
+ str = str.replace(/\s*<\?[^>]*\?>\s*\n/g, "");
+ var ret = new XML(str);
+ return ret;
+ }
/**
* Finishes installing a style, copying the file, reloading the style cache, and refreshing the
@@ -346,20 +353,13 @@ Zotero.Style = function(file) {
this.type = "csl";
- var xml = Zotero.CSL.Global.cleanXML(Zotero.File.getContents(file));
- try {
- xml = new XML(xml);
- } catch(e) {
- Zotero.log(e.toString(), "error",
- Zotero.Styles.ios.newFileURI(this.file).spec, xml.split(/\r?\n/)[e.lineNumber-1],
- e.lineNumber);
- return;
- }
+ var xml = Zotero.Styles.cleanXML(Zotero.File.getContents(file));
this.styleID = xml.info.id.toString();
this.title = xml.info.title.toString();
this.updated = xml.info.updated.toString().replace(/(.+)T([^\+]+)\+?.*/, "$1 $2");
this._class = xml.@class.toString();
+ this._hasBibliography = !!xml.bibliography.length();
this.source = null;
for each(var link in xml.info.link) {
@@ -381,22 +381,57 @@ Zotero.Style.prototype.__defineGetter__("csl",
* @type Zotero.CSL
*/
function() {
- // cache last style
- if(Zotero.Styles.cacheTranslatorData && Zotero.Styles.lastCSL &&
- Zotero.Styles.lastCSL.styleID == this.styleID) {
- return Zotero.Styles.lastCSL;
+ var locale = Zotero.Prefs.get('export.bibliographyLocale');
+ if(!locale) {
+ var locale = Zotero.locale;
+ if(!locale) {
+ var locale = 'en-US';
+ }
}
+ return new Zotero.CiteProc.CSL.Engine(Zotero.Cite.System, this.getXML(), Zotero.locale);
+});
+
+Zotero.Style.prototype.__defineGetter__("class",
+/**
+ * Retrieves the style class, either from the metadata that's already loaded or by loading the file
+ * @type String
+ */
+function() {
+ if(!this._class) this.getXML();
+ return this._class;
+});
+
+Zotero.Style.prototype.__defineGetter__("hasBibliography",
+/**
+ * Determines whether or not this style has a bibliography, either from the metadata that's already\
+ * loaded or by loading the file
+ * @type String
+ */
+function() {
+ if(!this._hasBibliography) this.getXML();
+ return this._hasBibliography;
+});
+
+/**
+ * Retrieves the XML corresponding to this style
+ * @type String
+ */
+Zotero.Style.prototype.getXML = function() {
+ // "with ({});" needed to fix default namespace scope issue
+ // See https://bugzilla.mozilla.org/show_bug.cgi?id=330572
+ default xml namespace = "http://purl.org/net/xbiblio/csl"; with ({});
+
if(this.type == "ens") {
// EN style
var string = Zotero.File.getBinaryContents(this.file);
var enConverter = new Zotero.ENConverter(string, null, this.title);
var xml = enConverter.parse();
- } else {
- // "with ({});" needed to fix default namespace scope issue
- // See https://bugzilla.mozilla.org/show_bug.cgi?id=330572
- default xml namespace = "http://purl.org/net/xbiblio/csl"; with ({});
+ this._class = xml.@class.toString();
+ this._hasBibliography = !!xml.bibliography.length();
+ return XML.toXMLString();
+ } else {
if(this.source) {
// parent/child
var formatCSL = Zotero.Styles.get(this.source);
@@ -409,22 +444,9 @@ function() {
var file = this.file;
}
- var cslString = Zotero.File.getContents(file);
- var xml = new XML(Zotero.CSL.Global.cleanXML(cslString));
+ return Zotero.File.getContents(file);
}
-
- return (Zotero.Styles.lastCSL = new Zotero.CSL(xml));
-});
-
-Zotero.Style.prototype.__defineGetter__("class",
-/**
- * Retrieves the style class, either from the metadata that's already loaded or by loading the file
- * @type String
- */
-function() {
- if(this._class) return this._class;
- return (this._class = this.csl.class);
-});
+};
/**
* Deletes a style
diff --git a/chrome/content/zotero/xpcom/zotero.js b/chrome/content/zotero/xpcom/zotero.js
@@ -1943,8 +1943,8 @@ 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.CSL.Global.locale != 'en-US') {
- months = months.concat(Zotero.CSL.Global.getMonthStrings("short"));
+ if (Zotero.locale != 'en-US') {
+ months = months.concat(Zotero.Cite.getMonthStrings("short"));
}
if(!_monthRe) {
_monthRe = new RegExp("^(.*)\\b("+months.join("|")+")[^ ]*(?: (.*)$|$)", "i");
@@ -2020,7 +2020,7 @@ Zotero.Date = new function(){
string += date.part+" ";
}
- var months = Zotero.CSL.Global.getMonthStrings("long");
+ var months = Zotero.Cite.getMonthStrings("long");
if(date.month != undefined && months[date.month]) {
// get short month strings from CSL interpreter
string += months[date.month];
diff --git a/chrome/locale/en-US/zotero/zotero.properties b/chrome/locale/en-US/zotero/zotero.properties
@@ -575,7 +575,8 @@ integration.missingItem.single = This item no longer exists in your Zotero dat
integration.missingItem.multiple = Item %1$S in this citation no longer exists in your Zotero database. Do you want to select a substitute item?
integration.missingItem.description = Clicking "No" will delete the field codes for citations containing this item, preserving the citation text but deleting it from your bibliography.
integration.removeCodesWarning = Removing field codes will prevent Zotero from updating citations and bibliographies in this document. Are you sure you want to continue?
-integration.upgradeWarning = Your document must be permanently upgraded in order to work with Zotero 2.0b7 or later. It is recommended that you make a backup before proceeding. Are you sure you want to continue?
+integration.upgradeWarning = Your document must be permanently upgraded in order to work with Zotero 2.1 or later. It is recommended that you make a backup before proceeding. Are you sure you want to continue?
+integration.error.newerDocumentVersion = Your document was created with a newer version of Zotero (%1$S) than the currently installed version (%1$S). Please upgrade Zotero before editing this document.
integration.corruptField = The Zotero field code corresponding to this citation, which tells Zotero which item in your library this citation represents, has been corrupted. Would you like to reselect the item?
integration.corruptField.description = Clicking "No" will delete the field codes for citations containing this item, preserving the citation text but potentially deleting it from your bibliography.
integration.corruptBibliography = The Zotero field code for your bibliography is corrupted. Should Zotero clear this field code and generate a new bibliography?
diff --git a/chrome/skin/default/zotero/timeline/bundle.js b/chrome/skin/default/zotero/timeline/bundle.js
@@ -233,7 +233,7 @@ Timeline.GregorianDateLabeller=function(locale,timeZone){this._locale=locale;thi
Modified by Ben for Zotero
*/
-Timeline.GregorianDateLabeller.monthNames = Zotero.CSL.Global.getMonthStrings("short");
+Timeline.GregorianDateLabeller.monthNames = Zotero.Cite.getMonthStrings("short");
Timeline.GregorianDateLabeller.getMonthName=function(month,locale) {
return Timeline.GregorianDateLabeller.monthNames[month];
};
diff --git a/components/zotero-service.js b/components/zotero-service.js
@@ -18,9 +18,9 @@ var xpcomFiles = [
'zotero',
'annotate',
'attachments',
+ 'cite',
'collectionTreeView',
'commons',
- 'csl',
'dataServer',
'data_access',
'data/dataObjects',
@@ -74,7 +74,17 @@ var xpcomFiles = [
'zeroconf'
];
-for (var i=0; i<xpcomFiles.length; i++) {
+Cc["@mozilla.org/moz/jssubscript-loader;1"]
+ .getService(Ci.mozIJSSubScriptLoader)
+ .loadSubScript("chrome://zotero/content/xpcom/" + xpcomFiles[0] + ".js");
+
+// Load CiteProc into Zotero.CiteProc namespace
+Zotero.CiteProc = {};
+Cc["@mozilla.org/moz/jssubscript-loader;1"]
+ .getService(Ci.mozIJSSubScriptLoader)
+ .loadSubScript("chrome://zotero/content/xpcom/citeproc.js", Zotero.CiteProc);
+
+for (var i=1; i<xpcomFiles.length; i++) {
try {
Cc["@mozilla.org/moz/jssubscript-loader;1"]
.getService(Ci.mozIJSSubScriptLoader)
@@ -107,7 +117,6 @@ for (var i=0; i<rdfXpcomFiles.length; i++) {
.loadSubScript("chrome://zotero/content/xpcom/" + rdfXpcomFiles[i] + ".js", Zotero.RDF.AJAW);
}
-
Cc["@mozilla.org/moz/jssubscript-loader;1"]
.getService(Ci.mozIJSSubScriptLoader)
.loadSubScript("chrome://global/content/nsTransferable.js");