Merge branch 'master' into api_syncing
Note that this loses conflicting changes to translate_item.js from 849803473a
,
so those will need to be reapplied if applicable. /cc @aurimasv, @mtd91429
This commit is contained in:
commit
a03772cae7
172 changed files with 3402 additions and 2540 deletions
|
@ -47,6 +47,54 @@
|
|||
padding: 5px 1px 5px 11px;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* The searchbox focus ring is incorrect in Yosemite pre-Fx34, so use the old searchbox shape
|
||||
* (with code borrowed from the Fx Add-ons window and icons borrowed from the Fx searchbar).
|
||||
* These styles, the 'oldsearchfield' assignment in zoteroPane.js, and the Search.png icons
|
||||
* can be removed after Fx31 ESR.
|
||||
*
|
||||
* Note: This uses navigator.oscpu in zoteroPane.js to test for Yosemite instead of
|
||||
* -moz-mac-yosemite-theme here because the latter isn't defined in Fx31.
|
||||
*/
|
||||
#zotero-pane-stack[oldsearchfield] textbox[type=search] {
|
||||
margin: 0;
|
||||
-moz-appearance: none;
|
||||
padding: 3px 5px 2px;
|
||||
border: 1px solid rgba(60,73,97,0.5);
|
||||
border-radius: 10000px;
|
||||
box-shadow: inset 0 1px 1px rgba(0,0,0,0.15), 0 1px rgba(255,255,255,0.25);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
#zotero-pane-stack[oldsearchfield] textbox[type=search][focused] {
|
||||
box-shadow: 0 0 1px -moz-mac-focusring inset, 0 0 4px 1px -moz-mac-focusring, 0 0 1.5px 1px -moz-mac-focusring, inset 0 1px 1px rgba(0,0,0,0.15);
|
||||
border-color: -moz-mac-focusring;
|
||||
}
|
||||
|
||||
#zotero-pane-stack[oldsearchfield] textbox[type=search] > .textbox-input-box {
|
||||
-moz-padding-start: 15px;
|
||||
background: url("chrome://zotero/skin/mac/moz/Search.png") left no-repeat;
|
||||
background-size: 14px;
|
||||
}
|
||||
|
||||
@media (min-resolution: 2dppx) {
|
||||
#zotero-pane-stack[oldsearchfield] textbox[type=search] > .textbox-input-box {
|
||||
background: url("chrome://zotero/skin/mac/moz/Search@2x.png") left no-repeat;
|
||||
background-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
#zotero-pane-stack[oldsearchfield] textbox[type=search] > .textbox-input-box:-moz-locale-dir(rtl) {
|
||||
background-position: right;
|
||||
}
|
||||
|
||||
#zotero-pane-stack[oldsearchfield] textbox[type=search] > .textbox-input-box > html|*.textbox-input::-moz-placeholder {
|
||||
opacity: 1.0;
|
||||
}
|
||||
/* End searchbox focus fix */
|
||||
|
||||
|
||||
#zotero-tb-search-menu-button
|
||||
{
|
||||
margin: -6px -2px -6px -16px;
|
||||
|
@ -207,7 +255,7 @@
|
|||
background-color: #8b8b8b !important;
|
||||
}
|
||||
|
||||
#zotero-collections-splitter[state=collapsed]
|
||||
#zotero-collections-splitter[state=collapsed], #zotero-items-splitter[state=collapsed]
|
||||
{
|
||||
border-right: 1px;
|
||||
border-color: #A5A5A5;
|
||||
|
@ -219,7 +267,7 @@
|
|||
padding: 0;
|
||||
}
|
||||
|
||||
#zotero-collections-splitter[state=collapsed] > grippy
|
||||
#zotero-collections-splitter[state=collapsed] > grippy, #zotero-items-splitter[state=collapsed] > grippy
|
||||
{
|
||||
-moz-appearance: none;
|
||||
background-image: url("chrome://zotero/skin/mac/vgrippy.png");
|
||||
|
@ -249,7 +297,7 @@
|
|||
height: 8px;
|
||||
}
|
||||
|
||||
#zotero-tags-splitter > grippy:hover, #zotero-collections-splitter > grippy:hover
|
||||
#zotero-tags-splitter > grippy:hover, #zotero-collections-splitter > grippy:hover, #zotero-items-splitter > grippy:hover
|
||||
{
|
||||
background-color:transparent;
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ var ZoteroAdvancedSearch = new function() {
|
|||
this.itemsView = false;
|
||||
|
||||
var _searchBox;
|
||||
var _libraryID;
|
||||
|
||||
function onLoad() {
|
||||
_searchBox = document.getElementById('zotero-search-box');
|
||||
|
@ -145,6 +146,7 @@ var ZoteroAdvancedSearch = new function() {
|
|||
|
||||
|
||||
this.onLibraryChange = function (libraryID) {
|
||||
_libraryID = libraryID;
|
||||
document.getElementById('zotero-search-save').disabled = !Zotero.Libraries.isEditable(libraryID);
|
||||
}
|
||||
|
||||
|
|
60
chrome/content/zotero/attachLink.js
Normal file
60
chrome/content/zotero/attachLink.js
Normal file
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
|
||||
Copyright © 2014 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 Affero 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 Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
var Zotero_AttachLink = new function() {
|
||||
function getAttachFileLabel() {
|
||||
return window.opener.document
|
||||
.getElementById('zotero-tb-attachment-add-file-link')
|
||||
.label;
|
||||
};
|
||||
|
||||
this.submit = function() {
|
||||
var link = document.getElementById('zotero-attach-uri-input').value;
|
||||
var message = document.getElementById('zotero-attach-uri-message');
|
||||
var cleanURI = Zotero.Attachments.cleanAttachmentURI(link, true);
|
||||
|
||||
if (!cleanURI) {
|
||||
message.textContent = Zotero.getString('pane.items.attach.link.uri.unrecognized');
|
||||
window.sizeToContent();
|
||||
document.getElementById('zotero-attach-uri-input').select();
|
||||
return false;
|
||||
}
|
||||
// Don't allow "file:" links, because using "Attach link to file" is the right way
|
||||
else if (cleanURI.toLowerCase().indexOf('file:') == 0) {
|
||||
message.textContent = Zotero.getString('pane.items.attach.link.uri.file',
|
||||
[getAttachFileLabel()]);
|
||||
window.sizeToContent();
|
||||
document.getElementById('zotero-attach-uri-input').select();
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
window.arguments[0].out = {
|
||||
link: cleanURI,
|
||||
title: document.getElementById('zotero-attach-uri-title').value
|
||||
};
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
32
chrome/content/zotero/attachLink.xul
Normal file
32
chrome/content/zotero/attachLink.xul
Normal file
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://zotero/skin/zotero.css" type="text/css"?>
|
||||
|
||||
<!DOCTYPE window SYSTEM "chrome://zotero/locale/zotero.dtd">
|
||||
|
||||
<dialog
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
buttons="accept,cancel"
|
||||
ondialogaccept="return Zotero_AttachLink.submit();"
|
||||
|
||||
id="zotero-attach-uri-dialog"
|
||||
title="&zotero.attachLink.title;"
|
||||
>
|
||||
|
||||
<script src="include.js"/>
|
||||
<script src="AttachLink.js"/>
|
||||
|
||||
<vbox id="zotero-attach-uri-container">
|
||||
<hbox>
|
||||
<description id="zotero-attach-uri-message" class="zotero-message-error"></description>
|
||||
</hbox>
|
||||
<hbox align="center">
|
||||
<label id="zotero-attach-uri-label-input" value="&zotero.attachLink.label.link;" control="zotero-attach-uri-input"></label>
|
||||
<textbox id="zotero-attach-uri-input" flex="1"/>
|
||||
</hbox>
|
||||
<hbox align="center">
|
||||
<label id="zotero-attach-uri-label-title" value="&zotero.attachLink.label.title;" control="zotero-attach-uri-title"></label>
|
||||
<textbox id="zotero-attach-uri-title" flex="1" placeholder="&zotero.general.optional;"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</dialog>
|
|
@ -1472,9 +1472,24 @@
|
|||
|
||||
t.select();
|
||||
|
||||
// Leave text field open when window loses focus
|
||||
var ignoreBlur = function () {
|
||||
this.ignoreBlur = true;
|
||||
}.bind(this);
|
||||
var unignoreBlur = function () {
|
||||
this.ignoreBlur = false;
|
||||
}.bind(this);
|
||||
addEventListener("deactivate", ignoreBlur);
|
||||
addEventListener("activate", unignoreBlur);
|
||||
|
||||
t.addEventListener('blur', function () {
|
||||
document.getBindingParent(this).blurHandler(this);
|
||||
}, false);
|
||||
var self = document.getBindingParent(this);
|
||||
if (self.ignoreBlur) return;
|
||||
|
||||
removeEventListener("deactivate", ignoreBlur);
|
||||
removeEventListener("activate", unignoreBlur);
|
||||
self.blurHandler(this);
|
||||
});
|
||||
t.setAttribute('onkeypress', "return document.getBindingParent(this).handleKeyPress(event)");
|
||||
|
||||
this._tabDirection = false;
|
||||
|
|
|
@ -108,7 +108,9 @@
|
|||
<parameter name="skipRefresh"/>
|
||||
<body>
|
||||
<![CDATA[
|
||||
this._search = val ? val.toLowerCase() : false;
|
||||
this._search = val
|
||||
? val.toLowerCase().normalize()
|
||||
: false;
|
||||
|
||||
if (!skipRefresh) {
|
||||
this.refresh();
|
||||
|
|
|
@ -63,11 +63,19 @@ var Zotero_DownloadOverlay = new function() {
|
|||
.getMostRecentWindow("navigator:browser");
|
||||
var libraryID, collection;
|
||||
try {
|
||||
if(win.ZoteroPane.getCollectionTreeRow().filesEditable) {
|
||||
let itemGroup = win.ZoteroPane.getCollectionTreeRow();
|
||||
if (itemGroup.filesEditable) {
|
||||
libraryID = win.ZoteroPane.getSelectedLibraryID();
|
||||
collection = win.ZoteroPane.getSelectedCollection();
|
||||
}
|
||||
} catch(e) {};
|
||||
// TODO: Just show an error instead?
|
||||
else {
|
||||
Zotero.debug("Cannot save files to library " + itemGroup.ref.libraryID
|
||||
+ " -- saving to personal library instead", 2);
|
||||
}
|
||||
} catch(e) {
|
||||
Zotero.debug(e, 1);
|
||||
};
|
||||
|
||||
var recognizePDF = document.getElementById('zotero-recognizePDF').checked
|
||||
&& !document.getElementById('zotero-recognizePDF').hidden
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
|
||||
<script>
|
||||
<![CDATA[
|
||||
Components.utils.import("resource://zotero/config.js");
|
||||
|
||||
var Zotero_Error_Report = new function() {
|
||||
this.init = init;
|
||||
this.sendErrorReport = sendErrorReport;
|
||||
|
@ -74,7 +76,7 @@
|
|||
body += key + '=' + encodeURIComponent(parts[key]) + '&';
|
||||
}
|
||||
body = body.substr(0, body.length - 1);
|
||||
var url = 'https://repo.zotero.org/repo/report';
|
||||
var url = ZOTERO_CONFIG.REPOSITORY_URL + "report";
|
||||
Zotero.HTTP.promise('POST', url,
|
||||
{ body: body, successCodes: false, foreground: true })
|
||||
.then(_sendErrorReportCallback)
|
||||
|
|
|
@ -420,9 +420,10 @@ var Zotero_File_Interface = new function() {
|
|||
var clipboardService = Components.classes["@mozilla.org/widget/clipboard;1"].
|
||||
getService(Components.interfaces.nsIClipboard);
|
||||
var style = Zotero.Styles.get(style);
|
||||
|
||||
var cslEngine = style.getCiteProc();
|
||||
|
||||
// add HTML
|
||||
var bibliography = Zotero.Cite.makeFormattedBibliographyOrCitationList(style, items, "html", asCitations);
|
||||
var bibliography = Zotero.Cite.makeFormattedBibliographyOrCitationList(cslEngine, items, "html", asCitations);
|
||||
var str = Components.classes["@mozilla.org/supports-string;1"].
|
||||
createInstance(Components.interfaces.nsISupportsString);
|
||||
str.data = bibliography;
|
||||
|
@ -431,7 +432,7 @@ var Zotero_File_Interface = new function() {
|
|||
|
||||
// add text (or HTML source)
|
||||
if(!asHTML) {
|
||||
var bibliography = Zotero.Cite.makeFormattedBibliographyOrCitationList(style, items, "text", asCitations);
|
||||
var bibliography = Zotero.Cite.makeFormattedBibliographyOrCitationList(cslEngine, items, "text", asCitations);
|
||||
}
|
||||
var str = Components.classes["@mozilla.org/supports-string;1"].
|
||||
createInstance(Components.interfaces.nsISupportsString);
|
||||
|
@ -517,7 +518,8 @@ var Zotero_File_Interface = new function() {
|
|||
}
|
||||
else {
|
||||
var style = Zotero.Styles.get(io.style);
|
||||
var bibliography = Zotero.Cite.makeFormattedBibliographyOrCitationList(style,
|
||||
var cslEngine = style.getCiteProc();
|
||||
var bibliography = Zotero.Cite.makeFormattedBibliographyOrCitationList(cslEngine,
|
||||
items, format, io.mode === "citations");
|
||||
}
|
||||
} catch(e) {
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 76af9741424cc1432ffa0165d7b7bd5bbebe0d26
|
||||
Subproject commit 23920d2cea52e12f2c3caac097266c13757e5acf
|
|
@ -109,6 +109,17 @@ var ZoteroOverlay = new function()
|
|||
|
||||
document.getElementById('appcontent').addEventListener('mousemove', Zotero.ProgressWindowSet.updateTimers, false);
|
||||
if (icon) {
|
||||
// TODO: move to strings
|
||||
let str = 'Zotero';
|
||||
let key = Zotero.Keys.getKeyForCommand('openZotero');
|
||||
if (key) {
|
||||
str += ' ('
|
||||
+ (Zotero.isMac ? '⇧⌘' : Zotero.getString('general.keys.ctrlShift'))
|
||||
+ key
|
||||
+ ')';
|
||||
}
|
||||
icon.setAttribute('tooltiptext', str);
|
||||
|
||||
if (iconPref == 1) {
|
||||
icon.setAttribute('compact', true);
|
||||
}
|
||||
|
|
|
@ -630,7 +630,9 @@ Zotero_Preferences.Debug_Output = {
|
|||
document.getElementById('debug-output-submit').disabled = true;
|
||||
document.getElementById('debug-output-submit-progress').hidden = false;
|
||||
|
||||
var url = "https://repo.zotero.org/repo/report?debug=1";
|
||||
Components.utils.import("resource://zotero/config.js");
|
||||
|
||||
var url = ZOTERO_CONFIG.REPOSITORY_URL + "report?debug=1";
|
||||
var output = Zotero.Debug.get(
|
||||
Zotero.Prefs.get('debug.store.submitSize'),
|
||||
Zotero.Prefs.get('debug.store.submitLineLength')
|
||||
|
|
|
@ -66,7 +66,6 @@ Zotero_Preferences.Cite = {
|
|||
var treerow = document.createElement('treerow');
|
||||
var titleCell = document.createElement('treecell');
|
||||
var updatedCell = document.createElement('treecell');
|
||||
var cslCell = document.createElement('treecell');
|
||||
|
||||
if (style.updated) {
|
||||
var updatedDate = Zotero.Date.formatDate(Zotero.Date.strToDate(style.updated), true);
|
||||
|
@ -78,14 +77,9 @@ Zotero_Preferences.Cite = {
|
|||
treeitem.setAttribute('id', 'zotero-csl-' + style.styleID);
|
||||
titleCell.setAttribute('label', style.title);
|
||||
updatedCell.setAttribute('label', updatedDate);
|
||||
// if not EN
|
||||
if(style.type == "csl") {
|
||||
cslCell.setAttribute('src', 'chrome://zotero/skin/tick.png');
|
||||
}
|
||||
|
||||
treerow.appendChild(titleCell);
|
||||
treerow.appendChild(updatedCell);
|
||||
treerow.appendChild(cslCell);
|
||||
treeitem.appendChild(treerow);
|
||||
treechildren.appendChild(treeitem);
|
||||
|
||||
|
|
|
@ -58,9 +58,8 @@
|
|||
onselect="document.getElementById('styleManager-delete').disabled = undefined"
|
||||
onkeypress="if (event.keyCode == event.DOM_VK_DELETE) { Zotero_Preferences.Cite.deleteSelectedStyle(); }">
|
||||
<treecols>
|
||||
<treecol id="styleManager-title" label="&zotero.preferences.cite.styles.styleManager.title;" flex="3"/>
|
||||
<treecol id="styleManager-updated" label="&zotero.preferences.cite.styles.styleManager.updated;" flex="1"/>
|
||||
<treecol id="styleManager-csl" label="&zotero.preferences.cite.styles.styleManager.csl;"/>
|
||||
<treecol id="styleManager-title" label="&zotero.preferences.cite.styles.styleManager.title;" flex="1"/>
|
||||
<treecol id="styleManager-updated" label="&zotero.preferences.cite.styles.styleManager.updated;"/>
|
||||
</treecols>
|
||||
<treechildren id="styleManager-rows"/>
|
||||
</tree>
|
||||
|
|
|
@ -148,8 +148,8 @@
|
|||
onsynctopreference="Zotero_Preferences.Sync.unverifyStorageServer()"
|
||||
style="padding: 0; width: 7em">
|
||||
<menupopup>
|
||||
<menuitem label="http" value="http" style="padding: 0"/>
|
||||
<menuitem label="https" value="https" style="padding: 0"/>
|
||||
<menuitem label="http" value="http" style="padding: 0"/>
|
||||
</menupopup>
|
||||
</menulist>
|
||||
<label value="://"/>
|
||||
|
@ -240,7 +240,7 @@
|
|||
<vbox>
|
||||
<hbox id="storage-terms" style="margin-top: .4em; display: block" align="center">
|
||||
<label>&zotero.preferences.sync.fileSyncing.tos1;</label>
|
||||
<label class="zotero-text-link" href="http://www.digitalscholar.org/z_terms" value="&zotero.preferences.sync.fileSyncing.tos2;"/>
|
||||
<label class="zotero-text-link" href="https://www.zotero.org/support/terms/terms_of_service" value="&zotero.preferences.sync.fileSyncing.tos2;"/>
|
||||
<label>&zotero.preferences.period;</label>
|
||||
</hbox>
|
||||
</vbox>
|
||||
|
|
|
@ -95,30 +95,34 @@ var Zotero_RecognizePDF = new function() {
|
|||
// Look up DOI
|
||||
Zotero.debug("RecognizePDF: Found DOI: "+doi);
|
||||
|
||||
var translate = new Zotero.Translate.Search();
|
||||
translate.setTranslator("11645bd1-0420-45c1-badb-53fb41eeb753");
|
||||
translate.setSearch({"itemType":"journalArticle", "DOI":doi});
|
||||
promise = _promiseTranslate(translate, libraryID);
|
||||
var translateDOI = new Zotero.Translate.Search();
|
||||
translateDOI.setTranslator("11645bd1-0420-45c1-badb-53fb41eeb753");
|
||||
translateDOI.setSearch({"itemType":"journalArticle", "DOI":doi});
|
||||
promise = _promiseTranslate(translateDOI, libraryID);
|
||||
} else {
|
||||
// Look for ISBNs if no DOI
|
||||
var isbns = _findISBNs(allText);
|
||||
if(isbns.length) {
|
||||
Zotero.debug("RecognizePDF: Found ISBNs: " + isbns);
|
||||
|
||||
var translate = new Zotero.Translate.Search();
|
||||
translate.setTranslator("c73a4a8c-3ef1-4ec8-8229-7531ee384cc4");
|
||||
translate.setSearch({"itemType":"book", "ISBN":isbns[0]});
|
||||
promise = _promiseTranslate(translate, libraryID);
|
||||
} else {
|
||||
promise = Zotero.Promise.reject("No ISBN or DOI found");
|
||||
}
|
||||
promise = Zotero.Promise.reject("No DOI found in text");
|
||||
}
|
||||
|
||||
// If no DOI or ISBN, query Google Scholar
|
||||
return promise.catch(function(error) {
|
||||
Zotero.debug("RecognizePDF: "+error);
|
||||
return me.GSFullTextSearch.findItem(lines, libraryID, stopCheckCallback);
|
||||
});
|
||||
return promise
|
||||
// Look for ISBNs if no DOI
|
||||
.catch(function(error) {
|
||||
Zotero.debug("RecognizePDF: " + error);
|
||||
var isbns = _findISBNs(allText);
|
||||
if (isbns.length) {
|
||||
Zotero.debug("RecognizePDF: Found ISBNs: " + isbns);
|
||||
|
||||
var translate = new Zotero.Translate.Search();
|
||||
translate.setSearch({"itemType":"book", "ISBN":isbns[0]});
|
||||
return _promiseTranslate(translate, libraryID);
|
||||
} else {
|
||||
return Zotero.Promise.reject("No ISBN found in text.");
|
||||
}
|
||||
})
|
||||
// If no DOI or ISBN, query Google Scholar
|
||||
.catch(function(error) {
|
||||
Zotero.debug("RecognizePDF: " + error);
|
||||
return me.GSFullTextSearch.findItem(lines, libraryID, stopCheckCallback);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -196,7 +200,10 @@ var Zotero_RecognizePDF = new function() {
|
|||
if(success && translate.newItems.length) {
|
||||
deferred.resolve(translate.newItems[0]);
|
||||
} else {
|
||||
deferred.reject("Translation with Google Scholar failed");
|
||||
deferred.reject(translate.translator && translate.translator.length
|
||||
? "Translation with " + translate.translator.map(t => t.label) + " failed"
|
||||
: "Could not find a translator for given search item"
|
||||
);
|
||||
}
|
||||
});
|
||||
translate.translate(libraryID, false);
|
||||
|
|
|
@ -43,26 +43,29 @@
|
|||
this.generateBibliography = generateBibliography;
|
||||
|
||||
function init() {
|
||||
//refresh();
|
||||
//refresh();
|
||||
|
||||
var iframe = document.getElementById('zotero-csl-preview-box');
|
||||
iframe.contentDocument.documentElement.innerHTML = '<html><head><title></title></head><body><p>Select one or more items in Zotero and click the "Refresh" button to see how these items are rendered by the installed CSL citation styles.</p></body></html>';
|
||||
}
|
||||
function refresh() {
|
||||
var iframe = document.getElementById('zotero-csl-preview-box');
|
||||
var items = Zotero.getActiveZoteroPane().getSelectedItems();
|
||||
if (items.length == 0) {
|
||||
iframe.contentDocument.documentElement.innerHTML = '<html><head><title></title></head><body><p style="color: red">No references selected in Zotero.</p></body></html>';
|
||||
if (items.length === 0) {
|
||||
iframe.contentDocument.documentElement.innerHTML = '<html><head><title></title></head><body><p style="color: red">No items selected in Zotero.</p></body></html>';
|
||||
return;
|
||||
}
|
||||
var progressWin = new Zotero.ProgressWindow();
|
||||
// XXX needs its own string really!
|
||||
progressWin.changeHeadline(Zotero.getString("pane.items.menu.createBib.multiple"));
|
||||
var icon = 'chrome://zotero/skin/treeitem-attachment-file.png';
|
||||
progressWin.addLines(document.title, icon)
|
||||
progressWin.addLines(document.title, icon);
|
||||
progressWin.show();
|
||||
progressWin.startCloseTimer();
|
||||
var f = function() {
|
||||
var styles = Zotero.Styles.getAll();
|
||||
// XXX needs its own string really for the title!
|
||||
var str = '<html><head><title></title></head><body><h1>Citation/Bibliography list<h1>';
|
||||
var str = '<html><head><title></title></head><body>';
|
||||
for each(var style in styles) {
|
||||
if (style.source) {
|
||||
continue;
|
||||
|
@ -70,14 +73,15 @@
|
|||
Zotero.debug("Generate Bib for " + style.title);
|
||||
var cite = generateBibliography(style);
|
||||
if (cite) {
|
||||
str += '<hr><h2>' + style.title + '</h2>';
|
||||
str += '<h3>' + style.title + '</h3>';
|
||||
str += cite;
|
||||
str += '<hr>';
|
||||
}
|
||||
}
|
||||
|
||||
str += '</body></html>';
|
||||
iframe.contentDocument.documentElement.innerHTML = str;
|
||||
}
|
||||
};
|
||||
// Give progress window time to appear
|
||||
setTimeout(f, 100);
|
||||
}
|
||||
|
@ -86,33 +90,13 @@
|
|||
var iframe = document.getElementById('zotero-csl-preview-box');
|
||||
|
||||
var items = Zotero.getActiveZoteroPane().getSelectedItems();
|
||||
if (items.length == 0) {
|
||||
iframe.contentDocument.documentElement.innerHTML = '<html><head><title></title></head><body><p style="color: red">No references selected in Zotero.</p></body></html>';
|
||||
if (items.length === 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
var authordate = document.getElementById("format-author-date");
|
||||
var numeric = document.getElementById("format-numeric");
|
||||
Zotero.debug("style class is " + style.class);
|
||||
if (document.getElementById("format-note").checked == false && style.class == "note") {
|
||||
Zotero.debug("CSL IGNORE NOTE one");
|
||||
return '';
|
||||
}
|
||||
if (document.getElementById("format-in-text").checked == false && style.class == "in-text") {
|
||||
Zotero.debug("CSL IGNORE IN-TEXT one");
|
||||
return '';
|
||||
}
|
||||
var terms = new Object();
|
||||
for each(var cat in style.categories) {
|
||||
Zotero.debug("TERM is " + cat.toString());
|
||||
terms[cat.toString()] = true;
|
||||
}
|
||||
if (!numeric.checked && terms["numeric"]) {
|
||||
Zotero.debug("CSL IGNORE this numeric");
|
||||
return '';
|
||||
}
|
||||
if (!authordate.checked && terms["author-date"]) {
|
||||
Zotero.debug("CSL IGNORE this AD");
|
||||
var citationFormat = document.getElementById("citation-format").selectedItem.value;
|
||||
if (citationFormat != "all" && citationFormat != style.categories) {
|
||||
Zotero.debug("CSL IGNORE: citation format is " + style.categories);
|
||||
return '';
|
||||
}
|
||||
var styleEngine = style.getCiteProc();
|
||||
|
@ -123,19 +107,17 @@
|
|||
[], [], "html");
|
||||
|
||||
// Generate bibliography
|
||||
if(!style.hasBibliography) {
|
||||
var bibliography = '';
|
||||
} else {
|
||||
var bibliography = '';
|
||||
if(style.hasBibliography) {
|
||||
styleEngine.updateItems([item.id for each(item in items)]);
|
||||
var bibliography = '<p>' + Zotero.Cite.makeFormattedBibliography(styleEngine, "html");
|
||||
bibliography = Zotero.Cite.makeFormattedBibliography(styleEngine, "html");
|
||||
}
|
||||
|
||||
return '<div>' +
|
||||
citations + bibliography + '</div>';
|
||||
return '<p>' + citations + '</p>' + bibliography;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}();
|
||||
]]>
|
||||
</script>
|
||||
<!-- NEEDS LOCALISING -->
|
||||
|
@ -144,18 +126,20 @@
|
|||
<hbox align="center">
|
||||
<button id="preview-refresh-button" label="Refresh" oncommand="Zotero_CSL_Preview.refresh()"/>
|
||||
<groupbox orient="horizontal" align="center">
|
||||
<label value="Class:"/>
|
||||
<checkbox id="format-in-text" label="In-Text" checked="true"/>
|
||||
<checkbox id="format-note" label="Notes" checked="true"/>
|
||||
</groupbox>
|
||||
<groupbox orient="horizontal" align="center">
|
||||
<label value="Citation form:"/>
|
||||
<checkbox id="format-author-date" label="Author Date" checked="true"/>
|
||||
<checkbox id="format-numeric" label="Numeric" checked="true"/>
|
||||
<label value="Citation format:" />
|
||||
<menulist id="citation-format" oncommand="Zotero_CSL_Preview.refresh()">
|
||||
<menupopup>
|
||||
<menuitem label="all" value="all"/>
|
||||
<menuitem label="author" value="author"/>
|
||||
<menuitem label="author-date" value="author-date"/>
|
||||
<menuitem label="label" value="label"/>
|
||||
<menuitem label="note" value="note"/>
|
||||
<menuitem label="numeric" value="numeric"/>
|
||||
</menupopup>
|
||||
</menulist>
|
||||
</groupbox>
|
||||
</hbox>
|
||||
</hbox>
|
||||
<splitter/>
|
||||
<iframe id="zotero-csl-preview-box" flex="1" style="padding: 0 1em; background:white;" overflow="auto" type="content"/>
|
||||
</vbox>
|
||||
|
||||
|
|
|
@ -432,8 +432,29 @@ Zotero.Attachments = new function(){
|
|||
}
|
||||
|
||||
// If no title provided, figure it out from the URL
|
||||
if (!title){
|
||||
title = url.substring(url.lastIndexOf('/')+1);
|
||||
// Web addresses with paths will be whittled to the last element
|
||||
// excluding references and queries. All others are the full string
|
||||
if (!title) {
|
||||
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
|
||||
.getService(Components.interfaces.nsIIOService);
|
||||
var titleURL = ioService.newURI(url, null, null);
|
||||
|
||||
if (titleURL.scheme == 'http' || titleURL.scheme == 'https') {
|
||||
titleURL = titleURL.QueryInterface(Components.interfaces.nsIURL);
|
||||
if (titleURL.path == '/') {
|
||||
title = titleURL.host;
|
||||
}
|
||||
else if (titleURL.fileName) {
|
||||
title = titleURL.fileName;
|
||||
}
|
||||
else {
|
||||
var dir = titleURL.directory.split('/');
|
||||
title = dir[dir.length - 2];
|
||||
}
|
||||
}
|
||||
else {
|
||||
title = url;
|
||||
}
|
||||
}
|
||||
|
||||
// Override MIME type to application/pdf if extension is .pdf --
|
||||
|
@ -677,6 +698,33 @@ Zotero.Attachments = new function(){
|
|||
});
|
||||
|
||||
|
||||
this.cleanAttachmentURI = function (uri, tryHttp) {
|
||||
uri = uri.trim();
|
||||
if (!uri) return false;
|
||||
|
||||
var ios = Components.classes["@mozilla.org/network/io-service;1"]
|
||||
.getService(Components.interfaces.nsIIOService);
|
||||
try {
|
||||
return ios.newURI(uri, null, null).spec // Valid URI if succeeds
|
||||
} catch (e) {
|
||||
if (e instanceof Components.Exception
|
||||
&& e.result == Components.results.NS_ERROR_MALFORMED_URI
|
||||
) {
|
||||
if (tryHttp && /\w\.\w/.test(uri)) {
|
||||
// Assume it's a URL missing "http://" part
|
||||
try {
|
||||
return ios.newURI('http://' + uri, null, null).spec;
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
Zotero.debug('cleanAttachmentURI: Invalid URI: ' + uri, 2);
|
||||
return false;
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Create a new attachment with a missing file
|
||||
*/
|
||||
|
@ -887,6 +935,11 @@ Zotero.Attachments = new function(){
|
|||
return path;
|
||||
}
|
||||
|
||||
if (!baseDir.exists()) {
|
||||
Zotero.debug("Base directory '" + baseDir.path + "' doesn't exist", 2);
|
||||
return path;
|
||||
}
|
||||
|
||||
// Get nsIFile for file
|
||||
var attachmentFile = Components.classes["@mozilla.org/file/local;1"]
|
||||
.createInstance(Components.interfaces.nsILocalFile);
|
||||
|
|
|
@ -71,17 +71,16 @@ Zotero.Cite = {
|
|||
* @param {String} format The format of the output (html, text, or rtf)
|
||||
* @return {String} Bibliography or item list in specified format
|
||||
*/
|
||||
"makeFormattedBibliographyOrCitationList":function(style, items, format, asCitationList) {
|
||||
var cslEngine = style.getCiteProc();
|
||||
"makeFormattedBibliographyOrCitationList":function(cslEngine, items, format, asCitationList) {
|
||||
cslEngine.setOutputFormat(format);
|
||||
cslEngine.updateItems([item.id for each(item in items)]);
|
||||
|
||||
|
||||
if(!asCitationList) {
|
||||
var bibliography = Zotero.Cite.makeFormattedBibliography(cslEngine, format);
|
||||
if(bibliography) return bibliography;
|
||||
}
|
||||
|
||||
var styleClass = style.class;
|
||||
var styleClass = cslEngine.opt.class;
|
||||
var citations = [cslEngine.appendCitationCluster({"citationItems":[{"id":item.id}], "properties":{}}, true)[0][1]
|
||||
for each(item in items)];
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ if (!Array.indexOf) {
|
|||
};
|
||||
}
|
||||
var CSL = {
|
||||
PROCESSOR_VERSION: "1.0.539",
|
||||
PROCESSOR_VERSION: "1.0.543",
|
||||
CONDITION_LEVEL_TOP: 1,
|
||||
CONDITION_LEVEL_BOTTOM: 2,
|
||||
PLAIN_HYPHEN_REGEX: /(?:[^\\]-|\u2013)/,
|
||||
|
@ -237,7 +237,7 @@ var CSL = {
|
|||
MULTI_FIELDS: ["event", "publisher", "publisher-place", "event-place", "title", "container-title", "collection-title", "authority","edition","genre","title-short","medium","jurisdiction","archive","archive-place"],
|
||||
CITE_FIELDS: ["first-reference-note-number", "locator", "locator-revision"],
|
||||
MINIMAL_NAME_FIELDS: ["literal", "family"],
|
||||
SWAPPING_PUNCTUATION: [".", "!", "?", ":",","],
|
||||
SWAPPING_PUNCTUATION: [".", "!", "?", ":", ","],
|
||||
TERMINAL_PUNCTUATION: [":", ".", ";", "!", "?", " "],
|
||||
NONE: 0,
|
||||
NUMERIC: 1,
|
||||
|
@ -2595,6 +2595,9 @@ CSL.Engine.prototype.setAbbreviations = function (arg) {
|
|||
this.sys.setAbbreviations(arg);
|
||||
}
|
||||
};
|
||||
CSL.Engine.prototype.setSuppressTrailingPunctuation = function (arg) {
|
||||
this.citation.opt.suppressTrailingPunctuation = !!arg;
|
||||
};
|
||||
CSL.Output = {};
|
||||
CSL.Output.Queue = function (state) {
|
||||
this.levelname = ["top"];
|
||||
|
@ -3209,19 +3212,30 @@ CSL.Output.Queue.adjust = function (punctInQuote) {
|
|||
return false;
|
||||
}
|
||||
function matchLastChar(blob, chr) {
|
||||
if (blob.strings.suffix.slice(0, 1) === chr) {
|
||||
return true;
|
||||
} else if ("string" === typeof blob.blobs) {
|
||||
if (!PUNCT[chr]) {
|
||||
return false;
|
||||
}
|
||||
if ("string" === typeof blob.blobs) {
|
||||
if (blob.blobs.slice(-1) === chr) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
var child = blob.blobs[blob.blobs.length-1];
|
||||
if (child) {
|
||||
var childChar = child.strings.suffix.slice(-1);
|
||||
if (!childChar) {
|
||||
return matchLastChar(child,chr);
|
||||
} else if (child.strings.suffix.slice(-1) == chr) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
for (var i=0,ilen=blob.blobs.length;i<ilen;i++) {
|
||||
if (matchLastChar(blob.blobs[i])) return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
function mergeChars (First, first, Second, second, merge_right) {
|
||||
FirstStrings = "blobs" === first ? First : First.strings;
|
||||
|
@ -3282,7 +3296,13 @@ CSL.Output.Queue.adjust = function (punctInQuote) {
|
|||
}
|
||||
};
|
||||
function upward (parent) {
|
||||
if ("object" !== typeof parent || "object" !== typeof parent.blobs || !parent.blobs.length) {
|
||||
if (parent.blobs && "string" == typeof parent.blobs) {
|
||||
if (PUNCT[parent.strings.suffix.slice(0,1)]
|
||||
&& parent.strings.suffix.slice(0,1) === parent.blobs.slice(-1)) {
|
||||
parent.strings.suffix = parent.strings.suffix.slice(1);
|
||||
}
|
||||
return;
|
||||
} else if ("object" !== typeof parent || "object" !== typeof parent.blobs || !parent.blobs.length) {
|
||||
return;
|
||||
}
|
||||
var parentDecorations = blobHasDecorations(parent,true);
|
||||
|
@ -3343,8 +3363,14 @@ CSL.Output.Queue.adjust = function (punctInQuote) {
|
|||
}
|
||||
}
|
||||
};
|
||||
function downward (parent) {
|
||||
if ("object" !== typeof parent || "object" !== typeof parent.blobs || !parent.blobs.length) {
|
||||
function downward (parent, top) {
|
||||
if (parent.blobs && "string" == typeof parent.blobs) {
|
||||
if (PUNCT[parent.strings.suffix.slice(0,1)]
|
||||
&& parent.strings.suffix.slice(0,1) === parent.blobs.slice(-1)) {
|
||||
parent.strings.suffix = parent.strings.suffix.slice(1);
|
||||
}
|
||||
return;
|
||||
} else if ("object" !== typeof parent || "object" !== typeof parent.blobs || !parent.blobs.length) {
|
||||
return;
|
||||
}
|
||||
var parentStrings = parent.strings;
|
||||
|
@ -3379,25 +3405,28 @@ CSL.Output.Queue.adjust = function (punctInQuote) {
|
|||
if (PUNCT[parentChar]) {
|
||||
if (!blobEndsInNumber(child)) {
|
||||
mergeChars(child, 'suffix', parent, 'suffix');
|
||||
if (parentStrings.suffix.slice(0,1) === ".") {
|
||||
childStrings.suffix += parentStrings.suffix.slice(0,1);
|
||||
parentStrings.suffix = parentStrings.suffix.slice(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (childStrings.suffix.slice(-1) === " " && parentStrings.suffix.slice(0,1)) {
|
||||
parentStrings.suffix = parentStrings.suffix.slice(1);
|
||||
}
|
||||
} else {
|
||||
if (matchLastChar(child,parent.strings.suffix.slice(0,1))) {
|
||||
parent.strings.suffix = parent.strings.suffix.slice(1);
|
||||
}
|
||||
}
|
||||
if (PUNCT_OR_SPACE[childStrings.suffix.slice(0,1)]) {
|
||||
if ("string" === typeof child.blobs && child.blobs.slice(-1) === childStrings.suffix.slice(0,1)) {
|
||||
childStrings.suffix = childStrings.suffix.slice(1);
|
||||
}
|
||||
if (childStrings.suffix.slice(-1) === parentStrings.suffix.slice(0, 1)) {
|
||||
childStrings.suffix = childStrings.suffix.slice(0, -1);
|
||||
parentStrings.suffix = parentStrings.suffix.slice(0, -1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (matchLastChar(parent,parent.strings.suffix.slice(0,1))) {
|
||||
parent.strings.suffix = parent.strings.suffix.slice(1);
|
||||
}
|
||||
} else if (parentStrings.delimiter) {
|
||||
if (PUNCT_OR_SPACE[parentStrings.delimiter.slice(0,1)]
|
||||
&& parentStrings.delimiter.slice(0, 1) === childStrings.suffix.slice(-1)) {
|
||||
|
@ -4198,7 +4227,7 @@ CSL.Engine.prototype.processCitationCluster = function (citation, citationsPre,
|
|||
this.tmp.citation_id = "" + citation.citationID;
|
||||
obj = [];
|
||||
obj.push(citationsPre.length);
|
||||
obj.push(this.process_CitationCluster.call(this, sortedItems));
|
||||
obj.push(this.process_CitationCluster.call(this, sortedItems, citation.citationID));
|
||||
ret.push(obj);
|
||||
ret.sort(function (a, b) {
|
||||
if (a[0] > b[0]) {
|
||||
|
@ -4329,9 +4358,14 @@ CSL.getCitationCluster = function (inputList, citationID) {
|
|||
this.tmp.last_years_used = [];
|
||||
this.tmp.backref_index = [];
|
||||
this.tmp.cite_locales = [];
|
||||
var suppressTrailingPunctuation = false;
|
||||
if (this.opt.xclass === "note" && this.citation.opt.suppressTrailingPunctuation) {
|
||||
suppressTrailingPunctuation = true;
|
||||
}
|
||||
if (citationID) {
|
||||
this.registry.citationreg.citationById[citationID].properties.backref_index = false;
|
||||
this.registry.citationreg.citationById[citationID].properties.backref_citation = false;
|
||||
if (this.registry.citationreg.citationById[citationID].properties["suppress-trailing-punctuation"]) {
|
||||
suppressTrailingPunctuation = true;
|
||||
}
|
||||
}
|
||||
if (this.opt.xclass === "note") {
|
||||
var parasets = [];
|
||||
|
@ -4460,7 +4494,9 @@ CSL.getCitationCluster = function (inputList, citationID) {
|
|||
&& this.sys.wrapCitationEntry
|
||||
&& !this.tmp.just_looking
|
||||
&& this.tmp.area === "citation")) {
|
||||
this.output.queue[this.output.queue.length - 1].strings.suffix = use_layout_suffix;
|
||||
if (!suppressTrailingPunctuation) {
|
||||
this.output.queue[this.output.queue.length - 1].strings.suffix = use_layout_suffix;
|
||||
}
|
||||
this.output.queue[0].strings.prefix = this.citation.opt.layout_prefix;
|
||||
}
|
||||
}
|
||||
|
@ -4933,7 +4969,7 @@ CSL.getBibliographyEntries = function (bibsection) {
|
|||
for (var j=0,jlen=this.output.queue.length;j<jlen;j+=1) {
|
||||
this.output.adjust.upward(this.output.queue[j]);
|
||||
this.output.adjust.leftward(this.output.queue[j]);
|
||||
this.output.adjust.downward(this.output.queue[j]);
|
||||
this.output.adjust.downward(this.output.queue[j],true);
|
||||
this.output.adjust.fix(this.output.queue[j]);
|
||||
}
|
||||
res = this.output.string(this, this.output.queue)[0];
|
||||
|
@ -6408,15 +6444,17 @@ CSL.Node.layout = {
|
|||
var sp;
|
||||
if (item && item.prefix) {
|
||||
sp = "";
|
||||
var test_prefix = item.prefix.replace(/<[^>]+>/g, "").replace(/["'\u201d\u2019]/g,"").replace(/\s+$/, "").replace(/^[.\s]+/, "");
|
||||
var test_prefix = item.prefix.replace(/<[^>]+>/g, "").replace(/["'\u201d\u2019\u00bb\u202f\u00a0 ]+$/g,"");
|
||||
var test_char = test_prefix.slice(-1);
|
||||
if (test_prefix.match(CSL.ENDSWITH_ROMANESQUE_REGEXP)) {
|
||||
sp = " ";
|
||||
} else if (CSL.TERMINAL_PUNCTUATION.slice(0,-1).indexOf(test_prefix.slice(-1))) {
|
||||
} else if (CSL.TERMINAL_PUNCTUATION.slice(0,-1).indexOf(test_char) > -1) {
|
||||
sp = " ";
|
||||
} else if (test_char.match(/[\)\],0-9]/)) {
|
||||
sp = " ";
|
||||
}
|
||||
var ignorePredecessor = false;
|
||||
if (CSL.TERMINAL_PUNCTUATION.slice(0,-1).indexOf(test_prefix.slice(-1)) > -1
|
||||
&& test_prefix.slice(0, 1) != test_prefix.slice(0, 1).toLowerCase()) {
|
||||
if (CSL.TERMINAL_PUNCTUATION.slice(0,-1).indexOf(test_char) > -1) {
|
||||
state.tmp.term_predecessor = false;
|
||||
ignorePredecessor = true;
|
||||
}
|
||||
|
@ -7214,6 +7252,10 @@ CSL.NameOutput.prototype.setCommonTerm = function () {
|
|||
}
|
||||
freeters_offset += 1;
|
||||
}
|
||||
if (this.persons[v].length !== this.persons[vv].length) {
|
||||
this.common_term = false;
|
||||
return;
|
||||
}
|
||||
for (var j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {
|
||||
if (this.etal_spec[v].persons[j] !== this.etal_spec[vv].persons[j]
|
||||
|| !this._compareNamesets(this.persons[v][j], this.persons[vv][j])) {
|
||||
|
@ -12654,7 +12696,7 @@ CSL.Util.FlipFlopper.prototype.init = function (str, blob) {
|
|||
};
|
||||
CSL.Util.FlipFlopper.prototype._normalizeString = function (str) {
|
||||
var i, ilen;
|
||||
str = str.replace(/\s+'\s+/," ’ ","g");
|
||||
str = str.replace(/\s+'\s+/g," ’ ");
|
||||
if (str.indexOf(this.quotechars[0]) > -1) {
|
||||
for (i = 0, ilen = 2; i < ilen; i += 1) {
|
||||
if (this.quotechars[i + 2]) {
|
||||
|
|
|
@ -28,7 +28,11 @@ Zotero.Connector = new function() {
|
|||
const CONNECTOR_API_VERSION = 2;
|
||||
|
||||
var _ieStandaloneIframeTarget, _ieConnectorCallbacks;
|
||||
this.isOnline = null;
|
||||
// As of Chrome 38 (and corresponding Opera version 24?) pages loaded over
|
||||
// https (i.e. the zotero bookmarklet iframe) can not send requests over
|
||||
// http, so pinging Standalone at http://127.0.0.1 fails.
|
||||
// Disable for all browsers, except IE, which may be used frequently with ZSA
|
||||
this.isOnline = Zotero.isBookmarklet && !Zotero.isIE ? false : null;
|
||||
|
||||
/**
|
||||
* Checks if Zotero is online and passes current status to callback
|
||||
|
@ -36,7 +40,10 @@ Zotero.Connector = new function() {
|
|||
*/
|
||||
this.checkIsOnline = function(callback) {
|
||||
// Only check once in bookmarklet
|
||||
if(Zotero.isBookmarklet && this.isOnline !== null) callback(this.isOnline);
|
||||
if(Zotero.isBookmarklet && this.isOnline !== null) {
|
||||
callback(this.isOnline);
|
||||
return;
|
||||
}
|
||||
|
||||
if(Zotero.isIE) {
|
||||
if(window.location.protocol !== "http:") {
|
||||
|
@ -233,25 +240,7 @@ Zotero.Connector_Debug = new function() {
|
|||
* Submit data to the sserver
|
||||
*/
|
||||
this.submitReport = function(callback) {
|
||||
var uploadCallback = function (xmlhttp) {
|
||||
var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
||||
.getService(Components.interfaces.nsIPromptService);
|
||||
|
||||
if (!xmlhttp.responseXML) {
|
||||
callback(false, 'Invalid response from server');
|
||||
return;
|
||||
}
|
||||
var reported = xmlhttp.responseXML.getElementsByTagName('reported');
|
||||
if (reported.length != 1) {
|
||||
callback(false, 'The server returned an error. Please try again.');
|
||||
return;
|
||||
}
|
||||
|
||||
var reportID = reported[0].getAttribute('reportID');
|
||||
callback(true, reportID);
|
||||
}
|
||||
|
||||
Zotero.HTTP.doPost("http://www.zotero.org/repo/report?debug=1", Zotero.Debug.get(),
|
||||
Zotero.HTTP.doPost(ZOTERO_CONFIG.REPOSITORY_URL + "report?debug=1", Zotero.Debug.get(),
|
||||
function(xmlhttp) {
|
||||
if (!xmlhttp.responseXML) {
|
||||
callback(false, 'Invalid response from server');
|
||||
|
@ -267,4 +256,4 @@ Zotero.Connector_Debug = new function() {
|
|||
callback(true, reportID);
|
||||
}, {"Content-Type":"text/plain"});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ Zotero.Repo = new function() {
|
|||
}
|
||||
|
||||
// then try repo
|
||||
Zotero.HTTP.doGet(ZOTERO_CONFIG.REPOSITORY_URL+"/code/"+translatorID+"?version="+Zotero.version,
|
||||
Zotero.HTTP.doGet(ZOTERO_CONFIG.REPOSITORY_URL + "code/" + translatorID + "?version=" + Zotero.version,
|
||||
function(xmlhttp) {
|
||||
_haveCode(xmlhttp.status === 200 ? xmlhttp.responseText : false, translatorID,
|
||||
Zotero.Repo.SOURCE_REPO, callback);
|
||||
|
@ -137,7 +137,7 @@ Zotero.Repo = new function() {
|
|||
* Retrieve metadata from repository
|
||||
*/
|
||||
function _updateFromRepo(reset, callback) {
|
||||
var url = ZOTERO_CONFIG.REPOSITORY_URL+"/metadata?version="+Zotero.version+"&last="+
|
||||
var url = ZOTERO_CONFIG.REPOSITORY_URL + "metadata?version=" + Zotero.version + "&last="+
|
||||
(reset ? "0" : Zotero.Prefs.get("connector.repo.lastCheck.repoTime"));
|
||||
|
||||
Zotero.HTTP.doGet(url, function(xmlhttp) {
|
||||
|
|
|
@ -196,7 +196,7 @@ Zotero.Translate.ItemSaver.prototype = {
|
|||
Zotero.API.createItem({"items":newItems}, function(statusCode, response) {
|
||||
if(statusCode !== 200) {
|
||||
callback(false, new Error("Save to server failed with "+statusCode+" "+response));
|
||||
retrun;
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
|
@ -93,7 +93,7 @@ Zotero.Collection.prototype._set = function (field, value) {
|
|||
|
||||
switch (field) {
|
||||
case 'name':
|
||||
value = value.trim();
|
||||
value = value.trim().normalize();
|
||||
break;
|
||||
|
||||
case 'version':
|
||||
|
|
|
@ -175,7 +175,7 @@ Zotero.Creators = new function() {
|
|||
switch (field) {
|
||||
case 'firstName':
|
||||
case 'lastName':
|
||||
cleanedData[field] = val.trim();
|
||||
cleanedData[field] = val.trim().normalize();
|
||||
break;
|
||||
|
||||
case 'fieldMode':
|
||||
|
|
|
@ -694,7 +694,7 @@ Zotero.Item.prototype.getFieldsNotInType = function (itemTypeID, allowBaseConver
|
|||
*/
|
||||
Zotero.Item.prototype.setField = function(field, value, loadIn) {
|
||||
if (typeof value == 'string') {
|
||||
value = value.trim();
|
||||
value = value.trim().normalize();
|
||||
}
|
||||
|
||||
this._disabledCheck();
|
||||
|
@ -4286,9 +4286,9 @@ Zotero.Item.prototype.loadDisplayTitle = Zotero.Promise.coroutine(function* (rel
|
|||
var creatorsData = this.getCreators();
|
||||
var authors = [];
|
||||
var participants = [];
|
||||
for (let j=0; j<creatorsData.length; j++) {
|
||||
let creatorData = creatorsData[j];
|
||||
let creatorTypeID = creatorsData[j].creatorTypeID;
|
||||
for (let i=0; i<creatorsData.length; i++) {
|
||||
let creatorData = creatorsData[i];
|
||||
let creatorTypeID = creatorsData[i].creatorTypeID;
|
||||
if ((itemTypeID == 8 && creatorTypeID == 16) || // 'letter'
|
||||
(itemTypeID == 10 && creatorTypeID == 7)) { // 'interview'
|
||||
participants.push(creatorData);
|
||||
|
@ -4302,11 +4302,12 @@ Zotero.Item.prototype.loadDisplayTitle = Zotero.Promise.coroutine(function* (rel
|
|||
var strParts = [];
|
||||
if (participants.length > 0) {
|
||||
let names = [];
|
||||
for (let j=0; j<participants.length; j++) {
|
||||
let max = Math.min(4, participants.length);
|
||||
for (let i=0; i<max; i++) {
|
||||
names.push(
|
||||
participants[j].name !== undefined
|
||||
? participants[j].name
|
||||
: participants[j].lastName
|
||||
participants[i].name !== undefined
|
||||
? participants[i].name
|
||||
: participants[i].lastName
|
||||
);
|
||||
}
|
||||
switch (names.length) {
|
||||
|
|
|
@ -828,7 +828,7 @@ Zotero.Tags = new function() {
|
|||
}
|
||||
|
||||
var cleanedData = {};
|
||||
cleanedData.tag = (data.tag + '').trim();
|
||||
cleanedData.tag = (data.tag + '').trim().normalize();
|
||||
if (data.type) {
|
||||
cleanedData.type = parseInt(data.type);
|
||||
}
|
||||
|
|
|
@ -46,23 +46,6 @@ Zotero.Debug = new function () {
|
|||
return;
|
||||
}
|
||||
|
||||
// Properly display thrown Error objects
|
||||
if (message && message.constructor) {
|
||||
switch (message.constructor.name) {
|
||||
case 'Error':
|
||||
case 'EvalError':
|
||||
case 'RangeError':
|
||||
case 'ReferenceError':
|
||||
case 'SyntaxError':
|
||||
case 'TypeError':
|
||||
case 'URIError':
|
||||
message = "'message' => \"" + message.message + "\"\n"
|
||||
+ Zotero.Utilities.varDump(message) + "\n"
|
||||
+ message.stack;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof message != 'string') {
|
||||
message = Zotero.Utilities.varDump(message);
|
||||
}
|
||||
|
|
|
@ -160,7 +160,9 @@ Zotero.Duplicates.prototype._findDuplicates = Zotero.Promise.coroutine(function*
|
|||
}
|
||||
// If no comparison function, check for exact match
|
||||
else {
|
||||
if (rows[i].value !== rows[j].value) {
|
||||
if (!rows[i].value || !rows[j].value
|
||||
|| (rows[i].value !== rows[j].value)
|
||||
) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -197,8 +199,8 @@ Zotero.Duplicates.prototype._findDuplicates = Zotero.Promise.coroutine(function*
|
|||
let newRows = [];
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
let row = rows[i];
|
||||
// Ignore formatting
|
||||
let newVal = (row.value + '').replace(/[^\dX]+/ig, '').toUpperCase();
|
||||
let newVal = Zotero.Utilities.cleanISBN('' + row.value);
|
||||
if (!newVal) continue;
|
||||
isbnCache[row.itemID] = newVal;
|
||||
newRows.push({
|
||||
itemID: row.itemID,
|
||||
|
|
|
@ -429,6 +429,115 @@ Zotero.File = new function(){
|
|||
}
|
||||
|
||||
|
||||
this.createShortened = function (file, type, mode, maxBytes) {
|
||||
if (!maxBytes) {
|
||||
maxBytes = 255;
|
||||
}
|
||||
|
||||
// Limit should be 255, but leave room for unique numbering if necessary
|
||||
var padding = 3;
|
||||
|
||||
while (true) {
|
||||
var newLength = maxBytes - padding;
|
||||
|
||||
try {
|
||||
file.create(type, mode);
|
||||
}
|
||||
catch (e) {
|
||||
let pathError = false;
|
||||
|
||||
let pathByteLength = Zotero.Utilities.Internal.byteLength(file.path);
|
||||
let fileNameByteLength = Zotero.Utilities.Internal.byteLength(file.leafName);
|
||||
|
||||
// Windows API only allows paths of 260 characters
|
||||
//
|
||||
// I think this should be >260 but we had a report of an error with exactly
|
||||
// 260 chars: https://forums.zotero.org/discussion/41410
|
||||
if (e.name == "NS_ERROR_FILE_NOT_FOUND" && pathByteLength >= 260) {
|
||||
Zotero.debug("Path is " + file.path);
|
||||
pathError = true;
|
||||
}
|
||||
// ext3/ext4/HFS+ have a filename length limit of ~254 bytes
|
||||
else if ((e.name == "NS_ERROR_FAILURE" || e.name == "NS_ERROR_FILE_NAME_TOO_LONG")
|
||||
&& (fileNameByteLength >= 254 || (Zotero.isLinux && fileNameByteLength > 143))) {
|
||||
Zotero.debug("Filename is '" + file.leafName + "'");
|
||||
}
|
||||
else {
|
||||
Zotero.debug("Path is " + file.path);
|
||||
throw e;
|
||||
}
|
||||
|
||||
// Preserve extension
|
||||
var matches = file.leafName.match(/.+(\.[a-z0-9]{0,20})$/i);
|
||||
var ext = matches ? matches[1] : "";
|
||||
|
||||
if (pathError) {
|
||||
let pathLength = pathByteLength - fileNameByteLength;
|
||||
newLength -= pathLength;
|
||||
|
||||
// Make sure there's a least 1 character of the basename left over
|
||||
if (newLength - ext.length < 1) {
|
||||
throw new Error("Path is too long");
|
||||
}
|
||||
}
|
||||
|
||||
// Shorten the filename
|
||||
//
|
||||
// Shortened file could already exist if there was another file with a
|
||||
// similar name that was also longer than the limit, so we do this in a
|
||||
// loop, adding numbers if necessary
|
||||
var uniqueFile = file.clone();
|
||||
var step = 0;
|
||||
while (step < 100) {
|
||||
let newBaseName = uniqueFile.leafName.substr(0, newLength - ext.length);
|
||||
if (step == 0) {
|
||||
var newName = newBaseName + ext;
|
||||
}
|
||||
else {
|
||||
var newName = newBaseName + "-" + step + ext;
|
||||
}
|
||||
|
||||
// Check actual byte length, and shorten more if necessary
|
||||
if (Zotero.Utilities.Internal.byteLength(newName) > maxBytes) {
|
||||
step = 0;
|
||||
newLength--;
|
||||
continue;
|
||||
}
|
||||
|
||||
uniqueFile.leafName = newName;
|
||||
if (!uniqueFile.exists()) {
|
||||
break;
|
||||
}
|
||||
|
||||
step++;
|
||||
}
|
||||
|
||||
var msg = "Shortening filename to '" + newName + "'";
|
||||
Zotero.debug(msg, 2);
|
||||
Zotero.log(msg, 'warning');
|
||||
|
||||
try {
|
||||
uniqueFile.create(Components.interfaces.nsIFile.type, mode);
|
||||
}
|
||||
catch (e) {
|
||||
// On Linux, try 143, which is the max filename length with eCryptfs
|
||||
if (e.name == "NS_ERROR_FILE_NAME_TOO_LONG" && Zotero.isLinux && uniqueFile.leafName.length > 143) {
|
||||
Zotero.debug("Trying shorter filename in case of filesystem encryption", 2);
|
||||
maxBytes = 143;
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
file.leafName = uniqueFile.leafName;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
this.copyToUnique = function (file, newFile) {
|
||||
newFile.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644);
|
||||
var newName = newFile.leafName;
|
||||
|
@ -664,10 +773,13 @@ Zotero.File = new function(){
|
|||
var opWord = Zotero.getString('file.accessError.updated');
|
||||
}
|
||||
|
||||
Zotero.debug(file.path);
|
||||
Zotero.debug(e, 1);
|
||||
Components.utils.reportError(e);
|
||||
|
||||
if (e.name == 'NS_ERROR_FILE_ACCESS_DENIED' || e.name == 'NS_ERROR_FILE_IS_LOCKED'
|
||||
// These show up on some Windows systems
|
||||
|| e.name == 'NS_ERROR_FAILURE' || e.name == 'NS_ERROR_FILE_NOT_FOUND') {
|
||||
Zotero.debug(e);
|
||||
str = str + " " + Zotero.getString('file.accessError.cannotBe') + " " + opWord + ".";
|
||||
var checkFileWindows = Zotero.getString('file.accessError.message.windows');
|
||||
var checkFileOther = Zotero.getString('file.accessError.message.other');
|
||||
|
|
|
@ -997,17 +997,11 @@ Zotero.HTTP = new function() {
|
|||
if(typeof url !== "object") {
|
||||
url = Services.io.newURI(url, null, null).QueryInterface(Components.interfaces.nsIURL);
|
||||
}
|
||||
|
||||
var parser = Components.classes["@mozilla.org/xmlextras/domparser;1"]
|
||||
.createInstance(Components.interfaces.nsIDOMParser);
|
||||
var secMan = Components.classes["@mozilla.org/scriptsecuritymanager;1"]
|
||||
.getService(Components.interfaces.nsIScriptSecurityManager);
|
||||
parser.init(secMan.getCodebasePrincipal(url), url, url);
|
||||
return Zotero.Translate.DOMWrapper.wrap(doc, {
|
||||
"documentURI":{ "enumerable":true, "value":url.spec },
|
||||
"URL":{ "enumerable":true, "value":url.spec },
|
||||
"location":{ "enumerable":true, "value":(new Zotero.HTTP.Location(url)) },
|
||||
"defaultView":{ "enumerable":true, "value":(new Zotero.HTTP.Window(url)) }
|
||||
"documentURI":url.spec,
|
||||
"URL":url.spec,
|
||||
"location":new Zotero.HTTP.Location(url),
|
||||
"defaultView":new Zotero.HTTP.Window(url)
|
||||
});
|
||||
}
|
||||
}
|
|
@ -560,12 +560,19 @@ Zotero.ItemTreeView.prototype.notify = Zotero.Promise.coroutine(function* (actio
|
|||
// Row might already be gone (e.g. if this is a child and
|
||||
// 'modify' was sent to parent)
|
||||
let row = this._itemRowMap[ids[i]];
|
||||
if (push && row != undefined) {
|
||||
if (push && row !== undefined) {
|
||||
// Don't remove child items from collections, because it's handled by 'modify'
|
||||
if (action == 'remove' && this.getParentIndex(row) != -1) {
|
||||
continue;
|
||||
}
|
||||
rows.push(row);
|
||||
|
||||
// Remove child items of removed parents
|
||||
if (this.isContainer(row) && this.isContainerOpen(row)) {
|
||||
while (++row < this.rowCount && this.getLevel(row) > 0) {
|
||||
rows.push(row);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1456,9 +1463,25 @@ Zotero.ItemTreeView.prototype.sort = Zotero.Promise.coroutine(function* (itemID)
|
|||
|
||||
var creatorSortCache = {};
|
||||
|
||||
// Regexp to extract the whole string up to an optional "and" or "et al."
|
||||
var andEtAlRegExp = new RegExp(
|
||||
// Extract the beginning of the string in non-greedy mode
|
||||
"^.+?"
|
||||
// up to either the end of the string, "et al." at the end of string
|
||||
+ "(?=(?: " + Zotero.getString('general.etAl').replace('.', '\.') + ")?$"
|
||||
// or ' and '
|
||||
+ "| " + Zotero.getString('general.and') + " "
|
||||
+ ")"
|
||||
);
|
||||
|
||||
function creatorSort(a, b) {
|
||||
var itemA = a.ref;
|
||||
var itemB = b.ref;
|
||||
//
|
||||
// Try sorting by the first name in the firstCreator field, since we already have it
|
||||
//
|
||||
// For sortCreatorAsString mode, just use the whole string
|
||||
//
|
||||
var aItemID = a.id,
|
||||
bItemID = b.id,
|
||||
fieldA = creatorSortCache[aItemID],
|
||||
|
@ -1467,13 +1490,25 @@ Zotero.ItemTreeView.prototype.sort = Zotero.Promise.coroutine(function* (itemID)
|
|||
var sortStringA = itemA[prop];
|
||||
var sortStringB = itemB[prop];
|
||||
if (fieldA === undefined) {
|
||||
var matches = Zotero.Items.getSortTitle(sortStringA).match(/^[^\s]+/);
|
||||
var fieldA = matches ? matches[0] : '';
|
||||
let firstCreator = Zotero.Items.getSortTitle(sortStringA);
|
||||
if (sortCreatorAsString) {
|
||||
var fieldA = firstCreator;
|
||||
}
|
||||
else {
|
||||
var matches = andEtAlRegExp.exec(firstCreator);
|
||||
var fieldA = matches ? matches[0] : '';
|
||||
}
|
||||
creatorSortCache[aItemID] = fieldA;
|
||||
}
|
||||
if (fieldB === undefined) {
|
||||
var matches = Zotero.Items.getSortTitle(sortStringB).match(/^[^\s]+/);
|
||||
var fieldB = matches ? matches[0] : '';
|
||||
let firstCreator = Zotero.Items.getSortTitle(sortStringB);
|
||||
if (sortCreatorAsString) {
|
||||
var fieldB = firstCreator;
|
||||
}
|
||||
else {
|
||||
var matches = andEtAlRegExp.exec(firstCreator);
|
||||
var fieldB = matches ? matches[0] : '';
|
||||
}
|
||||
creatorSortCache[bItemID] = fieldB;
|
||||
}
|
||||
|
||||
|
|
|
@ -401,8 +401,8 @@ Zotero.MIME = new function(){
|
|||
.getService(Components.interfaces.nsIAppShellService)
|
||||
.hiddenDOMWindow.navigator.mimeTypes;
|
||||
|
||||
for (var i in types){
|
||||
if (types[i].type && types[i].type == mimeType){
|
||||
for (let type of types) {
|
||||
if (type.type && type.type == mimeType) {
|
||||
Zotero.debug('MIME type ' + mimeType + ' can be handled by plugins');
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -352,8 +352,9 @@ Zotero.QuickCopy = new function() {
|
|||
var text = csl.previewCitationCluster(citation, [], [], "text");
|
||||
} else {
|
||||
var style = Zotero.Styles.get(format);
|
||||
var html = Zotero.Cite.makeFormattedBibliographyOrCitationList(style, items, "html");
|
||||
var text = Zotero.Cite.makeFormattedBibliographyOrCitationList(style, items, "text");
|
||||
var cslEngine = style.getCiteProc();
|
||||
var html = Zotero.Cite.makeFormattedBibliographyOrCitationList(cslEngine, items, "html");
|
||||
var text = Zotero.Cite.makeFormattedBibliographyOrCitationList(cslEngine, items, "text");
|
||||
}
|
||||
|
||||
return {text:(contentType == "html" ? html : text), html:html};
|
||||
|
|
|
@ -1008,7 +1008,7 @@ Zotero.Schema = new function(){
|
|||
var body = 'styles=' + encodeURIComponent(JSON.stringify(styleTimestamps));
|
||||
|
||||
try {
|
||||
let xmlhttp = Zotero.HTTP.promise("POST", url, { body: body });
|
||||
let xmlhttp = Zotero.HTTP.promise("POST", ZOTERO_CONFIG.REPOSITORY_URL, { body: body });
|
||||
return _updateFromRepositoryCallback(xmlhttp, !!force);
|
||||
}
|
||||
catch (e) {
|
||||
|
|
|
@ -94,7 +94,7 @@ Zotero.Search.prototype._set = function (field, value) {
|
|||
|
||||
switch (field) {
|
||||
case 'name':
|
||||
value = value.trim();
|
||||
value = value.trim().normalize();
|
||||
break;
|
||||
|
||||
case 'version':
|
||||
|
@ -323,6 +323,8 @@ Zotero.Search.prototype.addCondition = Zotero.Promise.coroutine(function* (condi
|
|||
if (condition == 'quicksearch-titleCreatorYear') {
|
||||
yield this.addCondition('title', operator, part.text, false);
|
||||
yield this.addCondition('publicationTitle', operator, part.text, false);
|
||||
yield this.addCondition('shortTitle', operator, part.text, false);
|
||||
yield this.addCondition('court', operator, part.text, false);
|
||||
yield this.addCondition('year', operator, part.text, false);
|
||||
}
|
||||
else {
|
||||
|
@ -383,6 +385,8 @@ Zotero.Search.prototype.addCondition = Zotero.Promise.coroutine(function* (condi
|
|||
let mode;
|
||||
[condition, mode] = Zotero.SearchConditions.parseCondition(condition);
|
||||
|
||||
if (typeof value == 'string') value = value.normalize();
|
||||
|
||||
this._conditions[searchConditionID] = {
|
||||
id: searchConditionID,
|
||||
condition: condition,
|
||||
|
@ -428,6 +432,8 @@ Zotero.Search.prototype.updateCondition = Zotero.Promise.coroutine(function* (se
|
|||
|
||||
var [condition, mode] = Zotero.SearchConditions.parseCondition(condition);
|
||||
|
||||
if (typeof value == 'string') value = value.normalize();
|
||||
|
||||
this._conditions[searchConditionID] = {
|
||||
id: parseInt(searchConditionID),
|
||||
condition: condition,
|
||||
|
@ -2337,6 +2343,7 @@ Zotero.SearchConditions = new function(){
|
|||
return Zotero.getString('searchConditions.' + str)
|
||||
}
|
||||
catch (e) {
|
||||
Zotero.debug("String not found for searchConditions." + str, 2);
|
||||
return Zotero.ItemFields.getLocalizedString(null, str);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -375,8 +375,8 @@ Zotero.Server.Connector.SaveItem.prototype = {
|
|||
sendResponseCallback(500);
|
||||
}
|
||||
} else {
|
||||
Zotero.logError(items);
|
||||
sendResponseCallback(500);
|
||||
throw newItems;
|
||||
}
|
||||
}, Zotero.Server.Connector.AttachmentProgressManager.onProgress);
|
||||
}
|
||||
|
|
|
@ -1091,7 +1091,7 @@ Zotero.Sync.Storage = new function () {
|
|||
// If library isn't editable but filename was changed, update
|
||||
// database without updating the item's mod time, which would result
|
||||
// in a library access error
|
||||
if (!Zotero.Items.editCheck(item)) {
|
||||
if (!Zotero.Items.isEditable(item)) {
|
||||
Zotero.debug("File renamed without library access -- "
|
||||
+ "updating itemAttachments path", 3);
|
||||
item.relinkAttachmentFile(newFile, true);
|
||||
|
@ -1363,80 +1363,51 @@ Zotero.Sync.Storage = new function () {
|
|||
|
||||
Zotero.debug("Moving download file " + tempFile.leafName + " into attachment directory as '" + fileName + "'");
|
||||
try {
|
||||
tempFile.moveTo(parentDir, fileName);
|
||||
var destFile = parentDir.clone();
|
||||
destFile.append(fileName);
|
||||
Zotero.File.createShortened(destFile, Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644);
|
||||
}
|
||||
catch (e) {
|
||||
var destFile = file.clone();
|
||||
Zotero.File.checkFileAccessError(e, destFile, 'create');
|
||||
}
|
||||
|
||||
if (destFile.leafName != fileName) {
|
||||
Zotero.debug("Changed filename '" + fileName + "' to '" + destFile.leafName + "'");
|
||||
|
||||
var windowsLength = false;
|
||||
var nameLength = false;
|
||||
|
||||
// Windows API only allows paths of 260 characters
|
||||
if (e.name == "NS_ERROR_FILE_NOT_FOUND" && destFile.path.length > 255) {
|
||||
windowsLength = true;
|
||||
}
|
||||
// ext3/ext4/HFS+ have a filename length limit of ~254 bytes
|
||||
//
|
||||
// These filenames will almost always be ASCII ad files,
|
||||
// but allow an extra 10 bytes anyway
|
||||
else if (e.name == "NS_ERROR_FAILURE" && destFile.leafName.length >= 244) {
|
||||
nameLength = true;
|
||||
}
|
||||
// Filesystem encryption (or, more specifically, filename encryption)
|
||||
// can result in a lower limit -- not much we can do about this,
|
||||
// but log a warning and skip the file
|
||||
else if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
|
||||
Zotero.debug(e);
|
||||
var msg = Zotero.getString('sync.storage.error.encryptedFilenames', destFile.leafName);
|
||||
Components.utils.reportError(msg);
|
||||
return;
|
||||
}
|
||||
|
||||
if (windowsLength || nameLength) {
|
||||
// Preserve extension
|
||||
var matches = destFile.leafName.match(/\.[a-z0-9]{0,8}$/);
|
||||
var ext = matches ? matches[0] : "";
|
||||
|
||||
if (windowsLength) {
|
||||
var pathLength = destFile.path.length - destFile.leafName.length;
|
||||
var newLength = 255 - pathLength;
|
||||
// Require 40 available characters in path -- this is arbitrary,
|
||||
// but otherwise filenames are going to end up being cut off
|
||||
if (newLength < 40) {
|
||||
var msg = "Due to a Windows path length limitation, your Zotero data directory "
|
||||
+ "is too deep in the filesystem for syncing to work reliably. "
|
||||
+ "Please relocate your Zotero data to a higher directory.";
|
||||
throw (msg);
|
||||
}
|
||||
// Abort if Windows path limitation would cause filenames to be overly truncated
|
||||
if (Zotero.isWin && destFile.leafName.length < 40) {
|
||||
try {
|
||||
destFile.remove(false);
|
||||
}
|
||||
else {
|
||||
var newLength = 254;
|
||||
}
|
||||
|
||||
// Shorten file if it's too long -- we don't relink it, but this should
|
||||
// be pretty rare and probably only occurs on extraneous files with
|
||||
// gibberish for filenames
|
||||
var fileName = destFile.leafName.substr(0, newLength - (ext.length + 1)) + ext;
|
||||
var msg = "Shortening filename to '" + fileName + "'";
|
||||
Zotero.debug(msg, 2);
|
||||
Components.utils.reportError(msg);
|
||||
|
||||
tempFile.moveTo(parentDir, fileName);
|
||||
renamed = true;
|
||||
catch (e) {}
|
||||
// TODO: localize
|
||||
var msg = "Due to a Windows path length limitation, your Zotero data directory "
|
||||
+ "is too deep in the filesystem for syncing to work reliably. "
|
||||
+ "Please relocate your Zotero data to a higher directory.";
|
||||
Zotero.debug(msg, 1);
|
||||
throw new Error(msg);
|
||||
}
|
||||
else {
|
||||
Components.utils.reportError(e);
|
||||
var msg = Zotero.getString('sync.storage.error.fileNotCreated', parentDir.leafName + '/' + fileName);
|
||||
throw(msg);
|
||||
|
||||
renamed = true;
|
||||
}
|
||||
|
||||
try {
|
||||
tempFile.moveTo(parentDir, destFile.leafName);
|
||||
}
|
||||
catch (e) {
|
||||
try {
|
||||
destFile.remove(false);
|
||||
}
|
||||
catch (e) {}
|
||||
|
||||
Zotero.File.checkFileAccessError(e, destFile, 'create');
|
||||
}
|
||||
|
||||
var returnFile = null;
|
||||
// processDownload() needs to know that we're renaming the file
|
||||
if (renamed) {
|
||||
var returnFile = file.clone();
|
||||
returnFile = destFile.clone();
|
||||
}
|
||||
|
||||
return returnFile;
|
||||
});
|
||||
|
||||
|
@ -1566,124 +1537,48 @@ Zotero.Sync.Storage = new function () {
|
|||
}
|
||||
|
||||
try {
|
||||
destFile.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644);
|
||||
Zotero.File.createShortened(destFile, Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644);
|
||||
}
|
||||
catch (e) {
|
||||
Zotero.debug(e, 1);
|
||||
Components.utils.reportError(e);
|
||||
|
||||
var windowsLength = false;
|
||||
var nameLength = false;
|
||||
zipReader.close();
|
||||
|
||||
// Windows API only allows paths of 260 characters
|
||||
if (e.name == "NS_ERROR_FILE_NOT_FOUND" && destFile.path.length > 255) {
|
||||
Zotero.debug("Path is " + destFile.path);
|
||||
windowsLength = true;
|
||||
}
|
||||
// ext3/ext4/HFS+ have a filename length limit of ~254 bytes
|
||||
//
|
||||
// These filenames will almost always be ASCII ad files,
|
||||
// but allow an extra 10 bytes anyway
|
||||
else if (e.name == "NS_ERROR_FAILURE" && destFile.leafName.length >= 244) {
|
||||
Zotero.debug("Filename is " + destFile.leafName);
|
||||
nameLength = true;
|
||||
}
|
||||
// Filesystem encryption (or, more specifically, filename encryption)
|
||||
// can result in a lower limit -- not much we can do about this,
|
||||
// but log a warning and skip the file
|
||||
else if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
|
||||
var msg = Zotero.getString('sync.storage.error.encryptedFilenames', destFile.leafName);
|
||||
Components.utils.reportError(msg);
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
Zotero.debug("Path is " + destFile.path);
|
||||
}
|
||||
Zotero.File.checkFileAccessError(e, destFile, 'create');
|
||||
}
|
||||
|
||||
if (destFile.leafName != fileName) {
|
||||
Zotero.debug("Changed filename '" + fileName + "' to '" + destFile.leafName + "'");
|
||||
|
||||
if (windowsLength || nameLength) {
|
||||
// Preserve extension
|
||||
var matches = destFile.leafName.match(/\.[a-z0-9]{0,8}$/);
|
||||
var ext = matches ? matches[0] : "";
|
||||
|
||||
if (windowsLength) {
|
||||
var pathLength = destFile.path.length - destFile.leafName.length;
|
||||
// Limit should be 255, but a shorter limit seems to be
|
||||
// enforced for nsIZipReader.extract() below on
|
||||
// non-English systems
|
||||
var newLength = 240 - pathLength;
|
||||
// Require 40 available characters in path -- this is arbitrary,
|
||||
// but otherwise filenames are going to end up being cut off
|
||||
if (newLength < 40) {
|
||||
zipReader.close();
|
||||
var msg = "Due to a Windows path length limitation, your Zotero data directory "
|
||||
+ "is too deep in the filesystem for syncing to work reliably. "
|
||||
+ "Please relocate your Zotero data to a higher directory.";
|
||||
throw (msg);
|
||||
}
|
||||
}
|
||||
else {
|
||||
var newLength = 240;
|
||||
}
|
||||
|
||||
// Shorten file if it's too long -- we don't relink it, but this should
|
||||
// be pretty rare and probably only occurs on extraneous files with
|
||||
// gibberish for filenames
|
||||
//
|
||||
// Shortened file could already exist if there was another file with a
|
||||
// similar name that was also longer than the limit, so we do this in a
|
||||
// loop, adding numbers if necessary
|
||||
var step = 0;
|
||||
do {
|
||||
if (step == 0) {
|
||||
var newName = destFile.leafName.substr(0, newLength - ext.length) + ext;
|
||||
}
|
||||
else {
|
||||
var newName = destFile.leafName.substr(0, newLength - ext.length) + "-" + step + ext;
|
||||
}
|
||||
destFile.leafName = newName;
|
||||
step++;
|
||||
}
|
||||
while (destFile.exists());
|
||||
|
||||
var msg = "Shortening filename to '" + newName + "'";
|
||||
Zotero.debug(msg, 2);
|
||||
Components.utils.reportError(msg);
|
||||
|
||||
// Abort if Windows path limitation would cause filenames to be overly truncated
|
||||
if (Zotero.isWin && destFile.leafName.length < 40) {
|
||||
try {
|
||||
destFile.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644);
|
||||
destFile.remove(false);
|
||||
}
|
||||
catch (e) {
|
||||
// See above
|
||||
if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
|
||||
Zotero.debug(e);
|
||||
var msg = Zotero.getString('sync.storage.error.encryptedFilenames', destFile.leafName);
|
||||
Components.utils.reportError(msg);
|
||||
continue;
|
||||
}
|
||||
|
||||
zipReader.close();
|
||||
|
||||
Components.utils.reportError(e);
|
||||
var msg = Zotero.getString('sync.storage.error.fileNotCreated', parentDir.leafName + '/' + fileName);
|
||||
throw(msg);
|
||||
}
|
||||
|
||||
if (primaryFile) {
|
||||
renamed = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
catch (e) {}
|
||||
zipReader.close();
|
||||
|
||||
Components.utils.reportError(e);
|
||||
var msg = Zotero.getString('sync.storage.error.fileNotCreated', parentDir.leafName + '/' + fileName);
|
||||
throw(msg);
|
||||
// TODO: localize
|
||||
var msg = "Due to a Windows path length limitation, your Zotero data directory "
|
||||
+ "is too deep in the filesystem for syncing to work reliably. "
|
||||
+ "Please relocate your Zotero data to a higher directory.";
|
||||
Zotero.debug(msg, 1);
|
||||
throw new Error(msg);
|
||||
}
|
||||
|
||||
if (primaryFile) {
|
||||
renamed = true;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
zipReader.extract(entryName, destFile);
|
||||
}
|
||||
catch (e) {
|
||||
Zotero.debug(destFile.path);
|
||||
try {
|
||||
destFile.remove(false);
|
||||
}
|
||||
catch (e) {}
|
||||
|
||||
// For advertising junk files, ignore a bug on Windows where
|
||||
// destFile.create() works but zipReader.extract() doesn't
|
||||
|
|
|
@ -310,8 +310,7 @@ Zotero.Sync.Storage.ZFS = (function () {
|
|||
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
|
||||
.getService(Components.interfaces.nsIWindowMediator);
|
||||
var win = wm.getMostRecentWindow("navigator:browser");
|
||||
var browser = win.getBrowser();
|
||||
browser.selectedTab = browser.addTab(url);
|
||||
win.ZoteroPane.loadURI(url);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -414,7 +413,8 @@ Zotero.Sync.Storage.ZFS = (function () {
|
|||
|
||||
var fis = Components.classes["@mozilla.org/network/file-input-stream;1"]
|
||||
.createInstance(Components.interfaces.nsIFileInputStream);
|
||||
fis.init(file, 0x01, 0, Components.interfaces.nsIFileInputStream.CLOSE_ON_EOF);
|
||||
fis.init(file, 0x01, 0, Components.interfaces.nsIFileInputStream.CLOSE_ON_EOF
|
||||
| Components.interfaces.nsIFileInputStream.REOPEN_ON_REWIND);
|
||||
|
||||
var bis = Components.classes["@mozilla.org/network/buffered-input-stream;1"]
|
||||
.createInstance(Components.interfaces.nsIBufferedInputStream)
|
||||
|
|
|
@ -444,17 +444,29 @@ Zotero.Style = function(arg) {
|
|||
Zotero.Styles.ns);
|
||||
this.updated = Zotero.Utilities.xpathText(doc, '/csl:style/csl:info[1]/csl:updated[1]',
|
||||
Zotero.Styles.ns).replace(/(.+)T([^\+]+)\+?.*/, "$1 $2");
|
||||
this.categories = [category.getAttribute("term")
|
||||
for each(category in Zotero.Utilities.xpath(doc,
|
||||
'/csl:style/csl:info[1]/csl:category', Zotero.Styles.ns))
|
||||
if(category.hasAttribute("term"))];
|
||||
this.locale = Zotero.Utilities.xpathText(doc, '/csl:style/@default-locale',
|
||||
Zotero.Styles.ns) || null;
|
||||
this._class = doc.documentElement.getAttribute("class");
|
||||
this._usesAbbreviation = !!Zotero.Utilities.xpath(doc,
|
||||
'//csl:text[(@variable="container-title" and @form="short") or (@variable="container-title-short")][1]',
|
||||
Zotero.Styles.ns).length;
|
||||
this._hasBibliography = !!doc.getElementsByTagName("bibliography").length;
|
||||
this._version = doc.documentElement.getAttribute("version");
|
||||
if(!this._version) this._version = "0.8";
|
||||
if(!this._version) {
|
||||
this._version = "0.8";
|
||||
|
||||
//In CSL 0.8.1, the "term" attribute on cs:category stored both
|
||||
//citation formats and fields.
|
||||
this.categories = [category.getAttribute("term")
|
||||
for each(category in Zotero.Utilities.xpath(doc,
|
||||
'/csl:style/csl:info[1]/csl:category', Zotero.Styles.ns))
|
||||
if(category.hasAttribute("term"))];
|
||||
} else {
|
||||
//CSL 1.0 introduced a dedicated "citation-format" attribute on cs:category
|
||||
this.categories = Zotero.Utilities.xpathText(doc,
|
||||
'/csl:style/csl:info[1]/csl:category[@citation-format][1]/@citation-format',
|
||||
Zotero.Styles.ns);
|
||||
}
|
||||
|
||||
this.source = Zotero.Utilities.xpathText(doc,
|
||||
'/csl:style/csl:info[1]/csl:link[@rel="source" or @rel="independent-parent"][1]/@href',
|
||||
|
@ -478,6 +490,7 @@ Zotero.Style.prototype.getCiteProc = function(automaticJournalAbbreviations) {
|
|||
}
|
||||
|
||||
// determine version of parent style
|
||||
var overrideLocale = false; // to force dependent style locale
|
||||
if(this.source) {
|
||||
var parentStyle = Zotero.Styles.get(this.source);
|
||||
if(!parentStyle) {
|
||||
|
@ -485,6 +498,14 @@ Zotero.Style.prototype.getCiteProc = function(automaticJournalAbbreviations) {
|
|||
Zotero.Styles.ios.newFileURI(this.file).spec, null));
|
||||
}
|
||||
var version = parentStyle._version;
|
||||
|
||||
// citeproc-js will not know anything about the dependent style, including
|
||||
// the default-locale, so we need to force locale if a dependent style
|
||||
// contains one
|
||||
if(this.locale) {
|
||||
overrideLocale = true;
|
||||
locale = this.locale;
|
||||
}
|
||||
} else {
|
||||
var version = this._version;
|
||||
}
|
||||
|
@ -519,7 +540,12 @@ Zotero.Style.prototype.getCiteProc = function(automaticJournalAbbreviations) {
|
|||
}
|
||||
|
||||
try {
|
||||
return new Zotero.CiteProc.CSL.Engine(new Zotero.Cite.System(automaticJournalAbbreviations), xml, locale);
|
||||
return new Zotero.CiteProc.CSL.Engine(
|
||||
new Zotero.Cite.System(automaticJournalAbbreviations),
|
||||
xml,
|
||||
locale,
|
||||
overrideLocale
|
||||
);
|
||||
} catch(e) {
|
||||
Zotero.logError(e);
|
||||
throw e;
|
||||
|
@ -655,4 +681,4 @@ Zotero.Style.prototype.remove = function() {
|
|||
}
|
||||
|
||||
Zotero.Styles.init();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1630,7 +1630,7 @@ Zotero.Sync.Server = new function () {
|
|||
_error(e);
|
||||
}
|
||||
|
||||
Q.async(Zotero.Sync.Server.Data.processUpdatedXML(
|
||||
var result = Q.async(Zotero.Sync.Server.Data.processUpdatedXML(
|
||||
responseNode.getElementsByTagName('updated')[0],
|
||||
lastLocalSyncDate,
|
||||
syncSession,
|
||||
|
@ -1839,13 +1839,11 @@ Zotero.Sync.Server = new function () {
|
|||
Zotero.HTTP.doPost(url, body, uploadCallback);
|
||||
}
|
||||
}
|
||||
))()
|
||||
.then(
|
||||
null,
|
||||
function (e) {
|
||||
errorHandler(e);
|
||||
}
|
||||
);
|
||||
))();
|
||||
|
||||
if (Q.isPromise(result)) {
|
||||
result.catch(errorHandler);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
_error(e);
|
||||
|
@ -1977,7 +1975,7 @@ Zotero.Sync.Server = new function () {
|
|||
catch (e) {
|
||||
Zotero.debug(e);
|
||||
}
|
||||
var kbURL = 'http://zotero.org/support/kb/ssl_certificate_error';
|
||||
var kbURL = 'https://zotero.org/support/kb/ssl_certificate_error';
|
||||
_error(Zotero.getString('sync.storage.error.webdav.sslCertificateError', host) + "\n\n"
|
||||
+ Zotero.getString('general.seeForMoreInformation', kbURL),
|
||||
false, noReloadOnFailure);
|
||||
|
@ -2679,8 +2677,6 @@ Zotero.Sync.Server.Data = new function() {
|
|||
|
||||
|
||||
this.processUpdatedXML = function (updatedNode, lastLocalSyncDate, syncSession, defaultLibraryID, callback) {
|
||||
yield true;
|
||||
|
||||
updatedNode.xpath = function (path) {
|
||||
return Zotero.Utilities.xpath(this, path);
|
||||
};
|
||||
|
|
|
@ -240,7 +240,16 @@ Zotero.Translate.Sandbox = {
|
|||
if(!Zotero.isBookmarklet) arg = JSON.parse(JSON.stringify(arg));
|
||||
return translation.setSearch(arg);
|
||||
};
|
||||
safeTranslator.setDocument = function(arg) { return translation.setDocument(arg) };
|
||||
safeTranslator.setDocument = function(arg) {
|
||||
if (Zotero.isFx && !Zotero.isBookmarklet) {
|
||||
if (arg.wrappedJSObject && arg.wrappedJSObject.__wrappedObject) {
|
||||
arg = arg.wrappedJSObject.__wrappedObject;
|
||||
}
|
||||
return translation.setDocument(new XPCNativeWrapper(arg));
|
||||
} else {
|
||||
return translation.setDocument(arg);
|
||||
}
|
||||
};
|
||||
var errorHandlerSet = false;
|
||||
safeTranslator.setHandler = function(arg1, arg2) {
|
||||
if(arg1 === "error") errorHandlerSet = true;
|
||||
|
@ -249,15 +258,14 @@ Zotero.Translate.Sandbox = {
|
|||
try {
|
||||
item = item.wrappedJSObject ? item.wrappedJSObject : item;
|
||||
if(arg1 == "itemDone") {
|
||||
var sbZotero = translate._sandboxManager.sandbox.Zotero;
|
||||
if(sbZotero.wrappedJSObject) sbZotero = sbZotero.wrappedJSObject;
|
||||
if(Zotero.isFx && !Zotero.isBookmarklet
|
||||
&& (translate instanceof Zotero.Translate.Web
|
||||
|| translate instanceof Zotero.Translate.Search)) {
|
||||
// Necessary to get around object wrappers in Firefox
|
||||
item = translate._sandboxManager._copyObject(item);
|
||||
}
|
||||
item.complete = translate._sandboxZotero.Item.prototype.complete;
|
||||
} else if(arg1 == "translators" && Zotero.isFx && !Zotero.isBookmarklet) {
|
||||
var translators = new translate._sandboxManager.sandbox.Array();
|
||||
translators = translators.wrappedJSObject || translators;
|
||||
for (var i=0; i<item.length; i++) {
|
||||
translators.push(item[i]);
|
||||
}
|
||||
item = translators;
|
||||
}
|
||||
arg2(obj, item);
|
||||
} catch(e) {
|
||||
|
@ -344,7 +352,6 @@ Zotero.Translate.Sandbox = {
|
|||
if(!Zotero.Utilities.isEmpty(sandbox.exports)) {
|
||||
sandbox.exports.Zotero = sandbox.Zotero;
|
||||
sandbox = sandbox.exports;
|
||||
if(Zotero.isFx && sandbox.wrappedJSObject) sandbox = sandbox.wrappedJSObject;
|
||||
} else {
|
||||
translate._debug("COMPAT WARNING: "+translation.translator[0].label+" does "+
|
||||
"not export any properties. Only detect"+translation._entryFunctionSuffix+
|
||||
|
@ -359,6 +366,18 @@ Zotero.Translate.Sandbox = {
|
|||
return;
|
||||
});
|
||||
};
|
||||
|
||||
if(Zotero.isFx && Zotero.platformMajorVersion >= 33) {
|
||||
for(var i in safeTranslator) {
|
||||
if (typeof(safeTranslator[i]) === "function") {
|
||||
safeTranslator[i] = translate._sandboxManager._makeContentForwarder(function(func) {
|
||||
return function() {
|
||||
func.apply(safeTranslator, this.args.wrappedJSObject || this.args);
|
||||
}
|
||||
}(safeTranslator[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return safeTranslator;
|
||||
},
|
||||
|
@ -405,7 +424,7 @@ Zotero.Translate.Sandbox = {
|
|||
*/
|
||||
"selectItems":function(translate, items, callback) {
|
||||
function transferObject(obj) {
|
||||
return Zotero.isFx ? translate._sandboxManager.sandbox.JSON.parse(JSON.stringify(obj)) : obj;
|
||||
return Zotero.isFx ? translate._sandboxManager.copyObject(obj) : obj;
|
||||
}
|
||||
|
||||
if(Zotero.Utilities.isEmpty(items)) {
|
||||
|
@ -1080,13 +1099,23 @@ Zotero.Translate.Base.prototype = {
|
|||
* @param {Boolean} [saveAttachments=true] Exclude attachments (e.g., snapshots) on import
|
||||
*/
|
||||
"translate":function(libraryID, saveAttachments) { // initialize properties specific to each translation
|
||||
this._currentState = "translate";
|
||||
|
||||
if(!this.translator || !this.translator.length) {
|
||||
this.complete(false, new Error("No translator specified"));
|
||||
var args = arguments;
|
||||
Zotero.debug("Translate: translate called without specifying a translator. Running detection first.");
|
||||
this.setHandler('translators', function(me, translators) {
|
||||
if(!translators.length) {
|
||||
me.complete(false, "Could not find an appropriate translator");
|
||||
} else {
|
||||
me.setTranslator(translators);
|
||||
Zotero.Translate.Base.prototype.translate.apply(me, args);
|
||||
}
|
||||
});
|
||||
this.getTranslators();
|
||||
return;
|
||||
}
|
||||
|
||||
this._currentState = "translate";
|
||||
|
||||
this._libraryID = libraryID;
|
||||
this._saveAttachments = saveAttachments === undefined || saveAttachments;
|
||||
this._savingAttachments = [];
|
||||
|
@ -1123,7 +1152,7 @@ Zotero.Translate.Base.prototype = {
|
|||
|
||||
// translate
|
||||
try {
|
||||
this._sandboxManager.sandbox["do"+this._entryFunctionSuffix].apply(null, this._getParameters());
|
||||
Function.prototype.apply.call(this._sandboxManager.sandbox["do"+this._entryFunctionSuffix], null, this._getParameters());
|
||||
} catch(e) {
|
||||
this.complete(false, e);
|
||||
return false;
|
||||
|
@ -1396,7 +1425,7 @@ Zotero.Translate.Base.prototype = {
|
|||
this.incrementAsyncProcesses("Zotero.Translate#getTranslators");
|
||||
|
||||
try {
|
||||
var returnValue = this._sandboxManager.sandbox["detect"+this._entryFunctionSuffix].apply(null, this._getParameters());
|
||||
var returnValue = Function.prototype.apply.call(this._sandboxManager.sandbox["detect"+this._entryFunctionSuffix], null, this._getParameters());
|
||||
} catch(e) {
|
||||
this.complete(false, e);
|
||||
return;
|
||||
|
@ -1451,7 +1480,11 @@ Zotero.Translate.Base.prototype = {
|
|||
*/
|
||||
"_generateSandbox":function() {
|
||||
Zotero.debug("Translate: Binding sandbox to "+(typeof this._sandboxLocation == "object" ? this._sandboxLocation.document.location : this._sandboxLocation), 4);
|
||||
this._sandboxManager = new Zotero.Translate.SandboxManager(this._sandboxLocation);
|
||||
if (this._parentTranslator && this._parentTranslator._sandboxManager.newChild) {
|
||||
this._sandboxManager = this._parentTranslator._sandboxManager.newChild();
|
||||
} else {
|
||||
this._sandboxManager = new Zotero.Translate.SandboxManager(this._sandboxLocation);
|
||||
}
|
||||
const createArrays = "['creators', 'notes', 'tags', 'seeAlso', 'attachments']";
|
||||
var src = "var Zotero = {};"+
|
||||
"Zotero.Item = function (itemType) {"+
|
||||
|
@ -1656,7 +1689,14 @@ Zotero.Translate.Web.prototype._getSandboxLocation = function() {
|
|||
/**
|
||||
* Pass document and location to detect* and do* functions
|
||||
*/
|
||||
Zotero.Translate.Web.prototype._getParameters = function() { return [this.document, this.location]; }
|
||||
Zotero.Translate.Web.prototype._getParameters = function() {
|
||||
if (Zotero.Translate.DOMWrapper && Zotero.Translate.DOMWrapper.isWrapped(this.document)) {
|
||||
return [this._sandboxManager.wrap(Zotero.Translate.DOMWrapper.unwrap(this.document), null,
|
||||
this.document.__wrapperOverrides), this.location];
|
||||
} else {
|
||||
return [this.document, this.location];
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Prepare translation
|
||||
|
@ -1824,7 +1864,7 @@ Zotero.Translate.Web.prototype.complete = function(returnValue, error) {
|
|||
"&lastUpdated=" + encodeURIComponent(translator.lastUpdated) +
|
||||
"&diagnostic=" + encodeURIComponent(info) +
|
||||
"&errorData=" + encodeURIComponent(errorString);
|
||||
Zotero.HTTP.doPost("http://www.zotero.org/repo/report", postBody);
|
||||
Zotero.HTTP.doPost(ZOTERO_CONFIG.REPOSITORY_URL + "report", postBody);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1927,13 +1967,13 @@ Zotero.Translate.Import.prototype._loadTranslatorPrepareIO = function(translator
|
|||
if(!this._io) {
|
||||
if(Zotero.Translate.IO.Read && this.location && this.location instanceof Components.interfaces.nsIFile) {
|
||||
try {
|
||||
this._io = new Zotero.Translate.IO.Read(this.location);
|
||||
this._io = new Zotero.Translate.IO.Read(this.location, this._sandboxManager);
|
||||
} catch(e) {
|
||||
err = e;
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
this._io = new Zotero.Translate.IO.String(this._string, this.path ? this.path : "");
|
||||
this._io = new Zotero.Translate.IO.String(this._string, this.path ? this.path : "", this._sandboxManager);
|
||||
} catch(e) {
|
||||
err = e;
|
||||
}
|
||||
|
@ -2101,7 +2141,7 @@ Zotero.Translate.Export.prototype._prepareTranslation = function() {
|
|||
// this is currently hackish since we pass null callbacks to the init function (they have
|
||||
// callbacks to be consistent with import, but they are synchronous, so we ignore them)
|
||||
if(!this.location) {
|
||||
this._io = new Zotero.Translate.IO.String(null, this.path ? this.path : "");
|
||||
this._io = new Zotero.Translate.IO.String(null, this.path ? this.path : "", this._sandboxManager);
|
||||
this._io.init(configOptions["dataMode"], function() {});
|
||||
} else if(!Zotero.Translate.IO.Write) {
|
||||
throw new Error("Writing to files is not supported in this build of Zotero.");
|
||||
|
@ -2115,6 +2155,19 @@ Zotero.Translate.Export.prototype._prepareTranslation = function() {
|
|||
this._sandboxManager.importObject(this._io);
|
||||
}
|
||||
|
||||
/**
|
||||
* Overload Zotero.Translate.Base#translate to make sure that
|
||||
* Zotero.Translate.Export#translate is not called without setting a
|
||||
* translator first. Doesn't make sense to run detection for export.
|
||||
*/
|
||||
Zotero.Translate.Export.prototype.translate = function() {
|
||||
if(!this.translator || !this.translator.length) {
|
||||
this.complete(false, new Error("Export translation initiated without setting a translator"));
|
||||
} else {
|
||||
Zotero.Translate.Base.prototype.translate.apply(this, arguments);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Return the progress of the import operation, or null if progress cannot be determined
|
||||
*/
|
||||
|
@ -2208,7 +2261,7 @@ Zotero.Translate.Search.prototype.complete = function(returnValue, error) {
|
|||
*/
|
||||
Zotero.Translate.Search.prototype._getParameters = function() {
|
||||
if(Zotero.isFx) {
|
||||
return [this._sandboxManager._copyObject(this.search)];
|
||||
return [this._sandboxManager.copyObject(this.search)];
|
||||
}
|
||||
return [this.search];
|
||||
};
|
||||
|
@ -2276,7 +2329,7 @@ Zotero.Translate.IO = {
|
|||
/**
|
||||
* @class Translate backend for translating from a string
|
||||
*/
|
||||
Zotero.Translate.IO.String = function(string, uri) {
|
||||
Zotero.Translate.IO.String = function(string, uri, sandboxManager) {
|
||||
if(string && typeof string === "string") {
|
||||
this.string = string;
|
||||
} else {
|
||||
|
@ -2285,6 +2338,7 @@ Zotero.Translate.IO.String = function(string, uri) {
|
|||
this.contentLength = this.string.length;
|
||||
this.bytesRead = 0;
|
||||
this._uri = uri;
|
||||
this._sandboxManager = sandboxManager;
|
||||
}
|
||||
|
||||
Zotero.Translate.IO.String.prototype = {
|
||||
|
@ -2374,7 +2428,7 @@ Zotero.Translate.IO.String.prototype = {
|
|||
this._xmlInvalid = true;
|
||||
throw e;
|
||||
}
|
||||
return (Zotero.isFx ? Zotero.Translate.DOMWrapper.wrap(xml) : xml);
|
||||
return (Zotero.isFx && !Zotero.isBookmarklet ? this._sandboxManager.wrap(xml) : xml);
|
||||
},
|
||||
|
||||
"init":function(newMode, callback) {
|
||||
|
|
|
@ -49,7 +49,7 @@ Zotero.Translate.DOMWrapper = new function() {
|
|||
};
|
||||
|
||||
function isWrapper(x) {
|
||||
return isWrappable(x) && (typeof x.SpecialPowers_wrappedObject !== "undefined");
|
||||
return isWrappable(x) && (typeof x.__wrappedObject !== "undefined");
|
||||
};
|
||||
|
||||
function unwrapIfWrapped(x) {
|
||||
|
@ -130,7 +130,7 @@ Zotero.Translate.DOMWrapper = new function() {
|
|||
throw "Trying to unwrap a non-wrapped object!";
|
||||
|
||||
// Unwrap.
|
||||
return x.SpecialPowers_wrappedObject;
|
||||
return x.__wrappedObject;
|
||||
};
|
||||
|
||||
function crawlProtoChain(obj, fn) {
|
||||
|
@ -172,8 +172,10 @@ Zotero.Translate.DOMWrapper = new function() {
|
|||
SpecialPowersHandler.prototype.doGetPropertyDescriptor = function(name, own) {
|
||||
|
||||
// Handle our special API.
|
||||
if (name == "SpecialPowers_wrappedObject")
|
||||
if (name == "__wrappedObject")
|
||||
return { value: this.wrappedObject, writeable: false, configurable: false, enumerable: false };
|
||||
if (name == "__wrapperOverrides")
|
||||
return { value: this.overrides, writeable: false, configurable: false, enumerable: false };
|
||||
// Handle __exposedProps__.
|
||||
if (name == "__exposedProps__")
|
||||
return { value: ExposedPropsWaiver, writable: false, configurable: false, enumerable: false };
|
||||
|
@ -196,7 +198,7 @@ Zotero.Translate.DOMWrapper = new function() {
|
|||
|
||||
// Hack for overriding some properties
|
||||
if (this.overrides.hasOwnProperty(name))
|
||||
return this.overrides[name];
|
||||
return { "enumerable": true, "value": this.overrides[name] };
|
||||
// Case 1: Own Properties.
|
||||
//
|
||||
// This one is easy, thanks to Object.getOwnPropertyDescriptor().
|
||||
|
@ -281,7 +283,7 @@ Zotero.Translate.DOMWrapper = new function() {
|
|||
|
||||
// Insert our special API. It's not enumerable, but getPropertyNames()
|
||||
// includes non-enumerable properties.
|
||||
var specialAPI = 'SpecialPowers_wrappedObject';
|
||||
var specialAPI = '__wrappedObject';
|
||||
if (props.indexOf(specialAPI) == -1)
|
||||
props.push(specialAPI);
|
||||
|
||||
|
@ -366,6 +368,14 @@ Zotero.Translate.DOMWrapper = new function() {
|
|||
return obj;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Wraps an object in the same sandbox as another object
|
||||
*/
|
||||
this.wrapIn = function(obj, insamebox) {
|
||||
if(insamebox.__wrappingManager) return insamebox.__wrappingManager.wrap(obj);
|
||||
return this.wrap(obj);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether an object is wrapped by a DOM wrapper
|
||||
|
@ -381,7 +391,8 @@ Zotero.Translate.DOMWrapper = new function() {
|
|||
* @param {String|window} sandboxLocation
|
||||
*/
|
||||
Zotero.Translate.SandboxManager = function(sandboxLocation) {
|
||||
this.sandbox = new Components.utils.Sandbox(sandboxLocation);
|
||||
// sandboxLocation = Components.classes["@mozilla.org/systemprincipal;1"].createInstance(Components.interfaces.nsIPrincipal);
|
||||
var sandbox = this.sandbox = new Components.utils.Sandbox(sandboxLocation, {wantComponents:false, wantGlobalProperties:["XMLHttpRequest"]});
|
||||
this.sandbox.Zotero = {};
|
||||
|
||||
// import functions missing from global scope into Fx sandbox
|
||||
|
@ -389,28 +400,14 @@ Zotero.Translate.SandboxManager = function(sandboxLocation) {
|
|||
if(typeof sandboxLocation === "object" && "DOMParser" in sandboxLocation) {
|
||||
this.sandbox.DOMParser = sandboxLocation.DOMParser;
|
||||
} else {
|
||||
var sandbox = this.sandbox;
|
||||
this.sandbox.DOMParser = function() {
|
||||
var uri, principal;
|
||||
// get URI
|
||||
if(typeof sandboxLocation === "string") { // if sandbox specified by URI
|
||||
var secMan = Services.scriptSecurityManager;
|
||||
uri = Services.io.newURI(sandboxLocation, "UTF-8", null);
|
||||
principal = (secMan.getCodebasePrincipal || secMan.getSimpleCodebasePrincipal)(uri);
|
||||
} else { // if sandbox specified by DOM document
|
||||
principal = sandboxLocation.document.nodePrincipal;
|
||||
uri = sandboxLocation.document.documentURIObject;
|
||||
}
|
||||
|
||||
// initialize DOM parser
|
||||
var _DOMParser = Components.classes["@mozilla.org/xmlextras/domparser;1"]
|
||||
.createInstance(Components.interfaces.nsIDOMParser);
|
||||
_DOMParser.init(principal, uri, uri);
|
||||
|
||||
// expose parseFromString
|
||||
this.__exposedProps__ = {"parseFromString":"r"};
|
||||
this.parseFromString = function(str, contentType) {
|
||||
return Zotero.Translate.DOMWrapper.wrap(_DOMParser.parseFromString(str, contentType));
|
||||
var xhr = sandbox.XMLHttpRequest();
|
||||
xhr.open("GET", "data:"+contentType+";charset=utf-8,"+encodeURIComponent(str), false);
|
||||
xhr.send();
|
||||
if (!xhr.responseXML) throw new Error("error parsing XML");
|
||||
return xhr.responseXML;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -425,6 +422,58 @@ Zotero.Translate.SandboxManager = function(sandboxLocation) {
|
|||
};
|
||||
this.sandbox.XMLSerializer.__exposedProps__ = {"prototype":"r"};
|
||||
this.sandbox.XMLSerializer.prototype = {"__exposedProps__":{"serializeToString":"r"}};
|
||||
|
||||
var expr = "(function(x) { return function() { this.args = arguments; return Function.prototype.apply.call(x, this); }.bind({}); })";
|
||||
this._makeContentForwarder = Components.utils.evalInSandbox(expr, sandbox);
|
||||
|
||||
if (Zotero.platformMajorVersion >= 35) {
|
||||
var _proxy = Components.utils.evalInSandbox('(function (target, x, overrides) {'+
|
||||
' return new Proxy(x, ProxyHandler(target, overrides));'+
|
||||
'})', sandbox);
|
||||
var wrap = this.wrap = function(target, x, overrides) {
|
||||
if (target === null || (typeof target !== "object" && typeof target !== "function")) return target;
|
||||
if (!x) x = new sandbox.Object();
|
||||
return _proxy(target, x, overrides);
|
||||
};
|
||||
var me = this;
|
||||
sandbox.ProxyHandler = this._makeContentForwarder(function() {
|
||||
var target = (this.args.wrappedJSObject || this.args)[0];
|
||||
var overrides = (this.args.wrappedJSObject || this.args)[1] || {};
|
||||
if(target instanceof Components.interfaces.nsISupports) {
|
||||
target = new XPCNativeWrapper(target);
|
||||
}
|
||||
var ret = new sandbox.Object();
|
||||
ret.wrappedJSObject.has = function(x, prop) {
|
||||
return overrides.hasOwnProperty(prop) || prop in target;
|
||||
};
|
||||
ret.wrappedJSObject.get = function(x, prop, receiver) {
|
||||
if (prop === "__wrappedObject") return target;
|
||||
if (prop === "__wrappingManager") return me;
|
||||
var y = overrides.hasOwnProperty(prop) ? overrides[prop] : target[prop];
|
||||
if (y === null || (typeof y !== "object" && typeof y !== "function")) return y;
|
||||
return wrap(y, typeof y === "function" ? function() {
|
||||
var args = Array.prototype.slice.apply(arguments);
|
||||
for (var i = 0; i < args.length; i++) {
|
||||
if (typeof args[i] === "object" && args[i] !== null &&
|
||||
args[i].wrappedJSObject && args[i].wrappedJSObject.__wrappedObject)
|
||||
args[i] = new XPCNativeWrapper(args[i].wrappedJSObject.__wrappedObject);
|
||||
}
|
||||
return wrap(y.apply(target, args));
|
||||
} : new sandbox.Object());
|
||||
};
|
||||
ret.wrappedJSObject.ownKeys = function(x) {
|
||||
return Components.utils.cloneInto(target.getOwnPropertyNames(), sandbox);
|
||||
};
|
||||
ret.wrappedJSObject.enumerate = function(x) {
|
||||
var y = new sandbox.Array();
|
||||
for (var i in target) y.wrappedJSObject.push(i);
|
||||
return y;
|
||||
};
|
||||
return ret;
|
||||
});
|
||||
} else {
|
||||
this.wrap = Zotero.Translate.DOMWrapper.wrap;
|
||||
}
|
||||
}
|
||||
|
||||
Zotero.Translate.SandboxManager.prototype = {
|
||||
|
@ -447,9 +496,7 @@ Zotero.Translate.SandboxManager.prototype = {
|
|||
"importObject":function(object, passAsFirstArgument, attachTo) {
|
||||
if(!attachTo) attachTo = this.sandbox.Zotero;
|
||||
if(attachTo.wrappedJSObject) attachTo = attachTo.wrappedJSObject;
|
||||
var newExposedProps = false,
|
||||
sandbox = this.sandbox,
|
||||
me = this;
|
||||
var newExposedProps = false, sandbox = this.sandbox, me = this;
|
||||
if(!object.__exposedProps__) newExposedProps = {};
|
||||
for(var key in (newExposedProps ? object : object.__exposedProps__)) {
|
||||
let localKey = key;
|
||||
|
@ -460,13 +507,27 @@ Zotero.Translate.SandboxManager.prototype = {
|
|||
var isObject = typeof object[localKey] === "object";
|
||||
if(isFunction || isObject) {
|
||||
if(isFunction) {
|
||||
attachTo[localKey] = function() {
|
||||
var args = Array.prototype.slice.apply(arguments);
|
||||
if(passAsFirstArgument) args.unshift(passAsFirstArgument);
|
||||
return me._copyObject(object[localKey].apply(object, args));
|
||||
};
|
||||
if (Zotero.platformMajorVersion >= 33) {
|
||||
attachTo[localKey] = this._makeContentForwarder(function() {
|
||||
var args = Array.prototype.slice.apply(this.args.wrappedJSObject || this.args);
|
||||
for(var i = 0; i<args.length; i++) {
|
||||
// Make sure we keep XPCNativeWrappers
|
||||
if(args[i] instanceof Components.interfaces.nsISupports) {
|
||||
args[i] = new XPCNativeWrapper(args[i]);
|
||||
}
|
||||
}
|
||||
if(passAsFirstArgument) args.unshift(passAsFirstArgument);
|
||||
return me.copyObject(object[localKey].apply(object, args));
|
||||
});
|
||||
} else {
|
||||
attachTo[localKey] = function() {
|
||||
var args = Array.prototype.slice.apply(arguments);
|
||||
if(passAsFirstArgument) args.unshift(passAsFirstArgument);
|
||||
return me.copyObject(object[localKey].apply(object, args));
|
||||
};
|
||||
}
|
||||
} else {
|
||||
attachTo[localKey] = {};
|
||||
attachTo[localKey] = new sandbox.Object();
|
||||
}
|
||||
|
||||
// attach members
|
||||
|
@ -477,7 +538,7 @@ Zotero.Translate.SandboxManager.prototype = {
|
|||
attachTo[localKey] = object[localKey];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(newExposedProps) {
|
||||
attachTo.__exposedProps__ = newExposedProps;
|
||||
} else {
|
||||
|
@ -488,7 +549,7 @@ Zotero.Translate.SandboxManager.prototype = {
|
|||
"_canCopy":function(obj) {
|
||||
if(typeof obj !== "object" || obj === null) return false;
|
||||
if((obj.constructor.name !== "Object" && obj.constructor.name !== "Array") ||
|
||||
"__exposedProps__" in obj) {
|
||||
"__exposedProps__" in obj || (obj.wrappedJSObject && obj.wrappedJSObject.__wrappingManager)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -499,8 +560,8 @@ Zotero.Translate.SandboxManager.prototype = {
|
|||
* @param {Object} obj
|
||||
* @return {Object}
|
||||
*/
|
||||
"_copyObject":function(obj, wm) {
|
||||
if(!this._canCopy(obj)) return obj
|
||||
"copyObject":function(obj, wm) {
|
||||
if(!this._canCopy(obj)) return obj;
|
||||
if(!wm) wm = new WeakMap();
|
||||
var obj2 = (obj.constructor.name === "Array" ? this.sandbox.Array() : this.sandbox.Object());
|
||||
var wobj2 = obj2.wrappedJSObject ? obj2.wrappedJSObject : obj2;
|
||||
|
@ -511,7 +572,7 @@ Zotero.Translate.SandboxManager.prototype = {
|
|||
if(this._canCopy(prop1)) {
|
||||
var prop2 = wm.get(prop1);
|
||||
if(prop2 === undefined) {
|
||||
prop2 = this._copyObject(prop1, wm);
|
||||
prop2 = this.copyObject(prop1, wm);
|
||||
wm.set(prop1, prop2);
|
||||
}
|
||||
wobj2[i] = prop2;
|
||||
|
@ -520,6 +581,56 @@ Zotero.Translate.SandboxManager.prototype = {
|
|||
}
|
||||
}
|
||||
return obj2;
|
||||
},
|
||||
|
||||
"newChild":function() {
|
||||
return new Zotero.Translate.ChildSandboxManager(this);
|
||||
}
|
||||
}
|
||||
|
||||
Zotero.Translate.ChildSandboxManager = function(parent) {
|
||||
this._wrappedSandbox = new parent.sandbox.Object();
|
||||
this._wrappedSandbox.Zotero = new parent.sandbox.Object();
|
||||
this.sandbox = this._wrappedSandbox.wrappedJSObject || this._wrappedSandbox;
|
||||
this._parent = parent;
|
||||
}
|
||||
Zotero.Translate.ChildSandboxManager.prototype = {
|
||||
"eval":function(code, functions, path) {
|
||||
// eval in sandbox scope
|
||||
if(functions) {
|
||||
for(var i = 0; i < functions.length; i++) {
|
||||
delete this.sandbox[functions[i]];
|
||||
}
|
||||
}
|
||||
this._parent.sandbox._withSandbox = this._wrappedSandbox;
|
||||
Components.utils.evalInSandbox("with(_withSandbox){"+code+"};", this._parent.sandbox, "1.8", path, 1);
|
||||
if(functions) {
|
||||
for(var i = 0; i < functions.length; i++) {
|
||||
try {
|
||||
this._wrappedSandbox[functions[i]] = Components.utils.evalInSandbox(functions[i], this._parent.sandbox);
|
||||
} catch(e) {}
|
||||
}
|
||||
}
|
||||
this._parent.sandbox._withSandbox = undefined;
|
||||
},
|
||||
"importObject":function(object, passAsFirstArgument, attachTo) {
|
||||
if(!attachTo) attachTo = this.sandbox.Zotero;
|
||||
// Zotero.debug(object);
|
||||
// Zotero.debug(attachTo);
|
||||
this._parent.importObject(object, passAsFirstArgument, attachTo);
|
||||
// Zotero.debug(attachTo);
|
||||
},
|
||||
"copyObject":function(obj) {
|
||||
return this._parent.copyObject(obj);
|
||||
},
|
||||
"newChild":function() {
|
||||
return this._parent.newChild();
|
||||
},
|
||||
"_makeContentForwarder":function(f) {
|
||||
return this._parent._makeContentForwarder(f);
|
||||
},
|
||||
"wrap":function(x) {
|
||||
return this._parent.wrap(x);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -532,10 +643,11 @@ Zotero.Translate.IO.maintainedInstances = [];
|
|||
|
||||
/******* (Native) Read support *******/
|
||||
|
||||
Zotero.Translate.IO.Read = function(file, mode) {
|
||||
Zotero.Translate.IO.Read = function(file, sandboxManager) {
|
||||
Zotero.Translate.IO.maintainedInstances.push(this);
|
||||
|
||||
this.file = file;
|
||||
this._sandboxManager = sandboxManager;
|
||||
|
||||
// open file
|
||||
this._openRawStream();
|
||||
|
@ -800,7 +912,7 @@ Zotero.Translate.IO.Read.prototype = {
|
|||
this._xmlInvalid = true;
|
||||
throw e;
|
||||
}
|
||||
return (Zotero.isFx ? Zotero.Translate.DOMWrapper.wrap(xml) : xml);
|
||||
return (Zotero.isFx ? this._sandboxManager.wrap(xml) : xml);
|
||||
},
|
||||
|
||||
"init":function(newMode, callback) {
|
||||
|
|
|
@ -217,29 +217,42 @@ Zotero.Translate.ItemSaver.prototype = {
|
|||
},
|
||||
|
||||
"_saveAttachmentFile": Zotero.Promise.coroutine(function* (attachment, parentID, attachmentCallback) {
|
||||
const urlRe = /(([a-z][-+\.a-z0-9]*):\/\/[^\s]*)/i; //according to RFC3986
|
||||
Zotero.debug("Translate: Adding attachment", 4);
|
||||
|
||||
if(!attachment.url && !attachment.path) {
|
||||
Zotero.debug("Translate: Ignoring attachment: no path or URL specified", 2);
|
||||
let e = "Translate: Ignoring attachment: no path or URL specified";
|
||||
Zotero.debug(e, 2);
|
||||
attachmentCallback(attachment, false, e);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!attachment.path) {
|
||||
let url = Zotero.Attachments.cleanAttachmentURI(attachment.url);
|
||||
if (!url) {
|
||||
let e = "Translate: Invalid attachment URL specified <" + attachment.url + ">";
|
||||
Zotero.debug(e, 2);
|
||||
attachmentCallback(attachment, false, e);
|
||||
return false;
|
||||
}
|
||||
attachment.url = url;
|
||||
url = Components.classes["@mozilla.org/network/io-service;1"]
|
||||
.getService(Components.interfaces.nsIIOService)
|
||||
.newURI(url, null, null); // This cannot fail, since we check above
|
||||
|
||||
// see if this is actually a file URL
|
||||
var m = urlRe.exec(attachment.url);
|
||||
var protocol = m ? m[2].toLowerCase() : "file";
|
||||
if(protocol == "file") {
|
||||
if(url.scheme == "file") {
|
||||
attachment.path = attachment.url;
|
||||
attachment.url = false;
|
||||
} else if(protocol != "http" && protocol != "https") {
|
||||
Zotero.debug("Translate: Unrecognized protocol "+protocol, 2);
|
||||
} else if(url.scheme != "http" && url.scheme != "https") {
|
||||
let e = "Translate: " + url.scheme + " protocol is not allowed for attachments from translators.";
|
||||
Zotero.debug(e, 2);
|
||||
attachmentCallback(attachment, false, e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(!attachment.path) {
|
||||
// create from URL
|
||||
// At this point, must be a valid HTTP/HTTPS url
|
||||
attachment.linkMode = "linked_file";
|
||||
var newItem = yield Zotero.Attachments.linkFromURL({
|
||||
url: attachment.url,
|
||||
|
@ -408,9 +421,10 @@ Zotero.Translate.ItemSaver.prototype = {
|
|||
}
|
||||
}
|
||||
|
||||
var doc = undefined;
|
||||
if(attachment.document) {
|
||||
attachment.document = Zotero.Translate.DOMWrapper.unwrap(attachment.document);
|
||||
if(!attachment.title) attachment.title = attachment.document.title;
|
||||
doc = new XPCNativeWrapper(Zotero.Translate.DOMWrapper.unwrap(attachment.document));
|
||||
if(!attachment.title) attachment.title = doc.title;
|
||||
}
|
||||
var title = attachment.title || null;
|
||||
if(!title) {
|
||||
|
@ -456,6 +470,7 @@ Zotero.Translate.ItemSaver.prototype = {
|
|||
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
// if snapshot is not explicitly set to false, retrieve snapshot
|
||||
if(attachment.document) {
|
||||
|
|
|
@ -229,7 +229,7 @@ Zotero.Utilities = {
|
|||
*/
|
||||
"trimInternal":function(/**String*/ s) {
|
||||
if (typeof(s) != "string") {
|
||||
throw "trimInternal: argument must be a string";
|
||||
throw new Error("trimInternal: argument must be a string");
|
||||
}
|
||||
|
||||
s = s.replace(/[\xA0\r\n\s]+/g, " ");
|
||||
|
@ -1118,11 +1118,11 @@ Zotero.Utilities = {
|
|||
// For some reason, if elements is wrapped by an object
|
||||
// Xray, we won't be able to unwrap the DOMWrapper around
|
||||
// the element. So waive the object Xray.
|
||||
var element = elements.wrappedJSObject ? elements.wrappedJSObject[i] : elements[i];
|
||||
var maybeWrappedEl = elements.wrappedJSObject ? elements.wrappedJSObject[i] : elements[i];
|
||||
|
||||
// Firefox 5 hack, so we will preserve Fx5DOMWrappers
|
||||
var isWrapped = Zotero.Translate.DOMWrapper && Zotero.Translate.DOMWrapper.isWrapped(element);
|
||||
if(isWrapped) element = Zotero.Translate.DOMWrapper.unwrap(element);
|
||||
var isWrapped = Zotero.Translate.DOMWrapper && Zotero.Translate.DOMWrapper.isWrapped(maybeWrappedEl);
|
||||
var element = isWrapped ? Zotero.Translate.DOMWrapper.unwrap(maybeWrappedEl) : maybeWrappedEl;
|
||||
|
||||
// We waived the object Xray above, which will waive the
|
||||
// DOM Xray, so make sure we have a DOM Xray wrapper.
|
||||
|
@ -1155,7 +1155,7 @@ Zotero.Utilities = {
|
|||
var newEl;
|
||||
while(newEl = xpathObject.iterateNext()) {
|
||||
// Firefox 5 hack
|
||||
results.push(isWrapped ? Zotero.Translate.DOMWrapper.wrap(newEl) : newEl);
|
||||
results.push(isWrapped ? Zotero.Translate.DOMWrapper.wrapIn(newEl, maybeWrappedEl) : newEl);
|
||||
}
|
||||
} else if("selectNodes" in element) {
|
||||
// We use JavaScript-XPath in IE for HTML documents, but with an XML
|
||||
|
@ -1197,6 +1197,8 @@ Zotero.Utilities = {
|
|||
var strings = new Array(elements.length);
|
||||
for(var i=0, n=elements.length; i<n; i++) {
|
||||
var el = elements[i];
|
||||
if(el.wrappedJSObject) el = el.wrappedJSObject;
|
||||
if(Zotero.Translate.DOMWrapper) el = Zotero.Translate.DOMWrapper.unwrap(el);
|
||||
strings[i] =
|
||||
(el.nodeType === 2 /*ATTRIBUTE_NODE*/ && "value" in el) ? el.value
|
||||
: "textContent" in el ? el.textContent
|
||||
|
@ -1231,96 +1233,133 @@ Zotero.Utilities = {
|
|||
*
|
||||
* Adapted from http://binnyva.blogspot.com/2005/10/dump-function-javascript-equivalent-of.html
|
||||
*/
|
||||
"varDump":function(arr,level,maxLevel,parentObjects,path) {
|
||||
var dumped_text = "";
|
||||
if (level === undefined){
|
||||
"varDump": function(obj,level,maxLevel,parentObjects,path) {
|
||||
// Simple dump
|
||||
var type = typeof obj;
|
||||
if (type == 'number' || type == 'undefined' || type == 'boolean' || obj === null) {
|
||||
if (!level) {
|
||||
// When dumping these directly, make sure to distinguish them from regular
|
||||
// strings as output by Zotero.debug (i.e. no quotes)
|
||||
return '===>' + obj + '<=== (' + type + ')';
|
||||
}
|
||||
else {
|
||||
return '' + obj;
|
||||
}
|
||||
}
|
||||
else if (type == 'string') {
|
||||
return JSON.stringify(obj);
|
||||
}
|
||||
else if (type == 'function') {
|
||||
var funcStr = ('' + obj).trim();
|
||||
if (!level) {
|
||||
// Dump function contents as well if only dumping function
|
||||
return funcStr;
|
||||
}
|
||||
|
||||
// Display [native code] label for native functions, but make it one line
|
||||
if (/^[^{]+{\s*\[native code\]\s*}$/i.test(funcStr)) {
|
||||
return funcStr.replace(/\s*(\[native code\])\s*/i, ' $1 ');
|
||||
}
|
||||
|
||||
// For non-native functions, display an elipsis
|
||||
return ('' + obj).replace(/{[\s\S]*}/, '{...}');
|
||||
}
|
||||
else if (type != 'object') {
|
||||
return '<<Unknown type: ' + type + '>> ' + obj;
|
||||
}
|
||||
|
||||
// More complex dump with indentation for objects
|
||||
if (level === undefined) {
|
||||
level = 0;
|
||||
}
|
||||
|
||||
|
||||
if (maxLevel === undefined) {
|
||||
maxLevel = 5;
|
||||
}
|
||||
|
||||
// The padding given at the beginning of the line.
|
||||
var level_padding = "";
|
||||
for (var j=0;j<level+1;j++){
|
||||
level_padding += " ";
|
||||
}
|
||||
|
||||
if (level > maxLevel){
|
||||
return dumped_text + level_padding + "<<Maximum depth reached>>...\n";
|
||||
|
||||
var objType = Object.prototype.toString.call(obj);
|
||||
|
||||
if (level > maxLevel) {
|
||||
return objType + " <<Maximum depth reached>>";
|
||||
}
|
||||
|
||||
if (typeof(arr) == 'object') { // Array/Hashes/Objects
|
||||
var isRequest = Zotero.isFx && !Zotero.isBookmarklet
|
||||
&& arr instanceof Components.interfaces.nsIRequest;
|
||||
|
||||
//array for checking recursion
|
||||
//initialise at first itteration
|
||||
if(!parentObjects) {
|
||||
parentObjects = [arr];
|
||||
path = ['ROOT'];
|
||||
// The padding given at the beginning of the line.
|
||||
var level_padding = "";
|
||||
for (var j=0; j<level+1; j++) {
|
||||
level_padding += " ";
|
||||
}
|
||||
|
||||
//Special handling for Error
|
||||
var isError = obj instanceof Error;
|
||||
if (!isError && obj.constructor) {
|
||||
switch (obj.constructor.name) {
|
||||
case 'Error':
|
||||
case 'EvalError':
|
||||
case 'RangeError':
|
||||
case 'ReferenceError':
|
||||
case 'SyntaxError':
|
||||
case 'TypeError':
|
||||
case 'URIError':
|
||||
isError = true;
|
||||
}
|
||||
|
||||
for (var item in arr) {
|
||||
try {
|
||||
// Don't display nsIRequest.name, which can contain password
|
||||
if (isRequest && item == 'name') {
|
||||
dumped_text += level_padding + "'" + item + "' => <<Skipped>>\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
var value = arr[item];
|
||||
} catch(e) {
|
||||
dumped_text += level_padding + "'" + item + "' => <<Access Denied>>\n";
|
||||
}
|
||||
if (isError) {
|
||||
return (obj.constructor.name ? obj.constructor.name : 'Error') + ': '
|
||||
+ (obj.message ? ('' + obj.message).replace(/^/gm, level_padding).trim() : '')
|
||||
+ '\n' + level_padding + "===== Stack Trace =====\n"
|
||||
+ (obj.stack ? obj.stack.trim().replace(/^(?=.)/gm, level_padding) : '')
|
||||
+ '\n' + level_padding + "=======================";
|
||||
}
|
||||
|
||||
// Only dump single level for nsIDOMNode objects (including document)
|
||||
if (Zotero.isFx && !Zotero.isBookmarklet
|
||||
&& obj instanceof Components.interfaces.nsIDOMNode
|
||||
) {
|
||||
level = maxLevel;
|
||||
}
|
||||
|
||||
// Recursion checking
|
||||
if(!parentObjects) {
|
||||
parentObjects = [obj];
|
||||
path = ['ROOT'];
|
||||
}
|
||||
|
||||
var isArray = objType == '[object Array]'
|
||||
var dumpedText = isArray ? '[' : objType + ' {';
|
||||
for (var prop in obj) {
|
||||
dumpedText += '\n' + level_padding + JSON.stringify(prop) + ": ";
|
||||
|
||||
try {
|
||||
var value = obj[prop];
|
||||
} catch(e) {
|
||||
dumpedText += "<<Access Denied>>";
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check for recursion
|
||||
if (typeof(value) == 'object') {
|
||||
var i = parentObjects.indexOf(value);
|
||||
if(i != -1) {
|
||||
var parentName = path.slice(0,i+1).join('->');
|
||||
dumpedText += "<<Reference to parent object " + parentName + " >>";
|
||||
continue;
|
||||
}
|
||||
|
||||
if (typeof(value) == 'object') { // If it is an array
|
||||
//check for recursion
|
||||
var i = parentObjects.indexOf(value);
|
||||
if(i != -1) {
|
||||
var parentName = path.slice(0,i+1).join('->');
|
||||
dumped_text += level_padding + "'" + item + "' => <<Reference to parent object " + parentName + " >>\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
var openBrace = '{', closeBrace = '}';
|
||||
var type = Object.prototype.toString.call(value);
|
||||
if(type == '[object Array]') {
|
||||
openBrace = '[';
|
||||
closeBrace = ']';
|
||||
}
|
||||
|
||||
dumped_text += level_padding + "'" + item + "' => " + type + ' ' + openBrace;
|
||||
//only recurse if there's anything in the object, purely cosmetical
|
||||
try {
|
||||
for(var i in value) {
|
||||
dumped_text += "\n" + Zotero.Utilities.varDump(value,level+1,maxLevel,parentObjects.concat([value]),path.concat([item])) + level_padding;
|
||||
break;
|
||||
}
|
||||
} catch(e) {
|
||||
dumped_text += "<<Error processing object:\n" + e + ">>\n";
|
||||
}
|
||||
dumped_text += closeBrace + "\n";
|
||||
}
|
||||
else {
|
||||
if (typeof value == 'function'){
|
||||
dumped_text += level_padding + "'" + item + "' => function(...){...} \n";
|
||||
}
|
||||
else if (typeof value == 'number') {
|
||||
dumped_text += level_padding + "'" + item + "' => " + value + "\n";
|
||||
}
|
||||
else {
|
||||
dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
dumpedText += Zotero.Utilities.varDump(value,level+1,maxLevel,parentObjects.concat([value]),path.concat([prop]));
|
||||
} catch(e) {
|
||||
dumpedText += "<<Error processing property: " + e.message + " (" + value + ")>>";
|
||||
}
|
||||
}
|
||||
else { // Stings/Chars/Numbers etc.
|
||||
dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
|
||||
|
||||
var lastChar = dumpedText.charAt(dumpedText.length - 1);
|
||||
if (lastChar != '[' && lastChar != '{') {
|
||||
dumpedText += '\n' + level_padding.substr(4);
|
||||
}
|
||||
return dumped_text;
|
||||
dumpedText += isArray ? ']' : '}';
|
||||
|
||||
return dumpedText;
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
@ -222,6 +222,23 @@ Zotero.Utilities.Internal = {
|
|||
},
|
||||
|
||||
|
||||
/**
|
||||
* Return the byte length of a UTF-8 string
|
||||
*
|
||||
* http://stackoverflow.com/a/23329386
|
||||
*/
|
||||
byteLength: function (str) {
|
||||
var s = str.length;
|
||||
for (var i=str.length-1; i>=0; i--) {
|
||||
var code = str.charCodeAt(i);
|
||||
if (code > 0x7f && code <= 0x7ff) s++;
|
||||
else if (code > 0x7ff && code <= 0xffff) s+=2;
|
||||
if (code >= 0xDC00 && code <= 0xDFFF) i--; //trail surrogate
|
||||
}
|
||||
return s;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Display a prompt from an error with custom buttons and a callback
|
||||
*/
|
||||
|
|
|
@ -268,9 +268,9 @@ Zotero.Utilities.Translate.prototype.processDocuments = function(urls, processor
|
|||
if(!processor) return;
|
||||
|
||||
var newLoc = doc.location;
|
||||
if(Zotero.isFx && (protocol != newLoc.protocol || host != newLoc.host)) {
|
||||
if(Zotero.isFx && !Zotero.isBookmarklet && (protocol != newLoc.protocol || host != newLoc.host)) {
|
||||
// Cross-site; need to wrap
|
||||
processor(Zotero.Translate.DOMWrapper.wrap(doc), newLoc.toString());
|
||||
processor(translate._sandboxManager.wrap(doc), newLoc.toString());
|
||||
} else {
|
||||
// Not cross-site; no need to wrap
|
||||
processor(doc, newLoc.toString());
|
||||
|
|
|
@ -23,24 +23,8 @@
|
|||
***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
const ZOTERO_CONFIG = {
|
||||
GUID: 'zotero@chnm.gmu.edu',
|
||||
REPOSITORY_URL: 'https://repo.zotero.org/repo',
|
||||
REPOSITORY_CHECK_INTERVAL: 86400, // 24 hours
|
||||
REPOSITORY_RETRY_INTERVAL: 3600, // 1 hour
|
||||
BASE_URI: 'http://zotero.org/',
|
||||
WWW_BASE_URL: 'http://www.zotero.org/',
|
||||
PROXY_AUTH_URL: 'http://zotero.org.s3.amazonaws.com/proxy-auth',
|
||||
SYNC_URL: 'https://sync.zotero.org/',
|
||||
API_URL: 'https://api.zotero.org/',
|
||||
API_VERSION: 2,
|
||||
PREF_BRANCH: 'extensions.zotero.',
|
||||
BOOKMARKLET_ORIGIN : 'https://www.zotero.org',
|
||||
HTTP_BOOKMARKLET_ORIGIN : 'http://www.zotero.org',
|
||||
BOOKMARKLET_URL: 'https://www.zotero.org/bookmarklet/'
|
||||
};
|
||||
|
||||
// Commonly used imports accessible anywhere
|
||||
Components.utils.import("resource://zotero/config.js");
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
Components.utils.import("resource://gre/modules/osfile.jsm");
|
||||
|
@ -61,7 +45,6 @@ Components.utils.import("resource://gre/modules/osfile.jsm");
|
|||
this.logError = logError;
|
||||
this.getErrors = getErrors;
|
||||
this.getSystemInfo = getSystemInfo;
|
||||
this.safeDebug = safeDebug;
|
||||
this.getString = getString;
|
||||
this.localeJoin = localeJoin;
|
||||
this.setFontSize = setFontSize;
|
||||
|
@ -1262,10 +1245,11 @@ Components.utils.import("resource://gre/modules/osfile.jsm");
|
|||
}
|
||||
|
||||
/**
|
||||
* Log a JS error to the Mozilla JS error console and the text console
|
||||
* Log a JS error to the Mozilla error console and debug output
|
||||
* @param {Exception} err
|
||||
*/
|
||||
function logError(err) {
|
||||
Zotero.debug(err, 1);
|
||||
log(err.message ? err.message : err.toString(), "error",
|
||||
err.fileName ? err.fileName : (err.filename ? err.filename : null), null,
|
||||
err.lineNumber ? err.lineNumber : null, null);
|
||||
|
@ -1362,22 +1346,6 @@ Components.utils.import("resource://gre/modules/osfile.jsm");
|
|||
AddonManager.getAllAddons(onHaveInstalledAddons);
|
||||
}
|
||||
|
||||
|
||||
function safeDebug(obj){
|
||||
for (var i in obj){
|
||||
try {
|
||||
Zotero.debug(i + ': ' + obj[i]);
|
||||
}
|
||||
catch (e){
|
||||
try {
|
||||
Zotero.debug(i + ': ERROR');
|
||||
}
|
||||
catch (e){}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function getString(name, params){
|
||||
try {
|
||||
if (params != undefined){
|
||||
|
@ -1391,6 +1359,13 @@ Components.utils.import("resource://gre/modules/osfile.jsm");
|
|||
}
|
||||
}
|
||||
catch (e){
|
||||
if (e.name == 'NS_ERROR_ILLEGAL_VALUE') {
|
||||
Zotero.debug(params, 1);
|
||||
}
|
||||
else if (e.name != 'NS_ERROR_FAILURE') {
|
||||
Components.utils.reportError(e);
|
||||
Zotero.debug(e, 1);
|
||||
}
|
||||
throw ('Localized string not available for ' + name);
|
||||
}
|
||||
return l10n;
|
||||
|
@ -2692,6 +2667,9 @@ Zotero.DragDrop = {
|
|||
return false;
|
||||
}
|
||||
var win = sourceNode.ownerDocument.defaultView;
|
||||
if (win.document.documentElement.getAttribute('windowtype') == 'zotero:search') {
|
||||
return win.ZoteroAdvancedSearch.itemsView.collectionTreeRow;
|
||||
}
|
||||
return win.ZoteroPane.collectionsView.selectedTreeRow;
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -102,6 +102,12 @@ var ZoteroPane = new function()
|
|||
document.getElementById('zotero-pane-stack').setAttribute('platform', 'win');
|
||||
}
|
||||
|
||||
// Use pre-Yosemite search fields before Fx34
|
||||
// See note in chrome/content/zotero-platform/mac/overlay.css
|
||||
if (Zotero.isMac && Zotero.platformMajorVersion < 34 && Zotero.oscpu.contains(' 10.10')) {
|
||||
document.getElementById('zotero-pane-stack').setAttribute('oldsearchfield', 'true')
|
||||
}
|
||||
|
||||
// register an observer for Zotero reload
|
||||
observerService = Components.classes["@mozilla.org/observer-service;1"]
|
||||
.getService(Components.interfaces.nsIObserverService);
|
||||
|
@ -575,7 +581,7 @@ var ZoteroPane = new function()
|
|||
}
|
||||
else if ((event.keyCode == event.DOM_VK_BACK_SPACE && Zotero.isMac) ||
|
||||
event.keyCode == event.DOM_VK_DELETE) {
|
||||
// If Cmd/Ctrl delete, use forced mode, which does different
|
||||
// If Cmd/Shift delete, use forced mode, which does different
|
||||
// things depending on the context
|
||||
var force = event.metaKey || (!Zotero.isMac && event.shiftKey);
|
||||
ZoteroPane_Local.deleteSelectedItems(force);
|
||||
|
@ -3137,21 +3143,15 @@ var ZoteroPane = new function()
|
|||
this.displayCannotEditLibraryMessage();
|
||||
return;
|
||||
}
|
||||
var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
||||
.getService(Components.interfaces.nsIPromptService);
|
||||
|
||||
var input = {};
|
||||
var check = {value : false};
|
||||
|
||||
// TODO: Allow title to be specified?
|
||||
var result = ps.prompt(null, Zotero.getString('pane.items.attach.link.uri.title'),
|
||||
Zotero.getString('pane.items.attach.link.uri'), input, "", {});
|
||||
if (!result || !input.value) return false;
|
||||
|
||||
// Create a new attachment
|
||||
var io = {};
|
||||
window.openDialog('chrome://zotero/content/attachLink.xul',
|
||||
'zotero-attach-uri-dialog', 'centerscreen, modal', io);
|
||||
if (!io.out) return;
|
||||
return Zotero.Attachments.linkFromURL({
|
||||
url: input.value,
|
||||
parentItemID: itemID
|
||||
url: io.out.link,
|
||||
parentItemID: itemID,
|
||||
title: io.out.title
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -4211,18 +4211,51 @@ var ZoteroPane = new function()
|
|||
*/
|
||||
this.updateToolbarPosition = function() {
|
||||
if(document.getElementById("zotero-pane-stack").hidden) return;
|
||||
const PANES = ["collections", "items"];
|
||||
for each(var paneName in PANES) {
|
||||
var pane = document.getElementById("zotero-"+paneName+"-pane");
|
||||
var splitter = document.getElementById("zotero-"+paneName+"-splitter");
|
||||
var toolbar = document.getElementById("zotero-"+paneName+"-toolbar");
|
||||
|
||||
var paneComputedStyle = window.getComputedStyle(pane, null);
|
||||
var splitterComputedStyle = window.getComputedStyle(splitter, null);
|
||||
|
||||
toolbar.style.width = paneComputedStyle.getPropertyValue("width");
|
||||
toolbar.style.marginRight = splitterComputedStyle.getPropertyValue("width");
|
||||
|
||||
var collectionsPane = document.getElementById("zotero-collections-pane");
|
||||
var collectionsToolbar = document.getElementById("zotero-collections-toolbar");
|
||||
var collectionsSplitter = document.getElementById("zotero-collections-splitter");
|
||||
var itemsPane = document.getElementById("zotero-items-pane");
|
||||
var itemsToolbar = document.getElementById("zotero-items-toolbar");
|
||||
var itemsSplitter = document.getElementById("zotero-items-splitter");
|
||||
var itemPane = document.getElementById("zotero-item-pane");
|
||||
var itemToolbar = document.getElementById("zotero-item-toolbar");
|
||||
|
||||
var collectionsPaneComputedStyle = window.getComputedStyle(collectionsPane, null);
|
||||
var collectionsSplitterComputedStyle = window.getComputedStyle(collectionsSplitter, null);
|
||||
var itemsPaneComputedStyle = window.getComputedStyle(itemsPane, null);
|
||||
var itemsSplitterComputedStyle = window.getComputedStyle(itemsSplitter, null);
|
||||
var itemPaneComputedStyle = window.getComputedStyle(itemPane, null);
|
||||
|
||||
var collectionsPaneWidth = collectionsPaneComputedStyle.getPropertyValue("width");
|
||||
var collectionsSplitterWidth = collectionsSplitterComputedStyle.getPropertyValue("width");
|
||||
var itemsPaneWidth = itemsPaneComputedStyle.getPropertyValue("width");
|
||||
var itemsSplitterWidth = itemsSplitterComputedStyle.getPropertyValue("width");
|
||||
var itemPaneWidth = itemPaneComputedStyle.getPropertyValue("width");
|
||||
|
||||
collectionsToolbar.style.width = collectionsPaneWidth;
|
||||
collectionsToolbar.style.marginRight = collectionsSplitterWidth;
|
||||
itemsToolbar.style.marginRight = itemsSplitterWidth;
|
||||
|
||||
var itemsToolbarWidthNumber = parseInt(itemsPaneWidth, 10);
|
||||
|
||||
if (collectionsPane.collapsed) {
|
||||
var collectionsToolbarComputedStyle = window.getComputedStyle(collectionsToolbar, null);
|
||||
var collectionsToolbarWidth = collectionsToolbarComputedStyle.getPropertyValue("width");// real width (nonzero) after the new definition
|
||||
itemsToolbarWidthNumber = itemsToolbarWidthNumber-parseInt(collectionsToolbarWidth, 10);
|
||||
}
|
||||
|
||||
if (itemPane.collapsed) {
|
||||
// Then the itemsToolbar and itemToolbar share the same space, and it seems best to use some flex attribute from right (because there might be other icons appearing or vanishing).
|
||||
itemsToolbar.style.removeProperty('width');
|
||||
itemsToolbar.setAttribute("flex", "1");
|
||||
itemToolbar.setAttribute("flex", "0");
|
||||
} else {
|
||||
itemsToolbar.style.width = itemsToolbarWidthNumber + "px";
|
||||
itemsToolbar.setAttribute("flex", "0");
|
||||
itemToolbar.setAttribute("flex", "1");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -175,7 +175,7 @@
|
|||
<menuitem class="menuitem-iconic zotero-menuitem-attachments-web-link standalone-no-display" label="&zotero.items.menu.attach.link;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromPage(true, itemID)"/>
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-attachments-web-link" label="&zotero.items.menu.attach.link.uri;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromURI(true, itemID);"/>
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-attachments-file" label="&zotero.items.menu.attach.file;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromDialog(false, itemID);"/>
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-attachments-link" label="&zotero.items.menu.attach.fileLink;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromDialog(true, itemID);"/>
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-attachments-link" label="&zotero.items.menu.attach.fileLink;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromDialog(true, itemID);" id="zotero-tb-attachment-add-file-link"/>
|
||||
</menupopup>
|
||||
</toolbarbutton>
|
||||
<toolbarseparator/>
|
||||
|
@ -538,9 +538,11 @@
|
|||
</deck>
|
||||
</vbox>
|
||||
|
||||
<splitter id="zotero-items-splitter" resizebefore="closest" resizeafter="closest"
|
||||
<splitter id="zotero-items-splitter" resizebefore="closest" resizeafter="closest" collapse="after" zotero-persist="state"
|
||||
onmousemove="ZoteroPane_Local.updateToolbarPosition()"
|
||||
oncommand="ZoteroPane_Local.updateToolbarPosition()"/>
|
||||
oncommand="ZoteroPane_Local.updateToolbarPosition()">
|
||||
<grippy id="zotero-items-grippy"/>
|
||||
</splitter>
|
||||
|
||||
<!-- itemPane.xul -->
|
||||
<vbox id="zotero-item-pane"/>
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Save to Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Attachments cannot be saved to the currently selected library. This item will be saved to your library instead.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
|||
pane.items.loading=Loading items list...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Move to Trash
|
||||
pane.items.trash=Are you sure you want to move the selected item to the Trash?
|
||||
pane.items.trash.multiple=Are you sure you want to move the selected items to the Trash?
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "احفظ في زوتيرو">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Attachments cannot be saved to the currently selected library. This item will be saved to your library instead.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
|||
pane.items.loading=تحميل قائمة العناصر...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=نقل لسلة المحذوفات
|
||||
pane.items.trash=هل ترغب في نقل العنصر المحدد إلى سلة المحذوفات؟
|
||||
pane.items.trash.multiple=هل ترغب في نقل العناصر المحددة إلى سلة المحذوفات؟
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Save to Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Attachments cannot be saved to the currently selected library. This item will be saved to your library instead.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
|||
pane.items.loading=Зарежда списъка на записите...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Премества в кошчето за боклук
|
||||
pane.items.trash=Сигурни ли сте, че искате да преместите избраният запис в кошчето за боклук?
|
||||
pane.items.trash.multiple=Сигурни ли сте, че искате да преместите избраните записи в кошчето за боклук?
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Desa al Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Els adjunts no es poden desar a la biblioteca seleccionada. Aquest element es desarà a la biblioteca.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "Per utilitzar aquesta funció, primer cal instal·lar les eines de PDF en les preferències del Zotero.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ errorReport.reportErrors=Notifica errors...
|
|||
errorReport.reportInstructions=Podeu notificar aquest error seleccionat "%S" des del menú Accions (engranatge)
|
||||
errorReport.followingReportWillBeSubmitted=The following report will be submitted:
|
||||
errorReport.noErrorsLogged=No errors have been logged since %S started.
|
||||
errorReport.advanceMessage=Press %S to send the report to the Zotero developers.
|
||||
errorReport.advanceMessage=Premeu %S per enviar un informe als desenvolupadors de Zotero.
|
||||
errorReport.stepsToReproduce=Passos per a reproduir-lo:
|
||||
errorReport.expectedResult=Resultat esperat:
|
||||
errorReport.actualResult=Resultat real:
|
||||
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Fins a %S etiquetes de cada biblioteca poden tenir color
|
|||
pane.items.loading=Carregant la llista d'elements...
|
||||
pane.items.columnChooser.moreColumns=Més columnes
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Mou a la paperera
|
||||
pane.items.trash=Segur que voleu moure l'element seleccionat a la paperera?
|
||||
pane.items.trash.multiple=Segur que voleu moure els elements seleccionats a la paperera?
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!ENTITY zotero.search.name "Jméno:">
|
||||
|
||||
<!ENTITY zotero.search.searchInLibrary "Search in library:">
|
||||
<!ENTITY zotero.search.searchInLibrary "Hledat v knihovně:">
|
||||
|
||||
<!ENTITY zotero.search.joinMode.prefix "Odpovídá">
|
||||
<!ENTITY zotero.search.joinMode.any "některému">
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<!ENTITY zotero.general.cancel "Zrušit">
|
||||
|
||||
<!ENTITY zotero.errorReport.title "Chybová zpráva Zotera">
|
||||
<!ENTITY zotero.errorReport.unrelatedMessages "This may include messages unrelated to Zotero.">
|
||||
<!ENTITY zotero.errorReport.unrelatedMessages "Může obsahovat zprávy nesouvisející se Zoterem.">
|
||||
<!ENTITY zotero.errorReport.submissionInProgress "Čekejte, prosím, dokud nebude zpráva o chybách odeslána.">
|
||||
<!ENTITY zotero.errorReport.submitted "Zpráva o chybách byla odeslána.">
|
||||
<!ENTITY zotero.errorReport.reportID "ID hlášení:">
|
||||
|
@ -45,7 +45,7 @@
|
|||
<!ENTITY zotero.collections.showUnfiledItems "Zobrazit sjednocené položky">
|
||||
|
||||
<!ENTITY zotero.items.itemType "Typ položky">
|
||||
<!ENTITY zotero.items.type_column "Item Type">
|
||||
<!ENTITY zotero.items.type_column "Typ položky">
|
||||
<!ENTITY zotero.items.title_column "Název">
|
||||
<!ENTITY zotero.items.creator_column "Tvůrce">
|
||||
<!ENTITY zotero.items.date_column "Datum">
|
||||
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Uložit do Zotera">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Do zvolené knihovny nemohou být uloženy přílohy. Tato položka bude místo toho uložena do vaší knihovny.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "Pokud chcete využít této funkce, musíte nejdříve v nastavení Zotera nainstalovat nástroje pro práci s PDF.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Připojit odkaz na URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Odkaz:">
|
||||
<!ENTITY zotero.attachLink.label.title "Název:">
|
||||
|
||||
|
||||
|
|
|
@ -81,9 +81,9 @@ upgrade.couldNotMigrate.restart=Pokud se tato zpráva objevuje opakovaně, resta
|
|||
errorReport.reportError=Zpráva o chybě...
|
||||
errorReport.reportErrors=Nahlásit chyby...
|
||||
errorReport.reportInstructions=Můžete nahlásit tuto chybu volbou "%S" z menu Akce (ozubené kolečko).
|
||||
errorReport.followingReportWillBeSubmitted=The following report will be submitted:
|
||||
errorReport.noErrorsLogged=No errors have been logged since %S started.
|
||||
errorReport.advanceMessage=Press %S to send the report to the Zotero developers.
|
||||
errorReport.followingReportWillBeSubmitted=Bude odeslána následující zpráva:
|
||||
errorReport.noErrorsLogged=Od spuštění %S nebyly zalogovány žádné chyby.
|
||||
errorReport.advanceMessage=Stisknutím %S odešlete zprávu vývojářům Zotera.
|
||||
errorReport.stepsToReproduce=Kroky k zopakování:
|
||||
errorReport.expectedResult=Očekávaný výsledek:
|
||||
errorReport.actualResult=Dosažený výsledek:
|
||||
|
@ -193,10 +193,10 @@ tagColorChooser.numberKeyInstructions=Stisknutím klávesy $NUMBER můžete při
|
|||
tagColorChooser.maxTags=Barvy může mít přiřazeno až %S štítků v každé knihovně.
|
||||
|
||||
pane.items.loading=Nahrávám seznam položek...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Připojit odkaz k URI
|
||||
pane.items.attach.link.uri=Vložte URI:
|
||||
pane.items.columnChooser.moreColumns=Více sloupců
|
||||
pane.items.columnChooser.secondarySort=Sekundární řazení (%S)
|
||||
pane.items.attach.link.uri.unrecognized=Zotero nerozeznalo URI, kterou jste zadali. Prosím zkontrolujte adresu a zkuste to znovu.
|
||||
pane.items.attach.link.uri.file=Odkaz můžete připojit k souboru pomocí "%S".
|
||||
pane.items.trash.title=Přesunout do Koše
|
||||
pane.items.trash=Jste si jisti, že chcete přesunout vybranou položku do Koše?
|
||||
pane.items.trash.multiple=Jste si jisti, že chcete přesunout vybranou položku do Koše?
|
||||
|
@ -483,7 +483,7 @@ ingester.scrapingTo=Ukládám do
|
|||
ingester.scrapeComplete=Položka uložena
|
||||
ingester.scrapeError=Nebylo možné uložit položku
|
||||
ingester.scrapeErrorDescription=Při ukládání této položky nastala chyba. Zkontrolujte %S pro více informací.
|
||||
ingester.scrapeErrorDescription.linkText=Troubleshooting Translator Issues
|
||||
ingester.scrapeErrorDescription.linkText=Řešení problémů s překladači
|
||||
ingester.scrapeErrorDescription.previousError=Ukládání selhalo z důvodu předchozí chyby v Zoteru.
|
||||
|
||||
ingester.importReferRISDialog.title=Import RIS/Refer do Zotera
|
||||
|
@ -966,5 +966,5 @@ firstRunGuidance.saveIcon=Zotero rozpoznalo na této stránce citaci. Pro její
|
|||
firstRunGuidance.authorMenu=Zotero umožňuje zvolit i editory a překladatele. Volbou v tomto menu můžete změnit autora na editora či překladatele.
|
||||
firstRunGuidance.quickFormat=Napište název, nebo autora k nimž hledáte citaci.\n\n Když si vyberete, kliknutím na bublinu, nebo stiskem Ctrl-\u2193 můžete přidat čísla stran, prefixy, či sufixy. Číslo stránky můžete vložit přímo k vašim vyhledávaným výrazům.\n\nCitace můžete editovat přímo ve vašem textovém procesoru.
|
||||
firstRunGuidance.quickFormatMac=Napište název, nebo autora k nimž hledáte citaci.\n\n Když si vyberete, kliknutím na bublinu, nebo stiskem Ctrl-\u2193 můžete přidat čísla stran, prefixy, či sufixy. Číslo stránky můžete vložit přímo k vašim vyhledávaným výrazům.\n\nCitace můžete editovat přímo ve vašem textovém procesoru.
|
||||
firstRunGuidance.toolbarButton.new=Click here to open Zotero, or use the %S keyboard shortcut.
|
||||
firstRunGuidance.toolbarButton.upgrade=The Zotero icon can now be found in the Firefox toolbar. Click the icon to open Zotero, or use the %S keyboard shortcut.
|
||||
firstRunGuidance.toolbarButton.new=Zotero otevřete kliknutím sem, nebo použitím klávesové zkratky %S
|
||||
firstRunGuidance.toolbarButton.upgrade=Ikona Zotero se nyní nachází v Panelu nástrojů Firefoxu. Zotero otevřete kliknutím na ikonu, nebo stisknutím %S.
|
||||
|
|
|
@ -169,7 +169,7 @@
|
|||
<!ENTITY zotero.preferences.locate.locateEngineManager "Håndtering af søgemaskiner for artikler">
|
||||
<!ENTITY zotero.preferences.locate.description "Beskrivelse">
|
||||
<!ENTITY zotero.preferences.locate.name "Navn">
|
||||
<!ENTITY zotero.preferences.locate.locateEnginedescription "En søgemaskine udvider mulighederne drop-down-menuen for Lokalisering i Info-vinduet. Hvis man aktiverer søgemaskinerne i nedenstående liste, bliver de føjet til drop-down-menuen og kan anvendes til at lokalisere Elementer fra dit Bibliotek på WWW.">
|
||||
<!ENTITY zotero.preferences.locate.locateEnginedescription "En søgemaskine udvider mulighederne i drop-down-menuen for Find i Info-fanebladet. Hvis man aktiverer søgemaskinerne i nedenstående liste, bliver de føjet til drop-down-menuen og kan anvendes til at lokalisere elementer fra dit bibliotek på WWW.">
|
||||
<!ENTITY zotero.preferences.locate.addDescription "To add a Lookup Engine that is not on the list, visit the desired search engine in your browser and select 'Add' from the Firefox Search Bar. When you reopen this preference pane you will have the option to enable the new Lookup Engine.">
|
||||
<!ENTITY zotero.preferences.locate.restoreDefaults "Gendan Defaults">
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!ENTITY zotero.search.name "Navn:">
|
||||
|
||||
<!ENTITY zotero.search.searchInLibrary "Search in library:">
|
||||
<!ENTITY zotero.search.searchInLibrary "Søg i bibliotek:">
|
||||
|
||||
<!ENTITY zotero.search.joinMode.prefix "Match">
|
||||
<!ENTITY zotero.search.joinMode.any "enhver">
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<!ENTITY zotero.general.cancel "Annullér">
|
||||
|
||||
<!ENTITY zotero.errorReport.title "Zotero fejlrapport">
|
||||
<!ENTITY zotero.errorReport.unrelatedMessages "This may include messages unrelated to Zotero.">
|
||||
<!ENTITY zotero.errorReport.unrelatedMessages "Dette kan inkludere beskeder, som ikke har noget med Zotero at gøre.">
|
||||
<!ENTITY zotero.errorReport.submissionInProgress "Vent venligst mens fejlrapporten registreres.">
|
||||
<!ENTITY zotero.errorReport.submitted "Din fejlrapport er registreret.">
|
||||
<!ENTITY zotero.errorReport.reportID "Rapport-ID:">
|
||||
|
@ -45,7 +45,7 @@
|
|||
<!ENTITY zotero.collections.showUnfiledItems "Vis ukategoriserede elementer">
|
||||
|
||||
<!ENTITY zotero.items.itemType "Type">
|
||||
<!ENTITY zotero.items.type_column "Item Type">
|
||||
<!ENTITY zotero.items.type_column "Elementtype">
|
||||
<!ENTITY zotero.items.title_column "Titel">
|
||||
<!ENTITY zotero.items.creator_column "Ophav">
|
||||
<!ENTITY zotero.items.date_column "Dato">
|
||||
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Gem til Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Vedhæftede filer kan ikke gemmes til det valgte bibliotek. Dette element vil blive gemt i dit bibliotek i stedet.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "For at bruge denne funktion skal du først installere PDF-værktøjerne i Zoteros indstillinger.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -81,9 +81,9 @@ upgrade.couldNotMigrate.restart=Hvis du fortsat får denne meddelelse, så genst
|
|||
errorReport.reportError=Send rapport om fejl...
|
||||
errorReport.reportErrors=Send rapport om fejl....
|
||||
errorReport.reportInstructions=Du kan sende denne fejlmelding ved at vælge "%S" fra Handlinger-menuen (tandhjulikonet).
|
||||
errorReport.followingReportWillBeSubmitted=The following report will be submitted:
|
||||
errorReport.noErrorsLogged=No errors have been logged since %S started.
|
||||
errorReport.advanceMessage=Press %S to send the report to the Zotero developers.
|
||||
errorReport.followingReportWillBeSubmitted=Følgende rapport vil blive sendt:
|
||||
errorReport.noErrorsLogged=Der er ikke registreret nogen fejl, siden %S startede.
|
||||
errorReport.advanceMessage=Tryk %S for at sende rapporten til Zotero-udviklerne.
|
||||
errorReport.stepsToReproduce=Følgende skridt kan genskabe situationen:
|
||||
errorReport.expectedResult=Forventet resultat:
|
||||
errorReport.actualResult=Faktisk resultat:
|
||||
|
@ -193,10 +193,10 @@ tagColorChooser.numberKeyInstructions=Du kan tilføje dette mærke til valgte el
|
|||
tagColorChooser.maxTags=Op til %S mærker i hvert bibliotek kan have farver tilknyttet.
|
||||
|
||||
pane.items.loading=Henter listen med elementer...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Vedhæft henvisning til URI
|
||||
pane.items.attach.link.uri=Indtast en URI:
|
||||
pane.items.columnChooser.moreColumns=Flere kolonner
|
||||
pane.items.columnChooser.secondarySort=Sekundær sortering (%S)
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Flyt til papirkurv
|
||||
pane.items.trash=Er du sikker på, du vil lægge dette element i papirkurven?
|
||||
pane.items.trash.multiple=Er du sikker på, du vil lægge disse elementer i papirkurven?
|
||||
|
@ -483,7 +483,7 @@ ingester.scrapingTo=Gemmer i
|
|||
ingester.scrapeComplete=Elementet er gemt
|
||||
ingester.scrapeError=Elementet kunne ikke gemmes
|
||||
ingester.scrapeErrorDescription=En fejl opstod under forsøget på at gemme elementet. Tjek %S for mere information.
|
||||
ingester.scrapeErrorDescription.linkText=Troubleshooting Translator Issues
|
||||
ingester.scrapeErrorDescription.linkText=Fejlsøg oversætterproblemer
|
||||
ingester.scrapeErrorDescription.previousError=Processen kunne ikke udføres pga. en tidligere Zotero-fejl.
|
||||
|
||||
ingester.importReferRISDialog.title=Import til Zotero med RIS/Refer
|
||||
|
@ -948,7 +948,7 @@ locate.showFile.label=Vis fil
|
|||
locate.showFile.tooltip=Åbn mappen, som filen findes i
|
||||
locate.libraryLookup.label=Opslag i bibliotekskatalogen
|
||||
locate.libraryLookup.tooltip=Slå dette element op med den valgte OpenURL fortolker
|
||||
locate.manageLocateEngines=Håndtér opslagsmaskiner...
|
||||
locate.manageLocateEngines=Håndtér søgemaskiner...
|
||||
|
||||
standalone.corruptInstallation=Din Zotero Standalone installation lader til at være ødelagt pga. en fejlslagen automatisk opdatering. Selvom Zotero måske fortsat vil du, tilrådes det at hente den seneste version på http://zotero.org/support/standalone for at undgå mulige fejl.
|
||||
standalone.addonInstallationFailed.title=Installation af udvidelsesmodul slog fejl
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "In Zotero speichern">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Anhänge können in der aktuell gewählten Bibliothek nicht gespeichert werden. Der Eintrag wird stattdessen in Ihrer Bibliothek gespeichert.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "Um diese Funktion zu nutzen, müssen Sie zuerst die PDF-Werkzeuge in den Zotero-Einstellungen installieren.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Link zu einer URI anhängen">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Titel:">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Sie können bis zu %S Tags in jeder Bibliothek Farben zu
|
|||
pane.items.loading=Lade die Liste der Einträge...
|
||||
pane.items.columnChooser.moreColumns=Weitere Spalten
|
||||
pane.items.columnChooser.secondarySort=Sekundäre Sortierung (%S)
|
||||
pane.items.attach.link.uri.title=Link zu einer URI anhängen
|
||||
pane.items.attach.link.uri=URI eingeben:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero hat die eingegeben URI nicht erkannt. Bitte überprüfen Sie die Adresse und versuchen Sie es erneut.
|
||||
pane.items.attach.link.uri.file=Um einen Link zu einer Datei hinzuzufügen, verwenden Sie bitte "%S".
|
||||
pane.items.trash.title=In den Papierkorb verschieben
|
||||
pane.items.trash=Sind Sie sicher, dass Sie den ausgewählten Eintrag in den Papierkorb verschieben wollen?
|
||||
pane.items.trash.multiple=Sind Sie sicher, dass Sie die ausgewählten Einträge in den Papierkorb verschieben wollen?
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Save to Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Attachments cannot be saved to the currently selected library. This item will be saved to your library instead.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
|||
pane.items.loading=Loading items list...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Move to Trash
|
||||
pane.items.trash=Are you sure you want to move the selected item to the Trash?
|
||||
pane.items.trash.multiple=Are you sure you want to move the selected items to the Trash?
|
||||
|
|
|
@ -284,4 +284,10 @@
|
|||
|
||||
<!ENTITY zotero.downloadManager.label "Save to Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Attachments cannot be saved to the currently selected library. This item will be saved to your library instead.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -198,8 +198,8 @@ tagColorChooser.maxTags = Up to %S tags in each library c
|
|||
pane.items.loading = Loading items list…
|
||||
pane.items.columnChooser.moreColumns = More Columns
|
||||
pane.items.columnChooser.secondarySort = Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title = Attach Link to URI
|
||||
pane.items.attach.link.uri = Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized = Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file = To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title = Move to Trash
|
||||
pane.items.trash = Are you sure you want to move the selected item to the Trash?
|
||||
pane.items.trash.multiple = Are you sure you want to move the selected items to the Trash?
|
||||
|
|
|
@ -18,12 +18,12 @@
|
|||
<!ENTITY zotero.preferences.fontSize.small "Pequeña">
|
||||
<!ENTITY zotero.preferences.fontSize.medium "Mediana">
|
||||
<!ENTITY zotero.preferences.fontSize.large "Grande">
|
||||
<!ENTITY zotero.preferences.fontSize.xlarge "Súper grande">
|
||||
<!ENTITY zotero.preferences.fontSize.xlarge "Super grande">
|
||||
<!ENTITY zotero.preferences.fontSize.notes "Tamaño de letra en las notas:">
|
||||
|
||||
<!ENTITY zotero.preferences.miscellaneous "Miscelánea">
|
||||
<!ENTITY zotero.preferences.autoUpdate "Automáticamente comprobar si hay traductores y estilos actualizados ">
|
||||
<!ENTITY zotero.preferences.updateNow "Hacerlo ahora">
|
||||
<!ENTITY zotero.preferences.updateNow "Actualizarlo">
|
||||
<!ENTITY zotero.preferences.reportTranslationFailure "Informar de fallos en los traductores de página">
|
||||
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader "Permitir que zotero.org personalice contenido basándose en la versión actual de Zotero">
|
||||
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader.tooltip "Si se activa, la versión actual de Zotero se añadirá a las peticiones HTTP a zotero.org">
|
||||
|
@ -61,11 +61,11 @@
|
|||
<!ENTITY zotero.preferences.sync.fileSyncing "Sincronización de archivos">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.url "URL:">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.myLibrary "Sincronizar los archivos adjuntos en Mi biblioteca usando">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.groups "Sincronizar los archivos en bibliotecas de grupo usando el almacén Zotero">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.groups "Sincronizar los archivos en bibliotecas de grupo usando el almacenaje de Zotero">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.download "Descargar archivos">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.atSyncTime "en el momento de sincronizar">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "según se necesite">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos1 "Al usar el almacén de Zotero, acepta sus">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos1 "Mediante el uso de almacenamiento provisto por Zotero, acepta quedar obligado por su">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos2 "términos y condiciones">
|
||||
<!ENTITY zotero.preferences.sync.reset.warning1 "Las siguientes operaciones son para utilizar sólo en situaciones raras, específicas, y no deberían usarse para una gestión de problemas generales. En muchos casos, reestablecer causará problemas adicionales. Vea">
|
||||
<!ENTITY zotero.preferences.sync.reset.warning2 "Opciones para reestablecer la sincronización">
|
||||
|
@ -82,22 +82,22 @@
|
|||
<!ENTITY zotero.preferences.sync.reset.button "Restablecer…">
|
||||
|
||||
|
||||
<!ENTITY zotero.preferences.prefpane.search "Búsqueda">
|
||||
<!ENTITY zotero.preferences.prefpane.search "Buscar">
|
||||
<!ENTITY zotero.preferences.search.fulltextCache "Copia local para búsquedas a texto completo">
|
||||
<!ENTITY zotero.preferences.search.pdfIndexing "Indización de PDF">
|
||||
<!ENTITY zotero.preferences.search.indexStats "Estadísticas de indización">
|
||||
<!ENTITY zotero.preferences.search.pdfIndexing "Indexación de PDF">
|
||||
<!ENTITY zotero.preferences.search.indexStats "Estadísticas de indexación">
|
||||
|
||||
<!ENTITY zotero.preferences.search.indexStats.indexed "Indizados:">
|
||||
<!ENTITY zotero.preferences.search.indexStats.indexed "Indexado:">
|
||||
<!ENTITY zotero.preferences.search.indexStats.partial "Parciales:">
|
||||
<!ENTITY zotero.preferences.search.indexStats.unindexed "No indizados:">
|
||||
<!ENTITY zotero.preferences.search.indexStats.unindexed "No indexados:">
|
||||
<!ENTITY zotero.preferences.search.indexStats.words "Palabras:">
|
||||
|
||||
<!ENTITY zotero.preferences.fulltext.textMaxLength "Máximo de caracteres indizados por archivo:">
|
||||
<!ENTITY zotero.preferences.fulltext.pdfMaxPages "Máximo de páginas indizadas por archivo:">
|
||||
<!ENTITY zotero.preferences.fulltext.textMaxLength "Máximo de caracteres indexados por archivo:">
|
||||
<!ENTITY zotero.preferences.fulltext.pdfMaxPages "Máximo de páginas indexadas por archivo:">
|
||||
|
||||
<!ENTITY zotero.preferences.prefpane.export "Exportar">
|
||||
|
||||
<!ENTITY zotero.preferences.citationOptions.caption "Opciones de cita">
|
||||
<!ENTITY zotero.preferences.citationOptions.caption "Opciones de citas">
|
||||
<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Incluir los URL de los artículos en las referencias">
|
||||
<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "Sin esta opción, Zotero solo incluye los URL al citar artículos de revistas y periódicos si el artículo no tiene un intervalo de páginas especificado.">
|
||||
|
||||
|
@ -132,18 +132,18 @@
|
|||
<!ENTITY zotero.preferences.keys.toggleFullscreen "Conmutar el modo de pantalla completa">
|
||||
<!ENTITY zotero.preferences.keys.focusLibrariesPane "Enfocar el panel de bibliotecas">
|
||||
<!ENTITY zotero.preferences.keys.quicksearch "Búsqueda rápida">
|
||||
<!ENTITY zotero.preferences.keys.newItem "Crear un New Item">
|
||||
<!ENTITY zotero.preferences.keys.newItem "Crear un nuevo elemento">
|
||||
<!ENTITY zotero.preferences.keys.newNote "Crear una Nueva nota">
|
||||
<!ENTITY zotero.preferences.keys.toggleTagSelector "Conmutar el selector de marcas">
|
||||
<!ENTITY zotero.preferences.keys.copySelectedItemCitationsToClipboard "Copiar las citas para los ítems seleccionados al portapapeles">
|
||||
<!ENTITY zotero.preferences.keys.copySelectedItemsToClipboard "Copiar los ítems seleccionados al portapapeles">
|
||||
<!ENTITY zotero.preferences.keys.copySelectedItemCitationsToClipboard "Copiar las citas para los elementos seleccionados al portapapeles">
|
||||
<!ENTITY zotero.preferences.keys.copySelectedItemsToClipboard "Copiar los elementos seleccionados al portapapeles">
|
||||
<!ENTITY zotero.preferences.keys.importFromClipboard "Importar desde el portapapeles">
|
||||
<!ENTITY zotero.preferences.keys.changesTakeEffect "Los cambios tendrán efecto sólo en las ventanas nuevas">
|
||||
|
||||
<!ENTITY zotero.preferences.prefpane.proxies "Servidores Proxies">
|
||||
<!ENTITY zotero.preferences.prefpane.proxies "Servidores proxies">
|
||||
|
||||
<!ENTITY zotero.preferences.proxies.proxyOptions "Opciones de servidor proxy">
|
||||
<!ENTITY zotero.preferences.proxies.desc_before_link "Zotero transparentemente redirigirá las peticiones a través de los servidores proxies guardados. Consulte la">
|
||||
<!ENTITY zotero.preferences.proxies.desc_before_link "Zotero redirigirá transparentemente las peticiones a través de los servidores proxies guardados. Consulte la">
|
||||
<!ENTITY zotero.preferences.proxies.desc_link "Documentación del servidor proxy">
|
||||
<!ENTITY zotero.preferences.proxies.desc_after_link "para mayor información.">
|
||||
<!ENTITY zotero.preferences.proxies.transparent "Habilitar el redireccionamiento del servidor proxy">
|
||||
|
@ -155,7 +155,7 @@
|
|||
|
||||
<!ENTITY zotero.preferences.proxies.multiSite "Multi-sitio">
|
||||
<!ENTITY zotero.preferences.proxies.autoAssociate "Automáticamente asociar nuevos hosts">
|
||||
<!ENTITY zotero.preferences.proxies.variables "Puede usar las siguientes variables en su esquema del servidor proxy:">
|
||||
<!ENTITY zotero.preferences.proxies.variables "Puede usar las siguientes variables en su esquema de servidor proxy:">
|
||||
<!ENTITY zotero.preferences.proxies.h_variable "%h - El nombre del sistema del sitio proxificado (ejemplo: www.zotero.org)">
|
||||
<!ENTITY zotero.preferences.proxies.p_variable "%p - La ruta de la página proxificado excluyendo la barra invertida (ejemplo: acerca/index.html)">
|
||||
<!ENTITY zotero.preferences.proxies.d_variable "%d - La ruta del directorio (ejemplo: acerca/)">
|
||||
|
@ -170,20 +170,20 @@
|
|||
<!ENTITY zotero.preferences.locate.description "Descripción">
|
||||
<!ENTITY zotero.preferences.locate.name "Nombre">
|
||||
<!ENTITY zotero.preferences.locate.locateEnginedescription "Un motor de búsqueda amplía la capacidad de la lista desplegable Localizar en el panel de información. Habilitando dichos motores de búsqueda a la lista de abajo, éstas se agregarán a la lista desplegable y se pueden utilizar para localizar los recursos de su biblioteca en la red.">
|
||||
<!ENTITY zotero.preferences.locate.addDescription "Para añadir un motor de búsqueda que no está en la lista, visita en tu navegador el motor de búsqueda y selecciona "Añadir" desde el menú Localizar de Zotero.">
|
||||
<!ENTITY zotero.preferences.locate.addDescription "Para añadir un motor de búsqueda que no está en la lista, visite en su navegador el motor de búsqueda y selecciona "Añadir" desde el menú Localizar de Zotero.">
|
||||
<!ENTITY zotero.preferences.locate.restoreDefaults "Restaurar configuración por omisión">
|
||||
|
||||
<!ENTITY zotero.preferences.charset "Codificación de caracteres">
|
||||
<!ENTITY zotero.preferences.charset.importCharset "Importar codificación de caracteres">
|
||||
<!ENTITY zotero.preferences.charset.displayExportOption "Mostrar opción de codificación de caracteres en la exportación">
|
||||
|
||||
<!ENTITY zotero.preferences.dataDir "Lugar de almacenamiento">
|
||||
<!ENTITY zotero.preferences.dataDir "Lugar del directorio de almacenamiento">
|
||||
<!ENTITY zotero.preferences.dataDir.useProfile "Usar el directorio del perfil de usuario">
|
||||
<!ENTITY zotero.preferences.dataDir.custom "Especial:">
|
||||
<!ENTITY zotero.preferences.dataDir.custom "Personalizar:">
|
||||
<!ENTITY zotero.preferences.dataDir.choose "Elegir...">
|
||||
<!ENTITY zotero.preferences.dataDir.reveal "Mostrar el directorio de datos">
|
||||
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.caption "Directorio base de adjunto enlazado">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.caption "Directorio base de adjuntos enlazados">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.message "Zotero usará caminos relativos para los archivos adjuntos enlazados dentro del directorio base, permitiéndole acceder a los archivos desde diferentes ordenadores, siempre que la estructura de archivos dentro del directorio base se mantenga igual.">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.basePath "Directorio base:">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.selectBasePath "Elegir...">
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Guardar en Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Los archivos adjuntos no se pueden guardar en la biblioteca seleccionada. Así, este ítem será guardado en su biblioteca.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "Para utilizar esta función, debe primeramente instalar las herramientas PDF en las preferencias de Zotero.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Adjuntar enlace a URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Enlace:">
|
||||
<!ENTITY zotero.attachLink.label.title "Título:">
|
||||
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ general.updateAvailable=Actualización disponible
|
|||
general.noUpdatesFound=No hay actualizaciones.
|
||||
general.isUpToDate=%S está actualizado.
|
||||
general.upgrade=Actualizar
|
||||
general.yes=Sí
|
||||
general.yes=Si
|
||||
general.no=No
|
||||
general.notNow=no ahora
|
||||
general.passed=Superado
|
||||
|
@ -135,7 +135,7 @@ startupError.zoteroVersionIsOlder.upgrade=Actualízalo a la última versión en
|
|||
startupError.zoteroVersionIsOlder.current=Versión actual: %S
|
||||
startupError.databaseUpgradeError=Error de actualización de la base de datos
|
||||
|
||||
date.relative.secondsAgo.one=Hace un segundo
|
||||
date.relative.secondsAgo.one=Hace 1 segundo
|
||||
date.relative.secondsAgo.multiple=Hace %S segundos
|
||||
date.relative.minutesAgo.one=Hace un minuto
|
||||
date.relative.minutesAgo.multiple=Hace %S minutos
|
||||
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Se puede asignar colores a hasta %S etiquetas de cada bi
|
|||
pane.items.loading=Cargando la lista de ítems...
|
||||
pane.items.columnChooser.moreColumns=Más columnas
|
||||
pane.items.columnChooser.secondarySort=Orden secundario (%S)
|
||||
pane.items.attach.link.uri.title=Adjuntar enlace a URI
|
||||
pane.items.attach.link.uri=Introducir una URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero no reconoce la dirección URL que ingresó. Por favor verifiquela e intente nuevamente.
|
||||
pane.items.attach.link.uri.file=Para adjuntar un enlace a un archivo, por favor utilice “%S”.
|
||||
pane.items.trash.title=Enviar a la papelera
|
||||
pane.items.trash=¿Seguro que quieres enviar el ítem a la papelera?
|
||||
pane.items.trash.multiple=¿Seguro que quieres enviar los ítems a la papelera?
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Zoterosse salvestamine">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Valitud raamatukokku ei ole võimalik manuseid salvestada. See kirje salvestatakse teie isiklikku raamatukokku.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "Selle funktsiooni kasutamiseks on kõigepealt tarvis paigaldada PDF tööriistad Zotero seadetes.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
|||
pane.items.loading=Kirjete nimekirja laadimine...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Liiguta Prahi hulka
|
||||
pane.items.trash=Olete kindel, et soovite valitud kirje Prahi hulka liigutada?
|
||||
pane.items.trash.multiple=Olete kindel, et soovite valitud kirjed Prahi hulka liigutada?
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Save to Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Attachments cannot be saved to the currently selected library. This item will be saved to your library instead.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
|||
pane.items.loading=datuak kargatzen ari...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Zaborrara bota
|
||||
pane.items.trash=Hautatutako itema zaborrera bota?
|
||||
pane.items.trash.multiple=Hautatutako itemak zaborrera bota?
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "ذخیره در زوترو">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Attachments cannot be saved to the currently selected library. This item will be saved to your library instead.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
|||
pane.items.loading=بار کردن لیست آیتمها...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=انتقال به سطل بازیافت
|
||||
pane.items.trash=آیتم انتخاب شده به سطل بازیافت برود؟
|
||||
pane.items.trash.multiple=آیتمهای انتخاب شده به سطل بازیافت بروند؟
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<!ENTITY zotero.preferences.default "Oletus:">
|
||||
<!ENTITY zotero.preferences.items "nimikkeet">
|
||||
<!ENTITY zotero.preferences.period ".">
|
||||
<!ENTITY zotero.preferences.settings "Settings">
|
||||
<!ENTITY zotero.preferences.settings "Asetukset">
|
||||
|
||||
<!ENTITY zotero.preferences.prefpane.general "Yleistä">
|
||||
|
||||
|
@ -22,12 +22,12 @@
|
|||
<!ENTITY zotero.preferences.fontSize.notes "Muistiinpanojen kirjasinkoko:">
|
||||
|
||||
<!ENTITY zotero.preferences.miscellaneous "Sekalaista">
|
||||
<!ENTITY zotero.preferences.autoUpdate "Automatically check for updated translators and styles">
|
||||
<!ENTITY zotero.preferences.autoUpdate "Tarkista sivutulkkien ja tyylien päivitykset automaattisesti">
|
||||
<!ENTITY zotero.preferences.updateNow "Päivitä nyt">
|
||||
<!ENTITY zotero.preferences.reportTranslationFailure "Ilmoita toimimattomista sivutulkeista">
|
||||
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader "Anna zotero.orgin muunnella sisältöään nykyisen Zotero-version perusteella">
|
||||
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader.tooltip "If enabled, the current Zotero version will be added to HTTP requests to zotero.org.">
|
||||
<!ENTITY zotero.preferences.parseRISRefer "Use Zotero for downloaded BibTeX/RIS/Refer files">
|
||||
<!ENTITY zotero.preferences.parseRISRefer "Käytä Zoteroa ladattujen BibTeX/Refer-tiedostojen avaamiseen">
|
||||
<!ENTITY zotero.preferences.automaticSnapshots "Ota tilannekuvat automaattisesti luotaessa nimikettä web-sivusta">
|
||||
<!ENTITY zotero.preferences.downloadAssociatedFiles "Liitä automaattisesti asiaankuuluvat PDF:t ja muut tiedostot">
|
||||
<!ENTITY zotero.preferences.automaticTags "Merkitse automaattisesti nimikkeisiin avainsanat ja otsikot">
|
||||
|
@ -55,8 +55,8 @@
|
|||
<!ENTITY zotero.preferences.sync.createAccount "Luo käyttäjätili">
|
||||
<!ENTITY zotero.preferences.sync.lostPassword "Unohditko salasanan?">
|
||||
<!ENTITY zotero.preferences.sync.syncAutomatically "Synkronoi automaattisesti">
|
||||
<!ENTITY zotero.preferences.sync.syncFullTextContent "Sync full-text content">
|
||||
<!ENTITY zotero.preferences.sync.syncFullTextContent.desc "Zotero can sync the full-text content of files in your Zotero libraries with zotero.org and other linked devices, allowing you to easily search for your files wherever you are. The full-text content of your files will not be shared publicly.">
|
||||
<!ENTITY zotero.preferences.sync.syncFullTextContent "Synkronisoi kokotekstit">
|
||||
<!ENTITY zotero.preferences.sync.syncFullTextContent.desc "Zotero voi synkronisoida kirjastossasi olevien tiedostojen kokotekstisisällön zotero.orgiin ja linkattuihin laitteisiin, joten voi helposti hakea tietoja missä vain. Tiedostojen kokotekstisisältöä ei jaeta julkisesti.">
|
||||
<!ENTITY zotero.preferences.sync.about "Tietoa synkronoinnista">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing "Tiedostojen synkronointi">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.url "Osoite:">
|
||||
|
@ -64,12 +64,12 @@
|
|||
<!ENTITY zotero.preferences.sync.fileSyncing.groups "Synkronoi ryhmäkirjastojen liitetiedostot käyttäen Zoteron tallennustilaa">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.download "Lataa tiedostot">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.atSyncTime "synkronoinnin yhteydessä">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "as needed">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "tarvittaessa">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos1 "Käyttämällä Zoteron tallennustilaa sitoudut samalla siihen liittyviin">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos2 "käyttöehtoihin">
|
||||
<!ENTITY zotero.preferences.sync.reset.warning1 "Seuraavat toiminnot ovat tarpeen vain äärimmäisen harvinaisissa tilanteissa, eikä niitä tulisi käyttää tavalliseen virheenetsintään. Monissa tapauksissa asetusten nollaus voi aiheuttaa lisää ongelmia. Katso ">
|
||||
<!ENTITY zotero.preferences.sync.reset.warning2 "Synkroinnin nollauksen asetukset">
|
||||
<!ENTITY zotero.preferences.sync.reset.warning3 " for more information.">
|
||||
<!ENTITY zotero.preferences.sync.reset.warning3 "saadaksesi lisätietoja.">
|
||||
<!ENTITY zotero.preferences.sync.reset.fullSync "Täydellinen synkronointi Zotero-palvelimen kanssa">
|
||||
<!ENTITY zotero.preferences.sync.reset.fullSync.desc "Yhdistä paikallinen Zotero-aineisto synkronointipalvelimen aineiston kanssa jättäen synkronointihistoria huomioimatta">
|
||||
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Palauta aineisto Zotero-palvelimelta">
|
||||
|
@ -78,7 +78,7 @@
|
|||
<!ENTITY zotero.preferences.sync.reset.restoreToServer.desc "Poista kaikki palvelimella oleva aineisto ja korvaa se paikallisella Zotero-aineistolla">
|
||||
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory "Poista tiedostojen synkronointihistoria">
|
||||
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory.desc "Tarkistaa jokaisen paikallisen liitetiedoston löytymisen tallennuspalvelimelta">
|
||||
<!ENTITY zotero.preferences.sync.reset "Reset">
|
||||
<!ENTITY zotero.preferences.sync.reset "Nollaa">
|
||||
<!ENTITY zotero.preferences.sync.reset.button "Palauta">
|
||||
|
||||
|
||||
|
@ -128,12 +128,12 @@
|
|||
<!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys">
|
||||
|
||||
<!ENTITY zotero.preferences.keys.openZotero "Avaa/sulje Zotero-ikkuna">
|
||||
<!ENTITY zotero.preferences.keys.saveToZotero "Save to Zotero (address bar icon)">
|
||||
<!ENTITY zotero.preferences.keys.saveToZotero "Tallenna Zoteroon (osoitepalkin kuvake)">
|
||||
<!ENTITY zotero.preferences.keys.toggleFullscreen "Koko ruudun tila">
|
||||
<!ENTITY zotero.preferences.keys.focusLibrariesPane "Focus Libraries Pane">
|
||||
<!ENTITY zotero.preferences.keys.focusLibrariesPane "Kohdista kirjastonäkymään">
|
||||
<!ENTITY zotero.preferences.keys.quicksearch "Pikahaku">
|
||||
<!ENTITY zotero.preferences.keys.newItem "Create a New Item">
|
||||
<!ENTITY zotero.preferences.keys.newNote "Create a New Note">
|
||||
<!ENTITY zotero.preferences.keys.newItem "Luo uusi nimike">
|
||||
<!ENTITY zotero.preferences.keys.newNote "Luo uusi muistiinpanot">
|
||||
<!ENTITY zotero.preferences.keys.toggleTagSelector "Aiheenvalitsin päälle/pois">
|
||||
<!ENTITY zotero.preferences.keys.copySelectedItemCitationsToClipboard "Kopioi valittujen nimikkeiden sitaatit leikepöydälle">
|
||||
<!ENTITY zotero.preferences.keys.copySelectedItemsToClipboard "Kopioi valitut nimikkeet leikepöydälle">
|
||||
|
@ -146,7 +146,7 @@
|
|||
<!ENTITY zotero.preferences.proxies.desc_before_link "Zotero välittää huomaamattomasti pyyntöjä tallennettujen välityspalvelinten kautta. Katso">
|
||||
<!ENTITY zotero.preferences.proxies.desc_link "välityspalvelinten ohjeesta">
|
||||
<!ENTITY zotero.preferences.proxies.desc_after_link "lisätietoja.">
|
||||
<!ENTITY zotero.preferences.proxies.transparent "Transparently redirect requests through previously used proxies">
|
||||
<!ENTITY zotero.preferences.proxies.transparent "Käytä välityspalvelinta uudelleenohjaukseen">
|
||||
<!ENTITY zotero.preferences.proxies.autoRecognize "Tunnista välitetyt resurssit automaattisesti">
|
||||
<!ENTITY zotero.preferences.proxies.disableByDomain "Poista käytöstä välitetty uudelleenohjaus, kun palvelinnimessä on">
|
||||
<!ENTITY zotero.preferences.proxies.configured "Konfiguroidut välityspalvelimet">
|
||||
|
@ -163,14 +163,14 @@
|
|||
<!ENTITY zotero.preferences.proxies.a_variable "%a - Mikä tahansa merkkijono">
|
||||
|
||||
<!ENTITY zotero.preferences.prefpane.advanced "Lisäasetukset">
|
||||
<!ENTITY zotero.preferences.advanced.filesAndFolders "Files and Folders">
|
||||
<!ENTITY zotero.preferences.advanced.filesAndFolders "Tiedostot ja kansiot">
|
||||
|
||||
<!ENTITY zotero.preferences.prefpane.locate "Paikanna">
|
||||
<!ENTITY zotero.preferences.locate.locateEngineManager "Artikkelihakumoottorin hallinta">
|
||||
<!ENTITY zotero.preferences.locate.description "Kuvaus">
|
||||
<!ENTITY zotero.preferences.locate.name "Nimi">
|
||||
<!ENTITY zotero.preferences.locate.locateEnginedescription "Artikkelihakumoottori laajentaa Info-sivulla olevan Paikanna-valikon toimintaa. Laittamalla päälle alla luetellut artikkelihakumoottori ne lisätään pudotusvalikkoon ja niitä voi käyttää kirjastossasi olevien resurssien etsimiseen webistä.">
|
||||
<!ENTITY zotero.preferences.locate.addDescription "To add a Lookup Engine that is not on the list, visit the desired search engine in your browser and select 'Add' from the Firefox Search Bar. When you reopen this preference pane you will have the option to enable the new Lookup Engine.">
|
||||
<!ENTITY zotero.preferences.locate.locateEnginedescription "Artikkelihakumoottori laajentaa Info-sivulla olevan Paikanna-valikon toimintaa. Laittamalla päälle alla luetellut artikkelihakumoottorit ne lisätään pudotusvalikkoon ja niitä voi käyttää kirjastossasi olevien resurssien etsimiseen webistä.">
|
||||
<!ENTITY zotero.preferences.locate.addDescription "Lisätäksesi artikkelihakumoottorin, jota ei ole luettelossa, vieraile kyseisellä nettisivulla ja valitse 'Add' (Lisää) Firefoxin hakupalkista. Kun avaat uudelleen asetukset, voit aktivoida uuden artikkelihakumoottorin.">
|
||||
<!ENTITY zotero.preferences.locate.restoreDefaults "Palauta oletusarvot">
|
||||
|
||||
<!ENTITY zotero.preferences.charset "Merkistökoodaus">
|
||||
|
@ -183,11 +183,11 @@
|
|||
<!ENTITY zotero.preferences.dataDir.choose "Valitse...">
|
||||
<!ENTITY zotero.preferences.dataDir.reveal "Näytä datahakemisto">
|
||||
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.caption "Linked Attachment Base Directory">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.message "Zotero will use relative paths for linked file attachments within the base directory, allowing you to access files on different computers as long as the file structure within the base directory remains the same.">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.basePath "Base directory:">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.selectBasePath "Choose…">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.resetBasePath "Revert to Absolute Paths…">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.caption "Linkattujen liitteiden juurikansio">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.message "Zotero käyttää suhteellisia polkuja viitatakseen tiedostoliitteisiin juurikansiossa, joten voit käyttää tiedostoja eri tietokoneilla, kunhan tiedostorakenne juurikansion sisällä pysyy samana.">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.basePath "Juurikansio:">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.selectBasePath "Valitse...">
|
||||
<!ENTITY zotero.preferences.attachmentBaseDir.resetBasePath "Palauta absoluuttiset polut...">
|
||||
|
||||
<!ENTITY zotero.preferences.dbMaintenance "Tietokannan huolto">
|
||||
<!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Tarkista tietokannan eheys">
|
||||
|
@ -206,4 +206,4 @@
|
|||
<!ENTITY zotero.preferences.openAboutConfig "Avaa about:config">
|
||||
<!ENTITY zotero.preferences.openCSLEdit "Avaa CSL-muokkain">
|
||||
<!ENTITY zotero.preferences.openCSLPreview "Avaa CSL-esikatselu">
|
||||
<!ENTITY zotero.preferences.openAboutMemory "Open about:memory">
|
||||
<!ENTITY zotero.preferences.openAboutMemory "Avaa about:memory">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!ENTITY zotero.search.name "Nimi:">
|
||||
|
||||
<!ENTITY zotero.search.searchInLibrary "Search in library:">
|
||||
<!ENTITY zotero.search.searchInLibrary "Etsi kirjastosta:">
|
||||
|
||||
<!ENTITY zotero.search.joinMode.prefix "Vertaa">
|
||||
<!ENTITY zotero.search.joinMode.any "joku">
|
||||
|
@ -14,7 +14,7 @@
|
|||
<!ENTITY zotero.search.textModes.phrase "Lause">
|
||||
<!ENTITY zotero.search.textModes.phraseBinary "Lause (sis. binääritiedostot)">
|
||||
<!ENTITY zotero.search.textModes.regexp "Säännöllinen lauseke">
|
||||
<!ENTITY zotero.search.textModes.regexpCS "Säännöllinen lauseke (kirjaintaso)">
|
||||
<!ENTITY zotero.search.textModes.regexpCS "Säännöllinen lauseke (merkkikokoriippuvainen)">
|
||||
|
||||
<!ENTITY zotero.search.date.units.days "päivää">
|
||||
<!ENTITY zotero.search.date.units.months "kuukautta">
|
||||
|
|
|
@ -3,9 +3,9 @@ general.filter=Suodata:
|
|||
general.highlight=Korosta:
|
||||
general.clearAll=Tyhjennä kaikki
|
||||
general.jumpToYear=Hyppää vuoteen:
|
||||
general.firstBand=Nauha yksi:
|
||||
general.secondBand=Nauha kaksi:
|
||||
general.thirdBand=Nauha kolme:
|
||||
general.firstBand=Ensimmäinen kaista:
|
||||
general.secondBand=Toinen kaista:
|
||||
general.thirdBand=Kolmas kaista:
|
||||
general.dateType=Päiväysmuoto:
|
||||
general.timelineHeight=Aikajanan korkeus
|
||||
general.fitToScreen=Sovita näytölle
|
||||
|
|
|
@ -8,12 +8,12 @@
|
|||
<!ENTITY zotero.general.cancel "Peruuta">
|
||||
|
||||
<!ENTITY zotero.errorReport.title "Zoteron virheraportti">
|
||||
<!ENTITY zotero.errorReport.unrelatedMessages "This may include messages unrelated to Zotero.">
|
||||
<!ENTITY zotero.errorReport.submissionInProgress "Odota">
|
||||
<!ENTITY zotero.errorReport.unrelatedMessages "Mukana saattaa olla Zoteroon liittymättömiä viestejä.">
|
||||
<!ENTITY zotero.errorReport.submissionInProgress "Odota, kunnes virheraportti on toimitettu.">
|
||||
<!ENTITY zotero.errorReport.submitted "Virheraporttisi on toimitettu.">
|
||||
<!ENTITY zotero.errorReport.reportID "Raportin tunnus:">
|
||||
<!ENTITY zotero.errorReport.postToForums "Lähetä Zoteron keskustelualueelle (forums.zotero.org) viesti, joka sisältää raportin tunnuksen, ongelman kuvauksen sekä toimenpiteet, joilla virhe saadaan toistettua.">
|
||||
<!ENTITY zotero.errorReport.notReviewed "Error reports are generally not reviewed unless referred to in the forums.">
|
||||
<!ENTITY zotero.errorReport.notReviewed "Virheraportteja ei yleensä käsitellä, jos niihin ei ole viitattu keskustelualueella.">
|
||||
|
||||
<!ENTITY zotero.upgrade.title "Zoteron päivitysvelho">
|
||||
<!ENTITY zotero.upgrade.newVersionInstalled "Olet asentanut Zoteron uuden version.">
|
||||
|
@ -26,7 +26,7 @@
|
|||
<!ENTITY zotero.upgrade.upgradeInProgress "Odota päivitysprosessin päättymistä. Tämä saattaa kestää muutamia minuutteja.">
|
||||
<!ENTITY zotero.upgrade.upgradeSucceeded "Zotero-tietokantasi on onnistuneesti päivitetty.">
|
||||
<!ENTITY zotero.upgrade.changeLogBeforeLink "Katso">
|
||||
<!ENTITY zotero.upgrade.changeLogLink "muutoslogi">
|
||||
<!ENTITY zotero.upgrade.changeLogLink "muutosloki">
|
||||
<!ENTITY zotero.upgrade.changeLogAfterLink "tutustuaksesi uusiin ominaisuuksiin ja päivityksiin.">
|
||||
|
||||
<!ENTITY zotero.contextMenu.addTextToCurrentNote "Lisää valinta Zotero-muistiinpanoon">
|
||||
|
@ -37,7 +37,7 @@
|
|||
<!ENTITY zotero.tabs.info.label "Tiedot">
|
||||
<!ENTITY zotero.tabs.notes.label "Muistiinpanot">
|
||||
<!ENTITY zotero.tabs.attachments.label "Liitteet">
|
||||
<!ENTITY zotero.tabs.tags.label "Merkit">
|
||||
<!ENTITY zotero.tabs.tags.label "Avainsanat">
|
||||
<!ENTITY zotero.tabs.related.label "Liittyvät">
|
||||
<!ENTITY zotero.notes.separate "Muokkaa erillisessä ikkunassa">
|
||||
|
||||
|
@ -45,7 +45,7 @@
|
|||
<!ENTITY zotero.collections.showUnfiledItems "Näytä arkistoimattomat nimikkeet">
|
||||
|
||||
<!ENTITY zotero.items.itemType "Nimikkeen tyyppi">
|
||||
<!ENTITY zotero.items.type_column "Item Type">
|
||||
<!ENTITY zotero.items.type_column "Nimikkeen tyyppi">
|
||||
<!ENTITY zotero.items.title_column "Otsikko">
|
||||
<!ENTITY zotero.items.creator_column "Luoja">
|
||||
<!ENTITY zotero.items.date_column "Päiväys">
|
||||
|
@ -66,7 +66,7 @@
|
|||
<!ENTITY zotero.items.place_column "Paikka">
|
||||
<!ENTITY zotero.items.volume_column "Vuosikerta">
|
||||
<!ENTITY zotero.items.edition_column "Painos">
|
||||
<!ENTITY zotero.items.pages_column "Sivuja">
|
||||
<!ENTITY zotero.items.pages_column "Sivut">
|
||||
<!ENTITY zotero.items.issue_column "Numero">
|
||||
<!ENTITY zotero.items.series_column "Sarja">
|
||||
<!ENTITY zotero.items.seriesTitle_column "Sarjan nimi">
|
||||
|
@ -97,20 +97,20 @@
|
|||
<!ENTITY zotero.toolbar.moreItemTypes.label "Lisää">
|
||||
<!ENTITY zotero.toolbar.newItemFromPage.label "Uusi nimike nykyisestä sivusta">
|
||||
<!ENTITY zotero.toolbar.lookup.label "Uusi nimike tunnisteen perusteella">
|
||||
<!ENTITY zotero.toolbar.removeItem.label "Remove Item...">
|
||||
<!ENTITY zotero.toolbar.newCollection.label "New Collection...">
|
||||
<!ENTITY zotero.toolbar.newGroup "New Group...">
|
||||
<!ENTITY zotero.toolbar.newSubcollection.label "New Subcollection...">
|
||||
<!ENTITY zotero.toolbar.newSavedSearch.label "New Saved Search...">
|
||||
<!ENTITY zotero.toolbar.removeItem.label "Poista nimike...">
|
||||
<!ENTITY zotero.toolbar.newCollection.label "Uusi kokoelma...">
|
||||
<!ENTITY zotero.toolbar.newGroup "Uusi ryhmä...">
|
||||
<!ENTITY zotero.toolbar.newSubcollection.label "Uusi alakokoelma...">
|
||||
<!ENTITY zotero.toolbar.newSavedSearch.label "Uusi tallennettu haku...">
|
||||
<!ENTITY zotero.toolbar.emptyTrash.label "Tyhjennä roskakori">
|
||||
<!ENTITY zotero.toolbar.tagSelector.label "Näytä/piilota merkkivalitsin">
|
||||
<!ENTITY zotero.toolbar.actions.label "Toiminnot">
|
||||
<!ENTITY zotero.toolbar.import.label "Import...">
|
||||
<!ENTITY zotero.toolbar.import.label "Tuo...">
|
||||
<!ENTITY zotero.toolbar.importFromClipboard "Tuo leikepöydältä">
|
||||
<!ENTITY zotero.toolbar.export.label "Export Library...">
|
||||
<!ENTITY zotero.toolbar.rtfScan.label "RTF Scan...">
|
||||
<!ENTITY zotero.toolbar.export.label "Vie kirjasto...">
|
||||
<!ENTITY zotero.toolbar.rtfScan.label "RTF-skannaus...">
|
||||
<!ENTITY zotero.toolbar.timeline.label "Luo aikajana">
|
||||
<!ENTITY zotero.toolbar.preferences.label "Preferences...">
|
||||
<!ENTITY zotero.toolbar.preferences.label "Asetukset...">
|
||||
<!ENTITY zotero.toolbar.supportAndDocumentation "Ohjeet ja tuki">
|
||||
<!ENTITY zotero.toolbar.about.label "Tietoja Zoterosta">
|
||||
<!ENTITY zotero.toolbar.advancedSearch "Tarkennettu haku">
|
||||
|
@ -128,22 +128,22 @@
|
|||
<!ENTITY zotero.toolbar.newNote "Uusi muistiinpano">
|
||||
<!ENTITY zotero.toolbar.note.standalone "Uusi itsenäinen muistiinpano">
|
||||
<!ENTITY zotero.toolbar.note.child "Uusi alamuistiinpano">
|
||||
<!ENTITY zotero.toolbar.lookup "Lookup by Identifier...">
|
||||
<!ENTITY zotero.toolbar.attachment.linked "Link to File...">
|
||||
<!ENTITY zotero.toolbar.attachment.add "Store Copy of File...">
|
||||
<!ENTITY zotero.toolbar.lookup "Etsi tunnisteen perusteella...">
|
||||
<!ENTITY zotero.toolbar.attachment.linked "Linkitä tiedostoon...">
|
||||
<!ENTITY zotero.toolbar.attachment.add "Tallenna tiedoston kopio...">
|
||||
<!ENTITY zotero.toolbar.attachment.weblink "Tallenna linkki nykyiselle sivulle">
|
||||
<!ENTITY zotero.toolbar.attachment.snapshot "Ota tilannekuva nykyisestä sivusta">
|
||||
|
||||
<!ENTITY zotero.tagSelector.noTagsToDisplay "Ei merkkejä">
|
||||
<!ENTITY zotero.tagSelector.noTagsToDisplay "Ei näytettäviä avainsanoja">
|
||||
<!ENTITY zotero.tagSelector.filter "Suodatin:">
|
||||
<!ENTITY zotero.tagSelector.showAutomatic "Show automatic">
|
||||
<!ENTITY zotero.tagSelector.displayAllInLibrary "Display all tags in this library">
|
||||
<!ENTITY zotero.tagSelector.selectVisible "Select visible">
|
||||
<!ENTITY zotero.tagSelector.clearVisible "Deselect visible">
|
||||
<!ENTITY zotero.tagSelector.clearAll "Deselect all">
|
||||
<!ENTITY zotero.tagSelector.displayAllInLibrary "Näytä tämän kirjaston kaikki avainsanat">
|
||||
<!ENTITY zotero.tagSelector.selectVisible "Valitse näkyvät">
|
||||
<!ENTITY zotero.tagSelector.clearVisible "Poista näkyvät valinnat">
|
||||
<!ENTITY zotero.tagSelector.clearAll "Poista kaikki valinnat">
|
||||
<!ENTITY zotero.tagSelector.assignColor "Aseta väri">
|
||||
<!ENTITY zotero.tagSelector.renameTag "Rename Tag...">
|
||||
<!ENTITY zotero.tagSelector.deleteTag "Delete Tag...">
|
||||
<!ENTITY zotero.tagSelector.renameTag "Nimeä avainsana uudelleen...">
|
||||
<!ENTITY zotero.tagSelector.deleteTag "Poista avainsana...">
|
||||
|
||||
<!ENTITY zotero.tagColorChooser.title "Valitse avainsanan väri ja sijainti">
|
||||
<!ENTITY zotero.tagColorChooser.color "Väri:">
|
||||
|
@ -176,7 +176,7 @@
|
|||
|
||||
<!ENTITY zotero.progress.title "Eteneminen">
|
||||
|
||||
<!ENTITY zotero.exportOptions.title "Export...">
|
||||
<!ENTITY zotero.exportOptions.title "Vie...">
|
||||
<!ENTITY zotero.exportOptions.format.label "Muoto:">
|
||||
<!ENTITY zotero.exportOptions.translatorOptions.label "Kääntäjän asetukset">
|
||||
|
||||
|
@ -211,7 +211,7 @@
|
|||
|
||||
<!ENTITY zotero.integration.prefs.formatUsing.label "Muotoile käyttäen:">
|
||||
<!ENTITY zotero.integration.prefs.bookmarks.label "Kirjanmerkit">
|
||||
<!ENTITY zotero.integration.prefs.bookmarks.caption "Bookmarks are preserved across Microsoft Word and OpenOffice, but may be accidentally modified.">
|
||||
<!ENTITY zotero.integration.prefs.bookmarks.caption "Kirjanmerkit säilytetään Microsoft Wordin ja OpenOfficen välillä, mutta ne voivat tahattomasti muuttua.">
|
||||
|
||||
|
||||
<!ENTITY zotero.integration.prefs.automaticJournalAbbeviations.label "Lyhennä lehtien nimet automaattisesti">
|
||||
|
@ -251,7 +251,7 @@
|
|||
<!ENTITY zotero.proxy.recognized.disable.label "Älä automaattisesti uudelleenohjaa pyyntöjä aiemmin tunnistettujen välitystyspalvelinten kautta">
|
||||
<!ENTITY zotero.proxy.recognized.ignore.label "Ohita">
|
||||
|
||||
<!ENTITY zotero.recognizePDF.recognizing.label "Retrieving Metadata...">
|
||||
<!ENTITY zotero.recognizePDF.recognizing.label "Haetaan metatietoja...">
|
||||
<!ENTITY zotero.recognizePDF.cancel.label "Peruuta">
|
||||
<!ENTITY zotero.recognizePDF.pdfName.label "PDF:n nimi">
|
||||
<!ENTITY zotero.recognizePDF.itemName.label "Nimikkeen nimi">
|
||||
|
@ -264,7 +264,7 @@
|
|||
<!ENTITY zotero.rtfScan.ambiguousCitations.label "Monimerkityksiset sitaatit">
|
||||
<!ENTITY zotero.rtfScan.mappedCitations.label "Paikannetut sitaatit">
|
||||
<!ENTITY zotero.rtfScan.introPage.label "Johdanto">
|
||||
<!ENTITY zotero.rtfScan.introPage.description "Zotero can automatically extract and reformat citations and insert a bibliography into RTF files. To get started, choose an RTF file below.">
|
||||
<!ENTITY zotero.rtfScan.introPage.description "Zotero voi automaattisesti seuloa ja uudelleenmuotoilla viittaukset ja lisätä kirjallisuusluettelon RTF-tiedostoon. Valitse aluksi RTF-tiedosto.">
|
||||
<!ENTITY zotero.rtfScan.introPage.description2 "Valitse aluksi luettava RTF-tiedosto sekä kirjoitettava tiedosto:">
|
||||
<!ENTITY zotero.rtfScan.scanPage.label "Etsitään sitaatteja">
|
||||
<!ENTITY zotero.rtfScan.scanPage.description "Zotero etsii asiakirjasta sitaatteja. Malta vielä hetki.">
|
||||
|
@ -278,9 +278,15 @@
|
|||
<!ENTITY zotero.rtfScan.inputFile.label "Luettava tiedosto">
|
||||
<!ENTITY zotero.rtfScan.outputFile.label "Kirjoitettava tiedosto">
|
||||
|
||||
<!ENTITY zotero.file.choose.label "Choose File...">
|
||||
<!ENTITY zotero.file.choose.label "Valitse tiedosto...">
|
||||
<!ENTITY zotero.file.noneSelected.label "Tiedostoa ei ole valittu">
|
||||
|
||||
<!ENTITY zotero.downloadManager.label "Tallenna Zoteroon">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Liitteitä ei voi tallentaa valittuun kirjastoon. Nimike sen sijaan tallennetaan kirjastoon.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "Käyttääksesi tätä ominaisuutta tulee sinun ensin asentaa PDF-työkalut Zoteron asetuksista.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ general.notNow=Ei nyt
|
|||
general.passed=Onnistui
|
||||
general.failed=Epäonnistui
|
||||
general.and=ja
|
||||
general.etAl=et al.
|
||||
general.etAl=ym.
|
||||
general.accessDenied=Pääsy evätty
|
||||
general.permissionDenied=Ei riittäviä oikeuksia
|
||||
general.character.singular=kirjain
|
||||
|
@ -45,15 +45,15 @@ general.seeForMoreInformation=Katso %S, jos haluat tietää lisää.
|
|||
general.enable=Laita päälle
|
||||
general.disable=Ota pois päältä
|
||||
general.remove=Poista
|
||||
general.reset=Reset
|
||||
general.reset=Nollaa
|
||||
general.hide=Kätke
|
||||
general.quit=Lopeta
|
||||
general.useDefault=Käytä oletusarvoa
|
||||
general.openDocumentation=Avaa käyttöohje
|
||||
general.numMore=%S more…
|
||||
general.numMore=%S lisää...
|
||||
general.openPreferences=Avaa asetukset
|
||||
general.keys.ctrlShift=Ctrl+Shift+
|
||||
general.keys.cmdShift=Cmd+Shift+
|
||||
general.keys.cmdShift=Cmd+Shift
|
||||
|
||||
general.operationInProgress=Zoteron toimenpide on käynnissä.
|
||||
general.operationInProgress.waitUntilFinished=Odota, kunnes se valmis.
|
||||
|
@ -62,7 +62,7 @@ general.operationInProgress.waitUntilFinishedAndTryAgain=Odota, kunnes se on val
|
|||
punctuation.openingQMark="
|
||||
punctuation.closingQMark="
|
||||
punctuation.colon=:
|
||||
punctuation.ellipsis=…
|
||||
punctuation.ellipsis=...
|
||||
|
||||
install.quickStartGuide=Quick Start Guide
|
||||
install.quickStartGuide.message.welcome=Tervetuloa Zoteroon!
|
||||
|
@ -81,28 +81,28 @@ upgrade.couldNotMigrate.restart=Jos saat toistuvasti tämän viestin, käynnist
|
|||
errorReport.reportError=Report Error...
|
||||
errorReport.reportErrors=Kerro virheestä...
|
||||
errorReport.reportInstructions=Voit raportoida tämän virheen valitsemalla "%S" Toimintovalikosta (hammasratas).
|
||||
errorReport.followingReportWillBeSubmitted=The following report will be submitted:
|
||||
errorReport.noErrorsLogged=No errors have been logged since %S started.
|
||||
errorReport.followingReportWillBeSubmitted=Seuraavanlainen raportti toimitetaan eteenpäin:
|
||||
errorReport.noErrorsLogged=Virheitä ei ole kirjattu lokiin %S:n käynnistämisen jälkeen.
|
||||
errorReport.advanceMessage=Paina %S lähettääksesi raportin Zoteron kehittäjille.
|
||||
errorReport.stepsToReproduce=Virheen saa aikaan tekemällä näin:
|
||||
errorReport.expectedResult=Odottamani lopputulos:
|
||||
errorReport.actualResult=Todellinen lopputulos:
|
||||
errorReport.noNetworkConnection=Ei verkkoyhteyttä
|
||||
errorReport.invalidResponseRepository=Invalid response from repository
|
||||
errorReport.repoCannotBeContacted=Repository cannot be contacted
|
||||
errorReport.invalidResponseRepository=Virheellinen vastaus tyylivalikoimasta
|
||||
errorReport.repoCannotBeContacted=Tyylivalikoimaan ei saada yhteyttä
|
||||
|
||||
|
||||
attachmentBasePath.selectDir=Choose Base Directory
|
||||
attachmentBasePath.chooseNewPath.title=Confirm New Base Directory
|
||||
attachmentBasePath.chooseNewPath.message=Linked file attachments below this directory will be saved using relative paths.
|
||||
attachmentBasePath.chooseNewPath.existingAttachments.singular=One existing attachment was found within the new base directory.
|
||||
attachmentBasePath.chooseNewPath.existingAttachments.plural=%S existing attachments were found within the new base directory.
|
||||
attachmentBasePath.chooseNewPath.button=Change Base Directory Setting
|
||||
attachmentBasePath.clearBasePath.title=Revert to Absolute Paths
|
||||
attachmentBasePath.clearBasePath.message=New linked file attachments will be saved using absolute paths.
|
||||
attachmentBasePath.clearBasePath.existingAttachments.singular=One existing attachment within the old base directory will be converted to use an absolute path.
|
||||
attachmentBasePath.clearBasePath.existingAttachments.plural=%S existing attachments within the old base directory will be converted to use absolute paths.
|
||||
attachmentBasePath.clearBasePath.button=Clear Base Directory Setting
|
||||
attachmentBasePath.selectDir=Valitse juurihakemisto
|
||||
attachmentBasePath.chooseNewPath.title=Vahvista uusi juurihakemisto
|
||||
attachmentBasePath.chooseNewPath.message=Linkatut tiedostoliitteet tämän hakemiston sisällä tallennetaan käyttäen suhteellisia polkuja.
|
||||
attachmentBasePath.chooseNewPath.existingAttachments.singular=Yksi olemassaoleva liite löytyi juurikansion alta.
|
||||
attachmentBasePath.chooseNewPath.existingAttachments.plural=%S olemassaolevaa liitettä löytyi juurikansion alta.
|
||||
attachmentBasePath.chooseNewPath.button=Muuta juurihakemiston asetuksia
|
||||
attachmentBasePath.clearBasePath.title=Palauta absoluuttiset polut
|
||||
attachmentBasePath.clearBasePath.message=Uudet tiedostoliitteet tallennetaan absoluuttisia polkuja käyttäen.
|
||||
attachmentBasePath.clearBasePath.existingAttachments.singular=Yksi olemassaoleva liite vanhassa juurikansiossa muunnetaan käyttämään absoluuttista polkua.
|
||||
attachmentBasePath.clearBasePath.existingAttachments.plural=%S olemassaolevaa liitettä vanhassa juurikansiossa muutetaan käyttämään absoluuttisia polkuja.
|
||||
attachmentBasePath.clearBasePath.button=Nollaa juurikansioasetus
|
||||
|
||||
dataDir.notFound=Zoteron datakansiota ei löytynyt.
|
||||
dataDir.previousDir=Edellinen kansio:
|
||||
|
@ -110,12 +110,12 @@ dataDir.useProfileDir=Käytä Firefoxin profiilikansiota
|
|||
dataDir.selectDir=Valitse kansio Zoteron datalle
|
||||
dataDir.selectedDirNonEmpty.title=Kansio ei ole tyhjä
|
||||
dataDir.selectedDirNonEmpty.text=Valitsemasi kansio ei ole tyhjä eikä ilmeisesti Zoteron datakansio.\n\nLuodaanko Zoteron tiedot tähän kansioon siitä huolimatta?
|
||||
dataDir.selectedDirEmpty.title=Directory Empty
|
||||
dataDir.selectedDirEmpty.text=The directory you selected is empty. To move an existing Zotero data directory, you will need to manually move files from the existing data directory to the new location after %1$S has closed.
|
||||
dataDir.selectedDirEmpty.title=Hakemisto on tyhjä
|
||||
dataDir.selectedDirEmpty.text=Valitsemasi hakemisto on tyhjä. Siirtääksesi olemassaoleva Zoteron datahakemiston sinun pitää käsin siirtää tiedostot olemassaolevasta datahakemistosta uuteen sijaintiin, kunhan %1$S on sulkeutunut.
|
||||
dataDir.selectedDirEmpty.useNewDir=Käytetäänkö uutta hakemistoa?
|
||||
dataDir.moveFilesToNewLocation=Be sure to move files from your existing Zotero data directory to the new location before reopening %1$S.
|
||||
dataDir.incompatibleDbVersion.title=Incompatible Database Version
|
||||
dataDir.incompatibleDbVersion.text=The currently selected data directory is not compatible with Zotero Standalone, which can share a database only with Zotero for Firefox 2.1b3 or later.\n\nUpgrade to the latest version of Zotero for Firefox first or select a different data directory for use with Zotero Standalone.
|
||||
dataDir.moveFilesToNewLocation=Siirräthän tiedostot nykyisestä Zoteron datakansiosta uuteen sijaintiin ennen kuin avaat %1$S:n uudelleen.
|
||||
dataDir.incompatibleDbVersion.title=Yhteensopimaton tietokantaversio
|
||||
dataDir.incompatibleDbVersion.text=Valittu datahakemisto ei ole yhteensopiva Zotero Standalonen kanssa. Zotero Standalone voi jakaa tieokannan Zotero for Firefoxin version 2.1b3 tai uudemman kanssa.\n\nPäivitä Zotero for Firefox ensin uusimpaan versioon tai valitse toinen datakansio Zoteron Standalonen kanssa käytettäväksi.
|
||||
dataDir.standaloneMigration.title=Aiempi Zotero-kirjasto löytyi
|
||||
dataDir.standaloneMigration.description=Tämä vaikuttaa olevan ensimmäinen %1$S-kertasi. Haluatko, että %1$S tuo asetukset %2$S:sta ja käyttää aiempaa datahakemistoa?
|
||||
dataDir.standaloneMigration.multipleProfiles=%1$S jakaa datahakemiston viimeisimmän käytetyn profiilin kanssa.
|
||||
|
@ -148,7 +148,7 @@ date.relative.yearsAgo.multiple=%S vuotta sitten
|
|||
|
||||
pane.collections.delete.title=Poista kokoelma
|
||||
pane.collections.delete=Haluatko varmasti poistaa valitun kokoelman?
|
||||
pane.collections.delete.keepItems=Items within this collection will not be deleted.
|
||||
pane.collections.delete.keepItems=Tässä kokoelmassa olevia nimikkeitä ei poisteta.
|
||||
pane.collections.deleteWithItems.title=Poista kokoelma ja nimikkeet
|
||||
pane.collections.deleteWithItems=Haluatko varmasti poistaa valitun kokoelman ja siirtää kaikki siihen kuuluvat nimikkeet roskakoriin?
|
||||
|
||||
|
@ -161,7 +161,7 @@ pane.collections.newSavedSeach=Uusi tallennettu haku
|
|||
pane.collections.savedSearchName=Anna tälle tallennetulle haulle nimi:
|
||||
pane.collections.rename=Anna kokoelmalle uusi nimi:
|
||||
pane.collections.library=Oma Kirjasto
|
||||
pane.collections.groupLibraries=Group Libraries
|
||||
pane.collections.groupLibraries=Ryhmäkirjastot
|
||||
pane.collections.trash=Roskakori
|
||||
pane.collections.untitled=Nimetön
|
||||
pane.collections.unfiled=Lajittelemattomat nimikkeet
|
||||
|
@ -187,16 +187,16 @@ pane.tagSelector.delete.message=Haluatko varmasti poistaa tämän merkin?\n\nMer
|
|||
pane.tagSelector.numSelected.none=0 merkkiä valittuna
|
||||
pane.tagSelector.numSelected.singular=%S merkki valittuna
|
||||
pane.tagSelector.numSelected.plural=%S merkkiä valittuna
|
||||
pane.tagSelector.maxColoredTags=Only %S tags in each library can have colors assigned.
|
||||
pane.tagSelector.maxColoredTags=Vain %S avainsanalla kussakin kirjastossa voi olla oma värinsä.
|
||||
|
||||
tagColorChooser.numberKeyInstructions=You can add this tag to selected items by pressing the $NUMBER key on the keyboard.
|
||||
tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
||||
tagColorChooser.numberKeyInstructions=Voit lisätä tämän avainsanan valittuihin nimikkeisiin painamalla $NUMBER-näppäintä.
|
||||
tagColorChooser.maxTags=Enintään %S avainsanalla kussakin kirjastossa voi olla oma värinsä.
|
||||
|
||||
pane.items.loading=Ladataan kohdeluettelo...
|
||||
pane.items.columnChooser.moreColumns=Lisää sarakkeita
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.columnChooser.secondarySort=Toissijainen lajittelu (%S)
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Siirrä roskakoriin
|
||||
pane.items.trash=Haluatko varmasti siirtää valitun nimikkeen roskakoriin?
|
||||
pane.items.trash.multiple=Haluatko varmasti siirtää valitut nimikkeet roskakoriin?
|
||||
|
@ -233,15 +233,15 @@ pane.items.interview.manyParticipants=Haastattelu, tehneet %S ym.
|
|||
|
||||
pane.item.selected.zero=Ei valittuja kohteita
|
||||
pane.item.selected.multiple=%S kohdetta valittuna
|
||||
pane.item.unselected.zero=No items in this view
|
||||
pane.item.unselected.singular=%S item in this view
|
||||
pane.item.unselected.plural=%S items in this view
|
||||
pane.item.unselected.zero=Tässä näkymässä ei ole yhtään nimikettä
|
||||
pane.item.unselected.singular=%S nimike tässä näkymässä
|
||||
pane.item.unselected.plural=%S nimikettä tässä näkymässä
|
||||
|
||||
pane.item.duplicates.selectToMerge=Select items to merge
|
||||
pane.item.duplicates.mergeItems=Merge %S items
|
||||
pane.item.duplicates.writeAccessRequired=Library write access is required to merge items.
|
||||
pane.item.duplicates.onlyTopLevel=Only top-level full items can be merged.
|
||||
pane.item.duplicates.onlySameItemType=Merged items must all be of the same item type.
|
||||
pane.item.duplicates.selectToMerge=Valitse yhteenliitettävät nimikkeet
|
||||
pane.item.duplicates.mergeItems=Liitä yhteen %S nimikettä
|
||||
pane.item.duplicates.writeAccessRequired=Nimikkeiden yhteenliittämiseen tarvitaan kirjoitusoikeus kirjastoon.
|
||||
pane.item.duplicates.onlyTopLevel=Vain ylätason nimikkeitä voi liittää yhteen.
|
||||
pane.item.duplicates.onlySameItemType=Yhteenliitettävien nimikkeiden tulee olla samaa tyyppiä.
|
||||
|
||||
pane.item.changeType.title=Vaihda kohteen tyyppi
|
||||
pane.item.changeType.text=Haluatko varmasti vaihtaa kohteen tyypin?\n\nSeuraavat kentät menetetään:
|
||||
|
@ -252,11 +252,11 @@ pane.item.switchFieldMode.one=Käytä vain yhtä kenttää
|
|||
pane.item.switchFieldMode.two=Käytä kahta kenttää
|
||||
pane.item.creator.moveUp=Siirrä ylös
|
||||
pane.item.creator.moveDown=Siirrä alas
|
||||
pane.item.notes.untitled=Otsikoimaton muistio
|
||||
pane.item.notes.delete.confirm=Haluatko varmasti poistaa tämän muistion?
|
||||
pane.item.notes.count.zero=%S muistiota:
|
||||
pane.item.notes.count.singular=%S muistio:
|
||||
pane.item.notes.count.plural=%S muistiota:
|
||||
pane.item.notes.untitled=Otsikoimaton muistiinpano
|
||||
pane.item.notes.delete.confirm=Haluatko varmasti poistaa tämän muistiinpanon?
|
||||
pane.item.notes.count.zero=%S muistiinpanoa:
|
||||
pane.item.notes.count.singular=%S muistiinpano:
|
||||
pane.item.notes.count.plural=%S muistiinpanoa:
|
||||
pane.item.attachments.rename.title=Uusi otsikko:
|
||||
pane.item.attachments.rename.renameAssociatedFile=Nimeä liitetty tiedosto uudelleen
|
||||
pane.item.attachments.rename.error=Virhe nimettäessä tiedostoa uudelleen.
|
||||
|
@ -268,7 +268,7 @@ pane.item.attachments.count.singular=%S liite:
|
|||
pane.item.attachments.count.plural=%S liitettä:
|
||||
pane.item.attachments.select=Valitse tiedosto
|
||||
pane.item.attachments.PDF.installTools.title=PDF-työkaluja ei ole asennettu
|
||||
pane.item.attachments.PDF.installTools.text=To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.
|
||||
pane.item.attachments.PDF.installTools.text=Jos haluat käyttää tätä ominaisuutta, asenna ensin PDF-työkalut Zoteron asetusten Haku-välilehdellä.
|
||||
pane.item.attachments.filename=Tiedostonimi
|
||||
pane.item.noteEditor.clickHere=napsauta tästä
|
||||
pane.item.tags.count.zero=%S merkkiä:
|
||||
|
@ -281,9 +281,9 @@ pane.item.related.count.singular=%S liittyvä:
|
|||
pane.item.related.count.plural=%S liittyvää:
|
||||
pane.item.parentItem=Ylänimike:
|
||||
|
||||
noteEditor.editNote=Muokkaa muistiota
|
||||
noteEditor.editNote=Muokkaa muistiinpanoa
|
||||
|
||||
itemTypes.note=Muistio
|
||||
itemTypes.note=Muistiinpano
|
||||
itemTypes.attachment=Liite
|
||||
itemTypes.book=Kirja
|
||||
itemTypes.bookSection=Kirjan osa
|
||||
|
@ -325,7 +325,7 @@ itemFields.title=Otsake
|
|||
itemFields.dateAdded=Lisäyspäivä
|
||||
itemFields.dateModified=Muokattu
|
||||
itemFields.source=Lähde
|
||||
itemFields.notes=Muistio
|
||||
itemFields.notes=Muistiinpanot
|
||||
itemFields.tags=Merkit
|
||||
itemFields.attachments=Liitteet
|
||||
itemFields.related=Liittyvät
|
||||
|
@ -339,7 +339,7 @@ itemFields.place=Paikka
|
|||
itemFields.publisher=Julkaisija
|
||||
itemFields.pages=Sivuja
|
||||
itemFields.ISBN=ISBN
|
||||
itemFields.publicationTitle=Julkaisutiedot
|
||||
itemFields.publicationTitle=Julkaisu
|
||||
itemFields.ISSN=ISSN
|
||||
itemFields.date=Päiväys
|
||||
itemFields.section=Osio
|
||||
|
@ -479,11 +479,11 @@ save.error.cannotAddFilesToCollection=Et voi lisätä tiedostoja valittuun kokoe
|
|||
ingester.saveToZotero=Tallenna Zoteroon
|
||||
ingester.saveToZoteroUsing=Tallentaan Zoteroon käyttäen "%S"
|
||||
ingester.scraping=Saving Item...
|
||||
ingester.scrapingTo=Saving to
|
||||
ingester.scrapingTo=Tallennuskohde:
|
||||
ingester.scrapeComplete=Nimike tallennettu
|
||||
ingester.scrapeError=Nimikettä ei voitu tallentaa
|
||||
ingester.scrapeErrorDescription=Nimikkeen tallentamisessa tapahtui virhe. Katso %S, jos haluat tietää lisää.
|
||||
ingester.scrapeErrorDescription.linkText=Troubleshooting Translator Issues
|
||||
ingester.scrapeErrorDescription.linkText=Sivutulkkeihin liittyvien ongelmien selvittäminen
|
||||
ingester.scrapeErrorDescription.previousError=Tallennusprosessi epäonnistui aiemman Zoteron virheen vuoksi.
|
||||
|
||||
ingester.importReferRISDialog.title=Zotero RIS/Refer-tuonti
|
||||
|
@ -492,7 +492,7 @@ ingester.importReferRISDialog.checkMsg=Salli aina tälle sivustolle
|
|||
|
||||
ingester.importFile.title=Tuo tiedosto
|
||||
ingester.importFile.text=Haluatko tuoda tiedoston "%S"?\n\nNimikkeet lisätään uuteen kokoelmaan.
|
||||
ingester.importFile.intoNewCollection=Import into new collection
|
||||
ingester.importFile.intoNewCollection=Tuo uuteen kokoelmaan
|
||||
|
||||
ingester.lookup.performing=Haku suoritetaan...
|
||||
ingester.lookup.error=Hakua suoritettaessa tapahtui virhe.
|
||||
|
@ -521,17 +521,17 @@ zotero.preferences.openurl.resolversFound.zero=%S linkkipalvelinta löytyi
|
|||
zotero.preferences.openurl.resolversFound.singular=%S linkkipalvelin löytyi
|
||||
zotero.preferences.openurl.resolversFound.plural=%S linkkipalvelinta löytyi
|
||||
|
||||
zotero.preferences.sync.purgeStorage.title=Purge Attachment Files on Zotero Servers?
|
||||
zotero.preferences.sync.purgeStorage.desc=If you plan to use WebDAV for file syncing and you previously synced attachment files in My Library to the Zotero servers, you can purge those files from the Zotero servers to give you more storage space for groups.\n\nYou can purge files at any time from your account settings on zotero.org.
|
||||
zotero.preferences.sync.purgeStorage.confirmButton=Purge Files Now
|
||||
zotero.preferences.sync.purgeStorage.cancelButton=Do Not Purge
|
||||
zotero.preferences.sync.reset.userInfoMissing=You must enter a username and password in the %S tab before using the reset options.
|
||||
zotero.preferences.sync.reset.restoreFromServer=All data in this copy of Zotero will be erased and replaced with data belonging to user '%S' on the Zotero server.
|
||||
zotero.preferences.sync.reset.replaceLocalData=Replace Local Data
|
||||
zotero.preferences.sync.reset.restartToComplete=Firefox must be restarted to complete the restore process.
|
||||
zotero.preferences.sync.reset.restoreToServer=All data belonging to user '%S' on the Zotero server will be erased and replaced with data from this copy of Zotero.\n\nDepending on the size of your library, there may be a delay before your data is available on the server.
|
||||
zotero.preferences.sync.reset.replaceServerData=Replace Server Data
|
||||
zotero.preferences.sync.reset.fileSyncHistory=All file sync history will be cleared.\n\nAny local attachment files that do not exist on the storage server will be uploaded on the next sync.
|
||||
zotero.preferences.sync.purgeStorage.title=Siivotaanko liitetiedostot Zoteron palvelimilta?
|
||||
zotero.preferences.sync.purgeStorage.desc=Jos aiot käyttää WebDAV-palvelinta tieodostojen synkronointiin ja olet aiemmin synkronoinut Oman kirjaston liitetiedostot Zoteron palvelimelle, voit siivota ne tiedostot Zoteron palvelimelta, jotta saat enemmän tallennustilaa ryhmille.\n\nVoit siivota tiedostot milloin tahansa tiliin asetuksista zotero.orgissa.
|
||||
zotero.preferences.sync.purgeStorage.confirmButton=Siivoa tiedostot nyt
|
||||
zotero.preferences.sync.purgeStorage.cancelButton=Älä siivoa tiedostoja
|
||||
zotero.preferences.sync.reset.userInfoMissing=Sinun täytyy syöttää käyttäjätunnus ja salasana %S-välilehdellä ennen kuin voit käyttää nollauksen asetuksia.
|
||||
zotero.preferences.sync.reset.restoreFromServer=Kaikki tiedot tästä Zotero-kopiosta poistetaan ja korvataan käyttäjälle '%S' kuuluvilla tiedoilla Zotero-palvelimella.
|
||||
zotero.preferences.sync.reset.replaceLocalData=Korvaa paikalliset tiedot
|
||||
zotero.preferences.sync.reset.restartToComplete=Firefox pitää käynnistää uudelleen palautusprosessin päättämiseksi.
|
||||
zotero.preferences.sync.reset.restoreToServer=Kaikki käyttäjälle '%S' kuuluvat tiedot Zoteron palvelimella poistetaan ja korvataan tämän Zotero-kopion tiedoilla.\n\nKirjaston koosta riippuen saattaa kestää hetki, ennen kuin tiedot ovat käytettävissä palvelimella.
|
||||
zotero.preferences.sync.reset.replaceServerData=Korvaa palvelimella olevat tiedot
|
||||
zotero.preferences.sync.reset.fileSyncHistory=Koko synkronointihistoria poistetaan.\n\nKaikki paikalliset liitetiedostot, joita ei ole synkronointipalvelimella, lähetetään palvelimelle seuraavan synkronoinnin yhteydessä.
|
||||
|
||||
zotero.preferences.search.rebuildIndex=Luo indeksi uudelleen
|
||||
zotero.preferences.search.rebuildWarning=Haluatko luoda koko indeksin uudelleen? Tämä saattaa kestää hetken.\n\nIndeksoidaksesi vain aiemmin indeksoimattomat nimikkeet käytä toimintoa %S.
|
||||
|
@ -559,7 +559,7 @@ zotero.preferences.search.pdf.tryAgainOrViewManualInstructions=Yritä myöhemmin
|
|||
zotero.preferences.export.quickCopy.bibStyles=Lähdeluettelotyylit
|
||||
zotero.preferences.export.quickCopy.exportFormats=Vientimuodot
|
||||
zotero.preferences.export.quickCopy.instructions=Pikakopioinnilla voit kopioida valitut viitteet leikepöydälle painamalla pikanäppäinyhdistelmää (%S) tai raahaamalla nimikkeet web-sivulla olevaan tekstilaatikkoon.
|
||||
zotero.preferences.export.quickCopy.citationInstructions=For bibliography styles, you can copy citations or footnotes by pressing %S or holding down Shift before dragging items.
|
||||
zotero.preferences.export.quickCopy.citationInstructions=Voit kopioda kirjallisuusviitetyylien mukaisia sitaatteja tai alaviitteitä painamalla %S tai pitämällä Shift-näppäintä pohjassa nimikkeitä raahatessa.
|
||||
zotero.preferences.styles.addStyle=Lisää tyyli
|
||||
|
||||
zotero.preferences.advanced.resetTranslatorsAndStyles=Resetoi sivustotulkit ja tyylit
|
||||
|
@ -569,9 +569,9 @@ zotero.preferences.advanced.resetTranslators.changesLost=Kaikki uudet tai muokat
|
|||
zotero.preferences.advanced.resetStyles=Resetoi tyylit
|
||||
zotero.preferences.advanced.resetStyles.changesLost=Kaikki uudet tai muokatut tyylit menetetään
|
||||
|
||||
zotero.preferences.advanced.debug.title=Debug Output Submitted
|
||||
zotero.preferences.advanced.debug.sent=Debug output has been sent to the Zotero server.\n\nThe Debug ID is D%S.
|
||||
zotero.preferences.advanced.debug.error=An error occurred sending debug output.
|
||||
zotero.preferences.advanced.debug.title=Virheenkorjauksen tiedot toimitettu
|
||||
zotero.preferences.advanced.debug.sent=Virheenkorjauksen tiedot on toimitettu Zotero-palvelimelle.\n\nVirheenkorjajuksen tunniste on D%S.
|
||||
zotero.preferences.advanced.debug.error=Virhe lähetettäessä virheenkorjauksen tietoja.
|
||||
|
||||
dragAndDrop.existingFiles=Seuraavat tiedostot olivat jo valmiiksi kohdehakemistossa, ja niitä ei kopioitu:
|
||||
dragAndDrop.filesNotFound=Seuraavia tiedostoja ei löytynyt eikä niitä voinut kopioida:
|
||||
|
@ -582,8 +582,8 @@ fileInterface.import=Tuonti
|
|||
fileInterface.export=Vienti
|
||||
fileInterface.exportedItems=Viedyt nimikkeet
|
||||
fileInterface.imported=Tuodut
|
||||
fileInterface.unsupportedFormat=The selected file is not in a supported format.
|
||||
fileInterface.viewSupportedFormats=View Supported Formats…
|
||||
fileInterface.unsupportedFormat=Valitun tiedoston tiedostomuotoa ei tueta
|
||||
fileInterface.viewSupportedFormats=Näytä tuetut tiedostomuodot...
|
||||
fileInterface.untitledBibliography=Nimetön lähdeluettelo
|
||||
fileInterface.bibliographyHTMLTitle=Lähdeluettelo
|
||||
fileInterface.importError=Tapahtui virhe yrittäessä tuoda valittua tiedostoa. Varmista, että tiedosto on kunnossa, ja yritä uudelleen.
|
||||
|
@ -592,7 +592,7 @@ fileInterface.noReferencesError=Valitsemissasi nimikkeissä ei ole viitteitä. V
|
|||
fileInterface.bibliographyGenerationError=Lähdeluetteloa luotaessa tapahtui virhe. Yritä uudelleen.
|
||||
fileInterface.exportError=Valittua tiedostoa vietäessä tapahtui virhe.
|
||||
|
||||
quickSearch.mode.titleCreatorYear=Title, Creator, Year
|
||||
quickSearch.mode.titleCreatorYear=Otsikko, kirjoittaja, vuosi
|
||||
quickSearch.mode.fieldsAndTags=Kaikki kentät ja avainsanat
|
||||
quickSearch.mode.everything=Kaikki
|
||||
|
||||
|
@ -643,7 +643,7 @@ fulltext.indexState.partial=Osittain
|
|||
|
||||
exportOptions.exportNotes=Vientihuomiot
|
||||
exportOptions.exportFileData=Vientitiedostot
|
||||
exportOptions.useJournalAbbreviation=Use Journal Abbreviation
|
||||
exportOptions.useJournalAbbreviation=Käytä aikakausjulkaisun lyhennettä
|
||||
charset.UTF8withoutBOM=Unicode (UTF-8 ilman BOM)
|
||||
charset.autoDetect=(automaattitunnistus)
|
||||
|
||||
|
@ -659,8 +659,8 @@ citation.multipleSources=Multiple Sources...
|
|||
citation.singleSource=Single Source...
|
||||
citation.showEditor=Show Editor...
|
||||
citation.hideEditor=Hide Editor...
|
||||
citation.citations=Citations
|
||||
citation.notes=Notes
|
||||
citation.citations=Sitaati
|
||||
citation.notes=Muistiinpanot
|
||||
|
||||
report.title.default=Zotero-raportti
|
||||
report.parentItem=Ylänimike:
|
||||
|
@ -737,14 +737,14 @@ styles.installStyle=Asennetaanko tyyli "%1$S" lähteestä %2$S?
|
|||
styles.updateStyle=Päivitetäänkö aiempi tyyli "%1$S" tyylillä "%2$S" lähteestä %3$S?
|
||||
styles.installed=Tyyli "%S" asennettiin onnistuneesti.
|
||||
styles.installError=%S ei vaikuta olevan kelvollinen tyylitiedosto.
|
||||
styles.validationWarning="%S" is not a valid CSL 1.0.1 style file, and may not work properly with Zotero.\n\nAre you sure you want to continue?
|
||||
styles.validationWarning="%S" ei ole kunnollinen CSL 1.0.1-tyylitiedosto, eikä se välttämättä toimi oikein Zoterossa.\n\nHaluatko varmasti jatkaa?
|
||||
styles.installSourceError=%1$S viittaa epäkelpoon tai olemattoon CSL-tiedostoon %2$S.
|
||||
styles.deleteStyle=Haluatko varmasti poistaa tyylin "%1$S"?
|
||||
styles.deleteStyles=Haluatko varmasti poistaa valitut tyylit?
|
||||
|
||||
styles.abbreviations.title=Lataa lyhenteet
|
||||
styles.abbreviations.parseError=The abbreviations file "%1$S" is not valid JSON.
|
||||
styles.abbreviations.missingInfo=The abbreviations file "%1$S" does not specify a complete info block.
|
||||
styles.abbreviations.parseError=Lyhennetiedosto "%1$S" ei ole toimivassa JSON-muodossa.
|
||||
styles.abbreviations.missingInfo=Lyhennetiedosto "%1$S" ei määrittele täydellistä informaatio-osiota.
|
||||
|
||||
sync.sync=Synkronoi
|
||||
sync.cancel=Peruuta synkronointi
|
||||
|
@ -756,58 +756,58 @@ sync.remoteObject=Etäobjekti
|
|||
sync.mergedObject=Yhdistetty objekti
|
||||
|
||||
sync.error.usernameNotSet=Käyttäjänimeä ei määritetty
|
||||
sync.error.usernameNotSet.text=You must enter your zotero.org username and password in the Zotero preferences to sync with the Zotero server.
|
||||
sync.error.usernameNotSet.text=Syötä zotero.orgin käyttäjätunnus ja salasana Zoteron asetuksissa, jotta voit synkronoida tiedot Zotero-palvelimen kanssa.
|
||||
sync.error.passwordNotSet=Salasanaa ei määritetty
|
||||
sync.error.invalidLogin=Virheellinen käyttäjänimi tai salasana
|
||||
sync.error.invalidLogin.text=The Zotero sync server did not accept your username and password.\n\nPlease check that you have entered your zotero.org login information correctly in the Zotero sync preferences.
|
||||
sync.error.invalidLogin.text=Zoteron synkronointipalvelin ei hyväksynyt käyttäjätunnustasi ja/tai salasanaasi.\n\nTarkista, että olet antanut käyttäjätiedot oikein Zoteron synkronointiasetuksissa.
|
||||
sync.error.enterPassword=Anna salasana.
|
||||
sync.error.loginManagerInaccessible=Zotero ei saanut oikeuksia kirjautumistietoihisi.
|
||||
sync.error.checkMasterPassword=If you are using a master password in %S, make sure you have entered it successfully.
|
||||
sync.error.corruptedLoginManager=This could also be due to a corrupted %1$S login manager database. To check, close %1$S, remove signons.sqlite from your %1$S profile directory, and re-enter your Zotero login information in the Sync pane of the Zotero preferences.
|
||||
sync.error.loginManagerCorrupted1=Zotero cannot access your login information, possibly due to a corrupted %S login manager database.
|
||||
sync.error.loginManagerCorrupted2=Close %1$S, remove signons.sqlite from your %2$S profile directory, and re-enter your Zotero login information in the Sync pane of the Zotero preferences.
|
||||
sync.error.checkMasterPassword=Jos käytät pääsalasanaa $S:ssa, varmista, että se on oikein.
|
||||
sync.error.corruptedLoginManager=Kyse voi olla myös virheestä %1$S:n kirjautumistietojen tietokannassa. Voit tarkistaa tämän sulkemalla ensin %1$S:n, poistamalla tiedoston signons.sqlite %1$S:n profiilikansiosta ja syöttämällä tämän jälkeen Zoteron kirjautumistiedot uudelleen Zoteron asetusten synkronointivälilehdellä.
|
||||
sync.error.loginManagerCorrupted1=Zotero ei voi käyttää kirjautumistietojasi. %S:n kirjautumistietojen tietokanta on mahdollisesti vioittunut.
|
||||
sync.error.loginManagerCorrupted2=Sulje %1$S, poista signons.sqlite %2$S:n profiilikansiosta, ja syötä sen jälkeen Zoteron kirjautumistiedot uudelleen Zoteron asetusten Synkronointi-välilehdelä.
|
||||
sync.error.syncInProgress=Synkronointi on jo käynnissä.
|
||||
sync.error.syncInProgress.wait=Wait for the previous sync to complete or restart Firefox.
|
||||
sync.error.writeAccessLost=You no longer have write access to the Zotero group '%S', and items you've added or edited cannot be synced to the server.
|
||||
sync.error.writeAccessLost=Sinulla ei enää ole kirjoitusoikeutta Zotero-ryhmään '%S'. Lisäämiäsi tai muokkaamiasi nimikkeitä ei voida synkronoida palvelimelle.
|
||||
sync.error.groupWillBeReset=Jos jatkat, kopiosi ryhmästä resetoituu siihen tilaan, missä se palvelimella on. Paikalliset muokkaukset nimikkeisiin ja tiedostoihin menetetään.
|
||||
sync.error.copyChangedItems=Jos haluat mahdollisuuden kopioida tekemäsi muutokset muualle tai pyytää kirjoitusoikeutta ryhmän ylläpitäjältä, peruuta synkronointi nyt.
|
||||
sync.error.manualInterventionRequired=Automaattinen synkronointi johti konfliktiin, joka vaatii manuaalista väliintuloa.
|
||||
sync.error.clickSyncIcon=Paina synkronointikuvaketta aloittaaksesi synkronoinnin manuaalisesti.
|
||||
sync.error.invalidClock=The system clock is set to an invalid time. You will need to correct this to sync with the Zotero server.
|
||||
sync.error.sslConnectionError=SSL connection error
|
||||
sync.error.checkConnection=Error connecting to server. Check your Internet connection.
|
||||
sync.error.emptyResponseServer=Empty response from server.
|
||||
sync.error.invalidCharsFilename=The filename '%S' contains invalid characters.\n\nRename the file and try again. If you rename the file via the OS, you will need to relink it in Zotero.
|
||||
sync.error.invalidClock=Järjestelmän kellonaika on virheellinen. Sinun täytyy korjata se, että synkronointi toimisi.
|
||||
sync.error.sslConnectionError=SSL-yhteyden virhe
|
||||
sync.error.checkConnection=Virhe yhdistettäessä palvelimeen. Tarkista Internet-yhteytesi.
|
||||
sync.error.emptyResponseServer=Palvelin antoi tyhjän vastauksen.
|
||||
sync.error.invalidCharsFilename=Tiedostonimessä '%S' on virheellisiä kirjaimia.\n\nVaihda tiedostonimi ja yritä uudelleen. Jos vaihdat tiedostonimeä käyttöjärjestelmän kautta, sinun täytyy linkata tiedosto uudelleen Zoteroon.
|
||||
|
||||
sync.lastSyncWithDifferentAccount=This Zotero database was last synced with a different zotero.org account ('%1$S') from the current one ('%2$S').
|
||||
sync.localDataWillBeCombined=If you continue, local Zotero data will be combined with data from the '%S' account stored on the server.
|
||||
sync.localGroupsWillBeRemoved1=Local groups, including any with changed items, will also be removed.
|
||||
sync.avoidCombiningData=To avoid combining or losing data, revert to the '%S' account or use the Reset options in the Sync pane of the Zotero preferences.
|
||||
sync.localGroupsWillBeRemoved2=If you continue, local groups, including any with changed items, will be removed and replaced with groups linked to the '%1$S' account.\n\nTo avoid losing local changes to groups, be sure you have synced with the '%2$S' account before syncing with the '%1$S' account.
|
||||
sync.lastSyncWithDifferentAccount=Tämä Zotero-tietokanta synkronoitiin edellisen kerran zotero.org-tilin ('%1$S') kanssa kuin nykyinen ('%2$S').
|
||||
sync.localDataWillBeCombined=Jos jatkat, paikalliset Zotero-tiedot yhdistetään palvelimella olevien tilin '%S' tietojen kanssa.
|
||||
sync.localGroupsWillBeRemoved1=Paikalliset ryhmät – myös ne, joissa on muuttuneita nimikkeitä – poistetaan myös.
|
||||
sync.avoidCombiningData=Jos haluat välttää tietojen yhdistämisen ja/tai menettämisen, palaa tiliin '%S' tai käytä Nollaa asetukset -toimintoa Zoteron synkronointiasetuksissa.
|
||||
sync.localGroupsWillBeRemoved2=Jos jatkat, paikalliset ryhmät – myös ne, joissa on muuttuneita nimikkeitä – poistetaan ja korvataan tiliin '%1$S' liitetyillä ryhmillä.\n\nVälttääksesi paikalliset muutokset ryhmiin, varmista, että olet synkronoinut tilin '€2$S' ennen tiliä '%1$S'.
|
||||
|
||||
sync.conflict.autoChange.alert=One or more locally deleted Zotero %S have been modified remotely since the last sync.
|
||||
sync.conflict.autoChange.log=A Zotero %S has changed both locally and remotely since the last sync:
|
||||
sync.conflict.remoteVersionsKept=The remote versions have been kept.
|
||||
sync.conflict.remoteVersionKept=The remote version has been kept.
|
||||
sync.conflict.localVersionsKept=The local versions have been kept.
|
||||
sync.conflict.localVersionKept=The local version has been kept.
|
||||
sync.conflict.recentVersionsKept=The most recent versions have been kept.
|
||||
sync.conflict.recentVersionKept=The most recent version, '%S', has been kept.
|
||||
sync.conflict.viewErrorConsole=View the %S Error Console for the full list of such changes.
|
||||
sync.conflict.localVersion=Local version: %S
|
||||
sync.conflict.remoteVersion=Remote version: %S
|
||||
sync.conflict.deleted=[deleted]
|
||||
sync.conflict.collectionItemMerge.alert=One or more Zotero items have been added to and/or removed from the same collection on multiple computers since the last sync.
|
||||
sync.conflict.collectionItemMerge.log=Zotero items in the collection '%S' have been added and/or removed on multiple computers since the last sync. The following items have been added to the collection:
|
||||
sync.conflict.tagItemMerge.alert=One or more Zotero tags have been added to and/or removed from items on multiple computers since the last sync. The different sets of tags have been combined.
|
||||
sync.conflict.tagItemMerge.log=The Zotero tag '%S' has been added to and/or removed from items on multiple computers since the last sync.
|
||||
sync.conflict.tag.addedToRemote=It has been added to the following remote items:
|
||||
sync.conflict.tag.addedToLocal=It has been added to the following local items:
|
||||
sync.conflict.autoChange.alert=Yhtä tai useampaa paikallisesti poistettua Zotero-%S on muokattu toisaalla edellisen synkronoinnin jälkeen.
|
||||
sync.conflict.autoChange.log=Zotero-%S:n paikallinen sekä palvelimella oleva versio on muuttunut edellisen synkronoinnin jälkeen.
|
||||
sync.conflict.remoteVersionsKept=Palvelimella olevat versiot säilytettiin.
|
||||
sync.conflict.remoteVersionKept=Palvelimella oleva versio säilytettiin.
|
||||
sync.conflict.localVersionsKept=Paikalliset versiot säilytettiin.
|
||||
sync.conflict.localVersionKept=Paikallinen versio säilytettiin.
|
||||
sync.conflict.recentVersionsKept=Uusimmat versiot säilytettiin.
|
||||
sync.conflict.recentVersionKept=Uusin versio, '%S', säilytettiin.
|
||||
sync.conflict.viewErrorConsole=Voit katsoa täydellisen luettelon muutoksista %S:n virhekonsolissa.
|
||||
sync.conflict.localVersion=Paikallinen versio: %S
|
||||
sync.conflict.remoteVersion=Etäversio: %S
|
||||
sync.conflict.deleted=[poistettu]
|
||||
sync.conflict.collectionItemMerge.alert=Yksi tai useampi Zotero-nimike on lisätty samaan kokoelmaan tai poistettu samasta kokoelmasta useilla eri tietokoneilla edellisen synkronoinnin jälkeen.
|
||||
sync.conflict.collectionItemMerge.log=Zotero-nimikkeitä kokoelmassa '%S' on lisätty tai poistettu useilla eri tietokoneilla edellisen synkronoinnin jälkeen. Seuraavat nimikkeet lisättiin kokoelmaan:
|
||||
sync.conflict.tagItemMerge.alert=Yksi tai useampi Zotero-avainsana on poistettu nimikkeistä tai lisätty nimikkeisiin useilla eri tietokoneilla edellisen synkronoinnin jälkeen. Avainsananiput on nyt yhdistetty toisiinsa.
|
||||
sync.conflict.tagItemMerge.log=Zotero-avainsana '%S' on lisätty nimikkeisiin tai poistettu nimikkeistä useilla eri tietokoneilla edelisen synkronoinnin jälkeen.
|
||||
sync.conflict.tag.addedToRemote=Se on nyt lisätty seuraaviin palvelimella oleviin nimikkeisiin:
|
||||
sync.conflict.tag.addedToLocal=Se on nyt lisätty seuraaviin paikallisiin nimikkeisiin:
|
||||
|
||||
sync.conflict.fileChanged=The following file has been changed in multiple locations.
|
||||
sync.conflict.itemChanged=The following item has been changed in multiple locations.
|
||||
sync.conflict.chooseVersionToKeep=Choose the version you would like to keep, and then click %S.
|
||||
sync.conflict.chooseThisVersion=Choose this version
|
||||
sync.conflict.fileChanged=Seuraavaa tiedostoa on muokattu useassa eri paikassa.
|
||||
sync.conflict.itemChanged=Seuraavaa nimikettä on muokattu. useassa eri paikassa.
|
||||
sync.conflict.chooseVersionToKeep=Valitse versio, jonka haluat säilyttää, ja paina &S
|
||||
sync.conflict.chooseThisVersion=Valitse tämä versio
|
||||
|
||||
sync.status.notYetSynced=Ei vielä synkronoitu
|
||||
sync.status.lastSync=Viimeisin synkronointi:
|
||||
|
@ -818,12 +818,12 @@ sync.status.uploadingData=Siirretään tietoja synkronointipalvelimelle
|
|||
sync.status.uploadAccepted=Tiedonsiirto hyväksytty \u2014 odotetaan synkronointipalvelinta
|
||||
sync.status.syncingFiles=Synkronoidaan tiedostoja
|
||||
|
||||
sync.fulltext.upgradePrompt.title=New: Full-Text Content Syncing
|
||||
sync.fulltext.upgradePrompt.text=Zotero can now sync the full-text content of files in your Zotero libraries with zotero.org and other linked devices, allowing you to easily search for your files wherever you are. The full-text content of your files will not be shared publicly.
|
||||
sync.fulltext.upgradePrompt.changeLater=You can change this setting later from the Sync pane of the Zotero preferences.
|
||||
sync.fulltext.upgradePrompt.enable=Use Full-Text Syncing
|
||||
sync.fulltext.upgradePrompt.title=Uutta: Kokotekstisisällön synkronisointi
|
||||
sync.fulltext.upgradePrompt.text=Zotero voi nyt synkronoida Zotero-kirjastossa olevien tiedostojen kokotekstisisällön zotero.orgin ja tiliin kytkettyjen laitteiden kanssa, joten voit helposti suorittaa hakuja tiedostoista missä ikinä oletkin. Tiedostojen kokotekstisisältöä ei jaeta julkisesti.
|
||||
sync.fulltext.upgradePrompt.changeLater=Voit myöhemmin muuttaa tätä asetusta Zoteron asetusten Synkronointi-välilehdellä.
|
||||
sync.fulltext.upgradePrompt.enable=Käytä kokotekstien synkronisointia
|
||||
|
||||
sync.storage.mbRemaining=%SMB remaining
|
||||
sync.storage.mbRemaining=%S Mt jäljellä
|
||||
sync.storage.kbRemaining=%S kt jäljellä
|
||||
sync.storage.filesRemaining=%1$S/%2$S tiedostoa
|
||||
sync.storage.none=Ei mitään
|
||||
|
@ -836,14 +836,14 @@ sync.storage.serverConfigurationVerified=Palvelinasetukset varmistettu
|
|||
sync.storage.fileSyncSetUp=Tiedostosynkronisaatio on nyt määritetty.
|
||||
sync.storage.openAccountSettings=Avaa tilin asetukset
|
||||
|
||||
sync.storage.error.default=A file sync error occurred. Please try syncing again.\n\nIf you receive this message repeatedly, restart %S and/or your computer and try again. If you continue to receive the message, submit an error report and post the Report ID to a new thread in the Zotero Forums.
|
||||
sync.storage.error.defaultRestart=A file sync error occurred. Please restart %S and/or your computer and try syncing again.\n\nIf you receive this message repeatedly, submit an error report and post the Report ID to a new thread in the Zotero Forums.
|
||||
sync.storage.error.default=Tiedostojen synkronointivirhe. Yritä synkronointia uudelleen.\n\nJos saat tämän virheilmoituksen toistuvasti, käynnistä %S ja/tai tietokone uudelleen, ja yritä sitten uudestaan. Jos ilmoitus toistuu senkin jälkeen, lähetä virheraportti ja kirjoita Zoteron keskustelualueelle viesti, jossa mainitset virheraportin tunnuksen.
|
||||
sync.storage.error.defaultRestart=Tiedostojen synkronointivirhe. Käynnistä %S ja/tai tietokone uudelleen, ja yritä sitten synkronointia uudestaan.\n\nJos ilmoitus toistuu, lähetä virheraportti ja kirjoita Zoteron keskustelualueelle viesti, jossa mainitset virheraportin tunnuksen.
|
||||
sync.storage.error.serverCouldNotBeReached=Palvelinta %S ei voitu tavoittaa.
|
||||
sync.storage.error.permissionDeniedAtAddress=Sinulle ei ole oikeutta luoda Zotero-kansiota osoitteeseen:
|
||||
sync.storage.error.checkFileSyncSettings=Tarkista tiedostojen synkronoinnin asetukset tai ota yhteyttä palvelimesi ylläpitäjään.
|
||||
sync.storage.error.verificationFailed=%S tarkistus epäonnistui. Tarkista tiedostojen synkronointiasetukset Zoteron asetusten Synkronisaatio-välilehdeltä.
|
||||
sync.storage.error.fileNotCreated=Tiedostoa '%S' ei voitu luoda Zoteron 'storage'-kansioon.
|
||||
sync.storage.error.encryptedFilenames=Error creating file '%S'.\n\nSee http://www.zotero.org/support/kb/encrypted_filenames for more information.
|
||||
sync.storage.error.encryptedFilenames=Virhe luodessa tiedostoa '%S'.\n\nKatso lisätietoja osoitteesta http://www.zotero.org/support/kb/encrypted_filenames.
|
||||
sync.storage.error.fileEditingAccessLost=Sinulle ei enää ole muokkausoikeutta Zoteron ryhmään '%S', joten lisäämiäsi tai muokkaamiasi tiedostoja ei voida synkronoida palvelimelle.
|
||||
sync.storage.error.copyChangedItems=Jos haluat säilyttää mahdollisuuden kopioida muutetut nimikkeet ja tiedostot muualle, peruuta synkronointi nyt.
|
||||
sync.storage.error.fileUploadFailed=Tiedostojen siirto palvelimelle epäonnistui.
|
||||
|
@ -851,9 +851,9 @@ sync.storage.error.directoryNotFound=Kansiota ei löytynyt
|
|||
sync.storage.error.doesNotExist=Sijaintia %S ei ole olemassa.
|
||||
sync.storage.error.createNow=Haluatko luoda sen nyt?
|
||||
|
||||
sync.storage.error.webdav.default=A WebDAV file sync error occurred. Please try syncing again.\n\nIf you receive this message repeatedly, check your WebDAV server settings in the Sync pane of the Zotero preferences.
|
||||
sync.storage.error.webdav.defaultRestart=A WebDAV file sync error occurred. Please restart %S and try syncing again.\n\nIf you receive this message repeatedly, check your WebDAV server settings in the Sync pane of the Zotero preferences.
|
||||
sync.storage.error.webdav.enterURL=Please enter a WebDAV URL.
|
||||
sync.storage.error.webdav.default=Virhe WebDAV-tiedostosynkronoinnissa. Yritä synkronointia uudelleen.\n\nJos saat tämän viestin toistuvasti, tarkista WebDAV-palvelimen asetukset Zoteron asetusten Synkronointi-välilehdellä.
|
||||
sync.storage.error.webdav.defaultRestart=Virhe WebDAV-tiedostosynkronoinnissa. Käynnistä %S uudelleen ja yritä synkronointia uudestaan.\n\nJos saat tämän viestin toistuvasti, tarkista WebDAV-palvelimen asetukset Zoteron asetusten Synkronointi-välilehdellä.
|
||||
sync.storage.error.webdav.enterURL=Anna WebDAV-palvelimen URL
|
||||
sync.storage.error.webdav.invalidURL=%S ei ole kelvollinen WebDAV-osoite.
|
||||
sync.storage.error.webdav.invalidLogin=WebDAV-palvelin ei hyväksynyt antamaasi käyttäjätunnusta ja salasanaa.
|
||||
sync.storage.error.webdav.permissionDenied=Sinulla ei ole käyttöoikeutta WebDAV-palvelimen sijaintiin %S.
|
||||
|
@ -863,18 +863,18 @@ sync.storage.error.webdav.sslConnectionError=SSL-yhteysvirhe yhdistettäessä ko
|
|||
sync.storage.error.webdav.loadURLForMoreInfo=Lataa WebDAV-osoite nettiselaimessa saadaksesi lisätietoja
|
||||
sync.storage.error.webdav.seeCertOverrideDocumentation=Katso lisätietoja sertifikaatin ohittamisen ohjeista.
|
||||
sync.storage.error.webdav.loadURL=Lataa WebDAV-osoite
|
||||
sync.storage.error.webdav.fileMissingAfterUpload=A potential problem was found with your WebDAV server.\n\nAn uploaded file was not immediately available for download. There may be a short delay between when you upload files and when they become available, particularly if you are using a cloud storage service.\n\nIf Zotero file syncing appears to work normally, you can ignore this message. If you have trouble, please post to the Zotero Forums.
|
||||
sync.storage.error.webdav.nonexistentFileNotMissing=Your WebDAV server is claiming that a nonexistent file exists. Contact your WebDAV server administrator for assistance.
|
||||
sync.storage.error.webdav.serverConfig.title=WebDAV Server Configuration Error
|
||||
sync.storage.error.webdav.serverConfig=Your WebDAV server returned an internal error.
|
||||
sync.storage.error.webdav.fileMissingAfterUpload=Synkronoinnissa WebDAV-palvelimen kanssa saattaa olla ongelma.\n\nLähetetty tiedosto ei ollut välittömästi valminaa ladattavaksi. Tiedostojen lähettämisen ja niiden saataville tulemisen välillä saattaa olla pieni viive, etenkin jos käytät tallennukseen pilvipalveluita.\n\nJos Zoteron tiedostosynkronointi vaikuttaa toimivan normaalista, voit ohittaa tämän virheilmoituksen. Jos ongelmia ilmenee, lähetä viesti Zoteron keskustelualueelle.
|
||||
sync.storage.error.webdav.nonexistentFileNotMissing=WebDAV-palvelin ilmoittaa olemassaolevan tiedoston olemassaolevaksi. Ota yhteyttä palvelimen ylläpitäjään.
|
||||
sync.storage.error.webdav.serverConfig.title=WebDAV-palvelimen konfigurointivirhe
|
||||
sync.storage.error.webdav.serverConfig=WebDAV-palvelin ilmoitti sisäisestä virhetilasta.
|
||||
|
||||
sync.storage.error.zfs.restart=A file sync error occurred. Please restart %S and/or your computer and try syncing again.\n\nIf the error persists, there may be a problem with either your computer or your network: security software, proxy server, VPN, etc. Try disabling any security/firewall software you're using or, if this is a laptop, try from a different network.
|
||||
sync.storage.error.zfs.tooManyQueuedUploads=You have too many queued uploads. Please try again in %S minutes.
|
||||
sync.storage.error.zfs.restart=Tiedostojen synkronointivirhe. Käynnistä %S ja/tai tietokone uudelleen ja yritä synkronointia uudestaan.\n\nJos ongelma toistuu, tietokoneessa tai verkkoyhteydessä saattaa olla vikaa, jonka saattaa aiheuttaa esimerkiksi tietoturvaohjelma, välityspalvelin, VPN tms. Kokeile poistaa tietoturva-/palomuuriohjelma käytöstä, tai jos kyseessä on kannettava tietokone, kokeile eri verkkoa.
|
||||
sync.storage.error.zfs.tooManyQueuedUploads=Sinulla on liian monta tiedostojen lähetystä jonossa. Yritä uudelleen %S minuutin kuluttua.
|
||||
sync.storage.error.zfs.personalQuotaReached1=Kiintiö palvelimelle tallennettaville tiedostoille on tullut täyteen. Osa tiedoista jäi siirtämättä. Muu Zotero-aineisto synkronoituu edelleen palvelimelle.
|
||||
sync.storage.error.zfs.personalQuotaReached2=Tutustu tallennustilan lisäpalveluihin osoitteessa zotero.org.
|
||||
sync.storage.error.zfs.groupQuotaReached1=Ryhmän '%S' kiintiö palvelimelle tallennettaville tiedostoille on tullut täyteen. Osa tiedoista jäi siirtämättä. Muu Zotero-aineisto synkronoituu edelleen palvelimelle.
|
||||
sync.storage.error.zfs.groupQuotaReached2=Ryhmän omistaja voi lisätä ryhmän tallennustilaa osoitteessa zotero.org.
|
||||
sync.storage.error.zfs.fileWouldExceedQuota=The file '%S' would exceed your Zotero File Storage quota
|
||||
sync.storage.error.zfs.fileWouldExceedQuota=Tiedosto '%S' ylittäisi Zoteron tiedostontallennuskiintiösi.
|
||||
|
||||
sync.longTagFixer.saveTag=Tallenna merkki
|
||||
sync.longTagFixer.saveTags=Tallenna merkit
|
||||
|
@ -898,16 +898,16 @@ proxies.recognized.add=Lisää välityspalvelin
|
|||
|
||||
recognizePDF.noOCR=PDF-tiedosto ei sisällä OCRed-tekstiä.
|
||||
recognizePDF.couldNotRead=PDF-tiedoston tekstiä ei voi lukea.
|
||||
recognizePDF.noMatches=No matching references found
|
||||
recognizePDF.noMatches=Vastaavia nimikkeitä ei löytynyt
|
||||
recognizePDF.fileNotFound=Tiedostoa ei löytynyt
|
||||
recognizePDF.limit=Google Scholar query limit reached. Try again later.
|
||||
recognizePDF.limit=Google Scholarin asettama raja hakumäärille ylitetty. Yritä myöhemmin uudestaan.
|
||||
recognizePDF.error=Tapahtui odottamaton virhe.
|
||||
recognizePDF.stopped=Peruttu
|
||||
recognizePDF.complete.label=Metadata on haettu
|
||||
recognizePDF.cancelled.label=Metadata Retrieval Cancelled
|
||||
recognizePDF.cancelled.label=Metadatan hakeminen peruttu
|
||||
recognizePDF.close.label=Sulje
|
||||
recognizePDF.captcha.title=Please enter CAPTCHA
|
||||
recognizePDF.captcha.description=Zotero uses Google Scholar to help identify PDFs. To continue using Google Scholar, please enter the text from the image below.
|
||||
recognizePDF.captcha.title=Syötä kuvavarmennus
|
||||
recognizePDF.captcha.description=Zotero käyttää Google Scholaria PDF-tiedostojen tunnistamiseen. Jatkaaksesi Google Scholarin käyttöä, kirjoita laatikkoon kuvassa näkyvä teksti.
|
||||
|
||||
rtfScan.openTitle=Valitse käsiteltävä tiedosto
|
||||
rtfScan.scanning.label=Scanning RTF Document...
|
||||
|
@ -917,20 +917,20 @@ rtfScan.saveTitle=Valitse muotoillun tiedoston tallennuksen kohde
|
|||
rtfScan.scannedFileSuffix=(Skannattu)
|
||||
|
||||
|
||||
file.accessError.theFile=The file '%S'
|
||||
file.accessError.theFile=Tiedosto '%S'
|
||||
file.accessError.aFile=Tiedosto
|
||||
file.accessError.cannotBe=ei voi olla
|
||||
file.accessError.created=luotu
|
||||
file.accessError.updated=päivitetty
|
||||
file.accessError.deleted=poistettu
|
||||
file.accessError.message.windows=Check that the file is not currently in use, that its permissions allow write access, and that it has a valid filename.
|
||||
file.accessError.message.other=Check that the file is not currently in use and that its permissions allow write access.
|
||||
file.accessError.restart=Restarting your computer or disabling security software may also help.
|
||||
file.accessError.showParentDir=Show Parent Directory
|
||||
file.accessError.message.windows=Tarkista, että tiedosto ei ole tällä hetkellä käytössä, että siihen on kirjoitusoikeudet, ja että sillä on sallittu tiedostonimi.
|
||||
file.accessError.message.other=Tarkista, että tiedosto ei ole käytössä ja että siihen on kirjoitusoikeudet.
|
||||
file.accessError.restart=Voit yrittää myös käynnistää tietokoneen uudelleen tai poistaa suojausohjelman käytöstä.
|
||||
file.accessError.showParentDir=Näytä sisältävä hakemisto
|
||||
|
||||
lookup.failure.title=Haku epäonnistui
|
||||
lookup.failure.description=Zotero ei löytänyt annettua tunnistetta rekistereistä. Tarkista tunniste ja yritä uudelleen.
|
||||
lookup.failureToID.description=Zotero could not find any identifiers in your input. Please verify your input and try again.
|
||||
lookup.failureToID.description=Zotero ei löytänyt mitään tunnisteita syötteestäsi. Tarkista syöte ja yritä uudelleen.
|
||||
|
||||
locate.online.label=Katso verkossa
|
||||
locate.online.tooltip=Hae tämä nimike verkosta
|
||||
|
@ -953,18 +953,18 @@ locate.manageLocateEngines=Manage Lookup Engines...
|
|||
standalone.corruptInstallation=Zotero Standalone -asennuksesi vaikuttaa olevan vioittunut epäonnistuneessa automaattipäivityksessä. Zotero saattaa jatkaa toimintaansa, mutta mahdollisten virheiden välttämiseksi suosittelemme lataamaan Zotero Standalonen uusimman version osoitteesta http://zotero.org/support/standalone mahdollisimman pian.
|
||||
standalone.addonInstallationFailed.title=Lisäosan asennus epäonnistui
|
||||
standalone.addonInstallationFailed.body=Lisäosaa "%S" ei voitu asentaa. Se saattaa olla yhteensopimaton tämän Zotero Standalone -version kanssa.
|
||||
standalone.rootWarning=You appear to be running Zotero Standalone as root. This is insecure and may prevent Zotero from functioning when launched from your user account.\n\nIf you wish to install an automatic update, modify the Zotero program directory to be writeable by your user account.
|
||||
standalone.rootWarning.exit=Exit
|
||||
standalone.rootWarning.continue=Continue
|
||||
standalone.updateMessage=A recommended update is available, but you do not have permission to install it. To update automatically, modify the Zotero program directory to be writeable by your user account.
|
||||
standalone.rootWarning=Käytät ilmeisesti Zotero Standalonea järjestelmänvalvojan oikeuksilla. Tämä ei ole turvallista, ja se voi estää Zoteroa toimimasta oikein, kun se käynnistetään tavallisen käyttäjän oikeuksilla.\n\nJos haluat asentaa automaattisen päivityksen, lisää tavalliselle käyttäjälle kirjoitusoikeudet Zoteron ohjelmakansioon.
|
||||
standalone.rootWarning.exit=Poistu
|
||||
standalone.rootWarning.continue=atka
|
||||
standalone.updateMessage=Suositeltu päivitys on saatavilla, mutta sinulla ei ole oikeuksia sen asentamiseen. Asentaaksesi päivitykset automaattiset, lisää käyttäjätilillesi kirjoitusoikeus Zoteron ohjelmakansioon.
|
||||
|
||||
connector.error.title=Zotero Connector -ongelma.
|
||||
connector.standaloneOpen=Tietokantaasi ei saada yhteyttä, koska Zotero Standalone on tällä hetkellä auki. Käytä Zotero Standalonea nimikkeidesi tarkasteluun.
|
||||
connector.loadInProgress=Zotero Standalone was launched but is not accessible. If you experienced an error opening Zotero Standalone, restart Firefox.
|
||||
connector.loadInProgress=Zotero Standalone on käynnistettiin, mutta se ei ole käytettävissä. Jos Zotero Standalonen käynnistämiseen liittyi virhe, käynnistä Firefox uudestaan.
|
||||
|
||||
firstRunGuidance.saveIcon=Zotero tunnistaa viitteen tällä sivulla. Paina osoitepalkin kuvaketta tallentaaksesi viitteen Zotero-kirjastoon.
|
||||
firstRunGuidance.authorMenu=Zoterossa voit myös määritellä teoksen toimittajat ja kääntäjät. Voit muuttaa kirjoittajan toimittajaksi tai kääntäjäksi tästä valikosta.
|
||||
firstRunGuidance.quickFormat=Kirjoita otsikko tai tekijä etsiäksesi viitettä.\n\nKun olet tehnyt valinnan, klikkaa kuplaa tai paina Ctrl-\u2193 lisätäksesi sivunumerot sekä etu- ja jälkiliitteet. Voit myös sisällyttää sivunumeron hakutermien mukana lisätäksesi sen suoraan.\n\nVoit muokata sitaatteja suoraan tekstinkäsittelyohjelman asiakirjassa.
|
||||
firstRunGuidance.quickFormatMac=Kirjoita otsikko tai tekijä etsiäksesi viitettä.\n\nKun olet tehnyt valinnan, klikkaa kuplaa tai paina Ctrl-\u2193 lisätäksesi sivunumerot sekä etu- ja jälkiliitteet. Voit myös sisällyttää sivunumeron hakutermien mukana lisätäksesi sen suoraan.\n\nVoit muokata sitaatteja suoraan tekstinkäsittelyohjelman asiakirjassa.
|
||||
firstRunGuidance.toolbarButton.new=Click here to open Zotero, or use the %S keyboard shortcut.
|
||||
firstRunGuidance.toolbarButton.upgrade=The Zotero icon can now be found in the Firefox toolbar. Click the icon to open Zotero, or use the %S keyboard shortcut.
|
||||
firstRunGuidance.toolbarButton.new=Paina tästä avataksesi Zoteron, tai käyttää %S-näppäinoikotietä.
|
||||
firstRunGuidance.toolbarButton.upgrade=Zoteron kuvake on nyt Firefoxin työkalurivillä. Paina kuvaketta avataksesi Zoteron, tai käytä %S-näppäinoikotietä.
|
||||
|
|
|
@ -81,10 +81,10 @@
|
|||
<!ENTITY zotero.items.menu.attach.note "Ajouter une note">
|
||||
<!ENTITY zotero.items.menu.attach "Ajouter une pièce jointe">
|
||||
<!ENTITY zotero.items.menu.attach.snapshot "Joindre une capture de la page courante">
|
||||
<!ENTITY zotero.items.menu.attach.link "Joindre le lien vers la page courante">
|
||||
<!ENTITY zotero.items.menu.attach.link.uri "Joindre le lien vers l'URI…">
|
||||
<!ENTITY zotero.items.menu.attach.file "Joindre une copie enregistrée du fichier…">
|
||||
<!ENTITY zotero.items.menu.attach.fileLink "Joindre un lien vers le fichier…">
|
||||
<!ENTITY zotero.items.menu.attach.link "Joindre un lien vers la page courante">
|
||||
<!ENTITY zotero.items.menu.attach.link.uri "Joindre un lien vers un URI…">
|
||||
<!ENTITY zotero.items.menu.attach.file "Joindre une copie enregistrée d'un fichier…">
|
||||
<!ENTITY zotero.items.menu.attach.fileLink "Joindre un lien vers un fichier…">
|
||||
|
||||
<!ENTITY zotero.items.menu.restoreToLibrary "Restaurer vers la bibliothèque">
|
||||
<!ENTITY zotero.items.menu.duplicateItem "Dupliquer le document">
|
||||
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Enregistrer dans Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Les pièces jointes ne peuvent pas être enregistrées dans la bibliothèque sélectionnée. Ce document sera enregistré dans votre bibliothèque à la place.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "Pour utiliser cette fonctionnalité, vous devez d'abord installer les outils PDF depuis le panneau Recherche des préférences de Zotero.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Joindre un lien vers un URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Lien :">
|
||||
<!ENTITY zotero.attachLink.label.title "Titre :">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Jusqu'à %S marqueurs dans chaque bibliothèque peuvent
|
|||
pane.items.loading=Chargement de la liste des objets…
|
||||
pane.items.columnChooser.moreColumns=Plus de colonnes
|
||||
pane.items.columnChooser.secondarySort=Critère de tri secondaire (%S)
|
||||
pane.items.attach.link.uri.title=Joindre un lien vers l'URI
|
||||
pane.items.attach.link.uri=Saisissez une URI :
|
||||
pane.items.attach.link.uri.unrecognized=Zotero n'a pas reconnu l'URI que vous avez saisi. Vérifiez l'adresse et ré-essayez.
|
||||
pane.items.attach.link.uri.file=Pour joindre un lien vers un fichier, utilisez plutôt “%S”.
|
||||
pane.items.trash.title=Mettre à la corbeille
|
||||
pane.items.trash=Voulez-vous vraiment mettre le document sélectionné à la corbeille ?
|
||||
pane.items.trash.multiple=Voulez-vous vraiment mettre les documents sélectionnés à la corbeille ?
|
||||
|
@ -365,7 +365,7 @@ itemFields.numberOfVolumes=Nb de volumes
|
|||
itemFields.committee=Commission
|
||||
itemFields.assignee=Cessionnaire
|
||||
itemFields.patentNumber=N° de brevet
|
||||
itemFields.priorityNumbers=Ordre de priorité
|
||||
itemFields.priorityNumbers=Numéros de priorité
|
||||
itemFields.issueDate=Date de parution
|
||||
itemFields.references=Références
|
||||
itemFields.legalStatus=Statut légal
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!ENTITY zotero.search.name "Nome:">
|
||||
|
||||
<!ENTITY zotero.search.searchInLibrary "Search in library:">
|
||||
<!ENTITY zotero.search.searchInLibrary "Buscar na librería:">
|
||||
|
||||
<!ENTITY zotero.search.joinMode.prefix "Comparar con">
|
||||
<!ENTITY zotero.search.joinMode.any "calquera">
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<!ENTITY zotero.general.cancel "Cancelar">
|
||||
|
||||
<!ENTITY zotero.errorReport.title "Informe de erros de Zotero">
|
||||
<!ENTITY zotero.errorReport.unrelatedMessages "This may include messages unrelated to Zotero.">
|
||||
<!ENTITY zotero.errorReport.unrelatedMessages "Isto pode conter mensaxes que non estean relacionadas con Zotero.">
|
||||
<!ENTITY zotero.errorReport.submissionInProgress "Espere mentres que se presenta o informe de erro.">
|
||||
<!ENTITY zotero.errorReport.submitted "Presentouse o informe de erro .">
|
||||
<!ENTITY zotero.errorReport.reportID "ID do informe:">
|
||||
|
@ -45,7 +45,7 @@
|
|||
<!ENTITY zotero.collections.showUnfiledItems "Mostrar os elementos sen cubrir">
|
||||
|
||||
<!ENTITY zotero.items.itemType "Tipo de elemento">
|
||||
<!ENTITY zotero.items.type_column "Item Type">
|
||||
<!ENTITY zotero.items.type_column "Tipo de elemento">
|
||||
<!ENTITY zotero.items.title_column "Título">
|
||||
<!ENTITY zotero.items.creator_column "Creador">
|
||||
<!ENTITY zotero.items.date_column "Data">
|
||||
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Gardar en Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Os anexos non se poden gardar na librería que se escolleu. En vez de alí, ese documento gardarase na súa biblioteca.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "Para empregar esta característica ten que instalar primeiro as ferramentas de PDF dende as preferencias de Zotero.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -81,9 +81,9 @@ upgrade.couldNotMigrate.restart=Reinicie o ordenador se continúa a recibir esta
|
|||
errorReport.reportError=Informar dun erro ...
|
||||
errorReport.reportErrors=Informar de erros ...
|
||||
errorReport.reportInstructions=Pode informar deste erro seleccionando «%S» no menú de accións.
|
||||
errorReport.followingReportWillBeSubmitted=The following report will be submitted:
|
||||
errorReport.noErrorsLogged=No errors have been logged since %S started.
|
||||
errorReport.advanceMessage=Press %S to send the report to the Zotero developers.
|
||||
errorReport.followingReportWillBeSubmitted=O informe que se vai a enviar é este:
|
||||
errorReport.noErrorsLogged=Non se rexistraron erros dende que %S se iniciou.
|
||||
errorReport.advanceMessage=Preme %S para enviarlle o informe aos desenvolvedores de Zotero.
|
||||
errorReport.stepsToReproduce=Pasos a reproducir:
|
||||
errorReport.expectedResult=Resultado esperado:
|
||||
errorReport.actualResult=Resultado real:
|
||||
|
@ -193,10 +193,10 @@ tagColorChooser.numberKeyInstructions=Podes engadir esta etiqueta para seleccion
|
|||
tagColorChooser.maxTags=Só ata %S etiquetas de cada biblioteca poden ter cores asignadas.
|
||||
|
||||
pane.items.loading=Cargando a lista de elementos ...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Anexar a ligazón á URI
|
||||
pane.items.attach.link.uri=Introducir unha URI:
|
||||
pane.items.columnChooser.moreColumns=Máis columnas
|
||||
pane.items.columnChooser.secondarySort=Modo de aliñamento (%S)
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Mover ao lixo
|
||||
pane.items.trash=Seguro que quere mover o elemento seleccionado ao lixo?
|
||||
pane.items.trash.multiple=Seguro que quere mover os elementos seleccionados ao lixo?
|
||||
|
@ -483,7 +483,7 @@ ingester.scrapingTo=Gardando en
|
|||
ingester.scrapeComplete=Gardouse o elemento
|
||||
ingester.scrapeError=Non se puido gardar o elemento
|
||||
ingester.scrapeErrorDescription=Produciuse un erro ao gardalo. Comprobe %S para obter máis información.
|
||||
ingester.scrapeErrorDescription.linkText=Troubleshooting Translator Issues
|
||||
ingester.scrapeErrorDescription.linkText=Informe de erros sobre das traducións
|
||||
ingester.scrapeErrorDescription.previousError=O proceso de gardado fallou debido a un erro previo de Zotero.
|
||||
|
||||
ingester.importReferRISDialog.title=Importar RIS/Refer para Zotero
|
||||
|
@ -966,5 +966,5 @@ firstRunGuidance.saveIcon=Zotero recoñece unha referencia nesta páxina. Faga c
|
|||
firstRunGuidance.authorMenu=Zotero permítelle ademais especificar os editores e tradutores. Escolléndoo neste menú pode asignar a un autor como editor ou tradutor.
|
||||
firstRunGuidance.quickFormat=Teclee un título ou autor para buscar unha referencia.\n\nDespois de facer a selección faga clic na burbulla ou prema Ctrl-\↓ para engadir números de páxina, prefixos ou sufixos. Así mesmo, pode incluír un número de páxina cos datos de busca e engadilo directamente.\n\Ademais, pode editar citas directamente dende o procesador de documentos de texto.
|
||||
firstRunGuidance.quickFormatMac=Teclee un título de autor para facer unha busca dunha referencia.\n\nDespois de ter feito a selección prema na burbulla ou prema Cmd-\↓ para engadir os números de páxina, prefixos ou sufixos. Igualmente, pode incluír un número de páxina co seus termos de busca empregados e engadilo directamente.\n\nPode ademais editar citas directamente desde o procesador de documentos de textos.
|
||||
firstRunGuidance.toolbarButton.new=Click here to open Zotero, or use the %S keyboard shortcut.
|
||||
firstRunGuidance.toolbarButton.upgrade=The Zotero icon can now be found in the Firefox toolbar. Click the icon to open Zotero, or use the %S keyboard shortcut.
|
||||
firstRunGuidance.toolbarButton.new=Para abrir Zotero preme aquí ou usa o atallo de teclado %S
|
||||
firstRunGuidance.toolbarButton.upgrade=A icona de Zotero pódese atopar na barra de ferramentas do Firefox. Preme na icona de Zotero para abrilo ou usa o atallo de teclado %S.
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Save to Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Attachments cannot be saved to the currently selected library. This item will be saved to your library instead.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
|||
pane.items.loading=טוען רשימת פריטים...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Move to Trash
|
||||
pane.items.trash=Are you sure you want to move the selected item to the Trash?
|
||||
pane.items.trash.multiple=Are you sure you want to move the selected items to the Trash?
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Save to Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Attachments cannot be saved to the currently selected library. This item will be saved to your library instead.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
|||
pane.items.loading=Loading items list...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Move to Trash
|
||||
pane.items.trash=Are you sure you want to move the selected item to the Trash?
|
||||
pane.items.trash.multiple=Are you sure you want to move the selected items to the Trash?
|
||||
|
|
|
@ -90,7 +90,7 @@
|
|||
<!ENTITY zotero.items.menu.duplicateItem "Kiválasztott elem duplikálása">
|
||||
<!ENTITY zotero.items.menu.mergeItems "Elemek összefésülése…">
|
||||
|
||||
<!ENTITY zotero.duplicatesMerge.versionSelect "Choose the version of the item to use as the master item:">
|
||||
<!ENTITY zotero.duplicatesMerge.versionSelect "Válassza ki azt az elemverziót, amit mester elemnek kíván használni: ">
|
||||
<!ENTITY zotero.duplicatesMerge.fieldSelect "Select fields to keep from other versions of the item:">
|
||||
|
||||
<!ENTITY zotero.toolbar.newItem.label "Új elem">
|
||||
|
@ -141,11 +141,11 @@
|
|||
<!ENTITY zotero.tagSelector.selectVisible "Látható címkék kiválasztása">
|
||||
<!ENTITY zotero.tagSelector.clearVisible "Látható címkék kiválasztásának megszüntetése">
|
||||
<!ENTITY zotero.tagSelector.clearAll "Összes címke kiválasztásának megszüntetése">
|
||||
<!ENTITY zotero.tagSelector.assignColor "Assign Color…">
|
||||
<!ENTITY zotero.tagSelector.assignColor "Szín kiválasztása…">
|
||||
<!ENTITY zotero.tagSelector.renameTag "Címke átnevezése...">
|
||||
<!ENTITY zotero.tagSelector.deleteTag "Címke törlése...">
|
||||
|
||||
<!ENTITY zotero.tagColorChooser.title "Choose a Tag Color and Position">
|
||||
<!ENTITY zotero.tagColorChooser.title "Válassza ki a címke színét és a pozíciót.">
|
||||
<!ENTITY zotero.tagColorChooser.color "Szín:">
|
||||
<!ENTITY zotero.tagColorChooser.position "Helyzet:">
|
||||
<!ENTITY zotero.tagColorChooser.setColor "Szín beállítása">
|
||||
|
@ -161,9 +161,9 @@
|
|||
|
||||
<!ENTITY zotero.bibliography.title "Bibliográfia létrehozása">
|
||||
<!ENTITY zotero.bibliography.style.label "Hivatkozási stílus:">
|
||||
<!ENTITY zotero.bibliography.outputMode "Output Mode:">
|
||||
<!ENTITY zotero.bibliography.bibliography "Bibliography">
|
||||
<!ENTITY zotero.bibliography.outputMethod "Output Method:">
|
||||
<!ENTITY zotero.bibliography.outputMode "Kimeneti mód:">
|
||||
<!ENTITY zotero.bibliography.bibliography "Bibliográfia">
|
||||
<!ENTITY zotero.bibliography.outputMethod "Kimeneti metódus:">
|
||||
<!ENTITY zotero.bibliography.saveAsRTF.label "Mentés RTF-ként">
|
||||
<!ENTITY zotero.bibliography.saveAsHTML.label "Mentés HTML-ként">
|
||||
<!ENTITY zotero.bibliography.copyToClipboard.label "Másolás a vágólapra">
|
||||
|
@ -217,7 +217,7 @@
|
|||
<!ENTITY zotero.integration.prefs.automaticJournalAbbeviations.label "Automatically abbreviate journal titles">
|
||||
<!ENTITY zotero.integration.prefs.automaticJournalAbbeviations.caption "MEDLINE journal abbreviations will be automatically generated using journal titles. The “Journal Abbr” field will be ignored.">
|
||||
|
||||
<!ENTITY zotero.integration.prefs.storeReferences.label "Store references in document">
|
||||
<!ENTITY zotero.integration.prefs.storeReferences.label "A dokumentum tárolt hivatkozásai">
|
||||
<!ENTITY zotero.integration.prefs.storeReferences.caption "Storing references in your document slightly increases file size, but will allow you to share your document with others without using a Zotero group. Zotero 3.0 or later is required to update documents created with this option.">
|
||||
|
||||
<!ENTITY zotero.integration.showEditor.label "Editor megjelenítése">
|
||||
|
@ -246,7 +246,7 @@
|
|||
<!ENTITY zotero.merge.deleted "Deleted">
|
||||
|
||||
<!ENTITY zotero.proxy.recognized.title "Proxy felismerve">
|
||||
<!ENTITY zotero.proxy.recognized.warning "Only add proxies linked from your library, school, or corporate website">
|
||||
<!ENTITY zotero.proxy.recognized.warning "Csak a könyvtárból, iskolából vagy vállalati weboldalról linkelt proxy-t adható hozzá">
|
||||
<!ENTITY zotero.proxy.recognized.warning.secondary "Adding other proxies allows malicious sites to masquerade as sites you trust.">
|
||||
<!ENTITY zotero.proxy.recognized.disable.label "Ne irányítsa át automatikusan a kéréseket az előzőleg felismert proxyikra.">
|
||||
<!ENTITY zotero.proxy.recognized.ignore.label "Elutasít">
|
||||
|
@ -274,7 +274,7 @@
|
|||
<!ENTITY zotero.rtfScan.formatPage.label "Hivatkozás formázása">
|
||||
<!ENTITY zotero.rtfScan.formatPage.description "A Zotero feldolgozza és formázza az RTF fájlt. Kérem várjon.">
|
||||
<!ENTITY zotero.rtfScan.completePage.label "Az RTF átvizsgálása befejeződött">
|
||||
<!ENTITY zotero.rtfScan.completePage.description "Your document has now been scanned and processed. Please ensure that it is formatted correctly.">
|
||||
<!ENTITY zotero.rtfScan.completePage.description "A dokumentum átvizsgálása és feldolgozása megtörtént. Győződjön meg róla, hogy megfelelően van formázva.">
|
||||
<!ENTITY zotero.rtfScan.inputFile.label "Bemeneti fájl">
|
||||
<!ENTITY zotero.rtfScan.outputFile.label "Kimeneti fájl">
|
||||
|
||||
|
@ -282,5 +282,11 @@
|
|||
<!ENTITY zotero.file.noneSelected.label "Nincs fájl kiválasztva">
|
||||
|
||||
<!ENTITY zotero.downloadManager.label "Mentés Zotero-ba">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Attachments cannot be saved to the currently selected library. This item will be saved to your library instead.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "To use this feature, you must first install the PDF tools in the Search pane of the Zotero preferences.">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "A csatolmányok nem menthetőek a jelenleg kiválasztott könyvtárba. Ez az elem a saját könyvtárába lesz mentve.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "Ahhoz, hogy ezt a tulajdonságot használja, először telepítenie kell a PDF tools-t a Zotero beállítások keresőpaneljén.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Cím:">
|
||||
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ general.errorHasOccurred=Hiba lépett fel.
|
|||
general.unknownErrorOccurred=Ismeretlen hiba.
|
||||
general.invalidResponseServer=Érvénytelen válasz a szervertől.
|
||||
general.tryAgainLater=Kérem, próbálkozzon újra néhány perc múlva.
|
||||
general.serverError=The server returned an error. Please try again.
|
||||
general.serverError=A szerver hibába fordult. Kérem próbálja újra.
|
||||
general.restartFirefox=Indítsa újra a Firefoxot.
|
||||
general.restartFirefoxAndTryAgain=Indítsa újra a Firefoxot és próbálja meg újra.
|
||||
general.checkForUpdate=Frissítések keresése
|
||||
|
@ -40,7 +40,7 @@ general.character.singular=karakter
|
|||
general.character.plural=karakter
|
||||
general.create=Új
|
||||
general.delete=Törlés
|
||||
general.moreInformation=More Information
|
||||
general.moreInformation=További információ
|
||||
general.seeForMoreInformation=A %S bővebb információkat tartalmaz.
|
||||
general.enable=Bekapcsolás
|
||||
general.disable=Kikapcsolás
|
||||
|
@ -83,13 +83,13 @@ errorReport.reportErrors=Hibák jelentése...
|
|||
errorReport.reportInstructions=A hiba jelentéséhez válassza a Műveletek menü "%S" menüpontját.
|
||||
errorReport.followingReportWillBeSubmitted=A következő jelentés kerül elküldésre:
|
||||
errorReport.noErrorsLogged=A %S indítása óta nem jelentkeztek hibák.
|
||||
errorReport.advanceMessage=Press %S to send the report to the Zotero developers.
|
||||
errorReport.advanceMessage=Nyomja meg a %S gombot, hogy elküldje a jelentést a Zotero fejlesztőinek.
|
||||
errorReport.stepsToReproduce=Hiba reprodukálásához szükséges lépések:
|
||||
errorReport.expectedResult=Elvárt működés:
|
||||
errorReport.actualResult=Tényleges működés:
|
||||
errorReport.noNetworkConnection=Nincs hálózati kapcsolat
|
||||
errorReport.invalidResponseRepository=Invalid response from repository
|
||||
errorReport.repoCannotBeContacted=Repository cannot be contacted
|
||||
errorReport.invalidResponseRepository=Érvénytelen válasz a tárolótól
|
||||
errorReport.repoCannotBeContacted=Nem lehet kapcsolatba lépni a tárolóval
|
||||
|
||||
|
||||
attachmentBasePath.selectDir=Choose Base Directory
|
||||
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
|||
pane.items.loading=Elemek listájának betöltése...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Link csatolása az URI-hez
|
||||
pane.items.attach.link.uri=Adja meg az URI-t:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Áthelyezés a Kukába
|
||||
pane.items.trash=A Kukába helyezés megerősítése?
|
||||
pane.items.trash.multiple=A Kukába helyezés megerősítése?
|
||||
|
@ -473,8 +473,8 @@ fileTypes.document=Dokumentum
|
|||
save.attachment=Pillanatfelvétel mentése...
|
||||
save.link=Hivatkozás mentése...
|
||||
save.link.error=Hiba történt a link mentésekor.
|
||||
save.error.cannotMakeChangesToCollection=You cannot make changes to the currently selected collection.
|
||||
save.error.cannotAddFilesToCollection=You cannot add files to the currently selected collection.
|
||||
save.error.cannotMakeChangesToCollection=Nem módosíthatja a jelenleg kiválasztott gyűjteményt.
|
||||
save.error.cannotAddFilesToCollection=Nem adhat hozzá fájlokat a jelenleg kiválasztott gyűjteményhez.
|
||||
|
||||
ingester.saveToZotero=Mentés a Zoteroba
|
||||
ingester.saveToZoteroUsing=Mentés Zotero-ba "%S" használatával
|
||||
|
@ -506,12 +506,12 @@ db.dbRestoreFailed=A Zotero adatbázis hibás, és az adatok automatikus vissza
|
|||
db.integrityCheck.passed=Nincsenek hibák az adatbázisban.
|
||||
db.integrityCheck.failed=Hibák a Zotero adatbázisban!
|
||||
db.integrityCheck.dbRepairTool=Használhatja az adatbázsi-helyerállító eszközt a következő oldalon https://www.zotero.org/utils/dbfix/ hogy megkísérelje kijavítani a hibákat.
|
||||
db.integrityCheck.repairAttempt=Zotero can attempt to correct these errors.
|
||||
db.integrityCheck.appRestartNeeded=%S will need to be restarted.
|
||||
db.integrityCheck.repairAttempt=A Zotero megpróbálhatja kijavítani ezeket a hibákat
|
||||
db.integrityCheck.appRestartNeeded=%S-t újra kell indítani.
|
||||
db.integrityCheck.fixAndRestart=Hibák javítása és újraindítás %S
|
||||
db.integrityCheck.errorsFixed=The errors in your Zotero database have been corrected.
|
||||
db.integrityCheck.errorsNotFixed=Zotero was unable to correct all the errors in your database.
|
||||
db.integrityCheck.reportInForums=You can report this problem in the Zotero Forums.
|
||||
db.integrityCheck.errorsFixed=Az ön Zotero adatbázisának hibái javításra kerültek
|
||||
db.integrityCheck.errorsNotFixed=A Zotero nem tudta kijavítani az összes hibát az ön adatbázisában.
|
||||
db.integrityCheck.reportInForums=Bejelentheti a problémát a Zotero Fórumain.
|
||||
|
||||
zotero.preferences.update.updated=Frissítve
|
||||
zotero.preferences.update.upToDate=Nincs frissítés
|
||||
|
@ -569,8 +569,8 @@ zotero.preferences.advanced.resetTranslators.changesLost=Az új vagy módosítot
|
|||
zotero.preferences.advanced.resetStyles=Stílusok visszaállítása
|
||||
zotero.preferences.advanced.resetStyles.changesLost=Az új vagy módosított stílusok elvesznek.
|
||||
|
||||
zotero.preferences.advanced.debug.title=Debug Output Submitted
|
||||
zotero.preferences.advanced.debug.sent=Debug output has been sent to the Zotero server.\n\nThe Debug ID is D%S.
|
||||
zotero.preferences.advanced.debug.title=A hibakeresés eredménye elküldve
|
||||
zotero.preferences.advanced.debug.sent=A hibakeresés eredménye elküldve a Zotero szervernek\n\nA hibaazonosító D%S.
|
||||
zotero.preferences.advanced.debug.error=An error occurred sending debug output.
|
||||
|
||||
dragAndDrop.existingFiles=Az alábbi fájlok már léteznek a célmappában, ezért nem kerültek bemásolásra.
|
||||
|
@ -582,7 +582,7 @@ fileInterface.import=Importálás
|
|||
fileInterface.export=Exportálás
|
||||
fileInterface.exportedItems=Exportált elemek
|
||||
fileInterface.imported=Importálva
|
||||
fileInterface.unsupportedFormat=The selected file is not in a supported format.
|
||||
fileInterface.unsupportedFormat=A kiválasztott fájl formátuma nem támogatott.
|
||||
fileInterface.viewSupportedFormats=Támogatott formátumok megtekintése…
|
||||
fileInterface.untitledBibliography=Cím nélküli bibliográfia
|
||||
fileInterface.bibliographyHTMLTitle=Bibliográfia
|
||||
|
@ -725,7 +725,7 @@ integration.upgradeWarning=Your document must be permanently upgraded in order t
|
|||
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?
|
||||
integration.corruptBibliography=A bibliográfiájának Zotero mezőkódja hibás. Szeretné ha a Zotero javítaná a mezőkódot és generálna egy új bibliográfiát?
|
||||
integration.corruptBibliography.description=All items cited in the text will appear in the new bibliography, but modifications you made in the "Edit Bibliography" dialog will be lost.
|
||||
integration.citationChanged=Módosította ezt a hivatkozást, amióta a Zotero generálta. Megtartja a módosításokat és megakadályozza a jövőbeli frissítésüket?
|
||||
integration.citationChanged.description=Kattintson az „Igen” gombra, ha nem akarja, hogy a Zotero frissítse ezt a hivatkozást további hivatkozások hozzáadásakor, stílusváltáskor, vagy az elem módosításakor. Ha a „Nem”-re kattint elvesznek a módosításai.
|
||||
|
|
|
@ -284,3 +284,9 @@
|
|||
<!ENTITY zotero.downloadManager.label "Simpan ke Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Lampiran tidak dapat disimpan ke dalam perpustakaan yang saat ini terpilih. Sebaliknya, item ini akan disimpan ke dalam perpustakaan Anda.">
|
||||
<!ENTITY zotero.downloadManager.noPDFTools.description "Untuk menggunakan fitur ini, Anda harus menginstal aplikasi PDF dalam preferensi Zotero terlebih dahulu.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ tagColorChooser.maxTags=Up to %S tags in each library can have colors assigned.
|
|||
pane.items.loading=Memuat daftar item...
|
||||
pane.items.columnChooser.moreColumns=More Columns
|
||||
pane.items.columnChooser.secondarySort=Secondary Sort (%S)
|
||||
pane.items.attach.link.uri.title=Attach Link to URI
|
||||
pane.items.attach.link.uri=Enter a URI:
|
||||
pane.items.attach.link.uri.unrecognized=Zotero did not recognize the URI you entered. Please check the address and try again.
|
||||
pane.items.attach.link.uri.file=To attach a link to a file, please use “%S”.
|
||||
pane.items.trash.title=Pindahkan ke Keranjang Sampah
|
||||
pane.items.trash=Apakah Anda yakin ingin memindahkan item terpilih ke Keranjang Sampah?
|
||||
pane.items.trash.multiple=Apakah Anda yakin ingin memindahkan item-item terpilih ke Keranjang Sampah?
|
||||
|
|
|
@ -54,9 +54,9 @@
|
|||
<!ENTITY zotero.preferences.sync.syncServer "Zotero samhæfingarþjónn">
|
||||
<!ENTITY zotero.preferences.sync.createAccount "Nýr notandi">
|
||||
<!ENTITY zotero.preferences.sync.lostPassword "Týnt lykilorð?">
|
||||
<!ENTITY zotero.preferences.sync.syncAutomatically "Sjamhæfa sjálfkrafa">
|
||||
<!ENTITY zotero.preferences.sync.syncFullTextContent "Sync full-text content">
|
||||
<!ENTITY zotero.preferences.sync.syncFullTextContent.desc "Zotero can sync the full-text content of files in your Zotero libraries with zotero.org and other linked devices, allowing you to easily search for your files wherever you are. The full-text content of your files will not be shared publicly.">
|
||||
<!ENTITY zotero.preferences.sync.syncAutomatically "Samhæfa sjálfkrafa">
|
||||
<!ENTITY zotero.preferences.sync.syncFullTextContent "Samhæfa innihald skjala">
|
||||
<!ENTITY zotero.preferences.sync.syncFullTextContent.desc "Zotero getur samhæft innihald skjala í Zotero safninu þínu við zotero.org og önnur nettengd tæki sem gerir þér kleift að leita að þínum skjölum hvar sem þú ert. Innihaldi skjalanna er ekki deilt með öðrum.">
|
||||
<!ENTITY zotero.preferences.sync.about "Um samhæfingu">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing "Samhæfing skráa">
|
||||
<!ENTITY zotero.preferences.sync.fileSyncing.url "slóð:">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!ENTITY zotero.search.name "Nafn:">
|
||||
|
||||
<!ENTITY zotero.search.searchInLibrary "Search in library:">
|
||||
<!ENTITY zotero.search.searchInLibrary "Leita í safni:">
|
||||
|
||||
<!ENTITY zotero.search.joinMode.prefix "Leita að">
|
||||
<!ENTITY zotero.search.joinMode.any "einhverju">
|
||||
|
@ -14,7 +14,7 @@
|
|||
<!ENTITY zotero.search.textModes.phrase "Setningaliður">
|
||||
<!ENTITY zotero.search.textModes.phraseBinary "Setningaliður (með stafrænum skrám)">
|
||||
<!ENTITY zotero.search.textModes.regexp "Regexp">
|
||||
<!ENTITY zotero.search.textModes.regexpCS "Regexp (case-sensitive)">
|
||||
<!ENTITY zotero.search.textModes.regexpCS "Leitartexti (næmur fyrir há- og lágstöfum)">
|
||||
|
||||
<!ENTITY zotero.search.date.units.days "dagar">
|
||||
<!ENTITY zotero.search.date.units.months "mánuðir">
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue