Compare commits

...

23 commits
main ... 8.0.4

Author SHA1 Message Date
Dan Stillman
eb712a0250 Update translators 2026-03-06 16:56:12 -05:00
Dan Stillman
28d5fa3d20 Update deployment script for 8.0 branch 2026-03-06 15:36:20 -05:00
Dan Stillman
8236ed8361 Update translators 2026-03-06 15:35:07 -05:00
Dan Stillman
1e810b2a36 Disable Better BibTeX <9.0
https://forums.zotero.org/discussion/comment/508650/#Comment_508650
2026-03-06 15:34:09 -05:00
Dan Stillman
6325ec1247 Use our own blocked-plugin message that doesn't mention Mozilla 2026-03-06 15:33:56 -05:00
Dan Stillman
d3b3ec5b46 Update version 2026-03-05 23:37:30 -05:00
Adomas Venčkauskas
a6aa02e1ab Auto-recover ALL-CAPS macOS corrupted word field codes.
Closes zotero/zotero-word-for-mac-integration#38
2026-03-05 23:30:40 -05:00
Tom Najdek
fe33482ab9 Fix tag splitting for strings containing Unicode characters. Fix #5807 2026-03-05 23:30:01 -05:00
Dan Stillman
1485dc25eb HTTP.request(): Don't try to output responseText if not text response 2026-03-05 23:27:32 -05:00
Dan Stillman
10c74d33c9 WebDAV: Compute fresh Digest auth headers for each request
The previous approach of capturing and replaying the Authorization header
from an initial request worked for Basic auth but broke with Digest auth,
where the header includes the HTTP method and URI in the hash. This caused
each replayed request to be rejected with a 401, which Firefox wouldn't
retry because the request already included Authorization.

Instead, split _channelAuthorization into _basicAuthHeader and
_digestParams. For Basic auth, the header is still replayed as-is. For
Digest, the challenge parameters (realm, nonce, qop, etc.) are cached
and a fresh Authorization header is computed per request.

_getAuthorizationHeaders() now takes method and URI parameters so it can
compute the correct Digest response hash for each request.
2026-03-05 23:27:18 -05:00
Abe Jellinek
5110a15e58 Fix item type becoming 'undefined' when menu is dismissed with Escape
By adding a missing getter override. If a setter is overridden, the
corresponding getter also needs to be overridden, or it will implicitly
return undefined.

Fixes #5793
2026-03-05 23:26:57 -05:00
Dan Stillman
9c7dff4961 Upload build-{os}.json manifests to deployment server
Needed by zotero/client-downloads@4b2060361, which reads build
metadata from these files instead of hardcoding it.
2026-03-05 23:25:21 -05:00
Dan Stillman
1205349330 Fix WebDAV verification failure on OPTIONS/PROPFIND auth type mismatch
`checkServer()` was capturing the Authorization header from OPTIONS and
explicitly setting it on PROPFIND via `setRequestHeader()`. If the auth
type didn't match what the server required for PROPFIND (e.g., Basic vs.
Digest, though maybe other things too), the explicit header could
prevent Firefox from negotiating the correct auth scheme on the 401
challenge.

To fix, move `onAuthorizationHeader()` from OPTIONS to PROPFIND and
don't pass captured auth to PROPFIND, letting Firefox handle the auth
transparently.

https://forums.zotero.org/discussion/129665/webdav-error-for-zotero-8-0-3
2026-03-05 23:24:07 -05:00
Dan Stillman
6d5007a078 Fix incorrect bold text in file-renaming banner 2026-03-05 23:23:52 -05:00
Dan Stillman
24a87ad8a2 Build deployment ZIP for 8.0 branch 2026-02-07 14:13:45 -05:00
Dan Stillman
66bc7b70f3 Update locales from Transifex 2026-02-07 12:58:10 -05:00
Dan Stillman
6f60f860a0 Update note-editor submodule 2026-02-06 15:58:04 -05:00
Dan Stillman
9a1bac563e Update locales from Transifex 2026-02-06 15:47:39 -05:00
Dan Stillman
d31fafea98 Update CSL locales 2026-02-06 15:34:42 -05:00
abaevbog
5aa1c700cc Preference to hide context annotation rows (#5315)
hideContextAnnotationRows pref, accessible via View > Hide Non-Matching Annotations,
will hide non-matching context annotation rows.
Enabled by default.

Fixes zotero#5264
2026-02-06 15:34:32 -05:00
Dan Stillman
4174955345 Update version 2026-02-04 10:00:32 -05:00
Dan Stillman
2d4ef19f41 Use PROPFIND instead of OPTIONS to cache WebDAV credentials
Some WebDAV servers allow unauthenticated OPTIONS requests, so the
Authorization header capturing added in 089701eca8 wouldn't work.

PROPFIND with Depth: 0 reliably requires authentication while only
returning properties of the directory itself.

https://forums.zotero.org/discussion/comment/506993/#Comment_506993
2026-02-04 09:59:56 -05:00
Abe Jellinek
dc54d82712 Scaffold: Fix repeated reload prompts 2026-02-04 09:59:56 -05:00
139 changed files with 1160 additions and 448 deletions

View file

@ -67,7 +67,7 @@ jobs:
env.ACT != 'true'
&& github.repository == 'zotero/zotero'
&& github.event_name == 'push'
&& (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/fx128' || endsWith(github.ref, '-hotfix'))
&& (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/8.0' || endsWith(github.ref, '-hotfix'))
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

View file

@ -7,7 +7,7 @@ ROOT_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")"
. "$APP_ROOT_DIR/config.sh"
CHANNEL="release"
BRANCH="main"
BRANCH="8.0"
if [ "`uname`" = "Darwin" ]; then
export SAFARI_APPEX="$ROOT_DIR/../safari-app-extension-builds/release/ZoteroSafariExtension.appex"
fi

View file

@ -126,12 +126,26 @@ done
# Upload builds to S3
"$SCRIPT_DIR/upload_builds" $CHANNEL $VERSION
# Upload file lists for each platform
# Upload file lists and build info for each platform
channel_deploy_path="$DEPLOY_PATH/$CHANNEL"
mkdir "$TEMP_DIR/version_info"
chmod g+ws "$TEMP_DIR/version_info"
cp "$DIST_DIR"/files-* "$TEMP_DIR/version_info"
chmod g+w "$TEMP_DIR"/version_info/files-*
# Generate build-{os}.json for each platform
SHORT_VERSION="${VERSION:0:3}"
DETAILS_URL="https://www.zotero.org/support/${SHORT_VERSION}_changelog"
for i in `seq 0 1 $((${#PLATFORMS}-1))`
do
case ${PLATFORMS:i:1} in
m) os_name="mac" ;;
w) os_name="win" ;;
l) os_name="linux" ;;
esac
printf '{\n "buildID": "%s",\n "detailsURL": "%s"\n}\n' "$BUILD_ID" "$DETAILS_URL" \
> "$TEMP_DIR/version_info/build-${os_name}.json"
chmod g+w "$TEMP_DIR/version_info/build-${os_name}.json"
done
rsync -rv "$TEMP_DIR/version_info/" $DEPLOY_HOST:"$channel_deploy_path/$VERSION/"
# Download updates JSON for each platform, update it, and reupload it

View file

@ -393,6 +393,13 @@ function modify_omni {
'<label target="_blank" class="text-link" dir="ltr"><\/label>' \
chrome/toolkit/content/mozapps/extensions/aboutaddons.html
# Add zotero.ftl to the addons page for our own localized strings
replace_line 'href="toolkit\/about\/aboutAddons.ftl"' 'href="toolkit\/about\/aboutAddons.ftl" \/>\n <link rel="localization" href="zotero.ftl"' \
chrome/toolkit/content/mozapps/extensions/aboutaddons.html
# Use our own localized string for blocked plugin notification
file="chrome/toolkit/content/mozapps/extensions/aboutaddons.js"
replace_line 'details-notification-hard-blocked-\$\{typeSuffix\}' 'plugins-blocked-plugin' $file
# TODO: Use our own strings, but for now fix the bundled English ones
replace_line 'Manage Your Extensions' 'Manage Your Plugins' localization/en-US/toolkit/about/aboutAddons.ftl
replace_line '= Extensions' '= Plugins' localization/en-US/toolkit/about/aboutAddons.ftl

View file

@ -290,6 +290,8 @@ var Scaffold = new function () {
let translatorID = document.getElementById('textbox-translatorID').value;
let modifiedTime = Scaffold_Translators.getModifiedTime(translatorID);
if (modifiedTime && modifiedTime > _lastModifiedTime) {
_lastModifiedTime = modifiedTime;
let ps = Services.prompt;
let buttonFlags = ps.BUTTON_POS_0 * ps.BUTTON_TITLE_IS_STRING
+ ps.BUTTON_POS_1 * ps.BUTTON_TITLE_IS_STRING;
@ -304,9 +306,6 @@ var Scaffold = new function () {
if (index == 1) {
await this.load(translatorID);
}
else {
_lastModifiedTime = modifiedTime;
}
}
_updateTitle();

View file

@ -70,6 +70,10 @@
}
}
get value() {
return super.value;
}
set value(value) {
if (!this.itemCount) {
this._preconnectedValue = value;

View file

@ -373,7 +373,7 @@
event.preventDefault();
}
let delimiters = [',', ';'];
let interceptRegex = new RegExp(`\\w+\\s*(${delimiters.join('|')})\\s*\\w+`, 'i');
let interceptRegex = new RegExp(`[\\p{L}\\p{N}]+\\s*(${delimiters.join('|')})\\s*[\\p{L}\\p{N}]+`, 'iu');
let match = str.match(interceptRegex);
if (match) {
event.preventDefault();

View file

@ -161,6 +161,10 @@ var ItemTree = class ItemTree extends LibraryTree {
this._rowCache = {};
this.tree.invalidate();
}),
Zotero.Prefs.registerObserver('hideContextAnnotationRows', async () => {
await this.refresh();
this.tree.invalidate();
})
];
this._itemsPaneMessage = null;
@ -391,6 +395,10 @@ var ItemTree = class ItemTree extends LibraryTree {
// a sorted list of items for a given column configuration and restore items from that.
await this.sort([...addedItemIDs]);
// Update search results before collapse/expand of containers so that
// if hideContextAnnotationRows pref is true, child rows appear/disappear properly
this._searchItemIDs = newSearchItemIDs; // items matching the search
this._searchMode = newSearchMode;
// Toggle all open containers closed and open to refresh child items
//
// This could be avoided by making sure that items in notify() that aren't present are always
@ -406,8 +414,6 @@ var ItemTree = class ItemTree extends LibraryTree {
this._refreshRowMap();
this._searchMode = newSearchMode;
this._searchItemIDs = newSearchItemIDs; // items matching the search
this._rowCache = {};
if (!this.collectionTreeRow.isPublications()) {
@ -1742,6 +1748,10 @@ var ItemTree = class ItemTree extends LibraryTree {
if (item.isFileAttachment()) {
annotations = item.getAnnotations();
}
// Optionally, only keep annotation rows that match the search query
if (Zotero.Prefs.get("hideContextAnnotationRows") && this._searchMode) {
annotations = annotations.filter(annotation => this._searchItemIDs.has(annotation.id));
}
var newRows = [];
if (attachments.length && notes.length) {
newRows = notes.concat(attachments);
@ -2117,6 +2127,10 @@ var ItemTree = class ItemTree extends LibraryTree {
var item = this.getRow(index).ref;
if (item.isFileAttachment()) {
// Consider attachments with non-matching annotation rows as empty when pref is set
if (Zotero.Prefs.get("hideContextAnnotationRows") && this._searchMode) {
return !item.getAnnotations().some(annotation => this._searchItemIDs.has(annotation.id));
}
return item.numAnnotations() == 0;
}
if (!item.isRegularItem()) {

@ -1 +1 @@
Subproject commit 99724467e5e435b71249eaa079bed49915ee278e
Subproject commit cc53ee1fb4bc425898329b112b34aff250f43321

View file

@ -517,6 +517,12 @@ const ZoteroStandalone = new function () {
Zotero.Prefs.get('recursiveCollections')
);
// Hide context rows
this.updateMenuItemCheckmark(
'view-menuitem-hide-context-annotation-rows',
Zotero.Prefs.get('hideContextAnnotationRows')
);
this.onUpdateCustomMenus(event, 'view');
};
@ -651,6 +657,10 @@ const ZoteroStandalone = new function () {
case 'recursive-collections':
this.toggleBooleanPref('recursiveCollections');
break;
case 'hide-context-annotation-rows':
this.toggleBooleanPref('hideContextAnnotationRows');
break;
}
};

View file

@ -532,7 +532,7 @@ Zotero.HTTP = new function () {
if(success) {
Zotero.debug("HTTP " + method + " " + dispURL
+ " succeeded with " + status);
if (options.debug) {
if (options.debug && (xmlhttp.responseType == '' || xmlhttp.responseType == 'text')) {
Zotero.debug(xmlhttp.responseText);
}

View file

@ -3033,6 +3033,45 @@ Zotero.Integration.CitationField = class extends Zotero.Integration.Field {
}
}
// Fix for Mac Word "All Caps" formatting corrupting field codes.
// All text including JSON keys and string values gets uppercased,
// but numbers/booleans are unaffected. We recover items via their
// integer ID and discard corrupted URIs/itemData.
// Distinct from old Zotero 2.x uppercase which only affected CITATIONITEMS.
if (citation.CITATIONID) {
Zotero.debug("Integration: Recovering citation field corrupted by All Caps formatting");
citation.citationID = citation.CITATIONID;
delete citation.CITATIONID;
if (citation.PROPERTIES) {
if (!citation.properties) {
citation.properties = {};
}
// Preserve non-string values (unaffected by All Caps).
// Don't preserve dontUpdate -- we need to update since the
// presentation is corrupted.
if ('NOTEINDEX' in citation.PROPERTIES) {
citation.properties.noteIndex = citation.PROPERTIES.NOTEINDEX;
}
if ('UNSORTED' in citation.PROPERTIES) {
citation.properties.unsorted = citation.PROPERTIES.UNSORTED;
}
delete citation.PROPERTIES;
}
// Delete corrupted URIs and itemData from citation items.
// loadItemData() will fall through to Zotero.Items.get(citationItem.id)
// for resolution, or handleMissingItem() if the item isn't found.
for (let citationItem of citation.citationItems) {
delete citationItem.uris;
// Existing CITATIONITEMS handling lowercases ITEMDATA to 'itemdata'
delete citationItem.itemdata;
delete citationItem.itemData;
}
delete citation.SCHEMA;
}
if(!citation.properties) citation.properties = {};
for (let citationItem of citation.citationItems) {

View file

@ -563,6 +563,12 @@ Zotero.Plugins = new function () {
// TODO: Get blocking list from server
const BLOCKED_PLUGINS = {
"better-bibtex@iris-advies.com": {
versionRanges: [{
maxVersion: "8.999"
}],
reason: "Versions of this plugin prior to version 9.0 prevent Zotero from closing properly and cannot be automatically updated.",
},
"zoterostyle@polygon.org": {
versionRanges: [{
maxVersion: "4.5.99"

View file

@ -53,15 +53,154 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
},
_parentURI: null,
_rootURI: null,
_channelAuthorization: null,
_getAuthorizationHeaders() {
if (!this._channelAuthorization) {
Zotero.debug("Authorization header not cached");
return {};
_rootURI: null,
_basicAuthHeader: null,
_digestParams: null,
/**
* Get an Authorization header for the given request.
*
* Firefox no longer sends preemptive Authorization headers across separate XMLHttpRequest
* instances, even to the same host. Every request starts unauthenticated, which triggers 401
* round-trips and can cause failures with servers that close the connection on unauthenticated
* PUT.
*
* To work around this, cacheCredentials() captures the auth type from the first authenticated
* request:
*
* - Basic: the Authorization header is stored as-is and replayed on all requests
* - Digest: the challenge parameters (realm, nonce, qop, etc.) are stored, and a fresh Digest
* Authorization header is computed per request
*
* @param {String} method - HTTP method
* @param {nsIURI} uri - Request URI
* @return {Object} - Headers object, e.g. { Authorization: "..." } or {}
*/
_getAuthorizationHeaders(method, uri) {
// Basic auth can be replayed directly
if (this._basicAuthHeader) {
return { Authorization: this._basicAuthHeader };
}
// Digest auth -- compute a fresh header for this method/URI
if (this._digestParams && method && uri) {
let auth = this._computeDigestAuth(method, uri.pathQueryRef);
if (auth) {
return { Authorization: auth };
}
}
return {};
},
/**
* Parse Digest parameters from a captured Authorization header.
*
* A Digest Authorization header looks like:
* Digest username="user", realm="WebDAV", nonce="abc", uri="/path",
* qop=auth, nc=00000001, cnonce="xyz", response="...", opaque="..."
*
* We extract the challenge parameters (realm, nonce, qop, opaque,
* algorithm) so we can compute fresh responses for different requests.
*
* @param {String} header - The Digest Authorization header string
* @return {Object|null} - Parsed parameters or null
*/
_parseDigestParams(header) {
if (!header || !header.startsWith('Digest ')) return null;
let params = {};
let regex = /(\w+)=(?:"([^"]*)"|([\w]+))/g;
let match;
while ((match = regex.exec(header)) !== null) {
params[match[1]] = match[2] !== undefined ? match[2] : match[3];
}
if (!params.realm || !params.nonce) return null;
return params;
},
/**
* Compute a Digest Authorization header for the given method and URI.
*
* @param {String} method - HTTP method
* @param {String} path - Request URI path (e.g., "/zotero/file.zip")
* @return {String|null} - Complete Digest Authorization header or null
*/
_computeDigestAuth(method, path) {
let p = this._digestParams;
if (!p) return null;
let md5 = Zotero.Utilities.Internal.md5;
let nc = (++p.nc).toString(16).padStart(8, '0');
let cnonce = Zotero.Utilities.randomString(16);
let ha1;
if (p.algorithm && p.algorithm.toLowerCase() === 'md5-sess') {
let base = md5(`${p.username}:${p.realm}:${p.password}`);
ha1 = md5(`${base}:${p.nonce}:${cnonce}`);
}
else {
ha1 = md5(`${p.username}:${p.realm}:${p.password}`);
}
let ha2 = md5(`${method}:${path}`);
let response;
if (p.qop) {
response = md5(
`${ha1}:${p.nonce}:${nc}:${cnonce}:${p.qop}:${ha2}`
);
}
else {
response = md5(`${ha1}:${p.nonce}:${ha2}`);
}
let header = `Digest username="${p.username}", realm="${p.realm}"`
+ `, nonce="${p.nonce}", uri="${path}"`
+ `, response="${response}"`;
if (p.algorithm) {
header += `, algorithm=${p.algorithm}`;
}
if (p.qop) {
header += `, qop=${p.qop}, nc=${nc}, cnonce="${cnonce}"`;
}
if (p.opaque) {
header += `, opaque="${p.opaque}"`;
}
return header;
},
/**
* Callback for onAuthorizationHeader -- caches the auth type and
* parameters from a completed request.
*
* @param {String} authorization - The Authorization header value
*/
_cacheAuthorization(authorization) {
this._basicAuthHeader = null;
this._digestParams = null;
if (!authorization) return;
if (authorization.startsWith('Basic ')) {
this._basicAuthHeader = authorization;
Zotero.debug("Cached Basic auth header");
}
else if (authorization.startsWith('Digest ')) {
let parsed = this._parseDigestParams(authorization);
if (parsed) {
let username = decodeURIComponent(this.rootURI.username);
let password = decodeURIComponent(this.rootURI.password);
this._digestParams = {
username,
password,
realm: parsed.realm,
nonce: parsed.nonce,
qop: parsed.qop || null,
opaque: parsed.opaque || null,
algorithm: parsed.algorithm || null,
nc: 0,
};
Zotero.debug("Cached Digest auth parameters");
}
}
return { Authorization: this._channelAuthorization };
},
/**
@ -69,7 +208,8 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
*/
_onAuthError() {
Zotero.debug("Clearing cached WebDAV credentials due to auth error");
this._channelAuthorization = false;
this._basicAuthHeader = false;
this._digestParams = null;
this.verified = false;
},
@ -135,8 +275,9 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
return;
}
this._channelAuthorization = false;
this._basicAuthHeader = false;
this._digestParams = null;
var logins = await Services.logins.searchLoginsAsync({
origin: this._loginManagerHost,
httpRealm: this._loginManagerRealm
@ -246,29 +387,35 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
cacheCredentials: async function () {
await this._init();
if (this._channelAuthorization) {
if (this._basicAuthHeader || this._digestParams) {
Zotero.debug("WebDAV credentials are already cached");
return;
}
Zotero.debug("Caching WebDAV credentials");
let xmlstr = "<propfind xmlns='DAV:'><prop>"
+ "<getcontentlength/>"
+ "</prop></propfind>";
try {
var req = await Zotero.HTTP.request(
"OPTIONS",
await Zotero.HTTP.request(
"PROPFIND",
this.rootURI,
{
successCodes: [200, 204, 404],
body: xmlstr,
headers: {
Depth: 0,
"Content-Type": "text/xml; charset=utf-8"
},
successCodes: [207, 404],
errorDelayIntervals: this.ERROR_DELAY_INTERVALS,
errorDelayMax: this.ERROR_DELAY_MAX,
onAuthorizationHeader: (authorization) => {
// Capture whatever auth it ended up using, if any
this._channelAuthorization = authorization;
this._cacheAuthorization(authorization);
},
}
);
if (this._channelAuthorization) {
if (this._basicAuthHeader || this._digestParams) {
Zotero.debug("Authorization header cached");
}
else {
@ -278,7 +425,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
catch (e) {
if (e instanceof Zotero.HTTP.UnexpectedStatusException) {
let msg = "HTTP " + e.status + " error from WebDAV server "
+ "for OPTIONS request";
+ "for PROPFIND request";
Zotero.logError(msg);
throw new Error(this.defaultErrorRestart);
}
@ -293,7 +440,8 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
Zotero.HTTP.CookieBlocker.removeURL(this._rootURI.spec);
}
this._rootURI = this._parentURI = undefined;
this._channelAuthorization = false;
this._basicAuthHeader = false;
this._digestParams = null;
},
@ -553,7 +701,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
"DELETE",
propURI,
{
headers: this._getAuthorizationHeaders(),
headers: this._getAuthorizationHeaders("DELETE", propURI),
successCodes: [200, 204, 404],
requestObserver: xmlhttp => request.setChannel(xmlhttp.channel),
errorDelayIntervals: this.ERROR_DELAY_INTERVALS,
@ -587,7 +735,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
uri,
{
headers: Object.assign(
this._getAuthorizationHeaders(),
this._getAuthorizationHeaders("PUT", uri),
{
"Content-Type": "application/zip"
},
@ -659,38 +807,36 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
{
successCodes: [200, 204, 404],
requestObserver,
onAuthorizationHeader: (authorization) => {
// Capture whatever auth it ended up using, if any
this._channelAuthorization = authorization;
},
errorDelayMax: 0,
debug: true
}
);
Zotero.debug(req.getAllResponseHeaders());
var dav = req.getResponseHeader("DAV");
if (dav == null) {
throw new this.VerificationError("NOT_DAV", Zotero.HTTP.getDisplayURI(uri, true).spec);
}
var headers = this._getAuthorizationHeaders();
var propfindHeaders = {
Depth: 0,
"Content-Type": "text/xml; charset=utf-8"
};
// Test whether Zotero directory exists
req = await Zotero.HTTP.request("PROPFIND", uri, {
body: xmlstr,
headers: Object.assign({}, headers, propfindHeaders),
headers: propfindHeaders,
successCodes: [207, 404],
requestObserver,
onAuthorizationHeader: (authorization) => {
this._cacheAuthorization(authorization);
},
errorDelayMax: 0,
debug: true
});
if (req.status == 207) {
// Test if missing files return 404s
let missingFileURI = uri.mutate().setSpec(uri.spec + "nonexistent.prop").finalize();
@ -699,7 +845,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
"GET",
missingFileURI,
{
headers,
headers: this._getAuthorizationHeaders("GET", missingFileURI),
successCodes: [404],
responseType: 'text',
requestObserver,
@ -719,23 +865,23 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
}
throw e;
}
// Test if Zotero directory is writable
let testFileURI = uri.mutate().setSpec(uri.spec + "zotero-test-file.prop").finalize();
req = await Zotero.HTTP.request("PUT", testFileURI, {
headers,
headers: this._getAuthorizationHeaders("PUT", testFileURI),
body: " ",
successCodes: [200, 201, 204],
requestObserver,
errorDelayMax: 0,
debug: true
});
req = await Zotero.HTTP.request(
"GET",
testFileURI,
{
headers,
headers: this._getAuthorizationHeaders("GET", testFileURI),
successCodes: [200, 404],
responseType: 'text',
requestObserver,
@ -743,14 +889,14 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
debug: true
}
);
if (req.status == 200) {
// Delete test file
await Zotero.HTTP.request(
"DELETE",
testFileURI,
{
headers,
headers: this._getAuthorizationHeaders("DELETE", testFileURI),
successCodes: [200, 204],
requestObserver,
errorDelayMax: 0,
@ -774,7 +920,11 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
// Zotero directory wasn't found, so see if at least
// the parent directory exists
req = await Zotero.HTTP.request("PROPFIND", parentURI, {
headers: Object.assign({}, headers, propfindHeaders),
headers: Object.assign(
{},
this._getAuthorizationHeaders("PROPFIND", parentURI),
propfindHeaders
),
body: xmlstr,
requestObserver,
successCodes: [207, 404],
@ -1053,7 +1203,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
{
body: xmlstr,
headers: Object.assign(
this._getAuthorizationHeaders(),
this._getAuthorizationHeaders("PROPFIND", uri),
{ Depth: 1 },
contentTypeXML
),
@ -1184,7 +1334,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
"GET",
uri,
{
headers: this._getAuthorizationHeaders(),
headers: this._getAuthorizationHeaders("GET", uri),
successCodes: [200, 300, 404],
responseType: 'text',
requestObserver: xmlhttp => request.setChannel(xmlhttp.channel),
@ -1300,7 +1450,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
{
"Content-Type": "text/xml"
},
this._getAuthorizationHeaders(),
this._getAuthorizationHeaders("PUT", uri),
),
body: xmlstr,
successCodes: [200, 201, 204],
@ -1461,7 +1611,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
"DELETE",
deleteURI,
{
headers: this._getAuthorizationHeaders(),
headers: this._getAuthorizationHeaders("DELETE", deleteURI),
successCodes: [200, 204, 404],
errorDelayIntervals: this.ERROR_DELAY_INTERVALS,
errorDelayMax: this.ERROR_DELAY_MAX,
@ -1504,7 +1654,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
"DELETE",
deletePropURI,
{
headers: this._getAuthorizationHeaders(),
headers: this._getAuthorizationHeaders("DELETE", deletePropURI),
successCodes: [200, 204, 404],
errorDelayIntervals: this.ERROR_DELAY_INTERVALS,
errorDelayMax: this.ERROR_DELAY_MAX,

View file

@ -693,6 +693,12 @@
oncommand="ZoteroStandalone.onViewMenuItemClick(event)"
type="checkbox"
/>
<menuitem id="view-menuitem-hide-context-annotation-rows"
class="menu-type-library"
data-l10n-id="menu-view-hide-context-annotation-rows"
oncommand="ZoteroStandalone.onViewMenuItemClick(event)"
type="checkbox"
/>
<menuseparator/>
<menuitem id="show-tabs-menu"
data-l10n-id="menu-show-tabs-menu"

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Note Font Size
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Etikette
itemFields.attachments=Aanhegsels
itemFields.related=Verwant
itemFields.url=URL
itemFields.rights=Regte
itemFields.rights=License
itemFields.series=Series
itemFields.volume=Volume
itemFields.issue=Issue

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = نقل العمود لليسار
menu-view-columns-move-right =
.label = نقل العمود لليمين
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = حجم خط الملاحظات
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=أوسمة
itemFields.attachments=مرفقات
itemFields.related=عناصر مرتبطة
itemFields.url=عنوان الموقع
itemFields.rights=الحقوق
itemFields.rights=License
itemFields.series=السلسلة
itemFields.volume=المجلد
itemFields.issue=العدد

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Note Font Size
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Отметки
itemFields.attachments=Приложения
itemFields.related=Близки
itemFields.url=Адрес
itemFields.rights=Права
itemFields.rights=License
itemFields.series=Поредица
itemFields.volume=Том
itemFields.issue=Брой

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Notenn ment skritur
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Balizoù
itemFields.attachments=Pezhioù-stag
itemFields.related=Kevreet
itemFields.url=URL
itemFields.rights=Aotreadurioù
itemFields.rights=License
itemFields.series=Dastumad
itemFields.volume=Levrenn
itemFields.issue=Niverenn

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Mou la columna a l'esquerra
menu-view-columns-move-right =
.label = Mou la columna a la dreta
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Mida de lletra de les notes
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Etiquetes
itemFields.attachments=Adjuncions
itemFields.related=Elements relacionats
itemFields.url=URL
itemFields.rights=Drets
itemFields.rights=License
itemFields.series=Sèrie
itemFields.volume=Volum
itemFields.issue=Número

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Přesunout sloupce vlevo
menu-view-columns-move-right =
.label = Přesunout sloupce vpravo
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Velikost písma poznámek
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Štítky
itemFields.attachments=Přílohy
itemFields.related=Související
itemFields.url=URL
itemFields.rights=Práva
itemFields.rights=License
itemFields.series=Série
itemFields.volume=Ročník
itemFields.issue=Číslo

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Noteskriftstørrelse
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Mærker
itemFields.attachments=Vedhæftninger
itemFields.related=Relateret
itemFields.url=URL
itemFields.rights=Rettigheder
itemFields.rights=License
itemFields.series=Serie
itemFields.volume=Bind/Årgang
itemFields.issue=Nummer

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Spalte nach links verschieben
menu-view-columns-move-right =
.label = Spalte nach rechts verschieben
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Schriftgröße Notizen
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Tags
itemFields.attachments=Anhänge
itemFields.related=Verwandte Einträge
itemFields.url=URL
itemFields.rights=Rechte
itemFields.rights=License
itemFields.series=Reihe
itemFields.volume=Band
itemFields.issue=Ausgabe

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Μέγεθος γραμματοσειράς σημείωσης
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Ετικέτες
itemFields.attachments=Συνημμένα
itemFields.related=Σχετικό
itemFields.url=URL
itemFields.rights=Δικαιώματα
itemFields.rights=License
itemFields.series=Σειρά
itemFields.volume=Τόμος
itemFields.issue=Τεύχος

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Note Font Size
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Tags
itemFields.attachments=Attachments
itemFields.related=Related
itemFields.url=URL
itemFields.rights=Rights
itemFields.rights=License
itemFields.series=Series
itemFields.volume=Volume
itemFields.issue=Issue

View file

@ -135,6 +135,9 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Note Font Size
@ -856,3 +859,6 @@ normalize-attachment-titles-text = { -app-name } automatically renames files on
In older versions of { -app-name }, as well as when using certain plugins, attachment titles could be changed unnecessarily to match the filenames.
Would you like to update the selected attachments to use simpler titles? Only primary attachments with titles that match the filename will be changed.
plugins-blocked-plugin =
.message = This plugin has been disabled by { -app-name }.

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Mover columna a la izquierda
menu-view-columns-move-right =
.label = Mover columna a la derecha
menu-view-hide-context-annotation-rows =
.label = Ocultar anotaciones que no coinciden
menu-view-note-font-size =
.label = Tamaño de fuente de notas
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Etiquetas
itemFields.attachments=Adjuntos
itemFields.related=Relacionado
itemFields.url=URL
itemFields.rights=Derechos
itemFields.rights=Licencia
itemFields.series=Serie
itemFields.volume=Volumen
itemFields.issue=Número

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Note Font Size
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Lipikud
itemFields.attachments=Manused
itemFields.related=Seotud
itemFields.url=URL
itemFields.rights=Õigused
itemFields.rights=License
itemFields.series=Seeria
itemFields.volume=Köide
itemFields.issue=Väljalase

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Oharraren letra-tamaina
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Etiketak
itemFields.attachments=Eranskinak
itemFields.related=Erlaziodun
itemFields.url=URLa
itemFields.rights=Eskubideak
itemFields.rights=License
itemFields.series=Serie
itemFields.volume=Alea
itemFields.issue=Zenbakia

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = سایز فونت یادداشت‌ها
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=برچسب‌ها
itemFields.attachments=پیوست‌ها
itemFields.related=مرتبط
itemFields.url=نشانی وب
itemFields.rights=حقوق
itemFields.rights=License
itemFields.series=مجموعه (سری)
itemFields.volume=جلد
itemFields.issue=شماره

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Siirrä sarake vasemmalle
menu-view-columns-move-right =
.label = Siirrä sarake oikealle
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Muistiinpanojen fonttikoko
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Merkit
itemFields.attachments=Liitteet
itemFields.related=Liittyvät
itemFields.url=URL
itemFields.rights=Oikeudet
itemFields.rights=License
itemFields.series=Sarja
itemFields.volume=Vuosikerta
itemFields.issue=Numero

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Déplacer la colonne à gauche
menu-view-columns-move-right =
.label = Déplacer la colonne à droite
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Taille des caractères dans les notes
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Marqueurs
itemFields.attachments=Pièces jointes
itemFields.related=Connexe
itemFields.url=URL
itemFields.rights=Autorisations
itemFields.rights=Licence
itemFields.series=Collection
itemFields.volume=Volume
itemFields.issue=Numéro

View file

@ -100,7 +100,7 @@ reader-convert-to-highlight = Convert to Highlight
reader-convert-to-underline = Convert to Underline
reader-size = Tamaño
reader-merge = Merge
reader-copy-link = Copy Link
reader-copy-link = Copiar ligazón
reader-theme-original = Original
reader-theme-snow = Snow
reader-theme-sepia = Sepia

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Tamaño tipográfico das notas
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Etiquetas
itemFields.attachments=Anexos
itemFields.related=Relacionado
itemFields.url=URL
itemFields.rights=Dereitos
itemFields.rights=License
itemFields.series=Serie
itemFields.volume=Tomo
itemFields.issue=Número
@ -1446,7 +1446,7 @@ pdfReader.convertToHighlight=Convert to Highlight
pdfReader.convertToUnderline=Convert to Underline
pdfReader.size=Tamaño
pdfReader.merge=Merge
pdfReader.copyLink=Copy Link
pdfReader.copyLink=Copiar ligazón
pdfReader.theme.original=Original
pdfReader.theme.snow=Snow
pdfReader.theme.sepia=Sepia

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = העברת עמודה שמאלה
menu-view-columns-move-right =
.label = העברת עמודה ימינה
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = גודל גופן הערה
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=תגיות
itemFields.attachments=קבצים מצורפים
itemFields.related=קשור
itemFields.url=כתובת
itemFields.rights=זכויות
itemFields.rights=License
itemFields.series=סדרה
itemFields.volume=כרך
itemFields.issue=גיליון

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Veličina slova bilješke
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Oznake
itemFields.attachments=Prilozi
itemFields.related=Povezano
itemFields.url=URL
itemFields.rights=Prava
itemFields.rights=License
itemFields.series=Serija
itemFields.volume=Svezak
itemFields.issue=Broj

View file

@ -166,7 +166,7 @@
<!ENTITY zotero.preferences.advanced.advancedConfiguration " Haladó beállítások">
<!ENTITY zotero.preferences.prefpane.locate "Elhelyezni">
<!ENTITY zotero.preferences.prefpane.locate "Hely megadása">
<!ENTITY zotero.preferences.locate.locateEngineManager "Article Lookup Engine Manager">
<!ENTITY zotero.preferences.locate.description "Leírás">
<!ENTITY zotero.preferences.locate.name "Név">

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Jegyzet betűmérete
menu-view-note-tab-font-size =
@ -144,7 +146,7 @@ zotero-collections-search =
zotero-collections-search-btn =
.tooltiptext = { filter-collections }
zotero-tabs-menu-filter =
.placeholder = Search Tabs
.placeholder = Keresés a fülek között
zotero-tabs-menu-close-button =
.title = Fül bezárása
zotero-toolbar-tabs-scroll-forwards =
@ -552,7 +554,7 @@ tag-field =
tagselector-search =
.placeholder = Filter Tags
context-notes-search =
.placeholder = Search Notes
.placeholder = Keresés a jegyzetek között
context-notes-return-button =
.aria-label = { general-go-back }
new-collection = Új gyűjtemény...

View file

@ -500,7 +500,7 @@ itemFields.tags=Címkék
itemFields.attachments=Csatolmányok
itemFields.related=Kapcsolatok
itemFields.url=URL
itemFields.rights=Jogok
itemFields.rights=License
itemFields.series=Sorozat
itemFields.volume=Kötet
itemFields.issue=Szám

View file

@ -30,14 +30,14 @@ general-add = Tambahkan
general-remind-me-later = Ingatkan saya nanti
general-dont-ask-again = Jangan tanya lagi
general-choose-file = Pilih Berkas...
general-open-settings = Open Settings
general-settings = Settings…
general-open-settings = Buka Pengaturan
general-settings = Pengaturan
general-help = Bantuan
general-tag = Tag
general-done = Selesai
general-view-troubleshooting-instructions = View Troubleshooting Instructions
general-go-back = Go Back
general-accept = Accept
general-go-back = Kembali
general-accept = Terima
general-cancel = Batal
general-show-in-library = Tunjukkan dalam Perpustakaan
general-restartApp = Restart { -app-name }
@ -55,18 +55,18 @@ general-delete = Hapus
general-insert = Sisipkan
general-and = dan
general-et-al = et al.
general-previous = Previous
general-next = Next
general-previous = Sebelum
general-next = Lanjut
general-learn-more = Baca lebih lanjut
general-warning = Peringatan
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Lanjut
general-red = Merah
general-orange = Orange
general-orange = Jingga
general-yellow = Kuning
general-green = Green
general-green = Hijau
general-teal = Teal
general-blue = Blue
general-blue = Biru
general-purple = Purple
general-magenta = Magenta
general-violet = Violet
@ -83,7 +83,7 @@ menu-file-show-in-finder =
menu-file-show-file =
.label = Tunjukkan Berkas
menu-file-show-files =
.label = Show Files
.label = Tampilkan Dokumen
menu-print =
.label = { general-print }
menu-density =
@ -95,9 +95,9 @@ menu-add-by-identifier =
menu-add-attachment =
.label = { add-attachment }
menu-add-standalone-file-attachment =
.label = Add File…
.label = Tambah File
menu-add-standalone-linked-file-attachment =
.label = Add Link to File…
.label = Tambah Tautan pada Dokumen
menu-add-child-file-attachment =
.label = Attach File…
menu-add-child-linked-file-attachment =
@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Ukuran font catatan
menu-view-note-tab-font-size =

View file

@ -99,11 +99,11 @@ general.save=Simpan
general.edit=Edit
general.red=Merah
general.orange=Orange
general.orange=Jingga
general.yellow=Kuning
general.green=Green
general.green=Hijau
general.teal=Teal
general.blue=Blue
general.blue=Biru
general.purple=Purple
general.magenta=Magenta
general.violet=Violet
@ -500,7 +500,7 @@ itemFields.tags=Tag
itemFields.attachments=Lampiran
itemFields.related=Terkait
itemFields.url=URL
itemFields.rights=Hak
itemFields.rights=License
itemFields.series=Seri
itemFields.volume=Volume
itemFields.issue=Isu
@ -1319,8 +1319,8 @@ noteEditor.insertCitation=Insert Citation
noteEditor.more=Lainnya
noteEditor.find=Temukan
noteEditor.replace=Replace
noteEditor.previous=Previous
noteEditor.next=Next
noteEditor.previous=Sebelumnya
noteEditor.next=Lanjut
noteEditor.replaceNext=Replace
noteEditor.replaceAll=Replace All
noteEditor.goToPage=Go to Page

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Leturstærð athugasemdar
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Merki
itemFields.attachments=Viðhengi
itemFields.related=Venslað
itemFields.url=Slóð
itemFields.rights=Réttindi
itemFields.rights=License
itemFields.series=Ritröð
itemFields.volume=Bindi
itemFields.issue=Hefti

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Sposta colonna a sinistra
menu-view-columns-move-right =
.label = Sposta colonna a destra
menu-view-hide-context-annotation-rows =
.label = Nascondi le annotazioni non-corrispondenti
menu-view-note-font-size =
.label = Dimensione del font nelle note
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Tag
itemFields.attachments=Allegati
itemFields.related=Correlazioni
itemFields.url=URL
itemFields.rights=Diritti
itemFields.rights=Licenza
itemFields.series=Serie
itemFields.volume=Volume
itemFields.issue=Fascicolo

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = メモのフォントサイズ
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=タグ
itemFields.attachments=添付ファイル
itemFields.related=関連アイテム
itemFields.url=URL
itemFields.rights=権利
itemFields.rights=License
itemFields.series=叢書
itemFields.volume=
itemFields.issue=

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Note Font Size
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=ស្លាក
itemFields.attachments=ឯកសារកម្ជាប់
itemFields.related=ពាក់ព័ន្ធ
itemFields.url=គេហទំព័រ
itemFields.rights=សិទ្ធិ
itemFields.rights=License
itemFields.series=លេខរៀង
itemFields.volume=វ៉ុល
itemFields.issue=ចេញផ្សាយ

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = 노트 글꼴 크기
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=태그
itemFields.attachments=첨부
itemFields.related=연관
itemFields.url=URL
itemFields.rights=소유권
itemFields.rights=License
itemFields.series=시리즈
itemFields.volume=
itemFields.issue=

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Perkelti stulpelį kairėn
menu-view-columns-move-right =
.label = Perkelti stulpelį dešinėn
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Pastabos šrifto dydis
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Gairės
itemFields.attachments=Priedai
itemFields.related=Susiję
itemFields.url=URL
itemFields.rights=Teisės
itemFields.rights=License
itemFields.series=Serija
itemFields.volume=Tomas
itemFields.issue=Numeris

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Тайлбар үсгийн хэмжээ
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Tags
itemFields.attachments=Attachments
itemFields.related=Related
itemFields.url=URL
itemFields.rights=Rights
itemFields.rights=License
itemFields.series=Series
itemFields.volume=Volume
itemFields.issue=Issue

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Flytt kolonne til venstre
menu-view-columns-move-right =
.label = Flytt kolonne til høyre
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Skriftstørrelse for notat
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Emneord
itemFields.attachments=Vedlegg
itemFields.related=Relatert
itemFields.url=URL
itemFields.rights=Rettigheter
itemFields.rights=License
itemFields.series=Serie
itemFields.volume=Volum
itemFields.issue=Nummer

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Kolom Naar Links Verplaatsen
menu-view-columns-move-right =
.label = Kolom Naar Rechts Verplaatsen
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Lettergrootte notities
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Labels
itemFields.attachments=Bijlages
itemFields.related=Gerelateerd
itemFields.url=URL
itemFields.rights=Rechten
itemFields.rights=License
itemFields.series=Reeks
itemFields.volume=Deel
itemFields.issue=Editie

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Note Font Size
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Taggar
itemFields.attachments=Vedlegg
itemFields.related=Relaterte
itemFields.url=URL
itemFields.rights=Rettar
itemFields.rights=License
itemFields.series=Serie
itemFields.volume=Volum
itemFields.issue=Nummer

View file

@ -46,8 +46,8 @@ note-editor-find-and-replace = Znajdź i zamień
note-editor-edit-in-window = Edytuj w oddzielnym oknie
note-editor-apply-annotation-colors = Pokaż kolory adnotacji
note-editor-remove-annotation-colors = Ukryj kolory adnotacji
note-editor-add-citations = Show Annotation Citations
note-editor-remove-citations = Hide Annotation Citations
note-editor-add-citations = Pokaż cytowania adnotacji
note-editor-remove-citations = Ukryj cytowania adnotacji
note-editor-image = Obraz
note-editor-math = Matematyczny
note-editor-table = Tabela

View file

@ -112,8 +112,10 @@ preferences-sync-reset-restore-to-server-remaining-items-text =
}
preferences-sync-reset-restore-to-server-checkbox-label =
{ $remoteItemsDeletedCount ->
[one] Delete 1 item
*[other] Delete { $remoteItemsDeletedCount } items
[one] Usuń { $remoteItemsDeletedCount } element
[few] Usuń { $remoteItemsDeletedCount } elementy
[many] Usuń { $remoteItemsDeletedCount } elementów
*[other] Usuń { $remoteItemsDeletedCount } elementów
}
preferences-sync-reset-restore-to-server-confirmation-text = usuń bibliotekę online
preferences-sync-reset-restore-to-server-yes = Zamień dane w zdalnej bibliotece

View file

@ -56,8 +56,10 @@ reader-prompt-delete-pages-text =
reader-prompt-delete-annotations-title = Usuń adnotacje
reader-prompt-delete-annotations-text =
{ $count ->
[one] Are you sure you want to delete the selected annotation?
*[other] Are you sure you want to delete the selected annotations?
[one] Czy na pewno chcesz usunąć wybraną adnotację?
[few] Czy na pewno chcesz usunąć wybrane adnotacje?
[many] Czy na pewno chcesz usunąć wybrane adnotacje?
*[other] Czy na pewno chcesz usunąć wybrane adnotacje?
}
reader-rotate-left = Obróć w lewo
reader-rotate-right = Obróć w prawo

View file

@ -6,7 +6,7 @@ itemFields-partNumber = Numer części
itemFields-partTitle = Tytuł części
itemFields-priorityDate = Data priorytetu
itemFields-sessionTitle = Tytuł sesji
creatorTypes-chair = Chair
creatorTypes-chair = Przewodniczący
creatorTypes-creator = Twórca
creatorTypes-executiveProducer = Producent wykonawczy
creatorTypes-host = Host

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Przesuń kolumnę w lewo
menu-view-columns-move-right =
.label = Przesuń kolumnę w prawo
menu-view-hide-context-annotation-rows =
.label = Ukryj niepasujące adnotacje
menu-view-note-font-size =
.label = Rozmiar czcionki notatek
menu-view-note-tab-font-size =
@ -480,7 +482,7 @@ section-tags =
*[other] { $count } Etykiet
}
section-related =
.label = { $count } Related
.label = { $count } powiązanych
section-attachment-info =
.label = { pane-attachment-info }
section-button-remove =
@ -724,14 +726,18 @@ select-items-convertToStandalone =
select-items-convertToStandaloneAttachment =
.label =
{ $count ->
[one] Convert to Standalone Attachment
*[other] Convert to Standalone Attachments
[one] Przekształć na samodzielny załącznik
[few] Przekształć na samodzielne załączniki
[many] Przekształć na samodzielne załączniki
*[other] Przekształć na samodzielne załączniki
}
select-items-convertToStandaloneNote =
.label =
{ $count ->
[one] Convert to Standalone Note
*[other] Convert to Standalone Notes
[one] Przekształć na samodzielną notatkę
[few] Przekształć na samodzielne notatki
[many] Przekształć na samodzielne notatki
*[other] Przekształć na samodzielne notatki
}
file-type-webpage = Strona internetowa
file-type-image = Obraz
@ -755,7 +761,7 @@ mac-word-plugin-install-remind-later-button =
.label = { general-remind-me-later }
mac-word-plugin-install-dont-ask-again-button =
.label = { general-dont-ask-again }
file-renaming-banner-message = { -app-name } now automatically keeps attachment filenames in sync as you make changes to items.
file-renaming-banner-message = { -app-name } teraz automatycznie synchronizuje nazwy plików załączników podczas dokonywania zmian w elementach.
file-renaming-banner-documentation-link = { general-learn-more }
file-renaming-banner-settings-link = { general-settings }
connector-version-warning = Łącznik { -app-name } musi zostać zaktualizowany, aby działać z tą wersją { -app-name }.

View file

@ -500,7 +500,7 @@ itemFields.tags=Etykiety
itemFields.attachments=Załączniki
itemFields.related=Powiązane
itemFields.url=Adres URL
itemFields.rights=Przepisy/Prawa
itemFields.rights=Licencja
itemFields.series=Seria
itemFields.volume=Tom
itemFields.issue=Numer
@ -1336,8 +1336,8 @@ noteEditor.findAndReplace=Znajdź i zamień
noteEditor.editInWindow=Edytuj w oddzielnym oknie
noteEditor.applyAnnotationColors=Pokaż kolory adnotacji
noteEditor.removeAnnotationColors=Ukryj kolory adnotacji
noteEditor.addCitations=Show Annotation Citations
noteEditor.removeCitations=Hide Annotation Citations
noteEditor.addCitations=Pokaż cytowania adnotacji
noteEditor.removeCitations=Ukryj cytowania adnotacji
noteEditor.image=Obraz
noteEditor.math=Matematyczny
noteEditor.table=Tabela

View file

@ -42,14 +42,14 @@ integration-citationDialog-lib-message-citation =
}
integration-citationDialog-lib-message-add-note =
{ $search ->
[true] No selected notes match the current search
*[other] No notes are selected
[true] Nenhuma nota selecionada corresponde a busca
*[other] Nenhuma nota selecionada
}
integration-citationDialog-settings-keepSorted = Manter as fontes ordenadas
integration-citationDialog-btn-settings =
.title = { general-open-settings }
integration-citationDialog-mode-library = Biblioteca
integration-citationDialog-mode-list = List
integration-citationDialog-mode-list = Lista
integration-citationDialog-btn-type-citation =
.title = Adicionar/Editar citação
integration-citationDialog-btn-type-add-note =
@ -70,7 +70,7 @@ integration-citationDialog-input-citation =
.placeholder = { integration-citationDialog-search-for-items }
.aria-description = { integration-citationDialog-general-instructions }
integration-citationDialog-single-input-add-note =
.placeholder = Search for a note to insert into the document
.placeholder = Busque por nota para inserir no documento
integration-citationDialog-aria-item-list =
.aria-description = Utilize as setas direcionais para cima/para baixo para mudar a seleção. { integration-citationDialog-enter-to-add-item }
integration-citationDialog-aria-item-library =
@ -116,8 +116,8 @@ integration-warning-documentPreferences-changes-will-be-lost = Você fez altera
integration-warning-discard-changes = Descartar alterações
integration-warning-command-is-running = Um comando de integração de processador de texto já está em funcionamento.
first-run-guidance-citationDialog =
Type a title, author, and/or year to search for a reference.
Digite um título, autor e/ou ano para buscar por uma referência.
After youve made your selection, click the bubble or select it via the keyboard and press ↓/Space to show citation options such as page number, prefix, and suffix.
Depois que tiver feito sua seleção, clique no balão e selecione pelo teclado e pressione ↓/Espaço para mostrar as opções de citação como número de página, prefixo e sufixo.
You can also add a page number or other locator by including it with your search terms (e.g., “history { $locator }”) or by typing it after the bubble and pressing { return-or-enter }.
Você também pode adicionar o número da página ou outro localizador ao incluir com os termos da busca (ex.: “história { $locator }”) ou digitando depois do balão e pressionando { return-or-enter }.

View file

@ -28,10 +28,10 @@ preferences-file-renaming-format-instructions-example = Por exemplo, neste model
preferences-file-renaming-format-instructions-more = Ver a <label data-l10n-name="file-renaming-format-help-link">documentação</label> para mais informações.
preferences-file-renaming-format-template = Modelo do nome do arquivo:
preferences-file-renaming-format-preview = Visualização:
preferences-attachment-titles-title = Attachment Titles
preferences-attachment-titles-intro = Attachment titles are <label data-l10n-name="wiki-link">different from filenames</label>. To support some workflows, { -app-name } can show filenames instead of attachment titles in the items list.
preferences-attachment-titles-title = Títulos de anexos
preferences-attachment-titles-intro = Os títulos dos anexos estão <label data-l10n-name="wiki-link">diferentes dos títulos dos arquivos</label>. Para alguns recursos, { -app-name } pode mostrar o nome do arquivo ao invés do título do anexo na lista de itens.
preferences-attachment-titles-show-filenames =
.label = Show attachment filenames in the items list
.label = Mostrar títulos de anexos na lista de itens
preferences-reader-title = Leitor
preferences-reader-open-epubs-using = Abrir EPUBs usando
preferences-reader-open-snapshots-using = Abrir snapshots usando
@ -44,7 +44,7 @@ preferences-reader-ebook-hyphenate =
.label = Ativar a hifenação automática:
preferences-note-title = Notas
preferences-note-open-in-new-window =
.label = Open notes in new windows instead of tabs
.label = Abrir notas em novas janelas ao invés de abas
preferences-color-scheme = Esquema de cor:
preferences-color-scheme-auto =
.label = Automático(a)

View file

@ -109,7 +109,7 @@ reader-theme-sepia = Sepia
reader-theme-dark = Escuro
reader-theme-black = Preto
reader-add-theme = Adicionar Tema
reader-theme-invert-images = Invert Images
reader-theme-invert-images = Inverter imagens
reader-scroll-mode = Rolagem
reader-spread-mode = Lado a lado
reader-flow-mode = Layout da página
@ -130,9 +130,9 @@ reader-theme-name = Nome do tema:
reader-background = Fundo:
reader-foreground = Primeiro plano:
reader-reading-mode = Modo de leitura
reader-reading-mode-not-supported = Reading Mode is not supported in this document.
reader-reading-mode-not-supported = Modo de leitura não é compatível com este documento.
reader-clear-selection = Limpar seleção
reader-epub-encrypted = This ebook is encrypted and cannot be opened.
reader-epub-encrypted = Este e-book está criptografado e não pode ser aberto.
reader-move-annotation-start-key =
{ PLATFORM() ->
[macos] { general-key-command }
@ -189,7 +189,8 @@ reader-import-from-epub-no-annotations-other-file =
reader-import-from-epub-select-other = Selecionar outro arquivo...
reader-selected-pages =
{ $count ->
[one] 1 page selected
*[other] { $count } pages selected
[one] 1 página selecionada
[many] { $count } páginas selecionadas
*[other] { $count } páginas selecionadas
}
reader-page-options = Page Options
reader-page-options = Opções de página

View file

@ -1,16 +1,16 @@
itemFields-eventPlace = Event Place
itemFields-originalDate = Original Date
itemFields-originalPlace = Original Place
itemFields-originalPublisher = Original Publisher
itemFields-partNumber = Part Number
itemFields-partTitle = Part Title
itemFields-priorityDate = Priority Date
itemFields-sessionTitle = Session Title
creatorTypes-chair = Chair
itemFields-eventPlace = Lugar de evento
itemFields-originalDate = Data original
itemFields-originalPlace = Lugar original
itemFields-originalPublisher = Editor original
itemFields-partNumber = Número da parte
itemFields-partTitle = Título da parte
itemFields-priorityDate = Data prioritária
itemFields-sessionTitle = Título da sessão
creatorTypes-chair = Presidente
creatorTypes-creator = Autor
creatorTypes-executiveProducer = Executive Producer
creatorTypes-host = Host
creatorTypes-narrator = Narrator
creatorTypes-originalCreator = Original Creator
creatorTypes-organizer = Organizer
creatorTypes-seriesCreator = Series Creator
creatorTypes-executiveProducer = Produtor executivo
creatorTypes-host = Apresentador
creatorTypes-narrator = Narrador
creatorTypes-originalCreator = Criador original
creatorTypes-organizer = Organizador
creatorTypes-seriesCreator = Criador da série

View file

@ -120,10 +120,12 @@ menu-view-columns-move-left =
.label = Mover Coluna à Esquerda
menu-view-columns-move-right =
.label = Mover Coluna à Direita
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Tamanho da fonte das notas
menu-view-note-tab-font-size =
.label = Note Tab Font Size
.label = Tamanho da fonte das notas em Aba
menu-show-tabs-menu =
.label = Mostrar menu de abas
menu-edit-copy-annotation =
@ -170,26 +172,26 @@ item-creator-moveUp =
.label = Mover para cima
item-menu-viewAttachment =
.label =
Open { $numAttachments ->
Abrir { $numAttachments ->
[one]
{ $attachmentType ->
[pdf] PDF
[epub] EPUB
[snapshot] Snapshot
[note] Note
*[other] Attachment
[snapshot] captura
[note] nota
*[other] anexo
}
*[other]
{ $attachmentType ->
[pdf] PDFs
[epub] EPUBs
[snapshot] Snapshots
[note] Notes
*[other] Attachments
[snapshot] capturas
[note] notas
*[other] anexos
}
} { $openIn ->
[tab] in New Tab
[window] in New Window
[tab] em nova aba
[window] em nova janela
*[other] { "" }
}
item-menu-add-file =
@ -425,7 +427,7 @@ pane-info = Informações
pane-abstract = Resumo
pane-attachments = Anexos
pane-notes = Notas
pane-note-info = Note Info
pane-note-info = Informações da nota
pane-libraries-collections = Bibliotecas e Coleções
pane-tags = Etiquetas
pane-related = Relacionar
@ -579,22 +581,22 @@ attachment-info-convert-note =
section-note-info =
.label = { pane-note-info }
note-info-title = Título
note-info-parent-item = Parent Item
note-info-parent-item = Item pai
note-info-parent-item-button =
{ $hasParentItem ->
[true] { $parentItemTitle }
*[false] None
*[false] Nenhum
}
.title =
{ $hasParentItem ->
[true] View parent item in library
*[false] View note item in library
[true] Ver item pai na biblioteca
*[false] Ver nota na biblioteca
}
note-info-date-created = Created
note-info-date-created = Criado
note-info-date-modified = Data de modificação
note-info-size = Tamanho
note-info-word-count = Word Count
note-info-character-count = Character Count
note-info-word-count = Contagem de palavras
note-info-character-count = Contagem de caracteres
item-title-empty-note = Nota sem título
attachment-preview-placeholder = Sem anexo para visualizar
attachment-rename-from-parent =
@ -731,7 +733,7 @@ file-type-video = Vídeo
file-type-presentation = Apresentação
file-type-document = Documento
file-type-ebook = Livro eletrônico
post-upgrade-message = Youve been upgraded to <span data-l10n-name="post-upgrade-appver">{ -app-name } { $version }</span>! Learn about <a data-l10n-name="new-features-link">whats new</a>.
post-upgrade-message = Foi atualizado para <span data-l10n-name="post-upgrade-appver">{ -app-name } { $version }</span>! Descubra <a data-l10n-name="new-features-link">as novidades</a>.
post-upgrade-remind-me-later =
.label = { general-remind-me-later }
post-upgrade-done =
@ -750,17 +752,17 @@ file-renaming-banner-documentation-link = { general-learn-more }
file-renaming-banner-settings-link = { general-settings }
connector-version-warning = O conector do { -app-name } deve ser atualizado para funcionar com esta versão do { -app-name }.
userjs-pref-warning = Algumas configurações do { -app-name } foram substituídas utilizando um método sem suporte. { -app-name } irá revertê-las e reiniciar.
migrate-extra-fields-progress-message = Migrating new fields from Extra field
migrate-extra-fields-progress-message = Migrando novos campos a partir do campo Extra
long-tag-fixer-window-title =
.title = Dividir etiquetas
long-tag-fixer-button-dont-split =
.label = Não dividir
menu-normalize-attachment-titles =
.label = Normalize Attachment Titles…
normalize-attachment-titles-title = Normalize Attachment Titles
.label = Padronizar títulos de anexos...
normalize-attachment-titles-title = Padronizar títulos de anexos
normalize-attachment-titles-text =
{ -app-name } automatically renames files on disk using parent item metadata, but it uses separate, simpler titles such as “Full Text PDF”, “Preprint PDF”, or “PDF” for primary attachments to keep the items list cleaner and avoid duplicating information.
{ -app-name } renomeia automaticamente os arquivos salvos usando os metadados do item pai, mas utiliza títulos mais simples como “Full Text PDF”, “Preprint PDF”, ou “PDF” para anexos principais visando manter a lista de itens mais limpa e evitar duplicação de informação.
In older versions of { -app-name }, as well as when using certain plugins, attachment titles could be changed unnecessarily to match the filenames.
Em versões mais antigas do { -app-name }, assim como no uso de algumas extensões, títulos dos anexos podiam ser alterados, desnecessariamente, para coincidir com o nome dos arquivos.
Would you like to update the selected attachments to use simpler titles? Only primary attachments with titles that match the filename will be changed.
Gostaria de atualizar os anexos selecionados para usar títulos mais simples? Apenas anexos principais com títulos que correspondem ao nome do arquivo serão alterados.

View file

@ -500,7 +500,7 @@ itemFields.tags=Etiquetas
itemFields.attachments=Anexos
itemFields.related=Relacionar
itemFields.url=URL
itemFields.rights=Direitos
itemFields.rights=License
itemFields.series=Série
itemFields.volume=Volume
itemFields.issue=Edição

View file

@ -42,14 +42,14 @@ integration-citationDialog-lib-message-citation =
}
integration-citationDialog-lib-message-add-note =
{ $search ->
[true] No selected notes match the current search
*[other] No notes are selected
[true] Nenhuma nota selecionada corresponde a busca
*[other] Nenhuma nota selecionada
}
integration-citationDialog-settings-keepSorted = Manter as fontes ordenadas
integration-citationDialog-btn-settings =
.title = { general-open-settings }
integration-citationDialog-mode-library = Biblioteca
integration-citationDialog-mode-list = List
integration-citationDialog-mode-list = Lista
integration-citationDialog-btn-type-citation =
.title = Adicionar/Editar Citação
integration-citationDialog-btn-type-add-note =
@ -70,7 +70,7 @@ integration-citationDialog-input-citation =
.placeholder = { integration-citationDialog-search-for-items }
.aria-description = { integration-citationDialog-general-instructions }
integration-citationDialog-single-input-add-note =
.placeholder = Search for a note to insert into the document
.placeholder = Busque por nota para inserir no documento
integration-citationDialog-aria-item-list =
.aria-description = Utilize as setas direcionais para cima/para baixo para mudar a seleção. { integration-citationDialog-enter-to-add-item }
integration-citationDialog-aria-item-library =
@ -116,8 +116,8 @@ integration-warning-documentPreferences-changes-will-be-lost = Você fez altera
integration-warning-discard-changes = Descartar alterações
integration-warning-command-is-running = Um comando de integração de processador de texto já está em funcionamento.
first-run-guidance-citationDialog =
Type a title, author, and/or year to search for a reference.
Digite um título, autor e/ou ano para buscar por uma referência.
After youve made your selection, click the bubble or select it via the keyboard and press ↓/Space to show citation options such as page number, prefix, and suffix.
Depois que tiver feito sua seleção, clique no balão e selecione pelo teclado e pressione ↓/Espaço para mostrar as opções de citação como número de página, prefixo e sufixo.
You can also add a page number or other locator by including it with your search terms (e.g., “history { $locator }”) or by typing it after the bubble and pressing { return-or-enter }.
Você também pode adicionar o número da página ou outro localizador ao incluir com os termos da busca (ex.: “história { $locator }”) ou digitando depois do balão e pressionando { return-or-enter }.

View file

@ -28,10 +28,10 @@ preferences-file-renaming-format-instructions-example = Por exemplo, neste model
preferences-file-renaming-format-instructions-more = Ver a <label data-l10n-name="file-renaming-format-help-link">documentação</label> para mais informações.
preferences-file-renaming-format-template = Modelo do nome do arquivo:
preferences-file-renaming-format-preview = Visualização:
preferences-attachment-titles-title = Attachment Titles
preferences-attachment-titles-intro = Attachment titles are <label data-l10n-name="wiki-link">different from filenames</label>. To support some workflows, { -app-name } can show filenames instead of attachment titles in the items list.
preferences-attachment-titles-title = Títulos de anexos
preferences-attachment-titles-intro = Os títulos dos anexos estão <label data-l10n-name="wiki-link">diferentes dos títulos dos arquivos</label>. Para alguns recursos, { -app-name } pode mostrar o nome do arquivo ao invés do título do anexo na lista de itens.
preferences-attachment-titles-show-filenames =
.label = Show attachment filenames in the items list
.label = Mostrar títulos de anexos na lista de itens
preferences-reader-title = Leitor
preferences-reader-open-epubs-using = Abrir EPUBs usando
preferences-reader-open-snapshots-using = Abrir snapshots usando
@ -44,7 +44,7 @@ preferences-reader-ebook-hyphenate =
.label = Ativar a hifenação automática:
preferences-note-title = Notas
preferences-note-open-in-new-window =
.label = Open notes in new windows instead of tabs
.label = Abrir notas em novas janelas ao invés de abas
preferences-color-scheme = Esquema de cor:
preferences-color-scheme-auto =
.label = Automático

View file

@ -109,7 +109,7 @@ reader-theme-sepia = Sepia
reader-theme-dark = Escuro
reader-theme-black = Preto
reader-add-theme = Adicionar Tema
reader-theme-invert-images = Invert Images
reader-theme-invert-images = Inverter imagens
reader-scroll-mode = Rolagem
reader-spread-mode = Lado a lado
reader-flow-mode = Layout da página
@ -130,9 +130,9 @@ reader-theme-name = Nome do tema:
reader-background = Fundo:
reader-foreground = Primeiro plano:
reader-reading-mode = Modo de leitura
reader-reading-mode-not-supported = Reading Mode is not supported in this document.
reader-reading-mode-not-supported = Modo de leitura não é compatível com este documento.
reader-clear-selection = Limpar Seleção
reader-epub-encrypted = This ebook is encrypted and cannot be opened.
reader-epub-encrypted = Este e-book está criptografado e não pode ser aberto.
reader-move-annotation-start-key =
{ PLATFORM() ->
[macos] { general-key-command }
@ -189,7 +189,8 @@ reader-import-from-epub-no-annotations-other-file =
reader-import-from-epub-select-other = Selecionar outro arquivo...
reader-selected-pages =
{ $count ->
[one] 1 page selected
*[other] { $count } pages selected
[one] 1 página selecionada
[many] { $count } páginas selecionadas
*[other] { $count } páginas selecionadas
}
reader-page-options = Page Options
reader-page-options = Opções de página

View file

@ -1,16 +1,16 @@
itemFields-eventPlace = Event Place
itemFields-originalDate = Original Date
itemFields-originalPlace = Original Place
itemFields-originalPublisher = Original Publisher
itemFields-partNumber = Part Number
itemFields-partTitle = Part Title
itemFields-priorityDate = Priority Date
itemFields-sessionTitle = Session Title
creatorTypes-chair = Chair
itemFields-eventPlace = Lugar de evento
itemFields-originalDate = Data original
itemFields-originalPlace = Lugar original
itemFields-originalPublisher = Editor original
itemFields-partNumber = Número da parte
itemFields-partTitle = Título da parte
itemFields-priorityDate = Data prioritária
itemFields-sessionTitle = Título da sessão
creatorTypes-chair = Presidente
creatorTypes-creator = Criador
creatorTypes-executiveProducer = Executive Producer
creatorTypes-host = Host
creatorTypes-narrator = Narrator
creatorTypes-originalCreator = Original Creator
creatorTypes-organizer = Organizer
creatorTypes-seriesCreator = Series Creator
creatorTypes-executiveProducer = Produtor executivo
creatorTypes-host = Apresentador
creatorTypes-narrator = Narrador
creatorTypes-originalCreator = Criador original
creatorTypes-organizer = Organizador
creatorTypes-seriesCreator = Criador da série

View file

@ -120,10 +120,12 @@ menu-view-columns-move-left =
.label = Mover Coluna à Esquerda
menu-view-columns-move-right =
.label = Mover Coluna à Direita
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Tamanho da Fonte Tipográfica das Notas
menu-view-note-tab-font-size =
.label = Note Tab Font Size
.label = Tamanho da fonte das notas em Aba
menu-show-tabs-menu =
.label = Mostrar menu de abas
menu-edit-copy-annotation =
@ -170,26 +172,26 @@ item-creator-moveUp =
.label = Mover Para Cima
item-menu-viewAttachment =
.label =
Open { $numAttachments ->
Abrir { $numAttachments ->
[one]
{ $attachmentType ->
[pdf] PDF
[epub] EPUB
[snapshot] Snapshot
[note] Note
*[other] Attachment
[snapshot] captura
[note] nota
*[other] anexo
}
*[other]
{ $attachmentType ->
[pdf] PDFs
[epub] EPUBs
[snapshot] Snapshots
[note] Notes
*[other] Attachments
[snapshot] capturas
[note] notas
*[other] anexos
}
} { $openIn ->
[tab] in New Tab
[window] in New Window
[tab] em nova aba
[window] em nova janela
*[other] { "" }
}
item-menu-add-file =
@ -425,7 +427,7 @@ pane-info = Informação
pane-abstract = Resumo
pane-attachments = Anexos
pane-notes = Notas
pane-note-info = Note Info
pane-note-info = Informações da nota
pane-libraries-collections = Bibliotecas e Coleções
pane-tags = Etiquetas
pane-related = Relações
@ -579,22 +581,22 @@ attachment-info-convert-note =
section-note-info =
.label = { pane-note-info }
note-info-title = Título
note-info-parent-item = Parent Item
note-info-parent-item = Item pai
note-info-parent-item-button =
{ $hasParentItem ->
[true] { $parentItemTitle }
*[false] None
*[false] Nenhum
}
.title =
{ $hasParentItem ->
[true] View parent item in library
*[false] View note item in library
[true] Ver item pai na biblioteca
*[false] Ver nota na biblioteca
}
note-info-date-created = Created
note-info-date-created = Criado
note-info-date-modified = Modificado
note-info-size = Tamanho
note-info-word-count = Word Count
note-info-character-count = Character Count
note-info-word-count = Contagem de palavras
note-info-character-count = Contagem de caracteres
item-title-empty-note = Nota Sem Título
attachment-preview-placeholder = Sem anexo para visualizar
attachment-rename-from-parent =
@ -731,7 +733,7 @@ file-type-video = Vídeo
file-type-presentation = Apresentação
file-type-document = Documento
file-type-ebook = e-book
post-upgrade-message = Youve been upgraded to <span data-l10n-name="post-upgrade-appver">{ -app-name } { $version }</span>! Learn about <a data-l10n-name="new-features-link">whats new</a>.
post-upgrade-message = Foi atualizado para { -app-name } { $version }! Descubra as novidades.
post-upgrade-remind-me-later =
.label = { general-remind-me-later }
post-upgrade-done =
@ -750,17 +752,17 @@ file-renaming-banner-documentation-link = { general-learn-more }
file-renaming-banner-settings-link = { general-settings }
connector-version-warning = O conector do { -app-name } deve ser atualizado para funcionar com esta versão do { -app-name }.
userjs-pref-warning = Algumas configurações do { -app-name } foram substituídas utilizando um método sem suporte. { -app-name } irá revertê-las e reiniciar.
migrate-extra-fields-progress-message = Migrating new fields from Extra field
migrate-extra-fields-progress-message = Migrando novos campos a partir do campo Extra
long-tag-fixer-window-title =
.title = Dividir etiquetas
long-tag-fixer-button-dont-split =
.label = Não dividir
menu-normalize-attachment-titles =
.label = Normalize Attachment Titles…
normalize-attachment-titles-title = Normalize Attachment Titles
.label = Padronizar títulos de anexos...
normalize-attachment-titles-title = Padronizar títulos de anexos
normalize-attachment-titles-text =
{ -app-name } automatically renames files on disk using parent item metadata, but it uses separate, simpler titles such as “Full Text PDF”, “Preprint PDF”, or “PDF” for primary attachments to keep the items list cleaner and avoid duplicating information.
{ -app-name } renomeia automaticamente os arquivos salvos usando os metadados do item pai, mas utiliza títulos mais simples como “Full Text PDF”, “Preprint PDF”, ou “PDF” para anexos principais visando manter a lista de itens mais limpa e evitar duplicação de informação.
In older versions of { -app-name }, as well as when using certain plugins, attachment titles could be changed unnecessarily to match the filenames.
Em versões mais antigas do { -app-name }, assim como no uso de algumas extensões, títulos dos anexos podiam ser alterados, desnecessariamente, para coincidir com o nome dos arquivos.
Would you like to update the selected attachments to use simpler titles? Only primary attachments with titles that match the filename will be changed.
Gostaria de atualizar os anexos selecionados para usar títulos mais simples? Apenas anexos principais com títulos que correspondem ao nome do arquivo serão alterados.

View file

@ -500,7 +500,7 @@ itemFields.tags=Etiquetas
itemFields.attachments=Anexos
itemFields.related=Relações
itemFields.url=URL
itemFields.rights=Direitos
itemFields.rights=License
itemFields.series=Série
itemFields.volume=Volume
itemFields.issue=Número

View file

@ -120,6 +120,8 @@ menu-view-columns-move-left =
.label = Move Column Left
menu-view-columns-move-right =
.label = Move Column Right
menu-view-hide-context-annotation-rows =
.label = Hide Non-Matching Annotations
menu-view-note-font-size =
.label = Notă dimensiune font
menu-view-note-tab-font-size =

View file

@ -500,7 +500,7 @@ itemFields.tags=Etichete
itemFields.attachments=Anexe
itemFields.related=Relații
itemFields.url=URL
itemFields.rights=Drepturi
itemFields.rights=License
itemFields.series=Colecție
itemFields.volume=Volum
itemFields.issue=Număr

Some files were not shown because too many files have changed in this diff Show more