Merge remote-tracking branch 'gracile/3.1-l10n' into 3.1-l10n
This commit is contained in:
commit
30f5679ec8
25 changed files with 276 additions and 275 deletions
|
@ -51,7 +51,7 @@
|
||||||
<label class="zotero-text-link" href="http://www.zotero.org/support/credits_and_acknowledgments" value="&zotero.moreCreditsAndAcknowledgements;"/>
|
<label class="zotero-text-link" href="http://www.zotero.org/support/credits_and_acknowledgments" value="&zotero.moreCreditsAndAcknowledgements;"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<vbox id="column2">
|
<vbox id="column2">
|
||||||
<label class="subhead" value="Citation & Bibliography Processing"/>
|
<label class="subhead" value="&zotero.citationProcessing;"/>
|
||||||
<vbox class="subcontent">
|
<vbox class="subcontent">
|
||||||
<label class="zotero-text-link" href="http://citationstyles.org/" value="Citation Style Language"/>
|
<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)"/>
|
<label class="zotero-text-link" href="http://bitbucket.org/fbennett/citeproc-js/" value="citeproc-js (Frank Bennett)"/>
|
||||||
|
|
|
@ -214,7 +214,8 @@
|
||||||
|
|
||||||
// Access date
|
// Access date
|
||||||
if (this.displayAccessed) {
|
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._id("accessed").value = Zotero.Date.sqlToDate(
|
||||||
this.item.getField('accessDate'), true
|
this.item.getField('accessDate'), true
|
||||||
).toLocaleString();
|
).toLocaleString();
|
||||||
|
@ -233,12 +234,11 @@
|
||||||
if (this.item.attachmentLinkMode
|
if (this.item.attachmentLinkMode
|
||||||
!= Zotero.Attachments.LINK_MODE_LINKED_URL
|
!= Zotero.Attachments.LINK_MODE_LINKED_URL
|
||||||
&& this.displayFileName) {
|
&& this.displayFileName) {
|
||||||
// TODO: localize
|
|
||||||
var fileName = this.item.getFilename();
|
var fileName = this.item.getFilename();
|
||||||
|
|
||||||
if (fileName) {
|
if (fileName) {
|
||||||
// TODO: localize
|
this._id("fileName-label").value = Zotero.getString('pane.item.attachments.filename')
|
||||||
this._id("fileName-label").value = "Filename:";
|
+ Zotero.getString('punctuation.colon');
|
||||||
this._id("fileName").value = fileName;
|
this._id("fileName").value = fileName;
|
||||||
fileNameRow.hidden = false;
|
fileNameRow.hidden = false;
|
||||||
}
|
}
|
||||||
|
@ -255,8 +255,8 @@
|
||||||
var pages = Zotero.Fulltext.getPages(this.item.id);
|
var pages = Zotero.Fulltext.getPages(this.item.id);
|
||||||
var pages = pages ? pages.total : null;
|
var pages = pages ? pages.total : null;
|
||||||
if (pages) {
|
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;
|
this._id("pages").value = pages;
|
||||||
pagesRow.hidden = false;
|
pagesRow.hidden = false;
|
||||||
}
|
}
|
||||||
|
@ -269,7 +269,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.displayDateModified) {
|
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;
|
var mtime = this.item.attachmentModificationTime;
|
||||||
if (mtime) {
|
if (mtime) {
|
||||||
this._id("dateModified").value = new Date(mtime).toLocaleString();
|
this._id("dateModified").value = new Date(mtime).toLocaleString();
|
||||||
|
@ -476,7 +477,8 @@
|
||||||
str = 'general.yes';
|
str = 'general.yes';
|
||||||
break;
|
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);
|
indexStatus.value = Zotero.getString(str);
|
||||||
|
|
||||||
// Reindex button tooltip (string stored in zotero.properties)
|
// Reindex button tooltip (string stored in zotero.properties)
|
||||||
|
|
|
@ -358,7 +358,7 @@
|
||||||
case 'attachment':
|
case 'attachment':
|
||||||
case 'note':
|
case 'note':
|
||||||
case 'storagefile':
|
case 'storagefile':
|
||||||
objbox.buttonCaption = 'Choose this version';
|
objbox.buttonCaption = Zotero.getString('sync.conflict.chooseThisVersion');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -478,7 +478,7 @@
|
||||||
<xul:box id="object-placeholder"/>
|
<xul:box id="object-placeholder"/>
|
||||||
<xul:hbox id="delete-box" hidden="true" flex="1"
|
<xul:hbox id="delete-box" hidden="true" flex="1"
|
||||||
onclick="document.getBindingParent(this).chooseObj(this)">
|
onclick="document.getBindingParent(this).chooseObj(this)">
|
||||||
<xul:label value="Deleted"/> <!-- TODO: localize -->
|
<xul:label value="zotero.merge.deleted"/>
|
||||||
</xul:hbox>
|
</xul:hbox>
|
||||||
</xul:groupbox>
|
</xul:groupbox>
|
||||||
</content>
|
</content>
|
||||||
|
|
|
@ -410,14 +410,14 @@
|
||||||
<method name="updateTagsSummary">
|
<method name="updateTagsSummary">
|
||||||
<body>
|
<body>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
// TODO: localize
|
|
||||||
var v = this.id('tags').summary;
|
var v = this.id('tags').summary;
|
||||||
|
|
||||||
if (!v || v == "") {
|
if (!v || v == "") {
|
||||||
v = "[" + Zotero.getString('pane.item.noteEditor.clickHere') + "]";
|
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;
|
this.id('tagsClick').value = v;
|
||||||
]]>
|
]]>
|
||||||
</body>
|
</body>
|
||||||
|
@ -446,7 +446,8 @@
|
||||||
v = "[" + Zotero.getString('pane.item.noteEditor.clickHere') + "]";
|
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;
|
this.id('seeAlsoClick').value = v;
|
||||||
]]>
|
]]>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -44,8 +44,7 @@ var Zotero_Duplicates_Pane = new function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!item.isRegularItem() || [1,14].indexOf(item.itemTypeID) != -1) {
|
if (!item.isRegularItem() || [1,14].indexOf(item.itemTypeID) != -1) {
|
||||||
// TODO: localize
|
var msg = Zotero.getString('pane.item.duplicates.onlyTopLevel');
|
||||||
var msg = "Only top-level full items can be merged.";
|
|
||||||
ZoteroPane_Local.setItemPaneMessage(msg);
|
ZoteroPane_Local.setItemPaneMessage(msg);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -57,8 +56,7 @@ var Zotero_Duplicates_Pane = new function () {
|
||||||
var msg = Zotero.getString('pane.item.selected.multiple', items.length);
|
var msg = Zotero.getString('pane.item.selected.multiple', items.length);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// TODO: localize
|
var msg = Zotero.getString('pane.item.duplicates.onlySameItemType');
|
||||||
var msg = "Merged items must all be of the same item type.";
|
|
||||||
}
|
}
|
||||||
ZoteroPane_Local.setItemPaneMessage(msg);
|
ZoteroPane_Local.setItemPaneMessage(msg);
|
||||||
return false;
|
return false;
|
||||||
|
@ -112,7 +110,7 @@ var Zotero_Duplicates_Pane = new function () {
|
||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
button.label = "Merge " + (otherItems.length + 1) + " items";
|
button.label = Zotero.getString('pane.item.duplicates.mergeItems', (otherItems.length + 1));
|
||||||
itembox.hiddenFields = diff ? [] : ['dateAdded', 'dateModified'];
|
itembox.hiddenFields = diff ? [] : ['dateAdded', 'dateModified'];
|
||||||
fieldSelect.hidden = !diff;
|
fieldSelect.hidden = !diff;
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,8 @@
|
||||||
|
|
||||||
<!DOCTYPE window SYSTEM "chrome://zotero/locale/zotero.dtd">
|
<!DOCTYPE window SYSTEM "chrome://zotero/locale/zotero.dtd">
|
||||||
|
|
||||||
<!-- TODO: localize -->
|
|
||||||
<wizard xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
<wizard xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||||
id="zotero-error-report" title="Zotero Error Report">
|
id="zotero-error-report" title="&zotero.errorReport.title;">
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
|
@ -69,14 +68,14 @@
|
||||||
if (!xmlhttp.responseXML){
|
if (!xmlhttp.responseXML){
|
||||||
try {
|
try {
|
||||||
if (xmlhttp.status>1000){
|
if (xmlhttp.status>1000){
|
||||||
alert('No network connection');
|
alert(Zotero.getString('errorReport.noNetworkConnection'));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
alert('Invalid response from repository');
|
alert(Zotero.getString('errorReport.invalidResponseRepository'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e){
|
catch (e){
|
||||||
alert('Repository cannot be contacted');
|
alert(Zotero.getString('errorReport.repoCannotBeContacted'));
|
||||||
}
|
}
|
||||||
|
|
||||||
wizard.rewind();
|
wizard.rewind();
|
||||||
|
@ -86,7 +85,7 @@
|
||||||
|
|
||||||
var reported = xmlhttp.responseXML.getElementsByTagName('reported');
|
var reported = xmlhttp.responseXML.getElementsByTagName('reported');
|
||||||
if (reported.length != 1) {
|
if (reported.length != 1) {
|
||||||
alert('Invalid response from repository');
|
alert(Zotero.getString('errorReport.invalidResponseRepository'));
|
||||||
wizard.rewind();
|
wizard.rewind();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -364,9 +364,6 @@ var Zotero_File_Interface = new function() {
|
||||||
translation.translate(libraryID);
|
translation.translate(libraryID);
|
||||||
}, 0);
|
}, 0);
|
||||||
} else {
|
} else {
|
||||||
// TODO: localize and remove fileInterface.fileFormatUnsupported string
|
|
||||||
var unsupportedFormat = "The selected file is not in a supported format.";
|
|
||||||
var viewSupportedFormats = "View Supported Formats...";
|
|
||||||
|
|
||||||
var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
||||||
.getService(Components.interfaces.nsIPromptService);
|
.getService(Components.interfaces.nsIPromptService);
|
||||||
|
@ -375,10 +372,10 @@ var Zotero_File_Interface = new function() {
|
||||||
var index = ps.confirmEx(
|
var index = ps.confirmEx(
|
||||||
null,
|
null,
|
||||||
"",
|
"",
|
||||||
unsupportedFormat,
|
Zotero.getString("fileInterface.unsupportedFormat"),
|
||||||
buttonFlags,
|
buttonFlags,
|
||||||
null,
|
null,
|
||||||
viewSupportedFormats,
|
Zotero.getString("fileInterface.viewSupportedFormats"),
|
||||||
null, null, {}
|
null, null, {}
|
||||||
);
|
);
|
||||||
if (index == 1) {
|
if (index == 1) {
|
||||||
|
|
|
@ -266,15 +266,15 @@ var Zotero_Merge_Window = new function () {
|
||||||
function _setInstructionsString(buttonName) {
|
function _setInstructionsString(buttonName) {
|
||||||
switch (_mergeGroup.type) {
|
switch (_mergeGroup.type) {
|
||||||
case 'storagefile':
|
case 'storagefile':
|
||||||
var msg = "The following file has been changed in multiple locations.";
|
var msg = Zotero.getString('sync.conflict.fileChanged');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// TODO: localize and maybe not always call it 'item'
|
// TODO: cf. localization: maybe not always call it 'item'
|
||||||
var msg = "The following item has been changed in multiple locations.";
|
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;
|
document.getElementById('zotero-merge-instructions').value = msg;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
<?xml-stylesheet href="chrome://zotero/skin/zotero.css" type="text/css"?>
|
<?xml-stylesheet href="chrome://zotero/skin/zotero.css" type="text/css"?>
|
||||||
<?xml-stylesheet href="chrome://zotero/skin/merge.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
|
<wizard
|
||||||
id="zotero-merge-window"
|
id="zotero-merge-window"
|
||||||
|
@ -44,13 +44,13 @@
|
||||||
<wizardpage onpageshow="Zotero_Merge_Window.init()"
|
<wizardpage onpageshow="Zotero_Merge_Window.init()"
|
||||||
onpagerewound="Zotero_Merge_Window.onBack(); return false"
|
onpagerewound="Zotero_Merge_Window.onBack(); return false"
|
||||||
onpageadvanced="return Zotero_Merge_Window.onNext()"
|
onpageadvanced="return Zotero_Merge_Window.onNext()"
|
||||||
label="Conflict Resolution">
|
label="&zotero.merge.title;">
|
||||||
<description id="zotero-merge-instructions"/>
|
<description id="zotero-merge-instructions"/>
|
||||||
<zoteromergegroup flex="1"/>
|
<zoteromergegroup flex="1"/>
|
||||||
<separator class="thin"/>
|
<separator class="thin"/>
|
||||||
<hbox id="zotero-step-count">
|
<hbox id="zotero-step-count">
|
||||||
<label id="zotero-merge-num-objects"/>
|
<label id="zotero-merge-num-objects"/>
|
||||||
<label value="of"/>
|
<label value="&zotero.merge.of;"/>
|
||||||
<label id="zotero-merge-total-objects"/>
|
<label id="zotero-merge-total-objects"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
</wizardpage>
|
</wizardpage>
|
||||||
|
|
|
@ -283,16 +283,11 @@ function updateStorageSettings(enabled, protocol, skipWarnings) {
|
||||||
var account = Zotero.Sync.Server.username;
|
var account = Zotero.Sync.Server.username;
|
||||||
var index = ps.confirmEx(
|
var index = ps.confirmEx(
|
||||||
null,
|
null,
|
||||||
// TODO: localize
|
Zotero.getString('zotero.preferences.sync.purgeStorage.title'),
|
||||||
"Purge Attachment Files on Zotero Servers?",
|
Zotero.getString('zotero.preferences.sync.purgeStorage.desc'),
|
||||||
|
|
||||||
"If you plan to use WebDAV for file syncing and you previously synced attachment files in My Library "
|
|
||||||
+ "to the Zotero servers, you can purge those files from the Zotero servers to give you more "
|
|
||||||
+ "storage space for groups.\n\n"
|
|
||||||
+ "You can purge files at any time from your account settings on zotero.org.",
|
|
||||||
buttonFlags,
|
buttonFlags,
|
||||||
"Purge Files Now",
|
Zotero.getString('zotero.preferences.sync.purgeStorage.confirmButton'),
|
||||||
"Do Not Purge", null, null, {}
|
Zotero.getString('zotero.preferences.sync.purgeStorage.cancelButton'), null, null, {}
|
||||||
);
|
);
|
||||||
|
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
|
@ -478,11 +473,9 @@ function handleSyncReset(action) {
|
||||||
ps.alert(
|
ps.alert(
|
||||||
null,
|
null,
|
||||||
Zotero.getString('general.error'),
|
Zotero.getString('general.error'),
|
||||||
// TODO: localize
|
Zotero.getString('zotero.preferences.sync.reset.userInfoMissing',
|
||||||
"You must enter a username and password in the "
|
document.getElementById('zotero-prefpane-sync')
|
||||||
+ document.getElementById('zotero-prefpane-sync')
|
.getElementsByTagName('tab')[0].label)
|
||||||
.getElementsByTagName('tab')[0].label
|
|
||||||
+ " tab before using the reset options."
|
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -496,12 +489,10 @@ function handleSyncReset(action) {
|
||||||
+ ps.BUTTON_POS_1_DEFAULT;
|
+ ps.BUTTON_POS_1_DEFAULT;
|
||||||
var index = ps.confirmEx(
|
var index = ps.confirmEx(
|
||||||
null,
|
null,
|
||||||
// TODO: localize
|
|
||||||
Zotero.getString('general.warning'),
|
Zotero.getString('general.warning'),
|
||||||
"All data in this copy of Zotero will be erased and replaced with "
|
Zotero.getString('zotero.preferences.sync.reset.restoreFromServer', account),
|
||||||
+ "data belonging to user '" + account + "' on the Zotero server.",
|
|
||||||
buttonFlags,
|
buttonFlags,
|
||||||
"Replace Local Data",
|
Zotero.getString('zotero.preferences.sync.reset.replaceLocalData'),
|
||||||
null, null, null, {}
|
null, null, null, {}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -524,8 +515,7 @@ function handleSyncReset(action) {
|
||||||
var index = ps.confirmEx(
|
var index = ps.confirmEx(
|
||||||
null,
|
null,
|
||||||
Zotero.getString('general.restartRequired'),
|
Zotero.getString('general.restartRequired'),
|
||||||
// TODO: localize
|
Zotero.getString('zotero.preferences.sync.reset.restartToComplete'),
|
||||||
"Firefox must be restarted to complete the restore process.",
|
|
||||||
buttonFlags,
|
buttonFlags,
|
||||||
Zotero.getString('general.restartNow'),
|
Zotero.getString('general.restartNow'),
|
||||||
null, null, null, {}
|
null, null, null, {}
|
||||||
|
@ -557,14 +547,10 @@ function handleSyncReset(action) {
|
||||||
+ ps.BUTTON_POS_1_DEFAULT;
|
+ ps.BUTTON_POS_1_DEFAULT;
|
||||||
var index = ps.confirmEx(
|
var index = ps.confirmEx(
|
||||||
null,
|
null,
|
||||||
// TODO: localize
|
|
||||||
Zotero.getString('general.warning'),
|
Zotero.getString('general.warning'),
|
||||||
"All data belonging to user '" + account + "' on the Zotero server "
|
Zotero.getString('zotero.preferences.sync.reset.restoreToServer', account),
|
||||||
+ "will be erased and replaced with data from this copy of Zotero.\n\n"
|
|
||||||
+ "Depending on the size of your library, there may be a delay before "
|
|
||||||
+ "your data is available on the server.",
|
|
||||||
buttonFlags,
|
buttonFlags,
|
||||||
"Replace Server Data",
|
Zotero.getString('zotero.preferences.sync.reset.replaceServerData'),
|
||||||
null, null, null, {}
|
null, null, null, {}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -615,12 +601,10 @@ function handleSyncReset(action) {
|
||||||
+ ps.BUTTON_POS_1_DEFAULT;
|
+ ps.BUTTON_POS_1_DEFAULT;
|
||||||
var index = ps.confirmEx(
|
var index = ps.confirmEx(
|
||||||
null,
|
null,
|
||||||
// TODO: localize
|
|
||||||
Zotero.getString('general.warning'),
|
Zotero.getString('general.warning'),
|
||||||
"All file sync history will be cleared.\n\n"
|
Zotero.getString('zotero.preferences.sync.reset.fileSyncHistory'),
|
||||||
+ "Any local attachment files that do not exist on the storage server will be uploaded on the next sync.",
|
|
||||||
buttonFlags,
|
buttonFlags,
|
||||||
"Reset",
|
Zotero.getString('general.reset'),
|
||||||
null, null, null, {}
|
null, null, null, {}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1509,7 +1493,6 @@ Zotero_Preferences.Debug_Output = {
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
// TODO: localize
|
|
||||||
submit: function () {
|
submit: function () {
|
||||||
document.getElementById('debug-output-submit').disabled = true;
|
document.getElementById('debug-output-submit').disabled = true;
|
||||||
document.getElementById('debug-output-submit-progress').hidden = false;
|
document.getElementById('debug-output-submit-progress').hidden = false;
|
||||||
|
@ -1534,7 +1517,7 @@ Zotero_Preferences.Debug_Output = {
|
||||||
ps.alert(
|
ps.alert(
|
||||||
null,
|
null,
|
||||||
Zotero.getString('general.error'),
|
Zotero.getString('general.error'),
|
||||||
'Invalid response from server'
|
Zotero.getString('general.invalidResponseServer')
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1543,7 +1526,7 @@ Zotero_Preferences.Debug_Output = {
|
||||||
ps.alert(
|
ps.alert(
|
||||||
null,
|
null,
|
||||||
Zotero.getString('general.error'),
|
Zotero.getString('general.error'),
|
||||||
'The server returned an error. Please try again.'
|
Zotero.getString('general.serverError')
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1551,9 +1534,8 @@ Zotero_Preferences.Debug_Output = {
|
||||||
var reportID = reported[0].getAttribute('reportID');
|
var reportID = reported[0].getAttribute('reportID');
|
||||||
ps.alert(
|
ps.alert(
|
||||||
null,
|
null,
|
||||||
"Debug Output Submitted",
|
Zotero.getString('zotero.preferences.advanced.debug.title'),
|
||||||
"Debug output has been sent to the Zotero server.\n\n"
|
Zotero.getString('zotero.preferences.advanced.debug.sent', reportID)
|
||||||
+ "The Debug ID is D" + reportID + "."
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1571,10 +1553,8 @@ Zotero_Preferences.Debug_Output = {
|
||||||
if (Zotero.HTTP.browserIsOffline()) {
|
if (Zotero.HTTP.browserIsOffline()) {
|
||||||
ps.alert(
|
ps.alert(
|
||||||
null,
|
null,
|
||||||
Zotero.getString(
|
Zotero.getString('general.error'),
|
||||||
'general.error',
|
Zotero.getString('general.browserIsOffline', Zotero.appName)
|
||||||
Zotero.appName + " is in offline mode."
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1626,7 +1606,7 @@ Zotero_Preferences.Debug_Output = {
|
||||||
ps.alert(
|
ps.alert(
|
||||||
null,
|
null,
|
||||||
Zotero.getString('general.error'),
|
Zotero.getString('general.error'),
|
||||||
"An error occurred sending debug output."
|
Zotero.getString('zotero.preferences.advanced.debug.error')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -343,11 +343,8 @@ To add a new preference:
|
||||||
</tabpanel>
|
</tabpanel>
|
||||||
|
|
||||||
<tabpanel id="zotero-reset" orient="vertical">
|
<tabpanel id="zotero-reset" orient="vertical">
|
||||||
<!-- TODO: localize -->
|
|
||||||
<!-- This doesn't wrap without an explicit width, for some reason -->
|
<!-- This doesn't wrap without an explicit width, for some reason -->
|
||||||
<description width="45em">The following operations are for use only in rare, specific situations and should not be used for general troubleshooting.
|
<description width="45em">&zotero.preferences.sync.reset.warning1;<label style="margin-left: 0; margin-right: 0" class="zotero-text-link" href="http://zotero.org/support/kb/sync_reset_options">&zotero.preferences.sync.reset.warning2;</label>&zotero.preferences.sync.reset.warning3;</description>
|
||||||
In many cases, resetting will cause additional problems.
|
|
||||||
See <label style="margin-left: 0; margin-right: 0" class="zotero-text-link" href="http://zotero.org/support/kb/sync_reset_options">Sync Reset Options</label> for more information.</description>
|
|
||||||
|
|
||||||
<radiogroup id="zotero-reset-sync-group" oncommand="handleSyncResetSelect(this)">
|
<radiogroup id="zotero-reset-sync-group" oncommand="handleSyncResetSelect(this)">
|
||||||
<groupbox>
|
<groupbox>
|
||||||
|
@ -731,9 +728,8 @@ To add a new preference:
|
||||||
|
|
||||||
<tabbox id="zotero-prefpane-advanced-tabs">
|
<tabbox id="zotero-prefpane-advanced-tabs">
|
||||||
<tabs>
|
<tabs>
|
||||||
<!-- TODO: localize -->
|
<tab label="&zotero.preferences.prefpane.general;"/>
|
||||||
<tab label="General"/>
|
<tab label="&zotero.preferences.advanced.filesAndFolders;"/>
|
||||||
<tab label="Files and Folders"/>
|
|
||||||
</tabs>
|
</tabs>
|
||||||
|
|
||||||
<tabpanels id="zotero-prefpane-advanced-tabpanels">
|
<tabpanels id="zotero-prefpane-advanced-tabpanels">
|
||||||
|
|
|
@ -5,8 +5,7 @@
|
||||||
|
|
||||||
<!DOCTYPE window SYSTEM "chrome://zotero/locale/zotero.dtd">
|
<!DOCTYPE window SYSTEM "chrome://zotero/locale/zotero.dtd">
|
||||||
|
|
||||||
<!-- TODO: localize -->
|
<wizard id="zotero-schema-upgrade" title="&zotero.upgrade.title;"
|
||||||
<wizard id="zotero-schema-upgrade" title="Zotero Upgrade Wizard"
|
|
||||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -161,7 +161,7 @@ Zotero.CollectionTreeView.prototype.refresh = function()
|
||||||
this._showRow(new Zotero.ItemGroup('separator', false));
|
this._showRow(new Zotero.ItemGroup('separator', false));
|
||||||
var header = {
|
var header = {
|
||||||
id: "group-libraries-header",
|
id: "group-libraries-header",
|
||||||
label: "Group Libraries", // TODO: localize
|
label: Zotero.getString('pane.collections.groupLibraries'),
|
||||||
expand: function (beforeRow, groups) {
|
expand: function (beforeRow, groups) {
|
||||||
if (!groups) {
|
if (!groups) {
|
||||||
var groups = Zotero.Groups.getAll();
|
var groups = Zotero.Groups.getAll();
|
||||||
|
|
|
@ -462,58 +462,49 @@ Zotero.File = new function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO: localize
|
|
||||||
this.checkFileAccessError = function (e, file, operation) {
|
this.checkFileAccessError = function (e, file, operation) {
|
||||||
if (file) {
|
if (file) {
|
||||||
var str = "The file '" + file.path + "' ";
|
var str = Zotero.getString('file.accessError.theFile', file.path);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var str = "A file ";
|
var str = Zotero.getString('file.accessError.aFile');
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (operation) {
|
switch (operation) {
|
||||||
case 'create':
|
case 'create':
|
||||||
var opWord = "created";
|
var opWord = Zotero.getString('file.accessError.created');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'update':
|
case 'update':
|
||||||
var opWord = "updated";
|
var opWord = Zotero.getString('file.accessError.updated');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'delete':
|
case 'delete':
|
||||||
var opWord = "deleted";
|
var opWord = Zotero.getString('file.accessError.deleted');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
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'
|
if (e.name == 'NS_ERROR_FILE_ACCESS_DENIED' || e.name == 'NS_ERROR_FILE_IS_LOCKED'
|
||||||
// Shows up on some Windows systems
|
// Shows up on some Windows systems
|
||||||
|| e.name == 'NS_ERROR_FAILURE') {
|
|| e.name == 'NS_ERROR_FAILURE') {
|
||||||
Zotero.debug(e);
|
Zotero.debug(e);
|
||||||
// TODO: localize
|
str = str + Zotero.getString('file.accessError.cannotBe') + opWord + ".";
|
||||||
str = str + "cannot be " + opWord + ".";
|
var checkFileWindows = Zotero.getString('file.accessError.message.windows');
|
||||||
var checkFileWindows = "Check that the file is not currently "
|
var checkFileOther = Zotero.getString('file.accessError.message.other');
|
||||||
+ "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.";
|
|
||||||
var msg = str + " "
|
var msg = str + " "
|
||||||
+ (Zotero.isWin ? checkFileWindows : checkFileOther)
|
+ (Zotero.isWin ? checkFileWindows : checkFileOther)
|
||||||
+ "\n\n"
|
+ "\n\n"
|
||||||
+ "Restarting your computer or disabling security "
|
+ Zotero.getString('file.accessError.restart');
|
||||||
+ "software may also help.";
|
|
||||||
|
|
||||||
if (operation == 'create') {
|
if (operation == 'create') {
|
||||||
var e = new Zotero.Error(
|
var e = new Zotero.Error(
|
||||||
msg,
|
msg,
|
||||||
0,
|
0,
|
||||||
{
|
{
|
||||||
dialogButtonText: "Show Parent Directory",
|
dialogButtonText: Zotero.getString('file.accessError.showParentDir'),
|
||||||
dialogButtonCallback: function () {
|
dialogButtonCallback: function () {
|
||||||
try {
|
try {
|
||||||
file.parent.QueryInterface(Components.interfaces.nsILocalFile).reveal();
|
file.parent.QueryInterface(Components.interfaces.nsILocalFile).reveal();
|
||||||
|
@ -531,7 +522,7 @@ Zotero.File = new function(){
|
||||||
msg,
|
msg,
|
||||||
0,
|
0,
|
||||||
{
|
{
|
||||||
dialogButtonText: "Show File",
|
dialogButtonText: Zotero.getString('locate.showFile.label'),
|
||||||
dialogButtonCallback: function () {
|
dialogButtonCallback: function () {
|
||||||
try {
|
try {
|
||||||
file.QueryInterface(Components.interfaces.nsILocalFile);
|
file.QueryInterface(Components.interfaces.nsILocalFile);
|
||||||
|
|
|
@ -53,9 +53,8 @@ Zotero.Sync.Storage = new function () {
|
||||||
this.ERROR_FILE_MISSING_AFTER_UPLOAD = -16;
|
this.ERROR_FILE_MISSING_AFTER_UPLOAD = -16;
|
||||||
|
|
||||||
// TEMP
|
// TEMP
|
||||||
// TODO: localize
|
this.__defineGetter__("defaultError", function () Zotero.getString('sync.storage.error.default', Zotero.appName));
|
||||||
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 () Zotero.getString('sync.storage.error.defaultRestart', Zotero.appName));
|
||||||
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.");
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Public properties
|
// Public properties
|
||||||
|
@ -1189,8 +1188,7 @@ Zotero.Sync.Storage = new function () {
|
||||||
// but log a warning and skip the file
|
// but log a warning and skip the file
|
||||||
else if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
|
else if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
|
||||||
Zotero.debug(e);
|
Zotero.debug(e);
|
||||||
var msg = "Error creating file '" + destFile.leafName + "'\n\n"
|
var msg = Zotero.getString('sync.storage.error.encryptedFilenames', destFile.leafName);
|
||||||
+ "See http://www.zotero.org/support/kb/encrypted_filenames for more information.";
|
|
||||||
Components.utils.reportError(msg);
|
Components.utils.reportError(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1394,9 +1392,7 @@ Zotero.Sync.Storage = new function () {
|
||||||
// can result in a lower limit -- not much we can do about this,
|
// can result in a lower limit -- not much we can do about this,
|
||||||
// but log a warning and skip the file
|
// but log a warning and skip the file
|
||||||
else if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
|
else if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
|
||||||
// TODO: localize
|
var msg = Zotero.getString('sync.storage.error.encryptedFilenames', destFile.leafName);
|
||||||
var msg = "Error creating file '" + destFile.leafName + "'. "
|
|
||||||
+ "See http://www.zotero.org/support/kb/encrypted_filenames for more information.";
|
|
||||||
Components.utils.reportError(msg);
|
Components.utils.reportError(msg);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1460,9 +1456,7 @@ Zotero.Sync.Storage = new function () {
|
||||||
// See above
|
// See above
|
||||||
if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
|
if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
|
||||||
Zotero.debug(e);
|
Zotero.debug(e);
|
||||||
// TODO: localize
|
var msg = Zotero.getString('sync.storage.error.encryptedFilenames', destFile.leafName);
|
||||||
var msg = "Error creating file '" + destFile.leafName + "'. "
|
|
||||||
+ "See http://www.zotero.org/support/kb/encrypted_filenames for more information.";
|
|
||||||
Components.utils.reportError(msg);
|
Components.utils.reportError(msg);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,9 @@
|
||||||
|
|
||||||
Zotero.Sync.Storage.WebDAV = (function () {
|
Zotero.Sync.Storage.WebDAV = (function () {
|
||||||
// TEMP
|
// 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 _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.";
|
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;
|
return false;
|
||||||
|
|
||||||
case Zotero.Sync.Storage.ERROR_FILE_MISSING_AFTER_UPLOAD:
|
case Zotero.Sync.Storage.ERROR_FILE_MISSING_AFTER_UPLOAD:
|
||||||
// TODO: localize
|
|
||||||
var errorTitle = Zotero.getString("general.warning");
|
var errorTitle = Zotero.getString("general.warning");
|
||||||
var errorMessage = "A potential problem was found with your WebDAV server.\n\n"
|
var errorMessage = Zotero.getString('sync.storage.error.webdav.fileMissingAfterUpload');
|
||||||
+ "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.";
|
|
||||||
Zotero.Prefs.set("sync.storage.verified", true);
|
Zotero.Prefs.set("sync.storage.verified", true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Zotero.Sync.Storage.ERROR_SERVER_ERROR:
|
case Zotero.Sync.Storage.ERROR_SERVER_ERROR:
|
||||||
// TODO: localize
|
var errorTitle = Zotero.getString('sync.storage.error.webdav.serverConfig.title');
|
||||||
var errorTitle = "WebDAV Server Configuration Error";
|
var errorMessage = Zotero.getString('sync.storage.error.webdav.serverConfig')
|
||||||
var errorMessage = "Your WebDAV server returned an internal error."
|
+ Zotero.getString('sync.storage.error.checkFileSyncSettings');
|
||||||
+ "\n\n" + Zotero.getString('sync.storage.error.checkFileSyncSettings');
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Zotero.Sync.Storage.ERROR_UNKNOWN:
|
case Zotero.Sync.Storage.ERROR_UNKNOWN:
|
||||||
|
|
|
@ -58,10 +58,7 @@ Zotero.Sync.Storage.ZFS = (function () {
|
||||||
catch (e) {
|
catch (e) {
|
||||||
Zotero.debug("Response headers unavailable");
|
Zotero.debug("Response headers unavailable");
|
||||||
}
|
}
|
||||||
// TODO: localize?
|
var msg = Zotero.getString('sync.storage.error.zfs.restart', Zotero.appName);
|
||||||
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.";
|
|
||||||
throw msg;
|
throw msg;
|
||||||
}
|
}
|
||||||
info.filename = req.getResponseHeader('X-Zotero-Filename');
|
info.filename = req.getResponseHeader('X-Zotero-Filename');
|
||||||
|
@ -268,10 +265,8 @@ Zotero.Sync.Storage.ZFS = (function () {
|
||||||
var retry = e.xmlhttp.getResponseHeader('Retry-After');
|
var retry = e.xmlhttp.getResponseHeader('Retry-After');
|
||||||
if (retry) {
|
if (retry) {
|
||||||
var minutes = Math.round(retry / 60);
|
var minutes = Math.round(retry / 60);
|
||||||
// TODO: localize
|
|
||||||
var e = new Zotero.Error(
|
var e = new Zotero.Error(
|
||||||
"You have too many queued uploads. "
|
Zotero.getString('sync.storage.error.zfs.tooManyQueuedUploads', minutes),
|
||||||
+ "Please try again in " + minutes + " minutes.",
|
|
||||||
"ZFS_UPLOAD_QUEUE_LIMIT"
|
"ZFS_UPLOAD_QUEUE_LIMIT"
|
||||||
);
|
);
|
||||||
throw e;
|
throw e;
|
||||||
|
@ -301,11 +296,10 @@ Zotero.Sync.Storage.ZFS = (function () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: localize
|
|
||||||
text += "\n\n" + filename + " (" + Math.round(file.fileSize / 1024) + "KB)";
|
text += "\n\n" + filename + " (" + Math.round(file.fileSize / 1024) + "KB)";
|
||||||
|
|
||||||
var e = new Zotero.Error(
|
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",
|
"ZFS_OVER_QUOTA",
|
||||||
{
|
{
|
||||||
dialogText: text,
|
dialogText: text,
|
||||||
|
|
|
@ -538,7 +538,7 @@ Zotero.Sync.Runner = new function () {
|
||||||
|
|
||||||
if (Zotero.HTTP.browserIsOffline()){
|
if (Zotero.HTTP.browserIsOffline()){
|
||||||
this.clearSyncTimeout(); // DEBUG: necessary?
|
this.clearSyncTimeout(); // DEBUG: necessary?
|
||||||
var msg = "Zotero cannot sync while " + Zotero.appName + " is in offline mode.";
|
var msg = "Zotero cannot sync because " + Zotero.getString('general.browserIsOffline', Zotero.appName);
|
||||||
var e = new Zotero.Error(msg, 0, { dialogButtonText: null })
|
var e = new Zotero.Error(msg, 0, { dialogButtonText: null })
|
||||||
Components.utils.reportError(e);
|
Components.utils.reportError(e);
|
||||||
Zotero.debug(e, 1);
|
Zotero.debug(e, 1);
|
||||||
|
@ -1851,28 +1851,28 @@ Zotero.Sync.Server = new function () {
|
||||||
catch (e) {
|
catch (e) {
|
||||||
Zotero.debug(e);
|
Zotero.debug(e);
|
||||||
}
|
}
|
||||||
// TODO: localize
|
var kbURL = 'http://zotero.org/support/kb/ssl_certificate_error';
|
||||||
_error("SSL certificate error connecting to " + host
|
_error(Zotero.getString('sync.storage.error.webdav.sslCertificateError', host) + "\n\n"
|
||||||
+ "\n\nSee http://zotero.org/support/kb/ssl_certificate_error for more information.",
|
+ Zotero.getString('general.seeForMoreInformation', kbURL),
|
||||||
false, noReloadOnFailure);
|
false, noReloadOnFailure);
|
||||||
}
|
}
|
||||||
else if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_BROKEN) == Ci.nsIWebProgressListener.STATE_IS_BROKEN) {
|
else if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_BROKEN) == Ci.nsIWebProgressListener.STATE_IS_BROKEN) {
|
||||||
_error("SSL connection error", false, noReloadOnFailure);
|
_error(Zotero.getString('sync.error.sslConnectionError'), false, noReloadOnFailure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: localize
|
|
||||||
if (xmlhttp.status === 0) {
|
if (xmlhttp.status === 0) {
|
||||||
_error('Error connecting to server. Check your Internet connection.', false, noReloadOnFailure);
|
_error(Zotero.getString('sync.error.checkConnection'), false, noReloadOnFailure);
|
||||||
}
|
}
|
||||||
_error('Empty response from server. Please try again in a few minutes.', false, noReloadOnFailure);
|
_error(Zotero.getString('sync.error.emptyResponseServer') + Zotero.getString('general.tryAgainLater'),
|
||||||
|
false, noReloadOnFailure);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!xmlhttp.responseXML || !xmlhttp.responseXML.childNodes[0] ||
|
if (!xmlhttp.responseXML || !xmlhttp.responseXML.childNodes[0] ||
|
||||||
xmlhttp.responseXML.childNodes[0].tagName != 'response' ||
|
xmlhttp.responseXML.childNodes[0].tagName != 'response' ||
|
||||||
!xmlhttp.responseXML.childNodes[0].firstChild) {
|
!xmlhttp.responseXML.childNodes[0].firstChild) {
|
||||||
Zotero.debug(xmlhttp.responseText);
|
Zotero.debug(xmlhttp.responseText);
|
||||||
// TODO: localize
|
_error(Zotero.getString('general.invalidResponseServer') + Zotero.getString('general.tryAgainLater'),
|
||||||
_error('Invalid response from server. Please try again in a few minutes.', xmlhttp.responseText, noReloadOnFailure);
|
xmlhttp.responseText, noReloadOnFailure);
|
||||||
}
|
}
|
||||||
|
|
||||||
var firstChild = xmlhttp.responseXML.firstChild.firstChild;
|
var firstChild = xmlhttp.responseXML.firstChild.firstChild;
|
||||||
|
@ -2079,8 +2079,7 @@ Zotero.Sync.Server = new function () {
|
||||||
case 'INVALID_TIMESTAMP':
|
case 'INVALID_TIMESTAMP':
|
||||||
var validClock = Zotero.DB.valueQuery("SELECT CURRENT_TIMESTAMP BETWEEN '1970-01-01 00:00:01' AND '2038-01-19 03:14:07'");
|
var validClock = Zotero.DB.valueQuery("SELECT CURRENT_TIMESTAMP BETWEEN '1970-01-01 00:00:01' AND '2038-01-19 03:14:07'");
|
||||||
if (!validClock) {
|
if (!validClock) {
|
||||||
// TODO: localize
|
_error(Zotero.getString('sync.error.invalidClock'));
|
||||||
_error("The system clock is set to an invalid time. You will need to correct this to sync with the Zotero server.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
|
@ -2186,37 +2185,20 @@ Zotero.Sync.Server = new function () {
|
||||||
+ ps.BUTTON_POS_1_DEFAULT
|
+ ps.BUTTON_POS_1_DEFAULT
|
||||||
+ ps.BUTTON_DELAY_ENABLE;
|
+ ps.BUTTON_DELAY_ENABLE;
|
||||||
|
|
||||||
var msg = "This Zotero database was last synced with a different "
|
var msg = Zotero.getString('sync.lastSyncWithDifferentAccount', [lastUsername, username]);
|
||||||
+ "zotero.org account ('" + lastUsername + "') from the "
|
|
||||||
+ "current one ('" + username + "'). ";
|
|
||||||
|
|
||||||
if (!noServerData) {
|
if (!noServerData) {
|
||||||
// TODO: localize
|
msg += " " + Zotero.getString('sync.localDataWillBeCombined', username);
|
||||||
msg += "If you continue, local Zotero data will be "
|
|
||||||
+ "combined with data from the '" + username + "' account "
|
|
||||||
+ "stored on the server.";
|
|
||||||
// If there are local groups belonging to the previous user,
|
// If there are local groups belonging to the previous user,
|
||||||
// we need to remove them
|
// we need to remove them
|
||||||
if (groups.length) {
|
if (groups.length) {
|
||||||
msg += "Local groups, including any with changed items, will also "
|
msg += " " + Zotero.getString('sync.localGroupsWillBeRemoved1');
|
||||||
+ "be removed.";
|
|
||||||
}
|
}
|
||||||
msg += "\n\n"
|
msg += "\n\n" + Zotero.getString('sync.avoidCombiningData', lastUsername);
|
||||||
+ "To avoid combining or losing data, revert to the '"
|
var syncButtonText = Zotero.getString('sync.sync');
|
||||||
+ lastUsername + "' account or use the Reset options "
|
|
||||||
+ "in the Sync pane of the Zotero preferences.";
|
|
||||||
|
|
||||||
var syncButtonText = "Sync";
|
|
||||||
}
|
}
|
||||||
else if (groups.length) {
|
else if (groups.length) {
|
||||||
msg += "If you continue, local groups, including any with changed items, "
|
msg += " " + Zotero.getString('sync.localGroupsWillBeRemoved2', [username, lastUsername]);
|
||||||
+ "will be removed and replaced with groups linked to the '"
|
|
||||||
+ username + "' account."
|
|
||||||
+ "\n\n"
|
|
||||||
+ "To avoid losing local changes to groups, be sure you "
|
|
||||||
+ "have synced with the '" + lastUsername + "' account before "
|
|
||||||
+ "syncing with the '" + username + "' account.";
|
|
||||||
|
|
||||||
var syncButtonText = Zotero.getString('sync.removeGroupsAndSync');
|
var syncButtonText = Zotero.getString('sync.removeGroupsAndSync');
|
||||||
}
|
}
|
||||||
// If there are no local groups and the server is empty,
|
// If there are no local groups and the server is empty,
|
||||||
|
@ -2335,9 +2317,8 @@ Zotero.Sync.Server = new function () {
|
||||||
// instead of creating its own dialog, but setSyncIcon() doesn't yet provide full control
|
// instead of creating its own dialog, but setSyncIcon() doesn't yet provide full control
|
||||||
// over dialog title and primary button text/action, which is why this version of the
|
// over dialog title and primary button text/action, which is why this version of the
|
||||||
// dialog is a bit uglier than the manual click version
|
// dialog is a bit uglier than the manual click version
|
||||||
// TODO: localize and combine with below
|
// TODO: localize (=>done) and combine with below (=>?)
|
||||||
var msg = "The Zotero sync server did not accept your username and password.\n\n"
|
var msg = Zotero.getString('sync.error.invalidLogin.text');
|
||||||
+ "Please check that you have entered your zotero.org login information correctly in the Zotero sync preferences.";
|
|
||||||
e.data = {};
|
e.data = {};
|
||||||
e.data.dialogText = msg;
|
e.data.dialogText = msg;
|
||||||
e.data.dialogButtonText = Zotero.getString('sync.openSyncPreferences');
|
e.data.dialogButtonText = Zotero.getString('sync.openSyncPreferences');
|
||||||
|
@ -2358,15 +2339,13 @@ Zotero.Sync.Server = new function () {
|
||||||
.getService(Components.interfaces.nsIPromptService);
|
.getService(Components.interfaces.nsIPromptService);
|
||||||
var buttonFlags = (ps.BUTTON_POS_0) * (ps.BUTTON_TITLE_IS_STRING)
|
var buttonFlags = (ps.BUTTON_POS_0) * (ps.BUTTON_TITLE_IS_STRING)
|
||||||
+ (ps.BUTTON_POS_1) * (ps.BUTTON_TITLE_CANCEL);
|
+ (ps.BUTTON_POS_1) * (ps.BUTTON_TITLE_CANCEL);
|
||||||
// TODO: localize
|
|
||||||
if (e.error == Zotero.Error.ERROR_SYNC_USERNAME_NOT_SET) {
|
if (e.error == Zotero.Error.ERROR_SYNC_USERNAME_NOT_SET) {
|
||||||
var title = Zotero.getString('sync.error.usernameNotSet');
|
var title = Zotero.getString('sync.error.usernameNotSet');
|
||||||
var msg = "You must enter your zotero.org username and password in the Zotero preferences to sync with the Zotero server."
|
var msg = Zotero.getString('sync.error.usernameNotSet.text');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var title = Zotero.getString('sync.error.invalidLogin');
|
var title = Zotero.getString('sync.error.invalidLogin');
|
||||||
var msg = "The Zotero sync server did not accept your username and password.\n\n"
|
var msg = Zotero.getString('sync.error.invalidLogin.text');
|
||||||
+ "Please check that you have entered your zotero.org login information correctly in the Zotero sync preferences.";
|
|
||||||
}
|
}
|
||||||
var index = ps.confirmEx(
|
var index = ps.confirmEx(
|
||||||
win,
|
win,
|
||||||
|
@ -3219,10 +3198,9 @@ Zotero.Sync.Server.Data = new function() {
|
||||||
if (Zotero.Sync.Runner.background) {
|
if (Zotero.Sync.Runner.background) {
|
||||||
Zotero.Sync.Server.manualSyncRequired = true;
|
Zotero.Sync.Server.manualSyncRequired = true;
|
||||||
|
|
||||||
// TODO: localize again
|
var msg = Zotero.getString('sync.error.manualInterventionRequired')
|
||||||
//Zotero.getString('sync.error.manualInterventionRequired')
|
+ "\n\n"
|
||||||
//Zotero.getString('sync.error.clickSyncIcon')
|
+ Zotero.getString('sync.error.clickSyncIcon');
|
||||||
var msg = "Conflicts have suspended automatic syncing.\n\nClick the sync icon to resolve them.";
|
|
||||||
var e = new Zotero.Error(msg, 0, { dialogButtonText: null });
|
var e = new Zotero.Error(msg, 0, { dialogButtonText: null });
|
||||||
throw (e);
|
throw (e);
|
||||||
}
|
}
|
||||||
|
@ -3708,20 +3686,17 @@ Zotero.Sync.Server.Data = new function() {
|
||||||
var remoteDelete = true;
|
var remoteDelete = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: localize
|
var msg = Zotero.getString('sync.conflict.autoChange.alert', itemTypes);
|
||||||
var msg = "One or more locally deleted Zotero " + itemTypes + " have been "
|
|
||||||
+ "modified remotely since the last sync. ";
|
|
||||||
if (localDelete) {
|
if (localDelete) {
|
||||||
msg += "The remote versions have been kept.";
|
msg += Zotero.getString('sync.conflict.remoteVersionsKept');
|
||||||
}
|
}
|
||||||
else if (remoteDelete) {
|
else if (remoteDelete) {
|
||||||
msg += "The local versions have been kept.";
|
msg += Zotero.getString('sync.conflict.localVersionsKept');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
msg += "The most recent versions have been kept.";
|
msg += Zotero.getString('sync.conflict.recentVersionsKept');
|
||||||
}
|
}
|
||||||
msg += "\n\nView the " + (Zotero.isStandalone ? "" : "Firefox ")
|
msg += Zotero.getString('sync.conflict.viewErrorConsole', (Zotero.isStandalone ? "" : "Firefox "));
|
||||||
+ "Error Console for the full list of such changes.";
|
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3734,42 +3709,35 @@ Zotero.Sync.Server.Data = new function() {
|
||||||
*/
|
*/
|
||||||
function _generateAutoChangeLogMessage(itemType, localName, remoteName, remoteMoreRecent) {
|
function _generateAutoChangeLogMessage(itemType, localName, remoteName, remoteMoreRecent) {
|
||||||
if (localName === null) {
|
if (localName === null) {
|
||||||
// TODO: localize
|
localName = Zotero.getString('sync.conflict.deleted');
|
||||||
localName = "[deleted]";
|
|
||||||
var localDelete = true;
|
var localDelete = true;
|
||||||
}
|
}
|
||||||
else if (remoteName === null) {
|
else if (remoteName === null) {
|
||||||
remoteName = "[deleted]";
|
remoteName = Zotero.getString('sync.conflict.deleted');
|
||||||
var remoteDelete = true;
|
var remoteDelete = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: localize
|
var msg = Zotero.getString('sync.conflict.autoChange.log', itemType);
|
||||||
var msg = "A Zotero " + itemType + " has changed both locally and "
|
msg += Zotero.getString('sync.conflict.localVersion', localName);
|
||||||
+ "remotely since the last sync:";
|
msg += Zotero.getString('sync.conflict.remoteVersion', remoteName);
|
||||||
msg += "\n\n";
|
|
||||||
msg += "Local version: " + localName + "\n";
|
|
||||||
msg += "Remote version: " + remoteName + "\n";
|
|
||||||
msg += "\n";
|
msg += "\n";
|
||||||
if (localDelete) {
|
if (localDelete) {
|
||||||
msg += "The remote version has been kept.";
|
msg += Zotero.getString('sync.conflict.remoteVersionKept');
|
||||||
}
|
}
|
||||||
else if (remoteDelete) {
|
else if (remoteDelete) {
|
||||||
msg += "The local version has been kept.";
|
msg += Zotero.getString('sync.conflict.localVersionKept');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var moreRecent = remoteMoreRecent ? remoteName : localName;
|
var moreRecent = remoteMoreRecent ? remoteName : localName;
|
||||||
msg += "The most recent version, '" + moreRecent + "', has been kept.";
|
msg += Zotero.getString('sync.conflict.recentVersionKept', moreRecent);
|
||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function _generateCollectionItemMergeAlertMessage() {
|
function _generateCollectionItemMergeAlertMessage() {
|
||||||
// TODO: localize
|
var msg = Zotero.getString('sync.conflict.collectionItemMerge.alert')
|
||||||
var msg = "One or more Zotero items have been added to and/or removed "
|
+ Zotero.getString('sync.conflict.viewErrorConsole', (Zotero.isStandalone ? "" : "Firefox "));
|
||||||
+ "from the same collection on multiple computers since the last sync.\n\n"
|
|
||||||
+ "View the " + (Zotero.isStandalone ? "" : "Firefox ")
|
|
||||||
+ "Error Console for the full list of such changes.";
|
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3779,11 +3747,7 @@ Zotero.Sync.Server.Data = new function() {
|
||||||
* @param {Integer[]} addedItemIDs
|
* @param {Integer[]} addedItemIDs
|
||||||
*/
|
*/
|
||||||
function _generateCollectionItemMergeLogMessage(collectionName, addedItemIDs) {
|
function _generateCollectionItemMergeLogMessage(collectionName, addedItemIDs) {
|
||||||
// TODO: localize
|
var introMsg = Zotero.getString('sync.conflict.collectionItemMerge.log', collectionName);
|
||||||
var introMsg = "Zotero items in the collection '" + collectionName + "' have been "
|
|
||||||
+ "added and/or removed on multiple computers since the last sync. "
|
|
||||||
|
|
||||||
introMsg += "The following items have been added to the collection:";
|
|
||||||
var itemText = [];
|
var itemText = [];
|
||||||
var max = addedItemIDs.length;
|
var max = addedItemIDs.length;
|
||||||
for (var i=0; i<max; i++) {
|
for (var i=0; i<max; i++) {
|
||||||
|
@ -3807,12 +3771,8 @@ Zotero.Sync.Server.Data = new function() {
|
||||||
|
|
||||||
|
|
||||||
function _generateTagItemMergeAlertMessage() {
|
function _generateTagItemMergeAlertMessage() {
|
||||||
// TODO: localize
|
var msg = Zotero.getString('sync.conflict.tagItemMerge.alert')
|
||||||
var msg = "One or more Zotero tags have been added to and/or removed from "
|
+ Zotero.getString('sync.conflict.viewErrorConsole', (Zotero.isStandalone ? "" : "Firefox "));
|
||||||
+ "items on multiple computers since the last sync. "
|
|
||||||
+ "The different sets of tags have been combined.\n\n"
|
|
||||||
+ "View the " + (Zotero.isStandalone ? "" : "Firefox ")
|
|
||||||
+ "Error Console for the full list of such changes.";
|
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3823,15 +3783,13 @@ Zotero.Sync.Server.Data = new function() {
|
||||||
* @param {Boolean} remoteIsTarget
|
* @param {Boolean} remoteIsTarget
|
||||||
*/
|
*/
|
||||||
function _generateTagItemMergeLogMessage(tagName, addedItemIDs, remoteIsTarget) {
|
function _generateTagItemMergeLogMessage(tagName, addedItemIDs, remoteIsTarget) {
|
||||||
// TODO: localize
|
var introMsg = Zotero.getString('sync.conflict.tagItemMerge.log', tagName);
|
||||||
var introMsg = "The Zotero tag '" + tagName + "' has been added to and/or "
|
|
||||||
+ "removed from items on multiple computers since the last sync. "
|
|
||||||
|
|
||||||
if (remoteIsTarget) {
|
if (remoteIsTarget) {
|
||||||
introMsg += "It has been added to the following remote items:";
|
introMsg += Zotero.getString('sync.conflict.tag.addedToRemote');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
introMsg += "It has been added to the following local items:";
|
introMsg += Zotero.getString('sync.conflict.tag.addedToLocal');
|
||||||
}
|
}
|
||||||
var itemText = [];
|
var itemText = [];
|
||||||
for each(var id in addedItemIDs) {
|
for each(var id in addedItemIDs) {
|
||||||
|
@ -3996,9 +3954,7 @@ Zotero.Sync.Server.Data = new function() {
|
||||||
var path = item.attachment.path;
|
var path = item.attachment.path;
|
||||||
if (path != _xmlize(path)) {
|
if (path != _xmlize(path)) {
|
||||||
var filename = item.attachment.path.substr(8);
|
var filename = item.attachment.path.substr(8);
|
||||||
// TODO: localize
|
var msg = Zotero.getString('sync.error.invalidCharsFilename', filename);
|
||||||
var msg = "The filename '" + filename + "' contains invalid characters.\n\nRename the file and try again. "
|
|
||||||
+ "If you rename the file via the OS, you will need to relink it in Zotero.";
|
|
||||||
var e = new Zotero.Error(msg, 0, { dialogButtonText: null });
|
var e = new Zotero.Error(msg, 0, { dialogButtonText: null });
|
||||||
throw (e);
|
throw (e);
|
||||||
|
|
||||||
|
|
|
@ -556,16 +556,6 @@ Components.utils.import("resource://gre/modules/Services.jsm");
|
||||||
var dir = Zotero.getProfileDirectory();
|
var dir = Zotero.getProfileDirectory();
|
||||||
dir.append('zotero');
|
dir.append('zotero');
|
||||||
|
|
||||||
var zs = Zotero.getString('app.standalone');
|
|
||||||
var zf = Zotero.getString('app.firefox');
|
|
||||||
// TODO: localize
|
|
||||||
var msg = "The currently selected data directory is not compatible "
|
|
||||||
+ "with " + zs + ", which can share a database only with "
|
|
||||||
+ zf + " 2.1b3 or later."
|
|
||||||
+ "\n\n"
|
|
||||||
+ "Upgrade to the latest version of " + zf + " first or select a "
|
|
||||||
+ "different data directory for use with " + zs + ".";
|
|
||||||
|
|
||||||
var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
||||||
.createInstance(Components.interfaces.nsIPromptService);
|
.createInstance(Components.interfaces.nsIPromptService);
|
||||||
var buttonFlags = (ps.BUTTON_POS_0) * (ps.BUTTON_TITLE_IS_STRING)
|
var buttonFlags = (ps.BUTTON_POS_0) * (ps.BUTTON_TITLE_IS_STRING)
|
||||||
|
@ -574,13 +564,12 @@ Components.utils.import("resource://gre/modules/Services.jsm");
|
||||||
+ ps.BUTTON_POS_2_DEFAULT;
|
+ ps.BUTTON_POS_2_DEFAULT;
|
||||||
var index = ps.confirmEx(
|
var index = ps.confirmEx(
|
||||||
null,
|
null,
|
||||||
// TODO: localize
|
Zotero.getString('dataDir.incompatibleDbVersion.title'),
|
||||||
"Incompatible Database Version",
|
Zotero.getString('dataDir.incompatibleDbVersion.text'),
|
||||||
msg,
|
|
||||||
buttonFlags,
|
buttonFlags,
|
||||||
"Use Default",
|
Zotero.getString('general.useDefault'),
|
||||||
Zotero.getString('dataDir.standaloneMigration.selectCustom'),
|
Zotero.getString('dataDir.standaloneMigration.selectCustom'),
|
||||||
"Quit",
|
Zotero.getString('general.quit'),
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
|
@ -1081,13 +1070,8 @@ Components.utils.import("resource://gre/modules/Services.jsm");
|
||||||
else {
|
else {
|
||||||
var buttonFlags = ps.STD_YES_NO_BUTTONS;
|
var buttonFlags = ps.STD_YES_NO_BUTTONS;
|
||||||
var index = ps.confirmEx(null,
|
var index = ps.confirmEx(null,
|
||||||
//Zotero.getString('dataDir.selectedDirEmpty.title'),
|
Zotero.getString('dataDir.selectedDirEmpty.title'),
|
||||||
//Zotero.getString('dataDir.selectedDirEmpty.text'),
|
Zotero.getString('dataDir.selectedDirEmpty.text'),
|
||||||
'Directory Empty',
|
|
||||||
'The directory you selected is empty. To move an existing Zotero data directory, '
|
|
||||||
+ 'you will need to manually copy files from the existing data directory to the new location. '
|
|
||||||
+ 'See http://zotero.org/support/zotero_data for more information.\n\nUse the new directory?',
|
|
||||||
|
|
||||||
buttonFlags, null, null, null, null, {});
|
buttonFlags, null, null, null, null, {});
|
||||||
|
|
||||||
// Not OK -- return to file picker
|
// Not OK -- return to file picker
|
||||||
|
@ -1735,15 +1719,15 @@ Components.utils.import("resource://gre/modules/Services.jsm");
|
||||||
|
|
||||||
var modes = {
|
var modes = {
|
||||||
titleCreatorYear: {
|
titleCreatorYear: {
|
||||||
label: "Title, Creator, Year"
|
label: Zotero.getString('quickSearch.mode.titleCreatorYear')
|
||||||
},
|
},
|
||||||
|
|
||||||
fields: {
|
fields: {
|
||||||
label: "All Fields & Tags"
|
label: Zotero.getString('quickSearch.mode.fieldsAndTags')
|
||||||
},
|
},
|
||||||
|
|
||||||
everything: {
|
everything: {
|
||||||
label: "Everything"
|
label: Zotero.getString('quickSearch.mode.everything')
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1275,8 +1275,7 @@ var ZoteroPane = new function()
|
||||||
if (itemGroup.isDuplicates()) {
|
if (itemGroup.isDuplicates()) {
|
||||||
if (!itemGroup.editable) {
|
if (!itemGroup.editable) {
|
||||||
if (count) {
|
if (count) {
|
||||||
// TODO: localize
|
var msg = Zotero.getString('pane.item.duplicates.writeAccessRequired');
|
||||||
var msg = "Library write access is required to merge items.";
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var msg = Zotero.getString('pane.item.selected.zero');
|
var msg = Zotero.getString('pane.item.selected.zero');
|
||||||
|
@ -1302,7 +1301,7 @@ var ZoteroPane = new function()
|
||||||
Zotero_Duplicates_Pane.setItems(this.getSelectedItems(), displayNumItemsOnTypeError);
|
Zotero_Duplicates_Pane.setItems(this.getSelectedItems(), displayNumItemsOnTypeError);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var msg = Zotero.getString('pane.item.selectToMerge');
|
var msg = Zotero.getString('pane.item.duplicates.selectToMerge');
|
||||||
this.setItemPaneMessage(msg);
|
this.setItemPaneMessage(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1415,12 +1414,10 @@ var ZoteroPane = new function()
|
||||||
+ (ps.BUTTON_POS_1) * (ps.BUTTON_TITLE_CANCEL);
|
+ (ps.BUTTON_POS_1) * (ps.BUTTON_TITLE_CANCEL);
|
||||||
var index = ps.confirmEx(
|
var index = ps.confirmEx(
|
||||||
null,
|
null,
|
||||||
// TODO: localize
|
Zotero.getString('pane.item.attachments.PDF.installTools.title'),
|
||||||
"PDF Tools Not Installed",
|
Zotero.getString('pane.item.attachments.PDF.installTools.text'),
|
||||||
"To use this feature, you must first install the PDF tools in "
|
|
||||||
+ "the Zotero preferences.",
|
|
||||||
buttonFlags,
|
buttonFlags,
|
||||||
"Open Preferences",
|
Zotero.getString('general.openPreferences'),
|
||||||
null, null, null, {}
|
null, null, null, {}
|
||||||
);
|
);
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
|
@ -2943,9 +2940,9 @@ var ZoteroPane = new function()
|
||||||
var input = {};
|
var input = {};
|
||||||
var check = {value : false};
|
var check = {value : false};
|
||||||
|
|
||||||
// TODO: Localize
|
|
||||||
// TODO: Allow title to be specified?
|
// 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;
|
if (!result || !input.value) return false;
|
||||||
|
|
||||||
// Create a new attachment
|
// Create a new attachment
|
||||||
|
|
|
@ -10,3 +10,4 @@
|
||||||
<!ENTITY zotero.thanks "Special Thanks:">
|
<!ENTITY zotero.thanks "Special Thanks:">
|
||||||
<!ENTITY zotero.about.close "Close">
|
<!ENTITY zotero.about.close "Close">
|
||||||
<!ENTITY zotero.moreCreditsAndAcknowledgements "More Credits & Acknowledgements">
|
<!ENTITY zotero.moreCreditsAndAcknowledgements "More Credits & Acknowledgements">
|
||||||
|
<!ENTITY zotero.citationProcessing "Citation & Bibliography Processing">
|
3
chrome/locale/en-US/zotero/merge.dtd
Normal file
3
chrome/locale/en-US/zotero/merge.dtd
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<!ENTITY zotero.merge.title "Conflict Resolution">
|
||||||
|
<!ENTITY zotero.merge.of "of">
|
||||||
|
<!ENTITY zotero.merge.deleted "Deleted">
|
|
@ -65,6 +65,9 @@
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "as needed">
|
<!ENTITY zotero.preferences.sync.fileSyncing.download.onDemand "as needed">
|
||||||
<!ENTITY zotero.preferences.sync.fileSyncing.tos1 "By using Zotero storage, you agree to become bound by its">
|
<!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.fileSyncing.tos2 "terms and conditions">
|
||||||
|
<!ENTITY zotero.preferences.sync.reset.warning1 "The following operations are for use only in rare, specific situations and should not be used for general troubleshooting. In many cases, resetting will cause additional problems. See ">
|
||||||
|
<!ENTITY zotero.preferences.sync.reset.warning2 "Sync Reset Options">
|
||||||
|
<!ENTITY zotero.preferences.sync.reset.warning3 " for more information.">
|
||||||
<!ENTITY zotero.preferences.sync.reset.fullSync "Full Sync with Zotero Server">
|
<!ENTITY zotero.preferences.sync.reset.fullSync "Full Sync with Zotero Server">
|
||||||
<!ENTITY zotero.preferences.sync.reset.fullSync.desc "Merge local Zotero data with data from the sync server, ignoring sync history.">
|
<!ENTITY zotero.preferences.sync.reset.fullSync.desc "Merge local Zotero data with data from the sync server, ignoring sync history.">
|
||||||
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Restore from Zotero Server">
|
<!ENTITY zotero.preferences.sync.reset.restoreFromServer "Restore from Zotero Server">
|
||||||
|
@ -159,6 +162,7 @@
|
||||||
<!ENTITY zotero.preferences.proxies.a_variable "%a - Any string">
|
<!ENTITY zotero.preferences.proxies.a_variable "%a - Any string">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.prefpane.advanced "Advanced">
|
<!ENTITY zotero.preferences.prefpane.advanced "Advanced">
|
||||||
|
<!ENTITY zotero.preferences.advanced.filesAndFolders "Files and Folders">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.prefpane.locate "Locate">
|
<!ENTITY zotero.preferences.prefpane.locate "Locate">
|
||||||
<!ENTITY zotero.preferences.locate.locateEngineManager "Article Lookup Engine Manager">
|
<!ENTITY zotero.preferences.locate.locateEngineManager "Article Lookup Engine Manager">
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
<!ENTITY zotero.general.edit "Edit">
|
<!ENTITY zotero.general.edit "Edit">
|
||||||
<!ENTITY zotero.general.delete "Delete">
|
<!ENTITY zotero.general.delete "Delete">
|
||||||
|
|
||||||
|
<!ENTITY zotero.errorReport.title "Zotero Error Report">
|
||||||
<!ENTITY zotero.errorReport.unrelatedMessages "The error log may include messages unrelated to Zotero.">
|
<!ENTITY zotero.errorReport.unrelatedMessages "The error log may include messages unrelated to Zotero.">
|
||||||
<!ENTITY zotero.errorReport.submissionInProgress "Please wait while the error report is submitted.">
|
<!ENTITY zotero.errorReport.submissionInProgress "Please wait while the error report is submitted.">
|
||||||
<!ENTITY zotero.errorReport.submitted "Your error report has been submitted.">
|
<!ENTITY zotero.errorReport.submitted "Your error report has been submitted.">
|
||||||
|
@ -12,6 +13,7 @@
|
||||||
<!ENTITY zotero.errorReport.postToForums "Please post a message to the Zotero forums (forums.zotero.org) with this Report ID, a description of the problem, and any steps necessary to reproduce it.">
|
<!ENTITY zotero.errorReport.postToForums "Please post a message to the Zotero forums (forums.zotero.org) with this Report ID, a description of the problem, and any steps necessary to reproduce it.">
|
||||||
<!ENTITY zotero.errorReport.notReviewed "Error reports are not reviewed unless referred to in the forums.">
|
<!ENTITY zotero.errorReport.notReviewed "Error reports are not reviewed unless referred to in the forums.">
|
||||||
|
|
||||||
|
<!ENTITY zotero.upgrade.title "Zotero Upgrade Wizard">
|
||||||
<!ENTITY zotero.upgrade.newVersionInstalled "You have installed a new version of Zotero.">
|
<!ENTITY zotero.upgrade.newVersionInstalled "You have installed a new version of Zotero.">
|
||||||
<!ENTITY zotero.upgrade.upgradeRequired "Your Zotero database must be upgraded to work with the new version.">
|
<!ENTITY zotero.upgrade.upgradeRequired "Your Zotero database must be upgraded to work with the new version.">
|
||||||
<!ENTITY zotero.upgrade.autoBackup "Your existing database will be backed up automatically before any changes are made.">
|
<!ENTITY zotero.upgrade.autoBackup "Your existing database will be backed up automatically before any changes are made.">
|
||||||
|
|
|
@ -14,6 +14,9 @@ general.restartLater = Restart later
|
||||||
general.restartApp = Restart %S
|
general.restartApp = Restart %S
|
||||||
general.errorHasOccurred = An error has occurred.
|
general.errorHasOccurred = An error has occurred.
|
||||||
general.unknownErrorOccurred = An unknown error occurred.
|
general.unknownErrorOccurred = An unknown error occurred.
|
||||||
|
general.invalidResponseServer = Invalid response from server.
|
||||||
|
general.tryAgainLater = Please try again in a few minutes.
|
||||||
|
general.serverError = The server returned an error. Please try again.
|
||||||
general.restartFirefox = Please restart %S.
|
general.restartFirefox = Please restart %S.
|
||||||
general.restartFirefoxAndTryAgain = Please restart %S and try again.
|
general.restartFirefoxAndTryAgain = Please restart %S and try again.
|
||||||
general.checkForUpdate = Check for update
|
general.checkForUpdate = Check for update
|
||||||
|
@ -35,8 +38,12 @@ general.seeForMoreInformation = See %S for more information.
|
||||||
general.enable = Enable
|
general.enable = Enable
|
||||||
general.disable = Disable
|
general.disable = Disable
|
||||||
general.remove = Remove
|
general.remove = Remove
|
||||||
|
general.reset = Reset
|
||||||
|
general.quit = Quit
|
||||||
|
general.useDefault = Use Default
|
||||||
general.openDocumentation = Open Documentation
|
general.openDocumentation = Open Documentation
|
||||||
general.numMore = %S more…
|
general.numMore = %S more…
|
||||||
|
general.openPreferences = Open Preferences
|
||||||
|
|
||||||
general.operationInProgress = A Zotero operation is currently in progress.
|
general.operationInProgress = A Zotero operation is currently in progress.
|
||||||
general.operationInProgress.waitUntilFinished = Please wait until it has finished.
|
general.operationInProgress.waitUntilFinished = Please wait until it has finished.
|
||||||
|
@ -68,6 +75,10 @@ errorReport.advanceMessage = Press %S to send an error report to the Zotero de
|
||||||
errorReport.stepsToReproduce = Steps to Reproduce:
|
errorReport.stepsToReproduce = Steps to Reproduce:
|
||||||
errorReport.expectedResult = Expected result:
|
errorReport.expectedResult = Expected result:
|
||||||
errorReport.actualResult = Actual result:
|
errorReport.actualResult = Actual result:
|
||||||
|
errorReport.noNetworkConnection = No network connection
|
||||||
|
errorReport.invalidResponseRepository = Invalid response from repository
|
||||||
|
errorReport.repoCannotBeContacted = Repository cannot be contacted
|
||||||
|
|
||||||
|
|
||||||
attachmentBasePath.selectDir = Choose Base Directory
|
attachmentBasePath.selectDir = Choose Base Directory
|
||||||
attachmentBasePath.chooseNewPath.title = Confirm New Base Directory
|
attachmentBasePath.chooseNewPath.title = Confirm New Base Directory
|
||||||
|
@ -87,6 +98,10 @@ dataDir.useProfileDir = Use %S profile directory
|
||||||
dataDir.selectDir = Select a Zotero data directory
|
dataDir.selectDir = Select a Zotero data directory
|
||||||
dataDir.selectedDirNonEmpty.title = Directory Not Empty
|
dataDir.selectedDirNonEmpty.title = Directory Not Empty
|
||||||
dataDir.selectedDirNonEmpty.text = The directory you selected is not empty and does not appear to be a Zotero data directory.\n\nCreate Zotero files in this directory anyway?
|
dataDir.selectedDirNonEmpty.text = The directory you selected is not empty and does not appear to be a Zotero data directory.\n\nCreate Zotero files in this directory anyway?
|
||||||
|
dataDir.selectedDirEmpty.title = Directory Empty
|
||||||
|
dataDir.selectedDirEmpty.text = The directory you selected is empty. To move an existing Zotero data directory, you will need to manually copy files from the existing data directory to the new location. See http://zotero.org/support/zotero_data for more information.\n\nUse the new directory?
|
||||||
|
dataDir.incompatibleDbVersion.title = Incompatible Database Version
|
||||||
|
dataDir.incompatibleDbVersion.text = The currently selected data directory is not compatible with Zotero Standalone, which can share a database only with Zotero for Firefox 2.1b3 or later.\n\nUpgrade to the latest version of Zotero for Firefox first or select a different data directory for use with Zotero Standalone.
|
||||||
dataDir.standaloneMigration.title = Existing Zotero Library Found
|
dataDir.standaloneMigration.title = Existing Zotero Library Found
|
||||||
dataDir.standaloneMigration.description = This appears to be your first time using %1$S. Would you like %1$S to import settings from %2$S and use your existing data directory?
|
dataDir.standaloneMigration.description = This appears to be your first time using %1$S. Would you like %1$S to import settings from %2$S and use your existing data directory?
|
||||||
dataDir.standaloneMigration.multipleProfiles = %1$S will share its data directory with the most recently used profile.
|
dataDir.standaloneMigration.multipleProfiles = %1$S will share its data directory with the most recently used profile.
|
||||||
|
@ -126,6 +141,7 @@ pane.collections.newSavedSeach = New Saved Search
|
||||||
pane.collections.savedSearchName = Enter a name for this saved search:
|
pane.collections.savedSearchName = Enter a name for this saved search:
|
||||||
pane.collections.rename = Rename collection:
|
pane.collections.rename = Rename collection:
|
||||||
pane.collections.library = My Library
|
pane.collections.library = My Library
|
||||||
|
pane.collections.groupLibraries = Group Libraries
|
||||||
pane.collections.trash = Trash
|
pane.collections.trash = Trash
|
||||||
pane.collections.untitled = Untitled
|
pane.collections.untitled = Untitled
|
||||||
pane.collections.unfiled = Unfiled Items
|
pane.collections.unfiled = Unfiled Items
|
||||||
|
@ -156,6 +172,8 @@ tagColorChooser.numberKeyInstructions = You can add this tag to selecte
|
||||||
tagColorChooser.maxTags = Up to %S tags in each library can have colors assigned.
|
tagColorChooser.maxTags = Up to %S tags in each library can have colors assigned.
|
||||||
|
|
||||||
pane.items.loading = Loading items list…
|
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.title = Move to Trash
|
||||||
pane.items.trash = Are you sure you want to move the selected item to the 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?
|
pane.items.trash.multiple = Are you sure you want to move the selected items to the Trash?
|
||||||
|
@ -195,7 +213,12 @@ pane.item.selected.multiple = %S items selected
|
||||||
pane.item.unselected.zero = No items in this view
|
pane.item.unselected.zero = No items in this view
|
||||||
pane.item.unselected.singular = %S item in this view
|
pane.item.unselected.singular = %S item in this view
|
||||||
pane.item.unselected.plural = %S items 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.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:
|
pane.item.changeType.text = Are you sure you want to change the item type?\n\nThe following fields will be lost:
|
||||||
|
@ -221,14 +244,15 @@ pane.item.attachments.count.zero = %S attachments:
|
||||||
pane.item.attachments.count.singular = %S attachment:
|
pane.item.attachments.count.singular = %S attachment:
|
||||||
pane.item.attachments.count.plural = %S attachments:
|
pane.item.attachments.count.plural = %S attachments:
|
||||||
pane.item.attachments.select = Select a File
|
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.noteEditor.clickHere = click here
|
||||||
pane.item.tags = Tags:
|
|
||||||
pane.item.tags.count.zero = %S tags:
|
pane.item.tags.count.zero = %S tags:
|
||||||
pane.item.tags.count.singular = %S tag:
|
pane.item.tags.count.singular = %S tag:
|
||||||
pane.item.tags.count.plural = %S tags:
|
pane.item.tags.count.plural = %S tags:
|
||||||
pane.item.tags.icon.user = User-added tag
|
pane.item.tags.icon.user = User-added tag
|
||||||
pane.item.tags.icon.automatic = Automatically 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.zero = %S related:
|
||||||
pane.item.related.count.singular = %S related:
|
pane.item.related.count.singular = %S related:
|
||||||
pane.item.related.count.plural = %S related:
|
pane.item.related.count.plural = %S related:
|
||||||
|
@ -473,6 +497,19 @@ zotero.preferences.launchNonNativeFiles = Open PDFs and other
|
||||||
zotero.preferences.openurl.resolversFound.zero = %S resolvers found
|
zotero.preferences.openurl.resolversFound.zero = %S resolvers found
|
||||||
zotero.preferences.openurl.resolversFound.singular = %S resolver found
|
zotero.preferences.openurl.resolversFound.singular = %S resolver found
|
||||||
zotero.preferences.openurl.resolversFound.plural = %S resolvers found
|
zotero.preferences.openurl.resolversFound.plural = %S resolvers found
|
||||||
|
|
||||||
|
zotero.preferences.sync.purgeStorage.title = Purge Attachment Files on Zotero Servers?
|
||||||
|
zotero.preferences.sync.purgeStorage.desc = If you plan to use WebDAV for file syncing and you previously synced attachment files in My Library to the Zotero servers, you can purge those files from the Zotero servers to give you more storage space for groups.\n\nYou can purge files at any time from your account settings on zotero.org.
|
||||||
|
zotero.preferences.sync.purgeStorage.confirmButton = Purge Files Now
|
||||||
|
zotero.preferences.sync.purgeStorage.cancelButton = Do Not Purge
|
||||||
|
zotero.preferences.sync.reset.userInfoMissing = You must enter a username and password in the %S tab before using the reset options.
|
||||||
|
zotero.preferences.sync.reset.restoreFromServer = All data in this copy of Zotero will be erased and replaced with data belonging to user '%S' on the Zotero server.
|
||||||
|
zotero.preferences.sync.reset.replaceLocalData = Replace Local Data
|
||||||
|
zotero.preferences.sync.reset.restartToComplete = Firefox must be restarted to complete the restore process.
|
||||||
|
zotero.preferences.sync.reset.restoreToServer = All data belonging to user '%S' on the Zotero server will be erased and replaced with data from this copy of Zotero.\n\nDepending on the size of your library, there may be a delay before your data is available on the server.
|
||||||
|
zotero.preferences.sync.reset.replaceServerData = Replace Server Data
|
||||||
|
zotero.preferences.sync.reset.fileSyncHistory = All file sync history will be cleared.\n\nAny local attachment files that do not exist on the storage server will be uploaded on the next sync.
|
||||||
|
|
||||||
zotero.preferences.search.rebuildIndex = Rebuild Index
|
zotero.preferences.search.rebuildIndex = Rebuild Index
|
||||||
zotero.preferences.search.rebuildWarning = Do you want to rebuild the entire index? This may take a while.\n\nTo index only items that haven't been indexed, use %S.
|
zotero.preferences.search.rebuildWarning = Do you want to rebuild the entire index? This may take a while.\n\nTo index only items that haven't been indexed, use %S.
|
||||||
zotero.preferences.search.clearIndex = Clear Index
|
zotero.preferences.search.clearIndex = Clear Index
|
||||||
|
@ -509,6 +546,10 @@ zotero.preferences.advanced.resetTranslators.changesLost = Any new or modifie
|
||||||
zotero.preferences.advanced.resetStyles = Reset Styles
|
zotero.preferences.advanced.resetStyles = Reset Styles
|
||||||
zotero.preferences.advanced.resetStyles.changesLost = Any new or modified styles will be lost.
|
zotero.preferences.advanced.resetStyles.changesLost = Any new or modified styles will be lost.
|
||||||
|
|
||||||
|
zotero.preferences.advanced.debug.title = Debug Output Submitted
|
||||||
|
zotero.preferences.advanced.debug.sent = Debug output has been sent to the Zotero server.\n\nThe Debug ID is D%S.
|
||||||
|
zotero.preferences.advanced.debug.error = An error occurred sending debug output.
|
||||||
|
|
||||||
dragAndDrop.existingFiles = The following files already existed in the destination directory and were not copied:
|
dragAndDrop.existingFiles = The following files already existed in the destination directory and were not copied:
|
||||||
dragAndDrop.filesNotFound = The following files were not found and could not be copied:
|
dragAndDrop.filesNotFound = The following files were not found and could not be copied:
|
||||||
|
|
||||||
|
@ -518,7 +559,8 @@ fileInterface.import = Import
|
||||||
fileInterface.export = Export
|
fileInterface.export = Export
|
||||||
fileInterface.exportedItems = Exported Items
|
fileInterface.exportedItems = Exported Items
|
||||||
fileInterface.imported = Imported
|
fileInterface.imported = Imported
|
||||||
fileInterface.fileFormatUnsupported = No translator could be found for the given file.
|
fileInterface.unsupportedFormat = The selected file is not in a supported format.
|
||||||
|
fileInterface.viewSupportedFormats = View Supported Formats…
|
||||||
fileInterface.untitledBibliography = Untitled Bibliography
|
fileInterface.untitledBibliography = Untitled Bibliography
|
||||||
fileInterface.bibliographyHTMLTitle = Bibliography
|
fileInterface.bibliographyHTMLTitle = Bibliography
|
||||||
fileInterface.importError = An error occurred while trying to import the selected file. Please ensure that the file is valid and try again.
|
fileInterface.importError = An error occurred while trying to import the selected file. Please ensure that the file is valid and try again.
|
||||||
|
@ -527,6 +569,10 @@ fileInterface.noReferencesError = The items you have selected contain no referen
|
||||||
fileInterface.bibliographyGenerationError = An error occurred generating your bibliography. Please try again.
|
fileInterface.bibliographyGenerationError = An error occurred generating your bibliography. Please try again.
|
||||||
fileInterface.exportError = An error occurred while trying to export the selected file.
|
fileInterface.exportError = An error occurred while trying to export the selected file.
|
||||||
|
|
||||||
|
quickSearch.mode.titleCreatorYear = Title, Creator, Year
|
||||||
|
quickSearch.mode.fieldsAndTags = All Fields & Tags
|
||||||
|
quickSearch.mode.everything = Everything
|
||||||
|
|
||||||
advancedSearchMode = Advanced search mode — press Enter to search.
|
advancedSearchMode = Advanced search mode — press Enter to search.
|
||||||
searchInProgress = Search in progress — please wait.
|
searchInProgress = Search in progress — please wait.
|
||||||
|
|
||||||
|
@ -677,6 +723,7 @@ styles.abbreviations.title = Load Abbreviations
|
||||||
styles.abbreviations.parseError = The abbreviations file "%1$S" is not valid JSON.
|
styles.abbreviations.parseError = The abbreviations file "%1$S" is not valid JSON.
|
||||||
styles.abbreviations.missingInfo = The abbreviations file "%1$S" does not specify a complete info block.
|
styles.abbreviations.missingInfo = The abbreviations file "%1$S" does not specify a complete info block.
|
||||||
|
|
||||||
|
sync.sync = Sync
|
||||||
sync.cancel = Cancel Sync
|
sync.cancel = Cancel Sync
|
||||||
sync.openSyncPreferences = Open Sync Preferences
|
sync.openSyncPreferences = Open Sync Preferences
|
||||||
sync.resetGroupAndSync = Reset Group and Sync
|
sync.resetGroupAndSync = Reset Group and Sync
|
||||||
|
@ -686,8 +733,10 @@ sync.remoteObject = Remote Object
|
||||||
sync.mergedObject = Merged Object
|
sync.mergedObject = Merged Object
|
||||||
|
|
||||||
sync.error.usernameNotSet = Username not set
|
sync.error.usernameNotSet = Username not set
|
||||||
|
sync.error.usernameNotSet.text = You must enter your zotero.org username and password in the Zotero preferences to sync with the Zotero server.
|
||||||
sync.error.passwordNotSet = Password not set
|
sync.error.passwordNotSet = Password not set
|
||||||
sync.error.invalidLogin = Invalid username or password
|
sync.error.invalidLogin = Invalid username or password
|
||||||
|
sync.error.invalidLogin.text = The Zotero sync server did not accept your username and password.\n\nPlease check that you have entered your zotero.org login information correctly in the Zotero sync preferences.
|
||||||
sync.error.enterPassword = Please enter a password.
|
sync.error.enterPassword = Please enter a password.
|
||||||
sync.error.loginManagerCorrupted1 = Zotero cannot access your login information, likely due to a corrupted %S login manager database.
|
sync.error.loginManagerCorrupted1 = Zotero cannot access your login information, likely due to a corrupted %S login manager database.
|
||||||
sync.error.loginManagerCorrupted2 = Close %1$S, back up and delete signons.* from your %2$S profile, and re-enter your Zotero login information in the Sync pane of the Zotero preferences.
|
sync.error.loginManagerCorrupted2 = Close %1$S, back up and delete signons.* from your %2$S profile, and re-enter your Zotero login information in the Sync pane of the Zotero preferences.
|
||||||
|
@ -696,8 +745,43 @@ sync.error.syncInProgress.wait = Wait for the previous sync to complete or rest
|
||||||
sync.error.writeAccessLost = You no longer have write access to the Zotero group '%S', and files you've added or edited cannot be synced to the server.
|
sync.error.writeAccessLost = You no longer have write access to the Zotero group '%S', and files you've added or edited cannot be synced to the server.
|
||||||
sync.error.groupWillBeReset = If you continue, your copy of the group will be reset to its state on the server, and local modifications to items and files will be lost.
|
sync.error.groupWillBeReset = If you continue, your copy of the group will be reset to its state on the server, and local modifications to items and files will be lost.
|
||||||
sync.error.copyChangedItems = If you would like a chance to copy your changes elsewhere or to request write access from a group administrator, cancel the sync now.
|
sync.error.copyChangedItems = If you would like a chance to copy your changes elsewhere or to request write access from a group administrator, cancel the sync now.
|
||||||
sync.error.manualInterventionRequired = An automatic sync resulted in a conflict that requires manual intervention.
|
sync.error.manualInterventionRequired = Conflicts have suspended automatic syncing.
|
||||||
sync.error.clickSyncIcon = Click the sync icon to sync manually.
|
sync.error.clickSyncIcon = Click the sync icon to resolve them.
|
||||||
|
sync.error.invalidClock = The system clock is set to an invalid time. You will need to correct this to sync with the Zotero server.
|
||||||
|
sync.error.sslConnectionError = SSL connection error
|
||||||
|
sync.error.checkConnection = Error connecting to server. Check your Internet connection.
|
||||||
|
sync.error.emptyResponseServer = Empty response from server.
|
||||||
|
sync.error.invalidCharsFilename = The filename '%S' contains invalid characters.\n\nRename the file and try again. If you rename the file via the OS, you will need to relink it in Zotero.
|
||||||
|
|
||||||
|
sync.lastSyncWithDifferentAccount = This Zotero database was last synced with a different zotero.org account ('%1$S') from the current one ('%2$S').
|
||||||
|
sync.localDataWillBeCombined = If you continue, local Zotero data will be combined with data from the '%S' account stored on the server.
|
||||||
|
sync.localGroupsWillBeRemoved1 = Local groups, including any with changed items, will also be removed.
|
||||||
|
sync.avoidCombiningData = To avoid combining or losing data, revert to the '%S' account or use the Reset options in the Sync pane of the Zotero preferences.
|
||||||
|
sync.localGroupsWillBeRemoved2 = If you continue, local groups, including any with changed items, will be removed and replaced with groups linked to the '%1$S' account.\n\nTo avoid losing local changes to groups, be sure you have synced with the '%2$S' account before syncing with the '%1$S' account.
|
||||||
|
|
||||||
|
sync.conflict.autoChange.alert = One or more locally deleted Zotero %S have been modified remotely since the last sync.\u0020
|
||||||
|
sync.conflict.autoChange.log = A Zotero %S has changed both locally and remotely since the last sync:\n\n
|
||||||
|
sync.conflict.remoteVersionsKept = The remote versions have been kept.
|
||||||
|
sync.conflict.remoteVersionKept = The remote version has been kept.
|
||||||
|
sync.conflict.localVersionsKept = The local versions have been kept.
|
||||||
|
sync.conflict.localVersionKept = The local version has been kept.
|
||||||
|
sync.conflict.recentVersionsKept = The most recent versions have been kept.
|
||||||
|
sync.conflict.recentVersionKept = The most recent version, '%S', has been kept.
|
||||||
|
sync.conflict.viewErrorConsole = \n\nView the %S Error Console for the full list of such changes.
|
||||||
|
sync.conflict.localVersion = Local version: %S\n
|
||||||
|
sync.conflict.remoteVersion = Remote version: %S\n
|
||||||
|
sync.conflict.deleted = [deleted]
|
||||||
|
sync.conflict.collectionItemMerge.alert = One or more Zotero items have been added to and/or removed from the same collection on multiple computers since the last sync.
|
||||||
|
sync.conflict.collectionItemMerge.log = Zotero items in the collection '%S' have been added and/or removed on multiple computers since the last sync. The following items have been added to the collection:
|
||||||
|
sync.conflict.tagItemMerge.alert = One or more Zotero tags have been added to and/or removed from items on multiple computers since the last sync. The different sets of tags have been combined.
|
||||||
|
sync.conflict.tagItemMerge.log = The Zotero tag '%S' has been added to and/or removed from items on multiple computers since the last sync.\u0020
|
||||||
|
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.notYetSynced = Not yet synced
|
||||||
sync.status.lastSync = Last sync:
|
sync.status.lastSync = Last sync:
|
||||||
|
@ -721,17 +805,23 @@ sync.storage.serverConfigurationVerified = Server configuration verified
|
||||||
sync.storage.fileSyncSetUp = File sync is successfully set up.
|
sync.storage.fileSyncSetUp = File sync is successfully set up.
|
||||||
sync.storage.openAccountSettings = Open Account Settings
|
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.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.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.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.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.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.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.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.fileUploadFailed = File upload failed.
|
||||||
sync.storage.error.directoryNotFound = Directory not found
|
sync.storage.error.directoryNotFound = Directory not found
|
||||||
sync.storage.error.doesNotExist = %S does not exist.
|
sync.storage.error.doesNotExist = %S does not exist.
|
||||||
sync.storage.error.createNow = Do you want to create it now?
|
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.enterURL = Please enter a WebDAV URL.
|
||||||
sync.storage.error.webdav.invalidURL = %S is not a valid 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.
|
sync.storage.error.webdav.invalidLogin = The WebDAV server did not accept the username and password you entered.
|
||||||
|
@ -742,10 +832,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.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.seeCertOverrideDocumentation = See the certificate override documentation for more information.
|
||||||
sync.storage.error.webdav.loadURL = Load WebDAV URL
|
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.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.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.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.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.saveTag = Save Tag
|
||||||
sync.longTagFixer.saveTags = Save Tags
|
sync.longTagFixer.saveTags = Save Tags
|
||||||
|
@ -783,6 +880,18 @@ rtfScan.rtf = Rich Text Format (.rtf)
|
||||||
rtfScan.saveTitle = Select a location in which to save the formatted file
|
rtfScan.saveTitle = Select a location in which to save the formatted file
|
||||||
rtfScan.scannedFileSuffix = (Scanned)
|
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.title = Lookup Failed
|
||||||
lookup.failure.description = Zotero could not find a record for the specified identifier. Please verify the identifier and try again.
|
lookup.failure.description = Zotero could not find a record for the specified identifier. Please verify the identifier and try again.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue