Compare commits
33 Commits
master
...
5.0.35-hot
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8fced28e89 | ||
![]() |
2ece5f04fe | ||
![]() |
aa56ebae1a | ||
![]() |
b5aeeaa60b | ||
![]() |
9304042cd4 | ||
![]() |
0617392e81 | ||
![]() |
431197992b | ||
![]() |
b4311e08e2 | ||
![]() |
6c18e9e260 | ||
![]() |
cc84a24995 | ||
![]() |
4290ebcc16 | ||
![]() |
6ae0c6055e | ||
![]() |
410976f991 | ||
![]() |
5dbae77c98 | ||
![]() |
f38cd21195 | ||
![]() |
42095b0b42 | ||
![]() |
83ae42e5a0 | ||
![]() |
575866005a | ||
![]() |
3eae1a59fe | ||
![]() |
0b951785f4 | ||
![]() |
df3956fbed | ||
![]() |
be300ec62b | ||
![]() |
1bdb329bc8 | ||
![]() |
50862501f6 | ||
![]() |
250a19ec03 | ||
![]() |
ea29c5cb10 | ||
![]() |
12c9e55472 | ||
![]() |
380ee9c0ed | ||
![]() |
4ed33b4da9 | ||
![]() |
ff9ee48e0f | ||
![]() |
e577009154 | ||
![]() |
246d7af3eb | ||
![]() |
2edf2641a2 |
|
@ -35,10 +35,10 @@ before_script:
|
||||||
- sh -e /etc/init.d/xvfb start
|
- sh -e /etc/init.d/xvfb start
|
||||||
- npm i
|
- npm i
|
||||||
- npm run build
|
- npm run build
|
||||||
- if [ $FX_VERSION = "54.0" ] &&
|
- if [[ $FX_VERSION = "54.0" &&
|
||||||
[ $TRAVIS_REPO_SLUG = "zotero/zotero" ] &&
|
$TRAVIS_REPO_SLUG = "zotero/zotero" &&
|
||||||
[ $TRAVIS_BRANCH = "master" ] &&
|
($TRAVIS_BRANCH = "master" || $TRAVIS_BRANCH = *-hotfix) &&
|
||||||
[ $TRAVIS_PULL_REQUEST = "false" ]; then
|
$TRAVIS_PULL_REQUEST = "false" ]]; then
|
||||||
mkdir build-zip;
|
mkdir build-zip;
|
||||||
cd build;
|
cd build;
|
||||||
zip -r ../build-zip/$TRAVIS_COMMIT.zip *;
|
zip -r ../build-zip/$TRAVIS_COMMIT.zip *;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 684bad2035a563b0661c1eb17b0ee6ba6325e571
|
Subproject commit 15396c0c18b768f0837015091bae9c931d4dd56b
|
|
@ -398,7 +398,6 @@ Zotero_Preferences.Sync = {
|
||||||
|
|
||||||
onStorageSettingsKeyPress: Zotero.Promise.coroutine(function* (event) {
|
onStorageSettingsKeyPress: Zotero.Promise.coroutine(function* (event) {
|
||||||
if (event.keyCode == 13) {
|
if (event.keyCode == 13) {
|
||||||
yield this.onStorageSettingsChange();
|
|
||||||
yield this.verifyStorageServer();
|
yield this.verifyStorageServer();
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
@ -480,6 +479,11 @@ Zotero_Preferences.Sync = {
|
||||||
|
|
||||||
|
|
||||||
verifyStorageServer: Zotero.Promise.coroutine(function* () {
|
verifyStorageServer: Zotero.Promise.coroutine(function* () {
|
||||||
|
// onchange weirdly isn't triggered when clicking straight from a field to the button,
|
||||||
|
// so we have to trigger this here (and we don't trigger it for Enter in
|
||||||
|
// onStorageSettingsKeyPress()).
|
||||||
|
yield this.onStorageSettingsChange();
|
||||||
|
|
||||||
Zotero.debug("Verifying storage");
|
Zotero.debug("Verifying storage");
|
||||||
|
|
||||||
var verifyButton = document.getElementById("storage-verify");
|
var verifyButton = document.getElementById("storage-verify");
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var CSL = {
|
var CSL = {
|
||||||
PROCESSOR_VERSION: "1.1.182",
|
PROCESSOR_VERSION: "1.1.183",
|
||||||
CONDITION_LEVEL_TOP: 1,
|
CONDITION_LEVEL_TOP: 1,
|
||||||
CONDITION_LEVEL_BOTTOM: 2,
|
CONDITION_LEVEL_BOTTOM: 2,
|
||||||
PLAIN_HYPHEN_REGEX: /(?:[^\\]-|\u2013)/,
|
PLAIN_HYPHEN_REGEX: /(?:[^\\]-|\u2013)/,
|
||||||
|
@ -1353,15 +1353,17 @@ CSL.parseXml = function(str) {
|
||||||
for (var i=lst.length-2;i>-1;i--) {
|
for (var i=lst.length-2;i>-1;i--) {
|
||||||
if (lst[i].slice(1).indexOf("<") === -1) {
|
if (lst[i].slice(1).indexOf("<") === -1) {
|
||||||
var stub = lst[i].slice(0, 5);
|
var stub = lst[i].slice(0, 5);
|
||||||
if (stub === "<term") {
|
if (lst[i].slice(-2) !== "/>") {
|
||||||
if (lst[i+1].slice(0, 6) === "</term") {
|
if (stub === "<term") {
|
||||||
lst[i] = lst[i] + lst[i+1];
|
if (lst[i+1].slice(0, 6) === "</term") {
|
||||||
lst = lst.slice(0, i+1).concat(lst.slice(i+2));
|
lst[i] = lst[i] + lst[i+1];
|
||||||
}
|
lst = lst.slice(0, i+1).concat(lst.slice(i+2));
|
||||||
} else if (["<sing", "<mult"].indexOf(stub) > -1) {
|
}
|
||||||
if (lst[i].slice(-2) !== "/>" && lst[i+1].slice(0, 1) === "<") {
|
} else if (["<sing", "<mult"].indexOf(stub) > -1) {
|
||||||
lst[i] = lst[i] + lst[i+1];
|
if (lst[i].slice(-2) !== "/>" && lst[i+1].slice(0, 1) === "<") {
|
||||||
lst = lst.slice(0, i+1).concat(lst.slice(i+2));
|
lst[i] = lst[i] + lst[i+1];
|
||||||
|
lst = lst.slice(0, i+1).concat(lst.slice(i+2));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4732,7 +4734,7 @@ CSL.Engine.Opt = function () {
|
||||||
this.development_extensions.static_statute_locator = false;
|
this.development_extensions.static_statute_locator = false;
|
||||||
this.development_extensions.csl_reverse_lookup_support = false;
|
this.development_extensions.csl_reverse_lookup_support = false;
|
||||||
this.development_extensions.clobber_locator_if_no_statute_section = false;
|
this.development_extensions.clobber_locator_if_no_statute_section = false;
|
||||||
this.development_extensions.wrap_url_and_doi = true;
|
this.development_extensions.wrap_url_and_doi = false;
|
||||||
this.development_extensions.allow_force_lowercase = false;
|
this.development_extensions.allow_force_lowercase = false;
|
||||||
this.development_extensions.handle_parallel_articles = false;
|
this.development_extensions.handle_parallel_articles = false;
|
||||||
this.development_extensions.thin_non_breaking_space_html_hack = false;
|
this.development_extensions.thin_non_breaking_space_html_hack = false;
|
||||||
|
@ -10608,7 +10610,7 @@ CSL.Node.text = {
|
||||||
var clonetoken = CSL.Util.cloneToken(this);
|
var clonetoken = CSL.Util.cloneToken(this);
|
||||||
var groupblob = new CSL.Blob(null, null, "url-wrapper");
|
var groupblob = new CSL.Blob(null, null, "url-wrapper");
|
||||||
groupblob.decorations.push(["@DOI", "true"]);
|
groupblob.decorations.push(["@DOI", "true"]);
|
||||||
value = value.replace(/^https?:\/\/doi.org\//, "");
|
value = value.replace(/^https?:\/\/doi\.org\//, "");
|
||||||
if (value.match(/^https?:\/\//)) {
|
if (value.match(/^https?:\/\//)) {
|
||||||
var prefix = "";
|
var prefix = "";
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1606,6 +1606,7 @@ Zotero.CollectionTreeView.prototype.canDropCheck = function (row, orient, dataTr
|
||||||
if (dataType == 'zotero/item') {
|
if (dataType == 'zotero/item') {
|
||||||
var ids = data;
|
var ids = data;
|
||||||
var items = Zotero.Items.get(ids);
|
var items = Zotero.Items.get(ids);
|
||||||
|
items = Zotero.Items.keepParents(items);
|
||||||
var skip = true;
|
var skip = true;
|
||||||
for (let item of items) {
|
for (let item of items) {
|
||||||
// Can only drag top-level items
|
// Can only drag top-level items
|
||||||
|
@ -2115,6 +2116,7 @@ Zotero.CollectionTreeView.prototype.drop = Zotero.Promise.coroutine(function* (r
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetTreeRow.isPublications()) {
|
if (targetTreeRow.isPublications()) {
|
||||||
|
items = Zotero.Items.keepParents(items);
|
||||||
let io = this._treebox.treeBody.ownerDocument.defaultView
|
let io = this._treebox.treeBody.ownerDocument.defaultView
|
||||||
.ZoteroPane.showPublicationsWizard(items);
|
.ZoteroPane.showPublicationsWizard(items);
|
||||||
if (!io) {
|
if (!io) {
|
||||||
|
|
|
@ -459,6 +459,7 @@ Zotero.ItemTypes = new function() {
|
||||||
|
|
||||||
// HiDPI images available
|
// HiDPI images available
|
||||||
case 'attachment-link':
|
case 'attachment-link':
|
||||||
|
case 'attachment-pdf':
|
||||||
case 'attachment-web-link':
|
case 'attachment-web-link':
|
||||||
case 'artwork':
|
case 'artwork':
|
||||||
case 'audioRecording':
|
case 'audioRecording':
|
||||||
|
@ -481,7 +482,6 @@ Zotero.ItemTypes = new function() {
|
||||||
|
|
||||||
// No HiDPI images available
|
// No HiDPI images available
|
||||||
case 'attachment-snapshot':
|
case 'attachment-snapshot':
|
||||||
case 'attachment-pdf':
|
|
||||||
case 'blogPost':
|
case 'blogPost':
|
||||||
case 'case':
|
case 'case':
|
||||||
case 'conferencePaper':
|
case 'conferencePaper':
|
||||||
|
|
|
@ -1249,15 +1249,19 @@ Zotero.DataObject.prototype._finalizeErase = Zotero.Promise.coroutine(function*
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
Zotero.DataObject.prototype.toResponseJSON = function (options) {
|
Zotero.DataObject.prototype.toResponseJSON = function (options = {}) {
|
||||||
// TODO: library block?
|
// TODO: library block?
|
||||||
|
|
||||||
return {
|
var json = {
|
||||||
key: this.key,
|
key: this.key,
|
||||||
version: this.version,
|
version: this.version,
|
||||||
meta: {},
|
meta: {},
|
||||||
data: this.toJSON(options)
|
data: this.toJSON(options)
|
||||||
};
|
};
|
||||||
|
if (options.version) {
|
||||||
|
json.version = json.data.version = options.version;
|
||||||
|
}
|
||||||
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -415,21 +415,31 @@ Zotero.Items = function() {
|
||||||
|
|
||||||
// Convert non-HTML notes on-the-fly
|
// Convert non-HTML notes on-the-fly
|
||||||
if (note !== "") {
|
if (note !== "") {
|
||||||
if (!note.substr(0, 36).match(/^<div class="zotero-note znv[0-9]+">/)) {
|
if (typeof note == 'number') {
|
||||||
note = Zotero.Utilities.htmlSpecialChars(note);
|
note = '' + note;
|
||||||
note = Zotero.Notes.notePrefix + '<p>'
|
}
|
||||||
+ note.replace(/\n/g, '</p><p>')
|
if (typeof note == 'string') {
|
||||||
.replace(/\t/g, ' ')
|
if (!note.substr(0, 36).match(/^<div class="zotero-note znv[0-9]+">/)) {
|
||||||
.replace(/ /g, ' ')
|
note = Zotero.Utilities.htmlSpecialChars(note);
|
||||||
+ '</p>' + Zotero.Notes.noteSuffix;
|
note = Zotero.Notes.notePrefix + '<p>'
|
||||||
note = note.replace(/<p>\s*<\/p>/g, '<p> </p>');
|
+ note.replace(/\n/g, '</p><p>')
|
||||||
notesToUpdate.push([item.id, note]);
|
.replace(/\t/g, ' ')
|
||||||
|
.replace(/ /g, ' ')
|
||||||
|
+ '</p>' + Zotero.Notes.noteSuffix;
|
||||||
|
note = note.replace(/<p>\s*<\/p>/g, '<p> </p>');
|
||||||
|
notesToUpdate.push([item.id, note]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Don't include <div> wrapper when returning value
|
||||||
|
let startLen = note.substr(0, 36).match(/^<div class="zotero-note znv[0-9]+">/)[0].length;
|
||||||
|
let endLen = 6; // "</div>".length
|
||||||
|
note = note.substr(startLen, note.length - startLen - endLen);
|
||||||
|
}
|
||||||
|
// Clear null notes
|
||||||
|
else {
|
||||||
|
note = '';
|
||||||
|
notesToUpdate.push([item.id, '']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't include <div> wrapper when returning value
|
|
||||||
let startLen = note.substr(0, 36).match(/^<div class="zotero-note znv[0-9]+">/)[0].length;
|
|
||||||
let endLen = 6; // "</div>".length
|
|
||||||
note = note.substr(startLen, note.length - startLen - endLen);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
item._noteText = note ? note : '';
|
item._noteText = note ? note : '';
|
||||||
|
@ -1176,6 +1186,25 @@ Zotero.Items = function() {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an array of items with children of selected parents removed
|
||||||
|
*
|
||||||
|
* @return {Zotero.Item[]}
|
||||||
|
*/
|
||||||
|
this.keepParents = function (items) {
|
||||||
|
var parentItems = new Set(
|
||||||
|
items
|
||||||
|
.filter(item => item.isTopLevelItem())
|
||||||
|
.map(item => item.id)
|
||||||
|
);
|
||||||
|
return items.filter(item => {
|
||||||
|
var parentItemID = item.parentItemID;
|
||||||
|
// Not a child item or not a child of one of the passed items
|
||||||
|
return !parentItemID || !parentItems.has(parentItemID);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generate SQL to retrieve firstCreator field
|
* Generate SQL to retrieve firstCreator field
|
||||||
*
|
*
|
||||||
|
|
|
@ -485,7 +485,7 @@ Zotero.DBConnection.prototype.executeTransaction = Zotero.Promise.coroutine(func
|
||||||
// Run begin callbacks
|
// Run begin callbacks
|
||||||
for (var i=0; i<this._callbacks.begin.length; i++) {
|
for (var i=0; i<this._callbacks.begin.length; i++) {
|
||||||
if (this._callbacks.begin[i]) {
|
if (this._callbacks.begin[i]) {
|
||||||
this._callbacks.begin[i]();
|
this._callbacks.begin[i](id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var conn = this._getConnection(options) || (yield this._getConnectionAsync(options));
|
var conn = this._getConnection(options) || (yield this._getConnectionAsync(options));
|
||||||
|
@ -516,13 +516,13 @@ Zotero.DBConnection.prototype.executeTransaction = Zotero.Promise.coroutine(func
|
||||||
// Run temporary commit callbacks
|
// Run temporary commit callbacks
|
||||||
var f;
|
var f;
|
||||||
while (f = this._callbacks.current.commit.shift()) {
|
while (f = this._callbacks.current.commit.shift()) {
|
||||||
yield Zotero.Promise.resolve(f());
|
yield Zotero.Promise.resolve(f(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run commit callbacks
|
// Run commit callbacks
|
||||||
for (var i=0; i<this._callbacks.commit.length; i++) {
|
for (var i=0; i<this._callbacks.commit.length; i++) {
|
||||||
if (this._callbacks.commit[i]) {
|
if (this._callbacks.commit[i]) {
|
||||||
yield this._callbacks.commit[i]();
|
yield this._callbacks.commit[i](id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -549,13 +549,13 @@ Zotero.DBConnection.prototype.executeTransaction = Zotero.Promise.coroutine(func
|
||||||
// Run temporary commit callbacks
|
// Run temporary commit callbacks
|
||||||
var f;
|
var f;
|
||||||
while (f = this._callbacks.current.rollback.shift()) {
|
while (f = this._callbacks.current.rollback.shift()) {
|
||||||
yield Zotero.Promise.resolve(f());
|
yield Zotero.Promise.resolve(f(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run rollback callbacks
|
// Run rollback callbacks
|
||||||
for (var i=0; i<this._callbacks.rollback.length; i++) {
|
for (var i=0; i<this._callbacks.rollback.length; i++) {
|
||||||
if (this._callbacks.rollback[i]) {
|
if (this._callbacks.rollback[i]) {
|
||||||
yield Zotero.Promise.resolve(this._callbacks.rollback[i]());
|
yield Zotero.Promise.resolve(this._callbacks.rollback[i](id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@ Zotero.HTTP = new function() {
|
||||||
this.UnexpectedStatusException = function(xmlhttp, msg) {
|
this.UnexpectedStatusException = function(xmlhttp, msg) {
|
||||||
this.xmlhttp = xmlhttp;
|
this.xmlhttp = xmlhttp;
|
||||||
this.status = xmlhttp.status;
|
this.status = xmlhttp.status;
|
||||||
|
this.channelStatus = null;
|
||||||
|
this.responseStatus = null;
|
||||||
this.channel = xmlhttp.channel;
|
this.channel = xmlhttp.channel;
|
||||||
this.message = msg;
|
this.message = msg;
|
||||||
this.stack = new Error().stack;
|
this.stack = new Error().stack;
|
||||||
|
@ -33,6 +35,24 @@ Zotero.HTTP = new function() {
|
||||||
catch (e) {
|
catch (e) {
|
||||||
Zotero.debug(e, 1);
|
Zotero.debug(e, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the connection failed, try to find out what really happened
|
||||||
|
if (!this.status) {
|
||||||
|
try {
|
||||||
|
if (xmlhttp.channel.status) {
|
||||||
|
this.channelStatus = xmlhttp.channel.status;
|
||||||
|
Zotero.debug("Channel status was " + this.channelStatus, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
|
try {
|
||||||
|
if (xmlhttp.channel.responseStatus) {
|
||||||
|
this.responseStatus = xmlhttp.channel.responseStatus;
|
||||||
|
Zotero.debug("Response status was " + this.responseStatus, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
this.UnexpectedStatusException.prototype = Object.create(Error.prototype);
|
this.UnexpectedStatusException.prototype = Object.create(Error.prototype);
|
||||||
this.UnexpectedStatusException.prototype.is4xx = function () {
|
this.UnexpectedStatusException.prototype.is4xx = function () {
|
||||||
|
@ -248,6 +268,18 @@ Zotero.HTTP = new function() {
|
||||||
xmlhttp.onloadend = function() {
|
xmlhttp.onloadend = function() {
|
||||||
var status = xmlhttp.status;
|
var status = xmlhttp.status;
|
||||||
|
|
||||||
|
// If an invalid HTTP response (e.g., NS_ERROR_INVALID_CONTENT_ENCODING) includes a
|
||||||
|
// 4xx or 5xx HTTP response code, swap it in, since it might be enough info to do
|
||||||
|
// what we need (e.g., verify a 404 from a WebDAV server)
|
||||||
|
try {
|
||||||
|
if (!status && xmlhttp.channel.responseStatus >= 400) {
|
||||||
|
Zotero.warn(`Overriding status for invalid response for ${dispURL} `
|
||||||
|
+ `(${xmlhttp.channel.status})`);
|
||||||
|
status = xmlhttp.channel.responseStatus;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
|
|
||||||
if (options.successCodes) {
|
if (options.successCodes) {
|
||||||
var success = options.successCodes.indexOf(status) != -1;
|
var success = options.successCodes.indexOf(status) != -1;
|
||||||
}
|
}
|
||||||
|
@ -264,13 +296,13 @@ Zotero.HTTP = new function() {
|
||||||
|
|
||||||
if(success) {
|
if(success) {
|
||||||
Zotero.debug("HTTP " + method + " " + dispURL
|
Zotero.debug("HTTP " + method + " " + dispURL
|
||||||
+ " succeeded with " + xmlhttp.status);
|
+ " succeeded with " + status);
|
||||||
if (options.debug) {
|
if (options.debug) {
|
||||||
Zotero.debug(xmlhttp.responseText);
|
Zotero.debug(xmlhttp.responseText);
|
||||||
}
|
}
|
||||||
deferred.resolve(xmlhttp);
|
deferred.resolve(xmlhttp);
|
||||||
} else {
|
} else {
|
||||||
let msg = "HTTP " + method + " " + dispURL + " failed with status code " + xmlhttp.status;
|
let msg = "HTTP " + method + " " + dispURL + " failed with status code " + status;
|
||||||
if (!xmlhttp.responseType && xmlhttp.responseText) {
|
if (!xmlhttp.responseType && xmlhttp.responseText) {
|
||||||
msg += ":\n\n" + xmlhttp.responseText;
|
msg += ":\n\n" + xmlhttp.responseText;
|
||||||
}
|
}
|
||||||
|
@ -1024,6 +1056,9 @@ Zotero.HTTP = new function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
let secInfo = channel.securityInfo;
|
let secInfo = channel.securityInfo;
|
||||||
|
let msg;
|
||||||
|
let dialogButtonText;
|
||||||
|
let dialogButtonCallback;
|
||||||
if (secInfo instanceof Ci.nsITransportSecurityInfo) {
|
if (secInfo instanceof Ci.nsITransportSecurityInfo) {
|
||||||
secInfo.QueryInterface(Ci.nsITransportSecurityInfo);
|
secInfo.QueryInterface(Ci.nsITransportSecurityInfo);
|
||||||
if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_INSECURE)
|
if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_INSECURE)
|
||||||
|
@ -1052,13 +1087,15 @@ Zotero.HTTP = new function() {
|
||||||
== Ci.nsIWebProgressListener.STATE_IS_BROKEN) {
|
== Ci.nsIWebProgressListener.STATE_IS_BROKEN) {
|
||||||
msg = Zotero.getString('sync.error.sslConnectionError');
|
msg = Zotero.getString('sync.error.sslConnectionError');
|
||||||
}
|
}
|
||||||
throw new Zotero.HTTP.SecurityException(
|
if (msg) {
|
||||||
msg,
|
throw new Zotero.HTTP.SecurityException(
|
||||||
{
|
msg,
|
||||||
dialogButtonText,
|
{
|
||||||
dialogButtonCallback
|
dialogButtonText,
|
||||||
}
|
dialogButtonCallback
|
||||||
);
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ Zotero.Notifier = new function(){
|
||||||
'collection-item', 'item-tag', 'tag', 'setting', 'group', 'trash',
|
'collection-item', 'item-tag', 'tag', 'setting', 'group', 'trash',
|
||||||
'bucket', 'relation', 'feed', 'feedItem', 'sync', 'api-key'
|
'bucket', 'relation', 'feed', 'feedItem', 'sync', 'api-key'
|
||||||
];
|
];
|
||||||
var _inTransaction;
|
var _transactionID = false;
|
||||||
var _queue = {};
|
var _queue = {};
|
||||||
|
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ Zotero.Notifier = new function(){
|
||||||
* - New events and types should be added to the order arrays in commit()
|
* - New events and types should be added to the order arrays in commit()
|
||||||
**/
|
**/
|
||||||
this.trigger = Zotero.Promise.coroutine(function* (event, type, ids, extraData, force) {
|
this.trigger = Zotero.Promise.coroutine(function* (event, type, ids, extraData, force) {
|
||||||
if (_inTransaction && !force) {
|
if (_transactionID && !force) {
|
||||||
return this.queue(event, type, ids, extraData);
|
return this.queue(event, type, ids, extraData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +173,7 @@ Zotero.Notifier = new function(){
|
||||||
queue = queue._queue;
|
queue = queue._queue;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!_inTransaction) {
|
if (!_transactionID) {
|
||||||
throw new Error("Can't queue event outside of a transaction");
|
throw new Error("Can't queue event outside of a transaction");
|
||||||
}
|
}
|
||||||
queue = _queue;
|
queue = _queue;
|
||||||
|
@ -278,11 +278,11 @@ Zotero.Notifier = new function(){
|
||||||
*
|
*
|
||||||
* Note: Be sure the matching commit() gets called (e.g. in a finally{...} block) or
|
* Note: Be sure the matching commit() gets called (e.g. in a finally{...} block) or
|
||||||
* notifications will break until Firefox is restarted or commit(true)/reset() is called manually
|
* notifications will break until Firefox is restarted or commit(true)/reset() is called manually
|
||||||
|
*
|
||||||
|
* @param {String} [transactionID]
|
||||||
*/
|
*/
|
||||||
this.begin = function () {
|
this.begin = function (transactionID = true) {
|
||||||
if (!_inTransaction) {
|
_transactionID = transactionID;
|
||||||
_inTransaction = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -291,8 +291,9 @@ Zotero.Notifier = new function(){
|
||||||
*
|
*
|
||||||
* @param {Zotero.Notifier.Queue|Zotero.Notifier.Queue[]} [queues] - One or more queues to use
|
* @param {Zotero.Notifier.Queue|Zotero.Notifier.Queue[]} [queues] - One or more queues to use
|
||||||
* instead of the internal queue
|
* instead of the internal queue
|
||||||
|
* @param {String} [transactionID]
|
||||||
*/
|
*/
|
||||||
this.commit = Zotero.Promise.coroutine(function* (queues) {
|
this.commit = Zotero.Promise.coroutine(function* (queues, transactionID = true) {
|
||||||
if (queues) {
|
if (queues) {
|
||||||
if (!Array.isArray(queues)) {
|
if (!Array.isArray(queues)) {
|
||||||
queues = [queues];
|
queues = [queues];
|
||||||
|
@ -308,7 +309,7 @@ Zotero.Notifier = new function(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!_inTransaction) {
|
else if (!_transactionID) {
|
||||||
throw new Error("Can't commit outside of transaction");
|
throw new Error("Can't commit outside of transaction");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -375,7 +376,7 @@ Zotero.Notifier = new function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!queues) {
|
if (!queues) {
|
||||||
this.reset();
|
this.reset(transactionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (totals) {
|
if (totals) {
|
||||||
|
@ -407,10 +408,13 @@ Zotero.Notifier = new function(){
|
||||||
/*
|
/*
|
||||||
* Reset the event queue
|
* Reset the event queue
|
||||||
*/
|
*/
|
||||||
this.reset = function () {
|
this.reset = function (transactionID = true) {
|
||||||
|
if (transactionID != _transactionID) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
//Zotero.debug("Resetting notifier event queue");
|
//Zotero.debug("Resetting notifier event queue");
|
||||||
_queue = {};
|
_queue = {};
|
||||||
_inTransaction = false;
|
_transactionID = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -744,16 +744,29 @@ Zotero.Schema = new function(){
|
||||||
index[id].extract = true;
|
index[id].extract = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
let sql = "SELECT metadataJSON FROM translatorCache";
|
let sql = "SELECT rowid, fileName, metadataJSON FROM translatorCache";
|
||||||
let dbCache = yield Zotero.DB.columnQueryAsync(sql);
|
let rows = yield Zotero.DB.queryAsync(sql);
|
||||||
// If there's anything in the cache, see what we actually need to extract
|
// If there's anything in the cache, see what we actually need to extract
|
||||||
if (dbCache) {
|
for (let i = 0; i < rows.length; i++) {
|
||||||
for (let i = 0; i < dbCache.length; i++) {
|
let json = rows[i].metadataJSON;
|
||||||
let metadata = JSON.parse(dbCache[i]);
|
let metadata;
|
||||||
let id = metadata.translatorID;
|
try {
|
||||||
if (index[id] && index[id].lastUpdated <= metadata.lastUpdated) {
|
metadata = JSON.parse(json);
|
||||||
index[id].extract = false;
|
}
|
||||||
}
|
catch (e) {
|
||||||
|
Zotero.logError(e);
|
||||||
|
Zotero.debug(json, 1);
|
||||||
|
|
||||||
|
// If JSON is invalid, clear from cache
|
||||||
|
yield Zotero.DB.queryAsync(
|
||||||
|
"DELETE FROM translatorCache WHERE rowid=?",
|
||||||
|
rows[i].rowid
|
||||||
|
);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let id = metadata.translatorID;
|
||||||
|
if (index[id] && index[id].lastUpdated <= metadata.lastUpdated) {
|
||||||
|
index[id].extract = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -224,7 +224,6 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var req = yield Zotero.HTTP.request("OPTIONS", this.rootURI);
|
var req = yield Zotero.HTTP.request("OPTIONS", this.rootURI);
|
||||||
this._checkResponse(req);
|
|
||||||
|
|
||||||
Zotero.debug("WebDAV credentials cached");
|
Zotero.debug("WebDAV credentials cached");
|
||||||
this._cachedCredentials = true;
|
this._cachedCredentials = true;
|
||||||
|
@ -595,30 +594,22 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test whether URL is WebDAV-enabled
|
// Test whether URL is WebDAV-enabled
|
||||||
try {
|
var req = yield Zotero.HTTP.request(
|
||||||
var req = yield Zotero.HTTP.request(
|
"OPTIONS",
|
||||||
"OPTIONS",
|
uri,
|
||||||
uri,
|
{
|
||||||
{
|
successCodes: [200, 404],
|
||||||
successCodes: [200, 404],
|
requestObserver: function (req) {
|
||||||
requestObserver: function (req) {
|
if (req.channel) {
|
||||||
if (req.channel) {
|
channel = req.channel;
|
||||||
channel = req.channel;
|
}
|
||||||
}
|
if (options.onRequest) {
|
||||||
if (options.onRequest) {
|
options.onRequest(req);
|
||||||
options.onRequest(req);
|
}
|
||||||
}
|
},
|
||||||
},
|
debug: true
|
||||||
debug: true
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
if (e instanceof Zotero.HTTP.UnexpectedStatusException) {
|
|
||||||
this._checkResponse(e.xmlhttp, e.channel);
|
|
||||||
}
|
}
|
||||||
throw e;
|
);
|
||||||
}
|
|
||||||
|
|
||||||
Zotero.debug(req.getAllResponseHeaders());
|
Zotero.debug(req.getAllResponseHeaders());
|
||||||
|
|
||||||
|
@ -866,7 +857,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "NONEXISTENT_FILE_NOT_MISSING":
|
case "NONEXISTENT_FILE_NOT_MISSING":
|
||||||
var errorTitle = Zotero.getString('sync.storage.error.webdav.serverConfig.title');
|
errorTitle = Zotero.getString('sync.storage.error.webdav.serverConfig.title');
|
||||||
errorMsg = Zotero.getString('sync.storage.error.webdav.nonexistentFileNotMissing');
|
errorMsg = Zotero.getString('sync.storage.error.webdav.nonexistentFileNotMissing');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -877,18 +868,25 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TEMP
|
var e;
|
||||||
if (!errorMsg) {
|
if (errorMsg) {
|
||||||
errorMsg = err;
|
e = {
|
||||||
|
message: errorMsg,
|
||||||
|
// Prevent Report Errors button for known errors
|
||||||
|
dialogButtonText: null
|
||||||
|
};
|
||||||
|
Zotero.logError(errorMsg);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
e = err;
|
||||||
|
Zotero.logError(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
Zotero.logError(errorMsg);
|
|
||||||
|
|
||||||
if (!skipSuccessMessage) {
|
if (!skipSuccessMessage) {
|
||||||
if (!errorTitle) {
|
if (!errorTitle) {
|
||||||
var errorTitle = Zotero.getString("general.error");
|
errorTitle = Zotero.getString("general.error");
|
||||||
}
|
}
|
||||||
promptService.alert(window, errorTitle, errorMsg);
|
Zotero.Utilities.Internal.errorPrompt(errorTitle, e);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}),
|
}),
|
||||||
|
@ -1126,8 +1124,6 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._checkResponse(req);
|
|
||||||
|
|
||||||
// mod_speling can return 300s for 404s with base name matches
|
// mod_speling can return 300s for 404s with base name matches
|
||||||
if (req.status == 404 || req.status == 300) {
|
if (req.status == 404 || req.status == 300) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -1462,87 +1458,6 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks for an invalid SSL certificate and throws a nice error
|
|
||||||
*/
|
|
||||||
_checkResponse: function (req, channel) {
|
|
||||||
if (req.status != 0) return;
|
|
||||||
|
|
||||||
// Check if the error we encountered is really an SSL error
|
|
||||||
// Logic borrowed from https://developer.mozilla.org/en-US/docs/How_to_check_the_security_state_of_an_XMLHTTPRequest_over_SSL
|
|
||||||
// http://mxr.mozilla.org/mozilla-central/source/security/nss/lib/ssl/sslerr.h
|
|
||||||
// http://mxr.mozilla.org/mozilla-central/source/security/nss/lib/util/secerr.h
|
|
||||||
var secErrLimit = Ci.nsINSSErrorsService.NSS_SEC_ERROR_LIMIT - Ci.nsINSSErrorsService.NSS_SEC_ERROR_BASE;
|
|
||||||
var secErr = Math.abs(Ci.nsINSSErrorsService.NSS_SEC_ERROR_BASE) - (channel.status & 0xffff);
|
|
||||||
var sslErrLimit = Ci.nsINSSErrorsService.NSS_SSL_ERROR_LIMIT - Ci.nsINSSErrorsService.NSS_SSL_ERROR_BASE;
|
|
||||||
var sslErr = Math.abs(Ci.nsINSSErrorsService.NSS_SSL_ERROR_BASE) - (channel.status & 0xffff);
|
|
||||||
if( (secErr < 0 || secErr > secErrLimit) && (sslErr < 0 || sslErr > sslErrLimit) ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var secInfo = channel.securityInfo;
|
|
||||||
if (secInfo instanceof Ci.nsITransportSecurityInfo) {
|
|
||||||
secInfo.QueryInterface(Ci.nsITransportSecurityInfo);
|
|
||||||
if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_INSECURE) == Ci.nsIWebProgressListener.STATE_IS_INSECURE) {
|
|
||||||
var host = 'host';
|
|
||||||
try {
|
|
||||||
host = channel.URI.host;
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
Zotero.debug(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
var msg = Zotero.getString('sync.storage.error.webdav.sslCertificateError', host);
|
|
||||||
// In Standalone, provide cert_override.txt instructions and a
|
|
||||||
// button to open the Zotero profile directory
|
|
||||||
if (Zotero.isStandalone) {
|
|
||||||
msg += "\n\n" + Zotero.getString('sync.storage.error.webdav.seeCertOverrideDocumentation');
|
|
||||||
var buttonText = Zotero.getString('general.openDocumentation');
|
|
||||||
var func = function () {
|
|
||||||
var zp = Zotero.getActiveZoteroPane();
|
|
||||||
zp.loadURI("https://www.zotero.org/support/kb/cert_override", { shiftKey: true });
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// In Firefox display a button to load the WebDAV URL
|
|
||||||
else {
|
|
||||||
msg += "\n\n" + Zotero.getString('sync.storage.error.webdav.loadURLForMoreInfo');
|
|
||||||
var buttonText = Zotero.getString('sync.storage.error.webdav.loadURL');
|
|
||||||
var func = function () {
|
|
||||||
var zp = Zotero.getActiveZoteroPane();
|
|
||||||
zp.loadURI(channel.URI.spec, { shiftKey: true });
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
var e = new Zotero.Error(
|
|
||||||
msg,
|
|
||||||
0,
|
|
||||||
{
|
|
||||||
dialogButtonText: buttonText,
|
|
||||||
dialogButtonCallback: func
|
|
||||||
}
|
|
||||||
);
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
else if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_BROKEN) == Ci.nsIWebProgressListener.STATE_IS_BROKEN) {
|
|
||||||
var msg = Zotero.getString('sync.storage.error.webdav.sslConnectionError', host) +
|
|
||||||
Zotero.getString('sync.storage.error.webdav.loadURLForMoreInfo');
|
|
||||||
var e = new Zotero.Error(
|
|
||||||
msg,
|
|
||||||
0,
|
|
||||||
{
|
|
||||||
dialogButtonText: Zotero.getString('sync.storage.error.webdav.loadURL'),
|
|
||||||
dialogButtonCallback: function () {
|
|
||||||
var zp = Zotero.getActiveZoteroPane();
|
|
||||||
zp.loadURI(channel.URI.spec, { shiftKey: true });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
_throwFriendlyError: function (method, url, status) {
|
_throwFriendlyError: function (method, url, status) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
Zotero.getString('sync.storage.error.webdav.requestError', [status, method])
|
Zotero.getString('sync.storage.error.webdav.requestError', [status, method])
|
||||||
|
|
|
@ -1983,6 +1983,21 @@ Zotero.Sync.Data.Engine.prototype._checkObjectUploadError = Zotero.Promise.corou
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (code == 403) {
|
||||||
|
// Prompt to reset local group files on 403 for file attachment upload
|
||||||
|
if (objectType == 'item') {
|
||||||
|
let item = Zotero.Items.getByLibraryAndKey(this.libraryID, key);
|
||||||
|
if (this.library.libraryType == 'group' && item.isFileAttachment()) {
|
||||||
|
let index = Zotero.Sync.Storage.Utilities.showFileWriteAccessLostPrompt(
|
||||||
|
null, this.library
|
||||||
|
);
|
||||||
|
if (index === 0) {
|
||||||
|
yield Zotero.Sync.Data.Local.resetUnsyncedLibraryFiles(this.libraryID);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// This shouldn't happen, because the upload request includes a library version and should
|
// This shouldn't happen, because the upload request includes a library version and should
|
||||||
// prevent an outdated upload before the object version is checked. If it does, we need to
|
// prevent an outdated upload before the object version is checked. If it does, we need to
|
||||||
// do a full sync. This error is checked in handleUploadError().
|
// do a full sync. This error is checked in handleUploadError().
|
||||||
|
|
|
@ -239,6 +239,8 @@ Zotero.Sync.Data.Local = {
|
||||||
|
|
||||||
|
|
||||||
_libraryHasUnsyncedFiles: Zotero.Promise.coroutine(function* (libraryID) {
|
_libraryHasUnsyncedFiles: Zotero.Promise.coroutine(function* (libraryID) {
|
||||||
|
// TODO: Check for modified file attachment items, which also can't be uploaded
|
||||||
|
// (and which are corrected by resetUnsyncedLibraryFiles())
|
||||||
yield Zotero.Sync.Storage.Local.checkForUpdatedFiles(libraryID);
|
yield Zotero.Sync.Storage.Local.checkForUpdatedFiles(libraryID);
|
||||||
return !!(yield Zotero.Sync.Storage.Local.getFilesToUpload(libraryID)).length;
|
return !!(yield Zotero.Sync.Storage.Local.getFilesToUpload(libraryID)).length;
|
||||||
}),
|
}),
|
||||||
|
@ -253,42 +255,9 @@ Zotero.Sync.Data.Local = {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let objectType of Zotero.DataObjectUtilities.getTypesForLibrary(libraryID)) {
|
for (let objectType of Zotero.DataObjectUtilities.getTypesForLibrary(libraryID)) {
|
||||||
let objectTypePlural = Zotero.DataObjectUtilities.getObjectTypePlural(objectType);
|
|
||||||
let objectsClass = Zotero.DataObjectUtilities.getObjectsClassForObjectType(objectType);
|
|
||||||
|
|
||||||
// New/modified objects
|
// New/modified objects
|
||||||
let ids = yield Zotero.Sync.Data.Local.getUnsynced(objectType, libraryID);
|
let ids = yield this.getUnsynced(objectType, libraryID);
|
||||||
let keys = ids.map(id => objectsClass.getLibraryAndKeyFromID(id).key);
|
yield this._resetObjects(libraryID, objectType, ids);
|
||||||
let cacheVersions = yield this.getLatestCacheObjectVersions(objectType, libraryID, keys);
|
|
||||||
let toDelete = [];
|
|
||||||
for (let key of keys) {
|
|
||||||
let obj = objectsClass.getByLibraryAndKey(libraryID, key);
|
|
||||||
|
|
||||||
// If object is in cache, overwrite with pristine data
|
|
||||||
if (cacheVersions[key]) {
|
|
||||||
let json = yield this.getCacheObject(objectType, libraryID, key, cacheVersions[key]);
|
|
||||||
yield Zotero.DB.executeTransaction(function* () {
|
|
||||||
yield this._saveObjectFromJSON(obj, json, {});
|
|
||||||
}.bind(this));
|
|
||||||
}
|
|
||||||
// Otherwise, erase
|
|
||||||
else {
|
|
||||||
toDelete.push(objectsClass.getIDFromLibraryAndKey(libraryID, key));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (toDelete.length) {
|
|
||||||
yield objectsClass.erase(
|
|
||||||
toDelete,
|
|
||||||
{
|
|
||||||
skipEditCheck: true,
|
|
||||||
skipDeleteLog: true
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deleted objects
|
|
||||||
keys = yield Zotero.Sync.Data.Local.getDeleted(objectType, libraryID);
|
|
||||||
yield this.removeObjectsFromDeleteLog(objectType, libraryID, keys);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mark library for full sync
|
// Mark library for full sync
|
||||||
|
@ -305,13 +274,62 @@ Zotero.Sync.Data.Local = {
|
||||||
*
|
*
|
||||||
* _libraryHasUnsyncedFiles(), which checks for updated files, must be called first.
|
* _libraryHasUnsyncedFiles(), which checks for updated files, must be called first.
|
||||||
*/
|
*/
|
||||||
resetUnsyncedLibraryFiles: Zotero.Promise.coroutine(function* (libraryID) {
|
resetUnsyncedLibraryFiles: async function (libraryID) {
|
||||||
var itemIDs = yield Zotero.Sync.Storage.Local.getFilesToUpload(libraryID);
|
// Reset unsynced file attachments
|
||||||
|
var itemIDs = await Zotero.Sync.Data.Local.getUnsynced('item', libraryID);
|
||||||
|
var toReset = [];
|
||||||
for (let itemID of itemIDs) {
|
for (let itemID of itemIDs) {
|
||||||
let item = Zotero.Items.get(itemID);
|
let item = Zotero.Items.get(itemID);
|
||||||
yield item.deleteAttachmentFile();
|
if (item.isFileAttachment()) {
|
||||||
|
toReset.push(item.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}),
|
await this._resetObjects(libraryID, 'item', toReset);
|
||||||
|
|
||||||
|
// Delete unsynced files
|
||||||
|
var itemIDs = await Zotero.Sync.Storage.Local.getFilesToUpload(libraryID);
|
||||||
|
for (let itemID of itemIDs) {
|
||||||
|
let item = Zotero.Items.get(itemID);
|
||||||
|
await item.deleteAttachmentFile();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
_resetObjects: async function (libraryID, objectType, ids) {
|
||||||
|
var objectsClass = Zotero.DataObjectUtilities.getObjectsClassForObjectType(objectType);
|
||||||
|
|
||||||
|
var keys = ids.map(id => objectsClass.getLibraryAndKeyFromID(id).key);
|
||||||
|
var cacheVersions = await this.getLatestCacheObjectVersions(objectType, libraryID, keys);
|
||||||
|
var toDelete = [];
|
||||||
|
for (let key of keys) {
|
||||||
|
let obj = objectsClass.getByLibraryAndKey(libraryID, key);
|
||||||
|
|
||||||
|
// If object is in cache, overwrite with pristine data
|
||||||
|
if (cacheVersions[key]) {
|
||||||
|
let json = await this.getCacheObject(objectType, libraryID, key, cacheVersions[key]);
|
||||||
|
await Zotero.DB.executeTransaction(async function () {
|
||||||
|
await this._saveObjectFromJSON(obj, json, {});
|
||||||
|
}.bind(this));
|
||||||
|
}
|
||||||
|
// Otherwise, erase
|
||||||
|
else {
|
||||||
|
toDelete.push(objectsClass.getIDFromLibraryAndKey(libraryID, key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (toDelete.length) {
|
||||||
|
await objectsClass.erase(
|
||||||
|
toDelete,
|
||||||
|
{
|
||||||
|
skipEditCheck: true,
|
||||||
|
skipDeleteLog: true
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deleted objects
|
||||||
|
keys = await Zotero.Sync.Data.Local.getDeleted(objectType, libraryID);
|
||||||
|
await this.removeObjectsFromDeleteLog(objectType, libraryID, keys);
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
getSkippedLibraries: function () {
|
getSkippedLibraries: function () {
|
||||||
|
@ -1056,6 +1074,12 @@ Zotero.Sync.Data.Local = {
|
||||||
Zotero.debug(json, 1);
|
Zotero.debug(json, 1);
|
||||||
throw new Error("Missing 'version' property in JSON");
|
throw new Error("Missing 'version' property in JSON");
|
||||||
}
|
}
|
||||||
|
if (json.version === 0) {
|
||||||
|
Zotero.debug(json, 1);
|
||||||
|
// TODO: Fix tests so this doesn't happen
|
||||||
|
Zotero.warn("'version' cannot be 0 in cache JSON");
|
||||||
|
//throw new Error("'version' cannot be 0 in cache JSON");
|
||||||
|
}
|
||||||
// If direct data object passed, wrap in fake response object
|
// If direct data object passed, wrap in fake response object
|
||||||
return json.data === undefined ? {
|
return json.data === undefined ? {
|
||||||
key: json.key,
|
key: json.key,
|
||||||
|
|
|
@ -127,9 +127,6 @@ Zotero.Sync.Runner_Module = function (options = {}) {
|
||||||
try {
|
try {
|
||||||
yield Zotero.Notifier.trigger('start', 'sync', []);
|
yield Zotero.Notifier.trigger('start', 'sync', []);
|
||||||
|
|
||||||
// Purge deleted objects so they don't cause sync errors (e.g., long tags)
|
|
||||||
yield Zotero.purgeDataObjects(true);
|
|
||||||
|
|
||||||
let apiKey = yield _getAPIKey();
|
let apiKey = yield _getAPIKey();
|
||||||
if (!apiKey) {
|
if (!apiKey) {
|
||||||
throw new Zotero.Error("API key not set", Zotero.Error.ERROR_API_KEY_NOT_SET);
|
throw new Zotero.Error("API key not set", Zotero.Error.ERROR_API_KEY_NOT_SET);
|
||||||
|
@ -142,6 +139,22 @@ Zotero.Sync.Runner_Module = function (options = {}) {
|
||||||
|
|
||||||
this.updateIcons('animate');
|
this.updateIcons('animate');
|
||||||
|
|
||||||
|
// purgeDataObjects() starts a transaction, so if there's an active one then show a
|
||||||
|
// nice message and wait until there's not. Another transaction could still start
|
||||||
|
// before purgeDataObjects() and result in a wait timeout, but this should reduce the
|
||||||
|
// frequency of that.
|
||||||
|
while (Zotero.DB.inTransaction()) {
|
||||||
|
this.setSyncStatus(Zotero.getString('sync.status.waiting'));
|
||||||
|
Zotero.debug("Transaction in progress -- waiting to sync");
|
||||||
|
yield Zotero.DB.waitForTransaction('sync');
|
||||||
|
_stopCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setSyncStatus(Zotero.getString('sync.status.preparing'));
|
||||||
|
|
||||||
|
// Purge deleted objects so they don't cause sync errors (e.g., long tags)
|
||||||
|
yield Zotero.purgeDataObjects(true);
|
||||||
|
|
||||||
let client = this.getAPIClient({ apiKey });
|
let client = this.getAPIClient({ apiKey });
|
||||||
let keyInfo = yield this.checkAccess(client, options);
|
let keyInfo = yield this.checkAccess(client, options);
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ Zotero.Translators = new function() {
|
||||||
_cache = {"import":[], "export":[], "web":[], "webWithTargetAll":[], "search":[]};
|
_cache = {"import":[], "export":[], "web":[], "webWithTargetAll":[], "search":[]};
|
||||||
_translators = {};
|
_translators = {};
|
||||||
|
|
||||||
var sql = "SELECT fileName, metadataJSON, lastModifiedTime FROM translatorCache";
|
var sql = "SELECT rowid, fileName, metadataJSON, lastModifiedTime FROM translatorCache";
|
||||||
var dbCacheResults = yield Zotero.DB.queryAsync(sql);
|
var dbCacheResults = yield Zotero.DB.queryAsync(sql);
|
||||||
var dbCache = {};
|
var dbCache = {};
|
||||||
for (let i = 0; i < dbCacheResults.length; i++) {
|
for (let i = 0; i < dbCacheResults.length; i++) {
|
||||||
|
@ -116,9 +116,22 @@ Zotero.Translators = new function() {
|
||||||
|
|
||||||
// Get JSON from cache if possible
|
// Get JSON from cache if possible
|
||||||
if (memCacheJSON || dbCacheEntry) {
|
if (memCacheJSON || dbCacheEntry) {
|
||||||
var translator = Zotero.Translators.load(
|
try {
|
||||||
memCacheJSON || dbCacheEntry.metadataJSON, path
|
var translator = Zotero.Translators.load(
|
||||||
);
|
memCacheJSON || dbCacheEntry.metadataJSON, path
|
||||||
|
);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
Zotero.logError(e);
|
||||||
|
Zotero.debug(memCacheJSON || dbCacheEntry.metadataJSON, 1);
|
||||||
|
|
||||||
|
// If JSON is invalid, clear from cache
|
||||||
|
yield Zotero.DB.queryAsync(
|
||||||
|
"DELETE FROM translatorCache WHERE fileName=?",
|
||||||
|
fileName
|
||||||
|
);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Otherwise, load from file
|
// Otherwise, load from file
|
||||||
else {
|
else {
|
||||||
|
@ -198,7 +211,8 @@ Zotero.Translators = new function() {
|
||||||
for (let fileName in dbCache) {
|
for (let fileName in dbCache) {
|
||||||
if (!filesInCache[fileName]) {
|
if (!filesInCache[fileName]) {
|
||||||
yield Zotero.DB.queryAsync(
|
yield Zotero.DB.queryAsync(
|
||||||
"DELETE FROM translatorCache WHERE fileName = ?", fileName
|
"DELETE FROM translatorCache WHERE rowid=?",
|
||||||
|
dbCache[fileName].rowid
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -620,9 +620,9 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
||||||
Zotero.HTTP.triggerProxyAuth();
|
Zotero.HTTP.triggerProxyAuth();
|
||||||
|
|
||||||
// Add notifier queue callbacks to the DB layer
|
// Add notifier queue callbacks to the DB layer
|
||||||
Zotero.DB.addCallback('begin', function () { return Zotero.Notifier.begin(); });
|
Zotero.DB.addCallback('begin', id => Zotero.Notifier.begin(id));
|
||||||
Zotero.DB.addCallback('commit', function () { return Zotero.Notifier.commit(); });
|
Zotero.DB.addCallback('commit', id => Zotero.Notifier.commit(null, id));
|
||||||
Zotero.DB.addCallback('rollback', function () { return Zotero.Notifier.reset(); });
|
Zotero.DB.addCallback('rollback', id => Zotero.Notifier.reset(id));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Require >=2.1b3 database to ensure proper locking
|
// Require >=2.1b3 database to ensure proper locking
|
||||||
|
|
|
@ -393,7 +393,7 @@
|
||||||
<treecols id="zotero-items-columns-header">
|
<treecols id="zotero-items-columns-header">
|
||||||
<treecol
|
<treecol
|
||||||
id="zotero-items-column-title" primary="true" default-in="default feed"
|
id="zotero-items-column-title" primary="true" default-in="default feed"
|
||||||
label="&zotero.items.title_column;"
|
label="&zotero.items.title_column;" ignoreincolumnpicker="true"
|
||||||
flex="4" zotero-persist="width ordinal hidden sortActive sortDirection"/>
|
flex="4" zotero-persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
<splitter class="tree-splitter"/>
|
<splitter class="tree-splitter"/>
|
||||||
<treecol
|
<treecol
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Not yet synced
|
sync.status.notYetSynced=Not yet synced
|
||||||
sync.status.lastSync=Last sync:
|
sync.status.lastSync=Last sync:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logging in to sync server
|
sync.status.loggingIn=Logging in to sync server
|
||||||
sync.status.gettingUpdatedData=Getting updated data from sync server
|
sync.status.gettingUpdatedData=Getting updated data from sync server
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=لم تتم مزامنته بعد
|
sync.status.notYetSynced=لم تتم مزامنته بعد
|
||||||
sync.status.lastSync=آخر تزامن:
|
sync.status.lastSync=آخر تزامن:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=تسجيل الدخول لخادم التزامن
|
sync.status.loggingIn=تسجيل الدخول لخادم التزامن
|
||||||
sync.status.gettingUpdatedData=جاري تحديث البيانات من خادم التزامن
|
sync.status.gettingUpdatedData=جاري تحديث البيانات من خادم التزامن
|
||||||
sync.status.processingUpdatedData=جاري معالجة البيانات المحدثة
|
sync.status.processingUpdatedData=جاري معالجة البيانات المحدثة
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Все още не е синхронизиран
|
sync.status.notYetSynced=Все още не е синхронизиран
|
||||||
sync.status.lastSync=Последна синхронизация:
|
sync.status.lastSync=Последна синхронизация:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Влиза в сървъра за синхронизации
|
sync.status.loggingIn=Влиза в сървъра за синхронизации
|
||||||
sync.status.gettingUpdatedData=Изтегля осъвременените дани от синхронизиращият сървър
|
sync.status.gettingUpdatedData=Изтегля осъвременените дани от синхронизиращият сървър
|
||||||
sync.status.processingUpdatedData=Обработва осъвременените дани.
|
sync.status.processingUpdatedData=Обработва осъвременените дани.
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Tria aquesta versió
|
||||||
|
|
||||||
sync.status.notYetSynced=Encara no s'ha sincronitzat
|
sync.status.notYetSynced=Encara no s'ha sincronitzat
|
||||||
sync.status.lastSync=Darrera sincronització:
|
sync.status.lastSync=Darrera sincronització:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Inici de sessió al servidor de sincronització
|
sync.status.loggingIn=Inici de sessió al servidor de sincronització
|
||||||
sync.status.gettingUpdatedData=Obtenint dades actualitzades de servidor de sincronització
|
sync.status.gettingUpdatedData=Obtenint dades actualitzades de servidor de sincronització
|
||||||
sync.status.processingUpdatedData=Processant les dades actualitzades del servidor de sincronització
|
sync.status.processingUpdatedData=Processant les dades actualitzades del servidor de sincronització
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Vybrat tuto verzi
|
||||||
|
|
||||||
sync.status.notYetSynced=Zatím nesynchronizováno
|
sync.status.notYetSynced=Zatím nesynchronizováno
|
||||||
sync.status.lastSync=Poslední synchronizace:
|
sync.status.lastSync=Poslední synchronizace:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Přihlašuji se na synchronizační server
|
sync.status.loggingIn=Přihlašuji se na synchronizační server
|
||||||
sync.status.gettingUpdatedData=Získávám pozměněná data ze synchronizačního serveru
|
sync.status.gettingUpdatedData=Získávám pozměněná data ze synchronizačního serveru
|
||||||
sync.status.processingUpdatedData=Zpracovávám pozměněná data
|
sync.status.processingUpdatedData=Zpracovávám pozměněná data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Vælge denne version
|
||||||
|
|
||||||
sync.status.notYetSynced=Endnu ikke synkroniseret
|
sync.status.notYetSynced=Endnu ikke synkroniseret
|
||||||
sync.status.lastSync=Sidste synkronisering:
|
sync.status.lastSync=Sidste synkronisering:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logger på synkroniseringsserver
|
sync.status.loggingIn=Logger på synkroniseringsserver
|
||||||
sync.status.gettingUpdatedData=Henter opdaterede data fra synkroniseringsserver
|
sync.status.gettingUpdatedData=Henter opdaterede data fra synkroniseringsserver
|
||||||
sync.status.processingUpdatedData=Behandler opdaterede data fra synkroniseringsserver
|
sync.status.processingUpdatedData=Behandler opdaterede data fra synkroniseringsserver
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Diese Version auswählen
|
||||||
|
|
||||||
sync.status.notYetSynced=Noch nicht synchronisiert
|
sync.status.notYetSynced=Noch nicht synchronisiert
|
||||||
sync.status.lastSync=Letzte Synchronisierung:
|
sync.status.lastSync=Letzte Synchronisierung:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Einloggen auf dem Sync-Server
|
sync.status.loggingIn=Einloggen auf dem Sync-Server
|
||||||
sync.status.gettingUpdatedData=Aktualisierte Daten vom Sync-Server empfangen
|
sync.status.gettingUpdatedData=Aktualisierte Daten vom Sync-Server empfangen
|
||||||
sync.status.processingUpdatedData=Aktualisierte Daten vom Sync-Server verarbeiten
|
sync.status.processingUpdatedData=Aktualisierte Daten vom Sync-Server verarbeiten
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Not yet synced
|
sync.status.notYetSynced=Not yet synced
|
||||||
sync.status.lastSync=Last sync:
|
sync.status.lastSync=Last sync:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logging in to sync server
|
sync.status.loggingIn=Logging in to sync server
|
||||||
sync.status.gettingUpdatedData=Getting updated data from sync server
|
sync.status.gettingUpdatedData=Getting updated data from sync server
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -965,6 +965,8 @@ sync.conflict.chooseThisVersion = Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced = Not yet synced
|
sync.status.notYetSynced = Not yet synced
|
||||||
sync.status.lastSync = Last sync:
|
sync.status.lastSync = Last sync:
|
||||||
|
sync.status.waiting = Waiting for other operations to finish
|
||||||
|
sync.status.preparing = Preparing sync
|
||||||
sync.status.loggingIn = Logging in to sync server
|
sync.status.loggingIn = Logging in to sync server
|
||||||
sync.status.gettingUpdatedData = Getting updated data from sync server
|
sync.status.gettingUpdatedData = Getting updated data from sync server
|
||||||
sync.status.processingUpdatedData = Processing updated data from sync server
|
sync.status.processingUpdatedData = Processing updated data from sync server
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Elegir esta versión
|
||||||
|
|
||||||
sync.status.notYetSynced=Aún sin sincronizar
|
sync.status.notYetSynced=Aún sin sincronizar
|
||||||
sync.status.lastSync=Última sincronización:
|
sync.status.lastSync=Última sincronización:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Iniciando sesión en el servidor de sincronización
|
sync.status.loggingIn=Iniciando sesión en el servidor de sincronización
|
||||||
sync.status.gettingUpdatedData=Obteniendo datos actualizados del servidor de sincronización
|
sync.status.gettingUpdatedData=Obteniendo datos actualizados del servidor de sincronización
|
||||||
sync.status.processingUpdatedData=Procesando los datos actualizados
|
sync.status.processingUpdatedData=Procesando los datos actualizados
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Sünkroonimist ei ole toimunud
|
sync.status.notYetSynced=Sünkroonimist ei ole toimunud
|
||||||
sync.status.lastSync=Viimane sünkroonimine:
|
sync.status.lastSync=Viimane sünkroonimine:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Sünkroonimisserverisse sisselogimine
|
sync.status.loggingIn=Sünkroonimisserverisse sisselogimine
|
||||||
sync.status.gettingUpdatedData=Andmete uuendamine serverist
|
sync.status.gettingUpdatedData=Andmete uuendamine serverist
|
||||||
sync.status.processingUpdatedData=Uuendatud andmete töötlemine
|
sync.status.processingUpdatedData=Uuendatud andmete töötlemine
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Sinkronizatu gabe oraindik
|
sync.status.notYetSynced=Sinkronizatu gabe oraindik
|
||||||
sync.status.lastSync=Azken Sync:
|
sync.status.lastSync=Azken Sync:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Sync zerbitzariari eskaera bidaltzen...
|
sync.status.loggingIn=Sync zerbitzariari eskaera bidaltzen...
|
||||||
sync.status.gettingUpdatedData=Datu eguneratuak zerbitzaritik jasotzen...
|
sync.status.gettingUpdatedData=Datu eguneratuak zerbitzaritik jasotzen...
|
||||||
sync.status.processingUpdatedData=Datu berriak prozesatzen...
|
sync.status.processingUpdatedData=Datu berriak prozesatzen...
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=هنوز همزمان نشده است
|
sync.status.notYetSynced=هنوز همزمان نشده است
|
||||||
sync.status.lastSync=آخرین همزمانسازی:
|
sync.status.lastSync=آخرین همزمانسازی:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=ورود به کارگزار همزمانسازی
|
sync.status.loggingIn=ورود به کارگزار همزمانسازی
|
||||||
sync.status.gettingUpdatedData=در حال دریافت اطلاعات روزآمد شده از کارگزار همزمانسازی
|
sync.status.gettingUpdatedData=در حال دریافت اطلاعات روزآمد شده از کارگزار همزمانسازی
|
||||||
sync.status.processingUpdatedData=در حال پردازش اطلاعات روزآمد شده
|
sync.status.processingUpdatedData=در حال پردازش اطلاعات روزآمد شده
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Valitse tämä versio
|
||||||
|
|
||||||
sync.status.notYetSynced=Ei vielä synkronoitu
|
sync.status.notYetSynced=Ei vielä synkronoitu
|
||||||
sync.status.lastSync=Viimeisin synkronointi:
|
sync.status.lastSync=Viimeisin synkronointi:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Kirjaudutaan synkronointipalvelimelle
|
sync.status.loggingIn=Kirjaudutaan synkronointipalvelimelle
|
||||||
sync.status.gettingUpdatedData=Haetaan päivitetyt tiedot synkronointipalvelimelta
|
sync.status.gettingUpdatedData=Haetaan päivitetyt tiedot synkronointipalvelimelta
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.download "Télécharger les fichiers">
|
<!ENTITY zotero.preferences.sync.fileSyncing.download "Télécharger les fichiers">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.atSyncTime "lors de la synchronisation">
|
<!ENTITY zotero.preferences.sync.fileSyncing.download.atSyncTime "lors de la synchronisation">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "à la demande">
|
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "à la demande">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.verifyServer "Verify Server">
|
<!ENTITY zotero.preferences.sync.fileSyncing.verifyServer "Tester la connexion au serveur">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos1 "En utilisant le stockage de Zotero, vous acceptez d'être lié par ses">
|
<!ENTITY zotero.preferences.sync.fileSyncing.tos1 "En utilisant le stockage de Zotero, vous acceptez d'être lié par ses">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos2 "modalités et conditions">
|
<!ENTITY zotero.preferences.sync.fileSyncing.tos2 "modalités et conditions">
|
||||||
<!ENTITY zotero.preferences.sync.librariesToSync "Bibliothèques à synchroniser">
|
<!ENTITY zotero.preferences.sync.librariesToSync "Bibliothèques à synchroniser">
|
||||||
|
@ -80,12 +80,12 @@
|
||||||
<!ENTITY zotero.preferences.sync.reset.warning3 " pour plus d'informations.">
|
<!ENTITY zotero.preferences.sync.reset.warning3 " pour plus d'informations.">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory "Réinitialiser l'historique de synchronisation des données">
|
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory "Réinitialiser l'historique de synchronisation des données">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory.desc "Fusionner les données locales avec les données distantes, en ignorant l'historique de synchronisation">
|
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory.desc "Fusionner les données locales avec les données distantes, en ignorant l'historique de synchronisation">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Restore from Online Library">
|
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Restaurer depuis la bibliothèque en ligne">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreFromServer.desc "Overwrite local Zotero data with data from the online library.">
|
<!ENTITY zotero.preferences.sync.reset.restoreFromServer.desc "Écraser les données Zotero locales avec les données provenant de la bibliothèque en ligne">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreToServer "Restore to Online Library">
|
<!ENTITY zotero.preferences.sync.reset.restoreToServer "Restaurer vers la bibliothèque en ligne">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreToServer.desc "Overwrite online library with local Zotero data">
|
<!ENTITY zotero.preferences.sync.reset.restoreToServer.desc "Écraser les données de la bibliothèque en ligne avec les données Zotero locales">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory "Réinitialiser l'historique de synchronisation des fichiers">
|
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory "Réinitialiser l'historique de synchronisation des fichiers">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory.desc "Compare all attachment files with the storage service">
|
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory.desc "Comparer tous les fichiers joints avec le serveur de stockage">
|
||||||
<!ENTITY zotero.preferences.sync.reset "Réinitialisation">
|
<!ENTITY zotero.preferences.sync.reset "Réinitialisation">
|
||||||
<!ENTITY zotero.preferences.sync.reset.button "Réinitialiser…">
|
<!ENTITY zotero.preferences.sync.reset.button "Réinitialiser…">
|
||||||
|
|
||||||
|
|
|
@ -338,7 +338,7 @@ pane.item.notes.delete.confirm=Voulez-vous vraiment supprimer cette note ?
|
||||||
pane.item.notes.count.zero=%S note :
|
pane.item.notes.count.zero=%S note :
|
||||||
pane.item.notes.count.singular=%S note :
|
pane.item.notes.count.singular=%S note :
|
||||||
pane.item.notes.count.plural=%S notes :
|
pane.item.notes.count.plural=%S notes :
|
||||||
pane.item.notes.editingInWindow=Editing in separate window
|
pane.item.notes.editingInWindow=Modification dans une nouvelle fenêtre
|
||||||
pane.item.attachments.rename.title=Nouveau titre :
|
pane.item.attachments.rename.title=Nouveau titre :
|
||||||
pane.item.attachments.rename.renameAssociatedFile=Renommer le fichier associé
|
pane.item.attachments.rename.renameAssociatedFile=Renommer le fichier associé
|
||||||
pane.item.attachments.rename.error=Une erreur est survenue lors du renommage du fichier.
|
pane.item.attachments.rename.error=Une erreur est survenue lors du renommage du fichier.
|
||||||
|
@ -622,10 +622,10 @@ zotero.preferences.sync.reset.userInfoMissing=Vous devez saisir un nom d'utilisa
|
||||||
zotero.preferences.sync.reset.restoreFromServer=Toutes les données de cette copie de Zotero seront écrasées et remplacées par les données appartenant à l'utilisateur '%S' présentes sur le serveur Zotero.
|
zotero.preferences.sync.reset.restoreFromServer=Toutes les données de cette copie de Zotero seront écrasées et remplacées par les données appartenant à l'utilisateur '%S' présentes sur le serveur Zotero.
|
||||||
zotero.preferences.sync.reset.replaceLocalData=Remplacer les données locales
|
zotero.preferences.sync.reset.replaceLocalData=Remplacer les données locales
|
||||||
zotero.preferences.sync.reset.restartToComplete=Firefox doit être redémarré pour terminer le processus de restauration
|
zotero.preferences.sync.reset.restartToComplete=Firefox doit être redémarré pour terminer le processus de restauration
|
||||||
zotero.preferences.sync.reset.restoreToServer=%1$S will replace data in “%2$S” on %3$S with data from this computer.
|
zotero.preferences.sync.reset.restoreToServer=%1$S remplacera les données contenues dans “%2$S” sur %3$S avec les données provenant de cet ordinateur.
|
||||||
zotero.preferences.sync.reset.restoreToServer.button=Replace Data in Online Library
|
zotero.preferences.sync.reset.restoreToServer.button=Remplacer les données dans la bibliothèque en ligne
|
||||||
zotero.preferences.sync.reset.fileSyncHistory=On the next sync, %1$S will check all attachment files in “%2$S” against the storage service. Any remote attachment files that are missing locally will be downloaded, and local attachment files missing remotely will be uploaded.\n\nThis option is not necessary during normal usage.
|
zotero.preferences.sync.reset.fileSyncHistory=Lors de la prochaine synchronisation, %1$S comparera tous les fichiers joints dans “%2$S” avec le serveur de stockage. Tous les fichiers joints qui manquent localement seront téléchargés, et les fichiers joints locaux qui manquent sur le serveur distant seront téléversés.\n\nLors d'une utilisation normale, cette option n'est pas nécessaire.
|
||||||
zotero.preferences.sync.reset.fileSyncHistory.cleared=The file sync history for “%S” has been cleared.
|
zotero.preferences.sync.reset.fileSyncHistory.cleared=L'historique de synchronisation de “%S” a été effacé
|
||||||
|
|
||||||
zotero.preferences.search.rebuildIndex=Reconstruire l'index
|
zotero.preferences.search.rebuildIndex=Reconstruire l'index
|
||||||
zotero.preferences.search.rebuildWarning=Voulez-vous reconstruire l'index entier ? Cela peut prendre un moment.\n\nPour n'indexer que les documents non indexés, utilisez %S.
|
zotero.preferences.search.rebuildWarning=Voulez-vous reconstruire l'index entier ? Cela peut prendre un moment.\n\nPour n'indexer que les documents non indexés, utilisez %S.
|
||||||
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choisir cette version
|
||||||
|
|
||||||
sync.status.notYetSynced=Pas encore synchronisé.
|
sync.status.notYetSynced=Pas encore synchronisé.
|
||||||
sync.status.lastSync=Dernière synchronisation :
|
sync.status.lastSync=Dernière synchronisation :
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Connexion au serveur de synchronisation
|
sync.status.loggingIn=Connexion au serveur de synchronisation
|
||||||
sync.status.gettingUpdatedData=Obtention des données mises à jour à partir du serveur de synchronisation
|
sync.status.gettingUpdatedData=Obtention des données mises à jour à partir du serveur de synchronisation
|
||||||
sync.status.processingUpdatedData=Traitement des données mises à jour depuis le serveur de synchronisation
|
sync.status.processingUpdatedData=Traitement des données mises à jour depuis le serveur de synchronisation
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Escoller esta versión
|
||||||
|
|
||||||
sync.status.notYetSynced=Aínda non sincronizado
|
sync.status.notYetSynced=Aínda non sincronizado
|
||||||
sync.status.lastSync=Última sincronización:
|
sync.status.lastSync=Última sincronización:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Conectándose co servidor de sincronización
|
sync.status.loggingIn=Conectándose co servidor de sincronización
|
||||||
sync.status.gettingUpdatedData=Obtendo datos actualizados do servidor de sincronización
|
sync.status.gettingUpdatedData=Obtendo datos actualizados do servidor de sincronización
|
||||||
sync.status.processingUpdatedData=Procesando datos actualizados
|
sync.status.processingUpdatedData=Procesando datos actualizados
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Not yet synced
|
sync.status.notYetSynced=Not yet synced
|
||||||
sync.status.lastSync=Last sync:
|
sync.status.lastSync=Last sync:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logging in to sync server
|
sync.status.loggingIn=Logging in to sync server
|
||||||
sync.status.gettingUpdatedData=Getting updated data from sync server
|
sync.status.gettingUpdatedData=Getting updated data from sync server
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Not yet synced
|
sync.status.notYetSynced=Not yet synced
|
||||||
sync.status.lastSync=Last sync:
|
sync.status.lastSync=Last sync:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logging in to sync server
|
sync.status.loggingIn=Logging in to sync server
|
||||||
sync.status.gettingUpdatedData=Getting updated data from sync server
|
sync.status.gettingUpdatedData=Getting updated data from sync server
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Válassza ezt a verziót
|
||||||
|
|
||||||
sync.status.notYetSynced=Nincs szinkronizálva
|
sync.status.notYetSynced=Nincs szinkronizálva
|
||||||
sync.status.lastSync=Utoljára szinkronizálva:
|
sync.status.lastSync=Utoljára szinkronizálva:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Bejelentkezés a szinkronizációs szerverre
|
sync.status.loggingIn=Bejelentkezés a szinkronizációs szerverre
|
||||||
sync.status.gettingUpdatedData=Frissített adatok fogadása a szinkronizációs szerverről
|
sync.status.gettingUpdatedData=Frissített adatok fogadása a szinkronizációs szerverről
|
||||||
sync.status.processingUpdatedData=A frissített adatok feldolgozása
|
sync.status.processingUpdatedData=A frissített adatok feldolgozása
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Belum disinkronisasikan
|
sync.status.notYetSynced=Belum disinkronisasikan
|
||||||
sync.status.lastSync=Sinkronisasi Terakhir:
|
sync.status.lastSync=Sinkronisasi Terakhir:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Sedang log in ke dalam server sinkronisasi
|
sync.status.loggingIn=Sedang log in ke dalam server sinkronisasi
|
||||||
sync.status.gettingUpdatedData=Mendapatkan data yang termutakhirkan dari server sinkronisasi
|
sync.status.gettingUpdatedData=Mendapatkan data yang termutakhirkan dari server sinkronisasi
|
||||||
sync.status.processingUpdatedData=Memproses data yang termutakhirkan dari server sinkronisasi
|
sync.status.processingUpdatedData=Memproses data yang termutakhirkan dari server sinkronisasi
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Veldu þessa útgáfu
|
||||||
|
|
||||||
sync.status.notYetSynced=Ekki enn samhæft
|
sync.status.notYetSynced=Ekki enn samhæft
|
||||||
sync.status.lastSync=Síðasta samhæfing:
|
sync.status.lastSync=Síðasta samhæfing:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Tengist samhæfingarþjóni
|
sync.status.loggingIn=Tengist samhæfingarþjóni
|
||||||
sync.status.gettingUpdatedData=Næ í uppfærð gögn frá samhæfingarþjóni
|
sync.status.gettingUpdatedData=Næ í uppfærð gögn frá samhæfingarþjóni
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Sincronizzazione non ancora effettuata
|
sync.status.notYetSynced=Sincronizzazione non ancora effettuata
|
||||||
sync.status.lastSync=Ultima sincronizzazione:
|
sync.status.lastSync=Ultima sincronizzazione:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Accesso al server di sincronizzazione
|
sync.status.loggingIn=Accesso al server di sincronizzazione
|
||||||
sync.status.gettingUpdatedData=Ricezione dei dati aggiornati dal server di sincronizzazione
|
sync.status.gettingUpdatedData=Ricezione dei dati aggiornati dal server di sincronizzazione
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=このヴァージョンを選ぶ
|
||||||
|
|
||||||
sync.status.notYetSynced=未同期
|
sync.status.notYetSynced=未同期
|
||||||
sync.status.lastSync=最後の同期:
|
sync.status.lastSync=最後の同期:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=同期サーバへログイン中
|
sync.status.loggingIn=同期サーバへログイン中
|
||||||
sync.status.gettingUpdatedData=更新されたデータを同期サーバから受信中
|
sync.status.gettingUpdatedData=更新されたデータを同期サーバから受信中
|
||||||
sync.status.processingUpdatedData=更新されたデータを処理中
|
sync.status.processingUpdatedData=更新されたデータを処理中
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=មិនទាន់បានធ្វើសមកាលកម្ម
|
sync.status.notYetSynced=មិនទាន់បានធ្វើសមកាលកម្ម
|
||||||
sync.status.lastSync=ធ្វើសមកាលកម្មលើកចុងក្រោយ:
|
sync.status.lastSync=ធ្វើសមកាលកម្មលើកចុងក្រោយ:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=ចូលទៅកាន់ម៉ាស៊ីនបម្រើសមកាលកម្ម
|
sync.status.loggingIn=ចូលទៅកាន់ម៉ាស៊ីនបម្រើសមកាលកម្ម
|
||||||
sync.status.gettingUpdatedData=ទទួលទិន្នន័យទំនើបកម្មពីម៉ាស៊ីនបម្រើសមកាលកម្ម
|
sync.status.gettingUpdatedData=ទទួលទិន្នន័យទំនើបកម្មពីម៉ាស៊ីនបម្រើសមកាលកម្ម
|
||||||
sync.status.processingUpdatedData=កំពុងដំណើរការទាញទិន្នន័យទំនើបកម្មពីម៉ាស៊ីនបម្រើសមកាលកម្ម
|
sync.status.processingUpdatedData=កំពុងដំណើរការទាញទិន្នន័យទំនើបកម្មពីម៉ាស៊ីនបម្រើសមកាលកម្ម
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=이 버전 선택
|
||||||
|
|
||||||
sync.status.notYetSynced=아직 동기화되지 않음
|
sync.status.notYetSynced=아직 동기화되지 않음
|
||||||
sync.status.lastSync=최종 동기화:
|
sync.status.lastSync=최종 동기화:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=동기화 서버로 로그인
|
sync.status.loggingIn=동기화 서버로 로그인
|
||||||
sync.status.gettingUpdatedData=동기화 서버로부터 갱신된 자료 받기
|
sync.status.gettingUpdatedData=동기화 서버로부터 갱신된 자료 받기
|
||||||
sync.status.processingUpdatedData=자료 갱신 작업중
|
sync.status.processingUpdatedData=자료 갱신 작업중
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Pasirinkite šią versiją
|
||||||
|
|
||||||
sync.status.notYetSynced=Dar nesinchronizuota
|
sync.status.notYetSynced=Dar nesinchronizuota
|
||||||
sync.status.lastSync=Paskiausiai sinchronizuota:
|
sync.status.lastSync=Paskiausiai sinchronizuota:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Prisijungiama prie sinchronizavimo serverio
|
sync.status.loggingIn=Prisijungiama prie sinchronizavimo serverio
|
||||||
sync.status.gettingUpdatedData=Iš sinchronizavimo serverio parsiunčiami naujausi duomenys
|
sync.status.gettingUpdatedData=Iš sinchronizavimo serverio parsiunčiami naujausi duomenys
|
||||||
sync.status.processingUpdatedData=Apdorojami naujausi sinchronizavimo serverio duomenys
|
sync.status.processingUpdatedData=Apdorojami naujausi sinchronizavimo serverio duomenys
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Not yet synced
|
sync.status.notYetSynced=Not yet synced
|
||||||
sync.status.lastSync=Last sync:
|
sync.status.lastSync=Last sync:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logging in to sync server
|
sync.status.loggingIn=Logging in to sync server
|
||||||
sync.status.gettingUpdatedData=Getting updated data from sync server
|
sync.status.gettingUpdatedData=Getting updated data from sync server
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Not yet synced
|
sync.status.notYetSynced=Not yet synced
|
||||||
sync.status.lastSync=Last sync:
|
sync.status.lastSync=Last sync:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logging in to sync server
|
sync.status.loggingIn=Logging in to sync server
|
||||||
sync.status.gettingUpdatedData=Getting updated data from sync server
|
sync.status.gettingUpdatedData=Getting updated data from sync server
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Kies deze versie
|
||||||
|
|
||||||
sync.status.notYetSynced=Nog niet gesynchroniseerd
|
sync.status.notYetSynced=Nog niet gesynchroniseerd
|
||||||
sync.status.lastSync=Laatste synchronisatie:
|
sync.status.lastSync=Laatste synchronisatie:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Bezig met aanmelden bij synchronisatie-server
|
sync.status.loggingIn=Bezig met aanmelden bij synchronisatie-server
|
||||||
sync.status.gettingUpdatedData=Bezig met het downloaden van bijgewerkte gegevens van de synchronisatie-server
|
sync.status.gettingUpdatedData=Bezig met het downloaden van bijgewerkte gegevens van de synchronisatie-server
|
||||||
sync.status.processingUpdatedData=Bezig met het verwerken van bijgewerkte gegevens
|
sync.status.processingUpdatedData=Bezig met het verwerken van bijgewerkte gegevens
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
<!ENTITY zotero.preferences.prefpane.general "Generelt">
|
<!ENTITY zotero.preferences.prefpane.general "Generelt">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.userInterface "Brukargrensesnitt">
|
<!ENTITY zotero.preferences.userInterface "Brukargrensesnitt">
|
||||||
<!ENTITY zotero.preferences.layout "Layout:">
|
<!ENTITY zotero.preferences.layout "Stil:">
|
||||||
<!ENTITY zotero.preferences.layout.standard "Standard">
|
<!ENTITY zotero.preferences.layout.standard "Standard">
|
||||||
<!ENTITY zotero.preferences.layout.stacked "Stacked">
|
<!ENTITY zotero.preferences.layout.stacked "Stabla">
|
||||||
<!ENTITY zotero.preferences.fontSize "Skriftstorleik">
|
<!ENTITY zotero.preferences.fontSize "Skriftstorleik">
|
||||||
<!ENTITY zotero.preferences.fontSize.small "Liten">
|
<!ENTITY zotero.preferences.fontSize.small "Liten">
|
||||||
<!ENTITY zotero.preferences.fontSize.medium "Middels">
|
<!ENTITY zotero.preferences.fontSize.medium "Middels">
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
<!ENTITY zotero.preferences.fontSize.notes "Skriftstorleik på notat:">
|
<!ENTITY zotero.preferences.fontSize.notes "Skriftstorleik på notat:">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.miscellaneous "Diverse">
|
<!ENTITY zotero.preferences.miscellaneous "Diverse">
|
||||||
<!ENTITY zotero.preferences.autoUpdate "Sjekk automatisk for oppdaterte omsetjarar og stilar">
|
<!ENTITY zotero.preferences.autoUpdate "Sjekk automatisk etter oppdaterte omsetjarar og stilar">
|
||||||
<!ENTITY zotero.preferences.updateNow "Oppdater no">
|
<!ENTITY zotero.preferences.updateNow "Oppdater no">
|
||||||
<!ENTITY zotero.preferences.reportTranslationFailure "Rapporter øydelagte nettstadomsetjarar">
|
<!ENTITY zotero.preferences.reportTranslationFailure "Rapporter øydelagte nettstadomsetjarar">
|
||||||
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader "La zotero.org justera innhald ut frå installert versjon av Zotero">
|
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader "La zotero.org justera innhald ut frå installert versjon av Zotero">
|
||||||
|
@ -36,13 +36,13 @@
|
||||||
<!ENTITY zotero.preferences.groups.childNotes "undernotat">
|
<!ENTITY zotero.preferences.groups.childNotes "undernotat">
|
||||||
<!ENTITY zotero.preferences.groups.childFiles "undernotat og importerte filer">
|
<!ENTITY zotero.preferences.groups.childFiles "undernotat og importerte filer">
|
||||||
<!ENTITY zotero.preferences.groups.childLinks "underlenkjer">
|
<!ENTITY zotero.preferences.groups.childLinks "underlenkjer">
|
||||||
<!ENTITY zotero.preferences.groups.tags "tags">
|
<!ENTITY zotero.preferences.groups.tags "taggar">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.feeds "Feeds">
|
<!ENTITY zotero.preferences.feeds "Nyheitskjelder">
|
||||||
<!ENTITY zotero.preferences.feeds.sorting.label "Sorting:">
|
<!ENTITY zotero.preferences.feeds.sorting.label "Sorter:">
|
||||||
<!ENTITY zotero.preferences.feeds.sorting.newest "Newest items first">
|
<!ENTITY zotero.preferences.feeds.sorting.newest "Nyaste element først">
|
||||||
<!ENTITY zotero.preferences.feeds.sorting.oldest "Oldest items first">
|
<!ENTITY zotero.preferences.feeds.sorting.oldest "Eldste element først">
|
||||||
<!ENTITY zotero.preferences.feeds.feedDefaults "Feed Defaults">
|
<!ENTITY zotero.preferences.feeds.feedDefaults "Standardar for nyheitskjelder">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.openurl.search "Leit etter "resolvers"">
|
<!ENTITY zotero.preferences.openurl.search "Leit etter "resolvers"">
|
||||||
<!ENTITY zotero.preferences.openurl.custom "Custom…">
|
<!ENTITY zotero.preferences.openurl.custom "Custom…">
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
<!ENTITY zotero.preferences.sync.setUpSync "Set Up Syncing">
|
<!ENTITY zotero.preferences.sync.setUpSync "Set Up Syncing">
|
||||||
<!ENTITY zotero.preferences.sync.unlinkAccount "Unlink Account…">
|
<!ENTITY zotero.preferences.sync.unlinkAccount "Unlink Account…">
|
||||||
<!ENTITY zotero.preferences.sync.createAccount "Lag konto">
|
<!ENTITY zotero.preferences.sync.createAccount "Lag konto">
|
||||||
<!ENTITY zotero.preferences.sync.lostPassword "Mista passordet?">
|
<!ENTITY zotero.preferences.sync.lostPassword "Gløymt passordet?">
|
||||||
<!ENTITY zotero.preferences.sync.syncAutomatically "Synkroniser automatisk">
|
<!ENTITY zotero.preferences.sync.syncAutomatically "Synkroniser automatisk">
|
||||||
<!ENTITY zotero.preferences.sync.syncFullTextContent "Synkroniser fulltekst-innhald">
|
<!ENTITY zotero.preferences.sync.syncFullTextContent "Synkroniser fulltekst-innhald">
|
||||||
<!ENTITY zotero.preferences.sync.syncFullTextContent.desc "Zotero kan synkronisera all teksten i filene i Zotero-biblioteka dine med zotero.org og andre tilknytta einingar, slik at du lett kan søka etter filene kor du enn er. Tekst og anna innhald i filene dine vert ikkje delt offentleg.">
|
<!ENTITY zotero.preferences.sync.syncFullTextContent.desc "Zotero kan synkronisera all teksten i filene i Zotero-biblioteka dine med zotero.org og andre tilknytta einingar, slik at du lett kan søka etter filene kor du enn er. Tekst og anna innhald i filene dine vert ikkje delt offentleg.">
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Ikkje synkronisert enno
|
sync.status.notYetSynced=Ikkje synkronisert enno
|
||||||
sync.status.lastSync=Siste synkronisering:
|
sync.status.lastSync=Siste synkronisering:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logging in to sync servar
|
sync.status.loggingIn=Logging in to sync servar
|
||||||
sync.status.gettingUpdatedData=Får oppdaterte data frå synkroniseringstenaren
|
sync.status.gettingUpdatedData=Får oppdaterte data frå synkroniseringstenaren
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Wybierz tę wersję
|
||||||
|
|
||||||
sync.status.notYetSynced=Nie zsynchronizowany
|
sync.status.notYetSynced=Nie zsynchronizowany
|
||||||
sync.status.lastSync=Ostatnia synchronizacja:
|
sync.status.lastSync=Ostatnia synchronizacja:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logowanie do serwera synchronizacji
|
sync.status.loggingIn=Logowanie do serwera synchronizacji
|
||||||
sync.status.gettingUpdatedData=Odbieranie zaktualizowanych danych z serwera synchronizacji
|
sync.status.gettingUpdatedData=Odbieranie zaktualizowanych danych z serwera synchronizacji
|
||||||
sync.status.processingUpdatedData=Przetwarzanie zaktualizowanych danych
|
sync.status.processingUpdatedData=Przetwarzanie zaktualizowanych danych
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.download "Baixar os arquivos">
|
<!ENTITY zotero.preferences.sync.fileSyncing.download "Baixar os arquivos">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.atSyncTime "no momento da sincronização">
|
<!ENTITY zotero.preferences.sync.fileSyncing.download.atSyncTime "no momento da sincronização">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "quando necessário">
|
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "quando necessário">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.verifyServer "Verify Server">
|
<!ENTITY zotero.preferences.sync.fileSyncing.verifyServer "Verificar Servidor">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos1 "Ao utilizar o armazenamento Zotero, você concorda em aderir a seus">
|
<!ENTITY zotero.preferences.sync.fileSyncing.tos1 "Ao utilizar o armazenamento Zotero, você concorda em aderir a seus">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos2 "termos e condições">
|
<!ENTITY zotero.preferences.sync.fileSyncing.tos2 "termos e condições">
|
||||||
<!ENTITY zotero.preferences.sync.librariesToSync "Bibliotecas para sincronizar">
|
<!ENTITY zotero.preferences.sync.librariesToSync "Bibliotecas para sincronizar">
|
||||||
|
@ -80,12 +80,12 @@
|
||||||
<!ENTITY zotero.preferences.sync.reset.warning3 "para maiores informações.">
|
<!ENTITY zotero.preferences.sync.reset.warning3 "para maiores informações.">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory "Redefinir o histórico de sincronização de dados">
|
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory "Redefinir o histórico de sincronização de dados">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory.desc "Mesclar os dados locais e remotos, ignorando o histórico de sincronização">
|
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory.desc "Mesclar os dados locais e remotos, ignorando o histórico de sincronização">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Restore from Online Library">
|
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Restaurar da Biblioteca Online">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreFromServer.desc "Overwrite local Zotero data with data from the online library.">
|
<!ENTITY zotero.preferences.sync.reset.restoreFromServer.desc "Sobrescrever dados locais a partir das informações da biblioteca online.">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreToServer "Restore to Online Library">
|
<!ENTITY zotero.preferences.sync.reset.restoreToServer "Restaurar para a Biblioteca Online">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreToServer.desc "Overwrite online library with local Zotero data">
|
<!ENTITY zotero.preferences.sync.reset.restoreToServer.desc "Sobrescrever biblioteca online a partir de informações locais de Zotero">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory "Reconfigurar o histórico de sincronização de arquivo">
|
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory "Reconfigurar o histórico de sincronização de arquivo">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory.desc "Compare all attachment files with the storage service">
|
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory.desc "Comparar todos os arquivos de anexo com o serviço de armazenamento">
|
||||||
<!ENTITY zotero.preferences.sync.reset "Reconfigurar">
|
<!ENTITY zotero.preferences.sync.reset "Reconfigurar">
|
||||||
<!ENTITY zotero.preferences.sync.reset.button "Redefinir...">
|
<!ENTITY zotero.preferences.sync.reset.button "Redefinir...">
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@
|
||||||
<!ENTITY zotero.preferences.dataDir.useProfile "Usar o diretório do perfil">
|
<!ENTITY zotero.preferences.dataDir.useProfile "Usar o diretório do perfil">
|
||||||
<!ENTITY zotero.preferences.dataDir.custom "Personalizar:">
|
<!ENTITY zotero.preferences.dataDir.custom "Personalizar:">
|
||||||
<!ENTITY zotero.preferences.dataDir.choose "Selecionar...">
|
<!ENTITY zotero.preferences.dataDir.choose "Selecionar...">
|
||||||
<!ENTITY zotero.preferences.dataDir.viaCommandLine "(specified via command line)">
|
<!ENTITY zotero.preferences.dataDir.viaCommandLine "(especificado por linha de comando)">
|
||||||
<!ENTITY zotero.preferences.dataDir.reveal "Exibir o diretório de dados">
|
<!ENTITY zotero.preferences.dataDir.reveal "Exibir o diretório de dados">
|
||||||
<!ENTITY zotero.preferences.dataDir.migrate "Migrar para a nova localização padrão...">
|
<!ENTITY zotero.preferences.dataDir.migrate "Migrar para a nova localização padrão...">
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@
|
||||||
<!ENTITY debugOutputLogging.submit "Enviar a saída">
|
<!ENTITY debugOutputLogging.submit "Enviar a saída">
|
||||||
<!ENTITY debugOutputLogging.view "Ver a saída">
|
<!ENTITY debugOutputLogging.view "Ver a saída">
|
||||||
<!ENTITY debugOutputLogging.clear "Limpar a saída">
|
<!ENTITY debugOutputLogging.clear "Limpar a saída">
|
||||||
<!ENTITY debugOutputLogging.restartWithLoggingEnabled "Restart with Logging Enabled…">
|
<!ENTITY debugOutputLogging.restartWithLoggingEnabled "Reiniciar com o Registro Habilitado">
|
||||||
|
|
||||||
<!ENTITY helpCheckForUpdates.label "Buscar atualizações...">
|
<!ENTITY helpCheckForUpdates.label "Buscar atualizações...">
|
||||||
<!ENTITY helpCheckForUpdates.accesskey "U">
|
<!ENTITY helpCheckForUpdates.accesskey "U">
|
||||||
|
|
|
@ -94,7 +94,7 @@ upgrade.nonupgradeableDB2=Para continuar, primeiro atualize o seu banco de dados
|
||||||
|
|
||||||
errorReport.reportError=Relatar erro...
|
errorReport.reportError=Relatar erro...
|
||||||
errorReport.reportErrors=Relatar erros...
|
errorReport.reportErrors=Relatar erros...
|
||||||
errorReport.reportInstructions=You can report this error by selecting "%S" from the Help menu.
|
errorReport.reportInstructions=Relate esse problema selecionando "%S" no menu de ajuda.
|
||||||
errorReport.followingReportWillBeSubmitted=O seguinte relatório será enviado:
|
errorReport.followingReportWillBeSubmitted=O seguinte relatório será enviado:
|
||||||
errorReport.noErrorsLogged=Nenhum erro foi registrado desde que %S foi iniciado.
|
errorReport.noErrorsLogged=Nenhum erro foi registrado desde que %S foi iniciado.
|
||||||
errorReport.advanceMessage=Pressione %S para enviar o relatório para os desenvolvedores do Zotero.
|
errorReport.advanceMessage=Pressione %S para enviar o relatório para os desenvolvedores do Zotero.
|
||||||
|
@ -124,7 +124,7 @@ dataDir.databaseCannotBeOpened=The %S database cannot be opened.
|
||||||
dataDir.checkPermissions=Make sure you have read and write permissions for all files in the %1$S data directory and that security software isn’t preventing %1$S from accessing that directory.
|
dataDir.checkPermissions=Make sure you have read and write permissions for all files in the %1$S data directory and that security software isn’t preventing %1$S from accessing that directory.
|
||||||
dataDir.moveToDefaultLocation=You may be able to fix this problem by moving the data directory to the new default location in your home directory. %S will automatically detect the new location.
|
dataDir.moveToDefaultLocation=You may be able to fix this problem by moving the data directory to the new default location in your home directory. %S will automatically detect the new location.
|
||||||
dataDir.location=Data Directory: %S
|
dataDir.location=Data Directory: %S
|
||||||
dataDir.notFound=The %S data directory could not be found.
|
dataDir.notFound=As informações da pasta %S não foram encontradas.
|
||||||
dataDir.notFound.defaultFound=The %S data directory could not be found at %S, but a data directory was found at %S. Use this directory instead?
|
dataDir.notFound.defaultFound=The %S data directory could not be found at %S, but a data directory was found at %S. Use this directory instead?
|
||||||
dataDir.useNewLocation=Use New Location
|
dataDir.useNewLocation=Use New Location
|
||||||
dataDir.previousDir=Diretório anterior:
|
dataDir.previousDir=Diretório anterior:
|
||||||
|
@ -589,7 +589,7 @@ ingester.lookup.error=Ocorreu um erro durante a procura por esse item.
|
||||||
|
|
||||||
db.dbCorrupted=O banco de dados Zotero '%S' parece ter sido corrompido.
|
db.dbCorrupted=O banco de dados Zotero '%S' parece ter sido corrompido.
|
||||||
db.dbCorrupted.restart=Por favor, reinicie o Firefox para tentar uma restauração automática a partir da última cópia de segurança.
|
db.dbCorrupted.restart=Por favor, reinicie o Firefox para tentar uma restauração automática a partir da última cópia de segurança.
|
||||||
db.dbCorruptedNoBackup=The Zotero database '%S' appears to have become corrupted, and no automatic backup is available.\n\nA new database has been created. The damaged file was saved to your Zotero data directory.
|
db.dbCorruptedNoBackup=O banco de dados '% S' do Zotero parece estar corrompido e nenhum backup automático está disponível.\n\nUm novo banco de dados foi criado. Os arquivos corrompidos foram salvos na pasta de dados do Zotero.
|
||||||
db.dbRestored=The Zotero database '%1$S' appears to have become corrupted.\n\nYour data was restored from the last automatic backup made on %2$S at %3$S. The damaged file was saved to your Zotero data directory.
|
db.dbRestored=The Zotero database '%1$S' appears to have become corrupted.\n\nYour data was restored from the last automatic backup made on %2$S at %3$S. The damaged file was saved to your Zotero data directory.
|
||||||
db.dbRestoreFailed=The Zotero database '%S' appears to have become corrupted, and an attempt to restore from the last automatic backup failed.\n\nA new database has been created. The damaged file was saved to your Zotero data directory.
|
db.dbRestoreFailed=The Zotero database '%S' appears to have become corrupted, and an attempt to restore from the last automatic backup failed.\n\nA new database has been created. The damaged file was saved to your Zotero data directory.
|
||||||
|
|
||||||
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Escolha essa versão
|
||||||
|
|
||||||
sync.status.notYetSynced=Ainda não sincronizado
|
sync.status.notYetSynced=Ainda não sincronizado
|
||||||
sync.status.lastSync=Última sincronização:
|
sync.status.lastSync=Última sincronização:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Contatando o servidor de sincronização
|
sync.status.loggingIn=Contatando o servidor de sincronização
|
||||||
sync.status.gettingUpdatedData=Obtendo dados atualizados do servidor de sincronização
|
sync.status.gettingUpdatedData=Obtendo dados atualizados do servidor de sincronização
|
||||||
sync.status.processingUpdatedData=Processando dados atualizados
|
sync.status.processingUpdatedData=Processando dados atualizados
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.download "Descarregar ficheiros">
|
<!ENTITY zotero.preferences.sync.fileSyncing.download "Descarregar ficheiros">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.atSyncTime "em tempo de sincronização">
|
<!ENTITY zotero.preferences.sync.fileSyncing.download.atSyncTime "em tempo de sincronização">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "à medida que é necessário">
|
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "à medida que é necessário">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.verifyServer "Verify Server">
|
<!ENTITY zotero.preferences.sync.fileSyncing.verifyServer "Verificar Servidor">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos1 "Ao usar a armazenagem Zotero, concorda ter de se reger pelos seus">
|
<!ENTITY zotero.preferences.sync.fileSyncing.tos1 "Ao usar a armazenagem Zotero, concorda ter de se reger pelos seus">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos2 "termos e condições">
|
<!ENTITY zotero.preferences.sync.fileSyncing.tos2 "termos e condições">
|
||||||
<!ENTITY zotero.preferences.sync.librariesToSync "Bibliotecas a Sincronizar">
|
<!ENTITY zotero.preferences.sync.librariesToSync "Bibliotecas a Sincronizar">
|
||||||
|
@ -80,12 +80,12 @@
|
||||||
<!ENTITY zotero.preferences.sync.reset.warning3 "para mais informação.">
|
<!ENTITY zotero.preferences.sync.reset.warning3 "para mais informação.">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory "Repor Histórico da Sincronização de Dados">
|
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory "Repor Histórico da Sincronização de Dados">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory.desc "Fundir dados locais com dados remotos, ignorando o histórico de sincronização">
|
<!ENTITY zotero.preferences.sync.reset.resetDataSyncHistory.desc "Fundir dados locais com dados remotos, ignorando o histórico de sincronização">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Restore from Online Library">
|
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Restaurar a partir da Biblioteca em Linha">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreFromServer.desc "Overwrite local Zotero data with data from the online library.">
|
<!ENTITY zotero.preferences.sync.reset.restoreFromServer.desc "Sobrepor os dados locais do Zotero com os dados da biblioteca em linha.">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreToServer "Restore to Online Library">
|
<!ENTITY zotero.preferences.sync.reset.restoreToServer "Restaurar para a Biblioteca em Linha">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreToServer.desc "Overwrite online library with local Zotero data">
|
<!ENTITY zotero.preferences.sync.reset.restoreToServer.desc "Sobrepor a biblioteca em linha com os dados locais do Zotero">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory "Reiniciar o Histórico de Sincronização de Arquivos">
|
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory "Reiniciar o Histórico de Sincronização de Arquivos">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory.desc "Compare all attachment files with the storage service">
|
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory.desc "Comparar todos os ficheiros anexos com o serviço de armazenamento">
|
||||||
<!ENTITY zotero.preferences.sync.reset "Restabelecer">
|
<!ENTITY zotero.preferences.sync.reset "Restabelecer">
|
||||||
<!ENTITY zotero.preferences.sync.reset.button "Repor…">
|
<!ENTITY zotero.preferences.sync.reset.button "Repor…">
|
||||||
|
|
||||||
|
@ -110,12 +110,12 @@
|
||||||
<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "Quando esta opção está inactiva, o Zotero inclui URL ao citar artigos de revistas científicas, de revistas e de jornais apenas se o artigo não especificar uma sequência de páginas.">
|
<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "Quando esta opção está inactiva, o Zotero inclui URL ao citar artigos de revistas científicas, de revistas e de jornais apenas se o artigo não especificar uma sequência de páginas.">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.quickCopy.caption "Cópia Rápida">
|
<!ENTITY zotero.preferences.quickCopy.caption "Cópia Rápida">
|
||||||
<!ENTITY zotero.preferences.quickCopy.defaultFormat "Default Format:">
|
<!ENTITY zotero.preferences.quickCopy.defaultFormat "Formato por Omissão:">
|
||||||
<!ENTITY zotero.preferences.quickCopy.copyAsHTML "Copiar como HTML">
|
<!ENTITY zotero.preferences.quickCopy.copyAsHTML "Copiar como HTML">
|
||||||
<!ENTITY zotero.preferences.quickCopy.siteEditor.setings "Opções Específicas do Sítio Web:">
|
<!ENTITY zotero.preferences.quickCopy.siteEditor.setings "Opções Específicas do Sítio Web:">
|
||||||
<!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath "Domínio/Caminho">
|
<!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath "Domínio/Caminho">
|
||||||
<!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g., wikipedia.org)">
|
<!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g., wikipedia.org)">
|
||||||
<!ENTITY zotero.preferences.quickCopy.siteEditor.format "Format">
|
<!ENTITY zotero.preferences.quickCopy.siteEditor.format "Formato">
|
||||||
<!ENTITY zotero.preferences.quickCopy.siteEditor.locale "Língua">
|
<!ENTITY zotero.preferences.quickCopy.siteEditor.locale "Língua">
|
||||||
<!ENTITY zotero.preferences.quickCopy.dragLimit "Desactivar a Cópia Rápida ao arrastar mais do que">
|
<!ENTITY zotero.preferences.quickCopy.dragLimit "Desactivar a Cópia Rápida ao arrastar mais do que">
|
||||||
|
|
||||||
|
@ -126,8 +126,8 @@
|
||||||
<!ENTITY zotero.preferences.cite.wordProcessors.getPlugins "Obter extensões de processadores de texto…">
|
<!ENTITY zotero.preferences.cite.wordProcessors.getPlugins "Obter extensões de processadores de texto…">
|
||||||
<!ENTITY zotero.preferences.cite.wordProcessors.getPlugins.url "http://www.zotero.org/support/word_processor_plugin_installation_for_zotero_2.1">
|
<!ENTITY zotero.preferences.cite.wordProcessors.getPlugins.url "http://www.zotero.org/support/word_processor_plugin_installation_for_zotero_2.1">
|
||||||
<!ENTITY zotero.preferences.cite.wordProcessors.useClassicAddCitationDialog "Usar a caixa de diálogo Adicionar Citação clássica">
|
<!ENTITY zotero.preferences.cite.wordProcessors.useClassicAddCitationDialog "Usar a caixa de diálogo Adicionar Citação clássica">
|
||||||
<!ENTITY zotero.preferences.styleEditor "Style Editor">
|
<!ENTITY zotero.preferences.styleEditor "Editor de Estilos">
|
||||||
<!ENTITY zotero.preferences.stylePreview "Style Preview">
|
<!ENTITY zotero.preferences.stylePreview "Antevisão de Estilos">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.cite.styles.styleManager "Gestor de Estilos">
|
<!ENTITY zotero.preferences.cite.styles.styleManager "Gestor de Estilos">
|
||||||
<!ENTITY zotero.preferences.cite.styles.styleManager.title "Título">
|
<!ENTITY zotero.preferences.cite.styles.styleManager.title "Título">
|
||||||
|
@ -176,7 +176,7 @@
|
||||||
<!ENTITY zotero.preferences.advanced.filesAndFolders "Ficheiros e Pastas">
|
<!ENTITY zotero.preferences.advanced.filesAndFolders "Ficheiros e Pastas">
|
||||||
<!ENTITY zotero.preferences.advanced.keys "Atalhos">
|
<!ENTITY zotero.preferences.advanced.keys "Atalhos">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.advanced.advancedConfiguration "Advanced Configuration">
|
<!ENTITY zotero.preferences.advanced.advancedConfiguration "Configuração Avançada">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.prefpane.locate "Localizar">
|
<!ENTITY zotero.preferences.prefpane.locate "Localizar">
|
||||||
<!ENTITY zotero.preferences.locate.locateEngineManager "Gestor do Motor de Localização de Artigos">
|
<!ENTITY zotero.preferences.locate.locateEngineManager "Gestor do Motor de Localização de Artigos">
|
||||||
|
@ -194,7 +194,7 @@
|
||||||
<!ENTITY zotero.preferences.dataDir.useProfile "Usar a pasta de perfil">
|
<!ENTITY zotero.preferences.dataDir.useProfile "Usar a pasta de perfil">
|
||||||
<!ENTITY zotero.preferences.dataDir.custom "Personalizada:">
|
<!ENTITY zotero.preferences.dataDir.custom "Personalizada:">
|
||||||
<!ENTITY zotero.preferences.dataDir.choose "Escolher…">
|
<!ENTITY zotero.preferences.dataDir.choose "Escolher…">
|
||||||
<!ENTITY zotero.preferences.dataDir.viaCommandLine "(specified via command line)">
|
<!ENTITY zotero.preferences.dataDir.viaCommandLine "(especificado através da linha de comandos)">
|
||||||
<!ENTITY zotero.preferences.dataDir.reveal "Mostrar Pasta de Dados">
|
<!ENTITY zotero.preferences.dataDir.reveal "Mostrar Pasta de Dados">
|
||||||
<!ENTITY zotero.preferences.dataDir.migrate "Migrar Para Nova Localização Por Omissão…">
|
<!ENTITY zotero.preferences.dataDir.migrate "Migrar Para Nova Localização Por Omissão…">
|
||||||
|
|
||||||
|
@ -210,4 +210,4 @@
|
||||||
<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Repor Tradutores…">
|
<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Repor Tradutores…">
|
||||||
<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Repor Estilos…">
|
<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Repor Estilos…">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.configEditor "Config Editor">
|
<!ENTITY zotero.preferences.configEditor "Editor de Configurações">
|
||||||
|
|
|
@ -69,18 +69,18 @@
|
||||||
<!ENTITY productHelp.accesskey "H">
|
<!ENTITY productHelp.accesskey "H">
|
||||||
<!ENTITY helpTroubleshootingInfo.label "Informação de Resolução de Problemas">
|
<!ENTITY helpTroubleshootingInfo.label "Informação de Resolução de Problemas">
|
||||||
<!ENTITY helpTroubleshootingInfo.accesskey "T">
|
<!ENTITY helpTroubleshootingInfo.accesskey "T">
|
||||||
<!ENTITY helpFeedbackPage.label "Discussion Forums">
|
<!ENTITY helpFeedbackPage.label "Fóruns de Discussão">
|
||||||
<!ENTITY helpFeedbackPage.accesskey "F">
|
<!ENTITY helpFeedbackPage.accesskey "F">
|
||||||
|
|
||||||
<!ENTITY helpReportErrors.label "Report Errors…">
|
<!ENTITY helpReportErrors.label "Reportar Erros…">
|
||||||
<!ENTITY helpReportErrors.accesskey "R">
|
<!ENTITY helpReportErrors.accesskey "R">
|
||||||
|
|
||||||
<!ENTITY debugOutputLogging.label "Debug Output Logging">
|
<!ENTITY debugOutputLogging.label "Depurar o Registo de Saída">
|
||||||
<!ENTITY debugOutputLogging.accesskey "L">
|
<!ENTITY debugOutputLogging.accesskey "R">
|
||||||
<!ENTITY debugOutputLogging.submit "Submit Output">
|
<!ENTITY debugOutputLogging.submit "Submeter Saída">
|
||||||
<!ENTITY debugOutputLogging.view "View Output">
|
<!ENTITY debugOutputLogging.view "Ver Saída">
|
||||||
<!ENTITY debugOutputLogging.clear "Clear Output">
|
<!ENTITY debugOutputLogging.clear "Limpar a Saída">
|
||||||
<!ENTITY debugOutputLogging.restartWithLoggingEnabled "Restart with Logging Enabled…">
|
<!ENTITY debugOutputLogging.restartWithLoggingEnabled "Reiniciar com o Registo Activado…">
|
||||||
|
|
||||||
<!ENTITY helpCheckForUpdates.label "Verificar Actualizações...">
|
<!ENTITY helpCheckForUpdates.label "Verificar Actualizações...">
|
||||||
<!ENTITY helpCheckForUpdates.accesskey "U">
|
<!ENTITY helpCheckForUpdates.accesskey "U">
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<!ENTITY zotero.general.refresh "Recarregar">
|
<!ENTITY zotero.general.refresh "Recarregar">
|
||||||
<!ENTITY zotero.general.saveAs "Guardar Como…">
|
<!ENTITY zotero.general.saveAs "Guardar Como…">
|
||||||
<!ENTITY zotero.general.advancedOptions.label "Opções Avançadas">
|
<!ENTITY zotero.general.advancedOptions.label "Opções Avançadas">
|
||||||
<!ENTITY zotero.general.tools "Tools">
|
<!ENTITY zotero.general.tools "Ferramentas">
|
||||||
<!ENTITY zotero.general.more "Mais">
|
<!ENTITY zotero.general.more "Mais">
|
||||||
<!ENTITY zotero.general.loading "Carregando…">
|
<!ENTITY zotero.general.loading "Carregando…">
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@
|
||||||
<!ENTITY zotero.item.copyAsURL "Copiar como URL">
|
<!ENTITY zotero.item.copyAsURL "Copiar como URL">
|
||||||
<!ENTITY zotero.item.deletePermanently "Remover Permanentemente…">
|
<!ENTITY zotero.item.deletePermanently "Remover Permanentemente…">
|
||||||
|
|
||||||
<!ENTITY zotero.item.tags.removeAll "Remove All Tags…">
|
<!ENTITY zotero.item.tags.removeAll "Remover Todas as Etiquetas…">
|
||||||
|
|
||||||
<!ENTITY zotero.toolbar.newNote "Nova Nota">
|
<!ENTITY zotero.toolbar.newNote "Nova Nota">
|
||||||
<!ENTITY zotero.toolbar.note.standalone "Nova Nota Isolada">
|
<!ENTITY zotero.toolbar.note.standalone "Nova Nota Isolada">
|
||||||
|
@ -158,7 +158,7 @@
|
||||||
<!ENTITY zotero.tagSelector.loadingTags "Carregando etiquetas…">
|
<!ENTITY zotero.tagSelector.loadingTags "Carregando etiquetas…">
|
||||||
<!ENTITY zotero.tagSelector.showAutomatic "Mostrar Etiquetas Automáticas">
|
<!ENTITY zotero.tagSelector.showAutomatic "Mostrar Etiquetas Automáticas">
|
||||||
<!ENTITY zotero.tagSelector.displayAllInLibrary "Mostrar Todas as Etiquetas Nesta Biblioteca">
|
<!ENTITY zotero.tagSelector.displayAllInLibrary "Mostrar Todas as Etiquetas Nesta Biblioteca">
|
||||||
<!ENTITY zotero.tagSelector.deleteAutomaticInLibrary "Delete Automatic Tags in This Library…">
|
<!ENTITY zotero.tagSelector.deleteAutomaticInLibrary "Remover Etiquetas Automáticas Nesta Biblioteca…">
|
||||||
<!ENTITY zotero.tagSelector.clearAll "Desseleccionar Todas">
|
<!ENTITY zotero.tagSelector.clearAll "Desseleccionar Todas">
|
||||||
<!ENTITY zotero.tagSelector.assignColor "Atribuir Cor...">
|
<!ENTITY zotero.tagSelector.assignColor "Atribuir Cor...">
|
||||||
<!ENTITY zotero.tagSelector.renameTag "Renomear a Etiqueta...">
|
<!ENTITY zotero.tagSelector.renameTag "Renomear a Etiqueta...">
|
||||||
|
@ -240,7 +240,7 @@
|
||||||
|
|
||||||
<!ENTITY zotero.integration.references.label "Referências na Bibliografia">
|
<!ENTITY zotero.integration.references.label "Referências na Bibliografia">
|
||||||
|
|
||||||
<!ENTITY zotero.sync.stop "Stop Sync">
|
<!ENTITY zotero.sync.stop "Parar Sincronização">
|
||||||
<!ENTITY zotero.sync.error "Erro de Sincronização">
|
<!ENTITY zotero.sync.error "Erro de Sincronização">
|
||||||
<!ENTITY zotero.sync.storage.progress "Progresso:">
|
<!ENTITY zotero.sync.storage.progress "Progresso:">
|
||||||
<!ENTITY zotero.sync.storage.downloads "Descarregamentos:">
|
<!ENTITY zotero.sync.storage.downloads "Descarregamentos:">
|
||||||
|
|
|
@ -18,8 +18,8 @@ general.unknownErrorOccurred=Ocorreu um erro desconhecido.
|
||||||
general.invalidResponseServer=Resposta do servidor inválida.
|
general.invalidResponseServer=Resposta do servidor inválida.
|
||||||
general.tryAgainLater=Por favor volte a tentar dentro de alguns minutos.
|
general.tryAgainLater=Por favor volte a tentar dentro de alguns minutos.
|
||||||
general.serverError=O servidor assinalou um erro. Por favor tente de novo.
|
general.serverError=O servidor assinalou um erro. Por favor tente de novo.
|
||||||
general.pleaseRestart=Please restart %S.
|
general.pleaseRestart=Por favor reinicie %S.
|
||||||
general.pleaseRestartAndTryAgain=Please restart %S and try again.
|
general.pleaseRestartAndTryAgain=Por favor reinicie %S e tente novamente.
|
||||||
general.checkForUpdate=Verificar Actualizações
|
general.checkForUpdate=Verificar Actualizações
|
||||||
general.actionCannotBeUndone=Esta acção não pode ser desfeita.
|
general.actionCannotBeUndone=Esta acção não pode ser desfeita.
|
||||||
general.install=Instalar
|
general.install=Instalar
|
||||||
|
@ -94,7 +94,7 @@ upgrade.nonupgradeableDB2=Para continuar, actualize a sua base da dados usando p
|
||||||
|
|
||||||
errorReport.reportError=Reportar Erro...
|
errorReport.reportError=Reportar Erro...
|
||||||
errorReport.reportErrors=Reportar Erros...
|
errorReport.reportErrors=Reportar Erros...
|
||||||
errorReport.reportInstructions=You can report this error by selecting "%S" from the Help menu.
|
errorReport.reportInstructions=Pode reportar este erro seleccionando "%S" no menu de Ajuda.
|
||||||
errorReport.followingReportWillBeSubmitted=O seguinte relatório será submetido:
|
errorReport.followingReportWillBeSubmitted=O seguinte relatório será submetido:
|
||||||
errorReport.noErrorsLogged=Não foram registados erros desde o arranque de %S.
|
errorReport.noErrorsLogged=Não foram registados erros desde o arranque de %S.
|
||||||
errorReport.advanceMessage=Carregue em %S para enviar o relatório aos desenvolvedores do Zotero.
|
errorReport.advanceMessage=Carregue em %S para enviar o relatório aos desenvolvedores do Zotero.
|
||||||
|
@ -123,10 +123,10 @@ dataDir.checkDirWriteAccess=Make sure you have write access to this directory an
|
||||||
dataDir.databaseCannotBeOpened=The %S database cannot be opened.
|
dataDir.databaseCannotBeOpened=The %S database cannot be opened.
|
||||||
dataDir.checkPermissions=Make sure you have read and write permissions for all files in the %1$S data directory and that security software isn’t preventing %1$S from accessing that directory.
|
dataDir.checkPermissions=Make sure you have read and write permissions for all files in the %1$S data directory and that security software isn’t preventing %1$S from accessing that directory.
|
||||||
dataDir.moveToDefaultLocation=You may be able to fix this problem by moving the data directory to the new default location in your home directory. %S will automatically detect the new location.
|
dataDir.moveToDefaultLocation=You may be able to fix this problem by moving the data directory to the new default location in your home directory. %S will automatically detect the new location.
|
||||||
dataDir.location=Data Directory: %S
|
dataDir.location=Pasta de Dados: %S
|
||||||
dataDir.notFound=The %S data directory could not be found.
|
dataDir.notFound=A pasta de dados %S não foi encontrada.
|
||||||
dataDir.notFound.defaultFound=The %S data directory could not be found at %S, but a data directory was found at %S. Use this directory instead?
|
dataDir.notFound.defaultFound=The %S data directory could not be found at %S, but a data directory was found at %S. Use this directory instead?
|
||||||
dataDir.useNewLocation=Use New Location
|
dataDir.useNewLocation=Usar Nova Localização
|
||||||
dataDir.previousDir=Pasta anterior:
|
dataDir.previousDir=Pasta anterior:
|
||||||
dataDir.default=Por omissão (%S)
|
dataDir.default=Por omissão (%S)
|
||||||
dataDir.useDefaultLocation=Usar Localização por Omissão
|
dataDir.useDefaultLocation=Usar Localização por Omissão
|
||||||
|
@ -147,7 +147,7 @@ dataDir.selectedDirEmpty.text=A pasta que seleccionou está vazia. Para mover um
|
||||||
dataDir.selectedDirEmpty.useNewDir=Usar a nova pasta?
|
dataDir.selectedDirEmpty.useNewDir=Usar a nova pasta?
|
||||||
dataDir.moveFilesToNewLocation=Assegure-se de que move os arquivos da sua pasta de dados Zotero existente para a nova localização antes de reabrir %1$S.
|
dataDir.moveFilesToNewLocation=Assegure-se de que move os arquivos da sua pasta de dados Zotero existente para a nova localização antes de reabrir %1$S.
|
||||||
dataDir.incompatibleDbVersion.title=Versão da Base de Dados Incompatível
|
dataDir.incompatibleDbVersion.title=Versão da Base de Dados Incompatível
|
||||||
dataDir.incompatibleDbVersion.text=The selected data directory is too old to be used with this version of Zotero. Please first upgrade the data directory using Zotero 4.0 for Firefox or select a different directory.
|
dataDir.incompatibleDbVersion.text=A pasta de dados seleccionada é demasiado antiga para ser usada com esta versão do Zotero. Actualize primeiro a pasta de dados usando o Zotero 4.0 para Firefox ou seleccione uma pasta diferente.
|
||||||
dataDir.migration.inProgress=Migração da pasta de dados em progresso…
|
dataDir.migration.inProgress=Migração da pasta de dados em progresso…
|
||||||
dataDir.migration.failure.title=Erro na Migração da Pasta de Dados
|
dataDir.migration.failure.title=Erro na Migração da Pasta de Dados
|
||||||
dataDir.migration.failure.partial.automatic.text=%1$S attempted to move your data directory to a new default location, but some files could not be transferred. Close any open attachment files and try again. You can also quit %2$S and attempt to move the remaining files manually.
|
dataDir.migration.failure.partial.automatic.text=%1$S attempted to move your data directory to a new default location, but some files could not be transferred. Close any open attachment files and try again. You can also quit %2$S and attempt to move the remaining files manually.
|
||||||
|
@ -215,7 +215,7 @@ pane.collections.trash=Lixo
|
||||||
pane.collections.untitled=Sem título
|
pane.collections.untitled=Sem título
|
||||||
pane.collections.unfiled=Itens por Classificar
|
pane.collections.unfiled=Itens por Classificar
|
||||||
pane.collections.duplicate=Itens duplicados
|
pane.collections.duplicate=Itens duplicados
|
||||||
pane.collections.removeLibrary=Remove Library
|
pane.collections.removeLibrary=Remover Biblioteca
|
||||||
pane.collections.removeLibrary.text=Are you sure you want to permanently remove “%S” from this computer?
|
pane.collections.removeLibrary.text=Are you sure you want to permanently remove “%S” from this computer?
|
||||||
|
|
||||||
pane.collections.menu.rename.collection=Alterar Nome da Colecção...
|
pane.collections.menu.rename.collection=Alterar Nome da Colecção...
|
||||||
|
@ -243,7 +243,7 @@ pane.tagSelector.rename.title=Alterar Nome de Etiqueta
|
||||||
pane.tagSelector.rename.message=Por favor introduza um novo nome para esta etiqueta.\n\nA etiqueta será alterada em todos os itens associados.
|
pane.tagSelector.rename.message=Por favor introduza um novo nome para esta etiqueta.\n\nA etiqueta será alterada em todos os itens associados.
|
||||||
pane.tagSelector.delete.title=Remover Etiqueta
|
pane.tagSelector.delete.title=Remover Etiqueta
|
||||||
pane.tagSelector.delete.message=Quer mesmo remover esta etiqueta?\n\nA etiqueta será removida de todos os itens.
|
pane.tagSelector.delete.message=Quer mesmo remover esta etiqueta?\n\nA etiqueta será removida de todos os itens.
|
||||||
pane.tagSelector.deleteAutomatic.title=Delete Automatic Tags
|
pane.tagSelector.deleteAutomatic.title=Remover Etiquetas Automáticas
|
||||||
pane.tagSelector.deleteAutomatic.message=Are you sure you want to delete %1$S automatic tag in this library?;Are you sure you want to delete %1$S automatic tags in this library?
|
pane.tagSelector.deleteAutomatic.message=Are you sure you want to delete %1$S automatic tag in this library?;Are you sure you want to delete %1$S automatic tags in this library?
|
||||||
pane.tagSelector.numSelected.none=0 etiquetas seleccionadas
|
pane.tagSelector.numSelected.none=0 etiquetas seleccionadas
|
||||||
pane.tagSelector.numSelected.singular=%S etiqueta seleccionada
|
pane.tagSelector.numSelected.singular=%S etiqueta seleccionada
|
||||||
|
@ -253,7 +253,7 @@ pane.tagSelector.maxColoredTags=Apenas %S etiquetas por cada biblioteca podem te
|
||||||
tagColorChooser.numberKeyInstructions=Pode adicionar esta etiqueta aos itens seleccionados carregando na tecla $NUMBER do teclado.
|
tagColorChooser.numberKeyInstructions=Pode adicionar esta etiqueta aos itens seleccionados carregando na tecla $NUMBER do teclado.
|
||||||
tagColorChooser.maxTags=Pode-se atribuir cores a até %S etiquetas por biblioteca.
|
tagColorChooser.maxTags=Pode-se atribuir cores a até %S etiquetas por biblioteca.
|
||||||
|
|
||||||
pane.items.intro.text1=Welcome to %S!
|
pane.items.intro.text1=Bem-vindo ao %S!
|
||||||
pane.items.intro.text2=View the [Quick Start Guide] to learn how to begin building your library, and be sure to [install a %S] so you can add items to %S as you browse the web.
|
pane.items.intro.text2=View the [Quick Start Guide] to learn how to begin building your library, and be sure to [install a %S] so you can add items to %S as you browse the web.
|
||||||
pane.items.intro.text3=Already using %S on another computer? [Set up syncing] to pick up right where you left off.
|
pane.items.intro.text3=Already using %S on another computer? [Set up syncing] to pick up right where you left off.
|
||||||
|
|
||||||
|
@ -589,9 +589,9 @@ ingester.lookup.error=Ocorreu um erro ao localizar este item.
|
||||||
|
|
||||||
db.dbCorrupted=A base de dados '%S' parece estar corrompida.
|
db.dbCorrupted=A base de dados '%S' parece estar corrompida.
|
||||||
db.dbCorrupted.restart=Por favor reinicie o Firefox para que uma recuperação da última cópia de segurança seja tentada.
|
db.dbCorrupted.restart=Por favor reinicie o Firefox para que uma recuperação da última cópia de segurança seja tentada.
|
||||||
db.dbCorruptedNoBackup=The Zotero database '%S' appears to have become corrupted, and no automatic backup is available.\n\nA new database has been created. The damaged file was saved to your Zotero data directory.
|
db.dbCorruptedNoBackup=A base de dados Zotero '%S' parece ter ficado corrompida e não está disponível nenhuma cópia de segurança.\n\nFoi criada uma nova base de dados. O arquivo danificado foi guardado na sua pasta de dados Zotero.
|
||||||
db.dbRestored=The Zotero database '%1$S' appears to have become corrupted.\n\nYour data was restored from the last automatic backup made on %2$S at %3$S. The damaged file was saved to your Zotero data directory.
|
db.dbRestored=A base de dados Zotero '%1$S' parece ter ficado corrompida.\n\nOs seus dados foram recuperados a partir da última cópia de segurança, realizada em %2$S às %3$S. O arquivo danificado foi guardado na sua pasta de dados Zotero.
|
||||||
db.dbRestoreFailed=The Zotero database '%S' appears to have become corrupted, and an attempt to restore from the last automatic backup failed.\n\nA new database has been created. The damaged file was saved to your Zotero data directory.
|
db.dbRestoreFailed=A base de dados Zotero '%S' parece ter ficado corrompida e falhou a tentativa de recuperar os seus dados a partir da última cópia de segurança automática.\n\nFoi criada uma nova base de dados. O arquivo danificado foi guardado na sua pasta de dados Zotero.
|
||||||
|
|
||||||
db.integrityCheck.passed=Não foram encontrados erros na base de dados.
|
db.integrityCheck.passed=Não foram encontrados erros na base de dados.
|
||||||
db.integrityCheck.failed=Encontraram-se erros na base de dados do Zotero!
|
db.integrityCheck.failed=Encontraram-se erros na base de dados do Zotero!
|
||||||
|
@ -622,9 +622,9 @@ zotero.preferences.sync.reset.userInfoMissing=Tem de introduzir um nome de utili
|
||||||
zotero.preferences.sync.reset.restoreFromServer=Todos os dados desta cópia do Zotero serão removidos e substituídos no servidor Zotero por dados pertencentes ao utilizador «%S».
|
zotero.preferences.sync.reset.restoreFromServer=Todos os dados desta cópia do Zotero serão removidos e substituídos no servidor Zotero por dados pertencentes ao utilizador «%S».
|
||||||
zotero.preferences.sync.reset.replaceLocalData=Substituir Dados Locais
|
zotero.preferences.sync.reset.replaceLocalData=Substituir Dados Locais
|
||||||
zotero.preferences.sync.reset.restartToComplete=O Firefox tem de ser reiniciado para completar o processo de reposição.
|
zotero.preferences.sync.reset.restartToComplete=O Firefox tem de ser reiniciado para completar o processo de reposição.
|
||||||
zotero.preferences.sync.reset.restoreToServer=%1$S will replace data in “%2$S” on %3$S with data from this computer.
|
zotero.preferences.sync.reset.restoreToServer=%1$S substituirá dados em “%2$S” no %3$S por dados deste computador.
|
||||||
zotero.preferences.sync.reset.restoreToServer.button=Replace Data in Online Library
|
zotero.preferences.sync.reset.restoreToServer.button=Replace Data in Online Library
|
||||||
zotero.preferences.sync.reset.fileSyncHistory=On the next sync, %1$S will check all attachment files in “%2$S” against the storage service. Any remote attachment files that are missing locally will be downloaded, and local attachment files missing remotely will be uploaded.\n\nThis option is not necessary during normal usage.
|
zotero.preferences.sync.reset.fileSyncHistory=Durante a próxima sincronização, %1$S verificará todos os arquivos de anexo em “%2$S” comparando-os com os do serviço de armazenamento. Serão descarregados quaisquer arquivos de anexo que estejam em falta localmente e serão carregados quaisquer arquivos de anexo locais que estão em falta remotamente.\n\nEsta opção não é necessária durante a utilização normal.
|
||||||
zotero.preferences.sync.reset.fileSyncHistory.cleared=The file sync history for “%S” has been cleared.
|
zotero.preferences.sync.reset.fileSyncHistory.cleared=The file sync history for “%S” has been cleared.
|
||||||
|
|
||||||
zotero.preferences.search.rebuildIndex=Reconstruir Índice
|
zotero.preferences.search.rebuildIndex=Reconstruir Índice
|
||||||
|
@ -652,8 +652,8 @@ zotero.preferences.search.pdf.toolsDownloadError=Ocorreu um erro ao tentar desca
|
||||||
zotero.preferences.search.pdf.tryAgainOrViewManualInstructions=Por favor tente mais tarde ou consulte a documentação da instalação manual.
|
zotero.preferences.search.pdf.tryAgainOrViewManualInstructions=Por favor tente mais tarde ou consulte a documentação da instalação manual.
|
||||||
zotero.preferences.export.quickCopy.citationStyles=Citation Styles
|
zotero.preferences.export.quickCopy.citationStyles=Citation Styles
|
||||||
zotero.preferences.export.quickCopy.exportFormats=Formatos de Exportação
|
zotero.preferences.export.quickCopy.exportFormats=Formatos de Exportação
|
||||||
zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to quickly export items in a given format. You can copy selected items to the clipboard by pressing %S or drag items directly into a text box in another program.
|
zotero.preferences.export.quickCopy.instructions=A Cópia Rápida permite-lhe exportar rapidamente itens num dado formato. Pode copiar para os recortes as referências seleccionadas pressionando %S, mas também pode arrastar directamente os itens para uma caixa de texto de um outro programa.
|
||||||
zotero.preferences.export.quickCopy.citationInstructions=For citation styles, you can copy citations or footnotes by pressing %S or holding down Shift before dragging items.
|
zotero.preferences.export.quickCopy.citationInstructions=Para estilos de citação, pode copiar citações ou notas de rodapé pressionando %S ou pressionando Shift antes de arrastar itens.
|
||||||
|
|
||||||
zotero.preferences.wordProcessors.installationSuccess=A instalação teve sucesso.
|
zotero.preferences.wordProcessors.installationSuccess=A instalação teve sucesso.
|
||||||
zotero.preferences.wordProcessors.installationError=A instalação não teve sucesso, pois ocorreu um erro. Por favor assegure-se de que o %1$S está fechado e depois reinicie %2$S.
|
zotero.preferences.wordProcessors.installationError=A instalação não teve sucesso, pois ocorreu um erro. Por favor assegure-se de que o %1$S está fechado e depois reinicie %2$S.
|
||||||
|
@ -677,7 +677,7 @@ zotero.preferences.advanced.migrateDataDir.title=Migrar Pasta de Dados
|
||||||
zotero.preferences.advanced.migrateDataDir.directoryExists1=Já existe uma pasta em %S.
|
zotero.preferences.advanced.migrateDataDir.directoryExists1=Já existe uma pasta em %S.
|
||||||
zotero.preferences.advanced.migrateDataDir.directoryExists2=Por favor mova-a ou dê-lhe um novo nome e tente de novo.
|
zotero.preferences.advanced.migrateDataDir.directoryExists2=Por favor mova-a ou dê-lhe um novo nome e tente de novo.
|
||||||
zotero.preferences.advanced.migrateDataDir.directoryWillBeMoved=Your %1$S data directory will be moved to %2$S.
|
zotero.preferences.advanced.migrateDataDir.directoryWillBeMoved=Your %1$S data directory will be moved to %2$S.
|
||||||
zotero.preferences.advanced.migrateDataDir.appMustBeRestarted=%S must be restarted to complete the migration.
|
zotero.preferences.advanced.migrateDataDir.appMustBeRestarted=O %S tem de ser reiniciado para completar a migração.
|
||||||
zotero.preferences.advanced.migrateDataDir.manualMigration=You can also quit %1$S and move your existing data directory to %2$S manually, which may be faster for larger data directories. %3$S will automatically detect the new location.
|
zotero.preferences.advanced.migrateDataDir.manualMigration=You can also quit %1$S and move your existing data directory to %2$S manually, which may be faster for larger data directories. %3$S will automatically detect the new location.
|
||||||
|
|
||||||
zotero.debugOutputLogging=Debug Output Logging
|
zotero.debugOutputLogging=Debug Output Logging
|
||||||
|
@ -692,7 +692,7 @@ dragAndDrop.filesNotFound=Os seguintes arquivos não foram encontrados e, por is
|
||||||
|
|
||||||
fileInterface.importing=Importando…
|
fileInterface.importing=Importando…
|
||||||
fileInterface.importComplete=Importação Completa
|
fileInterface.importComplete=Importação Completa
|
||||||
fileInterface.itemsWereImported=%1$S item was imported;%1$S items were imported
|
fileInterface.itemsWereImported=%1$S item foi importado;%1$S itens foram importados
|
||||||
fileInterface.itemsExported=Exportando itens...
|
fileInterface.itemsExported=Exportando itens...
|
||||||
fileInterface.import=Importar
|
fileInterface.import=Importar
|
||||||
fileInterface.export=Exportar
|
fileInterface.export=Exportar
|
||||||
|
@ -710,7 +710,7 @@ fileInterface.exportError=Ocorreu um erro ao tentar exportar o arquivo seleccion
|
||||||
fileInterface.importOPML=Importar Feeds a partir de OPML
|
fileInterface.importOPML=Importar Feeds a partir de OPML
|
||||||
fileInterface.OPMLFeedFilter=Lista de Feeds OPML
|
fileInterface.OPMLFeedFilter=Lista de Feeds OPML
|
||||||
|
|
||||||
quickCopy.copyAs=Copy as %S
|
quickCopy.copyAs=Copiar como %S
|
||||||
|
|
||||||
quickSearch.mode.titleCreatorYear=Título, Criador, Ano
|
quickSearch.mode.titleCreatorYear=Título, Criador, Ano
|
||||||
quickSearch.mode.fieldsAndTags=Todos os Campos e Etiquetas
|
quickSearch.mode.fieldsAndTags=Todos os Campos e Etiquetas
|
||||||
|
@ -853,7 +853,7 @@ integration.error.deletePipe=Não foi possível inicializar o canal que o Zotero
|
||||||
integration.error.invalidStyle=O estilo que seleccionou não parece ser válido. Se foi você que o criou, assegure-se por favor de que o validou tal como descrito em http://zotero.org/support/dev/citation_styles. Em alternativa pode escolher outro estilo.
|
integration.error.invalidStyle=O estilo que seleccionou não parece ser válido. Se foi você que o criou, assegure-se por favor de que o validou tal como descrito em http://zotero.org/support/dev/citation_styles. Em alternativa pode escolher outro estilo.
|
||||||
integration.error.fieldTypeMismatch=O Zotero não pode actualizar este documento porque ele foi criado numa aplicação de processamento de texto diferente, com uma codificação de campos incompatível. Para tornar um documento compatível tanto com o Word como com o LibreOffice, abra o documento no processador de texto no qual foi originalmente criado e alterne o tipo de campo para Marcadores nas Preferências de Documento Zotero.
|
integration.error.fieldTypeMismatch=O Zotero não pode actualizar este documento porque ele foi criado numa aplicação de processamento de texto diferente, com uma codificação de campos incompatível. Para tornar um documento compatível tanto com o Word como com o LibreOffice, abra o documento no processador de texto no qual foi originalmente criado e alterne o tipo de campo para Marcadores nas Preferências de Documento Zotero.
|
||||||
integration.error.styleMissing=The citation style used in this document is missing. Would you like to install it from %S?
|
integration.error.styleMissing=The citation style used in this document is missing. Would you like to install it from %S?
|
||||||
integration.error.styleNotFound=The citation style %S could not be found.
|
integration.error.styleNotFound=O estilo de citação %S não pode ser encontrado.
|
||||||
|
|
||||||
integration.replace=Substituir este campo Zotero?
|
integration.replace=Substituir este campo Zotero?
|
||||||
integration.missingItem.single=Este item já não existe na sua base de dados Zotero. Deseja escolher um item para o substituir?
|
integration.missingItem.single=Este item já não existe na sua base de dados Zotero. Deseja escolher um item para o substituir?
|
||||||
|
@ -887,7 +887,7 @@ styles.abbreviations.missingInfo=O ficheiro de abreviaturas «%1$S» não especi
|
||||||
|
|
||||||
sync.sync=Sincronizar
|
sync.sync=Sincronizar
|
||||||
sync.syncWith=Sincronizar com %S
|
sync.syncWith=Sincronizar com %S
|
||||||
sync.stopping=Stopping…
|
sync.stopping=Parando…
|
||||||
sync.cancel=Cancelar Sincronização
|
sync.cancel=Cancelar Sincronização
|
||||||
sync.openSyncPreferences=Abrir Preferências de Sincronização...
|
sync.openSyncPreferences=Abrir Preferências de Sincronização...
|
||||||
sync.resetGroupAndSync=Reiniciar Grupo e Sincronização
|
sync.resetGroupAndSync=Reiniciar Grupo e Sincronização
|
||||||
|
@ -921,7 +921,7 @@ sync.error.emptyResponseServer=Resposta do servidor vazia.
|
||||||
sync.error.invalidCharsFilename=O nome de arquivo '%S' contém caracteres inválidos.\n\nRenomeie o ficheiro e tente de novo. Se renomear o ficheiro através do SO, terá de o voltar a ligar ao Zotero.
|
sync.error.invalidCharsFilename=O nome de arquivo '%S' contém caracteres inválidos.\n\nRenomeie o ficheiro e tente de novo. Se renomear o ficheiro através do SO, terá de o voltar a ligar ao Zotero.
|
||||||
sync.error.apiKeyInvalid=%S não conseguiu autenticar a sua conta. Por favor introduza de novo os pormenores da sua conta.
|
sync.error.apiKeyInvalid=%S não conseguiu autenticar a sua conta. Por favor introduza de novo os pormenores da sua conta.
|
||||||
|
|
||||||
account.unlinkWarning=Unlinking your account will prevent %S from syncing your data.
|
account.unlinkWarning=Desligar a sua conta impedirá o %S de sincronizar os seus dados.
|
||||||
account.unlinkWarning.removeData=Remover os meus dados %S deste computador
|
account.unlinkWarning.removeData=Remover os meus dados %S deste computador
|
||||||
account.unlinkWarning.button=Desligar Conta
|
account.unlinkWarning.button=Desligar Conta
|
||||||
account.warning.emptyLibrary=You are about to sync the ‘%1$S’ account to an empty %2$S database. This could happen if you removed your previous database or if the location of your %2$S data directory changed.
|
account.warning.emptyLibrary=You are about to sync the ‘%1$S’ account to an empty %2$S database. This could happen if you removed your previous database or if the location of your %2$S data directory changed.
|
||||||
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Escolher esta versão
|
||||||
|
|
||||||
sync.status.notYetSynced=Por sincronizar
|
sync.status.notYetSynced=Por sincronizar
|
||||||
sync.status.lastSync=Última sincronização:
|
sync.status.lastSync=Última sincronização:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Entrando no servidor de sincronização
|
sync.status.loggingIn=Entrando no servidor de sincronização
|
||||||
sync.status.gettingUpdatedData=Obtendo dados actualizados do servidor de sincronização
|
sync.status.gettingUpdatedData=Obtendo dados actualizados do servidor de sincronização
|
||||||
sync.status.processingUpdatedData=Processando dados actualizados
|
sync.status.processingUpdatedData=Processando dados actualizados
|
||||||
|
@ -1105,15 +1107,15 @@ locate.libraryLookup.label=Pesquisa na Biblioteca
|
||||||
locate.libraryLookup.tooltip=Consultar este item usando o resolvedor Open URL seleccionado
|
locate.libraryLookup.tooltip=Consultar este item usando o resolvedor Open URL seleccionado
|
||||||
locate.manageLocateEngines=Manage Lookup Engines...
|
locate.manageLocateEngines=Manage Lookup Engines...
|
||||||
|
|
||||||
standalone.corruptInstallation=Your Zotero installation appears to be corrupted due to a failed auto-update. While Zotero may continue to function, to avoid potential bugs, please download the latest version of Zotero from https://www.zotero.org/download as soon as possible.
|
standalone.corruptInstallation=A instalação do Zotero parece estar corrompida devido a uma auto-actualização falhada. Apesar de o Zotero poder continuar a funcionar, para evitar possíveis erros, por favor descarregue a última versão do Zotero a partir de https://www.zotero.org/download assim que possível.
|
||||||
standalone.addonInstallationFailed.title=Instalação da Extensão Falhou
|
standalone.addonInstallationFailed.title=Instalação da Extensão Falhou
|
||||||
standalone.addonInstallationFailed.body=The add-on "%S" could not be installed. It may be incompatible with this version of Zotero.
|
standalone.addonInstallationFailed.body=O extra "%S" não pode ser instalado. Pode ser incompatível com esta versão do Zotero.
|
||||||
standalone.rootWarning=You appear to be running Zotero 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 writable by your user account.
|
standalone.rootWarning=You appear to be running Zotero 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 writable by your user account.
|
||||||
standalone.rootWarning.exit=Sair
|
standalone.rootWarning.exit=Sair
|
||||||
standalone.rootWarning.continue=Continuar
|
standalone.rootWarning.continue=Continuar
|
||||||
standalone.updateMessage=Está disponível uma actualização recomendada mas não tem permissão para a instalar. Para actualizar automaticamente, modifique as permissões da pasta de programa do Zotero de modo a poder nela escrever a partir da sua conta de utilizador.
|
standalone.updateMessage=Está disponível uma actualização recomendada mas não tem permissão para a instalar. Para actualizar automaticamente, modifique as permissões da pasta de programa do Zotero de modo a poder nela escrever a partir da sua conta de utilizador.
|
||||||
|
|
||||||
connector.name=%S Connector
|
connector.name=Conector %S
|
||||||
connector.error.title=Erro no Conector Zotero
|
connector.error.title=Erro no Conector Zotero
|
||||||
connector.standaloneOpen=Não foi possível aceder à sua base de dados, pois o Zotero Standalone está aberto. Por favor veja os seus itens nessa aplicação.
|
connector.standaloneOpen=Não foi possível aceder à sua base de dados, pois o Zotero Standalone está aberto. Por favor veja os seus itens nessa aplicação.
|
||||||
connector.loadInProgress=O Zotero Autónomo foi lançado mas não está acessível. Se obteve um erro ao abrir o Zotero Autónomo, reinicie o Firefox.
|
connector.loadInProgress=O Zotero Autónomo foi lançado mas não está acessível. Se obteve um erro ao abrir o Zotero Autónomo, reinicie o Firefox.
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Alege această versiune
|
||||||
|
|
||||||
sync.status.notYetSynced=Încă nesincronizate
|
sync.status.notYetSynced=Încă nesincronizate
|
||||||
sync.status.lastSync=Ultima sincronizare:
|
sync.status.lastSync=Ultima sincronizare:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Autentificare la serverul de sincronizare
|
sync.status.loggingIn=Autentificare la serverul de sincronizare
|
||||||
sync.status.gettingUpdatedData=Obține datele actualizate de la serverul de sincronizare
|
sync.status.gettingUpdatedData=Obține datele actualizate de la serverul de sincronizare
|
||||||
sync.status.processingUpdatedData=Procesează datele actualizate de la serverul de sincronizare
|
sync.status.processingUpdatedData=Procesează datele actualizate de la serverul de sincronizare
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<!ENTITY zotero.version "версия">
|
<!ENTITY zotero.version "версия">
|
||||||
<!ENTITY zotero.whatsNew "What’s new">
|
<!ENTITY zotero.whatsNew "Новое">
|
||||||
<!ENTITY zotero.createdby "Авторы:">
|
<!ENTITY zotero.createdby "Авторы:">
|
||||||
<!ENTITY zotero.director "Директор:">
|
<!ENTITY zotero.director "Директор:">
|
||||||
<!ENTITY zotero.directors "Руководители:">
|
<!ENTITY zotero.directors "Руководители:">
|
||||||
|
|
|
@ -19,9 +19,9 @@
|
||||||
<!ENTITY zotero.preferences.fontSize.notes "Размер шрифта заметок:">
|
<!ENTITY zotero.preferences.fontSize.notes "Размер шрифта заметок:">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.miscellaneous "Разное">
|
<!ENTITY zotero.preferences.miscellaneous "Разное">
|
||||||
<!ENTITY zotero.preferences.autoUpdate "Автоматически проверять на наличие обновленных трансляторов и стилей">
|
<!ENTITY zotero.preferences.autoUpdate "Автоматически проверять на наличие обновленных импóртеров и стилей">
|
||||||
<!ENTITY zotero.preferences.updateNow "Обновить сейчас">
|
<!ENTITY zotero.preferences.updateNow "Обновить сейчас">
|
||||||
<!ENTITY zotero.preferences.reportTranslationFailure "Сообщить о неработающих трансляторах сайта">
|
<!ENTITY zotero.preferences.reportTranslationFailure "Сообщить о неработающих импóртерах сайта">
|
||||||
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader "Разрешить zotero.org модифицировать содержание на основе текущей версии Zotero">
|
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader "Разрешить zotero.org модифицировать содержание на основе текущей версии Zotero">
|
||||||
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader.tooltip "Если включено, текущая версия Zotero будет добавляться к HTTP запросам на zotero.org.">
|
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader.tooltip "Если включено, текущая версия Zotero будет добавляться к HTTP запросам на zotero.org.">
|
||||||
<!ENTITY zotero.preferences.parseRISRefer "Использовать Zotero для загруженных файлов RIS/Refer">
|
<!ENTITY zotero.preferences.parseRISRefer "Использовать Zotero для загруженных файлов RIS/Refer">
|
||||||
|
@ -87,7 +87,7 @@
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory "Сбросить историю синхронизации файлов">
|
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory "Сбросить историю синхронизации файлов">
|
||||||
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory.desc "Сравнить все связанные файлы с данными в хранилище">
|
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory.desc "Сравнить все связанные файлы с данными в хранилище">
|
||||||
<!ENTITY zotero.preferences.sync.reset "Сбросить">
|
<!ENTITY zotero.preferences.sync.reset "Сбросить">
|
||||||
<!ENTITY zotero.preferences.sync.reset.button "Сбросить настройки…">
|
<!ENTITY zotero.preferences.sync.reset.button "Сбросить…">
|
||||||
|
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.prefpane.search "Поиск">
|
<!ENTITY zotero.preferences.prefpane.search "Поиск">
|
||||||
|
@ -206,8 +206,8 @@
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.dbMaintenance "Поддержка БД">
|
<!ENTITY zotero.preferences.dbMaintenance "Поддержка БД">
|
||||||
<!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Проверить целостность БД">
|
<!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Проверить целостность БД">
|
||||||
<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Сбросить настройки конвертеров и стилей…">
|
<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Сбросить настройки импóртеров и стилей…">
|
||||||
<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Сбросить настройки конвертеров…">
|
<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Сбросить настройки импóртеров…">
|
||||||
<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Сбросить настройки стилей…">
|
<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Сбросить настройки стилей…">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.configEditor "Редактор конфигурации">
|
<!ENTITY zotero.preferences.configEditor "Редактор конфигурации">
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!ENTITY zotero.search.name "Название">
|
<!ENTITY zotero.search.name "Название:">
|
||||||
|
|
||||||
<!ENTITY zotero.search.searchInLibrary "Искать в библиотеке:">
|
<!ENTITY zotero.search.searchInLibrary "Искать в библиотеке:">
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@
|
||||||
<!ENTITY zotero.toolbar.removeItem.label "Удалить документ">
|
<!ENTITY zotero.toolbar.removeItem.label "Удалить документ">
|
||||||
<!ENTITY zotero.toolbar.newLibrary.label "Новая библиотека">
|
<!ENTITY zotero.toolbar.newLibrary.label "Новая библиотека">
|
||||||
<!ENTITY zotero.toolbar.newCollection.label "Новая подборка…">
|
<!ENTITY zotero.toolbar.newCollection.label "Новая подборка…">
|
||||||
<!ENTITY zotero.toolbar.markFeedRead.label "Mark Feed as Read">
|
<!ENTITY zotero.toolbar.markFeedRead.label "Пометить все новости прочитанными">
|
||||||
<!ENTITY zotero.toolbar.newGroup "Новая группа…">
|
<!ENTITY zotero.toolbar.newGroup "Новая группа…">
|
||||||
<!ENTITY zotero.toolbar.newSubcollection.label "Новая субподборка…">
|
<!ENTITY zotero.toolbar.newSubcollection.label "Новая субподборка…">
|
||||||
<!ENTITY zotero.toolbar.newSavedSearch.label "Новый отбор…">
|
<!ENTITY zotero.toolbar.newSavedSearch.label "Новый отбор…">
|
||||||
|
@ -124,26 +124,26 @@
|
||||||
<!ENTITY zotero.toolbar.about.label "О Zotero">
|
<!ENTITY zotero.toolbar.about.label "О Zotero">
|
||||||
<!ENTITY zotero.toolbar.advancedSearch "Расширенный поиск">
|
<!ENTITY zotero.toolbar.advancedSearch "Расширенный поиск">
|
||||||
<!ENTITY zotero.toolbar.openURL.label "Найти">
|
<!ENTITY zotero.toolbar.openURL.label "Найти">
|
||||||
<!ENTITY zotero.toolbar.openURL.tooltip "Найти через местную библиотеку">
|
<!ENTITY zotero.toolbar.openURL.tooltip "Найти в библиотеке на этом компьютере">
|
||||||
|
|
||||||
<!ENTITY zotero.toolbar.feeds.new "New Feed">
|
<!ENTITY zotero.toolbar.feeds.new "Добавить новостную ленту">
|
||||||
<!ENTITY zotero.toolbar.feeds.new.fromURL "From URL…">
|
<!ENTITY zotero.toolbar.feeds.new.fromURL "Из URL…">
|
||||||
<!ENTITY zotero.toolbar.feeds.new.fromPage "From Page…">
|
<!ENTITY zotero.toolbar.feeds.new.fromPage "Со странцы…">
|
||||||
<!ENTITY zotero.toolbar.feeds.new.fromOPML "From OPML…">
|
<!ENTITY zotero.toolbar.feeds.new.fromOPML "Из OPML…">
|
||||||
<!ENTITY zotero.toolbar.feeds.refresh "Refresh Feed">
|
<!ENTITY zotero.toolbar.feeds.refresh "Обновить новостную ленту">
|
||||||
<!ENTITY zotero.toolbar.feeds.edit "Edit Feed…">
|
<!ENTITY zotero.toolbar.feeds.edit "Редактировать новостную ленту…">
|
||||||
|
|
||||||
<!ENTITY zotero.item.add "Добавить">
|
<!ENTITY zotero.item.add "Добавить">
|
||||||
<!ENTITY zotero.item.attachment.file.show "Показать файл">
|
<!ENTITY zotero.item.attachment.file.show "Показать файл">
|
||||||
<!ENTITY zotero.item.textTransform "Трансформировать Текст">
|
<!ENTITY zotero.item.textTransform "Трансформировать Текст">
|
||||||
<!ENTITY zotero.item.textTransform.titlecase "Каждое Слово с Заглавной">
|
<!ENTITY zotero.item.textTransform.titlecase "Каждое Слово с Заглавной">
|
||||||
<!ENTITY zotero.item.textTransform.sentencecase "Как в предложении">
|
<!ENTITY zotero.item.textTransform.sentencecase "Как в предложении">
|
||||||
<!ENTITY zotero.item.creatorTransform.nameSwap "Swap First/Last Names">
|
<!ENTITY zotero.item.creatorTransform.nameSwap "Поменять местами имя и фамилию">
|
||||||
<!ENTITY zotero.item.viewOnline "View Online">
|
<!ENTITY zotero.item.viewOnline "Просмотреть он-лайн">
|
||||||
<!ENTITY zotero.item.copyAsURL "Copy as URL">
|
<!ENTITY zotero.item.copyAsURL "Скопировать в виде URL">
|
||||||
<!ENTITY zotero.item.deletePermanently "Delete Permanently…">
|
<!ENTITY zotero.item.deletePermanently "Удалить навсегда…">
|
||||||
|
|
||||||
<!ENTITY zotero.item.tags.removeAll "Remove All Tags…">
|
<!ENTITY zotero.item.tags.removeAll "Удалить все тэги…">
|
||||||
|
|
||||||
<!ENTITY zotero.toolbar.newNote "Новая заметка">
|
<!ENTITY zotero.toolbar.newNote "Новая заметка">
|
||||||
<!ENTITY zotero.toolbar.note.standalone "Новая отдельная заметка">
|
<!ENTITY zotero.toolbar.note.standalone "Новая отдельная заметка">
|
||||||
|
@ -158,7 +158,7 @@
|
||||||
<!ENTITY zotero.tagSelector.loadingTags "Загрузка тэгов...">
|
<!ENTITY zotero.tagSelector.loadingTags "Загрузка тэгов...">
|
||||||
<!ENTITY zotero.tagSelector.showAutomatic "Показывать автоматически">
|
<!ENTITY zotero.tagSelector.showAutomatic "Показывать автоматически">
|
||||||
<!ENTITY zotero.tagSelector.displayAllInLibrary "Показать все теги в библиотеке">
|
<!ENTITY zotero.tagSelector.displayAllInLibrary "Показать все теги в библиотеке">
|
||||||
<!ENTITY zotero.tagSelector.deleteAutomaticInLibrary "Delete Automatic Tags in This Library…">
|
<!ENTITY zotero.tagSelector.deleteAutomaticInLibrary "Автоматически удалить тэги в этой библиотеке…">
|
||||||
<!ENTITY zotero.tagSelector.clearAll "Отменить выбор">
|
<!ENTITY zotero.tagSelector.clearAll "Отменить выбор">
|
||||||
<!ENTITY zotero.tagSelector.assignColor "Назначить цвет…">
|
<!ENTITY zotero.tagSelector.assignColor "Назначить цвет…">
|
||||||
<!ENTITY zotero.tagSelector.renameTag "Переименовать тег…">
|
<!ENTITY zotero.tagSelector.renameTag "Переименовать тег…">
|
||||||
|
@ -180,7 +180,7 @@
|
||||||
|
|
||||||
<!ENTITY zotero.bibliography.title "Создать библиографию">
|
<!ENTITY zotero.bibliography.title "Создать библиографию">
|
||||||
<!ENTITY zotero.bibliography.style.label "Стиль цитирования:">
|
<!ENTITY zotero.bibliography.style.label "Стиль цитирования:">
|
||||||
<!ENTITY zotero.bibliography.manageStyles "Manage Styles…">
|
<!ENTITY zotero.bibliography.manageStyles "Управление стилями…">
|
||||||
<!ENTITY zotero.bibliography.locale.label "Язык:">
|
<!ENTITY zotero.bibliography.locale.label "Язык:">
|
||||||
<!ENTITY zotero.bibliography.outputMode "Режим вывода:">
|
<!ENTITY zotero.bibliography.outputMode "Режим вывода:">
|
||||||
<!ENTITY zotero.bibliography.bibliography "Библиография">
|
<!ENTITY zotero.bibliography.bibliography "Библиография">
|
||||||
|
@ -199,7 +199,7 @@
|
||||||
|
|
||||||
<!ENTITY zotero.exportOptions.title "Экспорт…">
|
<!ENTITY zotero.exportOptions.title "Экспорт…">
|
||||||
<!ENTITY zotero.exportOptions.format.label "Формат:">
|
<!ENTITY zotero.exportOptions.format.label "Формат:">
|
||||||
<!ENTITY zotero.exportOptions.translatorOptions.label "Настройки транслятора:">
|
<!ENTITY zotero.exportOptions.translatorOptions.label "Настройки преобразователя:">
|
||||||
|
|
||||||
<!ENTITY zotero.charset.label "Кодировка символов">
|
<!ENTITY zotero.charset.label "Кодировка символов">
|
||||||
<!ENTITY zotero.moreEncodings.label "Ещё кодировки">
|
<!ENTITY zotero.moreEncodings.label "Ещё кодировки">
|
||||||
|
@ -229,11 +229,11 @@
|
||||||
|
|
||||||
<!ENTITY zotero.integration.prefs.formatUsing.label "Сохранить цитаты как:">
|
<!ENTITY zotero.integration.prefs.formatUsing.label "Сохранить цитаты как:">
|
||||||
<!ENTITY zotero.integration.prefs.bookmarks.label "Закладки">
|
<!ENTITY zotero.integration.prefs.bookmarks.label "Закладки">
|
||||||
<!ENTITY zotero.integration.prefs.bookmarks.caption "Bookmarks can be shared between Word and LibreOffice, but may cause errors if accidentally modified and cannot be inserted into footnotes.">
|
<!ENTITY zotero.integration.prefs.bookmarks.caption "Механизм закладок будет работать и в Word, и в LibreOffice, но может вызывать внезапные ошибки, также он не позволяет использовать ссылки в сносках.">
|
||||||
|
|
||||||
|
|
||||||
<!ENTITY zotero.integration.prefs.automaticJournalAbbeviations.label "Use MEDLINE journal abbreviations">
|
<!ENTITY zotero.integration.prefs.automaticJournalAbbeviations.label "Использовать аббревиатуры журналов по MEDLINE">
|
||||||
<!ENTITY zotero.integration.prefs.automaticJournalAbbeviations.caption "The “Journal Abbr” field will be ignored.">
|
<!ENTITY zotero.integration.prefs.automaticJournalAbbeviations.caption "Поле «Journal Abbr» будет проигнорировано.">
|
||||||
|
|
||||||
<!ENTITY zotero.integration.showEditor.label "Показать редактор">
|
<!ENTITY zotero.integration.showEditor.label "Показать редактор">
|
||||||
<!ENTITY zotero.integration.classicView.label "Классический вид">
|
<!ENTITY zotero.integration.classicView.label "Классический вид">
|
||||||
|
@ -266,15 +266,15 @@
|
||||||
<!ENTITY zotero.proxy.recognized.disable.label "Не перенаправлять автоматически запросы через ранее определённые прокси">
|
<!ENTITY zotero.proxy.recognized.disable.label "Не перенаправлять автоматически запросы через ранее определённые прокси">
|
||||||
<!ENTITY zotero.proxy.recognized.ignore.label "Игнорировать">
|
<!ENTITY zotero.proxy.recognized.ignore.label "Игнорировать">
|
||||||
|
|
||||||
<!ENTITY zotero.feedSettings.title "Feed Settings">
|
<!ENTITY zotero.feedSettings.title "Настройки новостных лент">
|
||||||
<!ENTITY zotero.feedSettings.saveButton.label "Сохранить:">
|
<!ENTITY zotero.feedSettings.saveButton.label "Сохранить:">
|
||||||
<!ENTITY zotero.feedSettings.url.label "URL:">
|
<!ENTITY zotero.feedSettings.url.label "URL:">
|
||||||
<!ENTITY zotero.feedSettings.title.label "Заголовок:">
|
<!ENTITY zotero.feedSettings.title.label "Заголовок:">
|
||||||
<!ENTITY zotero.feedSettings.refresh.label1 "Update feed every">
|
<!ENTITY zotero.feedSettings.refresh.label1 "Обновлять каждые">
|
||||||
<!ENTITY zotero.feedSettings.refresh.label2 "час(-а)">
|
<!ENTITY zotero.feedSettings.refresh.label2 "час(-а)">
|
||||||
<!ENTITY zotero.feedSettings.cleanupUnreadAfter.label1 "Remove unread feed items after">
|
<!ENTITY zotero.feedSettings.cleanupUnreadAfter.label1 "Удалять непрочтённые записи старше">
|
||||||
<!ENTITY zotero.feedSettings.cleanupUnreadAfter.label2 "дня(-ей)">
|
<!ENTITY zotero.feedSettings.cleanupUnreadAfter.label2 "дня(-ей)">
|
||||||
<!ENTITY zotero.feedSettings.cleanupReadAfter.label1 "Remove read feed items after">
|
<!ENTITY zotero.feedSettings.cleanupReadAfter.label1 "Удалять прочтённые записи старше">
|
||||||
<!ENTITY zotero.feedSettings.cleanupReadAfter.label2 "дня(-ей)">
|
<!ENTITY zotero.feedSettings.cleanupReadAfter.label2 "дня(-ей)">
|
||||||
|
|
||||||
|
|
||||||
|
@ -312,6 +312,6 @@
|
||||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Вложения не могут быть сохранены в текущую выбранную библиотеку. Вместо этого данный элемент будет сохранен в вашей библиотеке.">
|
<!ENTITY zotero.downloadManager.saveToLibrary.description "Вложения не могут быть сохранены в текущую выбранную библиотеку. Вместо этого данный элемент будет сохранен в вашей библиотеке.">
|
||||||
<!ENTITY zotero.downloadManager.noPDFTools.description "Чтобы воспользоваться данной функцией, необходимо установить PDF утилиту, указанную в настройках Zotero.">
|
<!ENTITY zotero.downloadManager.noPDFTools.description "Чтобы воспользоваться данной функцией, необходимо установить PDF утилиту, указанную в настройках Zotero.">
|
||||||
|
|
||||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
<!ENTITY zotero.attachLink.title "Прикрепить ссылку на URI">
|
||||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
<!ENTITY zotero.attachLink.label.link "Ссылка:">
|
||||||
<!ENTITY zotero.attachLink.label.title "Заголовок:">
|
<!ENTITY zotero.attachLink.label.title "Заголовок:">
|
||||||
|
|
|
@ -67,7 +67,7 @@ general.operationInProgress=В настоящий момент Zotero выпол
|
||||||
general.operationInProgress.waitUntilFinished=Пожалуйста, подождите, пока оно закончится.
|
general.operationInProgress.waitUntilFinished=Пожалуйста, подождите, пока оно закончится.
|
||||||
general.operationInProgress.waitUntilFinishedAndTryAgain=Пожалуйста, подождите, пока оно закончится, и попробуйте снова.
|
general.operationInProgress.waitUntilFinishedAndTryAgain=Пожалуйста, подождите, пока оно закончится, и попробуйте снова.
|
||||||
|
|
||||||
about.createdBy=Zotero проект [Roy Rosenzweig Center for History and New Media], разрабатываемый [международным сообществом].
|
about.createdBy=Zotero проект [Roy Rosenzweig Center for History and New Media], разработанный [международным сообществом].
|
||||||
about.getInvolved=Нужна помощь? [Присоединяйтесь]!
|
about.getInvolved=Нужна помощь? [Присоединяйтесь]!
|
||||||
|
|
||||||
punctuation.openingQMark="
|
punctuation.openingQMark="
|
||||||
|
@ -209,7 +209,7 @@ pane.collections.library=Моя библиотека
|
||||||
pane.collections.publications=Мои публикации
|
pane.collections.publications=Мои публикации
|
||||||
pane.collections.feeds=Новостные ленты
|
pane.collections.feeds=Новостные ленты
|
||||||
pane.collections.libraryAndFeeds=Мои коллекции и ленты новостей
|
pane.collections.libraryAndFeeds=Мои коллекции и ленты новостей
|
||||||
pane.collections.groupLibraries=Группировка библиотек
|
pane.collections.groupLibraries=Групповые библиотеки
|
||||||
pane.collections.feedLibraries=Новостные ленты
|
pane.collections.feedLibraries=Новостные ленты
|
||||||
pane.collections.trash=Корзина
|
pane.collections.trash=Корзина
|
||||||
pane.collections.untitled=Неназванные
|
pane.collections.untitled=Неназванные
|
||||||
|
@ -388,7 +388,7 @@ itemTypes.bill=Законопроект
|
||||||
itemTypes.case=Дело
|
itemTypes.case=Дело
|
||||||
itemTypes.hearing=Слушание
|
itemTypes.hearing=Слушание
|
||||||
itemTypes.patent=Патент
|
itemTypes.patent=Патент
|
||||||
itemTypes.statute=Закон
|
itemTypes.statute=норм. прав. акт
|
||||||
itemTypes.email=Электронная почта
|
itemTypes.email=Электронная почта
|
||||||
itemTypes.map=Карта
|
itemTypes.map=Карта
|
||||||
itemTypes.blogPost=Сообщение в блоге
|
itemTypes.blogPost=Сообщение в блоге
|
||||||
|
@ -434,11 +434,11 @@ itemFields.archiveLocation=Место в архиве
|
||||||
itemFields.distributor=Распределитель
|
itemFields.distributor=Распределитель
|
||||||
itemFields.extra=Дополнительно
|
itemFields.extra=Дополнительно
|
||||||
itemFields.journalAbbreviation=Журнал сокращ.
|
itemFields.journalAbbreviation=Журнал сокращ.
|
||||||
itemFields.DOI=ЦИО
|
itemFields.DOI=ЦИО/DOI
|
||||||
itemFields.accessDate=Дата доступа
|
itemFields.accessDate=Дата доступа
|
||||||
itemFields.seriesTitle=Название серии
|
itemFields.seriesTitle=Название серии
|
||||||
itemFields.seriesText=Текст серии
|
itemFields.seriesText=Текст серии
|
||||||
itemFields.seriesNumber=Номер серии
|
itemFields.seriesNumber=Номер в серии
|
||||||
itemFields.institution=Учреждение
|
itemFields.institution=Учреждение
|
||||||
itemFields.reportType=Тип отчета
|
itemFields.reportType=Тип отчета
|
||||||
itemFields.code=Кодекс/сборник
|
itemFields.code=Кодекс/сборник
|
||||||
|
@ -457,14 +457,14 @@ itemFields.references=Ссылки
|
||||||
itemFields.legalStatus=Правовой статус
|
itemFields.legalStatus=Правовой статус
|
||||||
itemFields.codeNumber=Том кодекса
|
itemFields.codeNumber=Том кодекса
|
||||||
itemFields.artworkMedium=Худож. средство
|
itemFields.artworkMedium=Худож. средство
|
||||||
itemFields.number=Количество
|
itemFields.number=Номер
|
||||||
itemFields.artworkSize=Размер работы
|
itemFields.artworkSize=Размер работы
|
||||||
itemFields.libraryCatalog=Библ. каталог
|
itemFields.libraryCatalog=Библ. каталог
|
||||||
itemFields.videoRecordingFormat=Формат
|
itemFields.videoRecordingFormat=Формат
|
||||||
itemFields.interviewMedium=Средство
|
itemFields.interviewMedium=Средство
|
||||||
itemFields.letterType=Тип
|
itemFields.letterType=Тип письма
|
||||||
itemFields.manuscriptType=Тип
|
itemFields.manuscriptType=Тип рукописи
|
||||||
itemFields.mapType=Тип
|
itemFields.mapType=Тип карты
|
||||||
itemFields.scale=Масштаб
|
itemFields.scale=Масштаб
|
||||||
itemFields.thesisType=Тип
|
itemFields.thesisType=Тип
|
||||||
itemFields.websiteType=Тип веб-сайта
|
itemFields.websiteType=Тип веб-сайта
|
||||||
|
@ -477,7 +477,7 @@ itemFields.runningTime=Продолжит.
|
||||||
itemFields.network=Сеть
|
itemFields.network=Сеть
|
||||||
itemFields.postType=Тип сообщения
|
itemFields.postType=Тип сообщения
|
||||||
itemFields.audioFileType=Тип файла
|
itemFields.audioFileType=Тип файла
|
||||||
itemFields.versionNumber=Версия:
|
itemFields.versionNumber=Версия
|
||||||
itemFields.system=Система
|
itemFields.system=Система
|
||||||
itemFields.company=Компания
|
itemFields.company=Компания
|
||||||
itemFields.conferenceName=Назв. конфер.
|
itemFields.conferenceName=Назв. конфер.
|
||||||
|
@ -496,8 +496,8 @@ itemFields.dateDecided=Дата решения
|
||||||
itemFields.reporterVolume=Том отчета
|
itemFields.reporterVolume=Том отчета
|
||||||
itemFields.firstPage=Первая стр.
|
itemFields.firstPage=Первая стр.
|
||||||
itemFields.documentNumber=Номер документа
|
itemFields.documentNumber=Номер документа
|
||||||
itemFields.dateEnacted=Дата постановл.
|
itemFields.dateEnacted=Дата акта
|
||||||
itemFields.publicLawNumber=Номер закона
|
itemFields.publicLawNumber=Номер акта
|
||||||
itemFields.country=Страна
|
itemFields.country=Страна
|
||||||
itemFields.applicationNumber=Номер заявки
|
itemFields.applicationNumber=Номер заявки
|
||||||
itemFields.forumTitle=Форум/Listserv
|
itemFields.forumTitle=Форум/Listserv
|
||||||
|
@ -573,7 +573,7 @@ ingester.scrapingTo=Сохранение в
|
||||||
ingester.scrapeComplete=Документ сохранен
|
ingester.scrapeComplete=Документ сохранен
|
||||||
ingester.scrapeError=Не получилось сохранить документ
|
ingester.scrapeError=Не получилось сохранить документ
|
||||||
ingester.scrapeErrorDescription=Произошла ошибка при сохранении этого документа. Смотрите %S для дополнительной информации.
|
ingester.scrapeErrorDescription=Произошла ошибка при сохранении этого документа. Смотрите %S для дополнительной информации.
|
||||||
ingester.scrapeErrorDescription.linkText=Устранение проблем с преобразователем
|
ingester.scrapeErrorDescription.linkText=Устранение проблем с импóртером
|
||||||
ingester.scrapeErrorDescription.previousError=Процесс сохранения не завершен из-за предыдущей ошибки Zotero.
|
ingester.scrapeErrorDescription.previousError=Процесс сохранения не завершен из-за предыдущей ошибки Zotero.
|
||||||
|
|
||||||
ingester.importReferRISDialog.title=Импортирование RIS/Refer в Zotero
|
ingester.importReferRISDialog.title=Импортирование RIS/Refer в Zotero
|
||||||
|
@ -614,7 +614,7 @@ zotero.preferences.locale.automaticWithLocale=Выбрано автоматич
|
||||||
zotero.preferences.locale.automatic=Выбирать автоматически
|
zotero.preferences.locale.automatic=Выбирать автоматически
|
||||||
|
|
||||||
zotero.preferences.sync.purgeStorage.title=Очистить вложения на серверах Zotero?
|
zotero.preferences.sync.purgeStorage.title=Очистить вложения на серверах Zotero?
|
||||||
zotero.preferences.sync.purgeStorage.desc=Если вы планируете использовать протокол WebDAV для выполнения синхронизации файлов и вы прежде синхронизировали файлы вложений в Моей библиотеке с данными серверов Zotero, вы можете выполнить очистку этих файлов с серверов Zotero, чтобы получить больше места для групп.\n\nОчистку можно произвести в любое время из параметров вашей учетной записи для zotero.org.
|
zotero.preferences.sync.purgeStorage.desc=Если вы планируете использовать протокол WebDAV для выполнения синхронизации файлов и вы прежде синхронизировали файлы вложений в Моей библиотеке с данными серверов Zotero, можно выполнить очистку серверов Zotero от этих файлов, чтобы получить больше места для групп.\n\nОчистку можно произвести в любое время из параметров вашей учетной записи для zotero.org.
|
||||||
zotero.preferences.sync.purgeStorage.confirmButton=Выполнить очистку файлов немедленно
|
zotero.preferences.sync.purgeStorage.confirmButton=Выполнить очистку файлов немедленно
|
||||||
zotero.preferences.sync.purgeStorage.cancelButton=Не выполнять очистку
|
zotero.preferences.sync.purgeStorage.cancelButton=Не выполнять очистку
|
||||||
zotero.preferences.sync.librariesToSync.loadingLibraries=Загрузка библиотек...
|
zotero.preferences.sync.librariesToSync.loadingLibraries=Загрузка библиотек...
|
||||||
|
@ -667,10 +667,10 @@ zotero.preferences.wordProcessors.incompatibleVersions2=%1$S %2$S требует
|
||||||
|
|
||||||
zotero.preferences.styles.addStyle=Добавить стиль
|
zotero.preferences.styles.addStyle=Добавить стиль
|
||||||
|
|
||||||
zotero.preferences.advanced.resetTranslatorsAndStyles=Обнулить трансляторы и стили
|
zotero.preferences.advanced.resetTranslatorsAndStyles=Обнулить импóртеры и стили
|
||||||
zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Любые новые или измененные трансляторы или стили будут утеряны.
|
zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Любые новые или измененные импóртеры или стили будут утеряны.
|
||||||
zotero.preferences.advanced.resetTranslators=Обнулить трансляторы
|
zotero.preferences.advanced.resetTranslators=Обнулить импóртеры
|
||||||
zotero.preferences.advanced.resetTranslators.changesLost=Любые новые или измененные трансляторы будут утеряны.
|
zotero.preferences.advanced.resetTranslators.changesLost=Любые новые или измененные импóртеры будут утеряны.
|
||||||
zotero.preferences.advanced.resetStyles=Обнулить стили
|
zotero.preferences.advanced.resetStyles=Обнулить стили
|
||||||
zotero.preferences.advanced.resetStyles.changesLost=Любые новые или измененные стили будут утеряны.
|
zotero.preferences.advanced.resetStyles.changesLost=Любые новые или измененные стили будут утеряны.
|
||||||
zotero.preferences.advanced.migrateDataDir.title=Перенести каталог данных
|
zotero.preferences.advanced.migrateDataDir.title=Перенести каталог данных
|
||||||
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Выбрать эту версию
|
||||||
|
|
||||||
sync.status.notYetSynced=Ещё не синхронизировано
|
sync.status.notYetSynced=Ещё не синхронизировано
|
||||||
sync.status.lastSync=Последняя синхронизация:
|
sync.status.lastSync=Последняя синхронизация:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Регистрация на сервере синхронизации
|
sync.status.loggingIn=Регистрация на сервере синхронизации
|
||||||
sync.status.gettingUpdatedData=Получение обновленных данных с сервера синхронизации
|
sync.status.gettingUpdatedData=Получение обновленных данных с сервера синхронизации
|
||||||
sync.status.processingUpdatedData=Обработка обновленных данных
|
sync.status.processingUpdatedData=Обработка обновленных данных
|
||||||
|
@ -1118,7 +1120,7 @@ connector.error.title=Ошибка соединения Zotero
|
||||||
connector.standaloneOpen=Ваша база данных недоступна, поскольку открыто Автономное Zotero. Пожалуйста, посмотрите ваши документы в Автономном Zotero.
|
connector.standaloneOpen=Ваша база данных недоступна, поскольку открыто Автономное Zotero. Пожалуйста, посмотрите ваши документы в Автономном Zotero.
|
||||||
connector.loadInProgress=Автономная Zotero запущен, но к нему нет доступа. Если вы испытываете проблемы при запуске автономной Zotero перезапустите Firefox.
|
connector.loadInProgress=Автономная Zotero запущен, но к нему нет доступа. Если вы испытываете проблемы при запуске автономной Zotero перезапустите Firefox.
|
||||||
|
|
||||||
firstRunGuidance.authorMenu=Zotero также позволяет указывать редакторов и трансляторов. Вы можете превратить автора в редактора или в транслятора, сделав выбор в меню.
|
firstRunGuidance.authorMenu=Zotero также позволяет указывать редакторов и переводчиков. Вы можете обозначить автора как редактора или переводчика, выбрав из меню.
|
||||||
firstRunGuidance.quickFormat=Введите наименование или автора для поиска по ссылке.\n\nПосле выбора, нажмите на сноску или Ctrl-↓ для добавления номеров страниц, префиксов или суффиксов. Также можно включить номер страницы в условия поиска, чтобы сразу его добавить.\n\n\Цитаты можно редактировать в самом документе, открытом в редакторе.
|
firstRunGuidance.quickFormat=Введите наименование или автора для поиска по ссылке.\n\nПосле выбора, нажмите на сноску или Ctrl-↓ для добавления номеров страниц, префиксов или суффиксов. Также можно включить номер страницы в условия поиска, чтобы сразу его добавить.\n\n\Цитаты можно редактировать в самом документе, открытом в редакторе.
|
||||||
firstRunGuidance.quickFormatMac=Введите наименование или автора для поиска по ссылке.\n\nПосле выбора, нажмите на сноску или Cmd-↓ для добавления номеров страниц, префиксов или суффиксов. Также можно включить номер страницы в условия поиска, чтобы сразу его добавить.\n\n\Цитаты можно редактировать в самом документе, открытом в редакторе.
|
firstRunGuidance.quickFormatMac=Введите наименование или автора для поиска по ссылке.\n\nПосле выбора, нажмите на сноску или Cmd-↓ для добавления номеров страниц, префиксов или суффиксов. Также можно включить номер страницы в условия поиска, чтобы сразу его добавить.\n\n\Цитаты можно редактировать в самом документе, открытом в редакторе.
|
||||||
firstRunGuidance.toolbarButton.new=Нажмите кнопку «Z» чтобы открыть Zotero, или используйте комбинацию клавиш%S.
|
firstRunGuidance.toolbarButton.new=Нажмите кнопку «Z» чтобы открыть Zotero, или используйте комбинацию клавиш%S.
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Zvoľte si túto verziu
|
||||||
|
|
||||||
sync.status.notYetSynced=Zatiaľ nesynchronizované
|
sync.status.notYetSynced=Zatiaľ nesynchronizované
|
||||||
sync.status.lastSync=Posledná synchronizácia:
|
sync.status.lastSync=Posledná synchronizácia:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Prihlasovanie na sychronizačných server
|
sync.status.loggingIn=Prihlasovanie na sychronizačných server
|
||||||
sync.status.gettingUpdatedData=Získavanie aktualizovaných dát zo synchronizačného serveru
|
sync.status.gettingUpdatedData=Získavanie aktualizovaných dát zo synchronizačného serveru
|
||||||
sync.status.processingUpdatedData=Spracovávanie aktualizovaných dát
|
sync.status.processingUpdatedData=Spracovávanie aktualizovaných dát
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Izberite to različico
|
||||||
|
|
||||||
sync.status.notYetSynced=Še ni usklajeno
|
sync.status.notYetSynced=Še ni usklajeno
|
||||||
sync.status.lastSync=Zadnja uskladitev:
|
sync.status.lastSync=Zadnja uskladitev:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Prijavljanje v uskladitveni strežnik
|
sync.status.loggingIn=Prijavljanje v uskladitveni strežnik
|
||||||
sync.status.gettingUpdatedData=Pridobivanje posodobljenih podatkov z uskladitvenega strežnika
|
sync.status.gettingUpdatedData=Pridobivanje posodobljenih podatkov z uskladitvenega strežnika
|
||||||
sync.status.processingUpdatedData=Obdelovanje posodobljenih podatkov
|
sync.status.processingUpdatedData=Obdelovanje posodobljenih podatkov
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Not yet synced
|
sync.status.notYetSynced=Not yet synced
|
||||||
sync.status.lastSync=Last sync:
|
sync.status.lastSync=Last sync:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logging in to sync server
|
sync.status.loggingIn=Logging in to sync server
|
||||||
sync.status.gettingUpdatedData=Getting updated data from sync server
|
sync.status.gettingUpdatedData=Getting updated data from sync server
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Välj denna version
|
||||||
|
|
||||||
sync.status.notYetSynced=Ännu inte synkroniserad
|
sync.status.notYetSynced=Ännu inte synkroniserad
|
||||||
sync.status.lastSync=Senaste synkronisering:
|
sync.status.lastSync=Senaste synkronisering:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logga in på synkroniseringsservern
|
sync.status.loggingIn=Logga in på synkroniseringsservern
|
||||||
sync.status.gettingUpdatedData=Hämta uppdaterad data från synkroniseringsservern
|
sync.status.gettingUpdatedData=Hämta uppdaterad data från synkroniseringsservern
|
||||||
sync.status.processingUpdatedData=Bearbetar uppdaterad data
|
sync.status.processingUpdatedData=Bearbetar uppdaterad data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=ยังไม่ได้เชื่อมประสาน
|
sync.status.notYetSynced=ยังไม่ได้เชื่อมประสาน
|
||||||
sync.status.lastSync=เชื่อมประสานล่าสุด:
|
sync.status.lastSync=เชื่อมประสานล่าสุด:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=กำลังบันทึกเข้าเครื่องบริการ
|
sync.status.loggingIn=กำลังบันทึกเข้าเครื่องบริการ
|
||||||
sync.status.gettingUpdatedData=รับข้อมูลที่เป็นปัจจุบันจากเครื่องบริการ
|
sync.status.gettingUpdatedData=รับข้อมูลที่เป็นปัจจุบันจากเครื่องบริการ
|
||||||
sync.status.processingUpdatedData=กำลังดำเนินการปรับปรุงข้อมูลจากเครื่องบริการ
|
sync.status.processingUpdatedData=กำลังดำเนินการปรับปรุงข้อมูลจากเครื่องบริการ
|
||||||
|
|
|
@ -107,7 +107,7 @@
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.citationOptions.caption "Kaynakça Seçenekleri">
|
<!ENTITY zotero.preferences.citationOptions.caption "Kaynakça Seçenekleri">
|
||||||
<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Kaynakçalara makale URL'leri dahil edilsin">
|
<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Kaynakçalara makale URL'leri dahil edilsin">
|
||||||
<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "Bu seçenek iptal edildiğinde, bilimsel dergi, magazin ve gazete makaleleri kaynak gösterilirken eğer bir sayfa aralığı belirtilmezse Zotero URL'leri dahil eder.">
|
<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "Bu seçenek devre dışı bırakıldığında, Zotero, bilimsel dergi, magazin ve gazete makalelerine göndermelere URL'leri, yalnızca bir sayfa aralığı belirtilmediği halde ekleyecektir.">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.quickCopy.caption "Çabuk Kopyala">
|
<!ENTITY zotero.preferences.quickCopy.caption "Çabuk Kopyala">
|
||||||
<!ENTITY zotero.preferences.quickCopy.defaultFormat "Varsayılan Biçim:">
|
<!ENTITY zotero.preferences.quickCopy.defaultFormat "Varsayılan Biçim:">
|
||||||
|
@ -117,7 +117,7 @@
|
||||||
<!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(ör. wikipedia.org)">
|
<!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(ör. wikipedia.org)">
|
||||||
<!ENTITY zotero.preferences.quickCopy.siteEditor.format "Biçim">
|
<!ENTITY zotero.preferences.quickCopy.siteEditor.format "Biçim">
|
||||||
<!ENTITY zotero.preferences.quickCopy.siteEditor.locale "Dil">
|
<!ENTITY zotero.preferences.quickCopy.siteEditor.locale "Dil">
|
||||||
<!ENTITY zotero.preferences.quickCopy.dragLimit "Bu kadardan daha fazla sürüklendiğinde Çabuk Kopyalamayı seçilemez kıl:">
|
<!ENTITY zotero.preferences.quickCopy.dragLimit "Bu kadardan daha fazlası sürüklendiğinde Çabuk Kopyalamayı devre dışı bırak:">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.prefpane.cite "Gönderme Yapmak">
|
<!ENTITY zotero.preferences.prefpane.cite "Gönderme Yapmak">
|
||||||
<!ENTITY zotero.preferences.cite.styles "Stiller">
|
<!ENTITY zotero.preferences.cite.styles "Stiller">
|
||||||
|
@ -155,10 +155,10 @@
|
||||||
<!ENTITY zotero.preferences.proxies.desc_before_link "Zotero, istekleri kayıtlı vekil sunucular aracılığı ile açık bir şekilde yönlendirecektir. Daha fazla bilgi için">
|
<!ENTITY zotero.preferences.proxies.desc_before_link "Zotero, istekleri kayıtlı vekil sunucular aracılığı ile açık bir şekilde yönlendirecektir. Daha fazla bilgi için">
|
||||||
<!ENTITY zotero.preferences.proxies.desc_link "vekil sunucu belgelerine">
|
<!ENTITY zotero.preferences.proxies.desc_link "vekil sunucu belgelerine">
|
||||||
<!ENTITY zotero.preferences.proxies.desc_after_link "bakınız.">
|
<!ENTITY zotero.preferences.proxies.desc_after_link "bakınız.">
|
||||||
<!ENTITY zotero.preferences.proxies.transparent "Vekil sunucu kaynaklarını kendiliğinden hatırla">
|
<!ENTITY zotero.preferences.proxies.transparent "Vekil sunucu yönlendirmelerini etkinleştir">
|
||||||
<!ENTITY zotero.preferences.proxies.autoRecognize "Vekil sunuculu kaynakları kendiliğinden tanı">
|
<!ENTITY zotero.preferences.proxies.autoRecognize "Vekil sunuculu kaynakları kendiliğinden tanı">
|
||||||
<!ENTITY zotero.preferences.proxies.showRedirectNotification "Bir vekil sunucu aracılığıyla yönlendirirken mesaj göster.">
|
<!ENTITY zotero.preferences.proxies.showRedirectNotification "Bir vekil sunucu aracılığıyla yönlendirirken mesaj göster.">
|
||||||
<!ENTITY zotero.preferences.proxies.disableByDomain "Etki alanı adı bunları içeriyorsa vekil sunucuya yönlendirme: ">
|
<!ENTITY zotero.preferences.proxies.disableByDomain "Etki alanı adı bunları içeriyorsa vekil sunucuya yönlendirmeyi devre dışı bırak: ">
|
||||||
<!ENTITY zotero.preferences.proxies.configured "Ayarlanmış Vekil Sunucular">
|
<!ENTITY zotero.preferences.proxies.configured "Ayarlanmış Vekil Sunucular">
|
||||||
<!ENTITY zotero.preferences.proxies.hostname "Ana Sunucu">
|
<!ENTITY zotero.preferences.proxies.hostname "Ana Sunucu">
|
||||||
<!ENTITY zotero.preferences.proxies.scheme "Düzen">
|
<!ENTITY zotero.preferences.proxies.scheme "Düzen">
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
|
|
||||||
<!ENTITY copyCitationCmd.label "Gönderme Kopyala">
|
<!ENTITY copyCitationCmd.label "Gönderme Kopyala">
|
||||||
<!ENTITY copyBibliographyCmd.label "Bibliyografya Kopyala">
|
<!ENTITY copyBibliographyCmd.label "Kaynakça Kopyala">
|
||||||
|
|
||||||
<!ENTITY bidiSwitchPageDirectionItem.label "Sayfa Yönünü Değiştir">
|
<!ENTITY bidiSwitchPageDirectionItem.label "Sayfa Yönünü Değiştir">
|
||||||
<!ENTITY bidiSwitchPageDirectionItem.accesskey "g">
|
<!ENTITY bidiSwitchPageDirectionItem.accesskey "g">
|
||||||
|
|
|
@ -160,7 +160,7 @@
|
||||||
<!ENTITY zotero.tagSelector.displayAllInLibrary "Bu Kitaplık İçindeki Tüm Etiketleri Göster">
|
<!ENTITY zotero.tagSelector.displayAllInLibrary "Bu Kitaplık İçindeki Tüm Etiketleri Göster">
|
||||||
<!ENTITY zotero.tagSelector.deleteAutomaticInLibrary "Bu Kitaplık İçindeki Otomatik Etiketleri Sil...">
|
<!ENTITY zotero.tagSelector.deleteAutomaticInLibrary "Bu Kitaplık İçindeki Otomatik Etiketleri Sil...">
|
||||||
<!ENTITY zotero.tagSelector.clearAll "Hiçbirini Seçme">
|
<!ENTITY zotero.tagSelector.clearAll "Hiçbirini Seçme">
|
||||||
<!ENTITY zotero.tagSelector.assignColor "Renk Belirle...">
|
<!ENTITY zotero.tagSelector.assignColor "Etikete Renk Ata...">
|
||||||
<!ENTITY zotero.tagSelector.renameTag "Etiketi Yeniden Adlandır...">
|
<!ENTITY zotero.tagSelector.renameTag "Etiketi Yeniden Adlandır...">
|
||||||
<!ENTITY zotero.tagSelector.deleteTag "Etiketi Sil...">
|
<!ENTITY zotero.tagSelector.deleteTag "Etiketi Sil...">
|
||||||
|
|
||||||
|
@ -178,19 +178,19 @@
|
||||||
<!ENTITY zotero.selectitems.cancel.label "İptal et">
|
<!ENTITY zotero.selectitems.cancel.label "İptal et">
|
||||||
<!ENTITY zotero.selectitems.select.label "Tamam">
|
<!ENTITY zotero.selectitems.select.label "Tamam">
|
||||||
|
|
||||||
<!ENTITY zotero.bibliography.title "Bibliyografya Oluştur">
|
<!ENTITY zotero.bibliography.title "Gönderme/Kaynakça Yarat">
|
||||||
<!ENTITY zotero.bibliography.style.label "Gönderme Stili:">
|
<!ENTITY zotero.bibliography.style.label "Gönderme Stili:">
|
||||||
<!ENTITY zotero.bibliography.manageStyles "Stilleri Yönet...">
|
<!ENTITY zotero.bibliography.manageStyles "Stilleri Yönet...">
|
||||||
<!ENTITY zotero.bibliography.locale.label "Dil:">
|
<!ENTITY zotero.bibliography.locale.label "Dil:">
|
||||||
<!ENTITY zotero.bibliography.outputMode "Çıktı Biçimi">
|
<!ENTITY zotero.bibliography.outputMode "Çıktı Biçimi">
|
||||||
<!ENTITY zotero.bibliography.bibliography "Bibliyografya">
|
<!ENTITY zotero.bibliography.bibliography "Kaynakça">
|
||||||
<!ENTITY zotero.bibliography.outputMethod "Çıktı Metodu:">
|
<!ENTITY zotero.bibliography.outputMethod "Çıktı Metodu:">
|
||||||
<!ENTITY zotero.bibliography.saveAsRTF.label "RTF olarak Kaydet">
|
<!ENTITY zotero.bibliography.saveAsRTF.label "RTF Olarak Kaydet">
|
||||||
<!ENTITY zotero.bibliography.saveAsHTML.label "HTML olarak Kaydet">
|
<!ENTITY zotero.bibliography.saveAsHTML.label "HTML olarak Kaydet">
|
||||||
<!ENTITY zotero.bibliography.copyToClipboard.label "Panoya Kopyala">
|
<!ENTITY zotero.bibliography.copyToClipboard.label "Panoya Kopyala">
|
||||||
<!ENTITY zotero.bibliography.print.label "Yazdır">
|
<!ENTITY zotero.bibliography.print.label "Yazdır">
|
||||||
|
|
||||||
<!ENTITY zotero.integration.docPrefs.title "Döküman Tercihleri">
|
<!ENTITY zotero.integration.docPrefs.title "Belge Tercihleri">
|
||||||
<!ENTITY zotero.integration.addEditCitation.title "Gönderme Ekle/Düzenle">
|
<!ENTITY zotero.integration.addEditCitation.title "Gönderme Ekle/Düzenle">
|
||||||
<!ENTITY zotero.integration.editBibliography.title "Kaynakça Düzenle">
|
<!ENTITY zotero.integration.editBibliography.title "Kaynakça Düzenle">
|
||||||
<!ENTITY zotero.integration.quickFormatDialog.title "Çabuk Gönderme Biçimle">
|
<!ENTITY zotero.integration.quickFormatDialog.title "Çabuk Gönderme Biçimle">
|
||||||
|
@ -229,7 +229,7 @@
|
||||||
|
|
||||||
<!ENTITY zotero.integration.prefs.formatUsing.label "Göndermeleri bu şekilde kaydet:">
|
<!ENTITY zotero.integration.prefs.formatUsing.label "Göndermeleri bu şekilde kaydet:">
|
||||||
<!ENTITY zotero.integration.prefs.bookmarks.label "Yer imleri">
|
<!ENTITY zotero.integration.prefs.bookmarks.label "Yer imleri">
|
||||||
<!ENTITY zotero.integration.prefs.bookmarks.caption "Yer imleri Word ve LibreOffice arasında paylaşılabilirler, ama yanlışlıkla değiştirilirlerse hatalara neden olabilirler ve dipnotlara eklenemezler.">
|
<!ENTITY zotero.integration.prefs.bookmarks.caption "Yer imleri Word ve LibreOffice arasında paylaşılabilirler, ama yanlışlıkla değiştirilirlerse hatalara neden olabilirler ve dipnotlara konulamazlar.">
|
||||||
|
|
||||||
|
|
||||||
<!ENTITY zotero.integration.prefs.automaticJournalAbbeviations.label "MEDLINE dergi kısaltmalarını kullan">
|
<!ENTITY zotero.integration.prefs.automaticJournalAbbeviations.label "MEDLINE dergi kısaltmalarını kullan">
|
||||||
|
@ -291,19 +291,19 @@
|
||||||
<!ENTITY zotero.rtfScan.ambiguousCitations.label "Belirsiz Gönderme">
|
<!ENTITY zotero.rtfScan.ambiguousCitations.label "Belirsiz Gönderme">
|
||||||
<!ENTITY zotero.rtfScan.mappedCitations.label "Eşlenmiş Gönderme">
|
<!ENTITY zotero.rtfScan.mappedCitations.label "Eşlenmiş Gönderme">
|
||||||
<!ENTITY zotero.rtfScan.introPage.label "Giriş">
|
<!ENTITY zotero.rtfScan.introPage.label "Giriş">
|
||||||
<!ENTITY zotero.rtfScan.introPage.description "Zotero göndermeleri otomatik olarak çıkarabilir ve tekrar düzenleyerek RTF dosyası içine kaynakça olarak koyabilir. Başlamak için aşağıdan bir RTF dosyası seçiniz.">
|
<!ENTITY zotero.rtfScan.introPage.description "Zotero, göndermeleri otomatik olarak ayıklayıp düzenleyebilir ve RTF dosyalarının içine kaynakça olarak koyabilir. RTF tarama özelliği, halen aşağıdaki biçimlendirme şekillerinde yaratılmış göndermeleri desteklemektedir:">
|
||||||
<!ENTITY zotero.rtfScan.introPage.description2 "Başlamak için bir RTF giriş dosyası ve altında bir çıkış dosyası seçiniz:">
|
<!ENTITY zotero.rtfScan.introPage.description2 "Başlamak için, aşağıdan bir RTF girdi dosyası ve bir çıktı dosyası seçiniz:">
|
||||||
<!ENTITY zotero.rtfScan.scanPage.label "Göndermeler için Tarama">
|
<!ENTITY zotero.rtfScan.scanPage.label "Göndermeler için Tarama">
|
||||||
<!ENTITY zotero.rtfScan.scanPage.description "Zotero belgenizi gönderme bulmak için tarıyor. Lütfen bekleyiniz.">
|
<!ENTITY zotero.rtfScan.scanPage.description "Zotero, belgenizi gönderme bulmak için tarıyor. Lütfen bekleyiniz.">
|
||||||
<!ENTITY zotero.rtfScan.citationsPage.label "Göndermelerin Onaylanması">
|
<!ENTITY zotero.rtfScan.citationsPage.label "Göndermelerin Onaylanması">
|
||||||
<!ENTITY zotero.rtfScan.citationsPage.description "Lütfen aşağıdaki listede tanınan göndermeleri Zotero'nun doğru olarak eşleştirip eşleştirmediğini gözden geçiriniz. Bir sonraki adıma geçmeden önce eşleşmemiş veya belirsiz alıntılar çözümlenmelidir.">
|
<!ENTITY zotero.rtfScan.citationsPage.description "Lütfen aşağıdaki listede tanınan göndermeleri Zotero'nun doğru olarak eşleştirip eşleştirmediğini gözden geçiriniz. Bir sonraki adıma geçmeden önce eşleşmemiş veya belirsiz alıntılar çözümlenmelidir.">
|
||||||
<!ENTITY zotero.rtfScan.stylePage.label "Belge Biçimlendirme">
|
<!ENTITY zotero.rtfScan.stylePage.label "Belge Biçimlendirme">
|
||||||
<!ENTITY zotero.rtfScan.formatPage.label "Gönderme Biçimlendirme">
|
<!ENTITY zotero.rtfScan.formatPage.label "Gönderme Biçimlendirme">
|
||||||
<!ENTITY zotero.rtfScan.formatPage.description "Zotero RTF dosyanızı biçimlendiriyor. Lütfen bekleyiniz.">
|
<!ENTITY zotero.rtfScan.formatPage.description "Zotero, RTF dosyanızı işliyor ve biçimlendiriyor. Lütfen bekleyiniz.">
|
||||||
<!ENTITY zotero.rtfScan.completePage.label "RTF Tarama Tamamlandı">
|
<!ENTITY zotero.rtfScan.completePage.label "RTF Taraması Tamamlandı">
|
||||||
<!ENTITY zotero.rtfScan.completePage.description "Belgeniz tarandı ve işlendi. Lütfnen biçimlendirmenin doğruluğunu kontrol ediniz.">
|
<!ENTITY zotero.rtfScan.completePage.description "Belgenizin taranması ve işlenmesi tamamlandı. Lütfen biçimlendirmesinin doğruluğunu kontrol ediniz.">
|
||||||
<!ENTITY zotero.rtfScan.inputFile.label "Giriş Dosyası">
|
<!ENTITY zotero.rtfScan.inputFile.label "Girdi Dosyası">
|
||||||
<!ENTITY zotero.rtfScan.outputFile.label "Çıkış Dosyası">
|
<!ENTITY zotero.rtfScan.outputFile.label "Çıktı Dosyası">
|
||||||
|
|
||||||
<!ENTITY zotero.file.choose.label "Dosya Seçiniz...">
|
<!ENTITY zotero.file.choose.label "Dosya Seçiniz...">
|
||||||
<!ENTITY zotero.file.noneSelected.label "Dosya seçilmedi">
|
<!ENTITY zotero.file.noneSelected.label "Dosya seçilmedi">
|
||||||
|
|
|
@ -10,7 +10,7 @@ general.restartRequired=Tekrar Başlatma Gerekiyor
|
||||||
general.restartRequiredForChange=Değişikliğin etkili olabilmesi için %S yeniden başlatılmalıdır.
|
general.restartRequiredForChange=Değişikliğin etkili olabilmesi için %S yeniden başlatılmalıdır.
|
||||||
general.restartRequiredForChanges=Değişikliklerin etkili olabilmesi için %S yeniden başlatılmalıdır.
|
general.restartRequiredForChanges=Değişikliklerin etkili olabilmesi için %S yeniden başlatılmalıdır.
|
||||||
general.restartNow=Şimdi yeniden başlat
|
general.restartNow=Şimdi yeniden başlat
|
||||||
general.restartLater=Sonra yeniden başlat.
|
general.restartLater=Sonra yeniden başlat
|
||||||
general.restartApp=Yeniden başlat %S
|
general.restartApp=Yeniden başlat %S
|
||||||
general.quitApp=%S'dan Ayrıl
|
general.quitApp=%S'dan Ayrıl
|
||||||
general.errorHasOccurred=Bir hata meydana geldi.
|
general.errorHasOccurred=Bir hata meydana geldi.
|
||||||
|
@ -229,9 +229,9 @@ pane.collections.menu.delete.feedAndItems=Beslemeye Olan Aboneliği İptal Et...
|
||||||
pane.collections.menu.export.collection=Dermeyi Dışarı Aktar...
|
pane.collections.menu.export.collection=Dermeyi Dışarı Aktar...
|
||||||
pane.collections.menu.export.savedSearch=Kaydedilen Aramayı Dışarı Aktar...
|
pane.collections.menu.export.savedSearch=Kaydedilen Aramayı Dışarı Aktar...
|
||||||
pane.collections.menu.export.feed=Beslemeyi Dışarı Aktar...
|
pane.collections.menu.export.feed=Beslemeyi Dışarı Aktar...
|
||||||
pane.collections.menu.createBib.collection=Dermeden Bibliyografya Yarat...
|
pane.collections.menu.createBib.collection=Dermeden Kaynakça Yarat...
|
||||||
pane.collections.menu.createBib.savedSearch=Kaydedilmiş Aramadan Bibliyografya Yarat...
|
pane.collections.menu.createBib.savedSearch=Kaydedilmiş Aramadan Kaynakça Yarat...
|
||||||
pane.collections.menu.createBib.feed=Beslemeden Bibliyografya Yarat...
|
pane.collections.menu.createBib.feed=Beslemeden Kaynakça Yarat...
|
||||||
|
|
||||||
pane.collections.menu.generateReport.collection=Dermeden Rapor Oluştur...
|
pane.collections.menu.generateReport.collection=Dermeden Rapor Oluştur...
|
||||||
pane.collections.menu.generateReport.savedSearch=Kaydedilen Aramadan Rapor Oluştur...
|
pane.collections.menu.generateReport.savedSearch=Kaydedilen Aramadan Rapor Oluştur...
|
||||||
|
@ -284,8 +284,8 @@ pane.items.menu.delete=Eseri Sil...
|
||||||
pane.items.menu.delete.multiple=Eserleri Sil...
|
pane.items.menu.delete.multiple=Eserleri Sil...
|
||||||
pane.items.menu.export=Seçili Eseri Dışarı Aktar...
|
pane.items.menu.export=Seçili Eseri Dışarı Aktar...
|
||||||
pane.items.menu.export.multiple=Seçili Eserleri Dışarı Aktar...
|
pane.items.menu.export.multiple=Seçili Eserleri Dışarı Aktar...
|
||||||
pane.items.menu.createBib=Seçili Eserden Bibliyografya Yarat...
|
pane.items.menu.createBib=Seçili Eserden Kaynakça Yarat...
|
||||||
pane.items.menu.createBib.multiple=Seçili Eserlerden Bibliyografya Oluştur...
|
pane.items.menu.createBib.multiple=Seçili Eserlerden Kaynakça Yarat...
|
||||||
pane.items.menu.generateReport=Seçili Eserden Rapor Oluştur...
|
pane.items.menu.generateReport=Seçili Eserden Rapor Oluştur...
|
||||||
pane.items.menu.generateReport.multiple=Seçili Eserlerden Rapor Oluştur...
|
pane.items.menu.generateReport.multiple=Seçili Eserlerden Rapor Oluştur...
|
||||||
pane.items.menu.reindexItem=Eseri Tekrar İndeksle
|
pane.items.menu.reindexItem=Eseri Tekrar İndeksle
|
||||||
|
@ -577,7 +577,7 @@ ingester.scrapeErrorDescription.linkText=Çevirmen Sorunlarını Giderme
|
||||||
ingester.scrapeErrorDescription.previousError=Önceki Zotero hatasına göre kayıt işlemi başarısız oldu.
|
ingester.scrapeErrorDescription.previousError=Önceki Zotero hatasına göre kayıt işlemi başarısız oldu.
|
||||||
|
|
||||||
ingester.importReferRISDialog.title=Zotero RIS/Refer İçeri Aktarması
|
ingester.importReferRISDialog.title=Zotero RIS/Refer İçeri Aktarması
|
||||||
ingester.importReferRISDialog.text="%1$S"dan Zotero'ya eser aktarmak istiyor musunuz?\n\nOtomatik RIS/Refer içeri aktarmalarını Zotero Tercihlerinden etkisizleştirebilirsiniz.
|
ingester.importReferRISDialog.text="%1$S"dan Zotero'ya eser aktarmak istiyor musunuz?\n\nOtomatik RIS/Refer içeri aktarmalarını Zotero Tercihlerinden devre dışı bırakabilirsiniz.
|
||||||
ingester.importReferRISDialog.checkMsg=Bu site için hep izin ver
|
ingester.importReferRISDialog.checkMsg=Bu site için hep izin ver
|
||||||
|
|
||||||
ingester.importFile.title=Dosyayı İçeri Aktar
|
ingester.importFile.title=Dosyayı İçeri Aktar
|
||||||
|
@ -607,9 +607,9 @@ zotero.preferences.update.updated=Güncellendi
|
||||||
zotero.preferences.update.upToDate=Güncel
|
zotero.preferences.update.upToDate=Güncel
|
||||||
zotero.preferences.update.error=Hata
|
zotero.preferences.update.error=Hata
|
||||||
zotero.preferences.launchNonNativeFiles=Mümkün oldukça PDF dosyalarını ve diğer dosyaları %S içinde aç
|
zotero.preferences.launchNonNativeFiles=Mümkün oldukça PDF dosyalarını ve diğer dosyaları %S içinde aç
|
||||||
zotero.preferences.openurl.resolversFound.zero=%S resolver bulundu
|
zotero.preferences.openurl.resolversFound.zero=%S çözücü bulundu
|
||||||
zotero.preferences.openurl.resolversFound.singular=%S rosolver bulundu
|
zotero.preferences.openurl.resolversFound.singular=%S çözücü bulundu
|
||||||
zotero.preferences.openurl.resolversFound.plural=%S resolver bulundu
|
zotero.preferences.openurl.resolversFound.plural=%S çözücü bulundu
|
||||||
zotero.preferences.locale.automaticWithLocale=Otomatik (%S)
|
zotero.preferences.locale.automaticWithLocale=Otomatik (%S)
|
||||||
zotero.preferences.locale.automatic=Otomatik
|
zotero.preferences.locale.automatic=Otomatik
|
||||||
|
|
||||||
|
@ -685,7 +685,7 @@ zotero.debugOutputLogging.linesLogged=%1$S satır kaydedildi;%1$S satır kaydedi
|
||||||
zotero.debugOutputLogging.dialog.title=Hata Ayıklama Çıktısı Gönderildi
|
zotero.debugOutputLogging.dialog.title=Hata Ayıklama Çıktısı Gönderildi
|
||||||
zotero.debugOutputLogging.dialog.sent=Hata ayıklama çıktısı %S'e gönderildi.\n\nHata Ayıklama kimliği D%S.
|
zotero.debugOutputLogging.dialog.sent=Hata ayıklama çıktısı %S'e gönderildi.\n\nHata Ayıklama kimliği D%S.
|
||||||
zotero.debugOutputLogging.dialog.error=Hata ayıklama çıktısı gönderirken bir hata oluştu.
|
zotero.debugOutputLogging.dialog.error=Hata ayıklama çıktısı gönderirken bir hata oluştu.
|
||||||
zotero.debugOutputLogging.enabledAfterRestart=\nHata ayıklama çıktısının kaydı, %S yeniden başladıktan sonra etkinleştirilecektir.
|
zotero.debugOutputLogging.enabledAfterRestart=Hata ayıklama çıktısının kaydı, %S yeniden başladıktan sonra etkinleştirilecektir.
|
||||||
|
|
||||||
dragAndDrop.existingFiles=Aşağıdaki dosyalar hedef dizinde zaten varlar ve kopyalanmadılar:
|
dragAndDrop.existingFiles=Aşağıdaki dosyalar hedef dizinde zaten varlar ve kopyalanmadılar:
|
||||||
dragAndDrop.filesNotFound=Aşağıdaki dosyalar bulunamadı ve kopyalanamaz:
|
dragAndDrop.filesNotFound=Aşağıdaki dosyalar bulunamadı ve kopyalanamaz:
|
||||||
|
@ -700,12 +700,12 @@ fileInterface.exportedItems=Dışarı aktarılan eserler
|
||||||
fileInterface.imported=İçeri aktarıldı
|
fileInterface.imported=İçeri aktarıldı
|
||||||
fileInterface.unsupportedFormat=Seçilen dosya desteklenen bir dosya biçiminde değil.
|
fileInterface.unsupportedFormat=Seçilen dosya desteklenen bir dosya biçiminde değil.
|
||||||
fileInterface.viewSupportedFormats=Desteklenen Biçimleri Gör...
|
fileInterface.viewSupportedFormats=Desteklenen Biçimleri Gör...
|
||||||
fileInterface.untitledBibliography=Başlıksız Bibliyografya
|
fileInterface.untitledBibliography=Başlıksız Kaynakça
|
||||||
fileInterface.bibliographyHTMLTitle=Bibliyografya
|
fileInterface.bibliographyHTMLTitle=Kaynakça
|
||||||
fileInterface.importError=Seçilen dosyayı içeri aktarırken bir hata oluştu. Lütfen dosyanın doğruluğunu kontrol ediniz ve tekrar deneyiniz.
|
fileInterface.importError=Seçilen dosyayı içeri aktarırken bir hata oluştu. Lütfen dosyanın doğruluğunu kontrol ediniz ve tekrar deneyiniz.
|
||||||
fileInterface.importClipboardNoDataError=Panodan içeri aktarılabilir hiçbir veri yok.
|
fileInterface.importClipboardNoDataError=Panodan içeri aktarılabilir hiçbir veri yok.
|
||||||
fileInterface.noReferencesError=Seçtiğiniz eserler hiçbir gönderme içermiyor. Lütfen bir veya daha fazla gönderme seçiniz ve tekrar deneyiniz.
|
fileInterface.noReferencesError=Seçtiğiniz eserler hiçbir gönderme içermiyor. Lütfen bir veya daha fazla gönderme seçiniz ve tekrar deneyiniz.
|
||||||
fileInterface.bibliographyGenerationError=Bibliyografyanızı oluştururken bir hata oluştu. Lütfen tekrar deneyiniz.
|
fileInterface.bibliographyGenerationError=Kaynakçanızı oluştururken bir hata oldu. Lütfen tekrar deneyiniz.
|
||||||
fileInterface.exportError=Seçili dosyayı dışarı aktarırken bir hata oluştu.
|
fileInterface.exportError=Seçili dosyayı dışarı aktarırken bir hata oluştu.
|
||||||
fileInterface.importOPML=Beslemeleri OPML'den İçeri Aktarın
|
fileInterface.importOPML=Beslemeleri OPML'den İçeri Aktarın
|
||||||
fileInterface.OPMLFeedFilter=OPML Besleme Listesi
|
fileInterface.OPMLFeedFilter=OPML Besleme Listesi
|
||||||
|
@ -840,13 +840,13 @@ integration.emptyCitationWarning.body=Mevcut seçili stiliniz belirttiğiniz gö
|
||||||
integration.openInLibrary=%S'da Aç
|
integration.openInLibrary=%S'da Aç
|
||||||
|
|
||||||
integration.error.incompatibleVersion=Zotero'nun bu sürümünün kelime işlemci eklentisi ($INTEGRATION_VERSION) Zotero'un şu anki kurulu sürümün firefox eklentisi (%1$S) ile uyumlu değildir. Lütfen her iki bileşenin de en son sürümünü kullandığınızdan emin olunuz.
|
integration.error.incompatibleVersion=Zotero'nun bu sürümünün kelime işlemci eklentisi ($INTEGRATION_VERSION) Zotero'un şu anki kurulu sürümün firefox eklentisi (%1$S) ile uyumlu değildir. Lütfen her iki bileşenin de en son sürümünü kullandığınızdan emin olunuz.
|
||||||
integration.error.incompatibleVersion2=Zotero %1$S %2$S %3$S'i gerektirmektedir. Lütfen, %2$S'in en son sürümünü zotero.org adresinden indiriniz.
|
integration.error.incompatibleVersion2=Zotero %1$S, %2$S %3$S'i ve sonrasındakileri gerektirmektedir. Lütfen, %2$S'in en son sürümünü zotero.org adresinden indiriniz.
|
||||||
integration.error.title=Zotero Birleştirme Hatası
|
integration.error.title=Zotero Birleştirme Hatası
|
||||||
integration.error.notInstalled=Firefox kelime işlemciniz ile bağlantı için gerekli bileşeni yükleyemiyor. Lütfen uygun Firefox eklentisinin kurulu olduğundan emin olunuz ve tekrar deneyiniz.
|
integration.error.notInstalled=Firefox kelime işlemciniz ile bağlantı için gerekli bileşeni yükleyemiyor. Lütfen uygun Firefox eklentisinin kurulu olduğundan emin olunuz ve tekrar deneyiniz.
|
||||||
integration.error.generic=Zotero belgenizi güncellerken bir hata ile karşılaştı.
|
integration.error.generic=Zotero belgenizi güncellerken bir hata ile karşılaştı.
|
||||||
integration.error.mustInsertCitation=Bu işlemi gerçekleştirmeden önce bir gönderme girmelisiniz.
|
integration.error.mustInsertCitation=Bu işlemi gerçekleştirmeden önce bir gönderme koymalısınız.
|
||||||
integration.error.mustInsertBibliography=Bu işlemi gerçekleştirmeden önce bir kaynakça girmelisiniz.
|
integration.error.mustInsertBibliography=Bu işlemi gerçekleştirmeden önce bir kaynakça koymalısınız.
|
||||||
integration.error.cannotInsertHere=Zotero alanları buraya girilemez.
|
integration.error.cannotInsertHere=Zotero alanları buraya konulamaz.
|
||||||
integration.error.notInCitation=Bir Zotero göndermesini düzeltmek için imleci içine koymalısınız.
|
integration.error.notInCitation=Bir Zotero göndermesini düzeltmek için imleci içine koymalısınız.
|
||||||
integration.error.noBibliography=Mevcut kaynakça biçimi bir kaynakçayı belirtmiyor. Eğer bir kaynakça eklemek istiyorsanız, lütfen başka bir biçim seçiniz.
|
integration.error.noBibliography=Mevcut kaynakça biçimi bir kaynakçayı belirtmiyor. Eğer bir kaynakça eklemek istiyorsanız, lütfen başka bir biçim seçiniz.
|
||||||
integration.error.deletePipe=Zotero'nun sözcük işlemcisi ile iletişim kurmasını sağlayan boru ilk kullanıma hazırlanamadı. Zotero'nun bu hatayı düzeltmeye çalışmasını ister misiniz? Şifreniz sorulacaktır.
|
integration.error.deletePipe=Zotero'nun sözcük işlemcisi ile iletişim kurmasını sağlayan boru ilk kullanıma hazırlanamadı. Zotero'nun bu hatayı düzeltmeye çalışmasını ister misiniz? Şifreniz sorulacaktır.
|
||||||
|
@ -860,7 +860,7 @@ integration.missingItem.single=Bu eser Zotero veritabanınızda artık mevcut de
|
||||||
integration.missingItem.multiple=Zotero veritabanınızda, bu göndermedeki %1$S eser artık mevcut değil. Yerine başka bir eser seçmek ister misiniz?
|
integration.missingItem.multiple=Zotero veritabanınızda, bu göndermedeki %1$S eser artık mevcut değil. Yerine başka bir eser seçmek ister misiniz?
|
||||||
integration.missingItem.description="Hayır"ı tıklamak bu eseri içeren göndermelerin alan kodlarını silecek, gönderme metnini koruyacak, ama kaynakçanızdan silecektir.
|
integration.missingItem.description="Hayır"ı tıklamak bu eseri içeren göndermelerin alan kodlarını silecek, gönderme metnini koruyacak, ama kaynakçanızdan silecektir.
|
||||||
integration.removeCodesWarning=Alan kodlarının silinmesi Zotero'nun bu belgedeki göndermeleri ve kaynakçaları güncellemesini engelleyecektir. Devam etmek istediğinize emin misiniz?
|
integration.removeCodesWarning=Alan kodlarının silinmesi Zotero'nun bu belgedeki göndermeleri ve kaynakçaları güncellemesini engelleyecektir. Devam etmek istediğinize emin misiniz?
|
||||||
integration.upgradeWarning=Belgeniz, %S %S ve sonrası ile çalışabilmesi için kalıcı olarak yükseltilmelidir. İşlemi gerçekleştirmeden önce yedek almanız önerilir. Devam etmek istediğinize emin misiniz?
|
integration.upgradeWarning=Belgeniz, %S %S ve sonrası ile çalışabilmesi için kalıcı olarak yükseltilmelidir. İşlemi gerçekleştirmeden önce bir yedek almanız önerilir. Devam etmek istediğinize emin misiniz?
|
||||||
integration.error.newerDocumentVersion=Belgeniz şu an kurulu olan Zotero sürümünden (%2$S) daha yeni bir sürümle (%1$S) yaratılmış. Lütfen bu belgeyi değiştirmeden önce Zotero'yu yükseltiniz.
|
integration.error.newerDocumentVersion=Belgeniz şu an kurulu olan Zotero sürümünden (%2$S) daha yeni bir sürümle (%1$S) yaratılmış. Lütfen bu belgeyi değiştirmeden önce Zotero'yu yükseltiniz.
|
||||||
integration.corruptField=Kitaplığınızdaki hangi eserde bu göndermenin temsil edildiğini Zotero'ya söyleyen bu göndermeye ilişkin Zotero alan kodu bozulmuştur. Eseri tekrar seçmek ister misiniz?
|
integration.corruptField=Kitaplığınızdaki hangi eserde bu göndermenin temsil edildiğini Zotero'ya söyleyen bu göndermeye ilişkin Zotero alan kodu bozulmuştur. Eseri tekrar seçmek ister misiniz?
|
||||||
integration.corruptField.description="Hayır"ı tıklamak bu eseri içeren göndermelerin alan kodlarını silecek, gönderme metnini koruyacak, ama bir olasılıkla kaynakçanızdan silecektir.
|
integration.corruptField.description="Hayır"ı tıklamak bu eseri içeren göndermelerin alan kodlarını silecek, gönderme metnini koruyacak, ama bir olasılıkla kaynakçanızdan silecektir.
|
||||||
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Bu versiyonu seç
|
||||||
|
|
||||||
sync.status.notYetSynced=Henüz eşitlenmedi
|
sync.status.notYetSynced=Henüz eşitlenmedi
|
||||||
sync.status.lastSync=Son eşitleme:
|
sync.status.lastSync=Son eşitleme:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Eşitleme sunucusuna oturum açılıyor
|
sync.status.loggingIn=Eşitleme sunucusuna oturum açılıyor
|
||||||
sync.status.gettingUpdatedData=Eşitleme sunucusundan güncelleme verisi alınıyor
|
sync.status.gettingUpdatedData=Eşitleme sunucusundan güncelleme verisi alınıyor
|
||||||
sync.status.processingUpdatedData=Eşitleme sunucusundan güncellenen veriler işleniyor
|
sync.status.processingUpdatedData=Eşitleme sunucusundan güncellenen veriler işleniyor
|
||||||
|
@ -1045,7 +1047,7 @@ proxies.error.scheme.invalid=Girilen vekil sunucu tablosu geçersiz; bu tüm ana
|
||||||
proxies.notification.recognized.label=Zotero bu web sitesine bir vekil sunucusu ile ulaştığınızı algılamıştır. Bundan sonra, %1$S'ye erişim isteklerinizi %2$S aracılığıyla otomatik olarak yapmak ister misiniz?
|
proxies.notification.recognized.label=Zotero bu web sitesine bir vekil sunucusu ile ulaştığınızı algılamıştır. Bundan sonra, %1$S'ye erişim isteklerinizi %2$S aracılığıyla otomatik olarak yapmak ister misiniz?
|
||||||
proxies.notification.associated.label=Zotero bu web sitesini daha önce tanımlanmış bir vekil sunucusu ile otomatik olarak ilişkilendirdi. Bundan sonra, %1$S'ye erişim istekleriniz %2$S'ye yönlendirilecektir.
|
proxies.notification.associated.label=Zotero bu web sitesini daha önce tanımlanmış bir vekil sunucusu ile otomatik olarak ilişkilendirdi. Bundan sonra, %1$S'ye erişim istekleriniz %2$S'ye yönlendirilecektir.
|
||||||
proxies.notification.redirected.label=Zotero, %1$S'ye erişim isteğinizi %2$S'deki vekil sunucusuna otomatik olarak yönlendirdi.
|
proxies.notification.redirected.label=Zotero, %1$S'ye erişim isteğinizi %2$S'deki vekil sunucusuna otomatik olarak yönlendirdi.
|
||||||
proxies.notification.enable.button=Enable...
|
proxies.notification.enable.button=Etkinleştir...
|
||||||
proxies.notification.settings.button=Proxy Settings...
|
proxies.notification.settings.button=Proxy Settings...
|
||||||
proxies.recognized.message=Bu vekil sunucunun eklenmesi, Zotero'nun sunucunun sayfalarından gelen eserleri tanımasına ve gelecekteki istekleri otomatik olarak %2$S aracılığıyla %1$S'ye yönlendirmesine izin verecektir.
|
proxies.recognized.message=Bu vekil sunucunun eklenmesi, Zotero'nun sunucunun sayfalarından gelen eserleri tanımasına ve gelecekteki istekleri otomatik olarak %2$S aracılığıyla %1$S'ye yönlendirmesine izin verecektir.
|
||||||
proxies.recognized.add=Vekil Sunucu Ekle
|
proxies.recognized.add=Vekil Sunucu Ekle
|
||||||
|
@ -1064,8 +1066,8 @@ recognizePDF.captcha.title=Lütfen CAPTCHA giriniz.
|
||||||
recognizePDF.captcha.description=Zotero, PDF'leri tanıyabilmek için Google Scholar'dan yardım alır. Google Scholar'ı kullanmaya devam etmek için, lütfen aşağıdaki resimdeki yazıyı giriniz.
|
recognizePDF.captcha.description=Zotero, PDF'leri tanıyabilmek için Google Scholar'dan yardım alır. Google Scholar'ı kullanmaya devam etmek için, lütfen aşağıdaki resimdeki yazıyı giriniz.
|
||||||
|
|
||||||
rtfScan.openTitle=Taramak için bir dosya seçin
|
rtfScan.openTitle=Taramak için bir dosya seçin
|
||||||
rtfScan.scanning.label=RTF Belgesini Tara...
|
rtfScan.scanning.label=RTF Belgesi Taranıyor...
|
||||||
rtfScan.saving.label=RTF Belgesini Biçimlendir...
|
rtfScan.saving.label=RTF Belgesi Biçimlendiriliyor...
|
||||||
rtfScan.rtf=Zengin Metin Biçimi (.rtf)
|
rtfScan.rtf=Zengin Metin Biçimi (.rtf)
|
||||||
rtfScan.saveTitle=Biçimlendirilmiş dosya için kaydedilecek yeri seçiniz.
|
rtfScan.saveTitle=Biçimlendirilmiş dosya için kaydedilecek yeri seçiniz.
|
||||||
rtfScan.scannedFileSuffix=(Tarandı)
|
rtfScan.scannedFileSuffix=(Tarandı)
|
||||||
|
@ -1125,11 +1127,11 @@ firstRunGuidance.toolbarButton.new=Zotero'yu açmak için 'Z' düğmesine basın
|
||||||
firstRunGuidance.toolbarButton.upgrade=Zotero simgesi, artık Firefox araç çubuğunda buulunabilir. Zotero'yu başlatmak için bu simgeye tıklayınız, ya da klavye kısayolu olan %S'i kullanınız.
|
firstRunGuidance.toolbarButton.upgrade=Zotero simgesi, artık Firefox araç çubuğunda buulunabilir. Zotero'yu başlatmak için bu simgeye tıklayınız, ya da klavye kısayolu olan %S'i kullanınız.
|
||||||
firstRunGuidance.saveButton=Bu düğmeye basarak herhangi bir web sayfasını Zotero kitaplığınıza ekleyiniz. Zotero, bazı sayfalarda, yazar ve tarih dahil olmak üzere, tüm detayları kaydedebilecektir.
|
firstRunGuidance.saveButton=Bu düğmeye basarak herhangi bir web sayfasını Zotero kitaplığınıza ekleyiniz. Zotero, bazı sayfalarda, yazar ve tarih dahil olmak üzere, tüm detayları kaydedebilecektir.
|
||||||
|
|
||||||
styles.bibliography=Bibliyografya
|
styles.bibliography=Kaynakça
|
||||||
styles.editor.save=Kaynakça Biçimini Kaydet
|
styles.editor.save=Kaynakça Biçimini Kaydet
|
||||||
styles.editor.warning.noItems=Zotero'da hiçbir eser seçilmedi.
|
styles.editor.warning.noItems=Zotero'da hiçbir eser seçilmedi.
|
||||||
styles.editor.warning.parseError=Hata ayrıştırıcı stili:
|
styles.editor.warning.parseError=Hata ayrıştırıcı stili:
|
||||||
styles.editor.warning.renderError=Hata üreten göndermeler ve bibliyografyalar:
|
styles.editor.warning.renderError=Hata üreten göndermeler ve kaynakça:
|
||||||
styles.editor.output.individualCitations=Tek Tek Göndermeler
|
styles.editor.output.individualCitations=Tek Tek Göndermeler
|
||||||
styles.editor.output.singleCitation=Tek Gönderme ("birinci" sırada olan)
|
styles.editor.output.singleCitation=Tek Gönderme ("birinci" sırada olan)
|
||||||
styles.preview.instructions=Zotero'da bir ya da birden çok eser seçip "Yenile" düğmesine basarak, bu eserlerin, kurulmuş CSL gönderme stilleri aracılığıyla nasıl sunulacağını görebilirsiniz.
|
styles.preview.instructions=Zotero'da bir ya da birden çok eser seçip "Yenile" düğmesine basarak, bu eserlerin, kurulmuş CSL gönderme stilleri aracılığıyla nasıl sunulacağını görebilirsiniz.
|
||||||
|
@ -1141,9 +1143,9 @@ publications.intro.authorship=Bu eseri ben yarattım.
|
||||||
publications.intro.authorship.files=Bu eseri ben yarattım ve dahil edilmiş dosyaları dağıtma hakkına sahibim.
|
publications.intro.authorship.files=Bu eseri ben yarattım ve dahil edilmiş dosyaları dağıtma hakkına sahibim.
|
||||||
publications.sharing.keepRightsField=Telif alanını aynen tut
|
publications.sharing.keepRightsField=Telif alanını aynen tut
|
||||||
publications.sharing.keepRightsFieldWhereAvailable=Eğer Telif alanı varsa, bu alanı aynen tut
|
publications.sharing.keepRightsFieldWhereAvailable=Eğer Telif alanı varsa, bu alanı aynen tut
|
||||||
publications.cc.moreInfo.text=Eserinizi bir CC lisansı altına koymadan önce, Creative Commons %S metnini okuduğunuza emin olunuz. Dikkat ediniz ki, daha sonra başka lisans koşulları seçseniz de, ya da eserinizi yayınlamayı durdursanız bile, uygulamayı seçtiğiniz lisans iptal edilemez.
|
publications.cc.moreInfo.text=Eserinizi bir CC lisansı altına koymadan önce, Creative Commons %S metnini okuduğunuza emin olunuz. Dikkat ediniz ki, daha sonra başka lisans koşulları seçseniz ya da eserinizi yayınlamayı durdursanız bile, uygulamayı seçtiğiniz lisans iptal edilemez.
|
||||||
publications.cc.moreInfo.linkText=Lisans sahipleri için dikkat edilmesi gereken hususlar
|
publications.cc.moreInfo.linkText=Lisans sahipleri için dikkat edilmesi gereken hususlar
|
||||||
publications.cc0.moreInfo.text=Eserinize CC0'ı uygulamadan önce, Creative Commons %S metnini okuduğunuza emin olunuz. Lütfen dikkat ediniz ki, daha sonra başka lisans koşulları seçseniz de, ya da eserinizi yayınlamayı durdursanız bile, eserinizi genel kamuya adamanız geri döndürülemez.
|
publications.cc0.moreInfo.text=Eserinize CC0'ı uygulamadan önce, Creative Commons %S metnini okuduğunuza emin olunuz. Lütfen dikkat ediniz ki, daha sonra başka lisans koşulları seçseniz ya da eserinizi yayınlamayı durdursanız bile, eserinizi genel kamuya adamanız geri döndürülemez.
|
||||||
publications.cc0.moreInfo.linkText=CC0 SSS
|
publications.cc0.moreInfo.linkText=CC0 SSS
|
||||||
publications.error.linkedFilesCannotBeAdded=Bağlantılanmış dosyalar Yayınlarıma eklenemez
|
publications.error.linkedFilesCannotBeAdded=Bağlantılanmış dosyalar Yayınlarıma eklenemez
|
||||||
|
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Вибрати цю версію
|
||||||
|
|
||||||
sync.status.notYetSynced=Ще не синхранізовано
|
sync.status.notYetSynced=Ще не синхранізовано
|
||||||
sync.status.lastSync=Попередня синхронізація:
|
sync.status.lastSync=Попередня синхронізація:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Реєстрація на сервері синхронізації
|
sync.status.loggingIn=Реєстрація на сервері синхронізації
|
||||||
sync.status.gettingUpdatedData=Отримання оновлених даних з серверу синхронізації
|
sync.status.gettingUpdatedData=Отримання оновлених даних з серверу синхронізації
|
||||||
sync.status.processingUpdatedData=Обробка оновлених даних
|
sync.status.processingUpdatedData=Обробка оновлених даних
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
|
||||||
|
|
||||||
sync.status.notYetSynced=Not yet synced
|
sync.status.notYetSynced=Not yet synced
|
||||||
sync.status.lastSync=Last sync:
|
sync.status.lastSync=Last sync:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=Logging in to sync server
|
sync.status.loggingIn=Logging in to sync server
|
||||||
sync.status.gettingUpdatedData=Getting updated data from sync server
|
sync.status.gettingUpdatedData=Getting updated data from sync server
|
||||||
sync.status.processingUpdatedData=Processing updated data
|
sync.status.processingUpdatedData=Processing updated data
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=选择此版本
|
||||||
|
|
||||||
sync.status.notYetSynced=尚未同步
|
sync.status.notYetSynced=尚未同步
|
||||||
sync.status.lastSync=上一次同步:
|
sync.status.lastSync=上一次同步:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=登录到同步服务器
|
sync.status.loggingIn=登录到同步服务器
|
||||||
sync.status.gettingUpdatedData=从同步服务器上更新数据
|
sync.status.gettingUpdatedData=从同步服务器上更新数据
|
||||||
sync.status.processingUpdatedData=正在从同步服务器上更新数据
|
sync.status.processingUpdatedData=正在从同步服务器上更新数据
|
||||||
|
|
|
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=選此版
|
||||||
|
|
||||||
sync.status.notYetSynced=尚未同步
|
sync.status.notYetSynced=尚未同步
|
||||||
sync.status.lastSync=上次同步:
|
sync.status.lastSync=上次同步:
|
||||||
|
sync.status.waiting=Waiting for other operations to finish
|
||||||
|
sync.status.preparing=Preparing sync
|
||||||
sync.status.loggingIn=正在登入同步伺服器
|
sync.status.loggingIn=正在登入同步伺服器
|
||||||
sync.status.gettingUpdatedData=正由同步伺服器更新資料
|
sync.status.gettingUpdatedData=正由同步伺服器更新資料
|
||||||
sync.status.processingUpdatedData=正由同步伺服器處理更新過的資料
|
sync.status.processingUpdatedData=正由同步伺服器處理更新過的資料
|
||||||
|
|
BIN
chrome/skin/default/zotero/spinner-14px.png
Normal file
BIN
chrome/skin/default/zotero/spinner-14px.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
BIN
chrome/skin/default/zotero/spinner-16px.png
Normal file
BIN
chrome/skin/default/zotero/spinner-16px.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.4 KiB |
BIN
chrome/skin/default/zotero/spinner-16px@2x.png
Normal file
BIN
chrome/skin/default/zotero/spinner-16px@2x.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
|
@ -3,6 +3,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#main-window {
|
#main-window {
|
||||||
min-width: 915px;
|
min-width: 670px;
|
||||||
min-height: 300px;
|
min-height: 300px;
|
||||||
}
|
}
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
<em:id>zotero@chnm.gmu.edu</em:id>
|
<em:id>zotero@chnm.gmu.edu</em:id>
|
||||||
<em:name>Zotero</em:name>
|
<em:name>Zotero</em:name>
|
||||||
<em:version>5.0.34.SOURCE</em:version>
|
<em:version>5.0.35.SOURCE</em:version>
|
||||||
<em:creator>Center for History and New Media<br/>George Mason University</em:creator>
|
<em:creator>Center for History and New Media<br/>George Mason University</em:creator>
|
||||||
<em:contributor>Dan Cohen</em:contributor>
|
<em:contributor>Dan Cohen</em:contributor>
|
||||||
<em:contributor>Sean Takats</em:contributor>
|
<em:contributor>Sean Takats</em:contributor>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
2018-01-07 23:00:00
|
2018-02-11 11:20:00
|
||||||
|
|
2
styles
2
styles
|
@ -1 +1 @@
|
||||||
Subproject commit b605dc3869e157f91eedb3f1519cd020c00bdafb
|
Subproject commit 190224fd811bf2f55342372aa3a79ad53df245c5
|
|
@ -161,21 +161,6 @@ function Reporter(runner) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Monkey-patch Mocha to check instanceof Error using compartment-local
|
|
||||||
// Error object
|
|
||||||
Mocha.Runner.prototype.fail = function(test, err){
|
|
||||||
++this.failures;
|
|
||||||
test.state = 'failed';
|
|
||||||
|
|
||||||
if ('string' == typeof err) {
|
|
||||||
err = new Error('the string "' + err + '" was thrown, throw an Error :)');
|
|
||||||
} else if (!(err instanceof Components.utils.getGlobalForObject(err).Error)) {
|
|
||||||
err = new Error('the ' + Mocha.utils.type(err) + ' ' + Mocha.utils.stringify(err) + ' was thrown, throw an Error :)');
|
|
||||||
}
|
|
||||||
|
|
||||||
this.emit('fail', test, err);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Setup Mocha
|
// Setup Mocha
|
||||||
mocha.setup({
|
mocha.setup({
|
||||||
ui: "bdd",
|
ui: "bdd",
|
||||||
|
|
|
@ -411,6 +411,10 @@ function createUnsavedDataObject(objectType, params = {}) {
|
||||||
switch (objectType) {
|
switch (objectType) {
|
||||||
case 'item':
|
case 'item':
|
||||||
case 'feedItem':
|
case 'feedItem':
|
||||||
|
if (params.parentItemID) {
|
||||||
|
params.parentID = params.parentItemID;
|
||||||
|
delete params.parentItemID;
|
||||||
|
}
|
||||||
if (params.title !== undefined || params.setTitle) {
|
if (params.title !== undefined || params.setTitle) {
|
||||||
obj.setField('title', params.title !== undefined ? params.title : Zotero.Utilities.randomString());
|
obj.setField('title', params.title !== undefined ? params.title : Zotero.Utilities.randomString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -480,4 +480,23 @@ describe("Zotero.Items", function () {
|
||||||
assert.instanceOf(feedItem, Zotero.FeedItem);
|
assert.instanceOf(feedItem, Zotero.FeedItem);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("#keepParents()", function () {
|
||||||
|
it("should remove child items of passed items", async function () {
|
||||||
|
var item1 = await createDataObject('item');
|
||||||
|
var item2 = await createDataObject('item', { itemType: 'note', parentItemID: item1.id });
|
||||||
|
var item3 = await createDataObject('item', { itemType: 'note', parentItemID: item1.id });
|
||||||
|
var item4 = await createDataObject('item');
|
||||||
|
var item5 = await createDataObject('item', { itemType: 'note', parentItemID: item4.id });
|
||||||
|
var otherItem = await createDataObject('item');
|
||||||
|
var item6 = await createDataObject('item', { itemType: 'note', parentItemID: otherItem.id });
|
||||||
|
|
||||||
|
var items = Zotero.Items.keepParents([item1, item2, item3, item4, item5, item6]);
|
||||||
|
assert.sameMembers(
|
||||||
|
// Convert to ids for clearer output
|
||||||
|
items.map(item => item.id),
|
||||||
|
[item1, item4, item6].map(item => item.id)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -57,4 +57,25 @@ describe("Zotero.Notifier", function () {
|
||||||
Zotero.Notifier.unregisterObserver(id);
|
Zotero.Notifier.unregisterObserver(id);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("#queue", function () {
|
||||||
|
it("should handle notification after DB timeout from another transaction", async function () {
|
||||||
|
var promise1 = Zotero.DB.executeTransaction(async function () {
|
||||||
|
var item = createUnsavedDataObject('item');
|
||||||
|
await item.save();
|
||||||
|
|
||||||
|
await Zotero.Promise.delay(2000);
|
||||||
|
|
||||||
|
Zotero.Notifier.queue('refresh', 'item', item.id);
|
||||||
|
}.bind(this));
|
||||||
|
|
||||||
|
var promise2 = Zotero.DB.executeTransaction(async function () {
|
||||||
|
var item = createUnsavedDataObject('item');
|
||||||
|
await item.save();
|
||||||
|
}.bind(this), { waitTimeout: 1000 });
|
||||||
|
|
||||||
|
await promise1;
|
||||||
|
assert.isTrue(promise2.isRejected());
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -782,9 +782,9 @@ describe("Zotero.Sync.Data.Engine", function () {
|
||||||
},
|
},
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
successful: {
|
successful: {
|
||||||
"0": item2.toResponseJSON(),
|
"0": item2.toResponseJSON({ version: lastLibraryVersion }),
|
||||||
"1": item1.toResponseJSON(),
|
"1": item1.toResponseJSON({ version: lastLibraryVersion }),
|
||||||
"2": item3.toResponseJSON()
|
"2": item3.toResponseJSON({ version: lastLibraryVersion })
|
||||||
},
|
},
|
||||||
unchanged: {},
|
unchanged: {},
|
||||||
failed: {}
|
failed: {}
|
||||||
|
@ -3024,6 +3024,67 @@ describe("Zotero.Sync.Data.Engine", function () {
|
||||||
assert.equal(called, 1);
|
assert.equal(called, 1);
|
||||||
assert.equal(spy.callCount, 2);
|
assert.equal(spy.callCount, 2);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it("should show file-write-access-lost dialog on 403 for attachment upload in group", async function () {
|
||||||
|
var group = await createGroup();
|
||||||
|
var libraryID = group.libraryID;
|
||||||
|
var libraryVersion = 5;
|
||||||
|
group.libraryVersion = libraryVersion;
|
||||||
|
await group.saveTx();
|
||||||
|
|
||||||
|
({ engine, client, caller } = await setup({
|
||||||
|
libraryID,
|
||||||
|
stopOnError: false
|
||||||
|
}));
|
||||||
|
|
||||||
|
var item1 = await createDataObject('item', { libraryID });
|
||||||
|
var item2 = await importFileAttachment(
|
||||||
|
'test.png',
|
||||||
|
{
|
||||||
|
libraryID,
|
||||||
|
parentID: item1.id,
|
||||||
|
version: 5
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
var called = 0;
|
||||||
|
server.respond(function (req) {
|
||||||
|
let requestJSON = JSON.parse(req.requestBody);
|
||||||
|
if (called == 0) {
|
||||||
|
req.respond(
|
||||||
|
200,
|
||||||
|
{
|
||||||
|
"Last-Modified-Version": ++libraryVersion
|
||||||
|
},
|
||||||
|
JSON.stringify({
|
||||||
|
successful: {
|
||||||
|
0: item1.toResponseJSON({ version: libraryVersion })
|
||||||
|
},
|
||||||
|
unchanged: {},
|
||||||
|
failed: {
|
||||||
|
1: {
|
||||||
|
code: 403,
|
||||||
|
message: "File editing access denied"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
called++;
|
||||||
|
});
|
||||||
|
|
||||||
|
var promise = waitForDialog();
|
||||||
|
var spy = sinon.spy(engine, "onError");
|
||||||
|
var result = await engine._startUpload();
|
||||||
|
assert.isTrue(promise.isResolved());
|
||||||
|
assert.equal(result, engine.UPLOAD_RESULT_SUCCESS);
|
||||||
|
assert.equal(called, 1);
|
||||||
|
assert.equal(spy.callCount, 1);
|
||||||
|
|
||||||
|
assert.ok(Zotero.Items.get(item1.id));
|
||||||
|
assert.isFalse(Zotero.Items.get(item2.id));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -313,27 +313,88 @@ describe("Zotero.Sync.Data.Local", function() {
|
||||||
});
|
});
|
||||||
var libraryID = group.libraryID;
|
var libraryID = group.libraryID;
|
||||||
|
|
||||||
|
// File attachment that's totally in sync -- leave alone
|
||||||
var attachment1 = yield importFileAttachment('test.png', { libraryID });
|
var attachment1 = yield importFileAttachment('test.png', { libraryID });
|
||||||
attachment1.attachmentSyncState = "in_sync";
|
attachment1.attachmentSyncState = "in_sync";
|
||||||
attachment1.attachmentSyncedModificationTime = 1234567890000;
|
attachment1.attachmentSyncedModificationTime = yield attachment1.attachmentModificationTime;
|
||||||
attachment1.attachmentSyncedHash = "8caf2ee22919d6725eb0648b98ef6bad";
|
attachment1.attachmentSyncedHash = yield attachment1.attachmentHash;
|
||||||
var attachment2 = yield importFileAttachment('test.pdf', { libraryID });
|
attachment1.synced = true;
|
||||||
|
yield attachment1.saveTx({
|
||||||
|
skipSyncedUpdate: true
|
||||||
|
});
|
||||||
|
|
||||||
|
// File attachment that's in sync with changed file -- delete file and mark for download
|
||||||
|
var attachment2 = yield importFileAttachment('test.png', { libraryID });
|
||||||
|
attachment2.synced = true;
|
||||||
|
yield attachment2.saveTx({
|
||||||
|
skipSyncedUpdate: true
|
||||||
|
});
|
||||||
|
|
||||||
|
// File attachment that's unsynced -- delete item and file
|
||||||
|
var attachment3 = yield importFileAttachment('test.pdf', { libraryID });
|
||||||
|
|
||||||
// Has to be called before resetUnsyncedLibraryFiles()
|
// Has to be called before resetUnsyncedLibraryFiles()
|
||||||
assert.isTrue(yield Zotero.Sync.Data.Local._libraryHasUnsyncedFiles(libraryID));
|
assert.isTrue(yield Zotero.Sync.Data.Local._libraryHasUnsyncedFiles(libraryID));
|
||||||
|
|
||||||
yield Zotero.Sync.Data.Local.resetUnsyncedLibraryFiles(libraryID);
|
yield Zotero.Sync.Data.Local.resetUnsyncedLibraryFiles(libraryID);
|
||||||
|
|
||||||
assert.isFalse(yield attachment1.fileExists());
|
assert.isTrue(yield attachment1.fileExists());
|
||||||
assert.isFalse(yield attachment2.fileExists());
|
assert.isFalse(yield attachment2.fileExists());
|
||||||
|
assert.isFalse(yield attachment3.fileExists());
|
||||||
assert.equal(
|
assert.equal(
|
||||||
attachment1.attachmentSyncState, Zotero.Sync.Storage.Local.SYNC_STATE_TO_DOWNLOAD
|
attachment1.attachmentSyncState, Zotero.Sync.Storage.Local.SYNC_STATE_IN_SYNC
|
||||||
);
|
);
|
||||||
assert.equal(
|
assert.equal(
|
||||||
attachment2.attachmentSyncState, Zotero.Sync.Storage.Local.SYNC_STATE_TO_DOWNLOAD
|
attachment2.attachmentSyncState, Zotero.Sync.Storage.Local.SYNC_STATE_TO_DOWNLOAD
|
||||||
);
|
);
|
||||||
|
assert.isFalse(Zotero.Items.get(attachment3.id));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should revert modified file attachment item", async function () {
|
||||||
|
var group = await createGroup({
|
||||||
|
version: 1,
|
||||||
|
libraryVersion: 2
|
||||||
|
});
|
||||||
|
var libraryID = group.libraryID;
|
||||||
|
|
||||||
|
// File attachment that's changed but file is in sync -- reset item, keep file
|
||||||
|
var attachment = await importFileAttachment('test.png', { libraryID });
|
||||||
|
var originalTitle = attachment.getField('title');
|
||||||
|
attachment.attachmentSyncedModificationTime = await attachment.attachmentModificationTime;
|
||||||
|
attachment.attachmentSyncedHash = await attachment.attachmentHash;
|
||||||
|
attachment.attachmentSyncState = "in_sync";
|
||||||
|
attachment.synced = true;
|
||||||
|
attachment.version = 2;
|
||||||
|
await attachment.saveTx({
|
||||||
|
skipSyncedUpdate: true
|
||||||
|
});
|
||||||
|
// Save original in cache
|
||||||
|
await Zotero.Sync.Data.Local.saveCacheObject(
|
||||||
|
'item',
|
||||||
|
libraryID,
|
||||||
|
Object.assign(
|
||||||
|
attachment.toJSON(),
|
||||||
|
// TEMP: md5 and mtime aren't currently included in JSON, and without it the
|
||||||
|
// file gets marked for download when the item gets reset from the cache
|
||||||
|
{
|
||||||
|
md5: attachment.attachmentHash,
|
||||||
|
mtime: attachment.attachmentSyncedModificationTime
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
// Modify title
|
||||||
|
attachment.setField('title', "New Title");
|
||||||
|
await attachment.saveTx();
|
||||||
|
|
||||||
|
await Zotero.Sync.Data.Local.resetUnsyncedLibraryFiles(libraryID);
|
||||||
|
|
||||||
|
assert.isTrue(await attachment.fileExists());
|
||||||
|
assert.equal(attachment.getField('title'), originalTitle);
|
||||||
|
assert.equal(
|
||||||
|
attachment.attachmentSyncState, Zotero.Sync.Storage.Local.SYNC_STATE_IN_SYNC
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 18f8d6a2f3d7727c2acfd42f021f0adbd2abd9df
|
Subproject commit 613dc792e808f7b317707912f933b04be26c0fc0
|
Loading…
Reference in New Issue
Block a user