Merge branch 'zotero:main' into advanced-search-attachment-storage-type

This commit is contained in:
nexdep 2026-04-15 18:04:33 -04:00 • committed by GitHub
commit da4915653e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
112 changed files with 1257 additions and 611 deletions

View file

@ -45,8 +45,7 @@ S3_CI_ZIP_PATH="ci/client"
S3_DIST_PATH="client"
DEPLOY_HOST="deploy.zotero"
DEPLOY_PATH="www/www-production/public/download/client/manifests"
DEPLOY_CMD="ssh $DEPLOY_HOST update-site-files"
DEPLOY_PATH="www/www-production/public/download/client"
BUILD_PLATFORMS=""
NUM_INCREMENTALS=6

View file

@ -8,10 +8,20 @@ ROOT_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")"
CHANNEL="release"
BRANCH="8.0"
BUILD_ONLY=0
if [ "`uname`" = "Darwin" ]; then
export SAFARI_APPEX="$ROOT_DIR/../safari-app-extension-builds/release/ZoteroSafariExtension.appex"
fi
while getopts "b" opt; do
case $opt in
b)
BUILD_ONLY=1
;;
esac
shift $((OPTIND-1)); OPTIND=1
done
cd "$SCRIPT_DIR"
./check_requirements
@ -26,4 +36,14 @@ function cleanup {
trap cleanup EXIT
./prepare_build -s "$source_dir" -o "$build_dir" -c $CHANNEL -m $hash
./build_and_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL
VERSION="`cat \"$build_dir/version\"`"
./build_for_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL
if [ $BUILD_ONLY -eq 1 ]; then
echo
echo "Build only -- skipping deploy."
echo "To deploy, run on the deploy server:"
echo " $DEPLOY_PATH/deploy $CHANNEL $VERSION $BUILD_PLATFORMS"
else
ssh $DEPLOY_HOST "$DEPLOY_PATH/deploy" $CHANNEL "$VERSION" $BUILD_PLATFORMS
fi

View file

@ -0,0 +1,49 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
APP_ROOT_DIR="$(dirname "$SCRIPT_DIR")"
ROOT_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")"
. "$APP_ROOT_DIR/config.sh"
CHANNEL="release"
BRANCH="9.0"
BUILD_ONLY=0
if [ "`uname`" = "Darwin" ]; then
export SAFARI_APPEX="$ROOT_DIR/../safari-app-extension-builds/release/ZoteroSafariExtension.appex"
fi
while getopts "b" opt; do
case $opt in
b)
BUILD_ONLY=1
;;
esac
shift $((OPTIND-1)); OPTIND=1
done
cd "$SCRIPT_DIR"
./check_requirements
hash=`./get_repo_branch_hash $BRANCH`
source_dir=`./get_commit_files $hash`
build_dir=`mktemp -d`
function cleanup {
rm -rf "$source_dir"
rm -rf "$build_dir"
}
trap cleanup EXIT
./prepare_build -s "$source_dir" -o "$build_dir" -c $CHANNEL -m $hash
VERSION="`cat \"$build_dir/version\"`"
./build_for_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL
if [ $BUILD_ONLY -eq 1 ]; then
echo
echo "Build only -- skipping deploy."
echo "To deploy, run on the deploy server:"
echo " $DEPLOY_PATH/deploy $CHANNEL $VERSION $BUILD_PLATFORMS"
else
ssh $DEPLOY_HOST "$DEPLOY_PATH/deploy" $CHANNEL "$VERSION" $BUILD_PLATFORMS
fi

View file

@ -27,4 +27,6 @@ function cleanup {
trap cleanup EXIT
./prepare_build -s "$source_dir" -o "$build_dir" -c $CHANNEL -m $hash
./build_and_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL
VERSION="`cat \"$build_dir/version\"`"
./build_for_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL
ssh $DEPLOY_HOST "$DEPLOY_PATH/deploy" $CHANNEL "$VERSION" $BUILD_PLATFORMS

View file

@ -1,6 +1,7 @@
#!/bin/bash
#
# Builds and deploys Zotero with full and incremental updates
# Builds Zotero and uploads to S3 and deploy server, but does not make the build live.
# To make the build live, run the deploy script on the deploy server (or via SSH).
#
set -euo pipefail
@ -107,13 +108,23 @@ do
usage
;;
esac
echo
echo "Getting $platform_name incrementals"
INCREMENTALS="`\"$SCRIPT_DIR/manage_incrementals\" -c $CHANNEL -p ${PLATFORMS:i:1} -n $NUM_INCREMENTALS`"
# Fetch pinned incrementals from deploy server and merge
PINNED_FILE="$DEPLOY_PATH/manifests/$CHANNEL/pinned-incrementals-$platform"
PINNED=""
if ssh $DEPLOY_HOST "test -f $PINNED_FILE"; then
PINNED="`ssh $DEPLOY_HOST cat $PINNED_FILE`"
fi
# Combine and deduplicate
INCREMENTALS="`echo -e "$INCREMENTALS\n$PINNED" | sort -u | grep -v '^$'`"
echo "$INCREMENTALS"
echo
if [ -n "$INCREMENTALS" ]; then
for from in $INCREMENTALS; do
echo "Building incremental update for $platform_name from $from to $VERSION"
@ -127,7 +138,7 @@ done
"$SCRIPT_DIR/upload_builds" $CHANNEL $VERSION
# Upload file lists and build info for each platform
channel_deploy_path="$DEPLOY_PATH/$CHANNEL"
channel_deploy_path="$DEPLOY_PATH/manifests/$CHANNEL"
mkdir "$TEMP_DIR/version_info"
chmod g+ws "$TEMP_DIR/version_info"
cp "$DIST_DIR"/files-* "$TEMP_DIR/version_info"
@ -148,38 +159,9 @@ do
done
rsync -rv "$TEMP_DIR/version_info/" $DEPLOY_HOST:"$channel_deploy_path/$VERSION/"
# Download updates JSON for each platform, update it, and reupload it
for i in `seq 0 1 $((${#PLATFORMS}-1))`
do
case ${PLATFORMS:i:1} in
m)
architectures="mac"
;;
w)
architectures="win32 win-x64 win-arm64"
;;
l)
architectures="linux-i686 linux-x86_64 linux-arm64"
;;
esac
for arch in $architectures;
do
jsonfile="updates-$arch.json"
scp $DEPLOY_HOST:"$channel_deploy_path/$jsonfile" "$TEMP_DIR/$jsonfile"
"$SCRIPT_DIR/add_version_info" -f "$TEMP_DIR/$jsonfile" -v $VERSION -b $BUILD_ID
scp "$TEMP_DIR/$jsonfile" $DEPLOY_HOST:"$channel_deploy_path/$jsonfile"
done
done
# Add version to incremental lists
echo
for i in `seq 0 1 $((${#PLATFORMS}-1))`
do
"$SCRIPT_DIR/manage_incrementals" -c $CHANNEL -p ${PLATFORMS:i:1} -a $VERSION
done
$DEPLOY_CMD
rm -rf "$STAGE_DIR"/*
echo
echo "Build $VERSION uploaded successfully."
echo "To deploy, run on the deploy server:"
echo " ./deploy $CHANNEL $VERSION $PLATFORMS"

View file

@ -24,4 +24,6 @@ function cleanup {
trap cleanup EXIT
./prepare_build -s "$source_dir" -o "$build_dir" -c $CHANNEL -m $hash
./build_and_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL -i 1
VERSION="`cat \"$build_dir/version\"`"
./build_for_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL -i 1
ssh $DEPLOY_HOST "$DEPLOY_PATH/deploy" $CHANNEL "$VERSION" $BUILD_PLATFORMS

View file

@ -64,22 +64,19 @@ if [[ "$VERSION" ]] && [[ "$NUM_VERSIONS" ]]; then
usage
fi
INCR_FILENAME="incrementals-$CHANNEL-$PLATFORM"
S3_URL="s3://$S3_BUCKET/$S3_DIST_PATH/$CHANNEL/incrementals-$PLATFORM"
INCR_FILENAME="incrementals-$PLATFORM"
REMOTE_PATH="$DEPLOY_PATH/manifests/$CHANNEL/$INCR_FILENAME"
INCR_PATH="$DIST_DIR/$INCR_FILENAME"
if [ "`uname -o 2> /dev/null`" = "Cygwin" ]; then
INCR_PATH=$(cygpath -w "$INCR_PATH")
fi
mkdir -p "$DIST_DIR"
aws s3 cp $S3_URL "$INCR_PATH" >&2
scp $DEPLOY_HOST:"$REMOTE_PATH" "$INCR_PATH" >&2
# Add version to file and reupload
if [ "$VERSION" ]; then
echo "Adding $VERSION to incrementals-$PLATFORM"
echo $VERSION >> "$INCR_PATH"
aws s3 cp "$INCR_PATH" $S3_URL
scp "$INCR_PATH" $DEPLOY_HOST:"$REMOTE_PATH"
# Show last n versions
elif [ "$NUM_VERSIONS" -gt 0 ]; then
# TEMP: Don't include 6.0 versions

View file

@ -24,4 +24,6 @@ function cleanup {
trap cleanup EXIT
./prepare_build -s "$source_dir" -o "$build_dir" -c $CHANNEL -m $hash
./build_and_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL -i 1
VERSION="`cat \"$build_dir/version\"`"
./build_for_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL -i 1
ssh $DEPLOY_HOST "$DEPLOY_PATH/deploy" $CHANNEL "$VERSION" $BUILD_PLATFORMS

View file

@ -3022,14 +3022,16 @@ var CollectionTree = class CollectionTree extends LibraryTree {
// Recently Read
if (showRecentlyRead && this._isFilterEmpty()) {
let s = new Zotero.Search();
s.libraryID = libraryID;
s.name = Zotero.getString('recently-read');
s.addCondition('libraryID', 'is', libraryID);
s.addCondition('lastRead', 'isInTheLast', '14 days');
s.addCondition('includeParents', 'true');
rows.splice(row + 1 + newRows, 0,
new Zotero.CollectionTreeRow(this, 'recentlyRead', s, level + 1));
new Zotero.CollectionTreeRow(this,
'recentlyRead',
{
libraryID,
name: Zotero.getString('recently-read'),
},
level + 1
)
);
newRows++;
}

View file

@ -1066,7 +1066,8 @@ class VirtualizedTable extends React.Component {
}
componentDidUpdate(prevProps) {
if (this.props.id !== prevProps.id) {
if (this.props.id !== prevProps.id
|| this.props.columns !== prevProps.columns) {
this._columns = new Columns(this);
this.forceUpdate();
}

View file

@ -1125,7 +1125,7 @@ var ItemTree = class ItemTree extends LibraryTree {
window.ZoteroPane.loadURI(e.target.dataset.href);
}
if (e.target.dataset.action == 'open-sync-prefs') {
Zotero.Utilities.Internal.openPreferences('zotero-prefpane-sync');
Zotero.Utilities.Internal.openPreferences('zotero-prefpane-account');
}
}}
className={"items-tree-message"}
@ -1304,7 +1304,7 @@ var ItemTree = class ItemTree extends LibraryTree {
// Clear the quick search and tag selection and try again (once)
if (!noRecurse && window.ZoteroPane) {
let hasQuickSearch = !!this.collectionTreeRow.searchText;
let hasTagFilters = this.collectionTreeRow.tags.size > 0;
let hasTagFilters = this.collectionTreeRow.tags?.size > 0;
if (hasQuickSearch || hasTagFilters) {
// Clear all searches set on the collection tree row directly on
// collectionTreeRow (vs using ZoteroPane functions) to avoid
@ -3810,11 +3810,15 @@ var ItemTree = class ItemTree extends LibraryTree {
const visibilityGroup = this.collectionTreeRow.visibilityGroup;
const prefKey = this.id;
if (this._columnsId == prefKey) {
// Include group status in cache key so groupLibrariesOnly columns
// are recalculated when switching between personal and group libraries
let cacheKey = prefKey
+ (this.collectionTreeRow.isWithinGroup?.() ? '-group' : '');
if (this._columnsId == cacheKey) {
return this._columns;
}
this._columnsId = prefKey;
this._columnsId = cacheKey;
this._columns = [];
let columnsSettings = this._getColumnPrefs();
@ -3949,7 +3953,7 @@ var ItemTree = class ItemTree extends LibraryTree {
else if (span.hasAttribute('data-action')) {
if (span.getAttribute('data-action') == 'open-sync-prefs') {
span.onclick = () => {
Zotero.Utilities.Internal.openPreferences('zotero-prefpane-sync');
Zotero.Utilities.Internal.openPreferences('zotero-prefpane-account');
};
}
}

View file

@ -47,7 +47,7 @@
<script src="chrome://zotero/content/include.js"/>
<script src="preferences.js"/>
<script src="preferences_sync.js"/>
<script src="preferences_account.js"/>
<label style="font-size: 14px; margin-bottom: 0.5em;" value="&zotero.preferences.sync.librariesToSync;"/>

View file

@ -89,7 +89,7 @@ Zotero_Preferences.Sync = {
}
});
document.getElementById('zotero-prefpane-sync').addEventListener('action', () => {
document.getElementById('zotero-prefpane-account').addEventListener('action', () => {
this._handlePendingAction();
});
// Auto-trigger login if opened with the 'logIn' action.
@ -122,15 +122,13 @@ Zotero_Preferences.Sync = {
document.getElementById('sync-unauthorized').hidden = linked;
document.getElementById('account-linked').hidden = !linked;
document.getElementById('sync-settings-section').hidden = !loggedIn;
document.getElementById('sync-reset').hidden = !loggedIn;
// Toggle logged-in vs logged-out elements within the linked container
document.getElementById('account-log-out-button').hidden = !loggedIn;
document.querySelector('.account-logged-out-status').hidden = !loggedOutLinked;
document.getElementById('account-logged-out-actions').hidden = !loggedOutLinked;
for (let elem of document.querySelectorAll('.sync-settings')) {
elem.hidden = !loggedIn;
}
let displayUsername = loggedIn ? username : linkedUsername;
document.getElementById('account-username').value = displayUsername;

View file

@ -22,94 +22,16 @@
***** END LICENSE BLOCK *****
-->
<vbox id="zotero-prefpane-sync" onload="Zotero_Preferences.Sync.init()">
<vbox id="zotero-prefpane-account" onload="Zotero_Preferences.Sync.init()">
<vbox class="main-section">
<vbox id="sync-unauthorized">
<groupbox data-l10n-id="preferences-sync-data-syncing-groupbox">
<label><html:h2 data-l10n-id="preferences-sync-data-syncing-heading"/></label>
<description data-l10n-id="preferences-sync-data-syncing-description"/>
<description data-l10n-id="preferences-sync-data-syncing-description"/>
<hbox>
<vbox>
<hbox class="account-login-default">
<button data-l10n-id="preferences-account-log-in"
oncommand="Zotero_Preferences.Sync.linkAccount(event)"/>
</hbox>
<hbox class="account-login-pending" hidden="true" align="center">
<label class="account-login-status-indicator"/>
<label data-l10n-id="preferences-account-waiting-for-login"/>
<button data-l10n-id="preferences-account-cancel-button"
oncommand="Zotero_Preferences.Sync.cancelLogin()"/>
</hbox>
</vbox>
<vbox style="width:2em"/>
<vbox>
<label is="zotero-text-link" value="&zotero.preferences.sync.createAccount;" href="http://zotero.org/user/register"/>
<separator class="thin"/>
<label is="zotero-text-link" value="&zotero.preferences.sync.about;" href="http://www.zotero.org/support/sync"/>
</vbox>
</hbox>
</groupbox>
</vbox>
<vbox id="account-linked" hidden="true">
<groupbox data-l10n-id="preferences-sync-data-syncing-groupbox">
<label><html:h2 data-l10n-id="preferences-sync-data-syncing-heading"/></label>
<html:div class="form-grid">
<label value="&zotero.preferences.sync.username;"/>
<hbox>
<label id="account-username" value=""/>
<!-- Logged in -->
<button id="account-log-out-button"
data-l10n-id="preferences-account-log-out"
aria-describedby="account-username"
oncommand="Zotero_Preferences.Sync.unlinkAccount()"
hidden="true"/>
<!-- Logged out -->
<label data-l10n-id="preferences-account-logged-out-status"
class="account-logged-out-status" hidden="true"/>
</hbox>
<label id="account-email-label"
data-l10n-id="preferences-account-email-label"
hidden="true"/>
<vbox id="account-emails" hidden="true"/>
<!-- Logged in: sync settings -->
<box class="sync-settings" hidden="true"/>
<box class="sync-settings" hidden="true">
<button id="sync-libraries-button" label="&zotero.preferences.sync.librariesToSync.button;"
oncommand="Zotero_Preferences.Sync.showLibrariesToSyncDialog()"
data-search-strings="zotero.preferences.sync.librariesToSync"/>
</box>
<box class="sync-settings" hidden="true"/>
<checkbox class="sync-settings" hidden="true"
label="&zotero.preferences.sync.syncAutomatically;"
preference="extensions.zotero.sync.autoSync"
native="true"/>
<box class="sync-settings" hidden="true"/>
<checkbox class="sync-settings" hidden="true"
label="&zotero.preferences.sync.syncFullTextContent;"
preference="extensions.zotero.sync.fulltext.enabled"
tooltiptext="&zotero.preferences.sync.syncFullTextContent.desc;"
native="true"/>
<box class="sync-settings" hidden="true"/>
<label class="sync-settings" hidden="true"
is="zotero-text-link" value="&zotero.preferences.sync.about;" href="http://www.zotero.org/support/sync"/>
</html:div>
<!-- Logged out: login/switch buttons -->
<vbox id="account-logged-out-actions" style="margin-top: 8px" hidden="true">
<hbox class="account-login-default" style="gap: 8px">
<hbox>
<vbox>
<hbox class="account-login-default">
<button data-l10n-id="preferences-account-log-in"
oncommand="Zotero_Preferences.Sync.linkAccount(event)"/>
<button data-l10n-id="preferences-account-switch-accounts"
oncommand="Zotero_Preferences.Sync.switchAccounts()"/>
</hbox>
<hbox class="account-login-pending" hidden="true" align="center">
<label class="account-login-status-indicator"/>
@ -119,10 +41,88 @@
</hbox>
</vbox>
</groupbox>
<vbox style="width:2em"/>
<vbox>
<label is="zotero-text-link" value="&zotero.preferences.sync.createAccount;" href="http://zotero.org/user/register"/>
<separator class="thin"/>
<label is="zotero-text-link" value="&zotero.preferences.sync.about;" href="http://www.zotero.org/support/sync"/>
</vbox>
</hbox>
</vbox>
<groupbox id="storage-settings" aria-label="&zotero.preferences.sync.fileSyncing;">
<label><html:h2>&zotero.preferences.sync.fileSyncing;</html:h2></label>
<vbox id="account-linked" hidden="true">
<html:div class="form-grid">
<label value="&zotero.preferences.sync.username;"/>
<hbox>
<label id="account-username" value=""/>
<!-- Logged in -->
<button id="account-log-out-button"
data-l10n-id="preferences-account-log-out"
aria-describedby="account-username"
oncommand="Zotero_Preferences.Sync.unlinkAccount()"
hidden="true"/>
<!-- Logged out -->
<label data-l10n-id="preferences-account-logged-out-status"
class="account-logged-out-status" hidden="true"/>
</hbox>
<label id="account-email-label"
data-l10n-id="preferences-account-email-label"
hidden="true"/>
<vbox id="account-emails" hidden="true"/>
</html:div>
<!-- Logged out: login/switch buttons -->
<vbox id="account-logged-out-actions" style="margin-top: 8px" hidden="true">
<hbox class="account-login-default" style="gap: 8px">
<button data-l10n-id="preferences-account-log-in"
oncommand="Zotero_Preferences.Sync.linkAccount(event)"/>
<button data-l10n-id="preferences-account-switch-accounts"
oncommand="Zotero_Preferences.Sync.switchAccounts()"/>
</hbox>
<hbox class="account-login-pending" hidden="true" align="center">
<label class="account-login-status-indicator"/>
<label data-l10n-id="preferences-account-waiting-for-login"/>
<button data-l10n-id="preferences-account-cancel-button"
oncommand="Zotero_Preferences.Sync.cancelLogin()"/>
</hbox>
</vbox>
</vbox>
</vbox>
<vbox class="main-section" id="sync-settings-section" hidden="true">
<html:h1 data-l10n-id="preferences-sync-settings-heading"/>
<description data-l10n-id="preferences-sync-settings-intro">
<label is="zotero-text-link" href="http://www.zotero.org/support/sync" data-l10n-name="sync-link"/>
</description>
<separator class="thin"/>
<groupbox>
<html:div class="form-grid">
<box/>
<checkbox
label="&zotero.preferences.sync.syncAutomatically;"
preference="extensions.zotero.sync.autoSync"
native="true"/>
<box/>
<checkbox
label="&zotero.preferences.sync.syncFullTextContent;"
preference="extensions.zotero.sync.fulltext.enabled"
tooltiptext="&zotero.preferences.sync.syncFullTextContent.desc;"
native="true"/>
<box/>
<box>
<button id="sync-libraries-button" label="&zotero.preferences.sync.librariesToSync.button;"
oncommand="Zotero_Preferences.Sync.showLibrariesToSyncDialog()"
data-search-strings="zotero.preferences.sync.librariesToSync"/>
</box>
</html:div>
</groupbox>
<groupbox id="storage-settings" aria-label="&zotero.preferences.sync.fileSyncing;">
<label><html:h2>&zotero.preferences.sync.fileSyncing;</html:h2></label>
<!-- My Library -->
<hbox>
@ -137,7 +137,7 @@
oncommand="Zotero_Preferences.Sync.onStorageSettingsChange()"
native="true">
<menupopup>
<menuitem label="Zotero" value="zotero"/>
<menuitem label="Zotero Storage" value="zotero"/>
<menuitem label="WebDAV" value="webdav"/>
</menupopup>
</menulist>
@ -212,7 +212,7 @@
<separator id="storage-separator" class="thin"/>
<!-- Group Libraries -->
<checkbox label="&zotero.preferences.sync.fileSyncing.groups;"
<checkbox data-l10n-id="preferences-sync-fileSyncing-groups"
preference="extensions.zotero.sync.storage.groups.enabled"
oncommand="Zotero_Preferences.Sync.updateStorageSettingsGroupsUI()"
native="true"/>
@ -234,18 +234,15 @@
<separator class="thin"/>
<vbox id="storage-terms">
<hbox style="margin-top: .4em; display: block" align="center">
<label id="preferences_storage_terms" >&zotero.preferences.sync.fileSyncing.tos1;</label>
<label is="zotero-text-link" href="https://www.zotero.org/support/terms/terms_of_service" value="&zotero.preferences.sync.fileSyncing.tos2;" aria-describedby="preferences_storage_terms"/>
<label>&zotero.preferences.period;</label>
</hbox>
<description style="margin-top: .4em" data-l10n-id="preferences-sync-fileSyncing-tos">
<label is="zotero-text-link" href="https://www.zotero.org/support/terms/terms_of_service" data-l10n-name="terms-link"/>
</description>
</vbox>
</groupbox>
</vbox>
</groupbox>
</vbox>
<vbox class="main-section" id="sync-reset" align="start" aria-label="&zotero.preferences.sync.reset;" role="group">
<html:h1>&zotero.preferences.sync.reset;</html:h1>
<html:h1 data-l10n-id="preferences-sync-reset-heading"/>
<button label="&zotero.preferences.sync.reset.showResetOptions;" oncommand="Zotero_Preferences.navigateToPane('zotero-subpane-reset-sync')"
data-search-strings="
zotero.preferences.sync.reset.restoreToOnlineLibrary,

View file

@ -237,13 +237,6 @@ Zotero_Preferences.Advanced = {
return;
}
try {
await Zotero.DB.vacuum();
}
catch (e) {
Zotero.logError(e);
ok = false;
}
}
var str = ok ? 'passed' : 'failed';

View file

@ -1,5 +1,5 @@
<vbox class="main-section subpane" id="sync-reset" onload="Zotero_Preferences.Sync.initResetPane()">
<html:h1>&zotero.preferences.sync.reset;</html:h1>
<html:h1 data-l10n-id="preferences-sync-reset-heading"/>
<!-- This doesn't wrap without an explicit width, for some reason -->
<description id="reset-sync-warning" width="45em">&zotero.preferences.sync.reset.warning1;<label style="margin-left: 0; margin-right: 0" is="zotero-text-link" href="http://zotero.org/support/kb/sync_reset_options">&zotero.preferences.sync.reset.warning2;</label>&zotero.preferences.sync.reset.warning3;</description>

View file

@ -39,7 +39,7 @@ var Zotero_Read_Aloud_First_Run = new function () {
// TODO
},
onLogIn: () => {
setTimeout(() => Zotero.Utilities.Internal.openPreferences('zotero-prefpane-sync', { action: 'logIn' }));
setTimeout(() => Zotero.Utilities.Internal.openPreferences('zotero-prefpane-account', { action: 'logIn' }));
},
onSetDoneMode: ({ enabled, needsLogIn }) => {
let acceptButton = this._dialog.getButton('accept');
@ -67,7 +67,7 @@ var Zotero_Read_Aloud_First_Run = new function () {
this.accept = function (event) {
if (this._needsLogIn) {
this.cancel();
Zotero.Utilities.Internal.openPreferences('zotero-prefpane-sync', { action: 'logIn' });
Zotero.Utilities.Internal.openPreferences('zotero-prefpane-account', { action: 'logIn' });
return;
}

View file

@ -21128,7 +21128,14 @@ CSL.Util.PageRangeMangler.getFunction = function (state, rangeType) {
if (begin > 100 && begin % 100 && parseInt((begin / 100), 10) === parseInt((end / 100), 10)) {
m[3] = "" + (end % 100);
} else if (begin >= 10000) {
m[3] = "" + (end % 1000);
e = "" + end;
for (var i = 3; i < e.length; i++) {
var divisor = Math.pow(10, i);
if (Math.floor(begin / divisor) === Math.floor(end / divisor)) {
m[3] = "" + (end % divisor);
break;
}
}
}
}
if (m[2].slice(1) === m[0]) {

View file

@ -364,14 +364,25 @@ Zotero.CollectionTreeRow.prototype.getSearchObject = async function () {
return Zotero.CollectionTreeCache.lastSearch;
}
var s;
var includeScopeChildren = false;
// Create/load the inner search
if (this.ref instanceof Zotero.Search) {
var s = this.ref;
if (this.isRecentlyRead()) {
let ids = await Zotero.Items.getLastRead(this.ref.libraryID);
let tmpTable = await Zotero.Search.idsToTempTable(ids, { idColumn: 'id' });
s = new Zotero.Search();
s.libraryID = this.ref.libraryID;
s.addCondition('tempTable', 'is', tmpTable);
this.onUnload = async function () {
await Zotero.DB.queryAsync(`DROP TABLE IF EXISTS ${tmpTable}`, false, { noCache: true });
};
}
else if (this.ref instanceof Zotero.Search) {
s = this.ref;
}
else if (this.isDuplicates()) {
var s = await this.ref.getSearchObject();
s = await this.ref.getSearchObject();
let tmpTable;
for (let id in s.conditions) {
let c = s.conditions[id];
@ -386,7 +397,7 @@ Zotero.CollectionTreeRow.prototype.getSearchObject = async function () {
};
}
else {
var s = new Zotero.Search();
s = new Zotero.Search();
if (!this.isFeeds()) {
s.libraryID = this.ref.libraryID;
}

View file

@ -139,7 +139,56 @@ Zotero.Items = function () {
return this.getAsync(ids);
};
this._lastReadCutoffs = new Map(); // libraryID -> cutoff timestamp
/**
* Get items with recently read attachments in a library.
*
* "Recently read" means read within two weeks of the most recently read
* attachment in the library (cutoff fixed within each session).
*
* @param {Integer} libraryID
* @return {Promise<Integer[]>} Item IDs (parent items, or standalone attachments)
*/
this.getLastRead = async function (libraryID) {
let twoWeeksInSeconds = 14 * 24 * 60 * 60;
// Freeze the cutoff on first load so that reading something new
// doesn't cause old items to vanish mid-session
let cutoff;
if (this._lastReadCutoffs.has(libraryID)) {
cutoff = this._lastReadCutoffs.get(libraryID);
}
else {
let maxSQL = "SELECT MAX(IA.lastRead) FROM itemAttachments IA "
+ "JOIN items I ON (I.itemID = IA.itemID) "
+ "WHERE I.libraryID = ? "
+ "AND IA.lastRead IS NOT NULL "
+ "AND IA.itemID NOT IN (SELECT itemID FROM deletedItems) "
+ "AND COALESCE(IA.parentItemID, IA.itemID) NOT IN (SELECT itemID FROM deletedItems)";
let maxLastRead = await Zotero.DB.valueQueryAsync(maxSQL, [libraryID]);
if (maxLastRead) {
cutoff = maxLastRead - twoWeeksInSeconds;
this._lastReadCutoffs.set(libraryID, cutoff);
}
else {
// No items with lastRead.
// Don't persist this - we want to calculate a new cutoff if items come in later.
cutoff = 0;
}
}
let sql = "SELECT DISTINCT COALESCE(IA.parentItemID, IA.itemID) "
+ "FROM itemAttachments IA "
+ "JOIN items I ON (I.itemID = COALESCE(IA.parentItemID, IA.itemID)) "
+ "WHERE IA.lastRead >= ? "
+ "AND I.libraryID = ? "
+ "AND IA.itemID NOT IN (SELECT itemID FROM deletedItems) "
+ "AND COALESCE(IA.parentItemID, IA.itemID) NOT IN (SELECT itemID FROM deletedItems)";
return Zotero.DB.columnQueryAsync(sql, [cutoff, libraryID]);
};
//
// Bulk data loading functions
//
@ -268,7 +317,12 @@ Zotero.Items = function () {
else if (item.isAnnotation()) {
await item.loadDataType('annotation');
}
item.updateDisplayTitle()
try {
item.updateDisplayTitle();
}
catch (e2) {
Zotero.logError(e2);
}
}
else {
throw e;

View file

@ -923,25 +923,25 @@ Zotero.Search.prototype.getSQLParams = async function () {
/*
* Batch insert
*/
Zotero.Search.idsToTempTable = async function (ids) {
Zotero.Search.idsToTempTable = async function (ids, { idColumn = 'itemID' } = {}) {
var tmpTable = "tmpSearchResults_" + Zotero.randomString(8);
Zotero.debug(`Creating ${tmpTable} with ${ids.length} item${ids.length != 1 ? 's' : ''}`);
var sql = "CREATE TEMPORARY TABLE " + tmpTable;
if (ids.length) {
sql += " AS "
+ "WITH cte(itemID) AS ("
+ `WITH cte(${idColumn}) AS (`
+ "VALUES " + ids.map(id => "(" + parseInt(id) + ")").join(',')
+ ") "
+ "SELECT * FROM cte";
}
else {
sql += " (itemID INTEGER PRIMARY KEY)";
sql += ` (${idColumn} INTEGER PRIMARY KEY)`;
}
await Zotero.DB.queryAsync(sql, false, { debug: false, noCache: true });
if (ids.length) {
await Zotero.DB.queryAsync(
`CREATE UNIQUE INDEX ${tmpTable}_itemID ON ${tmpTable}(itemID)`,
`CREATE UNIQUE INDEX ${tmpTable}_${idColumn} ON ${tmpTable}(${idColumn})`,
false,
{
noCache: true

View file

@ -94,6 +94,7 @@ Zotero.DBConnection = function (dbNameOrPath) {
this._lastTransactionDate = null;
this._transactionRollback = false;
this._transactionNestingLevel = 0;
this._commitCount = 0;
this._callbacks = {
begin: [],
commit: [],
@ -481,6 +482,7 @@ Zotero.DBConnection.prototype.executeTransaction = async function (func, options
}
result = await conn.executeTransaction(func);
this._commitCount++;
Zotero.debug(`Committed DB transaction ${id}`, 4);
}
finally {
@ -500,12 +502,6 @@ Zotero.DBConnection.prototype.executeTransaction = async function (func, options
this._transactionID = null;
if (options.vacuumOnCommit) {
Zotero.debug('Vacuuming database');
await this.queryAsync('VACUUM');
Zotero.debug('Done vacuuming');
}
// Function to run once transaction has been committed but before any
// permanent callbacks
if (options.onCommit) {
@ -906,10 +902,16 @@ Zotero.DBConnection.prototype.executeSQLFile = async function (sql) {
/*
* Implements nsIObserver
*/
Zotero.DBConnection.prototype.observe = function (subject, topic, data) {
Zotero.DBConnection.prototype.observe = async function (subject, topic, data) {
switch (topic) {
case 'idle':
this.backUpDatabase({ online: true });
try {
await this.backUpDatabase({ online: true });
await this.vacuum();
}
catch (e) {
Zotero.logError(e);
}
break;
}
}
@ -925,16 +927,130 @@ Zotero.DBConnection.prototype.getCachedStatements = function () {
};
// TEMP
Zotero.DBConnection.prototype.vacuum = function () {
return this.executeTransaction(async function () {}, { vacuumOnCommit: true });
/**
* Vacuum the database using VACUUM INTO and perform an atomic file swap
*
* Creates a compacted copy of the database without blocking writes during
* the copy phase, then closes the connection and atomically replaces the
* original file if no writes occurred during compaction.
*
* @param {Object} [options]
* @param {Boolean} [options.force] - Skip time/freelist/disk-space checks
* @return {Promise<Boolean>} - Whether vacuum was performed
*/
Zotero.DBConnection.prototype.vacuum = async function ({ force } = {}) {
if (this._externalDB) {
return false;
}
if (this.inTransaction()) {
await this.waitForTransaction();
}
if (!force) {
// Check time threshold
let lastVacuum = Zotero.Prefs.get('vacuum.lastTime') || 0;
let intervalDays = Zotero.Prefs.get('vacuum.interval') || 14;
let intervalSeconds = intervalDays * 24 * 60 * 60;
let nowSeconds = Math.floor(Date.now() / 1000);
if ((nowSeconds - lastVacuum) < intervalSeconds) {
Zotero.debug("Database was vacuumed recently -- skipping");
return false;
}
// Check freelist threshold
let freelistCount = await this.valueQueryAsync("PRAGMA freelist_count");
let pageCount = await this.valueQueryAsync("PRAGMA page_count");
let threshold = Zotero.Prefs.get('vacuum.freelistThreshold') || 10;
if (pageCount > 0 && (freelistCount / pageCount * 100) < threshold) {
Zotero.debug(`Database freelist is ${freelistCount}/${pageCount} pages `
+ `(${(freelistCount / pageCount * 100).toFixed(1)}%) `
+ `-- below ${threshold}% threshold, skipping`);
return false;
}
// Check disk space
let dbFile = Zotero.File.pathToFile(this._dbPath);
let dbSize = (await IOUtils.stat(this._dbPath)).size;
let freeSpace = dbFile.diskSpaceAvailable;
if (freeSpace < dbSize) {
Zotero.debug(`Not enough disk space to vacuum database `
+ `(${freeSpace} available, ${dbSize} needed) -- skipping`);
return false;
}
}
let tmpFile = this._dbPath + '.vacuum.tmp';
try {
// Clean up any leftover temp file from a previous failed attempt
if (await IOUtils.exists(tmpFile)) {
await IOUtils.remove(tmpFile);
}
Zotero.debug("Vacuuming database");
let t = new Date();
let commitCountBefore = this._commitCount;
// Disable auto_vacuum for the output file if previously enabled -- periodic VACUUM handles
// compaction, and auto_vacuum causes fragmentation
await this.queryAsync("PRAGMA auto_vacuum=0");
// VACUUM INTO creates a compacted copy as a snapshot of committed data. Concurrent writes
// in WAL are NOT included in the output.
await this.queryAsync(`VACUUM INTO '${tmpFile.replace(/'/g, "''")}'`);
// Block other code from reopening the connection during the swap
let resolveVacuumPromise;
this._offlineBackupPromise = new Promise(function () {
resolveVacuumPromise = arguments[0];
});
try {
// Close the database -- this waits for any in-flight transactions and checkpoints WAL
await this.closeDatabase();
// If any writes happened between VACUUM INTO start and close, the compacted copy is
// stale -- abort
if (this._commitCount !== commitCountBefore) {
Zotero.debug("Database was modified during vacuum -- aborting swap", 1);
await IOUtils.remove(tmpFile);
return false;
}
// Atomic swap
await IOUtils.move(tmpFile, this._dbPath);
Zotero.Prefs.set('vacuum.lastTime', Math.floor(Date.now() / 1000));
Zotero.debug("Vacuumed database in " + (new Date() - t) + " ms");
return true;
}
finally {
this._offlineBackupPromise = null;
resolveVacuumPromise();
}
}
catch (e) {
Zotero.logError(e);
try {
if (await IOUtils.exists(tmpFile)) {
await IOUtils.remove(tmpFile);
}
}
catch (e2) {
Zotero.logError(e2);
}
return false;
}
};
// TEMP
Zotero.DBConnection.prototype.info = async function () {
var info = {};
var pragmas = ['auto_vacuum', 'cache_size', 'main.locking_mode', 'page_size'];
var pragmas = ['auto_vacuum', 'cache_size', 'journal_mode', 'main.locking_mode', 'page_size', 'synchronous'];
for (let p of pragmas) {
info[p] = await Zotero.DB.valueQueryAsync(`PRAGMA ${p}`);
}
@ -978,6 +1094,18 @@ Zotero.DBConnection.prototype.closeDatabase = async function (permanent) {
}
Zotero.debug("Closing database");
// Checkpoint WAL before closing so all data is in the main file
// and -wal file is truncated. Use _connection.execute() directly
// to avoid deadlocking with _offlineBackupPromise in queryAsync.
try {
Zotero.debug("PRAGMA wal_checkpoint(TRUNCATE)");
await this._connection.execute("PRAGMA wal_checkpoint(TRUNCATE)");
}
catch (e) {
Zotero.logError(e);
}
this.closed = true;
await this._connection.close();
this._connection = undefined;
@ -1285,7 +1413,15 @@ Zotero.DBConnection.prototype._getConnectionAsync = async function () {
else {
await this.queryAsync("PRAGMA main.locking_mode=NORMAL");
}
// Enable WAL mode for better write performance. With locking_mode=EXCLUSIVE
// set first, SQLite uses heap memory for the WAL index instead of shared
// memory, so no -shm file is created on disk.
await this.queryAsync("PRAGMA journal_mode=WAL");
// NORMAL synchronous is safe with WAL -- only risks losing the last
// transaction on power loss, not corruption
await this.queryAsync("PRAGMA synchronous=NORMAL");
// Set page cache size to 8MB
let pageSize = await this.valueQueryAsync("PRAGMA page_size");
let cacheSize = 8192000 / pageSize;

View file

@ -46,11 +46,11 @@ Zotero.PreferencePanes = {
helpURL: 'https://www.zotero.org/support/preferences/general',
},
{
id: 'zotero-prefpane-sync',
label: 'zotero.preferences.prefpane.sync',
image: 'chrome://zotero/skin/20/universal/sync.svg',
src: 'chrome://zotero/content/preferences/preferences_sync.xhtml',
scripts: ['chrome://zotero/content/preferences/preferences_sync.js'],
id: 'zotero-prefpane-account',
label: 'preferences-pane-account',
image: 'chrome://zotero/skin/20/universal/account.svg',
src: 'chrome://zotero/content/preferences/preferences_account.xhtml',
scripts: ['chrome://zotero/content/preferences/preferences_account.js'],
defaultXUL: true,
helpURL: 'https://www.zotero.org/support/preferences/sync',
},
@ -83,10 +83,10 @@ Zotero.PreferencePanes = {
},
{
id: 'zotero-subpane-reset-sync',
parent: 'zotero-prefpane-sync',
parent: 'zotero-prefpane-account',
label: 'zotero.preferences.subpane.resetSync',
src: 'chrome://zotero/content/preferences/preferences_sync_reset.xhtml',
scripts: ['chrome://zotero/content/preferences/preferences_sync.js'],
scripts: ['chrome://zotero/content/preferences/preferences_account.js'],
defaultXUL: true,
helpURL: 'https://www.zotero.org/support/preferences/sync#reset',
}

View file

@ -246,7 +246,7 @@ class ReaderInstance {
autoDisableTextTool: Zotero.Prefs.get('reader.autoDisableTool.text'),
autoDisableImageTool: Zotero.Prefs.get('reader.autoDisableTool.image'),
sidebarView: Zotero.Prefs.get('reader.lastSidebarTab'),
enableReadAloud: Zotero.isBetaBuild || Zotero.isDevBuild || Zotero.isSourceBuild,
enableReadAloud: true,
readAloudVoices: this._getReadAloudVoices(),
readAloudEnabledVoices: await this._getReadAloudEnabledVoices(),
readAloudRemoteInterface: this._getReadAloudRemoteInterface(this._iframeWindow),
@ -615,7 +615,7 @@ class ReaderInstance {
},
onLogIn: () => {
// This causes a segfault without the timeout...
setTimeout(() => Zotero.Utilities.Internal.openPreferences('zotero-prefpane-sync', { action: 'logIn' }));
setTimeout(() => Zotero.Utilities.Internal.openPreferences('zotero-prefpane-account', { action: 'logIn' }));
},
onOpenReadAloudFirstRunPopup: ({ lang }) => {
// As above

View file

@ -1936,6 +1936,11 @@ Zotero.Schema = new function () {
`SELECT COUNT(*) > 0 FROM items WHERE itemTypeID=${attachmentID} AND itemID NOT IN (SELECT itemID FROM itemAttachments)`,
`INSERT INTO itemAttachments (itemID, linkMode) SELECT itemID, 0 FROM items WHERE itemTypeID=${attachmentID} AND itemID NOT IN (SELECT itemID FROM itemAttachments)`,
],
// Missing itemAnnotations rows
[
`SELECT COUNT(*) > 0 FROM items WHERE itemTypeID=${annotationID} AND itemID NOT IN (SELECT itemID FROM itemAnnotations)`,
`DELETE FROM items WHERE itemTypeID=${annotationID} AND itemID NOT IN (SELECT itemID FROM itemAnnotations)`,
],
// Attachments with note parents, unless they're embedded-image attachments
[
`SELECT COUNT(*) > 0 FROM itemAttachments `
@ -2206,11 +2211,9 @@ Zotero.Schema = new function () {
try {
var userLibraryID = 1;
// Enable auto-vacuuming
await Zotero.DB.queryAsync("PRAGMA page_size = 4096");
await Zotero.DB.queryAsync("PRAGMA encoding = 'UTF-8'");
await Zotero.DB.queryAsync("PRAGMA auto_vacuum = 1");
var sql = await _getSchemaSQL('system');
await Zotero.DB.executeSQLFile(sql);

View file

@ -115,7 +115,7 @@ Zotero.Sync.Storage.Engine.prototype.start = async function () {
let wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
let lastWin = wm.getMostRecentWindow("navigator:browser");
lastWin.ZoteroPane.openPreferences('zotero-prefpane-sync');
lastWin.ZoteroPane.openPreferences('zotero-prefpane-account');
}
}
);

View file

@ -1739,7 +1739,20 @@ Zotero.Sync.Data.Local = {
|| isAutoMergeType) {
continue;
}
// Auto-resolve lastRead by keeping the most recent value
if (c1.field == 'lastRead') {
if ((c1.value || 0) > (c2.value || 0)) {
// Local is more recent -- drop remote change
changeset2.splice(j--, 1);
}
else {
// Remote is more recent -- apply it
matchedLocalChanges.add(i);
}
continue;
}
// Conflict
matchedLocalChanges.add(i);
changeset2.splice(j--, 1);

View file

@ -1153,7 +1153,7 @@ Zotero.Sync.Runner_Module = function (options = {}) {
e.dialogButtonText = Zotero.ftl.formatValueSync('account-log-in');
e.dialogButtonCallback = function () {
Zotero.Utilities.Internal.openPreferences(
"zotero-prefpane-sync",
"zotero-prefpane-account",
{ action: 'logIn' }
);
};

View file

@ -637,7 +637,7 @@ var ZoteroPane = new function () {
if (Zotero.Prefs.get('reopenAccountPrefsOnRestart')) {
Zotero.Prefs.clear('reopenAccountPrefsOnRestart');
Zotero.Utilities.Internal.openPreferences('zotero-prefpane-sync');
Zotero.Utilities.Internal.openPreferences('zotero-prefpane-account');
}
});
@ -3047,7 +3047,7 @@ var ZoteroPane = new function () {
switch (reminderType) {
case 'setUp':
Zotero.Utilities.Internal.openPreferences('zotero-prefpane-sync');
Zotero.Utilities.Internal.openPreferences('zotero-prefpane-account');
break;
case 'autoSync':
Zotero.Prefs.set(`sync.autoSync`, true);
@ -6701,7 +6701,7 @@ var ZoteroPane = new function () {
// Set message and link to current version
let div = document.getElementById('post-upgrade-message');
document.l10n.setArgs(div, { version: "8" });
document.l10n.setArgs(div, { version: majorVersion });
let link = document.getElementById('post-upgrade-new-features-link');
link.href = ZOTERO_CONFIG.NEW_FEATURES_URL.replace('{version}', majorVersion);
document.getElementById('post-upgrade-container').removeAttribute('collapsed');

View file

@ -421,9 +421,12 @@
oncommand="ZoteroStandalone.currentReader.rotatePageRight()"
/>
<menuseparator/>
<menuitem id="menu_find" label="&findCmd.label;"
<menuitem id="menu_find" class="menu-type-library" label="&findCmd.label;"
key="key_find" accesskey="&findCmd.accesskey;"
command="cmd_find"/>
<menuitem id="menu_find_reader" class="menu-type-reader" label="&findCmd.label;"
key="key_find" accesskey="&findCmd.accesskey;"
oncommand="ZoteroStandalone.currentReader.toggleFindPopup({ open: true });"/>
<menuitem id="menu_advancedSearch"
label="&zotero.toolbar.advancedSearch;"
key="key_advancedSearch"

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = More Information
general-warning = Warning
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Continue
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = More Information
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = إلخ.
general-previous = السابق
general-next = التالي
general-learn-more = تعرف على المزيد
general-more-information = المزيد من المعلومات
general-warning = تحذير
general-type-to-continue = اكتب ”{ $text }“ للمتابعة.
general-continue = استمر
@ -283,7 +284,7 @@ import-online-wrong-credentials = لقد فشل تسجيل الدخول إلى {
import-online-blocked-by-plugin = لا يمكن متابعة الاستيراد مع تثبيت { $plugin }. يرجى تعطيل هذه الإضافة والمحاولة مرة أخرى.
import-online-relink-only =
.label = إعادة ربط استشهادات مندلي المكتبية
import-online-relink-kb = المزيد من المعلومات
import-online-relink-kb = { general-more-information }
import-online-connection-error = تعذر على { -app-name } الاتصال ب { $targetApp }. يرجى التحقق من اتصالك بالإنترنت والمحاولة مرة أخرى.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = и др.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = Повече информация
general-warning = Предупреждение
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Продължаване
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Повече информация
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -23,7 +23,7 @@ integration-citationDialog = Citation Dialog
integration-citationDialog-section-open = Open Documents ({ $count })
integration-citationDialog-section-selected = Selected Items ({ $count }/{ $total })
integration-citationDialog-section-selectedAnnotations = Selected Annotations
integration-citationDialog-section-selectedItems = Selected Items
integration-citationDialog-section-selectedItems = Elfennoù diuzet
integration-citationDialog-section-cited =
{ $count ->
[0] Cited Items

View file

@ -16,7 +16,7 @@ note-editor-paragraph = Rannbennad
note-editor-monospaced = Monospaset
note-editor-bullet-list = Listenn gant merkigoù
note-editor-ordered-list = Listenn niverennet
note-editor-block-quote = Block Quote
note-editor-block-quote = Bloc'had arroudenn
note-editor-math-block = Matematik bloc'had
note-editor-format-text = Stumm an destenn
note-editor-highlight-text = Usskediñ an destenn

View file

@ -7,7 +7,7 @@ reader-no-extracted-text = Testenn ebet eztennet
reader-add-comment = Ouzhpennañ un evezhiadenn
reader-annotation-comment = Evezhiadenn an ennotadur
reader-annotation-text = Testenn an ennotadur
reader-manage-tags = Manage tags for this annotation
reader-manage-tags = Merañ an tikedennoù evit an ennotadur-mañ
reader-open-menu = Digeriñ lañser an ennotaudurioù
reader-thumbnails = Skeudennigoù
reader-tag-selector-message = Silañ an ennotadurioù dre an dikedenn-mañ
@ -94,12 +94,12 @@ reader-epub-appearance-word-spacing = Spas etre gerioù
reader-epub-appearance-letter-spacing = Spas etre al lizherennoù
reader-epub-appearance-page-width = Ledander ar bajenn
reader-epub-appearance-use-original-font = Ober gant ar skritur orin
reader-epub-appearance-line-height-revert = Use default line height
reader-epub-appearance-line-height-revert = Ober gant an uhelder linenn dre ziouer
reader-epub-appearance-word-spacing-revert = Ober gant ar spas dre ziouer etre ar gerioù
reader-epub-appearance-letter-spacing-revert = Ober gant ar spas dre ziouer etre al lizherennoù
reader-epub-appearance-page-width-revert = Ober gant al ledander pajenn dre ziouer
reader-convert-to-highlight = Convert to Highlight
reader-convert-to-underline = Convert to Underline
reader-convert-to-highlight = Emdreiñ da usskedet
reader-convert-to-underline = Emdreiñ da islinennet
reader-size = Ment
reader-merge = Kendeuziñ
reader-copy-link = Eilañ al liamm
@ -131,7 +131,7 @@ reader-background = Drekleur:
reader-foreground = Rakleur:
reader-reading-mode = Reading Mode
reader-reading-mode-not-supported = Reading Mode is not supported in this document.
reader-clear-selection = Clear Selection
reader-clear-selection = Dilemel an diuzadenn
reader-epub-encrypted = This ebook is encrypted and cannot be opened.
reader-move-annotation-start-key =
{ PLATFORM() ->

View file

@ -106,8 +106,8 @@
<!ENTITY zotero.item.textTransform "Treuzfurmiñ an destenn">
<!ENTITY zotero.item.textTransform.titlecase "Al lizherennoù kentañ e pennlizherennoù">
<!ENTITY zotero.item.textTransform.sentencecase "Lizherenn gentañ ar frazenn e pennlizherenn">
<!ENTITY zotero.item.creatorTransform.nameSwap "Swap First/Last">
<!ENTITY zotero.item.creatorTransform.fixCase "Fix Case">
<!ENTITY zotero.item.creatorTransform.nameSwap "Eilpennañ Anv-bihan/Anv-familh">
<!ENTITY zotero.item.creatorTransform.fixCase "Reizhañ al lizherennoù bras/bihan">
<!ENTITY zotero.item.copyAsURL "Eilañ evel URL">
<!ENTITY zotero.item.deletePermanently "Dilemel da virviken...">
@ -133,7 +133,7 @@
<!ENTITY zotero.tagSelector.assignColor "Dereiñ ul liv...">
<!ENTITY zotero.tagSelector.renameTag "Adenvel ar baliz...">
<!ENTITY zotero.tagSelector.deleteTag "Dilemel ar baliz...">
<!ENTITY zotero.tagSelector.splitTag "Split…">
<!ENTITY zotero.tagSelector.splitTag "Skarat...">
<!ENTITY zotero.tagColorChooser.title "Dereiñ ul liv hag ul lec'hiadur d'ar baliz">
<!ENTITY zotero.tagColorChooser.color "Liv:">
@ -173,7 +173,7 @@
<!ENTITY zotero.import "Emporzhiañ">
<!ENTITY zotero.import.whereToImportFrom "Deus pelec'h ho peus c'hoant emporzhiañ?">
<!ENTITY zotero.import.source.file "Ur restr (BibTeX, RIS, Zotero RDF, hag all hag all...)">
<!ENTITY zotero.import.source.folder "A folder of PDFs or other files">
<!ENTITY zotero.import.source.folder "Un doser gant PDFoù pe restroù all">
<!ENTITY zotero.import.onlineImport "emporzhiañ enlinenn">
<!ENTITY zotero.import.importing "Oc'h emporzhiañ...">
<!ENTITY zotero.import.database "Diaz-roadennoù">
@ -181,7 +181,7 @@
<!ENTITY zotero.import.size "Ment">
<!ENTITY zotero.import.createCollection "Plasit an dastumadegoù hag an teuliadoù emporzhiet e-barzh un dastumadeg nevez">
<!ENTITY zotero.import.fileHandling "Meradur ar restroù">
<!ENTITY zotero.import.online.newItemsOnly "Download new items only; don’t update previously imported items">
<!ENTITY zotero.import.online.newItemsOnly "Pellgargañ an elfennoù nevez hepken; na hizivaat an elfennoù emporzhiet kent">
<!ENTITY zotero.exportOptions.title "Ezporzhiañ...">
<!ENTITY zotero.exportOptions.format.label "Stumm:">
@ -297,10 +297,10 @@
<!ENTITY zotero.attachLink.label.link "Liamm:">
<!ENTITY zotero.attachLink.label.title "Titl:">
<!ENTITY zotero.context.addChildNote "Add Item Note">
<!ENTITY zotero.context.addChildNoteFromAnnotations "Add Item Note from Annotations">
<!ENTITY zotero.context.addStandaloneNote "Add Standalone Note">
<!ENTITY zotero.context.addStandaloneNoteFromAnnotations "Add Standalone Note from Annotations">
<!ENTITY zotero.context.addChildNote "Ouzhpennañ un notenn elfenn">
<!ENTITY zotero.context.addChildNoteFromAnnotations "Ouzhpennañ un notenn elfenn diwar an ennotadurioù">
<!ENTITY zotero.context.addStandaloneNote "Ouzhpennañ un notenn dizalc'h">
<!ENTITY zotero.context.addStandaloneNoteFromAnnotations "Ouzhpennañ un notenn dizalc'h diwar an ennotadurioù">
<!ENTITY zotero.context.editInWindow "Aozañ en ur prenestr distag">
<!ENTITY zotero.pdfReader.firstPage "Pajenn gentañ">
@ -311,9 +311,9 @@
<!ENTITY zotero.pdfReader.verticalScrolling "Dibunañ a-blom">
<!ENTITY zotero.pdfReader.horizontalScrolling "Dibunañ a-blaen">
<!ENTITY zotero.pdfReader.wrappedScrolling "Dibunañ dre vloc'had">
<!ENTITY zotero.pdfReader.noSpreads "No Spreads">
<!ENTITY zotero.pdfReader.oddSpreads "Odd Spreads">
<!ENTITY zotero.pdfReader.evenSpreads "Even Spreads">
<!ENTITY zotero.pdfReader.noSpreads "Pajennadoù doubl ebet">
<!ENTITY zotero.pdfReader.oddSpreads "Pajennadoù doubl, ampar a-gleiz">
<!ENTITY zotero.pdfReader.evenSpreads "Pajennadoù doubl, par a-gleiz">
<!ENTITY zotero.pdfReader.scrolled "Dibunet">
<!ENTITY zotero.pdfReader.paginated "Pajennet">
<!ENTITY zotero.pdfReader.zoomIn "Zoumañ">
@ -324,6 +324,6 @@
<!ENTITY zotero.pdfReader.zoomPageHeight "Zoumañ betek uhelder ar bajenn">
<!ENTITY zotero.pdfReader.splitVertically "Rannañ a-blom">
<!ENTITY zotero.pdfReader.splitHorizontally "Rannañ a-blaen">
<!ENTITY zotero.pdfReader.transferFromPDF "Import Annotations…">
<!ENTITY zotero.pdfReader.rotatePageLeft "Rotate Page Left">
<!ENTITY zotero.pdfReader.rotatePageRight "Rotate Page Right">
<!ENTITY zotero.pdfReader.transferFromPDF "Emporzhiañ an ennotadurioù...">
<!ENTITY zotero.pdfReader.rotatePageLeft "Treiñ ar bajenn a-gleiz">
<!ENTITY zotero.pdfReader.rotatePageRight "Treiñ ar bajenn a-zehoù">

View file

@ -59,6 +59,7 @@ general-et-al = hag all hag all
general-previous = Kent
general-next = Da-heul
general-learn-more = Gouzout hiroc'h
general-more-information = Muioc'h a ditouroù
general-warning = Kemenn-diwall
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Kenderc'hel
@ -231,7 +232,7 @@ import-online-intro-title = Digoradur
import-source-file =
.label = Ur restr (BibTeX, RIS, Zotero RDF, hag all hag all...)
import-source-folder =
.label = A folder of PDFs or other files
.label = Un doser gant PDFoù pe restroù all
import-source-online =
.label = { $targetApp } online import
import-options = Dibarzhioù
@ -252,7 +253,7 @@ import-file-handling-link =
.label = Liammañ d'ar restroù el lec'hiadur orin
import-fileHandling-description = Linked files cannot be synced by { -app-name }.
import-online-new =
.label = Download new items only; don’t update previously imported items
.label = Pellgargañ an elfennoù nevez hepken; na hizivaat an elfennoù emporzhiet kent
import-mendeley-username = Anv-implijer
import-mendeley-password = Ger-tremen
general-error = Fazi
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Muioc'h a ditouroù
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -90,7 +90,7 @@ general.default=Dre ziouer
general.custom=Personelaet
general.loading=O kargañ...
general.richText=Testennoù pinvidik
general.clearSelection=Clear Selection
general.clearSelection=Dilemel an diuzadenn
general.insert=Enlakaat
general.username=Anv-implijer
general.password=Ger-tremen
@ -115,7 +115,7 @@ general.operationInProgress=Un oberiadenn a-berzh Zotero a zo war ober er mare-m
general.operationInProgress.waitUntilFinished=Gortozit betek ma vo echuet.
general.operationInProgress.waitUntilFinishedAndTryAgain=Gortozit betek ma vo echuet ha klaskit en-dro.
networkError.connectionNotSecure=Insecure Connection
networkError.connectionNotSecure=Kevreañ diasur
networkError.insecureConnectionTo=%1$S could not make a secure connection to %2$S.
networkError.errorViaProxy=Fazi en ur gevreañ dre ur servijer proksi
networkError.connectionMonitored=Your connection is likely being monitored, and %S has not been configured to trust the intermediate server.
@ -364,12 +364,12 @@ pane.items.menu.generateReport=Genel un danevell diwar an elfenn...
pane.items.menu.generateReport.multiple=Genel un danevell diwar an elfennoù...
pane.items.menu.reindexItem=Ad-Indeksiñ an elfenn
pane.items.menu.reindexItem.multiple=Ad-Indeksiñ an elfennoù
pane.items.menu.recognizeDocument=Retrieve Metadata
pane.items.menu.recognizeDocument=Adtapout ar metaroadennoù
pane.items.menu.createParent=Krouiñ un elfenn kar...
pane.items.menu.createParent.multiple=Krouiñ elfennoù kar
pane.items.menu.renameAttachments=Adenvel ar restr diwar ar meta-roadenn kar
pane.items.menu.renameAttachments.multiple=Adenvel ar restroù diwar ar meta-roadenn kar
pane.items.menu.duplicateAndConvert.toBookSection=Create Book Section
pane.items.menu.duplicateAndConvert.toBookSection=Krouiñ ur chabistr levr
pane.items.menu.duplicateAndConvert.toBook=Create Book from Book Section
pane.items.menu.showInFeed=Diskouez er froud
pane.items.showItemInLibrary=Diskouez an elfenn el levraoueg
@ -426,7 +426,7 @@ pane.item.attachments.autoRelink.text4=%1$S can automatically relink this attach
pane.item.attachments.autoRelink.relink=Adliammañ
pane.item.attachments.autoRelinkOthers.title=Additional Files Located
pane.item.attachments.autoRelinkOthers.text=One other unlinked attachment in this library was found within the same directory. Relink this attachment as well?;%S other unlinked attachments in this library were found within the same directory. Relink all located attachments?
pane.item.attachments.autoRelink.locateManually=Locate Manually…
pane.item.attachments.autoRelink.locateManually=Lec'helaat gant an dorn…
pane.item.attachments.autoRelink.relinkAll=Adliammañ pep-tra
pane.item.attachments.has=Gant pezhioù stag
pane.item.attachments.hasPDF=Gant restroù PDF stag
@ -487,7 +487,7 @@ itemTypes.document=Teuliad
itemTypes.encyclopediaArticle=Pennad hollouiziegezh
itemTypes.dictionaryEntry=Pennger geriadur
itemTypes.preprint=Rakvoullañ
itemTypes.dataset=Dataset
itemTypes.dataset=Diaz-roadennoù
itemTypes.standard=Standard
itemFields.itemType=Doare elfenn
@ -601,16 +601,16 @@ itemFields.issuingAuthority=Aozadur a embann
itemFields.filingDate=Deiziad leuniadur
itemFields.genre=Doare
itemFields.archive=Diell
itemFields.attachmentPDF=PDF Attachment
itemFields.attachmentPDF=PDF stag
itemFields.repository=Kavlec'h
itemFields.repositoryLocation=Repo. Location
itemFields.archiveID=Archive ID
itemFields.citationKey=Citation Key
itemFields.repositoryLocation=Lec'h. an etrepaouez
itemFields.archiveID=ID en diell
itemFields.citationKey=Alc'hwez arroudenn
itemFields.identifier=Anaouder
itemFields.type=Doare
itemFields.format=Stumm
itemFields.status=Statud
itemFields.authority=Authority
itemFields.authority=Aotrouniezh
itemFields.organization=Aozadur
itemFields.feed=Froud
@ -664,7 +664,7 @@ ingester.importFile.intoNewCollection=Emporzhiañ e-barzh un dastumadeg nevez
ingester.lookup.performing=O klask...
ingester.lookup.error=Ur fazi a zo c'hoarvezet en ur glask an elfenn.
findPDF.searchingForAvailableFiles=Searching for available files…
findPDF.searchingForAvailableFiles=O klask restroù hegerz…
findPDF.checkingItems=O wiriañ %1$S elfenn;O wiriañ %1$S elfenn
findPDF.openAccessPDF=PDF moned-digor
findPDF.pdfWithMethod=PDF (%S)
@ -730,11 +730,11 @@ zotero.preferences.export.quickCopy.citationStyles=Doare arroudenn
zotero.preferences.export.quickCopy.exportFormats=Ezporzhiañ ar stummoù
zotero.preferences.export.quickCopy.instructions=An Eilañ prim a ro an tu deoc'h da ezporzhiañ buan-tre an elfennoù en ur stumm roet. Gellout a rit eilañ an elfennoù diuzet er golver en ur bouezañ war %S pe rinklit an elfennoù war-eeun e-barzh ur voest testenn e-barzh ur program all.
zotero.preferences.export.quickCopy.citationInstructions=Evit ar stiloù arroudenn e c'hallit eilañ an arroudennoù pe an notennoù-traoñ pajenn en ur bouezañ war %S pe en ur zerc'hel war Linkad a-raok rinklañ-stlejañ elfennoù.
zotero.preferences.export.quickCopy.note.htmlOptions.label=Rich Text/HTML
zotero.preferences.export.quickCopy.note.htmlOptions.label=Testenn pinvidik/HTML
zotero.preferences.wordProcessors.installationSuccess=Berzh en deus graet ar staliadur.
zotero.preferences.wordProcessors.installationError=N'hall ket bezañ klokaet ar staliadur rak ur fazi a zo c'hoarvezet. Bezit asur eo sarr %1$S, hag adloc'hit goude-se %2$S.
zotero.preferences.wordProcessors.manualInstallation.button=Manual Installation
zotero.preferences.wordProcessors.manualInstallation.button=Staliadur gant an dorn
zotero.preferences.wordProcessors.installed=Ar vodulenn %S a zo staliet endeo.
zotero.preferences.wordProcessors.notInstalled=Neket staliet ar vodulenn %S betek-hen.
zotero.preferences.wordProcessors.install=Staliañ ar vodulenn %S
@ -841,7 +841,7 @@ citation.showEditor=Diskouez an aozer...
citation.hideEditor=Kuzhat an aozer...
citation.citations=Arroudennoù
citation.notes=Notennoù
citation.locator.timestamp=Timestamp
citation.locator.timestamp=Eurdeiziad
report.title.default=Danevell Zotero
report.parentItem=Elfenn kar:
@ -879,7 +879,7 @@ integration.removeBibEntry.body=Ha fellout a ra deoc'h leuskel anezhañ e-maez h
integration.cited=Arroudennet
integration.cited.loading=O kargañ an elfennoù arroudennet...
integration.openTabs=Restroù digor
integration.selectedItems=Selected Items
integration.selectedItems=Elfennoù diuzet
integration.ibid=ibid
integration.emptyCitationWarning.title=Arroudenn wenn
integration.emptyCitationWarning.body=An arroudenn spisaet ganeoc'h a vo goullo gant ar stil diuzet er mare-mañ. Ha sur oc'h e fell deoc'h ouzhpennañ anezhañ?
@ -905,7 +905,7 @@ integration.error.misconfiguredWordStartupFolder.fix=Al lugant na vo ket diskoue
integration.error.macWordSBPermissionsMissing.title=Aotreadurioù a vank
integration.error.macWordSBPermissionsMissing=Zotero does not have permission to control Word. To grant this permission:\n\n1) Open System Settings\n2) Select “Privacy & Security” in the left column\n3) Select “Automation”\n4) Find “Zotero” and click the arrow to expand it\n5) Make sure “Microsoft Word” is enabled under “Zotero”\n6) Restart Word
integration.error.macWordSBPermissionsMissing.pre2016=Ma ne gaver ket «Microsoft Word» dindan «Automation», bezit asur e rit gant Word 2011 stumm 14.7.7 pe nevesoc'h.
integration.error.m1UpgradeOS.title=macOS Upgrade Required
integration.error.m1UpgradeOS.title=Hizivadur macOS rekis
integration.error.m1UpgradeOS=Citing in Word on an Apple Silicon Mac with macOS 11.3 or earlier is not supported and may cause %S to freeze. Please upgrade to macOS 11.4 or later.
integration.error.viewTroubleshootingInfo=Ha c'hoant ho peus da welet ar c'helennadurioù distankañ?
integration.error.tabUnavailable=The operation cannot be completed because the %S tab is no longer available.
@ -1007,7 +1007,7 @@ sync.error.invalidDataError.otherData=Roadennoù all a gendalc'ho da sinkro.
account.unlinkWarning=Logging out will prevent %S from syncing your data.
account.unlinkWarning.removeData=Dilemel ma roadennoù %S diwar an urzhiataer-mañ da virviken
account.unlinkWarning.button=Log Out
account.unlinkWarning.button=Digevreañ
account.warning.emptyLibrary=You are about to sync to an empty %1$S database. This could happen if you accidentally deleted the %2$S file in your %1$S data directory or the location of your data directory changed.
account.warning.emptyLibrary.dataWillBeDownloaded=If you continue, data in the ‘%1$S’ account will be downloaded to this computer. Your online library won’t be affected.
account.warning.existingDataElsewhere=Ma 'z eus eus ho roadennoù %S en ul lec'h all war hoc'h urzhiataer, rankout a rafec'h lakaat anezho da fiñval betek ar c'havlec'h roadennoù pe cheñch lec'hiadur ar c'havlec'h roadennoù evit ma poentfe war-zu ho roadennoù a zo anezho.
@ -1136,9 +1136,9 @@ proxies.notification.settings.button=Arventennoù proksi...
proxies.recognized.message=Ouzhpennañ ar proksi-mañ a roio an aotre da Zotero da anavezout elfennoù adalek e bajennoù hag e vo em-adheñchet ar rekedoù da zont savet ouzh %1$S dre %2$S.
proxies.recognized.add=Ouzhpennañ ur proksi
recognizePDF.title=Metadata Retrieval
recognizePDF.title=Oc'h adpakout ar metaroadennoù
recognizePDF.noOCR=Ne endalc'h ket ar PDF-mañ un destenn OCRet (OCR = arouezioù an destenn anavezet dre wel)
recognizePDF.couldNotRead=Could not read text from document
recognizePDF.couldNotRead=N'heller ket lenn an destenn diwar ar restr
recognizePDF.noMatches=N'eus bet kavet daveenn ebet kenglotus
recognizePDF.fileNotFound=Restr nann-kavet
recognizePDF.error=Ur fazi dic'hortoz 'zo c'hoarvezet
@ -1176,13 +1176,13 @@ lookup.failureTooMany.description=Re a anaouadurioù. Ebarzhit un anaouader mar
locate.online.label=Diskouez enlinenn
locate.pdf.label=Digeriñ ar PDF
locate.pdfNewWindow.label=Open PDF in New Window
locate.pdfNewTab.label=Open PDF in New Tab
locate.pdfNewTab.label=Digeriñ ur PDF en un ivinell nevez
locate.snapshot.label=Diskouez an dapadenn
locate.file.label=Diskouez ar restr
locate.externalViewer.label=Digeriñ gant ul lenner diavaez
locate.internalViewer.label=Digeriñ e-barzh ul lenner diabarzh
locate.libraryLookup.label=Klask el levraoueg
locate.libraryLookup.noResolver.title=No OpenURL Resolver
locate.libraryLookup.noResolver.title=Diskoulmer OpenURL ebet
locate.manageLocateEngines=Merañ al luskerioù enklask...
locate.locateEngineDescription=Lookup engines help you find resources in your %S library on the web. Engines enabled in this list appear in the Locate drop-down in the toolbar.
@ -1269,7 +1269,7 @@ noteEditor.paragraph=Rannbennad
noteEditor.monospaced=Monospaset
noteEditor.bulletList=Listenn gant merkigoù
noteEditor.orderedList=Listenn niverennet
noteEditor.blockquote=Block Quote
noteEditor.blockquote=Bloc'had arroudenn
noteEditor.mathBlock=Matematik bloc'had
noteEditor.formatText=Stumm an destenn
noteEditor.highlightText=Usskediñ an destenn
@ -1334,7 +1334,7 @@ pdfReader.noExtractedText=Testenn ebet eztennet
pdfReader.addComment=Ouzhpennañ un evezhiadenn
pdfReader.annotationComment=Evezhiadenn an ennotadur
pdfReader.annotationText=Testenn an ennotadur
pdfReader.manageTags=Manage tags for this annotation
pdfReader.manageTags=Merañ an tikedennoù evit an ennotadur-mañ
pdfReader.openMenu=Digeriñ lañser an ennotaudurioù
pdfReader.thumbnails=Skeudennigoù
pdfReader.tagSelectorMessage=Silañ an ennotadurioù dre an dikedenn-mañ
@ -1405,12 +1405,12 @@ pdfReader.epubAppearance.wordSpacing=Spas etre ar gerioù
pdfReader.epubAppearance.letterSpacing=Spas etre al lizherennoù
pdfReader.epubAppearance.pageWidth=Ledander ar bajenn
pdfReader.epubAppearance.useOriginalFont=Ober gant ar skritur orin
pdfReader.epubAppearance.lineHeight.revert=Use default line height
pdfReader.epubAppearance.lineHeight.revert=Ober gant an uhelder linenn dre ziouer
pdfReader.epubAppearance.wordSpacing.revert=Ober gant ar spas dre ziouer etre ar gerioù
pdfReader.epubAppearance.letterSpacing.revert=Ober gant ar spas dre ziouer etre al lizherennoù
pdfReader.epubAppearance.pageWidth.revert=Ober gant al ledander pajenn dre ziouer
pdfReader.convertToHighlight=Convert to Highlight
pdfReader.convertToUnderline=Convert to Underline
pdfReader.convertToHighlight=Emdreiñ da usskedet
pdfReader.convertToUnderline=Emdreiñ da islinennet
pdfReader.size=Ment
pdfReader.merge=Kendeuziñ
pdfReader.copyLink=Eilañ al liamm
@ -1450,9 +1450,9 @@ tabs.moveToStart=Fiñval d'an penn-kentañ
tabs.moveToEnd=Fiñval d'ar fin
tabs.moveToWindow=Move to New Window
tabs.duplicate=Eilañ an ivinell
tabs.undoClose=Reopen Closed Tab;Reopen Closed Tabs
tabs.closeOther=Close Other Tabs
tabs.undoClose=Addigeriñ an ivinell serret;Addigeriñ an ivinelloù serret
tabs.closeOther=Serriñ an holl ivinelloù
addons.emptyListMessage=Download plugins from the [Zotero plugins directory].
addons.remove.title=Remove %S?
addons.remove.text=Are you sure you want to remove %1$S from %2$S?
addons.remove.title=Dilemel %S?
addons.remove.text=Ha sur oc'h ho peus c'hoant da zilemel %1$S diwar %2$S?

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Anterior
general-next = Següent
general-learn-more = Més informació
general-more-information = Més informació
general-warning = Avís
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Continua
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Més informació
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Předchozí
general-next = Následující
general-learn-more = Zjistit více
general-more-information = Více informací
general-warning = Varování
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Pokračovat
@ -279,7 +280,7 @@ import-online-wrong-credentials = Přihlášení do { $targetApp } se nezdařilo
import-online-blocked-by-plugin = Import nemůže pokračovat, pokud je nainstalován { $plugin }. Vypněte prosím tento doplněk a zkuste to znovu.
import-online-relink-only =
.label = Znovu propojit citace Mendeley Desktop
import-online-relink-kb = Více informací
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } se nepodařilo připojit k { $targetApp }. Zkontrolujte prosím své internetové připojení a zkuste to znovu.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = m.fl.
general-previous = Previous
general-next = Next
general-learn-more = Lær mere
general-more-information = Mere information
general-warning = Warning
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Fortsæt
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Mere information
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Nächstes
general-next = Vorheriges
general-learn-more = Mehr erfahren
general-more-information = Weitere Informationen
general-warning = Warnung
general-type-to-continue = Drücke "{ $text }" um fortzufahren.
general-continue = Weiter
@ -279,7 +280,7 @@ import-online-wrong-credentials = Anmeldung bei { $targetApp } fehlgeschlagen. B
import-online-blocked-by-plugin = Der Import kann nicht fortgesetzt werden, wenn { $plugin } installiert ist. Bitte deaktivieren Sie dieses Plugin und versuchen Sie es erneut.
import-online-relink-only =
.label = Zitationen aus Mendeley Desktop erneut vernküfen
import-online-relink-kb = Weitere Informationen
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } konnte sich nicht mit { $targetApp } verbinden. Bitte überprüfen Sie Ihre Internetverbindung und wiederholen Sie den Vorgang.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = κ.α.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = Περισσότερες πληροφορίες
general-warning = Προειδοποίηση
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Συνέχεια
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Περισσότερες πληροφορίες
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = More Information
general-warning = Warning
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Continue
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = More Information
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -57,13 +57,11 @@
<!ENTITY zotero.preferences.sync.fileSyncing "File Syncing">
<!ENTITY zotero.preferences.sync.fileSyncing.url "URL:">
<!ENTITY zotero.preferences.sync.fileSyncing.myLibrary "Sync attachment files in My Library using">
<!ENTITY zotero.preferences.sync.fileSyncing.groups "Sync attachment files in group libraries using Zotero storage">
<!ENTITY zotero.preferences.sync.fileSyncing.download "Download files">
<!ENTITY zotero.preferences.sync.fileSyncing.download.atSyncTime "at sync time">
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "as needed">
<!ENTITY zotero.preferences.sync.fileSyncing.verifyServer "Verify Server">
<!ENTITY zotero.preferences.sync.fileSyncing.tos1 "By using Zotero storage, you agree to become bound by its">
<!ENTITY zotero.preferences.sync.fileSyncing.tos2 "terms and conditions">
<!ENTITY zotero.preferences.sync.librariesToSync "Libraries to Sync">
<!ENTITY zotero.preferences.sync.librariesToSync.button "Choose Libraries…">
<!ENTITY zotero.preferences.sync.librariesToSync.sync "Sync">

View file

@ -91,11 +91,19 @@ preferences-advanced-default-data-dir =
.value = (Default: { $directory })
.aria-label = Default location
preferences-pane-account = Account
-preferences-sync-data-syncing = Data Syncing
preferences-sync-data-syncing-groupbox =
.aria-label = { -preferences-sync-data-syncing }
preferences-sync-data-syncing-heading = { -preferences-sync-data-syncing }
preferences-sync-data-syncing-description = Log in with your { -app-name } account to sync your data between devices, collaborate with others, and more.
preferences-sync-settings-heading = Sync
preferences-sync-settings-intro = { -app-name } can sync your library data and files across devices. <label data-l10n-name="sync-link">Learn more</label>
preferences-sync-reset-heading = Sync Reset
preferences-sync-fileSyncing-groups =
.label = Sync attachment files in group libraries using { -app-name } Storage
preferences-sync-fileSyncing-tos = By using { -app-name } Storage, you agree to become bound by its <label data-l10n-name="terms-link">terms and conditions</label>.
preferences-account-log-out =
.label = Log Out…

View file

@ -61,6 +61,7 @@ general-et-al = et al.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = More Information
general-warning = Warning
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Continue
@ -323,7 +324,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = More Information
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =

View file

@ -128,6 +128,9 @@
"general-learn-more": {
"string": "Learn More"
},
"general-more-information": {
"string": "More Information"
},
"general-warning": {
"string": "Warning"
},
@ -452,9 +455,6 @@
"import-online-relink-only.label": {
"string": "Relink Mendeley Desktop citations"
},
"import-online-relink-kb": {
"string": "More Information"
},
"import-online-connection-error": {
"string": "{ app-name } could not connect to { targetApp }. Please check your internet connection and try again."
},

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Anterior
general-next = Siguiente
general-learn-more = Más información
general-more-information = Más información
general-warning = Advertencia
general-type-to-continue = Introduzca “{ $text }” para continuar.
general-continue = Continuar
@ -280,7 +281,7 @@ import-online-wrong-credentials = Error al iniciar sesión en { $targetApp }. Vu
import-online-blocked-by-plugin = La importación no puede continuar con { $plugin } instalado. Por favor, desactive esta extensión e inténtelo de nuevo.
import-online-relink-only =
.label = Volver a vincular las citas de Mendeley Desktop
import-online-relink-kb = Más información
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } no ha podido conectarse a { $targetApp }. Compruebe su conexión a Internet e inténtelo de nuevo.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Eelmine
general-next = Järgmine
general-learn-more = Õpi lisa
general-more-information = Lisainfo
general-warning = Hoiatus
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Jätka
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Lisainfo
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Aurrekoa
general-next = Hurrengoa
general-learn-more = Gehiago jakin
general-more-information = Informazio gehiago
general-warning = Kontuz!
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Jarraitu
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Informazio gehiago
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = اطلاعات بیشتر
general-warning = اخطار
general-type-to-continue = Type “{ $text }” to continue.
general-continue = ادامه
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = اطلاعات بیشتر
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = ym.
general-previous = Edellinen
general-next = Seuraava
general-learn-more = Lisätietoja
general-more-information = Lisätietoja
general-warning = Varoitus
general-type-to-continue = Kirjoita “{ $text }” jatkaaksesi.
general-continue = Jatka
@ -279,7 +280,7 @@ import-online-wrong-credentials = Kirjautuminen sovellukseen { $targetApp } epä
import-online-blocked-by-plugin = Tuontia ei voida jatkaa kun { $plugin } on asennettu. Kytke tämä lisäosa pois päältä ja yritä uudelleen.
import-online-relink-only =
.label = Linkitä uudelleen Mendeley Desktopin viittaukset
import-online-relink-kb = Lisätietoja
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } ei saanut yhteyttä sovellukseen { $targetApp }. Tarkista internet-yhteytesi ja yritä uudelleen.
items-table-cell-notes =
.aria-label =

View file

@ -41,7 +41,7 @@ integration-citationDialog-settings-title = Paramètres de citation
integration-citationDialog-lib-message-citation =
{ $search ->
[true] Aucun document sélectionné, ouvert ou cité ne correspond à la recherche actuelle
*[other] Aucun document sélectionné ou ouvert
*[other] Aucun document n'est ouvert ou sélectionné
}
integration-citationDialog-lib-message-add-note =
{ $search ->
@ -50,8 +50,8 @@ integration-citationDialog-lib-message-add-note =
}
integration-citationDialog-lib-message-annotations =
{ $search ->
[true] No items with annotations match the current search
*[other] No selected or open items with annotations
[true] Aucun document avec annotations ne correspond à la recherche actuelle
*[other] Aucun document avec annotations n'est ouvert ou sélectionné
}
integration-citationDialog-settings-keepSorted = Trier les sources automatiquement
integration-citationDialog-btn-settings =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Précédent
general-next = Suivant
general-learn-more = En savoir plus
general-more-information = Plus d'informations
general-warning = Avertissement
general-type-to-continue = Tapez “{ $text }” pour continuer.
general-continue = Continuer
@ -280,7 +281,7 @@ import-online-wrong-credentials = Connexion à { $targetApp } refusée. Veuillez
import-online-blocked-by-plugin = L'importation ne peut pas aboutir avec l'extension { $plugin } installée. Veuillez désactiver cette extension et réessayer.
import-online-relink-only =
.label = Lier à nouveau les citations de Mendeley Desktop
import-online-relink-kb = Plus d'informations
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } n'a pas pu se connecter à { $targetApp }. Veuillez vérifier votre connexion Internet et réessayer.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Anterior
general-next = Seguinte
general-learn-more = Saber máis
general-more-information = Máis información
general-warning = Advertencia
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Continuar
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Volver a ligar as citas de Mendeley Desktop
import-online-relink-kb = Máis información
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } non puido conectar con { $targetApp }. Por favor, comprobe a súa conexión a internet e vólvao intentar.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = ועוד
general-previous = הקודם
general-next = הבא
general-learn-more = מידע נוסף
general-more-information = פרטים נוספים
general-warning = אזהרה
general-type-to-continue = Type “{ $text }” to continue.
general-continue = להמשיך
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = פרטים נוספים
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = i dr.
general-previous = Prethodno
general-next = Sljedeće
general-learn-more = Saznajte više
general-more-information = Još informacija
general-warning = Upozorenje
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Nastavi
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Još informacija
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = és mtsai.
general-previous = Előző
general-next = Következő
general-learn-more = Bővebben
general-more-information = További információ
general-warning = Figyelmeztetés
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Folytatás
@ -279,7 +280,7 @@ import-online-wrong-credentials = A { $targetApp } bejelentkezés sikertelen. K
import-online-blocked-by-plugin = Az importálás nem folytatható a telepített { $plugin } esetén. Kérjük, tiltsa le ezt a plugint, és próbálja meg újra.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = További információ
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } nem tudott csatlakozni { $targetApp }. Kérjük, ellenőrizze az internetkapcsolatot, és próbálja meg újra.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Sebelum
general-next = Lanjut
general-learn-more = Baca lebih lanjut
general-more-information = Informasi lebih lanjut
general-warning = Peringatan
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Lanjut
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Informasi lebih lanjut
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = og fl.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = Frekari upplýsingar
general-warning = Viðvörun
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Halda áfram
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Frekari upplýsingar
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -1,6 +1,6 @@
file-renaming-settings-window =
.title = Configure File Renaming
file-renaming-settings-library-label = Library:
.title = Configura rinominazione dei file
file-renaming-settings-library-label = Biblioteca:
file-renaming-auto-rename-files =
.label = Rinomina file automaticamente
file-renaming-file-types = Rinomina file di questi tipi:
@ -20,7 +20,7 @@ file-renaming-rename-linked =
.label = Rinomina i file collegati
file-renaming-format-title = Formato del nome dei file
file-renaming-format-instructions = È possibile personalizzare lo schema con cui { -app-name } rinomina i file allegati dai metadati dell'elemento genitore.
file-renaming-format-instructions-example = For example, "{ $example }" in this template will be replaced with the title of the parent item, truncated at 50 characters.
file-renaming-format-instructions-example = Ad esempio, "{ $example }" in questo modello sarà sostituito dal titolo dell'elemento genitore, troncato dopo 50 caratteri.
file-renaming-format-instructions-more = Vedi la <label data-l10n-name="file-renaming-format-help-link">documentazione</label> per ulteriori informazioni (in inglese).
file-renaming-format-template = Schema di rinominazione:
file-renaming-format-preview = Anteprima:
@ -33,13 +33,13 @@ file-renaming-cancel-button =
.label = { general-cancel }
file-renaming-auto-rename-prompt-title = Modificate le impostazioni di auto-rinominazione
file-renaming-auto-rename-prompt-body = Vuoi rinominare i file nella tua biblioteca in accordo con le nuove impostazioni?
file-renaming-auto-rename-prompt-body-library = Would you like to rename existing files in library "{ $library }" to match the new settings?
file-renaming-auto-rename-prompt-body-library = Vuoi rinominare i file nella biblioteca "{ $library }" in accordo con le nuove impostazioni?
file-renaming-auto-rename-prompt-yes = { file-renaming-preview-changes }
file-renaming-auto-rename-prompt-no = Mantieni i nomi correnti dei file
file-renaming-preview-window =
.title = Rinomina file
file-renaming-preview-window-loading = Caricamento in corso…
file-renaming-preview-window-intro = { -app-name } rinominerà i seguenti file nella tua libreria secondo i metadati del rispettivo elemento genitore:
file-renaming-preview-window-intro-library = { -app-name } will rename the following files in "{ $library }" to match their parent items:
file-renaming-preview-window-intro-library = { -app-name } rinominerà i seguenti file nella libreria "{ $library }" secondo i metadati del rispettivo elemento genitore:
file-renaming-preview-window-renaming = Rinominazione in corso...
file-renaming-preview-window-no-files = Tutti i file corrispondono già al proprio elemento genitore. Nessuna modifica richiesta.

View file

@ -22,7 +22,7 @@ integration-editBibliography-wrapper =
integration-citationDialog = Finestra di citazione
integration-citationDialog-section-open = Apri documenti ({ $count })
integration-citationDialog-section-selected = Elementi selezionati ({ $count }/{ $total })
integration-citationDialog-section-selectedAnnotations = Selected Annotations
integration-citationDialog-section-selectedAnnotations = Annotazioni selezionate
integration-citationDialog-section-selectedItems = Elementi selezionati
integration-citationDialog-section-cited =
{ $count ->
@ -32,7 +32,7 @@ integration-citationDialog-section-cited =
integration-citationDialog-details-suffix = Suffisso
integration-citationDialog-details-prefix = Prefisso
integration-citationDialog-details-suppressAuthor = Ometti l'autore
integration-citationDialog-details-includeComments = Include Comments
integration-citationDialog-details-includeComments = Includi i commenti
integration-citationDialog-details-remove = { general-remove }
integration-citationDialog-details-done =
.label = { general-done }
@ -50,8 +50,8 @@ integration-citationDialog-lib-message-add-note =
}
integration-citationDialog-lib-message-annotations =
{ $search ->
[true] No items with annotations match the current search
*[other] No selected or open items with annotations
[true] Non ci sono elementi con annotazioni che corrispondono alla ricerca corrente
*[other] Nessun elemento con annotazioni selezionato o aperto
}
integration-citationDialog-settings-keepSorted = Mantieni l'ordinamento delle fonti
integration-citationDialog-btn-settings =
@ -63,7 +63,7 @@ integration-citationDialog-btn-type-citation =
integration-citationDialog-btn-type-add-note =
.title = Aggiungi nota
integration-citationDialog-btn-type-annotations =
.title = Add Annotations
.title = Aggiungi annotazioni
integration-citationDialog-btn-accept =
.title = { general-accept }
integration-citationDialog-btn-cancel =
@ -82,7 +82,7 @@ integration-citationDialog-input-citation =
integration-citationDialog-single-input-add-note =
.placeholder = Cerca una nota da inserire nel documento
integration-citationDialog-single-input-annotations =
.placeholder = Search for annotations to insert into the document
.placeholder = Cerca annotazioni da inserire nel documento
integration-citationDialog-aria-item-list =
.aria-description = Usa le frecce su/giù per cambiare la selezione degli elementi. { integration-citationDialog-enter-to-add-item }
integration-citationDialog-aria-item-library =
@ -100,8 +100,8 @@ integration-citationDialog-collapse-section =
integration-citationDialog-bubble-empty = (nessun titolo)
integration-citationDialog-add-to-citation = Aggiungi alla citazione
integration-citationDialog-annotations-filter =
.placeholder = Filter annotations
integration-citationDialog-annotations-empty = Select an item, attachment, or annotation to view annotation details
.placeholder = Filtra annotazioni
integration-citationDialog-annotations-empty = Seleziona un elemento, allegato o annotazione per vedere i dettagli dell'annotazione
integration-prefs-displayAs-label = Mostra citazioni come:
integration-prefs-footnotes =
.label = Note a piè di pagina

View file

@ -6,7 +6,7 @@ preferences-auto-recognize-files =
preferences-file-renaming-title = Rinominazione dei file
preferences-file-renaming-intro = { -app-name } può rinominare automaticamente i file in accordo con i metadati dell'elemento genitore (titolo, autore, ecc.) e mantenerli sincronizzati con eventuali modifiche. I file scaricati sono sempre rinominati in accordo con l'elemento genitore.
preferences-file-renaming-configure-button =
.label = Configure File Renaming…
.label = Configura rinominazione dei file...
preferences-attachment-titles-title = Titoli degli allegati
preferences-attachment-titles-intro = I titoli degli allegati sono <label data-l10n-name="wiki-link">diversi dai nomi dei file</label>. A supporto di certi flussi di lavoro, { -app-name } può mostrare i nomi dei file al posto dei titoli degli allegati nella lista degli elementi.
preferences-attachment-titles-show-filenames =
@ -107,15 +107,15 @@ preferences-sync-reset-restore-to-server-yes = Sostituisci i dati nella bibliote
preferences-account-log-in =
.label = Accedi
preferences-account-waiting-for-login =
.value = Waiting for login…
.value = In attesa dell'accesso…
preferences-account-cancel-button =
.label = { general-cancel }
preferences-account-logged-out-status =
.value = (logged out)
.value = (disconnesso)
preferences-account-email-label =
.value = Email:
preferences-account-switch-accounts =
.label = Switch Accounts…
preferences-account-switch-text = Switching to a different account will remove all { -app-name } data on this computer. Before continuing, make sure all data and files you wish to keep have been synced with the “{ $username }” account or you have a backup of your { -app-name } data directory.
preferences-account-switch-confirmation-text = remove local data
preferences-account-switch-accept = Remove Data and Restart
.label = Cambia account…
preferences-account-switch-text = Cambiare account eliminerà tutti i dati di { -app-name } su questo computer. Prima di continuare, assicurati che tutti i dati e i file che vuoi mantenere siano sincronizzati con l'account “{ $username }” o di avere un backup della cartella dei dati di { -app-name }.
preferences-account-switch-confirmation-text = elimina i dati locali
preferences-account-switch-accept = Rimuovi i dati e riavvia

View file

@ -197,12 +197,12 @@ reader-selected-pages =
}
reader-page-options = Opzioni pagina
reader-read-aloud = Leggi ad alta voce
reader-read-aloud-from-here = Read Aloud from Here
reader-read-aloud-from-here = Leggi ad alta voce da qui
reader-read-aloud-options = Opzioni
reader-read-aloud-skip-back = Indietro
reader-read-aloud-skip-back-sentence = Skip Back by Sentence
reader-read-aloud-skip-back-sentence = Indietro di una frase
reader-read-aloud-skip-ahead = Avanti
reader-read-aloud-skip-ahead-sentence = Skip Ahead by Sentence
reader-read-aloud-skip-ahead-sentence = Avanti di una frase
reader-read-aloud-add-annotation = Annota frase ({ $key1 }/{ $key2 })
reader-read-aloud-play = Riproduci
reader-read-aloud-pause = Pausa

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Precedente
general-next = Successivo
general-learn-more = Approfondisci
general-more-information = Ulteriori informazioni
general-warning = Attenzione
general-type-to-continue = Digita “{ $text }” per continuare.
general-continue = Continua
@ -157,11 +158,11 @@ zotero-toolbar-tabs-scroll-backwards =
.title = Scorri indietro
toolbar-add-attachment =
.tooltiptext = { add-attachment }
recently-read = Recently Read
recently-read = Letti di recente
collections-menu-show-recently-read =
.label = Show { recently-read }
.label = Mostra { recently-read }
item-menu-remove-from-recently-read =
.label = Remove from { recently-read }…
.label = Rimuovi da { recently-read }…
collections-menu-rename-collection =
.label = Rinomina collezione
collections-menu-edit-saved-search =
@ -280,7 +281,7 @@ import-online-wrong-credentials = L'autenticazione in { $targetApp } è fallita.
import-online-blocked-by-plugin = L'importazione non può proseguire se { $plugin } è installato. Si prega di disabilitare questo plugin e riprovare.
import-online-relink-only =
.label = Ricollega le citazioni di Mendeley Desktop
import-online-relink-kb = Ulteriori informazioni
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } non è riuscito a connettersi a { $targetApp }. Si prega di verificare la connessione a Internet e riprovare.
items-table-cell-notes =
.aria-label =
@ -289,9 +290,9 @@ items-table-cell-notes =
[many] { $count } Note
*[other] { $count } Note
}
items-column-added-by = Added By
items-column-modified-by = Modified By
items-column-last-read = Last Read
items-column-added-by = Aggiunto da
items-column-modified-by = Modificato da
items-column-last-read = Ultima lettura
report-error =
.label = Segnala un errore…
rtfScan-wizard =
@ -611,8 +612,8 @@ attachment-preview-placeholder = Nessun allegato da mostrare
attachment-rename-from-parent =
.tooltiptext = Rinominare il file in base ai metadati dell'elemento genitore
account-log-in = Accedi
account-not-logged-in-text = Log in to your Zotero account to sync your data.
account-error-login-session-expired = Your login session has expired. Please try again.
account-not-logged-in-text = Accedi al tuo account Zotero per sincronizzare i dati.
account-error-login-session-expired = La sessione di accesso è scaduta. Riprova.
toggle-preview =
.label =
{ $type ->
@ -725,7 +726,7 @@ search-conditions-dateModified = Data ultima modifica
search-conditions-fulltextContent = Contenuto dell'allegato
search-conditions-programmingLanguage = Linguaggio di programmazione
search-conditions-fileTypeID = Tipo di allegato
search-conditions-lastRead = Attachment Last Read
search-conditions-lastRead = Ultima lettura dell'allegato
search-conditions-annotationText = Testo dell'annotazione
search-conditions-annotationComment = Commento all'annotazione
search-conditions-anyField = Qualsiasi campo

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Previous
general-next = Next
general-learn-more = 詳細情報の表示
general-more-information = さらに詳しく
general-warning = 警告
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Continue
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = More Information
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = ព័ត៌មានបន្ថែម
general-warning = បម្រាម
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Continue
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = ព័ត៌មានបន្ថែម
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = 등
general-previous = 이전
general-next = 다음
general-learn-more = 더 알아보기
general-more-information = 정보 더 보기
general-warning = 경고
general-type-to-continue = Type “{ $text }” to continue.
general-continue = 계속
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = 정보 더 보기
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = ir kt.
general-previous = Ankstesnis
general-next = Tolesnis
general-learn-more = Parodyti išsamiau
general-more-information = Daugiau informacijos
general-warning = Įspėjimas
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Tęsti
@ -279,7 +280,7 @@ import-online-wrong-credentials = Nepavyko prisijungti prie { $targetApp }. Iš
import-online-blocked-by-plugin = Importavimo negalima tęsti, jei veikia { $plugin }. Prašome išjungti šį papildinį, tada bandykite iš naujo.
import-online-relink-only =
.label = Iš naujo susieti Mendeley Desktop citatas
import-online-relink-kb = Daugiau informacijos
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } negali prisijungti { $targetApp }. Prašome patikrinti interneto ryšį ir bandykite vėl.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = гэх мэт.
general-previous = Previous
general-next = Next
general-learn-more = Илүү ихийг мэдэж аваарай
general-more-information = Дэлгэрэнгүй мэдээлэл
general-warning = Анхааруулга
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Үргэлжлүүлэх
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Дэлгэрэнгүй мэдээлэл
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Forrige
general-next = Neste
general-learn-more = Lær mer
general-more-information = Mer informasjon
general-warning = Advarsel
general-type-to-continue = Skriv “{ $text }” for å fortsette.
general-continue = Fortsett
@ -279,7 +280,7 @@ import-online-wrong-credentials = Innlogging til { $targetApp } mislyktes. Vennl
import-online-blocked-by-plugin = Importen kan ikke fortsette med { $plugin } installert. Deaktiver dette programtillegget og prøv på nytt.
import-online-relink-only =
.label = Koble sammen igjen Mendeley Desktop henvisninger
import-online-relink-kb = Mer informasjon
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } kunne ikke koble til { $targetApp }. Kontroller Internett-tilkoblingen din og prøv igjen.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = e.a.
general-previous = Previous
general-next = Next
general-learn-more = Meer info
general-more-information = Meer informatie
general-warning = Waarschuwing
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Doorgaan
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Meer informatie
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = More Information
general-warning = Åtvaring
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Continue
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = More Information
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -1,6 +1,6 @@
file-renaming-settings-window =
.title = Configure File Renaming
file-renaming-settings-library-label = Library:
.title = Konfiguruj zmianę nazw plików
file-renaming-settings-library-label = Biblioteka:
file-renaming-auto-rename-files =
.label = Automatycznie zmień nazwy plików
file-renaming-file-types = Zmień nazwy plików następujących typów:
@ -20,7 +20,7 @@ file-renaming-rename-linked =
.label = Zmień nazwy powiązanych plików
file-renaming-format-title = Format nazwy pliku
file-renaming-format-instructions = Możesz dostosować wzorzec zmiany nazwy plik, który zostanie użyty przez { -app-name } aby zmienić nazwy plików załączników w taki sposób, aby użyte zostały metadane elementu nadrzędnego.
file-renaming-format-instructions-example = For example, "{ $example }" in this template will be replaced with the title of the parent item, truncated at 50 characters.
file-renaming-format-instructions-example = Na przykład “{ $example }” w tym szablonie zostanie zastąpione tytułem elementu nadrzędnego, skróconym do 50 znaków.
file-renaming-format-instructions-more = Zobacz <label data-l10n-name="file-renaming-format-help-link">dokumentację</label>, aby uzyskać więcej informacji.
file-renaming-format-template = Szablon nazwy pliku:
file-renaming-format-preview = Podgląd:
@ -33,13 +33,13 @@ file-renaming-cancel-button =
.label = { general-cancel }
file-renaming-auto-rename-prompt-title = Zmieniono ustawienia nazw plików
file-renaming-auto-rename-prompt-body = Czy chcesz zmienić nazwy istniejących plików w twojej bibliotece, aby zgadzały się z nowymi ustawieniami?
file-renaming-auto-rename-prompt-body-library = Would you like to rename existing files in library "{ $library }" to match the new settings?
file-renaming-auto-rename-prompt-body-library = Czy chcesz zmienić nazwy istniejących plików w bibliotece "{ $library }", aby zgadzały się z nowymi ustawieniami?
file-renaming-auto-rename-prompt-yes = { file-renaming-preview-changes }
file-renaming-auto-rename-prompt-no = Zachowaj istniejące nazwy plików
file-renaming-preview-window =
.title = Zmień nazwy plików
file-renaming-preview-window-loading = Wczytywanie...
file-renaming-preview-window-intro = { -app-name } zmieni nazwy następujących plików w Twojej bibliotece tak, aby odpowiadały nazwom ich elementów nadrzędnych:
file-renaming-preview-window-intro-library = { -app-name } will rename the following files in "{ $library }" to match their parent items:
file-renaming-preview-window-intro-library = { -app-name } zmieni nazwy następujących plików w bibliotece "{ $library }" tak, aby odpowiadały nazwom ich elementów nadrzędnych:
file-renaming-preview-window-renaming = Zmiana nazw...
file-renaming-preview-window-no-files = Wszystkie nazwy plików obecnie odpowiadają elementom nadrzędnym. Nie są wymagane żadne zmiany.

View file

@ -19,7 +19,7 @@ integration-editBibliography-wrapper =
integration-citationDialog = Okno cytowania
integration-citationDialog-section-open = Open Documents ({ $count })
integration-citationDialog-section-selected = Wybrane elementy ({ $count }/{ $total })
integration-citationDialog-section-selectedAnnotations = Selected Annotations
integration-citationDialog-section-selectedAnnotations = Wybrane adnotacje
integration-citationDialog-section-selectedItems = Wybrane elementy
integration-citationDialog-section-cited =
{ $count ->
@ -29,7 +29,7 @@ integration-citationDialog-section-cited =
integration-citationDialog-details-suffix = Przyrostek
integration-citationDialog-details-prefix = Przedrostek
integration-citationDialog-details-suppressAuthor = Pomiń autora
integration-citationDialog-details-includeComments = Include Comments
integration-citationDialog-details-includeComments = Dołącz komentarze
integration-citationDialog-details-remove = { general-remove }
integration-citationDialog-details-done =
.label = { general-done }
@ -60,7 +60,7 @@ integration-citationDialog-btn-type-citation =
integration-citationDialog-btn-type-add-note =
.title = Dodaj notatkę
integration-citationDialog-btn-type-annotations =
.title = Add Annotations
.title = Dodaj adnotacje
integration-citationDialog-btn-accept =
.title = { general-accept }
integration-citationDialog-btn-cancel =
@ -79,7 +79,7 @@ integration-citationDialog-input-citation =
integration-citationDialog-single-input-add-note =
.placeholder = Wyszukaj notatkę, aby wstawić ją do dokumentu
integration-citationDialog-single-input-annotations =
.placeholder = Search for annotations to insert into the document
.placeholder = Wyszukaj adnotację, aby wstawić ją do dokumentu
integration-citationDialog-aria-item-list =
.aria-description = Użyj klawiszy strzałki w górę/w dół, aby zmienić wybór elementu. { integration-citationDialog-enter-to-add-item }
integration-citationDialog-aria-item-library =
@ -97,7 +97,7 @@ integration-citationDialog-collapse-section =
integration-citationDialog-bubble-empty = (brak tytułu)
integration-citationDialog-add-to-citation = Dodaj do cytowania
integration-citationDialog-annotations-filter =
.placeholder = Filter annotations
.placeholder = Filtruj adnotacje
integration-citationDialog-annotations-empty = Select an item, attachment, or annotation to view annotation details
integration-prefs-displayAs-label = Wyświetl cytowania jako:
integration-prefs-footnotes =

View file

@ -6,7 +6,7 @@ preferences-auto-recognize-files =
preferences-file-renaming-title = Zmiana nazw plików
preferences-file-renaming-intro = { -app-name } może automatycznie zmienić nazwy plików na podstawie szczegółów elementu nadrzędnego (tytuł, autor, etc.) i utrzymać nazwy plików zsynchronizowane podczas dokonywania przez Ciebie zmian. Pobrane pliki są zawsze początkowo nazywane na podstawie elementu nadrzędnego.
preferences-file-renaming-configure-button =
.label = Configure File Renaming…
.label = Konfiguruj zmianę nazw plików...
preferences-attachment-titles-title = Nazwy załączników
preferences-attachment-titles-intro = Nazwy załączników są <label data-l10n-name="wiki-link">różne od nazw plików</label>. Aby wspierać różne style pracy, { -app-name } może pokazywać nazwy plików zamiast nazw załączników na liście elementów.
preferences-attachment-titles-show-filenames =
@ -108,15 +108,15 @@ preferences-sync-reset-restore-to-server-yes = Zamień dane w zdalnej bibliotece
preferences-account-log-in =
.label = Zaloguj się
preferences-account-waiting-for-login =
.value = Waiting for login…
.value = Czekanie na zalogowanie...
preferences-account-cancel-button =
.label = { general-cancel }
preferences-account-logged-out-status =
.value = (logged out)
.value = (wylogowano)
preferences-account-email-label =
.value = Email:
preferences-account-switch-accounts =
.label = Switch Accounts…
.label = Przełącz konta…
preferences-account-switch-text = Switching to a different account will remove all { -app-name } data on this computer. Before continuing, make sure all data and files you wish to keep have been synced with the “{ $username }” account or you have a backup of your { -app-name } data directory.
preferences-account-switch-confirmation-text = remove local data
preferences-account-switch-accept = Remove Data and Restart
preferences-account-switch-confirmation-text = usuń dane lokalne
preferences-account-switch-accept = Usuń dane i uruchom ponownie

View file

@ -230,7 +230,7 @@ reader-read-aloud-quota-exceeded-message =
reader-read-aloud-error = { general-error }
reader-read-aloud-error-unknown = Wystąpił nieznany błąd.
reader-read-aloud-error-connection = Nie można się połączyć z usługą Read Aloud. Sprawdź swoje połączenie internetowe.
reader-read-aloud-error-daily-limit-exceeded = You have exceeded your daily limit for { -app-name } Voices.
reader-read-aloud-error-daily-limit-exceeded = Osiągnięto twój dzienny limit dla głosów { -app-name }.
reader-read-aloud-retry = Ponów
reader-read-aloud-first-run-title = Wybierz swój preferowany głos Read Aloud:
reader-read-aloud-first-run-voice-tier-local-bullet-os-provided = Głosy dostarczone przez Twój system operacyjny
@ -252,9 +252,9 @@ reader-read-aloud-first-run-voice-tier-premium-bullet-multilingual = Wsparcie wi
reader-read-aloud-first-run-voice-tier-premium-bullet-external-processing = Source text is processed by external text-to-speech providers
reader-read-aloud-first-run-voice-tier-premium-bullet-subscription-minutes = { -subscription-name } plans include monthly Premium Voice minutes
reader-read-aloud-first-run-voice-tier-premium-bullet-beta-credits = Request credits for additional minutes during beta
reader-read-aloud-sample-text = I am the local voice { $name }
reader-read-aloud-sample-text = Jestem głosem lokalnym { $name }
reader-read-aloud-voices-none-available = Brak dostępnych głosów
reader-read-aloud-first-run-no-voices-for-language = { $tier } Voices do not support { $language }.
reader-read-aloud-first-run-no-voices-for-language = { $tier } Głosy nie obsługują { $language }.
reader-read-aloud-region = Region
reader-read-aloud-region-auto = Automatycznie
reader-read-aloud-annotation-popup-move = Move annotation by sentence

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Poprzedni
general-next = Następny
general-learn-more = Dowiedz się więcej
general-more-information = Więcej informacji
general-warning = Ostrzeżenie
general-type-to-continue = Wpisz “{ $text }”, aby kontynuować.
general-continue = Dalej
@ -158,11 +159,11 @@ zotero-toolbar-tabs-scroll-backwards =
.title = Przewiń wstecz
toolbar-add-attachment =
.tooltiptext = { add-attachment }
recently-read = Recently Read
recently-read = Ostatnio czytane
collections-menu-show-recently-read =
.label = Show { recently-read }
.label = Pokaż { recently-read }
item-menu-remove-from-recently-read =
.label = Remove from { recently-read }…
.label = Usuń z { recently-read }…
collections-menu-rename-collection =
.label = Zmień nazwę kolekcji
collections-menu-edit-saved-search =
@ -281,7 +282,7 @@ import-online-wrong-credentials = Logowanie do { $targetApp } nie powiodło się
import-online-blocked-by-plugin = Importowanie nie może być kontynuowane z zainstalowaną wtyczką { $plugin }. Proszę, wyłącz tę wtyczkę i spróbuj ponownie.
import-online-relink-only =
.label = Zlinkuj ponownie cytowania Mendeley Desktop
import-online-relink-kb = Więcej informacji
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } nie może się połączyć z { $targetApp }. Proszę, sprawdź swoje połączenie internetowe i spróbuj ponownie.
items-table-cell-notes =
.aria-label =
@ -291,9 +292,9 @@ items-table-cell-notes =
[many] { $count } notatek
*[other] { $count } notatek
}
items-column-added-by = Added By
items-column-modified-by = Modified By
items-column-last-read = Last Read
items-column-added-by = Dodany przez
items-column-modified-by = Zmodyfikowany przez
items-column-last-read = Ostatnio czytany
report-error =
.label = Zgłoś błąd...
rtfScan-wizard =
@ -618,8 +619,8 @@ attachment-preview-placeholder = Brak załącznika do pokazania w podglądzie
attachment-rename-from-parent =
.tooltiptext = Zmień nazwę pliku tak, aby odpowiadał elementowi nadrzędnemu
account-log-in = Zaloguj się
account-not-logged-in-text = Log in to your Zotero account to sync your data.
account-error-login-session-expired = Your login session has expired. Please try again.
account-not-logged-in-text = Zaloguj się do swojego konta Zotero, aby zsynchronizować swoje dane.
account-error-login-session-expired = Twoja sesja logowania wygasła. Proszę spróbuj ponownie.
toggle-preview =
.label =
{ $type ->
@ -736,7 +737,7 @@ search-conditions-dateModified = Data modyfikacji
search-conditions-fulltextContent = Zawartość załącznika
search-conditions-programmingLanguage = Język programowania
search-conditions-fileTypeID = Typ pliku załącznika
search-conditions-lastRead = Attachment Last Read
search-conditions-lastRead = Ostatnio czytany załącznik
search-conditions-annotationText = Tekst adnotacji
search-conditions-annotationComment = Komentarz adnotacji
search-conditions-anyField = Dowolne pole
@ -806,6 +807,6 @@ menu-normalize-attachment-titles =
normalize-attachment-titles-title = Normalizuj nazwy załączników
normalize-attachment-titles-text = { -app-name } automatycznie zmienia nazwy plików na dysku z użyciem metadanych elementu nadrzędnego, ale używa osobnych, prostszych nazw jak “Full Text PDF”, “Preprint PDF”, or “PDF” dla głównych załączników, aby utrzymać bardziej klarowną listę elementów i zapobiec duplikowaniu informacji.W starszych wersjach { -app-name }, podobnie jak używając różnych wtyczek, nazwy plików załączników mogą być niepotrzebnie zmieniane, aby odpowiadały nazwom plików.Czy chcesz zaktualizować wybrane załączniki, aby użyć ich prostszych nazw? Zostaną zmienione tylko główne załączniki z nazwami, które odpowiadają nazwie pliku.
banner-close-button =
.aria-label = Dismiss notification
.aria-label = Odrzuć powiadomienie
plugins-blocked-plugin =
.message = Ta wtyczka została wyłączona przez { -app-name }.

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Anterior
general-next = Próximo
general-learn-more = Saber Mais
general-more-information = Mais informações
general-warning = Aviso
general-type-to-continue = Digite “{ $text }” para continuar.
general-continue = Continuar
@ -280,7 +281,7 @@ import-online-wrong-credentials = Login para { $targetApp } falhou. Por favor, r
import-online-blocked-by-plugin = A importação não pode continuar com o { $plugin } instalado. Por favor, desabilite a extensão e tente novamente.
import-online-relink-only =
.label = Religar citações do Mendeley Desktop
import-online-relink-kb = Mais informações
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } não conseguiu se conectar ao { $targetApp }. Por favor, verifique sua conexão com a internet e tente novamente.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Anterior
general-next = Seguinte
general-learn-more = Saber Mais
general-more-information = Mais Informação
general-warning = Aviso
general-type-to-continue = Digite “{ $text }” para continuar.
general-continue = Continuar
@ -280,7 +281,7 @@ import-online-wrong-credentials = Login para { $targetApp } falhou. Por favor, r
import-online-blocked-by-plugin = A importação não pode continuar com o { $plugin } instalado. Por favor, desabilite a extensão e tente novamente.
import-online-relink-only =
.label = Religar citações do Mendeley Desktop
import-online-relink-kb = Mais Informação
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } não conseguiu se conectar ao { $targetApp }. Por favor, verifique sua conexão com a internet e tente novamente.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Anterior
general-next = Următoarea
general-learn-more = Învață mai multe
general-more-information = Mai multe informații
general-warning = Avertisment
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Continuă
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Mai multe informații
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = и др.
general-previous = Предыдущий
general-next = Следующий
general-learn-more = Узнать больше
general-more-information = Дополнительные сведения
general-warning = Внимание
general-type-to-continue = Введите “{ $text }”, чтобы продолжить.
general-continue = Продолжить
@ -281,7 +282,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Заменить ссылки на цитирования из Mendeley Desktop
import-online-relink-kb = Дополнительные сведения
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } не смог подсоединиться к { $targetApp }. Пожалуйста, проверьте своё подключение к интернету и попробуйте снова.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = Viac informácií
general-warning = Upozornenie
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Pokračovať
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Viac informácií
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = idr.
general-previous = Nazaj
general-next = Naprej
general-learn-more = Več o tem
general-more-information = Podrobnosti
general-warning = Opozorilo
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Nadaljuj
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Ponovno poveži citate Mendeley Desktop
import-online-relink-kb = Podrobnosti
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = и сар.
general-previous = Претходно
general-next = Следеће
general-learn-more = Сазнајте више
general-more-information = Више података
general-warning = Упозорење
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Настави
@ -279,7 +280,7 @@ import-online-wrong-credentials = Није успела пријава на { $t
import-online-blocked-by-plugin = Не можете да наставите увоз док је покренут прикључак { $plugin }. Искључите овај прикључак и покушајте поново.
import-online-relink-only =
.label = Поново повежи цитате из Мендељејева
import-online-relink-kb = Више података
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } не може да се повеже на { $targetApp }. Проверите везу са интернетом и покушајте поново.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = m. fl.
general-previous = Föregående
general-next = Nästa
general-learn-more = Läs mer
general-more-information = Mer information
general-warning = Varning
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Fortsätt
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Mer information
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = மற்றும் பலர்.
general-previous = முந்தையது
general-next = அடுத்தது
general-learn-more = மேலும் அறிக
general-more-information = மேலும் செய்தி
general-warning = முன்னறிவிப்பு
general-type-to-continue = தொடர “{ $text }” எனத் தட்டச்சு செய்.
general-continue = தொடரவும்
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = மேலும் செய்தி
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = More Information
general-warning = คำเตือน
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Continue
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = More Information
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = vd.
general-previous = Önceki
general-next = Sonraki
general-learn-more = Daha Öğren
general-more-information = Daha Fazla Bilgi
general-warning = Uyarı
general-type-to-continue = Devam etmek için “{ $text }” yazın.
general-continue = Devam et
@ -279,7 +280,7 @@ import-online-wrong-credentials = { $targetApp } için oturum açılamadı. Lüt
import-online-blocked-by-plugin = { $plugin } kuruluyken içeri aktarma işlemi sürdürülemez. Lütfen bu eklentiyi devre dışı bırakın ve yeniden deneyin.
import-online-relink-only =
.label = Mendeley Desktop alıntılarını yeniden bağlantıla
import-online-relink-kb = Daha Fazla Bilgi
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name }, { $targetApp } uygulamasına bağlanamadı. Lütfen internet bağlantınızı kontrol edip tekrar deneyin.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = Додаткова інформація
general-warning = Попередження
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Продовжити
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = Додаткова інформація
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = et al.
general-previous = Previous
general-next = Next
general-learn-more = Learn More
general-more-information = More Information
general-warning = Cảnh báo
general-type-to-continue = Type “{ $text }” to continue.
general-continue = Continue
@ -279,7 +280,7 @@ import-online-wrong-credentials = Login to { $targetApp } failed. Please re-ente
import-online-blocked-by-plugin = The import cannot continue with { $plugin } installed. Please disable this plugin and try again.
import-online-relink-only =
.label = Relink Mendeley Desktop citations
import-online-relink-kb = More Information
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } could not connect to { $targetApp }. Please check your internet connection and try again.
items-table-cell-notes =
.aria-label =

View file

@ -4,7 +4,7 @@ preferences-appearance-title = 外观和语言
preferences-auto-recognize-files =
.label = 自动检索 PDF 和电子书的元数据
preferences-file-renaming-title = 文件重命名
preferences-file-renaming-intro = { -app-name } 可以根据上级条目的元数据(如标题、作者等)自动重命名文件,并在你进行更改时保持文件名同步。下载的文件始终会根据父项进行初始命名。
preferences-file-renaming-intro = { -app-name } 可以根据上级条目的元数据(如标题、作者等)自动重命名文件,并在你进行更改时保持文件名同步。下载的文件始终会根据上级条目进行初始命名。
preferences-file-renaming-configure-button =
.label = 配置文件重命名…
preferences-attachment-titles-title = 附件标题
@ -111,7 +111,7 @@ preferences-account-cancel-button =
preferences-account-logged-out-status =
.value = (已退出登录)
preferences-account-email-label =
.value = 邮箱:
.value = 邮箱:
preferences-account-switch-accounts =
.label = 切换账户…
preferences-account-switch-text = 切换到其他账户将删除此计算机中所有的 { -app-name } 数据。在继续之前,请确保您想要保留的所有数据和文件都已与 “{ $username }” 账户同步,或者您已经备份 { -app-name } 数据目录。

View file

@ -59,6 +59,7 @@ general-et-al = 等
general-previous = 前一页
general-next = 下一步
general-learn-more = 了解更多
general-more-information = 更多信息
general-warning = 警告
general-type-to-continue = 输入 “{ $text }” 以继续
general-continue = 继续
@ -278,7 +279,7 @@ import-online-wrong-credentials = 登录 { $targetApp } 失败。请重新输入
import-online-blocked-by-plugin = 安装了 { $plugin } 后导入无法继续。请禁用此插件并重试。
import-online-relink-only =
.label = 重新链接 Mendeley 桌面程序参考文献
import-online-relink-kb = 更多信息
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } 无法连接到 { $targetApp }。请检查您的网络连接并重试。
items-table-cell-notes =
.aria-label =

View file

@ -59,6 +59,7 @@ general-et-al = …等
general-previous = 上一步
general-next = 下一步
general-learn-more = 了解更多
general-more-information = 更多資訊
general-warning = 警告
general-type-to-continue = Type “{ $text }” to continue.
general-continue = 繼續
@ -279,7 +280,7 @@ import-online-wrong-credentials = 登入 { $targetApp } 失敗。請重新輸入
import-online-blocked-by-plugin = 在 { $plugin } 裝著的時候無法繼續匯入,請停用這個附加元件,然後再試一次。
import-online-relink-only =
.label = 重新連結Mendeley桌面應用程式引文
import-online-relink-kb = 更多資訊
import-online-relink-kb = { general-more-information }
import-online-connection-error = { -app-name } 無法連結到 { $targetApp }。請檢查您的網路連線後再試一次。
items-table-cell-notes =
.aria-label =

View file

@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="link">
<path id="Vector" d="M12.5 13H8.5C7.57174 13 6.6815 12.6313 6.02513 11.9749C5.36875 11.3185 5 10.4283 5 9.5C5 8.57174 5.36875 7.6815 6.02513 7.02513C6.6815 6.36875 7.57174 6 8.5 6H8.908C9.03111 6.32197 9.03111 6.67803 8.908 7H8.5C7.83696 7 7.20107 7.26339 6.73223 7.73223C6.26339 8.20107 6 8.83696 6 9.5C6 10.163 6.26339 10.7989 6.73223 11.2678C7.20107 11.7366 7.83696 12 8.5 12H12.5C13.163 12 13.7989 11.7366 14.2678 11.2678C14.7366 10.7989 15 10.163 15 9.5C15 8.83696 14.7366 8.20107 14.2678 7.73223C13.7989 7.26339 13.163 7 12.5 7H11.953C11.9778 6.83432 11.9935 6.6674 12 6.5C11.9935 6.3326 11.9778 6.16568 11.953 6H12.5C13.4283 6 14.3185 6.36875 14.9749 7.02513C15.6313 7.6815 16 8.57174 16 9.5C16 10.4283 15.6313 11.3185 14.9749 11.9749C14.3185 12.6313 13.4283 13 12.5 13ZM0 6.5C0 7.42826 0.368749 8.3185 1.02513 8.97487C1.6815 9.63125 2.57174 10 3.5 10H4.047C4.02219 9.83432 4.0065 9.6674 4 9.5C4.0065 9.3326 4.02219 9.16568 4.047 9H3.5C2.83696 9 2.20107 8.73661 1.73223 8.26777C1.26339 7.79893 1 7.16304 1 6.5C1 5.83696 1.26339 5.20107 1.73223 4.73223C2.20107 4.26339 2.83696 4 3.5 4H7.5C8.16304 4 8.79893 4.26339 9.26777 4.73223C9.73661 5.20107 10 5.83696 10 6.5C10 7.16304 9.73661 7.79893 9.26777 8.26777C8.79893 8.73661 8.16304 9 7.5 9H7.092C6.96889 9.32197 6.96889 9.67803 7.092 10H7.5C8.42826 10 9.3185 9.63125 9.97487 8.97487C10.6313 8.3185 11 7.42826 11 6.5C11 5.57174 10.6313 4.6815 9.97487 4.02513C9.3185 3.36875 8.42826 3 7.5 3H3.5C2.57174 3 1.6815 3.36875 1.02513 4.02513C0.368749 4.6815 0 5.57174 0 6.5Z" fill="context-fill"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 10C14.4183 10 18 13.5817 18 18V19H2V18C2 13.5817 5.58172 10 10 10ZM10 11.25C6.35579 11.25 3.3874 14.1379 3.25586 17.75H16.7441C16.6126 14.1379 13.6442 11.25 10 11.25ZM10 1C12.2091 1 14 2.79086 14 5C14 7.20914 12.2091 9 10 9C7.79086 9 6 7.20914 6 5C6 2.79086 7.79086 1 10 1ZM10 2.25C8.48122 2.25 7.25 3.48122 7.25 5C7.25 6.51878 8.48122 7.75 10 7.75C11.5188 7.75 12.75 6.51878 12.75 5C12.75 3.48122 11.5188 2.25 10 2.25Z" fill="context-fill"/>
</svg>

After

Width:  |  Height:  |  Size: 559 B

View file

@ -68,6 +68,9 @@ pref("extensions.zotero.feeds.defaultCleanupUnreadAfter", 30);
pref("extensions.zotero.backup.numBackups", 2);
pref("extensions.zotero.backup.interval", 1440);
pref("extensions.zotero.vacuum.interval", 14); // days
pref("extensions.zotero.vacuum.freelistThreshold", 10); // percentage of free pages to trigger
pref("extensions.zotero.lastCreatorFieldMode",0);
pref("extensions.zotero.lastAbstractExpand", true);
pref("extensions.zotero.lastRenameAssociatedFile", false);

2
reader

@ -1 +1 @@
Subproject commit 7732d4b99967901b51a61ed9deeb4d7062634f37
Subproject commit a3ab660769013b8d26590ade93f942cc8fdd4b3e

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