Compare commits

...

33 Commits

Author SHA1 Message Date
Dan Stillman
8fced28e89 Update locales from Transifex 2018-02-11 15:13:14 -05:00
Dan Stillman
2ece5f04fe Update version and submodules 2018-02-11 14:17:26 -05:00
Dan Stillman
aa56ebae1a Fix "channel is undefined" for invalid HTTP response during WebDAV sync
Follow-up to 4bbae6e17

We're now using Zotero.HTTP.request(), which does its own checking for
security errors, so there's no need to do WebDAV-specific checks (though
we could consider checking for Zotero.HTTP.SecurityError and showing
more specific messages, since a self-signed certificate is more likely
in the case of WebDAV).

(cherry picked from commit f04a8c3736)
2018-02-11 14:15:49 -05:00
Dan Stillman
b5aeeaa60b Better handling of invalid HTTP responses
If a server returns an invalid HTTP response (e.g., Content-Encoding:
gzip with a plaintext body, a.k.a. NS_ERROR_INVALID_CONTENT_ENCODING)
but we can still parse a 4xx or 5xx HTTP response code, use that for the
XHR status, since it might be enough for what we need to do (e.g.,
verify a 404 from a WebDAV server). This fixes a current problem with
Box [1].

Also fix a "msg is not defined" error when the XHR status is 0 but the
SSL connection is fine and include the channel and response status on
the UnexpectedStatusException object (though both of these would now
only happen on an invalid 2xx response, when the XHR status would remain
as 0).

[1] https://forums.zotero.org/discussion/comment/301014/#Comment_301014

(cherry picked from commit 4bbae6e17a)
2018-02-11 14:15:45 -05:00
Dan Stillman
9304042cd4 Fix detection of WebDAV settings changes when clicking Verify Server
onchange() weirdly isn't called when clicking off the textbox to a button

Fixes #1291

(cherry picked from commit 1aade0f268)
2018-02-11 14:15:41 -05:00
Dan Stillman
0617392e81 Show "More Information…" button on WebDAV SSL cert error
(Though the button takes you to to
https://www.zotero.org/support/kb/ssl_certificate_error rather than
https://www.zotero.org/support/kb/incomplete_cert_chain, since the error
comes from Zotero.HTTP.)

(cherry picked from commit e9a3f9b0e0)
2018-02-11 14:15:34 -05:00
Dan Stillman
431197992b Fix "msg is not defined" on HTTP connection failure
(cherry picked from commit 84d8bb4020)
2018-02-11 14:15:29 -05:00
Dan Stillman
b4311e08e2 Wait for any DB transactions to finish before starting sync
purgeDataObjects(), which runs at the beginning of the sync process,
uses transactions, and those can fail after the default wait timeout if
there's another active transaction. Instead, check explicitly for
another transaction and, if there is one, display a nice message and
wait for it to finish. This isn't foolproof, but it should reduce the
frequency of "operation timed out" sync errors. (Avoiding all long
transactions would be a better solution.)

(cherry picked from commit bd7e1b222d)
2018-02-11 14:15:18 -05:00
Dan Stillman
6c18e9e260 Fix "Can't queue event outside of a transaction"
If a transaction took over 30 seconds and another transaction timed out
waiting for it, the second transaction would reset the notifier queue,
but if the first transaction then tried to queue an event, it would fail
with this error and roll back. (It would be nice to figure out why
transactions are taking over 30 seconds, though.)

(cherry picked from commit 3f6ecc0021)
2018-02-11 14:15:12 -05:00
Dan Stillman
cc84a24995 Remove fail() override in Mocha
I'm not sure what this was for, but at least with an async test function
it seems to be causing spurious "the string 'x' was thrown, throw an
Error :)" messages that hide the real error.

(cherry picked from commit 4731b8f905)
2018-02-11 14:15:07 -05:00
Dan Stillman
4290ebcc16 Use rowid to clean invalid entries from translatorCache
Since in truly weird cases [1] fileName might not exist

https://forums.zotero.org/discussion/comment/300558/#Comment_300558
(cherry picked from commit 06fb74aafd)
2018-02-11 14:14:28 -05:00
Dan Stillman
6ae0c6055e Allow dragging parent items to collection if children are selected
This is a simplified version of the fix from #872. Unlike the proposal
in #36, this doesn't require all child items to be selected, since in a
search some children might be grayed out. If the child of an unselected
parent item is included, the drag isn't allowed.

Closes #36

(cherry picked from commit 38411fb56c)
2018-02-11 14:14:13 -05:00
Dan Stillman
410976f991 Allow parentItemID as a createDataObject() parameter in tests
Not just `parentID`

(cherry picked from commit ad216bcf97)
2018-02-11 14:14:09 -05:00
Dan Stillman
5dbae77c98 Reduce minimum width of Zotero pane to 670px
We could potentially do more, but this is the narrowest the pane can be
with the left pane collapsed without starting to hide toolbar icons, so
let's try this. (This will still hide the sync icon if the left pane
isn't collapsed.)

Closes #675
Closes #1183

(cherry picked from commit 2d43518ef2)
2018-02-11 14:13:50 -05:00
Dan Stillman
f38cd21195 Don't show Title in column picker, because hiding it doesn't make sense
(cherry picked from commit e4a399671a)
2018-02-11 14:13:44 -05:00
Dan Stillman
42095b0b42 Update citeproc-js to 1.1.183
(cherry picked from commit 4a41f219d8)
2018-02-11 14:13:06 -05:00
Dan Stillman
83ae42e5a0 Fix test breakage from d67c654245
(cherry picked from commit 5b46735204)
2018-02-11 14:12:50 -05:00
Dan Stillman
575866005a Prompt to reset local group files on 403 for file attachment upload
And reset modified file attachments when resetting files

(cherry picked from commit c5fa1303e3)
2018-02-11 14:12:43 -05:00
Dan Stillman
3eae1a59fe Add version option to toResponseJSON()
(cherry picked from commit d67c654245)
2018-02-11 14:12:38 -05:00
Dan Stillman
0b951785f4 Warn about version 0 when saving to sync cache
This should be an error, because the API will never return 0, but most
tests don't currently set the version properly in the response JSON.

(cherry picked from commit 3390f2405b)
2018-02-11 14:12:35 -05:00
Dan Stillman
df3956fbed Enable 2x PDF icon
(cherry picked from commit 0bb0912a7b)
2018-02-11 14:11:34 -05:00
Dan Stillman
be300ec62b Fix startup hang if note is null in database
(cherry picked from commit 2194dff7a4)
2018-02-11 14:10:26 -05:00
Dan Stillman
1bdb329bc8 Add missing spinners from 87cf336e2
(cherry picked from commit 48757f08ff)
2018-02-11 14:09:36 -05:00
Dan Stillman
50862501f6 Fix translator architecture hangs on bad JSON in translatorCache
(cherry picked from commit cc9efde843)
2018-02-11 14:09:20 -05:00
Dan Stillman
250a19ec03 Start sync icon spinning before purging data
(cherry picked from commit 2b8311d3d7)
2018-02-11 14:08:09 -05:00
Dan Stillman
ea29c5cb10 Update version 2018-02-03 02:46:10 -05:00
Dan Stillman
12c9e55472 Update version and submodules 2018-02-03 00:52:15 -05:00
Dan Stillman
380ee9c0ed Update version 2018-01-22 15:39:17 -05:00
Dan Stillman
4ed33b4da9 Run deploys from Travis on *-hotfix branches 2018-01-22 05:32:50 -05:00
Dan Stillman
ff9ee48e0f Update version 2018-01-22 05:30:18 -05:00
Dan Stillman
e577009154 Update version 2018-01-19 19:23:45 -05:00
Dan Stillman
246d7af3eb Force ZIP build on Travis 2018-01-19 13:45:25 -05:00
Dan Stillman
2edf2641a2 Update version 2018-01-19 13:34:23 -05:00
92 changed files with 760 additions and 443 deletions

View File

@ -35,10 +35,10 @@ before_script:
- sh -e /etc/init.d/xvfb start
- npm i
- npm run build
- if [ $FX_VERSION = "54.0" ] &&
[ $TRAVIS_REPO_SLUG = "zotero/zotero" ] &&
[ $TRAVIS_BRANCH = "master" ] &&
[ $TRAVIS_PULL_REQUEST = "false" ]; then
- if [[ $FX_VERSION = "54.0" &&
$TRAVIS_REPO_SLUG = "zotero/zotero" &&
($TRAVIS_BRANCH = "master" || $TRAVIS_BRANCH = *-hotfix) &&
$TRAVIS_PULL_REQUEST = "false" ]]; then
mkdir build-zip;
cd build;
zip -r ../build-zip/$TRAVIS_COMMIT.zip *;

@ -1 +1 @@
Subproject commit 684bad2035a563b0661c1eb17b0ee6ba6325e571
Subproject commit 15396c0c18b768f0837015091bae9c931d4dd56b

View File

@ -398,7 +398,6 @@ Zotero_Preferences.Sync = {
onStorageSettingsKeyPress: Zotero.Promise.coroutine(function* (event) {
if (event.keyCode == 13) {
yield this.onStorageSettingsChange();
yield this.verifyStorageServer();
}
}),
@ -480,6 +479,11 @@ Zotero_Preferences.Sync = {
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");
var verifyButton = document.getElementById("storage-verify");

View File

@ -24,7 +24,7 @@
*/
var CSL = {
PROCESSOR_VERSION: "1.1.182",
PROCESSOR_VERSION: "1.1.183",
CONDITION_LEVEL_TOP: 1,
CONDITION_LEVEL_BOTTOM: 2,
PLAIN_HYPHEN_REGEX: /(?:[^\\]-|\u2013)/,
@ -1353,6 +1353,7 @@ CSL.parseXml = function(str) {
for (var i=lst.length-2;i>-1;i--) {
if (lst[i].slice(1).indexOf("<") === -1) {
var stub = lst[i].slice(0, 5);
if (lst[i].slice(-2) !== "/>") {
if (stub === "<term") {
if (lst[i+1].slice(0, 6) === "</term") {
lst[i] = lst[i] + lst[i+1];
@ -1366,6 +1367,7 @@ CSL.parseXml = function(str) {
}
}
}
}
return lst;
}
function _decodeHtmlEntities(str) {
@ -4732,7 +4734,7 @@ CSL.Engine.Opt = function () {
this.development_extensions.static_statute_locator = false;
this.development_extensions.csl_reverse_lookup_support = 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.handle_parallel_articles = 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 groupblob = new CSL.Blob(null, null, "url-wrapper");
groupblob.decorations.push(["@DOI", "true"]);
value = value.replace(/^https?:\/\/doi.org\//, "");
value = value.replace(/^https?:\/\/doi\.org\//, "");
if (value.match(/^https?:\/\//)) {
var prefix = "";
} else {

View File

@ -1606,6 +1606,7 @@ Zotero.CollectionTreeView.prototype.canDropCheck = function (row, orient, dataTr
if (dataType == 'zotero/item') {
var ids = data;
var items = Zotero.Items.get(ids);
items = Zotero.Items.keepParents(items);
var skip = true;
for (let item of items) {
// Can only drag top-level items
@ -2115,6 +2116,7 @@ Zotero.CollectionTreeView.prototype.drop = Zotero.Promise.coroutine(function* (r
}
if (targetTreeRow.isPublications()) {
items = Zotero.Items.keepParents(items);
let io = this._treebox.treeBody.ownerDocument.defaultView
.ZoteroPane.showPublicationsWizard(items);
if (!io) {

View File

@ -459,6 +459,7 @@ Zotero.ItemTypes = new function() {
// HiDPI images available
case 'attachment-link':
case 'attachment-pdf':
case 'attachment-web-link':
case 'artwork':
case 'audioRecording':
@ -481,7 +482,6 @@ Zotero.ItemTypes = new function() {
// No HiDPI images available
case 'attachment-snapshot':
case 'attachment-pdf':
case 'blogPost':
case 'case':
case 'conferencePaper':

View File

@ -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?
return {
var json = {
key: this.key,
version: this.version,
meta: {},
data: this.toJSON(options)
};
if (options.version) {
json.version = json.data.version = options.version;
}
return json;
}

View File

@ -415,6 +415,10 @@ Zotero.Items = function() {
// Convert non-HTML notes on-the-fly
if (note !== "") {
if (typeof note == 'number') {
note = '' + note;
}
if (typeof note == 'string') {
if (!note.substr(0, 36).match(/^<div class="zotero-note znv[0-9]+">/)) {
note = Zotero.Utilities.htmlSpecialChars(note);
note = Zotero.Notes.notePrefix + '<p>'
@ -431,6 +435,12 @@ Zotero.Items = function() {
let endLen = 6; // "</div>".length
note = note.substr(startLen, note.length - startLen - endLen);
}
// Clear null notes
else {
note = '';
notesToUpdate.push([item.id, '']);
}
}
item._noteText = note ? note : '';
item._loaded.note = true;
@ -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
*

View File

@ -485,7 +485,7 @@ Zotero.DBConnection.prototype.executeTransaction = Zotero.Promise.coroutine(func
// Run begin callbacks
for (var i=0; i<this._callbacks.begin.length; i++) {
if (this._callbacks.begin[i]) {
this._callbacks.begin[i]();
this._callbacks.begin[i](id);
}
}
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
var f;
while (f = this._callbacks.current.commit.shift()) {
yield Zotero.Promise.resolve(f());
yield Zotero.Promise.resolve(f(id));
}
// Run commit callbacks
for (var i=0; i<this._callbacks.commit.length; 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
var f;
while (f = this._callbacks.current.rollback.shift()) {
yield Zotero.Promise.resolve(f());
yield Zotero.Promise.resolve(f(id));
}
// Run rollback callbacks
for (var i=0; i<this._callbacks.rollback.length; i++) {
if (this._callbacks.rollback[i]) {
yield Zotero.Promise.resolve(this._callbacks.rollback[i]());
yield Zotero.Promise.resolve(this._callbacks.rollback[i](id));
}
}

View File

@ -12,6 +12,8 @@ Zotero.HTTP = new function() {
this.UnexpectedStatusException = function(xmlhttp, msg) {
this.xmlhttp = xmlhttp;
this.status = xmlhttp.status;
this.channelStatus = null;
this.responseStatus = null;
this.channel = xmlhttp.channel;
this.message = msg;
this.stack = new Error().stack;
@ -33,6 +35,24 @@ Zotero.HTTP = new function() {
catch (e) {
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.is4xx = function () {
@ -248,6 +268,18 @@ Zotero.HTTP = new function() {
xmlhttp.onloadend = function() {
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) {
var success = options.successCodes.indexOf(status) != -1;
}
@ -264,13 +296,13 @@ Zotero.HTTP = new function() {
if(success) {
Zotero.debug("HTTP " + method + " " + dispURL
+ " succeeded with " + xmlhttp.status);
+ " succeeded with " + status);
if (options.debug) {
Zotero.debug(xmlhttp.responseText);
}
deferred.resolve(xmlhttp);
} 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) {
msg += ":\n\n" + xmlhttp.responseText;
}
@ -1024,6 +1056,9 @@ Zotero.HTTP = new function() {
}
let secInfo = channel.securityInfo;
let msg;
let dialogButtonText;
let dialogButtonCallback;
if (secInfo instanceof Ci.nsITransportSecurityInfo) {
secInfo.QueryInterface(Ci.nsITransportSecurityInfo);
if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_INSECURE)
@ -1052,6 +1087,7 @@ Zotero.HTTP = new function() {
== Ci.nsIWebProgressListener.STATE_IS_BROKEN) {
msg = Zotero.getString('sync.error.sslConnectionError');
}
if (msg) {
throw new Zotero.HTTP.SecurityException(
msg,
{
@ -1061,6 +1097,7 @@ Zotero.HTTP = new function() {
);
}
}
}
/**
* Mimics the window.location/document.location interface, given an nsIURL

View File

@ -32,7 +32,7 @@ Zotero.Notifier = new function(){
'collection-item', 'item-tag', 'tag', 'setting', 'group', 'trash',
'bucket', 'relation', 'feed', 'feedItem', 'sync', 'api-key'
];
var _inTransaction;
var _transactionID = false;
var _queue = {};
@ -106,7 +106,7 @@ Zotero.Notifier = new function(){
* - New events and types should be added to the order arrays in commit()
**/
this.trigger = Zotero.Promise.coroutine(function* (event, type, ids, extraData, force) {
if (_inTransaction && !force) {
if (_transactionID && !force) {
return this.queue(event, type, ids, extraData);
}
@ -173,7 +173,7 @@ Zotero.Notifier = new function(){
queue = queue._queue;
}
else {
if (!_inTransaction) {
if (!_transactionID) {
throw new Error("Can't queue event outside of a transaction");
}
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
* notifications will break until Firefox is restarted or commit(true)/reset() is called manually
*
* @param {String} [transactionID]
*/
this.begin = function () {
if (!_inTransaction) {
_inTransaction = true;
}
this.begin = function (transactionID = true) {
_transactionID = transactionID;
}
@ -291,8 +291,9 @@ Zotero.Notifier = new function(){
*
* @param {Zotero.Notifier.Queue|Zotero.Notifier.Queue[]} [queues] - One or more queues to use
* 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 (!Array.isArray(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");
}
else {
@ -375,7 +376,7 @@ Zotero.Notifier = new function(){
}
if (!queues) {
this.reset();
this.reset(transactionID);
}
if (totals) {
@ -407,10 +408,13 @@ Zotero.Notifier = new function(){
/*
* Reset the event queue
*/
this.reset = function () {
this.reset = function (transactionID = true) {
if (transactionID != _transactionID) {
return;
}
//Zotero.debug("Resetting notifier event queue");
_queue = {};
_inTransaction = false;
_transactionID = false;
}
}

View File

@ -744,18 +744,31 @@ Zotero.Schema = new function(){
index[id].extract = true;
}
let sql = "SELECT metadataJSON FROM translatorCache";
let dbCache = yield Zotero.DB.columnQueryAsync(sql);
let sql = "SELECT rowid, fileName, metadataJSON FROM translatorCache";
let rows = yield Zotero.DB.queryAsync(sql);
// If there's anything in the cache, see what we actually need to extract
if (dbCache) {
for (let i = 0; i < dbCache.length; i++) {
let metadata = JSON.parse(dbCache[i]);
for (let i = 0; i < rows.length; i++) {
let json = rows[i].metadataJSON;
let metadata;
try {
metadata = JSON.parse(json);
}
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;
}
}
}
for (let translatorID in index) {
// Use index file and DB cache for translator entries,

View File

@ -224,7 +224,6 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
try {
var req = yield Zotero.HTTP.request("OPTIONS", this.rootURI);
this._checkResponse(req);
Zotero.debug("WebDAV credentials cached");
this._cachedCredentials = true;
@ -595,7 +594,6 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
}
// Test whether URL is WebDAV-enabled
try {
var req = yield Zotero.HTTP.request(
"OPTIONS",
uri,
@ -612,13 +610,6 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
debug: true
}
);
}
catch (e) {
if (e instanceof Zotero.HTTP.UnexpectedStatusException) {
this._checkResponse(e.xmlhttp, e.channel);
}
throw e;
}
Zotero.debug(req.getAllResponseHeaders());
@ -866,7 +857,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
break;
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');
break;
@ -877,18 +868,25 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
}
}
// TEMP
if (!errorMsg) {
errorMsg = err;
}
var e;
if (errorMsg) {
e = {
message: errorMsg,
// Prevent Report Errors button for known errors
dialogButtonText: null
};
Zotero.logError(errorMsg);
}
else {
e = err;
Zotero.logError(err);
}
if (!skipSuccessMessage) {
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;
}),
@ -1126,8 +1124,6 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
throw e;
}
this._checkResponse(req);
// mod_speling can return 300s for 404s with base name matches
if (req.status == 404 || req.status == 300) {
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) {
throw new Error(
Zotero.getString('sync.storage.error.webdav.requestError', [status, method])

View File

@ -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
// 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().

View File

@ -239,6 +239,8 @@ Zotero.Sync.Data.Local = {
_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);
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)) {
let objectTypePlural = Zotero.DataObjectUtilities.getObjectTypePlural(objectType);
let objectsClass = Zotero.DataObjectUtilities.getObjectsClassForObjectType(objectType);
// New/modified objects
let ids = yield Zotero.Sync.Data.Local.getUnsynced(objectType, libraryID);
let keys = ids.map(id => objectsClass.getLibraryAndKeyFromID(id).key);
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);
let ids = yield this.getUnsynced(objectType, libraryID);
yield this._resetObjects(libraryID, objectType, ids);
}
// Mark library for full sync
@ -305,13 +274,62 @@ Zotero.Sync.Data.Local = {
*
* _libraryHasUnsyncedFiles(), which checks for updated files, must be called first.
*/
resetUnsyncedLibraryFiles: Zotero.Promise.coroutine(function* (libraryID) {
var itemIDs = yield Zotero.Sync.Storage.Local.getFilesToUpload(libraryID);
resetUnsyncedLibraryFiles: async function (libraryID) {
// Reset unsynced file attachments
var itemIDs = await Zotero.Sync.Data.Local.getUnsynced('item', libraryID);
var toReset = [];
for (let itemID of itemIDs) {
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 () {
@ -1056,6 +1074,12 @@ Zotero.Sync.Data.Local = {
Zotero.debug(json, 1);
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
return json.data === undefined ? {
key: json.key,

View File

@ -127,9 +127,6 @@ Zotero.Sync.Runner_Module = function (options = {}) {
try {
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();
if (!apiKey) {
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');
// 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 keyInfo = yield this.checkAccess(client, options);

View File

@ -68,7 +68,7 @@ Zotero.Translators = new function() {
_cache = {"import":[], "export":[], "web":[], "webWithTargetAll":[], "search":[]};
_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 dbCache = {};
for (let i = 0; i < dbCacheResults.length; i++) {
@ -116,10 +116,23 @@ Zotero.Translators = new function() {
// Get JSON from cache if possible
if (memCacheJSON || dbCacheEntry) {
try {
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
else {
try {
@ -198,7 +211,8 @@ Zotero.Translators = new function() {
for (let fileName in dbCache) {
if (!filesInCache[fileName]) {
yield Zotero.DB.queryAsync(
"DELETE FROM translatorCache WHERE fileName = ?", fileName
"DELETE FROM translatorCache WHERE rowid=?",
dbCache[fileName].rowid
);
}
}

View File

@ -620,9 +620,9 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
Zotero.HTTP.triggerProxyAuth();
// Add notifier queue callbacks to the DB layer
Zotero.DB.addCallback('begin', function () { return Zotero.Notifier.begin(); });
Zotero.DB.addCallback('commit', function () { return Zotero.Notifier.commit(); });
Zotero.DB.addCallback('rollback', function () { return Zotero.Notifier.reset(); });
Zotero.DB.addCallback('begin', id => Zotero.Notifier.begin(id));
Zotero.DB.addCallback('commit', id => Zotero.Notifier.commit(null, id));
Zotero.DB.addCallback('rollback', id => Zotero.Notifier.reset(id));
try {
// Require >=2.1b3 database to ensure proper locking

View File

@ -393,7 +393,7 @@
<treecols id="zotero-items-columns-header">
<treecol
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"/>
<splitter class="tree-splitter"/>
<treecol

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Not yet synced
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.gettingUpdatedData=Getting updated data from sync server
sync.status.processingUpdatedData=Processing updated data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=لم تتم مزامنته بعد
sync.status.lastSync=آخر تزامن:
sync.status.waiting=Waiting for other operations to finish
sync.status.preparing=Preparing sync
sync.status.loggingIn=تسجيل الدخول لخادم التزامن
sync.status.gettingUpdatedData=جاري تحديث البيانات من خادم التزامن
sync.status.processingUpdatedData=جاري معالجة البيانات المحدثة

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Все още не е синхронизиран
sync.status.lastSync=Последна синхронизация:
sync.status.waiting=Waiting for other operations to finish
sync.status.preparing=Preparing sync
sync.status.loggingIn=Влиза в сървъра за синхронизации
sync.status.gettingUpdatedData=Изтегля осъвременените дани от синхронизиращият сървър
sync.status.processingUpdatedData=Обработва осъвременените дани.

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Tria aquesta versió
sync.status.notYetSynced=Encara no s'ha sincronitzat
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.gettingUpdatedData=Obtenint dades actualitzades de servidor de sincronització
sync.status.processingUpdatedData=Processant les dades actualitzades del servidor de sincronització

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Vybrat tuto verzi
sync.status.notYetSynced=Zatím nesynchronizováno
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.gettingUpdatedData=Získávám pozměněná data ze synchronizačního serveru
sync.status.processingUpdatedData=Zpracovávám pozměněná data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Vælge denne version
sync.status.notYetSynced=Endnu ikke synkroniseret
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.gettingUpdatedData=Henter opdaterede data fra synkroniseringsserver
sync.status.processingUpdatedData=Behandler opdaterede data fra synkroniseringsserver

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Diese Version auswählen
sync.status.notYetSynced=Noch nicht synchronisiert
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.gettingUpdatedData=Aktualisierte Daten vom Sync-Server empfangen
sync.status.processingUpdatedData=Aktualisierte Daten vom Sync-Server verarbeiten

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Not yet synced
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.gettingUpdatedData=Getting updated data from sync server
sync.status.processingUpdatedData=Processing updated data

View File

@ -965,6 +965,8 @@ sync.conflict.chooseThisVersion = Choose this version
sync.status.notYetSynced = Not yet synced
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.gettingUpdatedData = Getting updated data from sync server
sync.status.processingUpdatedData = Processing updated data from sync server

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Elegir esta versión
sync.status.notYetSynced=Aún sin sincronizar
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.gettingUpdatedData=Obteniendo datos actualizados del servidor de sincronización
sync.status.processingUpdatedData=Procesando los datos actualizados

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Sünkroonimist ei ole toimunud
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.gettingUpdatedData=Andmete uuendamine serverist
sync.status.processingUpdatedData=Uuendatud andmete töötlemine

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Sinkronizatu gabe oraindik
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.gettingUpdatedData=Datu eguneratuak zerbitzaritik jasotzen...
sync.status.processingUpdatedData=Datu berriak prozesatzen...

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=هنوز همزمان‌ نشده است
sync.status.lastSync=آخرین همزمان‌‌سازی:
sync.status.waiting=Waiting for other operations to finish
sync.status.preparing=Preparing sync
sync.status.loggingIn=ورود به کارگزار همزمان‌‌سازی
sync.status.gettingUpdatedData=در حال دریافت اطلاعات روزآمد شده از کارگزار همزمان‌‌سازی
sync.status.processingUpdatedData=در حال پردازش اطلاعات روزآمد شده

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Valitse tämä versio
sync.status.notYetSynced=Ei vielä synkronoitu
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.gettingUpdatedData=Haetaan päivitetyt tiedot synkronointipalvelimelta
sync.status.processingUpdatedData=Processing updated data

View File

@ -68,7 +68,7 @@
<!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.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.tos2 "modalités et conditions">
<!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.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.restoreFromServer "Restore from Online Library">
<!ENTITY zotero.preferences.sync.reset.restoreFromServer.desc "Overwrite local Zotero data with data from the online library.">
<!ENTITY zotero.preferences.sync.reset.restoreToServer "Restore to Online Library">
<!ENTITY zotero.preferences.sync.reset.restoreToServer.desc "Overwrite online library with local Zotero data">
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Restaurer depuis la bibliothèque en ligne">
<!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 "Restaurer vers la bibliothèque en ligne">
<!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.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.button "Réinitialiser…">

View File

@ -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.singular=%S note :
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.renameAssociatedFile=Renommer le fichier associé
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.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.restoreToServer=%1$S will replace data in “%2$S” on %3$S with data from this computer.
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.cleared=The file sync history for “%S” has been cleared.
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=Remplacer les données dans la bibliothèque en ligne
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=L'historique de synchronisation de “%S” a été effacé
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.
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choisir cette version
sync.status.notYetSynced=Pas encore synchronisé.
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.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

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Escoller esta versión
sync.status.notYetSynced=Aínda non sincronizado
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.gettingUpdatedData=Obtendo datos actualizados do servidor de sincronización
sync.status.processingUpdatedData=Procesando datos actualizados

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Not yet synced
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.gettingUpdatedData=Getting updated data from sync server
sync.status.processingUpdatedData=Processing updated data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Not yet synced
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.gettingUpdatedData=Getting updated data from sync server
sync.status.processingUpdatedData=Processing updated data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Válassza ezt a verziót
sync.status.notYetSynced=Nincs 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.gettingUpdatedData=Frissített adatok fogadása a szinkronizációs szerverről
sync.status.processingUpdatedData=A frissített adatok feldolgozása

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Belum disinkronisasikan
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.gettingUpdatedData=Mendapatkan data yang termutakhirkan dari server sinkronisasi
sync.status.processingUpdatedData=Memproses data yang termutakhirkan dari server sinkronisasi

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Veldu þessa útgáfu
sync.status.notYetSynced=Ekki enn samhæft
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.gettingUpdatedData=Næ í uppfærð gögn frá samhæfingarþjóni
sync.status.processingUpdatedData=Processing updated data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Sincronizzazione non ancora effettuata
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.gettingUpdatedData=Ricezione dei dati aggiornati dal server di sincronizzazione
sync.status.processingUpdatedData=Processing updated data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=このヴァージョンを選ぶ
sync.status.notYetSynced=未同期
sync.status.lastSync=最後の同期:
sync.status.waiting=Waiting for other operations to finish
sync.status.preparing=Preparing sync
sync.status.loggingIn=同期サーバへログイン中
sync.status.gettingUpdatedData=更新されたデータを同期サーバから受信中
sync.status.processingUpdatedData=更新されたデータを処理中

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=មិនទាន់បានធ្វើសមកាលកម្ម
sync.status.lastSync=ធ្វើសមកាលកម្មលើកចុងក្រោយ:
sync.status.waiting=Waiting for other operations to finish
sync.status.preparing=Preparing sync
sync.status.loggingIn=ចូលទៅកាន់ម៉ាស៊ីនបម្រើសមកាលកម្ម
sync.status.gettingUpdatedData=ទទួលទិន្នន័យទំនើបកម្មពីម៉ាស៊ីនបម្រើសមកាលកម្ម
sync.status.processingUpdatedData=កំពុងដំណើរការទាញទិន្នន័យទំនើបកម្មពីម៉ាស៊ីនបម្រើសមកាលកម្ម

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=이 버전 선택
sync.status.notYetSynced=아직 동기화되지 않음
sync.status.lastSync=최종 동기화:
sync.status.waiting=Waiting for other operations to finish
sync.status.preparing=Preparing sync
sync.status.loggingIn=동기화 서버로 로그인
sync.status.gettingUpdatedData=동기화 서버로부터 갱신된 자료 받기
sync.status.processingUpdatedData=자료 갱신 작업중

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Pasirinkite šią versiją
sync.status.notYetSynced=Dar nesinchronizuota
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.gettingUpdatedData=Iš sinchronizavimo serverio parsiunčiami naujausi duomenys
sync.status.processingUpdatedData=Apdorojami naujausi sinchronizavimo serverio duomenys

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Not yet synced
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.gettingUpdatedData=Getting updated data from sync server
sync.status.processingUpdatedData=Processing updated data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Not yet synced
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.gettingUpdatedData=Getting updated data from sync server
sync.status.processingUpdatedData=Processing updated data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Kies deze versie
sync.status.notYetSynced=Nog niet gesynchroniseerd
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.gettingUpdatedData=Bezig met het downloaden van bijgewerkte gegevens van de synchronisatie-server
sync.status.processingUpdatedData=Bezig met het verwerken van bijgewerkte gegevens

View File

@ -8,9 +8,9 @@
<!ENTITY zotero.preferences.prefpane.general "Generelt">
<!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.stacked "Stacked">
<!ENTITY zotero.preferences.layout.stacked "Stabla">
<!ENTITY zotero.preferences.fontSize "Skriftstorleik">
<!ENTITY zotero.preferences.fontSize.small "Liten">
<!ENTITY zotero.preferences.fontSize.medium "Middels">
@ -19,7 +19,7 @@
<!ENTITY zotero.preferences.fontSize.notes "Skriftstorleik på notat:">
<!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.reportTranslationFailure "Rapporter øydelagte nettstadomsetjarar">
<!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.childFiles "undernotat og importerte filer">
<!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.sorting.label "Sorting:">
<!ENTITY zotero.preferences.feeds.sorting.newest "Newest items first">
<!ENTITY zotero.preferences.feeds.sorting.oldest "Oldest items first">
<!ENTITY zotero.preferences.feeds.feedDefaults "Feed Defaults">
<!ENTITY zotero.preferences.feeds "Nyheitskjelder">
<!ENTITY zotero.preferences.feeds.sorting.label "Sorter:">
<!ENTITY zotero.preferences.feeds.sorting.newest "Nyaste element først">
<!ENTITY zotero.preferences.feeds.sorting.oldest "Eldste element først">
<!ENTITY zotero.preferences.feeds.feedDefaults "Standardar for nyheitskjelder">
<!ENTITY zotero.preferences.openurl.search "Leit etter &quot;resolvers&quot;">
<!ENTITY zotero.preferences.openurl.custom "Custom…">
@ -56,7 +56,7 @@
<!ENTITY zotero.preferences.sync.setUpSync "Set Up Syncing">
<!ENTITY zotero.preferences.sync.unlinkAccount "Unlink Account…">
<!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.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.">

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Ikkje synkronisert enno
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.gettingUpdatedData=Får oppdaterte data frå synkroniseringstenaren
sync.status.processingUpdatedData=Processing updated data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Wybierz tę wersję
sync.status.notYetSynced=Nie zsynchronizowany
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.gettingUpdatedData=Odbieranie zaktualizowanych danych z serwera synchronizacji
sync.status.processingUpdatedData=Przetwarzanie zaktualizowanych danych

View File

@ -68,7 +68,7 @@
<!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.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.tos2 "termos e condições">
<!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.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.restoreFromServer "Restore from Online Library">
<!ENTITY zotero.preferences.sync.reset.restoreFromServer.desc "Overwrite local Zotero data with data from the online library.">
<!ENTITY zotero.preferences.sync.reset.restoreToServer "Restore to Online Library">
<!ENTITY zotero.preferences.sync.reset.restoreToServer.desc "Overwrite online library with local Zotero data">
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Restaurar da Biblioteca Online">
<!ENTITY zotero.preferences.sync.reset.restoreFromServer.desc "Sobrescrever dados locais a partir das informações da biblioteca online.">
<!ENTITY zotero.preferences.sync.reset.restoreToServer "Restaurar para a Biblioteca Online">
<!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.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.button "Redefinir...">
@ -194,7 +194,7 @@
<!ENTITY zotero.preferences.dataDir.useProfile "Usar o diretório do perfil">
<!ENTITY zotero.preferences.dataDir.custom "Personalizar:">
<!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.migrate "Migrar para a nova localização padrão...">

View File

@ -80,7 +80,7 @@
<!ENTITY debugOutputLogging.submit "Enviar a saída">
<!ENTITY debugOutputLogging.view "Ver 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.accesskey "U">

View File

@ -94,7 +94,7 @@ upgrade.nonupgradeableDB2=Para continuar, primeiro atualize o seu banco de dados
errorReport.reportError=Relatar erro...
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.noErrorsLogged=Nenhum erro foi registrado desde que %S foi iniciado.
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 isnt 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.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.useNewLocation=Use New Location
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.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.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.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.gettingUpdatedData=Obtendo dados atualizados do servidor de sincronização
sync.status.processingUpdatedData=Processando dados atualizados

View File

@ -68,7 +68,7 @@
<!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.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.tos2 "termos e condições">
<!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.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.restoreFromServer "Restore from Online Library">
<!ENTITY zotero.preferences.sync.reset.restoreFromServer.desc "Overwrite local Zotero data with data from the online library.">
<!ENTITY zotero.preferences.sync.reset.restoreToServer "Restore to Online Library">
<!ENTITY zotero.preferences.sync.reset.restoreToServer.desc "Overwrite online library with local Zotero data">
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Restaurar a partir da Biblioteca em Linha">
<!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 "Restaurar para a Biblioteca em Linha">
<!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.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.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.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.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.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.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.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.styleEditor "Style Editor">
<!ENTITY zotero.preferences.stylePreview "Style Preview">
<!ENTITY zotero.preferences.styleEditor "Editor de Estilos">
<!ENTITY zotero.preferences.stylePreview "Antevisão de Estilos">
<!ENTITY zotero.preferences.cite.styles.styleManager "Gestor de Estilos">
<!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.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.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.custom "Personalizada:">
<!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.migrate "Migrar Para Nova Localização Por Omissão…">
@ -210,4 +210,4 @@
<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Repor Tradutores…">
<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Repor Estilos…">
<!ENTITY zotero.preferences.configEditor "Config Editor">
<!ENTITY zotero.preferences.configEditor "Editor de Configurações">

View File

@ -69,18 +69,18 @@
<!ENTITY productHelp.accesskey "H">
<!ENTITY helpTroubleshootingInfo.label "Informação de Resolução de Problemas">
<!ENTITY helpTroubleshootingInfo.accesskey "T">
<!ENTITY helpFeedbackPage.label "Discussion Forums">
<!ENTITY helpFeedbackPage.label "Fóruns de Discussão">
<!ENTITY helpFeedbackPage.accesskey "F">
<!ENTITY helpReportErrors.label "Report Errors…">
<!ENTITY helpReportErrors.label "Reportar Erros…">
<!ENTITY helpReportErrors.accesskey "R">
<!ENTITY debugOutputLogging.label "Debug Output Logging">
<!ENTITY debugOutputLogging.accesskey "L">
<!ENTITY debugOutputLogging.submit "Submit Output">
<!ENTITY debugOutputLogging.view "View Output">
<!ENTITY debugOutputLogging.clear "Clear Output">
<!ENTITY debugOutputLogging.restartWithLoggingEnabled "Restart with Logging Enabled…">
<!ENTITY debugOutputLogging.label "Depurar o Registo de Saída">
<!ENTITY debugOutputLogging.accesskey "R">
<!ENTITY debugOutputLogging.submit "Submeter Saída">
<!ENTITY debugOutputLogging.view "Ver Saída">
<!ENTITY debugOutputLogging.clear "Limpar a Saída">
<!ENTITY debugOutputLogging.restartWithLoggingEnabled "Reiniciar com o Registo Activado…">
<!ENTITY helpCheckForUpdates.label "Verificar Actualizações...">
<!ENTITY helpCheckForUpdates.accesskey "U">

View File

@ -11,7 +11,7 @@
<!ENTITY zotero.general.refresh "Recarregar">
<!ENTITY zotero.general.saveAs "Guardar Como…">
<!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.loading "Carregando…">
@ -143,7 +143,7 @@
<!ENTITY zotero.item.copyAsURL "Copiar como URL">
<!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.note.standalone "Nova Nota Isolada">
@ -158,7 +158,7 @@
<!ENTITY zotero.tagSelector.loadingTags "Carregando etiquetas…">
<!ENTITY zotero.tagSelector.showAutomatic "Mostrar Etiquetas Automáticas">
<!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.assignColor "Atribuir Cor...">
<!ENTITY zotero.tagSelector.renameTag "Renomear a Etiqueta...">
@ -240,7 +240,7 @@
<!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.storage.progress "Progresso:">
<!ENTITY zotero.sync.storage.downloads "Descarregamentos:">

View File

@ -18,8 +18,8 @@ general.unknownErrorOccurred=Ocorreu um erro desconhecido.
general.invalidResponseServer=Resposta do servidor inválida.
general.tryAgainLater=Por favor volte a tentar dentro de alguns minutos.
general.serverError=O servidor assinalou um erro. Por favor tente de novo.
general.pleaseRestart=Please restart %S.
general.pleaseRestartAndTryAgain=Please restart %S and try again.
general.pleaseRestart=Por favor reinicie %S.
general.pleaseRestartAndTryAgain=Por favor reinicie %S e tente novamente.
general.checkForUpdate=Verificar Actualizações
general.actionCannotBeUndone=Esta acção não pode ser desfeita.
general.install=Instalar
@ -94,7 +94,7 @@ upgrade.nonupgradeableDB2=Para continuar, actualize a sua base da dados usando p
errorReport.reportError=Reportar Erro...
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.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.
@ -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.checkPermissions=Make sure you have read and write permissions for all files in the %1$S data directory and that security software isnt 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.location=Data Directory: %S
dataDir.notFound=The %S data directory could not be found.
dataDir.location=Pasta de Dados: %S
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.useNewLocation=Use New Location
dataDir.useNewLocation=Usar Nova Localização
dataDir.previousDir=Pasta anterior:
dataDir.default=Por omissão (%S)
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.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.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.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.
@ -215,7 +215,7 @@ pane.collections.trash=Lixo
pane.collections.untitled=Sem título
pane.collections.unfiled=Itens por Classificar
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.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.delete.title=Remover Etiqueta
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.numSelected.none=0 etiquetas seleccionadas
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.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.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.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.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.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=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=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.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.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.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.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.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.export.quickCopy.citationStyles=Citation Styles
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.citationInstructions=For citation styles, you can copy citations or footnotes by pressing %S or holding down Shift before dragging items.
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=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.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.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.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.debugOutputLogging=Debug Output Logging
@ -692,7 +692,7 @@ dragAndDrop.filesNotFound=Os seguintes arquivos não foram encontrados e, por is
fileInterface.importing=Importando…
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.import=Importar
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.OPMLFeedFilter=Lista de Feeds OPML
quickCopy.copyAs=Copy as %S
quickCopy.copyAs=Copiar como %S
quickSearch.mode.titleCreatorYear=Título, Criador, Ano
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.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.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.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.syncWith=Sincronizar com %S
sync.stopping=Stopping
sync.stopping=Parando
sync.cancel=Cancelar Sincronização
sync.openSyncPreferences=Abrir Preferências de 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.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.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.
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Escolher esta versão
sync.status.notYetSynced=Por sincronizar
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.gettingUpdatedData=Obtendo dados actualizados do servidor de sincronização
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.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.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.exit=Sair
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.
connector.name=%S Connector
connector.name=Conector %S
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.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.

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Alege această versiune
sync.status.notYetSynced=Încă nesincronizate
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.gettingUpdatedData=Obține datele actualizate de la serverul de sincronizare
sync.status.processingUpdatedData=Procesează datele actualizate de la serverul de sincronizare

View File

@ -1,5 +1,5 @@
<!ENTITY zotero.version "версия">
<!ENTITY zotero.whatsNew "Whats new">
<!ENTITY zotero.whatsNew "Новое">
<!ENTITY zotero.createdby "Авторы:">
<!ENTITY zotero.director "Директор:">
<!ENTITY zotero.directors "Руководители:">

View File

@ -19,9 +19,9 @@
<!ENTITY zotero.preferences.fontSize.notes "Размер шрифта заметок:">
<!ENTITY zotero.preferences.miscellaneous "Разное">
<!ENTITY zotero.preferences.autoUpdate "Автоматически проверять на наличие обновленных трансляторов и стилей">
<!ENTITY zotero.preferences.autoUpdate "Автоматически проверять на наличие обновленных импóртеров и стилей">
<!ENTITY zotero.preferences.updateNow "Обновить сейчас">
<!ENTITY zotero.preferences.reportTranslationFailure "Сообщить о неработающих трансляторах сайта">
<!ENTITY zotero.preferences.reportTranslationFailure "Сообщить о неработающих импóртерах сайта">
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader "Разрешить zotero.org модифицировать содержание на основе текущей версии Zotero">
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader.tooltip "Если включено, текущая версия Zotero будет добавляться к HTTP запросам на zotero.org.">
<!ENTITY zotero.preferences.parseRISRefer "Использовать Zotero для загруженных файлов RIS/Refer">
@ -87,7 +87,7 @@
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory "Сбросить историю синхронизации файлов">
<!ENTITY zotero.preferences.sync.reset.resetFileSyncHistory.desc "Сравнить все связанные файлы с данными в хранилище">
<!ENTITY zotero.preferences.sync.reset "Сбросить">
<!ENTITY zotero.preferences.sync.reset.button "Сбросить настройки…">
<!ENTITY zotero.preferences.sync.reset.button "Сбросить…">
<!ENTITY zotero.preferences.prefpane.search "Поиск">
@ -206,8 +206,8 @@
<!ENTITY zotero.preferences.dbMaintenance "Поддержка БД">
<!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Проверить целостность БД">
<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Сбросить настройки конвертеров и стилей…">
<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Сбросить настройки конвертеров…">
<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Сбросить настройки импóртеров и стилей…">
<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Сбросить настройки импóртеров…">
<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Сбросить настройки стилей…">
<!ENTITY zotero.preferences.configEditor "Редактор конфигурации">

View File

@ -1,4 +1,4 @@
<!ENTITY zotero.search.name "Название">
<!ENTITY zotero.search.name "Название:">
<!ENTITY zotero.search.searchInLibrary "Искать в библиотеке:">

View File

@ -107,7 +107,7 @@
<!ENTITY zotero.toolbar.removeItem.label "Удалить документ">
<!ENTITY zotero.toolbar.newLibrary.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.newSubcollection.label "Новая субподборка…">
<!ENTITY zotero.toolbar.newSavedSearch.label "Новый отбор…">
@ -124,26 +124,26 @@
<!ENTITY zotero.toolbar.about.label "О Zotero">
<!ENTITY zotero.toolbar.advancedSearch "Расширенный поиск">
<!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.fromURL "From URL…">
<!ENTITY zotero.toolbar.feeds.new.fromPage "From Page…">
<!ENTITY zotero.toolbar.feeds.new.fromOPML "From OPML…">
<!ENTITY zotero.toolbar.feeds.refresh "Refresh Feed">
<!ENTITY zotero.toolbar.feeds.edit "Edit Feed…">
<!ENTITY zotero.toolbar.feeds.new "Добавить новостную ленту">
<!ENTITY zotero.toolbar.feeds.new.fromURL "Из URL…">
<!ENTITY zotero.toolbar.feeds.new.fromPage "Со странцы…">
<!ENTITY zotero.toolbar.feeds.new.fromOPML "Из OPML…">
<!ENTITY zotero.toolbar.feeds.refresh "Обновить новостную ленту">
<!ENTITY zotero.toolbar.feeds.edit "Редактировать новостную ленту…">
<!ENTITY zotero.item.add "Добавить">
<!ENTITY zotero.item.attachment.file.show "Показать файл">
<!ENTITY zotero.item.textTransform "Трансформировать Текст">
<!ENTITY zotero.item.textTransform.titlecase "Каждое Слово с Заглавной">
<!ENTITY zotero.item.textTransform.sentencecase "Как в предложении">
<!ENTITY zotero.item.creatorTransform.nameSwap "Swap First/Last Names">
<!ENTITY zotero.item.viewOnline "View Online">
<!ENTITY zotero.item.copyAsURL "Copy as URL">
<!ENTITY zotero.item.deletePermanently "Delete Permanently…">
<!ENTITY zotero.item.creatorTransform.nameSwap "Поменять местами имя и фамилию">
<!ENTITY zotero.item.viewOnline "Просмотреть он-лайн">
<!ENTITY zotero.item.copyAsURL "Скопировать в виде URL">
<!ENTITY zotero.item.deletePermanently "Удалить навсегда…">
<!ENTITY zotero.item.tags.removeAll "Remove All Tags…">
<!ENTITY zotero.item.tags.removeAll "Удалить все тэги…">
<!ENTITY zotero.toolbar.newNote "Новая заметка">
<!ENTITY zotero.toolbar.note.standalone "Новая отдельная заметка">
@ -158,7 +158,7 @@
<!ENTITY zotero.tagSelector.loadingTags "Загрузка тэгов...">
<!ENTITY zotero.tagSelector.showAutomatic "Показывать автоматически">
<!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.assignColor "Назначить цвет…">
<!ENTITY zotero.tagSelector.renameTag "Переименовать тег…">
@ -180,7 +180,7 @@
<!ENTITY zotero.bibliography.title "Создать библиографию">
<!ENTITY zotero.bibliography.style.label "Стиль цитирования:">
<!ENTITY zotero.bibliography.manageStyles "Manage Styles…">
<!ENTITY zotero.bibliography.manageStyles "Управление стилями…">
<!ENTITY zotero.bibliography.locale.label "Язык:">
<!ENTITY zotero.bibliography.outputMode "Режим вывода:">
<!ENTITY zotero.bibliography.bibliography "Библиография">
@ -199,7 +199,7 @@
<!ENTITY zotero.exportOptions.title "Экспорт…">
<!ENTITY zotero.exportOptions.format.label "Формат:">
<!ENTITY zotero.exportOptions.translatorOptions.label "Настройки транслятора:">
<!ENTITY zotero.exportOptions.translatorOptions.label "Настройки преобразователя:">
<!ENTITY zotero.charset.label "Кодировка символов">
<!ENTITY zotero.moreEncodings.label "Ещё кодировки">
@ -229,11 +229,11 @@
<!ENTITY zotero.integration.prefs.formatUsing.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.caption "The “Journal Abbr” field will be ignored.">
<!ENTITY zotero.integration.prefs.automaticJournalAbbeviations.label "Использовать аббревиатуры журналов по MEDLINE">
<!ENTITY zotero.integration.prefs.automaticJournalAbbeviations.caption "Поле «Journal Abbr» будет проигнорировано.">
<!ENTITY zotero.integration.showEditor.label "Показать редактор">
<!ENTITY zotero.integration.classicView.label "Классический вид">
@ -266,15 +266,15 @@
<!ENTITY zotero.proxy.recognized.disable.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.url.label "URL:">
<!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.cleanupUnreadAfter.label1 "Remove unread feed items after">
<!ENTITY zotero.feedSettings.cleanupUnreadAfter.label1 "Удалять непрочтённые записи старше">
<!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 "дня(-ей)">
@ -312,6 +312,6 @@
<!ENTITY zotero.downloadManager.saveToLibrary.description "Вложения не могут быть сохранены в текущую выбранную библиотеку. Вместо этого данный элемент будет сохранен в вашей библиотеке.">
<!ENTITY zotero.downloadManager.noPDFTools.description "Чтобы воспользоваться данной функцией, необходимо установить PDF утилиту, указанную в настройках Zotero.">
<!ENTITY zotero.attachLink.title "Attach Link to URI">
<!ENTITY zotero.attachLink.label.link "Link:">
<!ENTITY zotero.attachLink.title "Прикрепить ссылку на URI">
<!ENTITY zotero.attachLink.label.link "Ссылка:">
<!ENTITY zotero.attachLink.label.title "Заголовок:">

View File

@ -67,7 +67,7 @@ general.operationInProgress=В настоящий момент Zotero выпол
general.operationInProgress.waitUntilFinished=Пожалуйста, подождите, пока оно закончится.
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=Нужна помощь? [Присоединяйтесь]!
punctuation.openingQMark="
@ -209,7 +209,7 @@ pane.collections.library=Моя библиотека
pane.collections.publications=Мои публикации
pane.collections.feeds=Новостные ленты
pane.collections.libraryAndFeeds=Мои коллекции и ленты новостей
pane.collections.groupLibraries=Группировка библиотек
pane.collections.groupLibraries=Групповые библиотеки
pane.collections.feedLibraries=Новостные ленты
pane.collections.trash=Корзина
pane.collections.untitled=Неназванные
@ -388,7 +388,7 @@ itemTypes.bill=Законопроект
itemTypes.case=Дело
itemTypes.hearing=Слушание
itemTypes.patent=Патент
itemTypes.statute=Закон
itemTypes.statute=норм. прав. акт
itemTypes.email=Электронная почта
itemTypes.map=Карта
itemTypes.blogPost=Сообщение в блоге
@ -434,11 +434,11 @@ itemFields.archiveLocation=Место в архиве
itemFields.distributor=Распределитель
itemFields.extra=Дополнительно
itemFields.journalAbbreviation=Журнал сокращ.
itemFields.DOI=ЦИО
itemFields.DOI=ЦИО/DOI
itemFields.accessDate=Дата доступа
itemFields.seriesTitle=Название серии
itemFields.seriesText=Текст серии
itemFields.seriesNumber=Номер серии
itemFields.seriesNumber=Номер в серии
itemFields.institution=Учреждение
itemFields.reportType=Тип отчета
itemFields.code=Кодекс/сборник
@ -457,14 +457,14 @@ itemFields.references=Ссылки
itemFields.legalStatus=Правовой статус
itemFields.codeNumber=Том кодекса
itemFields.artworkMedium=Худож. средство
itemFields.number=Количество
itemFields.number=Номер
itemFields.artworkSize=Размер работы
itemFields.libraryCatalog=Библ. каталог
itemFields.videoRecordingFormat=Формат
itemFields.interviewMedium=Средство
itemFields.letterType=Тип
itemFields.manuscriptType=Тип
itemFields.mapType=Тип
itemFields.letterType=Тип письма
itemFields.manuscriptType=Тип рукописи
itemFields.mapType=Тип карты
itemFields.scale=Масштаб
itemFields.thesisType=Тип
itemFields.websiteType=Тип веб-сайта
@ -477,7 +477,7 @@ itemFields.runningTime=Продолжит.
itemFields.network=Сеть
itemFields.postType=Тип сообщения
itemFields.audioFileType=Тип файла
itemFields.versionNumber=Версия:
itemFields.versionNumber=Версия
itemFields.system=Система
itemFields.company=Компания
itemFields.conferenceName=Назв. конфер.
@ -496,8 +496,8 @@ itemFields.dateDecided=Дата решения
itemFields.reporterVolume=Том отчета
itemFields.firstPage=Первая стр.
itemFields.documentNumber=Номер документа
itemFields.dateEnacted=Дата постановл.
itemFields.publicLawNumber=Номер закона
itemFields.dateEnacted=Дата акта
itemFields.publicLawNumber=Номер акта
itemFields.country=Страна
itemFields.applicationNumber=Номер заявки
itemFields.forumTitle=Форум/Listserv
@ -573,7 +573,7 @@ ingester.scrapingTo=Сохранение в
ingester.scrapeComplete=Документ сохранен
ingester.scrapeError=Не получилось сохранить документ
ingester.scrapeErrorDescription=Произошла ошибка при сохранении этого документа. Смотрите %S для дополнительной информации.
ingester.scrapeErrorDescription.linkText=Устранение проблем с преобразователем
ingester.scrapeErrorDescription.linkText=Устранение проблем с импóртером
ingester.scrapeErrorDescription.previousError=Процесс сохранения не завершен из-за предыдущей ошибки Zotero.
ingester.importReferRISDialog.title=Импортирование RIS/Refer в Zotero
@ -614,7 +614,7 @@ zotero.preferences.locale.automaticWithLocale=Выбрано автоматич
zotero.preferences.locale.automatic=Выбирать автоматически
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.cancelButton=Не выполнять очистку
zotero.preferences.sync.librariesToSync.loadingLibraries=Загрузка библиотек...
@ -667,10 +667,10 @@ zotero.preferences.wordProcessors.incompatibleVersions2=%1$S %2$S требует
zotero.preferences.styles.addStyle=Добавить стиль
zotero.preferences.advanced.resetTranslatorsAndStyles=Обнулить трансляторы и стили
zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Любые новые или измененные трансляторы или стили будут утеряны.
zotero.preferences.advanced.resetTranslators=Обнулить трансляторы
zotero.preferences.advanced.resetTranslators.changesLost=Любые новые или измененные трансляторы будут утеряны.
zotero.preferences.advanced.resetTranslatorsAndStyles=Обнулить импóртеры и стили
zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Любые новые или измененные импóртеры или стили будут утеряны.
zotero.preferences.advanced.resetTranslators=Обнулить импóртеры
zotero.preferences.advanced.resetTranslators.changesLost=Любые новые или измененные импóртеры будут утеряны.
zotero.preferences.advanced.resetStyles=Обнулить стили
zotero.preferences.advanced.resetStyles.changesLost=Любые новые или измененные стили будут утеряны.
zotero.preferences.advanced.migrateDataDir.title=Перенести каталог данных
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Выбрать эту версию
sync.status.notYetSynced=Ещё не синхронизировано
sync.status.lastSync=Последняя синхронизация:
sync.status.waiting=Waiting for other operations to finish
sync.status.preparing=Preparing sync
sync.status.loggingIn=Регистрация на сервере синхронизации
sync.status.gettingUpdatedData=Получение обновленных данных с сервера синхронизации
sync.status.processingUpdatedData=Обработка обновленных данных
@ -1118,7 +1120,7 @@ connector.error.title=Ошибка соединения Zotero
connector.standaloneOpen=Ваша база данных недоступна, поскольку открыто Автономное Zotero. Пожалуйста, посмотрите ваши документы в Автономном Zotero.
connector.loadInProgress=Автономная Zotero запущен, но к нему нет доступа. Если вы испытываете проблемы при запуске автономной Zotero перезапустите Firefox.
firstRunGuidance.authorMenu=Zotero также позволяет указывать редакторов и трансляторов. Вы можете превратить автора в редактора или в транслятора, сделав выбор в меню.
firstRunGuidance.authorMenu=Zotero также позволяет указывать редакторов и переводчиков. Вы можете обозначить автора как редактора или переводчика, выбрав из меню.
firstRunGuidance.quickFormat=Введите наименование или автора для поиска по ссылке.\n\nПосле выбора, нажмите на сноску или Ctrl-↓ для добавления номеров страниц, префиксов или суффиксов. Также можно включить номер страницы в условия поиска, чтобы сразу его добавить.\n\n\Цитаты можно редактировать в самом документе, открытом в редакторе.
firstRunGuidance.quickFormatMac=Введите наименование или автора для поиска по ссылке.\n\nПосле выбора, нажмите на сноску или Cmd-↓ для добавления номеров страниц, префиксов или суффиксов. Также можно включить номер страницы в условия поиска, чтобы сразу его добавить.\n\n\Цитаты можно редактировать в самом документе, открытом в редакторе.
firstRunGuidance.toolbarButton.new=Нажмите кнопку «Z» чтобы открыть Zotero, или используйте комбинацию клавиш%S.

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Zvoľte si túto verziu
sync.status.notYetSynced=Zatiaľ nesynchronizované
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.gettingUpdatedData=Získavanie aktualizovaných dát zo synchronizačného serveru
sync.status.processingUpdatedData=Spracovávanie aktualizovaných dát

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Izberite to različico
sync.status.notYetSynced=Še ni usklajeno
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.gettingUpdatedData=Pridobivanje posodobljenih podatkov z uskladitvenega strežnika
sync.status.processingUpdatedData=Obdelovanje posodobljenih podatkov

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Not yet synced
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.gettingUpdatedData=Getting updated data from sync server
sync.status.processingUpdatedData=Processing updated data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Välj denna version
sync.status.notYetSynced=Ännu inte synkroniserad
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.gettingUpdatedData=Hämta uppdaterad data från synkroniseringsservern
sync.status.processingUpdatedData=Bearbetar uppdaterad data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=ยังไม่ได้เชื่อมประสาน
sync.status.lastSync=เชื่อมประสานล่าสุด:
sync.status.waiting=Waiting for other operations to finish
sync.status.preparing=Preparing sync
sync.status.loggingIn=กำลังบันทึกเข้าเครื่องบริการ
sync.status.gettingUpdatedData=รับข้อมูลที่เป็นปัจจุบันจากเครื่องบริการ
sync.status.processingUpdatedData=กำลังดำเนินการปรับปรุงข้อมูลจากเครื่องบริการ

View File

@ -107,7 +107,7 @@
<!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.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.defaultFormat "Varsayılan Biçim:">
@ -117,7 +117,7 @@
<!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(ör. wikipedia.org)">
<!ENTITY zotero.preferences.quickCopy.siteEditor.format "Biçim">
<!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.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_link "vekil sunucu belgelerine">
<!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.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.hostname "Ana Sunucu">
<!ENTITY zotero.preferences.proxies.scheme "Düzen">

View File

@ -33,7 +33,7 @@
<!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.accesskey "g">

View File

@ -160,7 +160,7 @@
<!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.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.deleteTag "Etiketi Sil...">
@ -178,19 +178,19 @@
<!ENTITY zotero.selectitems.cancel.label "İptal et">
<!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.manageStyles "Stilleri Yönet...">
<!ENTITY zotero.bibliography.locale.label "Dil:">
<!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.saveAsRTF.label "RTF olarak Kaydet">
<!ENTITY zotero.bibliography.saveAsRTF.label "RTF Olarak Kaydet">
<!ENTITY zotero.bibliography.saveAsHTML.label "HTML olarak Kaydet">
<!ENTITY zotero.bibliography.copyToClipboard.label "Panoya Kopyala">
<!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.editBibliography.title "Kaynakça Düzenle">
<!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.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">
@ -291,19 +291,19 @@
<!ENTITY zotero.rtfScan.ambiguousCitations.label "Belirsiz Gönderme">
<!ENTITY zotero.rtfScan.mappedCitations.label "Eşlenmiş Gönderme">
<!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.description2 "Başlamak için bir RTF giriş dosyası ve altında bir çıkış 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, 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.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.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.formatPage.label "Gönderme Biçimlendirme">
<!ENTITY zotero.rtfScan.formatPage.description "Zotero RTF dosyanızı biçimlendiriyor. Lütfen bekleyiniz.">
<!ENTITY zotero.rtfScan.completePage.label "RTF Tarama Tamamlandı">
<!ENTITY zotero.rtfScan.completePage.description "Belgeniz tarandı ve işlendi. Lütfnen biçimlendirmenin doğruluğunu kontrol ediniz.">
<!ENTITY zotero.rtfScan.inputFile.label "Giriş Dosyası">
<!ENTITY zotero.rtfScan.outputFile.label ıkış Dosyası">
<!ENTITY zotero.rtfScan.formatPage.description "Zotero, RTF dosyanızı işliyor ve biçimlendiriyor. Lütfen bekleyiniz.">
<!ENTITY zotero.rtfScan.completePage.label "RTF Taraması Tamamlandı">
<!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 "Girdi Dosyası">
<!ENTITY zotero.rtfScan.outputFile.label ıktı Dosyası">
<!ENTITY zotero.file.choose.label "Dosya Seçiniz...">
<!ENTITY zotero.file.noneSelected.label "Dosya seçilmedi">

View File

@ -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.restartRequiredForChanges=Değişikliklerin etkili olabilmesi için %S yeniden başlatılmalıdır.
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.quitApp=%S'dan Ayrıl
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.savedSearch=Kaydedilen Aramayı Dışarı Aktar...
pane.collections.menu.export.feed=Beslemeyi Dışarı Aktar...
pane.collections.menu.createBib.collection=Dermeden Bibliyografya Yarat...
pane.collections.menu.createBib.savedSearch=Kaydedilmiş Aramadan Bibliyografya Yarat...
pane.collections.menu.createBib.feed=Beslemeden Bibliyografya Yarat...
pane.collections.menu.createBib.collection=Dermeden Kaynakça Yarat...
pane.collections.menu.createBib.savedSearch=Kaydedilmiş Aramadan Kaynakça Yarat...
pane.collections.menu.createBib.feed=Beslemeden Kaynakça Yarat...
pane.collections.menu.generateReport.collection=Dermeden 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.export=Seçili Eseri 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.multiple=Seçili Eserlerden Bibliyografya Oluştur...
pane.items.menu.createBib=Seçili Eserden Kaynakça Yarat...
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.multiple=Seçili Eserlerden Rapor Oluştur...
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.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.importFile.title=Dosyayı İçeri Aktar
@ -607,9 +607,9 @@ zotero.preferences.update.updated=Güncellendi
zotero.preferences.update.upToDate=Güncel
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.openurl.resolversFound.zero=%S resolver bulundu
zotero.preferences.openurl.resolversFound.singular=%S rosolver bulundu
zotero.preferences.openurl.resolversFound.plural=%S resolver bulundu
zotero.preferences.openurl.resolversFound.zero=%S çözücü bulundu
zotero.preferences.openurl.resolversFound.singular=%S çözücü bulundu
zotero.preferences.openurl.resolversFound.plural=%S çözücü bulundu
zotero.preferences.locale.automaticWithLocale=Otomatik (%S)
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.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.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.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.unsupportedFormat=Seçilen dosya desteklenen bir dosya biçiminde değil.
fileInterface.viewSupportedFormats=Desteklenen Biçimleri Gör...
fileInterface.untitledBibliography=Başlıksız Bibliyografya
fileInterface.bibliographyHTMLTitle=Bibliyografya
fileInterface.untitledBibliography=Başlıksız Kaynakça
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.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.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.importOPML=Beslemeleri OPML'den İçeri Aktarın
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.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.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.mustInsertCitation=Bu işlemi gerçekleştirmeden önce bir gönderme girmelisiniz.
integration.error.mustInsertBibliography=Bu işlemi gerçekleştirmeden önce bir kaynakça girmelisiniz.
integration.error.cannotInsertHere=Zotero alanları buraya girilemez.
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 koymalısınız.
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.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.
@ -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.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.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.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.
@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Bu versiyonu seç
sync.status.notYetSynced=Henüz eşitlenmedi
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.gettingUpdatedData=Eşitleme sunucusundan güncelleme verisi alınıyor
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.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.enable.button=Enable...
proxies.notification.enable.button=Etkinleştir...
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.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.
rtfScan.openTitle=Taramak için bir dosya seçin
rtfScan.scanning.label=RTF Belgesini Tara...
rtfScan.saving.label=RTF Belgesini Biçimlendir...
rtfScan.scanning.label=RTF Belgesi Taranıyor...
rtfScan.saving.label=RTF Belgesi Biçimlendiriliyor...
rtfScan.rtf=Zengin Metin Biçimi (.rtf)
rtfScan.saveTitle=Biçimlendirilmiş dosya için kaydedilecek yeri seçiniz.
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.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.warning.noItems=Zotero'da hiçbir eser seçilmedi.
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.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.
@ -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.sharing.keepRightsField=Telif alanını 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.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.error.linkedFilesCannotBeAdded=Bağlantılanmış dosyalar Yayınlarıma eklenemez

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Вибрати цю версію
sync.status.notYetSynced=Ще не синхранізовано
sync.status.lastSync=Попередня синхронізація:
sync.status.waiting=Waiting for other operations to finish
sync.status.preparing=Preparing sync
sync.status.loggingIn=Реєстрація на сервері синхронізації
sync.status.gettingUpdatedData=Отримання оновлених даних з серверу синхронізації
sync.status.processingUpdatedData=Обробка оновлених даних

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=Choose this version
sync.status.notYetSynced=Not yet synced
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.gettingUpdatedData=Getting updated data from sync server
sync.status.processingUpdatedData=Processing updated data

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=选择此版本
sync.status.notYetSynced=尚未同步
sync.status.lastSync=上一次同步:
sync.status.waiting=Waiting for other operations to finish
sync.status.preparing=Preparing sync
sync.status.loggingIn=登录到同步服务器
sync.status.gettingUpdatedData=从同步服务器上更新数据
sync.status.processingUpdatedData=正在从同步服务器上更新数据

View File

@ -964,6 +964,8 @@ sync.conflict.chooseThisVersion=選此版
sync.status.notYetSynced=尚未同步
sync.status.lastSync=上次同步:
sync.status.waiting=Waiting for other operations to finish
sync.status.preparing=Preparing sync
sync.status.loggingIn=正在登入同步伺服器
sync.status.gettingUpdatedData=正由同步伺服器更新資料
sync.status.processingUpdatedData=正由同步伺服器處理更新過的資料

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -3,6 +3,6 @@
}
#main-window {
min-width: 915px;
min-width: 670px;
min-height: 300px;
}

View File

@ -6,7 +6,7 @@
<em:id>zotero@chnm.gmu.edu</em:id>
<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:contributor>Dan Cohen</em:contributor>
<em:contributor>Sean Takats</em:contributor>

View File

@ -1 +1 @@
2018-01-07 23:00:00
2018-02-11 11:20:00

2
styles

@ -1 +1 @@
Subproject commit b605dc3869e157f91eedb3f1519cd020c00bdafb
Subproject commit 190224fd811bf2f55342372aa3a79ad53df245c5

View File

@ -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
mocha.setup({
ui: "bdd",

View File

@ -411,6 +411,10 @@ function createUnsavedDataObject(objectType, params = {}) {
switch (objectType) {
case 'item':
case 'feedItem':
if (params.parentItemID) {
params.parentID = params.parentItemID;
delete params.parentItemID;
}
if (params.title !== undefined || params.setTitle) {
obj.setField('title', params.title !== undefined ? params.title : Zotero.Utilities.randomString());
}

View File

@ -480,4 +480,23 @@ describe("Zotero.Items", function () {
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)
);
});
});
});

View File

@ -57,4 +57,25 @@ describe("Zotero.Notifier", function () {
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());
});
});
});

View File

@ -782,9 +782,9 @@ describe("Zotero.Sync.Data.Engine", function () {
},
JSON.stringify({
successful: {
"0": item2.toResponseJSON(),
"1": item1.toResponseJSON(),
"2": item3.toResponseJSON()
"0": item2.toResponseJSON({ version: lastLibraryVersion }),
"1": item1.toResponseJSON({ version: lastLibraryVersion }),
"2": item3.toResponseJSON({ version: lastLibraryVersion })
},
unchanged: {},
failed: {}
@ -3024,6 +3024,67 @@ describe("Zotero.Sync.Data.Engine", function () {
assert.equal(called, 1);
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));
});
});

View File

@ -313,27 +313,88 @@ describe("Zotero.Sync.Data.Local", function() {
});
var libraryID = group.libraryID;
// File attachment that's totally in sync -- leave alone
var attachment1 = yield importFileAttachment('test.png', { libraryID });
attachment1.attachmentSyncState = "in_sync";
attachment1.attachmentSyncedModificationTime = 1234567890000;
attachment1.attachmentSyncedHash = "8caf2ee22919d6725eb0648b98ef6bad";
var attachment2 = yield importFileAttachment('test.pdf', { libraryID });
attachment1.attachmentSyncedModificationTime = yield attachment1.attachmentModificationTime;
attachment1.attachmentSyncedHash = yield attachment1.attachmentHash;
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()
assert.isTrue(yield Zotero.Sync.Data.Local._libraryHasUnsyncedFiles(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 attachment3.fileExists());
assert.equal(
attachment1.attachmentSyncState, Zotero.Sync.Storage.Local.SYNC_STATE_TO_DOWNLOAD
attachment1.attachmentSyncState, Zotero.Sync.Storage.Local.SYNC_STATE_IN_SYNC
);
assert.equal(
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