commit eb7b3010732367d90630ba32ee23707d63820d6a
parent d69ffd2ad8236b6082da622a06bc84bec59fb0c5
Author: gracile-fr <gracile@gmx.com>
Date: Mon, 4 Mar 2013 03:44:14 +0100
Localizes most of the strings marked "todo: localize"
Diffstat:
15 files changed, 110 insertions(+), 95 deletions(-)
diff --git a/chrome/content/zotero/about.xul b/chrome/content/zotero/about.xul
@@ -51,7 +51,7 @@
<label class="zotero-text-link" href="http://www.zotero.org/support/credits_and_acknowledgments" value="&zotero.moreCreditsAndAcknowledgements;"/>
</vbox>
<vbox id="column2">
- <label class="subhead" value="Citation & Bibliography Processing"/>
+ <label class="subhead" value="&zotero.citationProcessing;"/>
<vbox class="subcontent">
<label class="zotero-text-link" href="http://citationstyles.org/" value="Citation Style Language"/>
<label class="zotero-text-link" href="http://bitbucket.org/fbennett/citeproc-js/" value="citeproc-js (Frank Bennett)"/>
diff --git a/chrome/content/zotero/bindings/attachmentbox.xml b/chrome/content/zotero/bindings/attachmentbox.xml
@@ -214,7 +214,8 @@
// Access date
if (this.displayAccessed) {
- this._id("accessed-label").value = Zotero.getString('itemFields.accessDate')+":";
+ this._id("accessed-label").value = Zotero.getString('itemFields.accessDate')
+ + Zotero.getString('punctuation.colon');
this._id("accessed").value = Zotero.Date.sqlToDate(
this.item.getField('accessDate'), true
).toLocaleString();
@@ -233,12 +234,11 @@
if (this.item.attachmentLinkMode
!= Zotero.Attachments.LINK_MODE_LINKED_URL
&& this.displayFileName) {
- // TODO: localize
var fileName = this.item.getFilename();
if (fileName) {
- // TODO: localize
- this._id("fileName-label").value = "Filename:";
+ this._id("fileName-label").value = Zotero.getString('pane.item.attachments.filename')
+ + Zotero.getString('punctuation.colon');
this._id("fileName").value = fileName;
fileNameRow.hidden = false;
}
@@ -255,8 +255,8 @@
var pages = Zotero.Fulltext.getPages(this.item.id);
var pages = pages ? pages.total : null;
if (pages) {
- // TODO: localize colon
- this._id("pages-label").value = Zotero.getString('itemFields.pages') + ':';
+ this._id("pages-label").value = Zotero.getString('itemFields.pages')
+ + Zotero.getString('punctuation.colon');
this._id("pages").value = pages;
pagesRow.hidden = false;
}
@@ -269,7 +269,8 @@
}
if (this.displayDateModified) {
- this._id("dateModified-label").value = Zotero.getString('itemFields.dateModified')+':';
+ this._id("dateModified-label").value = Zotero.getString('itemFields.dateModified')
+ + Zotero.getString('punctuation.colon');
var mtime = this.item.attachmentModificationTime;
if (mtime) {
this._id("dateModified").value = new Date(mtime).toLocaleString();
@@ -476,7 +477,8 @@
str = 'general.yes';
break;
}
- this._id("index-status-label").value = Zotero.getString('fulltext.indexState.indexed') + ':';
+ this._id("index-status-label").value = Zotero.getString('fulltext.indexState.indexed')
+ + Zotero.getString('punctuation.colon');
indexStatus.value = Zotero.getString(str);
// Reindex button tooltip (string stored in zotero.properties)
diff --git a/chrome/content/zotero/bindings/merge.xml b/chrome/content/zotero/bindings/merge.xml
@@ -358,7 +358,7 @@
case 'attachment':
case 'note':
case 'storagefile':
- objbox.buttonCaption = 'Choose this version';
+ objbox.buttonCaption = Zotero.getString('sync.conflict.chooseThisVersion');
break;
}
@@ -478,7 +478,7 @@
<xul:box id="object-placeholder"/>
<xul:hbox id="delete-box" hidden="true" flex="1"
onclick="document.getBindingParent(this).chooseObj(this)">
- <xul:label value="Deleted"/> <!-- TODO: localize -->
+ <xul:label value="zotero.merge.deleted"/>
</xul:hbox>
</xul:groupbox>
</content>
diff --git a/chrome/content/zotero/bindings/noteeditor.xml b/chrome/content/zotero/bindings/noteeditor.xml
@@ -410,14 +410,14 @@
<method name="updateTagsSummary">
<body>
<![CDATA[
- // TODO: localize
var v = this.id('tags').summary;
if (!v || v == "") {
v = "[" + Zotero.getString('pane.item.noteEditor.clickHere') + "]";
}
- this.id('tagsLabel').value = Zotero.getString('pane.item.tags');
+ this.id('tagsLabel').value = Zotero.getString('itemFields.tags')
+ + Zotero.getString('punctuation.colon');
this.id('tagsClick').value = v;
]]>
</body>
@@ -446,7 +446,8 @@
v = "[" + Zotero.getString('pane.item.noteEditor.clickHere') + "]";
}
- this.id('seeAlsoLabel').value = Zotero.getString('pane.item.related');
+ this.id('seeAlsoLabel').value = Zotero.getString('itemFields.related')
+ + Zotero.getString('punctuation.colon');
this.id('seeAlsoClick').value = v;
]]>
</body>
diff --git a/chrome/content/zotero/duplicatesMerge.js b/chrome/content/zotero/duplicatesMerge.js
@@ -44,8 +44,7 @@ var Zotero_Duplicates_Pane = new function () {
}
if (!item.isRegularItem() || [1,14].indexOf(item.itemTypeID) != -1) {
- // TODO: localize
- var msg = "Only top-level full items can be merged.";
+ var msg = Zotero.getString('pane.item.duplicates.onlyTopLevel');
ZoteroPane_Local.setItemPaneMessage(msg);
return false;
}
@@ -57,8 +56,7 @@ var Zotero_Duplicates_Pane = new function () {
var msg = Zotero.getString('pane.item.selected.multiple', items.length);
}
else {
- // TODO: localize
- var msg = "Merged items must all be of the same item type.";
+ var msg = Zotero.getString('pane.item.duplicates.onlySameItemType');
}
ZoteroPane_Local.setItemPaneMessage(msg);
return false;
@@ -112,7 +110,7 @@ var Zotero_Duplicates_Pane = new function () {
}, 0);
}
- button.label = "Merge " + (otherItems.length + 1) + " items";
+ button.label = Zotero.getString('pane.item.duplicates.mergeItems', (otherItems.length + 1));
itembox.hiddenFields = diff ? [] : ['dateAdded', 'dateModified'];
fieldSelect.hidden = !diff;
diff --git a/chrome/content/zotero/merge.js b/chrome/content/zotero/merge.js
@@ -266,15 +266,15 @@ var Zotero_Merge_Window = new function () {
function _setInstructionsString(buttonName) {
switch (_mergeGroup.type) {
case 'storagefile':
- var msg = "The following file has been changed in multiple locations.";
+ var msg = Zotero.getString('sync.conflict.fileChanged');
break;
default:
- // TODO: localize and maybe not always call it 'item'
- var msg = "The following item has been changed in multiple locations.";
+ // TODO: cf. localization: maybe not always call it 'item'
+ var msg = Zotero.getString('sync.conflict.itemChanged');
}
- msg += " Choose the version you would like to keep, and then click " + buttonName + ".";
+ msg += Zotero.getString('sync.conflict.chooseVersionToKeep', buttonName);
document.getElementById('zotero-merge-instructions').value = msg;
}
diff --git a/chrome/content/zotero/merge.xul b/chrome/content/zotero/merge.xul
@@ -28,7 +28,7 @@
<?xml-stylesheet href="chrome://zotero/skin/zotero.css" type="text/css"?>
<?xml-stylesheet href="chrome://zotero/skin/merge.css" type="text/css"?>
-<!-- <!DOCTYPE window SYSTEM "chrome://zotero/locale/merge.dtd"> -->
+<!DOCTYPE window SYSTEM "chrome://zotero/locale/merge.dtd">
<wizard
id="zotero-merge-window"
@@ -44,13 +44,13 @@
<wizardpage onpageshow="Zotero_Merge_Window.init()"
onpagerewound="Zotero_Merge_Window.onBack(); return false"
onpageadvanced="return Zotero_Merge_Window.onNext()"
- label="Conflict Resolution">
+ label="&zotero.merge.title;">
<description id="zotero-merge-instructions"/>
<zoteromergegroup flex="1"/>
<separator class="thin"/>
<hbox id="zotero-step-count">
<label id="zotero-merge-num-objects"/>
- <label value="of"/>
+ <label value="&zotero.merge.of;"/>
<label id="zotero-merge-total-objects"/>
</hbox>
</wizardpage>
diff --git a/chrome/content/zotero/xpcom/file.js b/chrome/content/zotero/xpcom/file.js
@@ -441,58 +441,49 @@ Zotero.File = new function(){
}
- // TODO: localize
this.checkFileAccessError = function (e, file, operation) {
if (file) {
- var str = "The file '" + file.path + "' ";
+ var str = Zotero.getString('file.accessError.theFile', file.path);
}
else {
- var str = "A file ";
+ var str = Zotero.getString('file.accessError.aFile');
}
switch (operation) {
case 'create':
- var opWord = "created";
+ var opWord = Zotero.getString('file.accessError.created');
break;
case 'update':
- var opWord = "updated";
+ var opWord = Zotero.getString('file.accessError.updated');
break;
case 'delete':
- var opWord = "deleted";
+ var opWord = Zotero.getString('file.accessError.deleted');
break;
default:
- var opWord = "updated";
+ var opWord = Zotero.getString('file.accessError.updated');
}
if (e.name == 'NS_ERROR_FILE_ACCESS_DENIED' || e.name == 'NS_ERROR_FILE_IS_LOCKED'
// Shows up on some Windows systems
|| e.name == 'NS_ERROR_FAILURE') {
Zotero.debug(e);
- // TODO: localize
- str = str + "cannot be " + opWord + ".";
- var checkFileWindows = "Check that the file is not currently "
- + "in use and that it is not marked as read-only. To check "
- + "all files in your Zotero data directory, right-click on "
- + "the 'zotero' directory, click Properties, clear "
- + "the Read-Only checkbox, and apply the change to all folders "
- + "and files in the directory.";
- var checkFileOther = "Check that the file is not currently "
- + "in use and that its permissions allow write access.";
+ str = str + Zotero.getString('file.accessError.cannotBe') + opWord + ".";
+ var checkFileWindows = Zotero.getString('file.accessError.message.windows');
+ var checkFileOther = Zotero.getString('file.accessError.message.other');
var msg = str + " "
+ (Zotero.isWin ? checkFileWindows : checkFileOther)
+ "\n\n"
- + "Restarting your computer or disabling security "
- + "software may also help.";
+ + Zotero.getString('file.accessError.restart');
if (operation == 'create') {
var e = new Zotero.Error(
msg,
0,
{
- dialogButtonText: "Show Parent Directory",
+ dialogButtonText: Zotero.getString('file.accessError.showParentDir'),
dialogButtonCallback: function () {
try {
file.parent.QueryInterface(Components.interfaces.nsILocalFile).reveal();
@@ -510,7 +501,7 @@ Zotero.File = new function(){
msg,
0,
{
- dialogButtonText: "Show File",
+ dialogButtonText: Zotero.getString('locate.showFile.label'),
dialogButtonCallback: function () {
try {
file.QueryInterface(Components.interfaces.nsILocalFile);
diff --git a/chrome/content/zotero/xpcom/storage.js b/chrome/content/zotero/xpcom/storage.js
@@ -53,9 +53,8 @@ Zotero.Sync.Storage = new function () {
this.ERROR_FILE_MISSING_AFTER_UPLOAD = -16;
// TEMP
- // TODO: localize
- this.__defineGetter__("defaultError", function () "A file sync error occurred. Please try syncing again.\n\nIf you receive this message repeatedly, restart " + Zotero.appName + " and/or your computer and try again. If you continue to receive the message, submit an error report and post the Report ID to a new thread in the Zotero Forums.");
- this.__defineGetter__("defaultErrorRestart", function () "A file sync error occurred. Please restart " + Zotero.appName + " and/or your computer and try syncing again.\n\nIf you receive this message repeatedly, submit an error report and post the Report ID to a new thread in the Zotero Forums.");
+ this.__defineGetter__("defaultError", function () Zotero.getString('sync.storage.error.default', Zotero.appName));
+ this.__defineGetter__("defaultErrorRestart", function () Zotero.getString('sync.storage.error.defaultRestart', Zotero.appName));
//
// Public properties
@@ -1189,8 +1188,7 @@ Zotero.Sync.Storage = new function () {
// but log a warning and skip the file
else if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
Zotero.debug(e);
- var msg = "Error creating file '" + destFile.leafName + "'\n\n"
- + "See http://www.zotero.org/support/kb/encrypted_filenames for more information.";
+ var msg = Zotero.getString('sync.storage.error.encryptedFilenames', destFile.leafName);
Components.utils.reportError(msg);
return;
}
@@ -1394,9 +1392,7 @@ Zotero.Sync.Storage = new function () {
// can result in a lower limit -- not much we can do about this,
// but log a warning and skip the file
else if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
- // TODO: localize
- var msg = "Error creating file '" + destFile.leafName + "'. "
- + "See http://www.zotero.org/support/kb/encrypted_filenames for more information.";
+ var msg = Zotero.getString('sync.storage.error.encryptedFilenames', destFile.leafName);
Components.utils.reportError(msg);
continue;
}
@@ -1460,9 +1456,7 @@ Zotero.Sync.Storage = new function () {
// See above
if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
Zotero.debug(e);
- // TODO: localize
- var msg = "Error creating file '" + destFile.leafName + "'. "
- + "See http://www.zotero.org/support/kb/encrypted_filenames for more information.";
+ var msg = Zotero.getString('sync.storage.error.encryptedFilenames', destFile.leafName);
Components.utils.reportError(msg);
continue;
}
diff --git a/chrome/content/zotero/xpcom/storage/webdav.js b/chrome/content/zotero/xpcom/storage/webdav.js
@@ -26,7 +26,9 @@
Zotero.Sync.Storage.WebDAV = (function () {
// TEMP
- // TODO: localize
+ //This doesn't work (Localized string not available for sync.storage...):
+ //var _defaultError = Zotero.getString('sync.storage.error.webdav.default');
+ //var _defaultErrorRestart = Zotero.getString('sync.storage.error.webdav.defaultRestart', Zotero.appName);
var _defaultError = "A WebDAV file sync error occurred. Please try syncing again.\n\nIf you receive this message repeatedly, check your WebDAV server settings in the Sync pane of the Zotero preferences.";
var _defaultErrorRestart = "A WebDAV file sync error occurred. Please restart " + Zotero.appName + " and try syncing again.\n\nIf you receive this message repeatedly, check your WebDAV server settings in the Sync pane of the Zotero preferences.";
@@ -1409,23 +1411,15 @@ Zotero.Sync.Storage.WebDAV = (function () {
return false;
case Zotero.Sync.Storage.ERROR_FILE_MISSING_AFTER_UPLOAD:
- // TODO: localize
var errorTitle = Zotero.getString("general.warning");
- var errorMessage = "A potential problem was found with your WebDAV server.\n\n"
- + "An uploaded file was not immediately available for download. There may be a "
- + "short delay between when you upload files and when they become available, "
- + "particularly if you are using a cloud storage service.\n\n"
- + "If Zotero file syncing appears to work normally, "
- + "you can ignore this message. "
- + "If you have trouble, please post to the Zotero Forums.";
+ var errorMessage = Zotero.getString('sync.storage.error.webdav.fileMissingAfterUpload');
Zotero.Prefs.set("sync.storage.verified", true);
break;
case Zotero.Sync.Storage.ERROR_SERVER_ERROR:
- // TODO: localize
- var errorTitle = "WebDAV Server Configuration Error";
- var errorMessage = "Your WebDAV server returned an internal error."
- + "\n\n" + Zotero.getString('sync.storage.error.checkFileSyncSettings');
+ var errorTitle = Zotero.getString('sync.storage.error.webdav.serverConfig.title');
+ var errorMessage = Zotero.getString('sync.storage.error.webdav.serverConfig')
+ + Zotero.getString('sync.storage.error.checkFileSyncSettings');
break;
case Zotero.Sync.Storage.ERROR_UNKNOWN:
diff --git a/chrome/content/zotero/xpcom/storage/zfs.js b/chrome/content/zotero/xpcom/storage/zfs.js
@@ -58,10 +58,7 @@ Zotero.Sync.Storage.ZFS = (function () {
catch (e) {
Zotero.debug("Response headers unavailable");
}
- // TODO: localize?
- var msg = "A file sync error occurred. Please restart " + Zotero.appName + " and/or your computer and try syncing again.\n\n"
- + "If the error persists, there may be a problem with either your computer or your network: security software, proxy server, VPN, etc. "
- + "Try disabling any security/firewall software you're using or, if this is a laptop, try from a different network.";
+ var msg = Zotero.getString('sync.storage.error.zfs.restart', Zotero.appName);
throw msg;
}
info.filename = req.getResponseHeader('X-Zotero-Filename');
@@ -268,10 +265,8 @@ Zotero.Sync.Storage.ZFS = (function () {
var retry = e.xmlhttp.getResponseHeader('Retry-After');
if (retry) {
var minutes = Math.round(retry / 60);
- // TODO: localize
var e = new Zotero.Error(
- "You have too many queued uploads. "
- + "Please try again in " + minutes + " minutes.",
+ Zotero.getString('sync.storage.error.zfs.tooManyQueuedUploads', minutes),
"ZFS_UPLOAD_QUEUE_LIMIT"
);
throw e;
@@ -301,11 +296,10 @@ Zotero.Sync.Storage.ZFS = (function () {
}
}
- // TODO: localize
text += "\n\n" + filename + " (" + Math.round(file.fileSize / 1024) + "KB)";
var e = new Zotero.Error(
- "The file '" + filename + "' would exceed your Zotero File Storage quota",
+ Zotero.getString('sync.storage.error.zfs.fileWouldExceedQuota', filename),
"ZFS_OVER_QUOTA",
{
dialogText: text,
diff --git a/chrome/content/zotero/zoteroPane.js b/chrome/content/zotero/zoteroPane.js
@@ -1275,8 +1275,7 @@ var ZoteroPane = new function()
if (itemGroup.isDuplicates()) {
if (!itemGroup.editable) {
if (count) {
- // TODO: localize
- var msg = "Library write access is required to merge items.";
+ var msg = Zotero.getString('pane.item.duplicates.writeAccessRequired');
}
else {
var msg = Zotero.getString('pane.item.selected.zero');
@@ -1302,7 +1301,7 @@ var ZoteroPane = new function()
Zotero_Duplicates_Pane.setItems(this.getSelectedItems(), displayNumItemsOnTypeError);
}
else {
- var msg = Zotero.getString('pane.item.selectToMerge');
+ var msg = Zotero.getString('pane.item.duplicates.selectToMerge');
this.setItemPaneMessage(msg);
}
}
@@ -1415,12 +1414,10 @@ var ZoteroPane = new function()
+ (ps.BUTTON_POS_1) * (ps.BUTTON_TITLE_CANCEL);
var index = ps.confirmEx(
null,
- // TODO: localize
- "PDF Tools Not Installed",
- "To use this feature, you must first install the PDF tools in "
- + "the Zotero preferences.",
+ Zotero.getString('pane.item.attachments.PDF.installTools.title'),
+ Zotero.getString('pane.item.attachments.PDF.installTools.text'),
buttonFlags,
- "Open Preferences",
+ Zotero.getString('general.openPreferences'),
null, null, null, {}
);
if (index == 0) {
@@ -2938,9 +2935,9 @@ var ZoteroPane = new function()
var input = {};
var check = {value : false};
- // TODO: Localize
// TODO: Allow title to be specified?
- var result = ps.prompt(null, "Attach Link to URI", "Enter a URI:", input, "", {});
+ var result = ps.prompt(null, Zotero.getString('pane.items.attach.link.uri.title'),
+ Zotero.getString('pane.items.attach.link.uri'), input, "", {});
if (!result || !input.value) return false;
// Create a new attachment
diff --git a/chrome/locale/en-US/zotero/about.dtd b/chrome/locale/en-US/zotero/about.dtd
@@ -9,4 +9,5 @@
<!ENTITY zotero.executiveProducer "Executive Producer:">
<!ENTITY zotero.thanks "Special Thanks:">
<!ENTITY zotero.about.close "Close">
-<!ENTITY zotero.moreCreditsAndAcknowledgements "More Credits & Acknowledgements">
-\ No newline at end of file
+<!ENTITY zotero.moreCreditsAndAcknowledgements "More Credits & Acknowledgements">
+<!ENTITY zotero.citationProcessing "Citation & Bibliography Processing">
+\ No newline at end of file
diff --git a/chrome/locale/en-US/zotero/merge.dtd b/chrome/locale/en-US/zotero/merge.dtd
@@ -0,0 +1,3 @@
+<!ENTITY zotero.merge.title "Conflict Resolution">
+<!ENTITY zotero.merge.of "of">
+<!ENTITY zotero.merge.deleted "Deleted">
+\ No newline at end of file
diff --git a/chrome/locale/en-US/zotero/zotero.properties b/chrome/locale/en-US/zotero/zotero.properties
@@ -43,6 +43,7 @@ general.quit = Quit
general.useDefault = Use Default
general.openDocumentation = Open Documentation
general.numMore = %S more…
+general.openPreferences = Open Preferences
general.operationInProgress = A Zotero operation is currently in progress.
general.operationInProgress.waitUntilFinished = Please wait until it has finished.
@@ -167,6 +168,8 @@ pane.tagSelector.numSelected.singular = %S tag selected
pane.tagSelector.numSelected.plural = %S tags selected
pane.items.loading = Loading items list…
+pane.items.attach.link.uri.title = Attach Link to URI
+pane.items.attach.link.uri = Enter a URI:
pane.items.trash.title = Move to Trash
pane.items.trash = Are you sure you want to move the selected item to the Trash?
pane.items.trash.multiple = Are you sure you want to move the selected items to the Trash?
@@ -206,7 +209,12 @@ pane.item.selected.multiple = %S items selected
pane.item.unselected.zero = No items in this view
pane.item.unselected.singular = %S item in this view
pane.item.unselected.plural = %S items in this view
-pane.item.selectToMerge = Select items to merge
+
+pane.item.duplicates.selectToMerge = Select items to merge
+pane.item.duplicates.mergeItems = Merge %S items
+pane.item.duplicates.writeAccessRequired = Library write access is required to merge items.
+pane.item.duplicates.onlyTopLevel = Only top-level full items can be merged.
+pane.item.duplicates.onlySameItemType = Merged items must all be of the same item type.
pane.item.changeType.title = Change Item Type
pane.item.changeType.text = Are you sure you want to change the item type?\n\nThe following fields will be lost:
@@ -232,14 +240,15 @@ pane.item.attachments.count.zero = %S attachments:
pane.item.attachments.count.singular = %S attachment:
pane.item.attachments.count.plural = %S attachments:
pane.item.attachments.select = Select a File
+pane.item.attachments.PDF.installTools.title = PDF Tools Not Installed
+pane.item.attachments.PDF.installTools.text = To use this feature, you must first install the PDF tools in the Zotero preferences.
+pane.item.attachments.filename = Filename
pane.item.noteEditor.clickHere = click here
-pane.item.tags = Tags:
pane.item.tags.count.zero = %S tags:
pane.item.tags.count.singular = %S tag:
pane.item.tags.count.plural = %S tags:
pane.item.tags.icon.user = User-added tag
pane.item.tags.icon.automatic = Automatically added tag
-pane.item.related = Related:
pane.item.related.count.zero = %S related:
pane.item.related.count.singular = %S related:
pane.item.related.count.plural = %S related:
@@ -765,6 +774,11 @@ sync.conflict.tagItemMerge.log = The Zotero tag '%S' has been added to and/or
sync.conflict.tag.addedToRemote = It has been added to the following remote items:
sync.conflict.tag.addedToLocal = It has been added to the following local items:
+sync.conflict.fileChanged = The following file has been changed in multiple locations.
+sync.conflict.itemChanged = The following item has been changed in multiple locations.
+sync.conflict.chooseVersionToKeep = \u0020Choose the version you would like to keep, and then click %S.
+sync.conflict.chooseThisVersion = Choose this version
+
sync.status.notYetSynced = Not yet synced
sync.status.lastSync = Last sync:
sync.status.loggingIn = Logging in to sync server
@@ -787,17 +801,23 @@ sync.storage.serverConfigurationVerified = Server configuration verified
sync.storage.fileSyncSetUp = File sync is successfully set up.
sync.storage.openAccountSettings = Open Account Settings
+sync.storage.error.default = A file sync error occurred. Please try syncing again.\n\nIf you receive this message repeatedly, restart %S and/or your computer and try again. If you continue to receive the message, submit an error report and post the Report ID to a new thread in the Zotero Forums.
+sync.storage.error.defaultRestart = A file sync error occurred. Please restart %S and/or your computer and try syncing again.\n\nIf you receive this message repeatedly, submit an error report and post the Report ID to a new thread in the Zotero Forums.
sync.storage.error.serverCouldNotBeReached = The server %S could not be reached.
sync.storage.error.permissionDeniedAtAddress = You do not have permission to create a Zotero directory at the following address:
sync.storage.error.checkFileSyncSettings = Please check your file sync settings or contact your server administrator.
sync.storage.error.verificationFailed = %S verification failed. Verify your file sync settings in the Sync pane of the Zotero preferences.
sync.storage.error.fileNotCreated = The file '%S' could not be created in the Zotero 'storage' directory.
+sync.storage.error.encryptedFilenames = Error creating file '%S'.\n\nSee http://www.zotero.org/support/kb/encrypted_filenames for more information.
sync.storage.error.fileEditingAccessLost = You no longer have file editing access to the Zotero group '%S', and files you've added or edited cannot be synced to the server.
sync.storage.error.copyChangedItems = If you would like a chance to copy changed items and files elsewhere, cancel the sync now.
sync.storage.error.fileUploadFailed = File upload failed.
sync.storage.error.directoryNotFound = Directory not found
sync.storage.error.doesNotExist = %S does not exist.
sync.storage.error.createNow = Do you want to create it now?
+
+sync.storage.error.webdav.default = A WebDAV file sync error occurred. Please try syncing again.\n\nIf you receive this message repeatedly, check your WebDAV server settings in the Sync pane of the Zotero preferences.
+sync.storage.error.webdav.defaultRestart = A WebDAV file sync error occurred. Please restart %S and try syncing again.\n\nIf you receive this message repeatedly, check your WebDAV server settings in the Sync pane of the Zotero preferences.
sync.storage.error.webdav.enterURL = Please enter a WebDAV URL.
sync.storage.error.webdav.invalidURL = %S is not a valid WebDAV URL.
sync.storage.error.webdav.invalidLogin = The WebDAV server did not accept the username and password you entered.
@@ -808,10 +828,17 @@ sync.storage.error.webdav.sslConnectionError = SSL connection error connecting t
sync.storage.error.webdav.loadURLForMoreInfo = Load your WebDAV URL in the browser for more information.
sync.storage.error.webdav.seeCertOverrideDocumentation = See the certificate override documentation for more information.
sync.storage.error.webdav.loadURL = Load WebDAV URL
+sync.storage.error.webdav.fileMissingAfterUpload = A potential problem was found with your WebDAV server.\n\nAn uploaded file was not immediately available for download. There may be a short delay between when you upload files and when they become available, particularly if you are using a cloud storage service.\n\nIf Zotero file syncing appears to work normally, you can ignore this message. If you have trouble, please post to the Zotero Forums.
+sync.storage.error.webdav.serverConfig.title = WebDAV Server Configuration Error
+sync.storage.error.webdav.serverConfig = Your WebDAV server returned an internal error.\n\n
+
+sync.storage.error.zfs.restart = A file sync error occurred. Please restart %S and/or your computer and try syncing again.\n\nIf the error persists, there may be a problem with either your computer or your network: security software, proxy server, VPN, etc. Try disabling any security/firewall software you're using or, if this is a laptop, try from a different network.
+sync.storage.error.zfs.tooManyQueuedUploads = You have too many queued uploads. Please try again in %S minutes.
sync.storage.error.zfs.personalQuotaReached1 = You have reached your Zotero File Storage quota. Some files were not uploaded. Other Zotero data will continue to sync to the server.
sync.storage.error.zfs.personalQuotaReached2 = See your zotero.org account settings for additional storage options.
sync.storage.error.zfs.groupQuotaReached1 = The group '%S' has reached its Zotero File Storage quota. Some files were not uploaded. Other Zotero data will continue to sync to the server.
sync.storage.error.zfs.groupQuotaReached2 = The group owner can increase the group's storage capacity from the storage settings section on zotero.org.
+sync.storage.error.zfs.fileWouldExceedQuota = The file '%S' would exceed your Zotero File Storage quota
sync.longTagFixer.saveTag = Save Tag
sync.longTagFixer.saveTags = Save Tags
@@ -849,6 +876,18 @@ rtfScan.rtf = Rich Text Format (.rtf)
rtfScan.saveTitle = Select a location in which to save the formatted file
rtfScan.scannedFileSuffix = (Scanned)
+
+file.accessError.theFile = The file '%S'
+file.accessError.aFile = A file
+file.accessError.cannotBe = \u0020cannot be\u0020
+file.accessError.created = created
+file.accessError.updated = updated
+file.accessError.deleted = deleted
+file.accessError.message.windows = Check that the file is not currently in use and that it is not marked as read-only. To check all files in your Zotero data directory, right-click on the 'zotero' directory, click Properties, clear the Read-Only checkbox, and apply the change to all folders and files in the directory.
+file.accessError.message.other = Check that the file is not currently in use and that its permissions allow write access.
+file.accessError.restart = Restarting your computer or disabling security software may also help.
+file.accessError.showParentDir = Show Parent Directory
+
lookup.failure.title = Lookup Failed
lookup.failure.description = Zotero could not find a record for the specified identifier. Please verify the identifier and try again.