From 7fcf871369e58daf392f58335ec0580c9b7b6550 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Dec 2020 08:07:45 +0100 Subject: [PATCH 01/33] Bump classgraph from 4.8.92 to 4.8.93 (#7166) Bumps [classgraph](https://github.com/classgraph/classgraph) from 4.8.92 to 4.8.93. - [Release notes](https://github.com/classgraph/classgraph/releases) - [Commits](https://github.com/classgraph/classgraph/compare/classgraph-4.8.92...classgraph-4.8.93) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d8c37708012..1504135542b 100644 --- a/build.gradle +++ b/build.gradle @@ -190,7 +190,7 @@ dependencies { implementation 'com.vladsch.flexmark:flexmark-ext-gfm-strikethrough:0.62.2' implementation 'com.vladsch.flexmark:flexmark-ext-gfm-tasklist:0.62.2' - testImplementation 'io.github.classgraph:classgraph:4.8.92' + testImplementation 'io.github.classgraph:classgraph:4.8.93' testImplementation 'org.junit.jupiter:junit-jupiter:5.7.0' testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.7.0' testImplementation 'org.junit.platform:junit-platform-launcher:1.7.0' From 113dcf45098a68ccf9b32779467f44e4fd7f2602 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 7 Dec 2020 17:56:22 +0100 Subject: [PATCH 02/33] New Crowdin updates (#7167) * New translations JabRef_en.properties (French) * New translations JabRef_en.properties (Russian) * New translations JabRef_en.properties (Persian) * New translations JabRef_en.properties (Indonesian) * New translations JabRef_en.properties (Portuguese, Brazilian) * New translations JabRef_en.properties (Vietnamese) * New translations JabRef_en.properties (Chinese Simplified) * New translations JabRef_en.properties (Turkish) * New translations JabRef_en.properties (Swedish) * New translations JabRef_en.properties (Portuguese) * New translations JabRef_en.properties (Spanish) * New translations JabRef_en.properties (Polish) * New translations JabRef_en.properties (Norwegian) * New translations JabRef_en.properties (Dutch) * New translations JabRef_en.properties (Japanese) * New translations JabRef_en.properties (Italian) * New translations JabRef_en.properties (Greek) * New translations JabRef_en.properties (German) * New translations JabRef_en.properties (Danish) * New translations JabRef_en.properties (Tagalog) --- src/main/resources/l10n/JabRef_da.properties | 26 +- src/main/resources/l10n/JabRef_de.properties | 45 +-- src/main/resources/l10n/JabRef_el.properties | 29 +- src/main/resources/l10n/JabRef_es.properties | 38 +- src/main/resources/l10n/JabRef_fa.properties | 34 +- src/main/resources/l10n/JabRef_fr.properties | 38 +- src/main/resources/l10n/JabRef_in.properties | 29 +- src/main/resources/l10n/JabRef_it.properties | 40 +-- src/main/resources/l10n/JabRef_ja.properties | 32 +- src/main/resources/l10n/JabRef_nl.properties | 29 +- src/main/resources/l10n/JabRef_no.properties | 26 +- src/main/resources/l10n/JabRef_pl.properties | 135 ++++++-- src/main/resources/l10n/JabRef_pt.properties | 28 +- .../resources/l10n/JabRef_pt_BR.properties | 36 +- src/main/resources/l10n/JabRef_ru.properties | 49 ++- src/main/resources/l10n/JabRef_sv.properties | 29 +- src/main/resources/l10n/JabRef_tl.properties | 28 +- src/main/resources/l10n/JabRef_tr.properties | 38 +- src/main/resources/l10n/JabRef_vi.properties | 27 +- src/main/resources/l10n/JabRef_zh.properties | 325 ++++++++++++++++-- 20 files changed, 552 insertions(+), 509 deletions(-) diff --git a/src/main/resources/l10n/JabRef_da.properties b/src/main/resources/l10n/JabRef_da.properties index d24fadc3a0e..28ea8fdd6d8 100644 --- a/src/main/resources/l10n/JabRef_da.properties +++ b/src/main/resources/l10n/JabRef_da.properties @@ -188,8 +188,6 @@ Default=Standard Default\ encoding=Standard kodning -Default\ grouping\ field=Standardfelt for gruppering - Delete=Slet @@ -231,8 +229,6 @@ Duplicate\ string\ name=Ikke-unikt navn på streng Duplicates\ found=Dubletter fundet -Dynamic\ groups=Dynamiske grupper - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Grupper poster dynamisk ved hjælp af et standard søgeudtryk Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Grupper poster dynamisk ved at søge efter nøgleord i et felt @@ -265,30 +261,17 @@ Entry\ editor=Postredigering Entry\ preview=Forhåndsvisning Entry\ table=Hovedtabel - Entry\ table\ columns=Tabelkolonner - Entry\ type=Posttype - Error=Fejl - Error\ occurred\ when\ parsing\ entry=En fejl opstod ved læsning af post - Error\ opening\ file=Fejl ved åbning af fil - Error\ while\ writing=En fejl opstod ved skrivning - '%0'\ exists.\ Overwrite\ file?='%0' eksisterer. Erstat filen? - Export=Eksporter - Export\ preferences=Eksporter indstillinger - Export\ preferences\ to\ file=Eksporter indstillinger til fil - Export\ to\ clipboard=Eksporter til udklipsholder - - Exporting=Eksporterer Extension=Efternavn @@ -562,10 +545,7 @@ Preferences=Indstillinger Preferences\ recorded.=Indstillinger gemt. Preview=Forhåndsvisning - - Previous\ entry=Forrige post - Primary\ sort\ criterion=Primært sorteringskriterium Problem\ with\ parsing\ entry=Problem med at læse post Processing\ %0=Arbejder %0 @@ -1089,6 +1069,12 @@ Default\ pattern=Standardmønster + + + + + + diff --git a/src/main/resources/l10n/JabRef_de.properties b/src/main/resources/l10n/JabRef_de.properties index 9f697461486..9a54a7699cf 100644 --- a/src/main/resources/l10n/JabRef_de.properties +++ b/src/main/resources/l10n/JabRef_de.properties @@ -213,8 +213,6 @@ Default=Standard Default\ encoding=Standard-Zeichenkodierung -Default\ grouping\ field=Standard Gruppierungs-Feld - Downloading=Lade herunter Execute\ default\ action\ in\ dialog=Standardaktion im Dialog ausführen @@ -262,8 +260,6 @@ Duplicate\ string\ name=Doppelter String-Name Duplicates\ found=Doppelte Einträge gefunden -Dynamic\ groups=Dynamische Gruppen - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Dynamisches Gruppieren der Einträge anhand eines beliebigen Suchausdrucks Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Dynamisches Gruppieren der Einträge anhand eines Stichworts in einem Feld @@ -299,32 +295,19 @@ Entry\ owner=Besitzer des Eintrags Entry\ preview=Eintragsvorschau Entry\ table=Tabellenansicht - Entry\ table\ columns=Spaltenanordnung Entry\ Title\ (Required\ to\ deliver\ recommendations.)=Eintragstitel (erforderlich, um Empfehlungen zu liefern.) - Entry\ type=Eintragstyp - Error=Fehler - Error\ occurred\ when\ parsing\ entry=Fehler beim Analysieren des Eintrags - Error\ opening\ file=Fehler beim Öffnen der Datei - Error\ while\ writing=Fehler beim Schreiben - '%0'\ exists.\ Overwrite\ file?='%0' existiert bereits. Überschreiben? - Export=Exportieren - Export\ preferences=Einstellungen exportieren - Export\ preferences\ to\ file=Exportiere Einstellungen in Datei - Export\ to\ clipboard=In die Zwischenablage kopieren - Export\ to\ text\ file.=In Text-Datei exportieren. - Exporting=Exportiere Extension=Erweiterung @@ -648,11 +631,8 @@ Previous\ preview\ layout=Voriger Vorschaustil Available=Verfügbar Selected=Ausgewählt Selected\ Layouts\ can\ not\ be\ empty=Ausgewählte Layouts können nicht leer sein - Reset\ default\ preview\ style=Standard-Vorschau-Stil zurücksetzen - Previous\ entry=Vorheriger Eintrag - Primary\ sort\ criterion=Primäres Sortierkriterium Problem\ with\ parsing\ entry=Problem beim Analysieren des Eintrags Processing\ %0=Bearbeite %0 @@ -1076,7 +1056,7 @@ Please\ wait...=Bitte warten... Set\ connection\ parameters=Verbindungsparameter einstellen Path\ to\ OpenOffice/LibreOffice\ directory=Pfad zum OpenOffice/LibreOffice-Ordner Path\ to\ OpenOffice/LibreOffice\ executable=Pfad zum OpenOffice/LibreOffice-Programm -Path\ to\ OpenOffice/LibreOffice\ library\ dir=Pfad zu OpenOffice/LibreOffice Library-Ordner +Path\ to\ OpenOffice/LibreOffice\ library\ dir=Pfad zu Open-/LibreOffice Library Connection\ lost=Verbindung verloren The\ paragraph\ format\ is\ controlled\ by\ the\ property\ 'ReferenceParagraphFormat'\ or\ 'ReferenceHeaderParagraphFormat'\ in\ the\ style\ file.=Das Abschnittsformat wird von der Eigenschaft 'ReferenceParagraphFormat' oder 'ReferenceHeaderParagraphFormat' in der Stildatei bestimmt. The\ character\ format\ is\ controlled\ by\ the\ citation\ property\ 'CitationCharacterFormat'\ in\ the\ style\ file.=Das Zeichenformat wird von der Eigenschaft 'CitationCharacterFormat' in der Stildatei bestimmt. @@ -1132,7 +1112,6 @@ Resetting\ preference\ key\ '%0'=Setze Einstellung '0%' zurück Unknown\ preference\ key\ '%0'=Unbekannte Einstellung '0%' Unable\ to\ clear\ preferences.=Einstellungen konnten nicht zurückgesetzt werden. -Find\ unlinked\ files=Nicht verlinkte Dateien finden Unselect\ all=Auswahl aufheben Expand\ all=Alle aufklappen Collapse\ all=Alle einklappen @@ -1233,7 +1212,6 @@ Open\ folder=Ordner öffnen Export\ entries\ ordered\ as\ specified=Einträge in der angegebenen Reihenfolge exportieren Export\ sort\ order=Sortierreihenfolge exportieren Save\ sort\ order=Sortierung speichern -Export\ sorting=Exportiere Sortierung Newline\ separator=Zeichen für Zeilenumbruch Save\ in\ current\ table\ sort\ order=In der aktuellen Tabellensortierung speichern @@ -1597,7 +1575,6 @@ remove\ entry\ %0=Entferne Eintrag %0 remove\ string\ %0=Entferne String %0 undefined=unbekannt Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=Informationen können für den angegebenen %0 '%1' nicht ermittelt werden. -Get\ BibTeX\ data\ from\ %0=Hole BibTeX-Daten durch %0 No\ %0\ found=Keine %0 gefunden Entry\ from\ %0=Eintrag basierend auf %0 Merge\ entry\ with\ %0\ information=Eintrag mit %0-Informationen zusammenführen @@ -1637,7 +1614,6 @@ User=Benutzer Connect=Verbinden Connection\ error=Verbindungsfehler Connection\ to\ %0\ server\ established.=Verbindung zum %0 Server hergestellt. -There\ are\ connection\ issues\ with\ a\ JabRef\ server.\ Detailed\ information\:\ %0.=Es gibt Verbindungsprobleme mit einem JabRef Server. Detailinformation: %0. Required\ field\ "%0"\ is\ empty.=Erforederliches Feld "%0" ist leer. %0\ driver\ not\ available.=%0-Treiber nicht verfügbar. The\ connection\ to\ the\ server\ has\ been\ terminated.=Verbindung zum Server wurde abgebrochen. @@ -1927,7 +1903,6 @@ Are\ you\ sure\ you\ want\ to\ remove\ field\ name\:\ "%0"?=Sind Sie sicher, das Add\ new\ keyword=Schlagwort hinzufügen Keyword\:=Schlagwort\: Keyword\ "%0"\ already\ exists=Schlagwort "%0" existiert bereits -Keyword\ seperator=Schlüsselwort-Seperator Remove\ keyword=Schlagwort entfernen Are\ you\ sure\ you\ want\ to\ remove\ keyword\:\ "%0"?=Sind Sie sicher, dass Sie das Schlagwort "%0" entfernen möchten? Reset\ to\ default=Auf Standard zurücksetzen @@ -1937,11 +1912,9 @@ Generate\ citation\ keys=Zitationsschlüssel generieren Groups\ interface=Gruppen Manage\ field\ names\ &\ content=Feldnamen & Inhalt verwalten New\ library=Neue Bibliothek -Next\ citation\ style=Nächster Zitationsstil OpenOffice/LibreOffice=OpenOffice/LibreOffice Open\ document\ viewer=Zeige Dokumentenbetrachter Open\ entry\ editor=Eintragseditor öffnen -Previous\ citation\ style=Vorheriger Zitationsstil Search\ document\ identifier\ online=Suche online nach Dokumentenbezeichner Search\ for\ unlinked\ local\ files=Suche nach nicht verlinkten Dateien Search\ full\ text\ documents\ online=Suche Volltextdokumente online @@ -2056,11 +2029,10 @@ Normalize\ newline\ characters=Zeilenumbrüche normalisieren Normalizes\ all\ newline\ characters\ in\ the\ field\ content.=Normalisiert alle Zeilenumbrüche im Feldinhalt. Independent=Unabhängig -Intersection=Durchschnitt -Union=Vereinigung +Intersection=Schnittmenge +Union=Vereinigungsmenge Collect\ by=Erfassen nach Explicit\ selection=Explizite Auswahl -Searching\ for\ keywords=Suche nach Schlüsselwörtern Free\ search\ expression=Freier Suchausdruck Specified\ keywords=Angegebene Schlüsselwörter Cited\ entries=Zitierte Einträge @@ -2098,13 +2070,14 @@ Required=Erforderlich Entry\ type\ cannot\ be\ empty.\ Please\ enter\ a\ name.=Eintragstyp darf nicht leer sein. Bitte geben Sie einen Namen ein. Field\ cannot\ be\ empty.\ Please\ enter\ a\ name.=Feld darf nicht leer sein. Bitte geben Sie einen Namen ein. + + Search\ ShortScience=Durchsuche ShortScience Unable\ to\ open\ ShortScience.=Kann keine Verbindung zu ShortScience herstellen. Shared\ database=Geteilte SQL-Datenbank Lookup=Nachschlagen -Please\ enter\ a\ field\ name\ to\ search\ for\ keywords.=Bitte geben Sie einen Feldnamen ein, um nach Schlüsselwörtern zu suchen. Access\ date\ of\ the\ address\ specified\ in\ the\ url\ field.=Zugriffsdatum der im URL-Feld angegebenen Adresse. Additional\ information\ related\ to\ the\ resource\ indicated\ by\ the\ eprint\ field.=Zusätzliche Informationen zur Quelle im eprint-Feld. Annex\ to\ the\ eventtitle\ field.=Zusätzliche Informationen zum Feld eventtitle. @@ -2255,15 +2228,19 @@ Close\ other\ libraries=Andere Bibliotheken schließen Close\ others=Andere schließen Reveal\ in\ file\ explorer=Im Datei-Explorer anzeigen -(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=( Hinweis\: Drücke die Enter-Taste, um Änderungen in der Tabelle zu übertragen\!) + +(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=( Hinweis\: Drücke die Enter-Taste, um Änderungen in der Tabelle zu übertragen\!) Reset=Zurücksetzen Reset\ entry\ types\ and\ fields\ to\ defaults=Eintragstypen und Felder auf Standardwerte zurücksetzen This\ will\ reset\ all\ entry\ types\ to\ their\ default\ values\ and\ remove\ all\ custom\ entry\ types=Dies wird alle Eintragstypen auf ihre Standardwerte zurücksetzen und alle benutzerdefinierten Eintragstypen entfernen - Replace\ tabs\ with\ space=Tabs durch Leerzeichen ersetzen Replace\ tabs\ with\ space\ in\ the\ field\ content.=Tabs durch Leerzeichen im Feldinhalt ersetzen. Remove\ redundant\ spaces=Redundante Leerzeichen entfernen Replaces\ consecutive\ spaces\ with\ a\ single\ space\ in\ the\ field\ content.=Ersetzt aufeinanderfolgende Leerzeichen durch einen einzigen Leerzeichen im Feldinhalt. Remove\ digits=Ziffern entfernen Removes\ digits.=Ziffern entfernen. + + + + diff --git a/src/main/resources/l10n/JabRef_el.properties b/src/main/resources/l10n/JabRef_el.properties index 422ab00ba2d..58fd187edf1 100644 --- a/src/main/resources/l10n/JabRef_el.properties +++ b/src/main/resources/l10n/JabRef_el.properties @@ -193,8 +193,6 @@ Default=Προεπιλογή Default\ encoding=Προεπιλεγμένη κωδικοποίηση -Default\ grouping\ field=Προεπιλεγμένο πεδίο ομαδοποίησης - Delete=Διαγραφή @@ -237,8 +235,6 @@ Duplicate\ string\ name=Διπλότυπο όνομα συμβολοσειράς Duplicates\ found=Βρέθηκαν διπλότυπα -Dynamic\ groups=Δυναμικές ομάδες - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Δυναμική ομαδοποίηση καταχωρήσεων κατά την αναζήτηση ελεύθερου κειμένου Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Δυναμική ομαδοποίηση καταχωρήσεων κατά την αναζήτηση ενός πεδίου ή λέξης-κλειδιού @@ -271,31 +267,18 @@ Entry\ editor=Επεξεργαστής κειμένου καταχώρησης Entry\ preview=Προεπισκόπηση καταχώρησης Entry\ table=Πίνακας καταχωρήσεων - Entry\ table\ columns=Στήλες πίνακα καταχωρήσεων - Entry\ type=Τύπος καταχώρησης - Error=Σφάλμα - Error\ occurred\ when\ parsing\ entry=Παρουσιάστηκε σφάλμα κατά την ανάλυση της καταχώρησης - Error\ opening\ file=Σφάλμα κατά το άνοιγμα αρχείου - Error\ while\ writing=Σφάλμα κατά την διαδικασία εγγραφής - '%0'\ exists.\ Overwrite\ file?=Το '%0' υπάρχει ήδη. Αντικατάσταση αρχείου; - Export=Εξαγωγή - Export\ preferences=Εξαγωγή προτιμήσεων - Export\ preferences\ to\ file=Εξαγωγή προτιμήσεων σε αρχείο - Export\ to\ clipboard=Εξαγωγή στο πρόχειρο - Export\ to\ text\ file.=Εξαγωγή σε αρχείο κειμένου. - Exporting=Πραγματοποιείται εξαγωγή Extension=Επέκταση αρχείου @@ -592,10 +575,7 @@ Error\ while\ generating\ citation\ style=Σφάλμα κατά τη δημιο Preview\ style\ changed\ to\:\ %0=Το στυλ προεπισκόπησης άλλαξε σε\: %0 Next\ preview\ layout=Επόμενη διάταξη προεπισκόπησης Previous\ preview\ layout=Προηγούμενη διάταξη προεπισκόπησης - - Previous\ entry=Προηγούμενη καταχώρηση - Primary\ sort\ criterion=Κριτήριο πρωτογενούς ταξινόμησης Problem\ with\ parsing\ entry=Πρόβλημα με την ανάλυση της καταχώρησης Processing\ %0=%0 υπό επεξεργασία @@ -1022,7 +1002,6 @@ Resetting\ preference\ key\ '%0'=Επαναφορά κλειδιού προτί Unknown\ preference\ key\ '%0'=Άγνωστο κλειδί προτίμησης '%0' Unable\ to\ clear\ preferences.=Αδυναμία εκκαθάρισης προτιμήσεων. -Find\ unlinked\ files=Εύρεση μη συνδεδεμένων αρχείων Unselect\ all=Αποεπιλογή όλων Expand\ all=Ανάπτυξη όλων Collapse\ all=Σύμπτυξη όλων @@ -1114,7 +1093,6 @@ Clear\ connection\ settings=Εκκαθάριση ρυθμίσεων σύνδεσ Open\ folder=Άνοιγμα φακέλου Export\ entries\ ordered\ as\ specified=Εξαγωγή καταχωρήσεων με την σειρά που έχουν καθοριστεί Export\ sort\ order=Εξαγωγή σειράς ταξινόμησης -Export\ sorting=Εξαγωγή ταξινόμησης Newline\ separator=Διαχωριστικό νέας σειράς Save\ entries\ ordered\ as\ specified=Αποθήκευση καταχωρήσεων με την σειρά που έχουν καθοριστεί @@ -1458,7 +1436,6 @@ remove\ entry\ %0=αφαίρεση καταχώρησης %0 remove\ string\ %0=αφαίρεση συμβολοσειράς %0 undefined=δεν ορίστηκε Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=Αδυναμία απόκτησης πληροφοριών βάσει των δεδομένων %0\: %1 -Get\ BibTeX\ data\ from\ %0=Λήψη δεδομένων BibTeX από %0 No\ %0\ found=Δε βρέθηκαν καθόλου %0 Entry\ from\ %0=Καταχώρηση από %0 Merge\ entry\ with\ %0\ information=Συγχώνευση καταχώρησης με πληροφορίες %0 @@ -1743,6 +1720,12 @@ Default\ pattern=Προεπιλεγμένο μοτίβο + + + + + + diff --git a/src/main/resources/l10n/JabRef_es.properties b/src/main/resources/l10n/JabRef_es.properties index 189a81fa05b..a94da5b1391 100644 --- a/src/main/resources/l10n/JabRef_es.properties +++ b/src/main/resources/l10n/JabRef_es.properties @@ -213,8 +213,6 @@ Default=Por defecto Default\ encoding=Codificación por defecto -Default\ grouping\ field=Campo de agrupación por defecto - Downloading=Descargando Execute\ default\ action\ in\ dialog=Ejecutar acción por defecto en el cuadro de diálogo @@ -262,8 +260,6 @@ Duplicate\ string\ name=Nombre de cadena duplicado Duplicates\ found=Se han encontrado duplicados -Dynamic\ groups=Grupos dinámicos - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Agrupar entradas dinámicamente por una expresión de búsqueda libre Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Agrupar entradas dinámicamente buscando palabra clave en campo @@ -299,32 +295,19 @@ Entry\ owner=Propietario de la entrada Entry\ preview=Vista previa de la entrada Entry\ table=Tabla de entrada - Entry\ table\ columns=Columnas de la tabla de entrada Entry\ Title\ (Required\ to\ deliver\ recommendations.)=Título de la entrada (obligatorio para mostrar recomendaciones) - Entry\ type=Tipo de entrada - Error=Error - Error\ occurred\ when\ parsing\ entry=Ocurrió un error al analizar la entrada - Error\ opening\ file=Error al abrir el archivo - Error\ while\ writing=Error al escribir - '%0'\ exists.\ Overwrite\ file?='%0' existe. ¿Sobreescribir? - Export=Exportar - Export\ preferences=Exportar preferencias - Export\ preferences\ to\ file=Exportar preferencias a archivo - Export\ to\ clipboard=Exportar al portapapeles - Export\ to\ text\ file.=Exportar a un archivo de texto. - Exporting=Exportando Extension=Extensión @@ -648,11 +631,8 @@ Previous\ preview\ layout=Plantilla de previsualización previa Available=Disponible Selected=Seleccionado Selected\ Layouts\ can\ not\ be\ empty=Los diseños seleccionados no pueden estar vacíos - Reset\ default\ preview\ style=Restablecer el estilo de vista previa predeterminado - Previous\ entry=Entrada anterior - Primary\ sort\ criterion=Criterio de ordenación primario Problem\ with\ parsing\ entry=Problemas analizando entradas Processing\ %0=Procesando %0 @@ -1132,7 +1112,6 @@ Resetting\ preference\ key\ '%0'=Reestableciendo la preferencia con clave '%0' Unknown\ preference\ key\ '%0'=Clave de preferencia desconocida '%0' Unable\ to\ clear\ preferences.=No es posible limpiar preferencias. -Find\ unlinked\ files=Buscar archivos desenlazados Unselect\ all=Deseleccionar todo Expand\ all=Expandir todo Collapse\ all=Colapsar todo @@ -1233,7 +1212,6 @@ Open\ folder=Abrir pasta Export\ entries\ ordered\ as\ specified=Exportar entradas según el orden especificado Export\ sort\ order=Criterio de ordenación para exportación Save\ sort\ order=Guarda el orden de clasificación -Export\ sorting=Exportar ordenación Newline\ separator=Separador de nueva línea Save\ in\ current\ table\ sort\ order=Guarda con el criterio de ordenación actual @@ -1597,7 +1575,6 @@ remove\ entry\ %0=eliminar entrada %0 remove\ string\ %0=eliminar cadena %0 undefined=No definido Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=No se encuentra información basada en %0 -Get\ BibTeX\ data\ from\ %0=Obtener datos BibTeX desde %0 No\ %0\ found=No se encontró %0 Entry\ from\ %0=Entrada desde %0 Merge\ entry\ with\ %0\ information=Fusionar entrada con informaciçon %0 @@ -1926,7 +1903,6 @@ Are\ you\ sure\ you\ want\ to\ remove\ field\ name\:\ "%0"?=¿Está seguro de qu Add\ new\ keyword=Añadir nueva palabra clave Keyword\:=Palabra clave\: Keyword\ "%0"\ already\ exists=La palabra clave "%0" ya existe -Keyword\ seperator=Separador de palabras clave Remove\ keyword=Eliminar palabra clave Are\ you\ sure\ you\ want\ to\ remove\ keyword\:\ "%0"?=¿Está seguro de que desea eliminar la palabra clave\: "%0"? Reset\ to\ default=Restablecer los valores por defecto @@ -1936,11 +1912,9 @@ Generate\ citation\ keys=Generar claves de cita Groups\ interface=Interfaz de grupos Manage\ field\ names\ &\ content=Gestionar nombres y contenido de los campos New\ library=Nueva biblioteca -Next\ citation\ style=Siguiente estilo de cita OpenOffice/LibreOffice=OpenOffice/LibreOffice Open\ document\ viewer=Abrir el visor de documentos Open\ entry\ editor=Abrir el editor de entradas -Previous\ citation\ style=Estilo de cita anterior Search\ document\ identifier\ online=Buscar online un identificador de documento Search\ for\ unlinked\ local\ files=Buscar archivos locales desenlazados Search\ full\ text\ documents\ online=Buscar online documentos de texto completos @@ -2059,7 +2033,6 @@ Intersection=Intersección Union=Unión Collect\ by=Recoger por Explicit\ selection=Selección explícita -Searching\ for\ keywords=Buscando palabras clave Free\ search\ expression=Expresión de búsqueda libre Specified\ keywords=Palabras clave especificadas Cited\ entries=Entradas citadas @@ -2097,13 +2070,14 @@ Required=Necesario Entry\ type\ cannot\ be\ empty.\ Please\ enter\ a\ name.=El tipo de entrada no puede estar vacío. Por favor, introduzca un nombre. Field\ cannot\ be\ empty.\ Please\ enter\ a\ name.=El campo no puede estar vacío. Por favor, introduzca un nombre. + + Search\ ShortScience=Buscar en ShortScience Unable\ to\ open\ ShortScience.=Imposible conectarse a ShortScience. Shared\ database=Base de datos compartida Lookup=Buscar -Please\ enter\ a\ field\ name\ to\ search\ for\ keywords.=Por favor, introduzca un nombre de campo para buscar palabras clave. Access\ date\ of\ the\ address\ specified\ in\ the\ url\ field.=Fecha de acceso de la dirección especificada en el campo url. Additional\ information\ related\ to\ the\ resource\ indicated\ by\ the\ eprint\ field.=Información adicional relacionada con el recurso indicado en el campo eprint. Annex\ to\ the\ eventtitle\ field.=Anexo al campo de eventtitle. @@ -2254,15 +2228,19 @@ Close\ other\ libraries=Cerrar las otras bibliotecas Close\ others=Cerrar las otras Reveal\ in\ file\ explorer=Revelar en el explorador de archivos -(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=(Nota\: oprima Intro para confirmar los cambios en la tabla.) + +(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=(Nota\: oprima Intro para confirmar los cambios en la tabla.) Reset=Restablecer Reset\ entry\ types\ and\ fields\ to\ defaults=Restablecer tipos de entradas y campos a los valores predeterminados This\ will\ reset\ all\ entry\ types\ to\ their\ default\ values\ and\ remove\ all\ custom\ entry\ types=Esto restablecerá todos los tipos de entradas a sus valores predeterminados y quitará todos los tipos de entrada personalizados - Replace\ tabs\ with\ space=Reemplazar tabuladores por espacios Replace\ tabs\ with\ space\ in\ the\ field\ content.=Reemplazar tabuladores por espacios en el contenido del campo. Remove\ redundant\ spaces=Quitar espacios redundantes Replaces\ consecutive\ spaces\ with\ a\ single\ space\ in\ the\ field\ content.=Sustituye espacios consecutivos por un solo espacio en el contenido del campo. Remove\ digits=Quitar dígitos Removes\ digits.=Elimina dígitos. + + + + diff --git a/src/main/resources/l10n/JabRef_fa.properties b/src/main/resources/l10n/JabRef_fa.properties index d78f43dc407..d22366b0e19 100644 --- a/src/main/resources/l10n/JabRef_fa.properties +++ b/src/main/resources/l10n/JabRef_fa.properties @@ -2,10 +2,13 @@ +%0\ export\ successful=برون ريزي موفقيت آميز است%0 +Abbreviate\ names=نام های مخفف +Abbreviated\ %0\ journal\ names.=نام های مخفف شده %0 ژورنال. Abbreviation=مخفف Abbreviations=اختصارات @@ -29,6 +32,7 @@ Add=افزودن Add\ subgroup=افزودن زیرگروه +Added\ string=رشته افزوده شده @@ -62,11 +66,17 @@ Browse=مرور by=توسط +Cancel=انصراف +Cannot\ create\ group=نمی‌توان گروه را ایجاد کرد +Cannot\ create\ group.\ Please\ create\ a\ library\ first.=نمی‌توان گروه را ایجاد کرد. لطفاً ابتدا كتابخانه را ايجاد كنيد. +case\ insensitive=غیر حساس به کوچکی و بزرگی حروف +case\ sensitive=حساس به کوچکی و بزرگی حروف +Case\ sensitive=حساس به کوچکی و بزرگی حروف @@ -123,7 +133,6 @@ Cut=برش Default=پیش‌فرض - Downloading=درحال بارگیری @@ -154,7 +163,6 @@ Download\ file=بارگیری پرونده - Edit=ویرایش @@ -233,19 +241,6 @@ Entry\ editor=ویرایشگر ورودی - - - - - - - - - - - - - @@ -470,9 +465,6 @@ Open\ terminal\ here=در اینجا پایانه را باز کن - - - @@ -597,6 +589,8 @@ Push\ entries\ to\ external\ application\ (%0)=(نشاندن ورودی‌ها + + @@ -608,3 +602,7 @@ Auto\ complete\ enabled.=تکمیل خودکار غیرفعال شد. + + + + diff --git a/src/main/resources/l10n/JabRef_fr.properties b/src/main/resources/l10n/JabRef_fr.properties index ef94951f175..557575d22db 100644 --- a/src/main/resources/l10n/JabRef_fr.properties +++ b/src/main/resources/l10n/JabRef_fr.properties @@ -213,8 +213,6 @@ Default=Défaut Default\ encoding=Encodage par défaut -Default\ grouping\ field=Champ par défaut pour les groupes - Downloading=Téléchargement Execute\ default\ action\ in\ dialog=Exécuter l'action par défaut dans la boîte de dialogue @@ -262,8 +260,6 @@ Duplicate\ string\ name=Dupliquer le nom de chaîne Duplicates\ found=Trouver les doublons -Dynamic\ groups=Groupes dynamiques - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Grouper dynamiquement les entrées en utilisant une expression de recherche de forme libre Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Grouper dynamiquement les entrées en cherchant un mot-clef dans un champ @@ -299,32 +295,19 @@ Entry\ owner=Propriétaire de l'entrée Entry\ preview=Aperçu de l'entrée Entry\ table=Table des entrées - Entry\ table\ columns=Colonnes de la table des entrées Entry\ Title\ (Required\ to\ deliver\ recommendations.)=Titre de l'entrée (requis pour fournir des recommandations) - Entry\ type=Type d'entrée - Error=Erreur - Error\ occurred\ when\ parsing\ entry=Une erreur est survenue pendant le traitement de l'entrée - Error\ opening\ file=Erreur lors de l'ouverture du fichier - Error\ while\ writing=Erreur lors de l'écriture - '%0'\ exists.\ Overwrite\ file?=« %0 » existe. Écraser le fichier ? - Export=Exporter - Export\ preferences=Exporter les préférences - Export\ preferences\ to\ file=Exporter les préférences vers un fichier - Export\ to\ clipboard=Exporter vers le presse-papiers - Export\ to\ text\ file.=Exporter vers un fichier texte. - Exporting=Exportation en cours Extension=Extension @@ -648,11 +631,8 @@ Previous\ preview\ layout=Mode d'aperçu précédent Available=Disponible Selected=Sélectionné Selected\ Layouts\ can\ not\ be\ empty=Les mises en page sélectionnées ne peuvent pas être vides - Reset\ default\ preview\ style=Restaurer le style d'aperçu par défaut - Previous\ entry=Entrée précédente - Primary\ sort\ criterion=Critère de tri principal Problem\ with\ parsing\ entry=Problème de traitement d'une entrée Processing\ %0=Traitement de %0 @@ -1132,7 +1112,6 @@ Resetting\ preference\ key\ '%0'=Réinitialiser la clef de configuration « %0 Unknown\ preference\ key\ '%0'=Clef de configuration « %0 » inconnue Unable\ to\ clear\ preferences.=Impossible d'initialiser la configuration. -Find\ unlinked\ files=Rechercher les fichiers non liés Unselect\ all=Tout désélectionner Expand\ all=Tout étendre Collapse\ all=Tout masquer @@ -1233,7 +1212,6 @@ Open\ folder=Ouvrir le répertoire Export\ entries\ ordered\ as\ specified=Exporter les entrées dans l'ordre spécifié Export\ sort\ order=Exporter l'ordre de tri Save\ sort\ order=Enregistrer l'ordre de tri -Export\ sorting=Exportation du tri Newline\ separator=Séparateur de ligne Save\ in\ current\ table\ sort\ order=Enregistrer dans l'ordre de tri actuel de la table @@ -1597,7 +1575,6 @@ remove\ entry\ %0=supprimer l'entrée %0 remove\ string\ %0=supprimer la chaîne %0 undefined=indéfini Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=Aucune information disponible à partir de ce %0 \: %1 -Get\ BibTeX\ data\ from\ %0=Récupérer les données BibTeX à partir du %0 No\ %0\ found=%0 non trouvé Entry\ from\ %0=Entrée à partir du %0 Merge\ entry\ with\ %0\ information=Fusionner l'entrée sur la base des informations du %0 @@ -1926,7 +1903,6 @@ Are\ you\ sure\ you\ want\ to\ remove\ field\ name\:\ "%0"?=Êtes-vous sûr de v Add\ new\ keyword=Ajouter un nouveau mot-clef Keyword\:=Mot-clef \: Keyword\ "%0"\ already\ exists=Le mot-clef « %0 » existe déjà -Keyword\ seperator=Séparateur de mots-clefs Remove\ keyword=Supprimer le mot-clef Are\ you\ sure\ you\ want\ to\ remove\ keyword\:\ "%0"?=Êtes-vous sûr de vouloir supprimer le mot-clef "%0" ? Reset\ to\ default=Restaurer les valeurs par défaut @@ -1936,11 +1912,9 @@ Generate\ citation\ keys=Générer les clefs de citation Groups\ interface=Interface des groupes Manage\ field\ names\ &\ content=Gérer les noms de champs et leur contenu New\ library=Nouveau fichier -Next\ citation\ style=Style de citation suivant OpenOffice/LibreOffice=OpenOffice/LibreOffice Open\ document\ viewer=Ouvrir l'afficheur de document Open\ entry\ editor=Ouvrir l'éditeur d'entrée -Previous\ citation\ style=Style de citation précédent Search\ document\ identifier\ online=Rechercher en ligne un identifiant de document Search\ for\ unlinked\ local\ files=Rechercher des fichiers locaux non liés Search\ full\ text\ documents\ online=Rechercher en ligne des textes intégraux @@ -2059,7 +2033,6 @@ Intersection=Intersection Union=Union Collect\ by=Collecté par Explicit\ selection=Sélection explicite -Searching\ for\ keywords=Recherche de mots-clefs Free\ search\ expression=Expression de recherche libre Specified\ keywords=Mots-clefs fournis Cited\ entries=Entrées citées @@ -2097,13 +2070,14 @@ Required=Requis Entry\ type\ cannot\ be\ empty.\ Please\ enter\ a\ name.=Le type d'entrée ne peut pas être vide. Veuillez entrer un nom. Field\ cannot\ be\ empty.\ Please\ enter\ a\ name.=Le champ ne peut pas être vide. Veuillez entrer un nom. + + Search\ ShortScience=Recherche ShortScience Unable\ to\ open\ ShortScience.=Impossible de se connecter à ShortScience. Shared\ database=Base de données partagée Lookup=Rechercher -Please\ enter\ a\ field\ name\ to\ search\ for\ keywords.=Veuillez entrer un nom de champ dans lequel rechercher des mots-clefs. Access\ date\ of\ the\ address\ specified\ in\ the\ url\ field.=Date d'accès de l'adresse spécifiée dans le champ "url". Additional\ information\ related\ to\ the\ resource\ indicated\ by\ the\ eprint\ field.=Informations supplémentaires liées à la ressource indiquée par le champ "eprint". Annex\ to\ the\ eventtitle\ field.=Annexe au champ "eventtitle". @@ -2254,15 +2228,19 @@ Close\ other\ libraries=Fermer les autres fichiers Close\ others=Fermer les autres Reveal\ in\ file\ explorer=Montrer dans l'explorateur de fichiers -(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=(Remarque \: Appuyez sur Entrée pour valider les modifications dans le tableau \!) + +(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=(Remarque \: Appuyez sur Entrée pour valider les modifications dans le tableau \!) Reset=Restaurer Reset\ entry\ types\ and\ fields\ to\ defaults=Réinitialiser les types d'entrées et les champs par défaut This\ will\ reset\ all\ entry\ types\ to\ their\ default\ values\ and\ remove\ all\ custom\ entry\ types=Cela réinitialisera tous les types d'entrée à leurs valeurs par défaut et supprimera tous les types d'entrée personnalisés - Replace\ tabs\ with\ space=Remplacer les tabulations par une espace Replace\ tabs\ with\ space\ in\ the\ field\ content.=Remplacer les tabulations par une espace dans le contenu du champ. Remove\ redundant\ spaces=Supprimer les espaces redondantes Replaces\ consecutive\ spaces\ with\ a\ single\ space\ in\ the\ field\ content.=Remplace les espaces consécutives par un espace unique dans le contenu du champ. Remove\ digits=Supprimer les chiffres Removes\ digits.=Supprime les chiffres. + + + + diff --git a/src/main/resources/l10n/JabRef_in.properties b/src/main/resources/l10n/JabRef_in.properties index 4575842e6ad..b1d094a25d8 100644 --- a/src/main/resources/l10n/JabRef_in.properties +++ b/src/main/resources/l10n/JabRef_in.properties @@ -191,8 +191,6 @@ Default=Bawaan Default\ encoding=Enkoding bawaan -Default\ grouping\ field=Bidang grup bawaan - Delete=Hapus @@ -235,8 +233,6 @@ Duplicate\ string\ name=Nama string sama Duplicates\ found=Ditemukan ada yang sama -Dynamic\ groups=Grup dinamik - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Entri grup dinamik dengan ekspresi pencarian bebas Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Entri grup dinamk dengan pencarian bidang dari katakunci @@ -269,30 +265,17 @@ Entry\ editor=Penyunting entri Entry\ preview=Pratampilan entri Entry\ table=Tabel entri - Entry\ table\ columns=Kolom tabel entri - Entry\ type=Tipe entri - Error=Kesalahan - Error\ occurred\ when\ parsing\ entry=Kesalahan terjadi ketika mengurai entri - Error\ opening\ file=Kesalahan ketika membuka berkas - Error\ while\ writing=Kesalahan ketika menulis - '%0'\ exists.\ Overwrite\ file?='%0' esudah ada. Berkas ditindih? - Export=Ekspor - Export\ preferences=Preferensi Ekspor - Export\ preferences\ to\ file=Ekspor preferensi ke berkas - Export\ to\ clipboard=Ekspor ke papan klip - - Exporting=Proses mengekspor Extension=Ekstensi @@ -587,10 +570,7 @@ Error\ while\ generating\ citation\ style=Kesalahan saat menghasilkan gaya kutip Preview\ style\ changed\ to\:\ %0=Pratinjau gaya berubah menjadi\: %0 Next\ preview\ layout=Berikutnya tata letak Tinjauan Previous\ preview\ layout=Sebelumnya tata letak Tinjauan - - Previous\ entry=Entri sebelumnya - Primary\ sort\ criterion=Kriteria pertama Problem\ with\ parsing\ entry=Permasalahan dengan penguraian entri Processing\ %0=Memroses %0 @@ -1011,7 +991,6 @@ Resetting\ preference\ key\ '%0'=Kembalikan kunci pengaturan '%0' Unknown\ preference\ key\ '%0'=Kunci pengaturan '%0' tidak dikenal Unable\ to\ clear\ preferences.=Tidak bisa hapus pengaturan. -Find\ unlinked\ files=Temukan berkas yang tidak bertautan Unselect\ all=Tidak memilih semua Expand\ all=Bentangkan semua Collapse\ all=Tutup semua @@ -1103,7 +1082,6 @@ Clear\ connection\ settings=Bersihkan pengaturan koneksi Open\ folder=Buka direktori Export\ entries\ ordered\ as\ specified=Memerintahkan Ekspor entri sebagaimana ditentukan Export\ sort\ order=Ekspor urutan penyortiran -Export\ sorting=Ekspor penyortiran Newline\ separator=Pembatas baris yang baru Save\ entries\ ordered\ as\ specified=Memerintahkan Simpan entri sebagaimana ditentukan @@ -1439,7 +1417,6 @@ remove\ entry\ %0=hapus entri % 0 remove\ string\ %0=hapus string % 0 undefined=tidak terdefinisi Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=Tidak bisa mendapatkan informasi berdasar %0\: %1 -Get\ BibTeX\ data\ from\ %0=Dapatkan data BibTeX dari %0 No\ %0\ found=Tidak ditemukan % 0 Entry\ from\ %0=Entri dari %0 Merge\ entry\ with\ %0\ information=Gabung entri dengan informasi %0 @@ -1684,6 +1661,12 @@ Default\ pattern=Pola bawaan + + + + + + diff --git a/src/main/resources/l10n/JabRef_it.properties b/src/main/resources/l10n/JabRef_it.properties index 08bde57fcca..c6675689096 100644 --- a/src/main/resources/l10n/JabRef_it.properties +++ b/src/main/resources/l10n/JabRef_it.properties @@ -213,8 +213,6 @@ Default=Predefinito Default\ encoding=Codifica predefinita -Default\ grouping\ field=Campo di raggruppamento predefinito - Downloading=Download in corso Execute\ default\ action\ in\ dialog=Esegui azione predefinita nella finestra di dialogo @@ -262,8 +260,6 @@ Duplicate\ string\ name=Nome di stringa duplicato Duplicates\ found=Trovati doppioni -Dynamic\ groups=Gruppi dinamici - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Raggruppa dinamicamente le voci utilizzando una espressione di ricerca in formato libero Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Raggruppa dinamicamente le voci ricercando una parola chiave in un campo @@ -299,32 +295,19 @@ Entry\ owner=Proprietario della voce Entry\ preview=Anteprima della voce Entry\ table=Tabella delle voci - Entry\ table\ columns=Colonne della tabella delle voci Entry\ Title\ (Required\ to\ deliver\ recommendations.)=Titolo della voce (richiesto per fornire raccomandazioni.) - Entry\ type=Tipo di voce - Error=Errore - Error\ occurred\ when\ parsing\ entry=Errore durante l'elaborazione della voce - Error\ opening\ file=Errore all'apertura del file - Error\ while\ writing=Errore durante la scrittura - '%0'\ exists.\ Overwrite\ file?='%0' esiste. Sovrascrivere il file? - Export=Esporta - Export\ preferences=Esporta preferenze - Export\ preferences\ to\ file=Esporta preferenze in un file - Export\ to\ clipboard=Esporta negli appunti - Export\ to\ text\ file.=Esporta su file di testo. - Exporting=Esportazione in corso Extension=Estensione @@ -648,11 +631,8 @@ Previous\ preview\ layout=Successivo layout di anteprima Available=Disponibile Selected=Selezionato Selected\ Layouts\ can\ not\ be\ empty=I layout selezionati non possono essere vuoti - Reset\ default\ preview\ style=Ripristina lo stile di anteprima predefinito - Previous\ entry=Voce precedente - Primary\ sort\ criterion=Criterio di ordinamento principale Problem\ with\ parsing\ entry=Problema di analisi di una voce Processing\ %0=Elaborazione di %0 @@ -1132,7 +1112,6 @@ Resetting\ preference\ key\ '%0'=Reimposta la chiave delle preferenze '%0' Unknown\ preference\ key\ '%0'=Chiave delle preferenze sconosciuta '%0' Unable\ to\ clear\ preferences.=Impossibile reimpostatare le preferenze. -Find\ unlinked\ files=Trovati file non collegati Unselect\ all=Deseleziona tutto Expand\ all=Espandi tutto Collapse\ all=Comprimi tutto @@ -1233,7 +1212,6 @@ Open\ folder=Apri cartella Export\ entries\ ordered\ as\ specified=Esporta le voci nell'ordine specificato Export\ sort\ order=Esporta il modo di ordinamento Save\ sort\ order=Salva ordine -Export\ sorting=Esporta l'ordinamento Newline\ separator=Separatore di linea Save\ in\ current\ table\ sort\ order=Salva nell'ordine corrente della tabella @@ -1597,7 +1575,6 @@ remove\ entry\ %0=rimuovi la voce %0 remove\ string\ %0=rimuovi la stringa %0 undefined=non definito Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=Non trovo informazioni in base alla data %0\: %1 -Get\ BibTeX\ data\ from\ %0=Preleva i dati BibTeX da %0 No\ %0\ found=Nessun %0 trovato Entry\ from\ %0=Voce da %0 Merge\ entry\ with\ %0\ information=Accorpa la voce con l'informazione %0 @@ -1868,7 +1845,7 @@ Export\ selected\ entries=Esporta le voci selezionate Export\ selected\ entries\ to\ clipboard=Esportare le voci selezionate negli appunti Find\ duplicates=Trova duplicati JabRef\ resources=Risorse per JabRef -Manage\ journal\ abbreviations=Gestire le abbreviazioni del diario +Manage\ journal\ abbreviations=Gestione delle abbreviazioni delle riviste Manage\ protected\ terms=Gestione dei termini protetti New\ entry\ from\ plain\ text=Nuova voce dal testo in chiaro New\ sublibrary\ based\ on\ AUX\ file=Nuova sublibrary basata su file AUX @@ -1926,7 +1903,6 @@ Are\ you\ sure\ you\ want\ to\ remove\ field\ name\:\ "%0"?=Sei sicuro di voler Add\ new\ keyword=Aggiungi nuova parola chiave Keyword\:=Parola chiave\: Keyword\ "%0"\ already\ exists=La parola chiave "%0" esiste già -Keyword\ seperator=Separatore di parole chiave Remove\ keyword=Rimuovi parola chiave Are\ you\ sure\ you\ want\ to\ remove\ keyword\:\ "%0"?=Sei sicuro di voler rimuovere la parola chiave\: "%0"? Reset\ to\ default=Ripristina impostazioni predefinite @@ -1936,11 +1912,9 @@ Generate\ citation\ keys=Genera le chiavi BibTeX Groups\ interface=Interfaccia gruppi Manage\ field\ names\ &\ content=Gestione nomi di campi e contenuto New\ library=Nuova libreria -Next\ citation\ style=Stile citazione successiva OpenOffice/LibreOffice=OpenOffice/LibreOffice Open\ document\ viewer=Apri visualizzatore documento Open\ entry\ editor=Apri editor voce -Previous\ citation\ style=Stile citazione precedente Search\ document\ identifier\ online=Cerca l'identificatore del documento online Search\ for\ unlinked\ local\ files=Cerca file locali non collegati Search\ full\ text\ documents\ online=Cerca documenti di testo online @@ -2059,7 +2033,6 @@ Intersection=Intersezione Union=Unione Collect\ by=Raccolto per Explicit\ selection=Selezione esplicita -Searching\ for\ keywords=Ricerca per parole chiave Free\ search\ expression=Espressione di ricerca libera Specified\ keywords=Parole chiave specificate Cited\ entries=Voci citate @@ -2097,13 +2070,14 @@ Required=Obbligatorio Entry\ type\ cannot\ be\ empty.\ Please\ enter\ a\ name.=Il tipo di voce non può essere vuoto. Si prega di inserire un nome. Field\ cannot\ be\ empty.\ Please\ enter\ a\ name.=Il campo non può essere vuoto. Si prega di inserire un nome. + + Search\ ShortScience=Cerca su ShortScience Unable\ to\ open\ ShortScience.=Impossibile aprire ShortScience. Shared\ database=Database condiviso Lookup=Ricerca -Please\ enter\ a\ field\ name\ to\ search\ for\ keywords.=Inserisci un nome campo per cercare parole chiave. Access\ date\ of\ the\ address\ specified\ in\ the\ url\ field.=Data di accesso dell'indirizzo specificato nel campo url. Additional\ information\ related\ to\ the\ resource\ indicated\ by\ the\ eprint\ field.=Informazioni aggiuntive relative alla risorsa indicata dal campo eprint. Annex\ to\ the\ eventtitle\ field.=Allegato al campo eventitle. @@ -2254,15 +2228,19 @@ Close\ other\ libraries=Chiudi le altre librerie Close\ others=Chiudi gli altri Reveal\ in\ file\ explorer=Rivela nel file explorer -(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=( Nota\: Premi invio per effettuare il commit delle modifiche nella tabella\! ) + +(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=( Nota\: Premi invio per effettuare il commit delle modifiche nella tabella\! ) Reset=Ripristina Reset\ entry\ types\ and\ fields\ to\ defaults=Reimposta i tipi di voci e i campi ai valori predefiniti This\ will\ reset\ all\ entry\ types\ to\ their\ default\ values\ and\ remove\ all\ custom\ entry\ types=Questo reimposterà tutti i tipi di voci ai loro valori predefiniti e rimuoverà tutti i tipi di voci personalizzate - Replace\ tabs\ with\ space=Sostituisci le tabulazioni con spazio Replace\ tabs\ with\ space\ in\ the\ field\ content.=Sostituisci le tabulazioni con spazio nel contenuto del campo. Remove\ redundant\ spaces=Rimuovi spazi ridondanti Replaces\ consecutive\ spaces\ with\ a\ single\ space\ in\ the\ field\ content.=Sostituisce gli spazi consecutivi con uno spazio singolo nel contenuto del campo. Remove\ digits=Rimuovi le cifre Removes\ digits.=Rimuove le cifre. + + + + diff --git a/src/main/resources/l10n/JabRef_ja.properties b/src/main/resources/l10n/JabRef_ja.properties index 489dceb7740..f62879fbdaf 100644 --- a/src/main/resources/l10n/JabRef_ja.properties +++ b/src/main/resources/l10n/JabRef_ja.properties @@ -204,8 +204,6 @@ Default=既定値 Default\ encoding=既定エンコーディング -Default\ grouping\ field=既定のグループ化フィールド - Execute\ default\ action\ in\ dialog=ダイアログの既定アクションを実行 @@ -252,8 +250,6 @@ Duplicate\ string\ name=重複した文字列名 Duplicates\ found=重複が見つかりました -Dynamic\ groups=動的グループ - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=自由型検索表現で動的にグループ化 Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=フィールド中のキーワードを検索して動的にグループ化 @@ -288,32 +284,19 @@ Entry\ owner=項目所有者 Entry\ preview=項目プレビュー Entry\ table=項目表 - Entry\ table\ columns=項目表の列 Entry\ Title\ (Required\ to\ deliver\ recommendations.)=項目タイトル (おすすめの提示に必要です) - Entry\ type=項目型 - Error=エラー - Error\ occurred\ when\ parsing\ entry=項目を解析中にエラーが発生 - Error\ opening\ file=ファイルを開く際にエラー発生 - Error\ while\ writing=書き込み中にエラー発生 - '%0'\ exists.\ Overwrite\ file?='%0' は存在します.ファイルを上書きしますか? - Export=書き出し - Export\ preferences=設定を書き出す - Export\ preferences\ to\ file=設定をファイルに書き出す - Export\ to\ clipboard=クリップボードに書き出す - Export\ to\ text\ file.=テキストファイルにエクスポートします. - Exporting=書き出し中 Extension=拡張子 @@ -631,11 +614,8 @@ Previous\ preview\ layout=前のプレビュー様式 Available=利用可能 Selected=選択済み Selected\ Layouts\ can\ not\ be\ empty=選択するレイアウトは空であってはなりません - Reset\ default\ preview\ style=既定のプレビュー様式をリセット - Previous\ entry=前の項目 - Primary\ sort\ criterion=第一整序基準 Problem\ with\ parsing\ entry=項目を解析中に問題が発生しました Processing\ %0=%0を処理中です @@ -1099,7 +1079,6 @@ Resetting\ preference\ key\ '%0'=キー「%0」の設定をリセットします Unknown\ preference\ key\ '%0'=キー「%0」という設定は知りません Unable\ to\ clear\ preferences.=設定を消去することができませんでした. -Find\ unlinked\ files=リンクされていないファイルを検索 Unselect\ all=すべての選択を解除 Expand\ all=すべて展開表示 Collapse\ all=すべて畳んで表示 @@ -1197,7 +1176,6 @@ Open\ folder=フォルダを開く Export\ entries\ ordered\ as\ specified=項目を指定順に書き出し Export\ sort\ order=書き出し整序順 Save\ sort\ order=整序順を保存 -Export\ sorting=書き出しの整序 Newline\ separator=新規行分離子 Save\ in\ current\ table\ sort\ order=現在の表での整序順で保存 @@ -1550,7 +1528,6 @@ remove\ entry\ %0=項目%0を削除する remove\ string\ %0=文字列%0を削除する undefined=未定義 Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=提供された%0で情報を得ることができません:%1 -Get\ BibTeX\ data\ from\ %0=%0からBibTeXデータを取得 No\ %0\ found=%0が見つかりませんでした Entry\ from\ %0=%0からの項目 Merge\ entry\ with\ %0\ information=項目を%0情報と統合 @@ -1869,7 +1846,6 @@ Are\ you\ sure\ you\ want\ to\ remove\ field\ name\:\ "%0"?=本当にフィー Add\ new\ keyword=新規キーワードを追加 Keyword\:=キーワード: Keyword\ "%0"\ already\ exists=キーワード「%0」はすでに存在します -Keyword\ seperator=キーワード区切り Remove\ keyword=キーワードを削除 Are\ you\ sure\ you\ want\ to\ remove\ keyword\:\ "%0"?=本当にキーワード「%0」を削除しますか? Reset\ to\ default=既定値に戻す @@ -1878,11 +1854,9 @@ Export\ all\ entries=全項目を書き出す Groups\ interface=グループ操作面 Manage\ field\ names\ &\ content=フィールド名・フィールド値の管理 New\ library=新規ライブラリ -Next\ citation\ style=次の引用スタイル OpenOffice/LibreOffice=OpenOffice/LibreOffice Open\ document\ viewer=文書ビューアを表示 Open\ entry\ editor=エディターで開く -Previous\ citation\ style=前の引用スタイル Search\ document\ identifier\ online=文書IDをオンライン検索 Search\ for\ unlinked\ local\ files=未リンクのローカルファイルを検索 Search\ full\ text\ documents\ online=文書本体をオンライン検索 @@ -2011,3 +1985,9 @@ Required=必須 + + + + + + diff --git a/src/main/resources/l10n/JabRef_nl.properties b/src/main/resources/l10n/JabRef_nl.properties index 81678e3c3a9..bc5be7a8a62 100644 --- a/src/main/resources/l10n/JabRef_nl.properties +++ b/src/main/resources/l10n/JabRef_nl.properties @@ -196,8 +196,6 @@ Default=Standaard Default\ encoding=Standaard encodering -Default\ grouping\ field=Standaard groeperingsveld - Delete=Verwijderen @@ -240,8 +238,6 @@ Duplicate\ string\ name=Dubbele tekenreeksnaam Duplicates\ found=Duplicaten gevonden -Dynamic\ groups=Dynamische groepen - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Dynamisch invoergegevens groeperen door een "vrije vorm" zoek expressie Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Dynamisch invoergegevens groeperen door een veld te zoeken via een sleutelwoord @@ -274,31 +270,18 @@ Entry\ editor=Invoerbewerker Entry\ preview=Invoervoorbeeld Entry\ table=Entry tabel - Entry\ table\ columns=Invoertabel kolommen - Entry\ type=Invoertype - Error=Foutmelding - Error\ occurred\ when\ parsing\ entry=Foutmelding bij het ontleden van de invoer - Error\ opening\ file=Foutmelding bij het openen van het bestand - Error\ while\ writing=Foutmelding bij het schrijven - '%0'\ exists.\ Overwrite\ file?='%0' bestaat reeds. Bestand overschrijven? - Export=Exporteren - Export\ preferences=Voorkeuren exporteren - Export\ preferences\ to\ file=Voorkeuren exporteren naar bestand - Export\ to\ clipboard=Exporteer naar klembord - Export\ to\ text\ file.=Exporteer naar tekstbestand. - Exporting=Exporteren... Extension=Extensie @@ -599,10 +582,7 @@ Error\ while\ generating\ citation\ style=Fout bij het genereren van de citaties Preview\ style\ changed\ to\:\ %0=Voorbeeld van de stijl gewijzigd naar\: %0 Next\ preview\ layout=Volgend lay-out voorbeeld Previous\ preview\ layout=Vorig lay-out voorbeeld - - Previous\ entry=Vorige invoer - Primary\ sort\ criterion=Primair sorteercriterium Problem\ with\ parsing\ entry=Probleem met ontleding invoer Processing\ %0=Verwerken %0 @@ -1042,7 +1022,6 @@ Resetting\ preference\ key\ '%0'=Voorkeur-sleutel '%0' resetten Unknown\ preference\ key\ '%0'=Onbekende voorkeur-sleutel '%0' Unable\ to\ clear\ preferences.=Niet in staat om voorkeuren te wissen. -Find\ unlinked\ files=Niet-gelinkte bestanden vinden Unselect\ all=Alles deselecteren Expand\ all=Alles uitvouwen Collapse\ all=Alles inklappen @@ -1134,7 +1113,6 @@ Clear\ connection\ settings=Verbindingsinstellingen wissen Open\ folder=Map openen Export\ entries\ ordered\ as\ specified=Invoergegevens exporteren zoals gespecificeerd Export\ sort\ order=Sorteervolgorde exporteren -Export\ sorting=Sortering exporteren Newline\ separator=Nieuwelijn scheidingsteken Save\ entries\ ordered\ as\ specified=Opslaan invoergegvens zoals gespecificeerd @@ -1478,7 +1456,6 @@ remove\ entry\ %0=verwijderen invoer %0 remove\ string\ %0=verwijder tekenreeks %0 undefined=niet gedefinieerd Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=Kan geen info verkrijgen gebaseerd op %0\: %1 -Get\ BibTeX\ data\ from\ %0=BibTeX gegevens ophalen uit %0 No\ %0\ found=Geen %0 gevonden Entry\ from\ %0=Invoer van %0 Merge\ entry\ with\ %0\ information=Voeg invoer samen met %0 informatie @@ -1779,6 +1756,12 @@ Default\ pattern=Standaard patroon + + + + + + diff --git a/src/main/resources/l10n/JabRef_no.properties b/src/main/resources/l10n/JabRef_no.properties index ee4cf19c8bf..6d180d7113b 100644 --- a/src/main/resources/l10n/JabRef_no.properties +++ b/src/main/resources/l10n/JabRef_no.properties @@ -194,8 +194,6 @@ Default=Tilbakestill Default\ encoding=Standard koding -Default\ grouping\ field=Standardfelt for gruppering - Execute\ default\ action\ in\ dialog=Utfør standardhandlingen i dialogen @@ -239,8 +237,6 @@ Duplicate\ string\ name=Ikke unikt navn på streng Duplicates\ found=Duplikater funnet -Dynamic\ groups=Dynamiske grupper - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Grupper enheter dynamisk ved hjelp av et standard søkeuttrykk Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Grupper oppføringer dynamisk ved å søke etter nøkkelord i et felt @@ -274,32 +270,19 @@ Entry\ owner=Eier av oppføringen Entry\ preview=Forhåndsvisning Entry\ table=Hovedtabell - Entry\ table\ columns=Tabellkolonner Entry\ Title\ (Required\ to\ deliver\ recommendations.)=Oppføringstittel (nødvendig for å gi anbefalinger) - Entry\ type=Enhetstype - Error=Feil - Error\ occurred\ when\ parsing\ entry=En feil oppsto ved lesing av enhet - Error\ opening\ file=Feil ved åpning av fil - Error\ while\ writing=En feil oppsto ved skriving - '%0'\ exists.\ Overwrite\ file?='%0' eksisterer. Erstatt filen? - Export=Eksporter - Export\ preferences=Eksporter innstillinger - Export\ preferences\ to\ file=Eksporter innstillinger til fil - Export\ to\ clipboard=Eksporter til utklippstavle - Export\ to\ text\ file.=Eksporter til tekstfil. - Exporting=Eksporterer Extension=Etternavn @@ -592,11 +575,8 @@ Current\ Preview=Gjeldende forhåndsvisning Bad\ character\ inside\ entry=Oppføringen inneholder feilaktig tegn Available=Tilgjengelig Selected=Valgt - Reset\ default\ preview\ style=Tilbakestill standard forhåndsvisnings-stil - Previous\ entry=Forrige enhet - Primary\ sort\ criterion=Primært sorteringskriterium Problem\ with\ parsing\ entry=Problem med å lese enhet Processing\ %0=Arbeider %0 @@ -1213,6 +1193,12 @@ Default\ pattern=Standardmønster + + + + + + diff --git a/src/main/resources/l10n/JabRef_pl.properties b/src/main/resources/l10n/JabRef_pl.properties index 696dd619d50..c2a89a411cd 100644 --- a/src/main/resources/l10n/JabRef_pl.properties +++ b/src/main/resources/l10n/JabRef_pl.properties @@ -69,6 +69,7 @@ Cannot\ create\ group=Nie można utworzyć grupy Cannot\ create\ group.\ Please\ create\ a\ library\ first.=Nie można utworzyć grupy. Proszę najpierw utworzyć bibliotekę. +Cannot\ open\ folder\ as\ the\ file\ is\ an\ online\ link.=Nie można otworzyć folderu ponieważ plik jest zasobem online. @@ -90,6 +91,7 @@ Clear\ fields=Wyczyść pola Close\ entry=Zamknij wpis +Close\ dialog=Zamknij okno Close\ window=Zamknij okno @@ -146,7 +148,7 @@ Default=Domyślne Default\ encoding=Domyślne kodowanie - +Downloading=Pobieranie Delete=Usuń @@ -162,6 +164,7 @@ Descending=Malejąco Description=Opis +Disable\ this\ confirmation\ dialog=Nie pytaj więcej Display\ all\ error\ messages=Wyświetl wszystkie komunikaty o błędach @@ -171,6 +174,7 @@ Display\ all\ error\ messages=Wyświetl wszystkie komunikaty o błędach Do\ not\ import\ entry=Nie importuj wpisu +Do\ not\ open\ any\ files\ at\ startup=Nie otwieraj żadnych plików podczas uruchomienia Donate\ to\ JabRef=Wspomóż JabRef @@ -181,8 +185,6 @@ duplicate\ removal=usuwanie duplikatów Duplicates\ found=Znaleziono duplikaty -Dynamic\ groups=Grupy dynamiczne - @@ -204,38 +206,28 @@ entries=wpisy entry=wpis -Entry\ editor=Edytor wpisów +Entry\ editor=Redaktor wpisu Entry\ owner=Właściciel wpisu Entry\ preview=Podgląd wpisu Entry\ table=Tabela wpisów - Entry\ table\ columns=Kolumny tabeli wpisów - Entry\ type=Rodzaj wpisu - Error=Błąd - Error\ occurred\ when\ parsing\ entry=Wystąpił błąd podczas przetwarzania wpisu - Error\ opening\ file=Błąd podczas otwierania pliku - Error\ while\ writing=Błąd podczas zapisywania - - Export=Eksportuj - - - Export\ to\ clipboard=Eksportuj do schowka - Export\ to\ text\ file.=Eksportuj do pliku tekstowego. +Exporting=Eksportowanie +Extension=Rozszerzenie - +External\ programs=Programy zewnętrzne Field=Pole @@ -266,6 +258,7 @@ Filter\ groups=Filtruj grupy Format\ used=Użyty format +Fulltext\ for=Pełny tekst dla General=Ogólne @@ -291,6 +284,7 @@ Help=Pomoc Highlight=Zaznaczanie +Marking=Zaznaczenie Underline=Podkreśl @@ -322,16 +316,23 @@ Importing=Importowanie I\ Agree=Wyrażam zgodę +Invalid\ date\ format=Nieprawidłowy format daty +Invalid\ URL=Nieprawidłowy URL +JabRef\ preferences=Preferencje JabRef +Journal\ abbreviations=Skróty czasopism +Keep\ both=Zachowaj oba +Keyword=Słowo kluczowe +Keywords=Słowa kluczowe Label=Etykieta @@ -413,15 +414,19 @@ Options=Opcje or=lub +Overwrite=Zastąp +Password=Hasło Paste=Wklej +paste\ entries=wklej wpisy +PDF\ does\ not\ exist=PDF nie istnieje @@ -437,10 +442,7 @@ Citation\ Style=Styl cytatowania Current\ Preview=Bieżący podgląd Available=Dostępne Selected=Wybrane - - Previous\ entry=Poprzedni wpis - Problem\ with\ parsing\ entry=Problem z parsowaniem wpisu @@ -449,6 +451,7 @@ Quit\ JabRef=Opuść JabRef Read\ only=Tylko do odczytu +Redo=Przywróć @@ -501,6 +504,7 @@ resolved=rozwiązano Restart=Uruchom ponownie +Restart\ required=Wymagane ponowne uruchomienie Review\ changes=Przejrzyj zmiany @@ -536,6 +540,7 @@ Select\ entry\ type=Wybierz typ wpisu Settings=Ustawienia +Shortcut=Skrót @@ -544,7 +549,9 @@ Settings=Ustawienia +Show\ optional\ fields=Pokaż pola opcjonalne +Show\ required\ fields=Pokaż pola wymagane Simple\ HTML=Uproszczony HTML @@ -625,16 +632,19 @@ Rename\ file=Zmień nazwę pliku Library\ protection=Ochrona biblioteki +MIME\ type=Typ MIME Download\ from\ URL=Pobierz z adresu URL Rename\ field=Zmień nazwę pola +Append\ to\ fields=Dołącz do pól Autosave=Autozapis Please\ enter\ a\ valid\ file\ path.=Wprowadź prawidłową ścieżkę do pliku. +Error\ opening\ file\ '%0'.=Błąd podczas otwierania pliku '%0'. Could\ not\ save,\ file\ locked\ by\ another\ JabRef\ instance.=Nie można zapisać, plik zablokowany przez inną instancję JabRef. @@ -650,7 +660,10 @@ Waiting\ for\ save\ operation\ to\ finish=Oczekiwanie na zakończenie operacji z Send\ as\ email=Wyślij jako e-mail +References=Referencje +Citation=Cytowanie Connecting...=Łączenie... +Select\ style=Wybierz styl Journals=Czasopisma Unable\ to\ synchronize\ bibliography=Nie można zsynchronizować bibliografii Combine\ pairs\ of\ citations\ that\ are\ separated\ by\ spaces\ only=Połącz pary cytatów oddzielonych tylko spacjami @@ -659,19 +672,26 @@ Set\ connection\ parameters=Ustaw parametry połączenia Connection\ lost=Utracono połączenie Select\ document=Wybierz dokument HTML\ list=Lista HTML +Could\ not\ open\ %0=Nie można otworzyć %0 +Unknown\ import\ format=Nieznany format importu +Style\ selection=Wybór stylu Choose\ pattern=Wybierz wzór +Cleanup\ entry=Wyczyść wpis +First\ names=Pierwsze imiona Attach\ file=Dodaj plik -Find\ unlinked\ files=Znajdź niepowiązane pliki Unselect\ all=Odznacz wszystko Expand\ all=Rozwiń wszystkie Collapse\ all=Zwiń wszystko +Opens\ the\ file\ browser.=Otwiera przeglądarkę plików. +Scan\ directory=Skanuj katalog Select\ directory=Wybierz katalog Select\ files=Wybierz pliki +Enable\ special\ fields=Włącz pola specjalne One\ star=Jedna gwiazdka Two\ stars=Dwie gwiazdki Three\ stars=Trzy gwiazdki @@ -682,6 +702,8 @@ Priority=Priorytet Priority\ high=Wysoki priorytet Priority\ low=Niski priorytet Priority\ medium=Średni priorytet +Quality=Jakość +Update\ keywords=Aktualizuj słowa kluczowe Error\ message\:=Komunikat o błędzie\: Searching...=Wyszukiwanie... @@ -698,19 +720,31 @@ Result=Rezultat Network=Sieć Hostname=Nazwa hosta +Proxy\ configuration=Konfiguracja proxy Open\ folder=Otwórz folder Newline\ separator=Separator nowej linii +Parsing\ error=Błąd parsowania +Deprecated\ fields=Przestarzałe pola +Printed=Wydrukowano +Show\ deprecated\ BibTeX\ fields=Pokaż przestarzałe pola BibTeX +Opens\ JabRef's\ GitHub\ page=Otwiera stronę GitHub JabRefa +Opens\ JabRef's\ Twitter\ page=Otwiera stronę Twitter JabRefa +Opens\ JabRef's\ Facebook\ page=Otwiera stronę Facebook JabRefa Opens\ JabRef's\ blog=Otwiera blog JabRef'a Opens\ JabRef's\ website=Otwiera stronę JabRef'a Could\ not\ open\ browser.=Nie można otworzyć przeglądarki. +Open\ %0\ file=Otwórz %0 plik +Cannot\ delete\ file=Nie można usunąć pliku +Convert=Konwertuj +Add\ new\ file\ type=Dodaj nowy typ pliku Left\ entry=Lewy wpis Right\ entry=Prawy wpis @@ -719,18 +753,30 @@ Added\ entry=Wpis dodany Modified\ entry=Wpis zmodyfikowany Deleted\ entry=Wpis usunięty Removed\ all\ groups=Usunięto wszystkie grupy +Return\ to\ JabRef=Wróć do JabRef +Really\ delete\ the\ selected\ entry?=Na pewno usunąć wybrany wpis? +Really\ delete\ the\ %0\ selected\ entries?=Na pewno chcesz usunąć %0 wybranych wpisów? Keep\ left=Zachowaj lewy Keep\ right=Zachowaj prawy Old\ entry=Stary wpis +From\ import=Z importu +No\ problems\ found.=Nie znaleziono problemów. Save\ changes=Zapisz zmiany Discard\ changes=Odrzuć zmiany Print\ entry\ preview=Drukuj podgląd wpisu +Copy\ title=Kopiuj tytuł +No\ results\ found.=Nie znaleziono wyników. +plain\ text=czysty tekst +Close\ library=Zamknij bibliotekę New\ article=Nowy artykuł New\ book=Nowa książka New\ entry=Nowy wpis Save\ all=Zapisz wszystkie +Synchronize\ files=Synchronizuj pliki +Copy\ preview=Kopiuj podgląd +Default\ library\ mode=Domyślny tryb wyświetlania default=domyślne key=klucz type=typ @@ -738,14 +784,25 @@ value=wartość Show\ preferences=Pokaż preferencje Save\ actions=Zachowaj akcje +Other\ fields=Inne pola +Show\ remaining\ fields=Pokaż pozostałe pola +Abbreviate\ journal\ names=Skrócone nazwy czasopism +Duplicated\ Journal\ Abbreviation=Zdublowany skrót czasopisma +Duplicated\ Journal\ File=Zduplikowany plik czasopisma Error\ Occurred=Wystąpił błąd +Display\ keywords\ appearing\ in\ ALL\ entries=Wyświetl słowa kluczowe pojawiające się we WSZYSTKICH wpisach +Display\ keywords\ appearing\ in\ ANY\ entry=Wyświetl słowa kluczowe pojawiające się w JAKIMKOLWIEK wpisie +None\ of\ the\ selected\ entries\ have\ titles.=Żaden z zaznaczonych wpisów nie ma tytułu. +Unabbreviate\ journal\ names=Rozwiń skróty czasopism Usage=Użycie +Reset\ preferences=Zresetuj ustawienia +Remove\ style=Usuń styl Reload=Odśwież @@ -754,15 +811,28 @@ HTML\ to\ LaTeX=HTML do LaTeX Normalize\ date=Normalizuj datę Normalize\ month=Normalizuj miesiąc Upper\ case=Wielkie litery +Does\ nothing.=Nie robi nic. Identity=Tożsamość +Female\ name=Żeńskie imię +Female\ names=Żeńskie imiona +Male\ name=Męskie imię +Male\ names=Męskie imiona +Neuter\ name=Imię bezosobowe +Neuter\ names=Imiona bezosobowe +British\ patent=Patent brytyjski +British\ patent\ request=Zgłoszenie o brytyjski patent Column=Kolumna Compiler=Kompilator -Editor=Edytor +Editor=Redaktor Founder=Założyciel Line=Linia Page=Strona +Paragraph=Akapit +Patent=Patent +PhD\ thesis=Praca doktorancka +Section=Sekcja Software=Oprogramowanie @@ -790,19 +860,25 @@ Remind\ me\ later=Przypomnij później Ignore\ this\ update=Zignoruj tę aktualizację A\ new\ version\ of\ JabRef\ has\ been\ released.=Nowa wersja JabRef została wydana. Latest\ version=Najnowsza wersja +Custom=Niestandardowe +Enabled=Włączone undefined=niezdefiniowano Add\ new\ list=Dodaj nową listę Open\ existing\ list=Otwórz istniejącą listę Remove\ list=Usuń listę +Full\ journal\ name=Pełna nazwa czasopisma Event\ log=Dziennik zdarzeń +Log\ copied\ to\ clipboard.=Log skopiowany do schowka. +Copy\ Log=Kopiuj Log +Clear\ Log=Wyczyść Log Report\ Issue=Zgłoś problem Host=Host @@ -821,6 +897,7 @@ Update\ refused.=Aktualizuj odrzucone. One\ file\ found=Znaleziono jeden plik Migration\ help\ information=Informacje o pomocy w migracji +Opens\ a\ link\ where\ the\ current\ development\ version\ can\ be\ downloaded=Otwiera stronę z której można pobrać aktualną wersję deweloperską Author=Autor Date=Data @@ -895,8 +972,10 @@ Overwrite\ file=Nadpisz plik +Open\ file\ %0=Otwórz plik %0 Blog=Blog Copy\ citation=Kopiuj cytat +Manage\ journal\ abbreviations=Zarządzaj skrótami czasopism Quit=Wyjdź @@ -938,7 +1017,9 @@ Remove\ column=Usuń kolumnę Add\ custom\ column=Dodaj niestandardową kolumnę +Open\ files...=Otwieranie plików... +Affected\ fields\:=Dotyczy pól\: Default\ pattern=Domyślny wzór Library\ mode=Tryb biblioteki Remove\ all=Usuń wszystkie @@ -959,4 +1040,14 @@ Reset\ All=Resetuj wszystko +Close=Zamknij +Close\ all=Zamknij wszystkie +Close\ others=Zamknij pozostałe + + + +Reset=Reset + + + diff --git a/src/main/resources/l10n/JabRef_pt.properties b/src/main/resources/l10n/JabRef_pt.properties index ceddf55cd1d..d172e802a47 100644 --- a/src/main/resources/l10n/JabRef_pt.properties +++ b/src/main/resources/l10n/JabRef_pt.properties @@ -199,8 +199,6 @@ Default=Padrão Default\ encoding=Codificação padrão -Default\ grouping\ field=Agrupamento de campo padrão - Execute\ default\ action\ in\ dialog=Executar a acão padrão na caixa de diálogo @@ -244,8 +242,6 @@ Duplicate\ string\ name=Duplicar nome da string Duplicates\ found=Duplicatas encontradas -Dynamic\ groups=Grupos dinâmicos - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Agrupar referências dinamicamente utilizando uma expressão de busca em forma livre Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Agrupar referências dinamicamente selecionando um campo ou palavra-chave @@ -279,32 +275,19 @@ Entry\ owner=Proprietário da referência Entry\ preview=Previsualização da referência Entry\ table=Tabela de referências - Entry\ table\ columns=Colunas da tabela de referências Entry\ Title\ (Required\ to\ deliver\ recommendations.)=Título da Referência (obrigatório para proceder a recomendações.) - Entry\ type=Tipo de referência - Error=Erro - Error\ occurred\ when\ parsing\ entry=Ocorreu um erro ao analisar a referência - Error\ opening\ file=Erro ao abrir o arquivo - Error\ while\ writing=Erro durante a escrita - '%0'\ exists.\ Overwrite\ file?='%0' existe. Sobrescrever o arquivo? - Export=Exportar - Export\ preferences=Exportar preferências - Export\ preferences\ to\ file=Exportar preferências do arquivo - Export\ to\ clipboard=Exportar para a área de transferência - Export\ to\ text\ file.=Exportar para arquivo de texto. - Exporting=Exportando Extension=Extensão @@ -617,11 +600,8 @@ Previous\ preview\ layout=Anterior Layout de visualização Available=Disponível Selected=Selecionado Selected\ Layouts\ can\ not\ be\ empty=Os Layouts selecionados não podem estar vazios - Reset\ default\ preview\ style=Redefinir estilo de pré-visualização padrão - Previous\ entry=Referência anterior - Primary\ sort\ criterion=Critério de ordenação primário Problem\ with\ parsing\ entry=Problema ao analisar a referência Processing\ %0=Processando %0 @@ -1031,7 +1011,6 @@ Resetting\ preference\ key\ '%0'=Redefinindo preferência '%0' Unknown\ preference\ key\ '%0'=Preferência desconhecida '%0" Unable\ to\ clear\ preferences.=Não foi possível limpar as preferências -Find\ unlinked\ files=Encontrar arquivos não referenciados Unselect\ all=Desmarcar todas Expand\ all=Expandir todos Collapse\ all=Reduzir todos @@ -1120,7 +1099,6 @@ Clear\ connection\ settings=Limpar configurações da conexão Open\ folder=Abrir diretório Export\ entries\ ordered\ as\ specified=Exportar entradas como especificado Export\ sort\ order=Exportar ordenação -Export\ sorting=Exportar ordenação Newline\ separator=Separador de quebra de linha Save\ in\ current\ table\ sort\ order=Salvar tabela na ordenação atual @@ -1383,6 +1361,12 @@ Default\ pattern=Ppadrão predefinido + + + + + + diff --git a/src/main/resources/l10n/JabRef_pt_BR.properties b/src/main/resources/l10n/JabRef_pt_BR.properties index ff2c13ff51c..3b733751cd2 100644 --- a/src/main/resources/l10n/JabRef_pt_BR.properties +++ b/src/main/resources/l10n/JabRef_pt_BR.properties @@ -213,8 +213,6 @@ Default=Padrão Default\ encoding=Codificação padrão -Default\ grouping\ field=Agrupamento de campo padrão - Downloading=Baixando Execute\ default\ action\ in\ dialog=Executar ação padrão na caixa de diálogo @@ -262,8 +260,6 @@ Duplicate\ string\ name=Duplicar nome da string Duplicates\ found=Duplicatas encontradas -Dynamic\ groups=Grupos dinâmicos - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Agrupar referências dinamicamente utilizando uma expressão de busca em forma livre Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Agrupar referências dinamicamente selecionando um campo ou palavra-chave @@ -299,32 +295,19 @@ Entry\ owner=Proprietário da referência Entry\ preview=Previsualização da referência Entry\ table=Tabela de referências - Entry\ table\ columns=Colunas da tabela de referências Entry\ Title\ (Required\ to\ deliver\ recommendations.)=Título da Referência (obrigatório para proceder a recomendações.) - Entry\ type=Tipo de referência - Error=Erro - Error\ occurred\ when\ parsing\ entry=Ocorreu um erro ao analisar a referência - Error\ opening\ file=Erro ao abrir o arquivo - Error\ while\ writing=Erro durante a escrita - '%0'\ exists.\ Overwrite\ file?='%0' existe. Sobrescrever o arquivo? - Export=Exportar - Export\ preferences=Exportar preferências - Export\ preferences\ to\ file=Exportar preferências do arquivo - Export\ to\ clipboard=Exportar para a área de transferência - Export\ to\ text\ file.=Exportar para arquivo de texto. - Exporting=Exportando Extension=Extensão @@ -648,11 +631,8 @@ Previous\ preview\ layout=Anterior Layout de visualização Available=Disponível Selected=Selecionado Selected\ Layouts\ can\ not\ be\ empty=Os Layouts selecionados não podem estar vazios - Reset\ default\ preview\ style=Redefinir estilo de pré-visualização padrão - Previous\ entry=Referência anterior - Primary\ sort\ criterion=Critério de ordenação primário Problem\ with\ parsing\ entry=Problema ao analisar a referência Processing\ %0=Processando %0 @@ -1132,7 +1112,6 @@ Resetting\ preference\ key\ '%0'=Redefinindo preferência '%0' Unknown\ preference\ key\ '%0'=Preferência desconhecida '%0" Unable\ to\ clear\ preferences.=Não foi possível limpar as preferências -Find\ unlinked\ files=Encontrar arquivos não referenciados Unselect\ all=Desmarcar todas Expand\ all=Expandir todos Collapse\ all=Reduzir todos @@ -1233,7 +1212,6 @@ Open\ folder=Abrir diretório Export\ entries\ ordered\ as\ specified=Exportar entradas como especificado Export\ sort\ order=Exportar ordenação Save\ sort\ order=Salvar ordenação -Export\ sorting=Exportar ordenação Newline\ separator=Separador de quebra de linha Save\ in\ current\ table\ sort\ order=Salvar tabela na ordenação atual @@ -1596,7 +1574,6 @@ remove\ entry\ %0=remover referência %0 remove\ string\ %0=remover string %0 undefined=não definido Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=Não é possível obter informações baseado em %0\: %1 -Get\ BibTeX\ data\ from\ %0=Obter dados BibTeX de %0 No\ %0\ found=Nenhum %0 encontrado Entry\ from\ %0=Referência de %0 Merge\ entry\ with\ %0\ information=Combinar referência com informações de %0 @@ -1925,7 +1902,6 @@ Are\ you\ sure\ you\ want\ to\ remove\ field\ name\:\ "%0"?=Tem certeza que dese Add\ new\ keyword=Adicionar nova palavra-chave Keyword\:=Palavra-chave\: Keyword\ "%0"\ already\ exists=Palavra-chave "%0" já existe -Keyword\ seperator=Separador da palavra-chave Remove\ keyword=Remover palavra-chave Are\ you\ sure\ you\ want\ to\ remove\ keyword\:\ "%0"?=Tem certeza que deseja remover a palavra-chave\: "%0"? Reset\ to\ default=Restaurar padrão @@ -1935,11 +1911,9 @@ Generate\ citation\ keys=Gerar chaves de citação Groups\ interface=Interface de grupos Manage\ field\ names\ &\ content=Gerenciar nomes e conteúdo dos campos New\ library=Nova biblioteca -Next\ citation\ style=Próximo estilo de citação OpenOffice/LibreOffice=OpenOffice/LibreOffice Open\ document\ viewer=Abrir visualizador de documentos Open\ entry\ editor=Abrir editor de referências -Previous\ citation\ style=Estilo de citação anterior Search\ document\ identifier\ online=Pesquisar identificador de documento na web Search\ for\ unlinked\ local\ files=Procurar por arquivos locais desvinculados Search\ full\ text\ documents\ online=Pesquisar textos completos on-line @@ -2058,7 +2032,6 @@ Intersection=Interseção Union=União Collect\ by=Coletar até Explicit\ selection=Seleção explícita -Searching\ for\ keywords=Procurando palavras-chave Free\ search\ expression=Expressão de busca livre Specified\ keywords=Palavras-chave especificadas Cited\ entries=Referências citadas @@ -2096,13 +2069,14 @@ Required=Obrigatório Entry\ type\ cannot\ be\ empty.\ Please\ enter\ a\ name.=Tipo de referência não pode estar vazio. Insira um nome. Field\ cannot\ be\ empty.\ Please\ enter\ a\ name.=O campo não pode estar vazio. Por favor insira um nome. + + Search\ ShortScience=Pesquisar ShortScience Unable\ to\ open\ ShortScience.=Não foi possível abrir o ShortScience. Shared\ database=Banco de dados compartilhado Lookup=Procurar -Please\ enter\ a\ field\ name\ to\ search\ for\ keywords.=Por favor, digite um nome de campo para buscar palavras-chave. Access\ date\ of\ the\ address\ specified\ in\ the\ url\ field.=Data de acesso do endereço especificado no campo url. Additional\ information\ related\ to\ the\ resource\ indicated\ by\ the\ eprint\ field.=Informações adicionais relacionadas ao recurso indicado pelo campo de eprint. Annex\ to\ the\ eventtitle\ field.=Anexo ao campo eventtitle. @@ -2185,13 +2159,17 @@ Close\ others=Fechar outros Reveal\ in\ file\ explorer=Mostrar no explorador de arquivos + Reset=Reset Reset\ entry\ types\ and\ fields\ to\ defaults=Redefinir tipos de entrada e campos para o padrão This\ will\ reset\ all\ entry\ types\ to\ their\ default\ values\ and\ remove\ all\ custom\ entry\ types=Isso redefinirá todos os tipos de referências aos seus valores padrão e removerá todos os tipos de entrada personalizados - Replace\ tabs\ with\ space=Substituir tabs por espaços Replace\ tabs\ with\ space\ in\ the\ field\ content.=Substituir tabs por espaços no conteúdo do campo. Remove\ redundant\ spaces=Remover espaços redundantes Replaces\ consecutive\ spaces\ with\ a\ single\ space\ in\ the\ field\ content.=Substitui espaços consecutivos por um único espaço no conteúdo do campo. Remove\ digits=Remover dígitos Removes\ digits.=Remove dígitos. + + + + diff --git a/src/main/resources/l10n/JabRef_ru.properties b/src/main/resources/l10n/JabRef_ru.properties index 9a57bb4cb2b..772eb8a51a5 100644 --- a/src/main/resources/l10n/JabRef_ru.properties +++ b/src/main/resources/l10n/JabRef_ru.properties @@ -213,8 +213,6 @@ Default=По умолчанию Default\ encoding=Кодировка по умолчанию -Default\ grouping\ field=Поле группировки по умолчанию - Downloading=Загрузка … Execute\ default\ action\ in\ dialog=Выполнить действие по умолчанию в диалоге @@ -262,8 +260,6 @@ Duplicate\ string\ name=Дубликат имени строки Duplicates\ found=Найдены дубликаты -Dynamic\ groups=Динамические группы - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Динамическая группировка записей по произвольному условию поиска Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Динамическая группировка записей по поиску ключегого слова в поле @@ -299,32 +295,19 @@ Entry\ owner=Владелец записи Entry\ preview=Предварительный просмотр записи Entry\ table=Таблица записей - Entry\ table\ columns=Столбцы таблицы записей Entry\ Title\ (Required\ to\ deliver\ recommendations.)=Заголовок записи (требуется для рекомендаций) - Entry\ type=Тип записи - Error=Ошибка - Error\ occurred\ when\ parsing\ entry=Ошибка анализа записи - Error\ opening\ file=Ошибка при открытии файла - Error\ while\ writing=Ошибка при записи - '%0'\ exists.\ Overwrite\ file?='%0' существует. Перезаписать файл? - Export=Экспорт - Export\ preferences=Экспорт пользовательских настроек - Export\ preferences\ to\ file=Экспорт пользовательских настроек в файл - Export\ to\ clipboard=Экспорт в буфер обмена - Export\ to\ text\ file.=Экспортировать в текстовый файл. - Exporting=Выполняется экспорт Extension=Расширение @@ -648,11 +631,8 @@ Previous\ preview\ layout=Предыдущий макет предварител Available=Доступно Selected=Выбрано Selected\ Layouts\ can\ not\ be\ empty=Выбранные макеты не могут быть пустыми - Reset\ default\ preview\ style=Сброс стиль пред. просмотра по умолчанию - Previous\ entry=Предыдущая запись - Primary\ sort\ criterion=Первичный критерий сортировки Problem\ with\ parsing\ entry=Ошибка анализа записи Processing\ %0=Выполняется обработка %0 @@ -968,6 +948,7 @@ When\ opening\ file\ link,\ search\ for\ matching\ file\ if\ no\ link\ is\ defin Line\ %0\:\ Found\ corrupted\ citation\ key\ %1.=Строка %0\: Найден поврежденный ключ цитаты %1. Line\ %0\:\ Found\ corrupted\ citation\ key\ %1\ (contains\ whitespaces).=Строка %0\: Найден поврежденный ключ цитирования %1 (содержит пробелы). Line\ %0\:\ Found\ corrupted\ citation\ key\ %1\ (comma\ missing).=Строка %0\: Найден поврежденный цитатный ключ %1 (запятая отсутствует). +No\ full\ text\ document\ found=Не найдено полнотекстовых документов Download\ from\ URL=Загрузить из URL-адреса Rename\ field=Переименовать поле Append\ field=Добавить поле @@ -1130,7 +1111,6 @@ Resetting\ preference\ key\ '%0'=Сброс ключа пользователь Unknown\ preference\ key\ '%0'=Неизвестный ключ пользовательских настроек '%0' Unable\ to\ clear\ preferences.=Не удалось очистить пользовательские настройки. -Find\ unlinked\ files=Поиск несвязанных файлов Unselect\ all=Отменить выбор всех Expand\ all=Развернуть все Collapse\ all=Свернуть все @@ -1231,7 +1211,6 @@ Open\ folder=Открыть папку Export\ entries\ ordered\ as\ specified=Экспорт записей в указанном порядке Export\ sort\ order=Экспорт в порядке сортировки Save\ sort\ order=Сохранить порядок сортировки -Export\ sorting=Сортировка при экспорте Newline\ separator=Разделитель для новой строки Save\ in\ current\ table\ sort\ order=Сохранить в том же порядке, как в сейчас таблице @@ -1595,7 +1574,6 @@ remove\ entry\ %0=удалить запись %0 remove\ string\ %0=удалить строку %0 undefined=не определено Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=Не удалось получить сведения на основе заданного %0\: %1 -Get\ BibTeX\ data\ from\ %0=Получение данных BibTeX из %0 No\ %0\ found=Не найдены %0 Entry\ from\ %0=Запись из %0 Merge\ entry\ with\ %0\ information=Объединение записи со сведениями %0 @@ -1623,6 +1601,7 @@ Copy\ Log=Копировать журнал Clear\ Log=Очистить журнал Report\ Issue=Сообщить о проблеме Issue\ on\ GitHub\ successfully\ reported.=Тикет GitHub успешно создан. +Issue\ report\ successful=Отчёт об ошибке успешно отправлен Your\ issue\ was\ reported\ in\ your\ browser.=Отчет о проблеме был отправлен в браузер. The\ log\ and\ exception\ information\ was\ copied\ to\ your\ clipboard.=Лог и информация об ошибке успешно скопированы. Please\ paste\ this\ information\ (with\ Ctrl+V)\ in\ the\ issue\ description.=Пожалуйста, вставьте эту информацию (с помощью Ctrl+V) в описание проблемы. @@ -1919,7 +1898,6 @@ Are\ you\ sure\ you\ want\ to\ remove\ field\ name\:\ "%0"?=Вы уверены, Add\ new\ keyword=Добавить новое слово Keyword\:=Слово\: Keyword\ "%0"\ already\ exists=Слово "%0" уже существует -Keyword\ seperator=Разделитель слов Remove\ keyword=Удалить слово Are\ you\ sure\ you\ want\ to\ remove\ keyword\:\ "%0"?=Вы уверены, что вы хотите удалить слово\: "%0"? Reset\ to\ default=Сбросить настройки @@ -1929,11 +1907,9 @@ Generate\ citation\ keys=Генерировать ключи цитирован Groups\ interface=Интерфейс групп Manage\ field\ names\ &\ content=Управлять названиями полей и контентом New\ library=Новая БД -Next\ citation\ style=Следующий стиль цитирования OpenOffice/LibreOffice=OpenOffice/LibreOffice Open\ document\ viewer=Просмотреть документ Open\ entry\ editor=Редактировать запись -Previous\ citation\ style=Предыдущий стиль цитирования Search\ document\ identifier\ online=Искать идентификатор документа в сети Search\ for\ unlinked\ local\ files=Искать не связанные локальные файлы Search\ full\ text\ documents\ online=Искать полный текст документа в сети @@ -2040,21 +2016,32 @@ On\ disk=На диске Select\ all\ changes\ on\ the\ left=Выбрать все изменения слева Select\ all\ changes\ on\ the\ right=Выделить все изменения справа Dismiss=Отклонить +Mark\ all\ changes\ as\ accepted=Отметить все изменения как принятые +Unmark\ all\ changes=Снять отметку со всех изменений +Specified\ keywords=Указанные ключевые слова +Search\ term\ is\ empty.=Поисковый запрос пуст. +Invalid\ regular\ expression.=Неправильное регулярное выражение. Please\ provide\ a\ valid\ aux\ file.=Пожалуйста, предоставьте правильный файл aux. +Keyword\ delimiter=Разделитель ключевых слов +Copied\ '%0'\ to\ clipboard.='%0' скопировано в буфер обмена. +Add\ to\ current\ library=Добавить в текущую библиотеку +Your\ text\ is\ being\ parsed...=Ваш текст обрабатывается... Citation\ key\ filters=Фильтры ключей цитирования +Index=Индекс + + Unable\ to\ open\ ShortScience.=Невозможно открыть ShortScience. Shared\ database=Общая база данных Lookup=Поиск -Please\ enter\ a\ field\ name\ to\ search\ for\ keywords.=Пожалуйста, введите имя поля для поиска ключевых слов. Access\ date\ of\ the\ address\ specified\ in\ the\ url\ field.=Доступ к дате адреса, указанного в URL поле. Additional\ information\ related\ to\ the\ resource\ indicated\ by\ the\ eprint\ field.=Дополнительная информация, связанная с ресурсом, указанным в поле eprint. Annex\ to\ the\ eventtitle\ field.=Приложение к заголовку поля. @@ -2200,15 +2187,19 @@ Close\ other\ libraries=Закрыть другие библиотеки Close\ others=Закрыть другие Reveal\ in\ file\ explorer=Показать в обозревателе файлов -(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=( Примечание\: Нажмите "возврат", чтобы сохранить изменения в таблице\! ) + +(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=( Примечание\: Нажмите "возврат", чтобы сохранить изменения в таблице\! ) Reset=Сбросить Reset\ entry\ types\ and\ fields\ to\ defaults=Сбросить типы записей и поля по умолчанию This\ will\ reset\ all\ entry\ types\ to\ their\ default\ values\ and\ remove\ all\ custom\ entry\ types=Это сбросит все типы записей к их значениям по умолчанию и удалит все пользовательские типы записей - Replace\ tabs\ with\ space=Заменить знаки табуляции пробелом Replace\ tabs\ with\ space\ in\ the\ field\ content.=Замените знаки табуляции пробелом в содержимом поля. Remove\ redundant\ spaces=Удалить лишние пробелы Replaces\ consecutive\ spaces\ with\ a\ single\ space\ in\ the\ field\ content.=Заменяет последовательные пробелы одним пробелом в содержимом поля. Remove\ digits=Удалить цифры Removes\ digits.=Удаляет цифры. + + + + diff --git a/src/main/resources/l10n/JabRef_sv.properties b/src/main/resources/l10n/JabRef_sv.properties index 086036d7c12..5ae1280c943 100644 --- a/src/main/resources/l10n/JabRef_sv.properties +++ b/src/main/resources/l10n/JabRef_sv.properties @@ -197,8 +197,6 @@ Default=Standard Default\ encoding=Standardteckenkodning -Default\ grouping\ field=Standardfält för gruppering - Downloading=Laddar ner @@ -244,8 +242,6 @@ Duplicate\ string\ name=Dubblerat strängnamn Duplicates\ found=Dubbletter hittades -Dynamic\ groups=Dynamiska grupper - @@ -276,30 +272,17 @@ Entry\ editor=Posteditor Entry\ preview=Postvisning Entry\ table=Tabell - Entry\ table\ columns=Tabellkolumner - Entry\ type=Posttyp - Error=Fel - Error\ occurred\ when\ parsing\ entry=Fel vid inläsning av post - Error\ opening\ file=Fel vid öppning av fil - Error\ while\ writing=Fel vid skrivning - '%0'\ exists.\ Overwrite\ file?='%0' finns redan. Skriv över filen? - Export=Exportera - Export\ preferences=Exportera inställningar - Export\ preferences\ to\ file=Exportera inställningar till fil - Export\ to\ clipboard=Exportera till utklipp - - Exporting=Exporterar Extension=Filändelse @@ -575,10 +558,7 @@ Preferences=Inställningar Preferences\ recorded.=Inställningar sparade. Preview=Postvisning - - Previous\ entry=Föregående post - Primary\ sort\ criterion=Första sorteringskriteriet Problem\ with\ parsing\ entry=Problem att tolka post Processing\ %0=Behandlar %0 @@ -972,7 +952,6 @@ Resetting\ preference\ key\ '%0'=Återställer inställningsvärde '%0' Unknown\ preference\ key\ '%0'=Okänd inställning '%0' Unable\ to\ clear\ preferences.=Kan inte rensa inställningar. -Find\ unlinked\ files=Hitta olänkade filer Expand\ all=Expandera alla Collapse\ all=Fäll ihop alla Opens\ the\ file\ browser.=Öppnar filbläddraren @@ -1056,7 +1035,6 @@ Clear\ connection\ settings=Rensa anslutningsinställningar Open\ folder=Öppna mapp Export\ entries\ ordered\ as\ specified=Exportera poster enligt inställningar Export\ sort\ order=Soteringsordning vid export -Export\ sorting=Sortering vid export Newline\ separator=Radbrytningstecken Save\ entries\ ordered\ as\ specified=Spara poster som angivet @@ -1357,7 +1335,6 @@ remove\ entry\ %0=ta bort post %0 remove\ string\ %0=ta bort sträng %0 undefined=odefinierad Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=Kan inte hämta info från det angivna %0\: %1 -Get\ BibTeX\ data\ from\ %0=Hämta BibTeX-data från %0 No\ %0\ found=Inget %0 hittades Entry\ from\ %0=Post från %0 Merge\ entry\ with\ %0\ information=Kombinera post med information från %0 @@ -1525,6 +1502,8 @@ Reset\ All=Återställ alla Required=Obligatorisk + + Search\ ShortScience=Sök ShortScience Shared\ database=Delad databas @@ -1540,3 +1519,7 @@ Truncates\ a\ string\ after\ a\ given\ index.=Förkortar en sträng vid givet in + + + + diff --git a/src/main/resources/l10n/JabRef_tl.properties b/src/main/resources/l10n/JabRef_tl.properties index b7e17c50f4f..ec0b7fffe3a 100644 --- a/src/main/resources/l10n/JabRef_tl.properties +++ b/src/main/resources/l10n/JabRef_tl.properties @@ -193,8 +193,6 @@ Default=Default Default\ encoding=Default encoding -Default\ grouping\ field=Default ang patlang na grupo - Delete=Burahin @@ -235,8 +233,6 @@ Duplicate\ string\ name=I-duplicate ang string na pangalan Duplicates\ found=Nakita ang duplicates -Dynamic\ groups=Dynamic na mga grupo - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Dynamically ang grupo sa pamamagitan ng libreng-porma ng paghahanap na ekspresyon Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Dynamically ang grupo ng entries sa pamamagitan ng paghahanap sa patlang para sa keyword @@ -269,30 +265,17 @@ Entry\ editor=Entry ng taga-bago Entry\ preview=Entry preview Entry\ table=Talahanayan ng entry - Entry\ table\ columns=Mga talahanayan ng columns sa entry - Entry\ type=Uri ng entry - Error=Nagkamali - Error\ occurred\ when\ parsing\ entry=Nagkaroon ng pagkakamali kapag nagpa-parse ng entry - Error\ opening\ file=May mali sa pag bukas ng file - Error\ while\ writing=Nagkamali habang nagsusulat - '%0'\ exists.\ Overwrite\ file?='%0' umiiral. I-overwrite ang file? - Export=Pagpapalabas - Export\ preferences=Pagpapalabas ng preferences - Export\ preferences\ to\ file=Pagpapalabas ng preferences sa file - Export\ to\ clipboard=Pagpapalabas sa clipboard - - Exporting=Ang pagpapalabas Extension=Ekstenyon @@ -584,10 +567,7 @@ Error\ while\ generating\ citation\ style=Error habang gumagawa ng estilo ng pag Preview\ style\ changed\ to\:\ %0=Estilo ng pag-preview ay pinalitan ng\: %0 Next\ preview\ layout=Susunod na preview layout Previous\ preview\ layout=Ang nakaraang preview ng layout - - Previous\ entry=Ang nakaraang entry - Primary\ sort\ criterion=Pangunahing uri ng kriterya Problem\ with\ parsing\ entry=Problema na may parsing entry Processing\ %0=Nagproproseso %0 @@ -1010,7 +990,6 @@ Resetting\ preference\ key\ '%0'=Paghahanda muli sa preference na susi '%0' Unknown\ preference\ key\ '%0'=Hindi malaman kung akong preference na susi '%0' Unable\ to\ clear\ preferences.=Hindi maaring linawin ang mga preferences. -Find\ unlinked\ files=Humanap ng mga unlinked na files Unselect\ all=Tanggalin ang lahat na napili Expand\ all=Palawakin ang lahat Collapse\ all=Ibagsak ang lahat @@ -1099,7 +1078,6 @@ Clear\ connection\ settings=I-clear ang mga setting ng koneksyon Export\ entries\ ordered\ as\ specified=Ang mga entry sa pag-export ay iniutos bilang tinukoy Export\ sort\ order=Mag-export ng uri ng order -Export\ sorting=I-export ang pag-uuri Newline\ separator=Separator ng bagong linya Save\ entries\ ordered\ as\ specified=I-save ang mga entry na iniutos bilang tinukoy @@ -1394,6 +1372,12 @@ Default\ pattern=Default na pattern + + + + + + diff --git a/src/main/resources/l10n/JabRef_tr.properties b/src/main/resources/l10n/JabRef_tr.properties index 7db2f6632ee..c8b5f768f3b 100644 --- a/src/main/resources/l10n/JabRef_tr.properties +++ b/src/main/resources/l10n/JabRef_tr.properties @@ -213,8 +213,6 @@ Default=Öntanımlı Default\ encoding=Öntanımlı kodlama -Default\ grouping\ field=Öntanımlı gruplama alanı - Downloading=İndiriliyor Execute\ default\ action\ in\ dialog=İletişim kutusundaki öntanımlı eylemi yürüt @@ -262,8 +260,6 @@ Duplicate\ string\ name=Çift nüsha dizge adı Duplicates\ found=Çift nüshalar bulundu -Dynamic\ groups=Devingen gruplar - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Serbest form arama ifadesiyle devingence grup girdileri Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Bir alan ya da anahtar sözcük aramayla devingence grup girdileri @@ -299,32 +295,19 @@ Entry\ owner=Girdi sahibi Entry\ preview=Girdi önizlemesi Entry\ table=Girdi tablosu - Entry\ table\ columns=Girdi tablosu sütunları Entry\ Title\ (Required\ to\ deliver\ recommendations.)=Girdi Başlığı (öneride bulunmak için şart.) - Entry\ type=Girdi türü - Error=Hata - Error\ occurred\ when\ parsing\ entry=Girdi ayrıştırılırken hata oluştu - Error\ opening\ file=Dosya açmada hata - Error\ while\ writing=Yazarken hata - '%0'\ exists.\ Overwrite\ file?='%0' mevcut. Dosyanın üzerine yazılsın mı? - Export=Dışa aktar - Export\ preferences=Tercihleri dışa aktar - Export\ preferences\ to\ file=Tercihleri dosyaya aktar - Export\ to\ clipboard=Panoya aktar - Export\ to\ text\ file.=Metin dosyasına aktar. - Exporting=Dışa aktarılıyor Extension=Uzantı @@ -648,11 +631,8 @@ Previous\ preview\ layout=Önceki önizleme düzeni Available=Mevcut Selected=Seçili Selected\ Layouts\ can\ not\ be\ empty=Seçili Yerleşim Planları boş olamaz - Reset\ default\ preview\ style=Öntanımlı ön izleme stilini en başa döndür - Previous\ entry=Önceki girdi - Primary\ sort\ criterion=Birincil sıralama kriteri Problem\ with\ parsing\ entry=Girdi ayrıştırmada sorun Processing\ %0=İşleniyor %0 @@ -1132,7 +1112,6 @@ Resetting\ preference\ key\ '%0'=Tercih anahtarı '%0' yeniden atanıyor Unknown\ preference\ key\ '%0'=Bilinmeyen tercih anahtarı '%0' Unable\ to\ clear\ preferences.=Tercihler silinemedi. -Find\ unlinked\ files=Bağlantısız dosyaları bul Unselect\ all=Tüm seçimleri kaldır Expand\ all=Tümünü genişlet Collapse\ all=Tüm genişletmeyi kaldır @@ -1233,7 +1212,6 @@ Open\ folder=Klasörü aç Export\ entries\ ordered\ as\ specified=Girdileri belirtilen sırada dışa aktar Export\ sort\ order=Sıralama kriterlerini dışa aktar Save\ sort\ order=Sıralama kriterlerini kaydet -Export\ sorting=Sıralamayı dışa aktar Newline\ separator=Satırbaşı ayracı Save\ in\ current\ table\ sort\ order=Mevcut tablo sıralama ayarıyla kaydet @@ -1597,7 +1575,6 @@ remove\ entry\ %0=%0 girdisini sil remove\ string\ %0=%0 dizgesini sil undefined=tanımlanmamış Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=Verilen %0\: %1'e göre bilgi alınamıyor -Get\ BibTeX\ data\ from\ %0=%0'den BibTeX verisini al No\ %0\ found=%0 bulunamadi Entry\ from\ %0=%0'den girdi Merge\ entry\ with\ %0\ information=%0 bilgisiyle girdiyi birleştir @@ -1926,7 +1903,6 @@ Are\ you\ sure\ you\ want\ to\ remove\ field\ name\:\ "%0"?=Alan adını silmek Add\ new\ keyword=Yeni anahtar sözcük ekle Keyword\:=Anahtar sözcük\: Keyword\ "%0"\ already\ exists=Anahtar kelime "%0" zaten var -Keyword\ seperator=Anahtar sözcük ayracı Remove\ keyword=Anahtar sözcüğü sil Are\ you\ sure\ you\ want\ to\ remove\ keyword\:\ "%0"?=Anahtar sözcüğü silmek istediğinizden emin misiniz\: "%0"? Reset\ to\ default=Öntanımlıya sıfırla @@ -1936,11 +1912,9 @@ Generate\ citation\ keys=Atıf anahtarlarını oluştur Groups\ interface=Grup arayüzü Manage\ field\ names\ &\ content=Alan ad ve içeriklerini yönet New\ library=Yeni kütüphane -Next\ citation\ style=Yeni atıf stili OpenOffice/LibreOffice=OpenOfis/LibreOfis Open\ document\ viewer=Belge görüntüleyiciyi aç Open\ entry\ editor=Girdi düzenleyiciyi aç -Previous\ citation\ style=Önceki atıf stili Search\ document\ identifier\ online=Belge tanımlayıcıyı çevrim içi ara Search\ for\ unlinked\ local\ files=Bağlantılı olmayan yerel dosyaları ara Search\ full\ text\ documents\ online=Çevrim içi tam metin belgeleri ara @@ -2059,7 +2033,6 @@ Intersection=Kesişim Union=Bileşim Collect\ by=Topla Explicit\ selection=Belirgin seçim -Searching\ for\ keywords=Anahtar sözcükler aranıyor Free\ search\ expression=Serbest arama ifadesi Specified\ keywords=Belirlenen anahtar sözcükler Cited\ entries=Alıntılanan girdiler @@ -2097,13 +2070,14 @@ Required=Zorunlu Entry\ type\ cannot\ be\ empty.\ Please\ enter\ a\ name.=Girdi türü boş olamaz. Lütfen bir isim giriniz. Field\ cannot\ be\ empty.\ Please\ enter\ a\ name.=Alan boş olamaz. Lütfen bir isim giriniz. + + Search\ ShortScience=ShortScience'da ara Unable\ to\ open\ ShortScience.=ShortScience açılamadı. Shared\ database=Paylaşılmış veritabanı Lookup=Ara -Please\ enter\ a\ field\ name\ to\ search\ for\ keywords.=Lütfen anahtar sözcük aramak için bir alan adı giriniz. Access\ date\ of\ the\ address\ specified\ in\ the\ url\ field.=Url alanında belirtilen adrese erişim tarihi. Additional\ information\ related\ to\ the\ resource\ indicated\ by\ the\ eprint\ field.=Kaynakla ilgili ek bilgi eprint alanında belirtilmiştir. Annex\ to\ the\ eventtitle\ field.=Eventtitle alanına ek. @@ -2254,15 +2228,19 @@ Close\ other\ libraries=Diğer kütüphaneleri kapat Close\ others=Diğerlerini Kapat Reveal\ in\ file\ explorer=Dosya tarayıcısında açığa çıkar -(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=(Not\: Tablodaki değişiklikleri üstlenmek için 'Enter' tuşuna basın\!) + +(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=(Not\: Tablodaki değişiklikleri üstlenmek için 'Enter' tuşuna basın\!) Reset=Sıfırla Reset\ entry\ types\ and\ fields\ to\ defaults=Girdi türleri ve alanlarını öntanımlılara sıfırla This\ will\ reset\ all\ entry\ types\ to\ their\ default\ values\ and\ remove\ all\ custom\ entry\ types=Bu, tüm girdi türlerini öntanımlı değerlerine sıfırlayacak ve tüm özel girdi türlerini silecek - Replace\ tabs\ with\ space=Sekmeleri boşlukla değiştir Replace\ tabs\ with\ space\ in\ the\ field\ content.=Alan içeriğindeki sekmeleri boşlukla değiştir. Remove\ redundant\ spaces=Fazlalık boşlukları sil Replaces\ consecutive\ spaces\ with\ a\ single\ space\ in\ the\ field\ content.=Alan içeriğindeki ardışık boşlukları tek bir boşluğa dönüştürür. Remove\ digits=Rakamları sil Removes\ digits.=Rakamları siler. + + + + diff --git a/src/main/resources/l10n/JabRef_vi.properties b/src/main/resources/l10n/JabRef_vi.properties index 562144b9366..e3773291e67 100644 --- a/src/main/resources/l10n/JabRef_vi.properties +++ b/src/main/resources/l10n/JabRef_vi.properties @@ -202,8 +202,6 @@ Default=Mặc định Default\ encoding=Mã hóa mặc định -Default\ grouping\ field=Dữ liệu gộp nhóm mặc định - Delete=Xóa @@ -249,8 +247,6 @@ Duplicate\ string\ name=Trùng tên chuỗi Duplicates\ found=Tìm thấy các mục trùng -Dynamic\ groups=Các nhóm động - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=Gộp nhóm động các mục bằng biểu thức tìm kiếm dạng tự do Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=Gộp nhóm động các mục bằng cách tìm dữ liệu hoặc từ khóa @@ -284,30 +280,17 @@ Entry\ editor=Trình chỉnh sửa mục Entry\ preview=Xem trước mục Entry\ table=Bảng nhập vào - Entry\ table\ columns=Các cột của bảng nhập vào - Entry\ type=Kiểu của mục - Error=Lỗi - Error\ occurred\ when\ parsing\ entry=Lỗi xảy ra khi đang phân tách mục - Error\ opening\ file=Lỗi khi đang mở tập tin - Error\ while\ writing=Lỗi khi đang ghi - '%0'\ exists.\ Overwrite\ file?='%0' đã có. Ghi đè tập tin không? - Export=Xuất - Export\ preferences=Xuất các tùy thích - Export\ preferences\ to\ file=Xuất các tùy thích ra tập tin - Export\ to\ clipboard=Xuất ra bộ nhớ tạm - - Exporting=Đang xuất Extension=Đuôi mở rộng @@ -600,10 +583,7 @@ Error\ while\ generating\ citation\ style=Lỗi trong khi tạo ra kiểu trích Preview\ style\ changed\ to\:\ %0=Thay đổi kiểu xem trước theo\: %0 Next\ preview\ layout=Xem trước bố trí tiếp theo Previous\ preview\ layout=Xem trước bố trí trước đó - - Previous\ entry=Mục trước đó - Primary\ sort\ criterion=Tiêu chuẩn xếp thứ tự chính Problem\ with\ parsing\ entry=Trục trặc khi phân tách mục Processing\ %0=Đang xử lý %0 @@ -1017,7 +997,6 @@ Online\ help\ forum=Diễn đàn trợ giúp trực tuyến -Get\ BibTeX\ data\ from\ %0=Nhập dữ liệu BibTex từ %0 @@ -1132,6 +1111,12 @@ Default\ pattern=Kiểu mặc định + + + + + + diff --git a/src/main/resources/l10n/JabRef_zh.properties b/src/main/resources/l10n/JabRef_zh.properties index f5fda3b6f46..89ffa0bdb44 100644 --- a/src/main/resources/l10n/JabRef_zh.properties +++ b/src/main/resources/l10n/JabRef_zh.properties @@ -213,8 +213,6 @@ Default=默认 Default\ encoding=默认编码 -Default\ grouping\ field=默认分组依据域 - Downloading=正在下载 Execute\ default\ action\ in\ dialog=在对话框中执行默认操作 @@ -262,8 +260,6 @@ Duplicate\ string\ name=重复的简写字串名称 Duplicates\ found=发现重复项 -Dynamic\ groups=动态分组 - Dynamically\ group\ entries\ by\ a\ free-form\ search\ expression=使用自定义的搜索表达式创建动态分组 Dynamically\ group\ entries\ by\ searching\ a\ field\ for\ a\ keyword=使用关键词搜索某域创建动态分组 @@ -299,31 +295,19 @@ Entry\ owner=条目所有者 Entry\ preview=预览记录 Entry\ table=记录列表 - Entry\ table\ columns=记录列 - +Entry\ Title\ (Required\ to\ deliver\ recommendations.)=条目标题(要求提供建议。) Entry\ type=记录类型 - Error=错误 - Error\ occurred\ when\ parsing\ entry=分析记录时发生错误 - Error\ opening\ file=打开文件错误 - Error\ while\ writing=写入错误 - '%0'\ exists.\ Overwrite\ file?='%0' 已存在,是否覆盖文件? - Export=导出 - Export\ preferences=导出首选项设置 - Export\ preferences\ to\ file=导出首选项设置到文件 - Export\ to\ clipboard=导出到剪贴板 - Export\ to\ text\ file.=导出到文本文件。 - Exporting=正在导出 Extension=扩展名 @@ -375,6 +359,7 @@ Formatter\ name=格式化器名称 found\ in\ AUX\ file=在 AUX 文件内发现 +Fulltext\ for=全文如下: Further\ information\ about\ Mr.\ DLib\ for\ JabRef\ users.=更多关于 Mr. Dlib 的信息 @@ -462,8 +447,11 @@ Invalid\ date\ format=非法的日期格式 Invalid\ URL=非法的 URL Online\ help=在线帮助 +JabRef\ Language\ (Provides\ for\ better\ recommendations\ by\ giving\ an\ indication\ of\ user's\ preferred\ language.)=JabRef语言(提供用户偏好的语言指示,以便更好地推荐。)\n JabRef\ preferences=JabRef 首选项 +JabRef\ requests\ recommendations\ from\ Mr.\ DLib,\ which\ is\ an\ external\ service.\ To\ enable\ Mr.\ DLib\ to\ calculate\ recommendations,\ some\ of\ your\ data\ must\ be\ shared\ with\ Mr.\ DLib.\ Generally,\ the\ more\ data\ is\ shared\ the\ better\ recommendations\ can\ be\ calculated.\ However,\ we\ understand\ that\ some\ of\ your\ data\ in\ JabRef\ is\ sensitive,\ and\ you\ may\ not\ want\ to\ share\ it.\ Therefore,\ Mr.\ DLib\ offers\ a\ choice\ of\ which\ data\ you\ would\ like\ to\ share.=JabRef要求DLib先生提供推荐,而DLib是一项外部服务。为了让Mr.DLib计算推荐,您的一些数据必须与Mr.DLib共享。一般来说,共享的数据越多,计算出的推荐就越好。然而,我们理解您在JabRef中的一些数据是敏感的,您可能不想分享这些数据。因此,DLib先生提供了一个选择,您可以选择分享哪些数据。 +JabRef\ Version\ (Required\ to\ ensure\ backwards\ compatibility\ with\ Mr.\ DLib's\ Web\ Service)=JabRef版本(为确保与Mr. DLib的Web服务向后兼容而需要) Journal\ abbreviations=期刊缩写名 Keep\ both=保留全部 @@ -587,6 +575,7 @@ Open\ URL\ or\ DOI=打开 URL 或 DOI Opening=正在打开 Operation\ canceled.=操作被取消 +Operating\ System\ (Provides\ for\ better\ recommendations\ by\ giving\ an\ indication\ of\ user's\ system\ set-up.)=操作系统(提供用户系统设置的指示,以便提供更好的推荐。) Optional\ fields=可选域 @@ -642,11 +631,8 @@ Previous\ preview\ layout=上一条预览布局 Available=可用 Selected=已选中 Selected\ Layouts\ can\ not\ be\ empty=无法选择一个空的布局 - Reset\ default\ preview\ style=恢复默认预览样式 - Previous\ entry=上一条 - Primary\ sort\ criterion=排序依据 Problem\ with\ parsing\ entry=解析记录时的问题 Processing\ %0=正在处理 %0 @@ -828,6 +814,7 @@ Statically\ group\ entries\ by\ manual\ assignment=手动创建静态分组 Status=状态 Strings\ for\ library=简写字串列表——文献库 +Sublibrary\ from\ AUX\ to\ BibTeX=从AUX到BibTeX的子文件库。 Switches\ between\ full\ and\ abbreviated\ journal\ name\ if\ the\ journal\ name\ is\ known.=在已知的期刊名简写和全称之间切换。 @@ -858,6 +845,7 @@ This\ operation\ requires\ all\ selected\ entries\ to\ have\ citation\ keys\ def This\ operation\ requires\ one\ or\ more\ entries\ to\ be\ selected.=这个操作要求选中一条或多条记录。 This\ setting\ may\ be\ changed\ in\ preferences\ at\ any\ time.=此设置可以随时在首选项中更改。 +Timezone\ (Provides\ for\ better\ recommendations\ by\ indicating\ the\ time\ of\ day\ the\ request\ is\ being\ made.)=时区(显示请求的时间,提供更好的建议。) Time\ stamp=时间戳 Toggle\ groups\ interface=打开/关闭组界面 @@ -911,6 +899,7 @@ Warnings=警告 web\ link=web 链接 What\ do\ you\ want\ to\ do?=您希望做什么? +Whatever\ option\ you\ choose,\ Mr.\ DLib\ may\ share\ its\ data\ with\ research\ partners\ to\ further\ improve\ recommendation\ quality\ as\ part\ of\ a\ 'living\ lab'.\ Mr.\ DLib\ may\ also\ release\ public\ datasets\ that\ may\ contain\ anonymized\ information\ about\ you\ and\ the\ recommendations\ (sensitive\ information\ such\ as\ metadata\ of\ your\ articles\ will\ be\ anonymised\ through\ e.g.\ hashing).\ Research\ partners\ are\ obliged\ to\ adhere\ to\ the\ same\ strict\ data\ protection\ policy\ as\ Mr.\ DLib.=无论您选择何种方案,DLib先生可能会与研究伙伴分享其数据,以进一步提高推荐质量,作为 "生活实验室 "的一部分。DLib先生也可能会发布公共数据集,其中可能包含有关您和推荐的匿名信息(您文章的元数据等敏感信息将通过散列等方式进行匿名化处理)。研究合作伙伴有义务与DLib先生一样严格遵守数据保护政策。 Will\ write\ XMP\ metadata\ to\ the\ PDFs\ linked\ from\ selected\ entries.=将为选中条目链接的PDF文件写入XMP元数据。 @@ -954,6 +943,7 @@ Unable\ to\ open\ link.=无法打开链接。 MIME\ type=MIME 类型 This\ feature\ lets\ new\ files\ be\ opened\ or\ imported\ into\ an\ already\ running\ instance\ of\ JabRef\ instead\ of\ opening\ a\ new\ instance.\ For\ instance,\ this\ is\ useful\ when\ you\ open\ a\ file\ in\ JabRef\ from\ your\ web\ browser.\ Note\ that\ this\ will\ prevent\ you\ from\ running\ more\ than\ one\ instance\ of\ JabRef\ at\ a\ time.=该选项使得打开或者导入新文件的操作在已经运行的 JabRef 中进行,而不是新建另一个 JabRef 窗口 来进行这些操作。例如,当您从浏览器中调用 JabRef 打开一个文件时,这个选项将比较有用。注意:它将阻止您同时运行多个 JabRef 实例。 +Run\ fetcher=运行检索器 When\ opening\ file\ link,\ search\ for\ matching\ file\ if\ no\ link\ is\ defined=打开文件时,如果文件链接未定义,则自动寻找匹配的文件。 Line\ %0\:\ Found\ corrupted\ citation\ key\ %1.=第 %0 行\: 发现错误的 Citation 键 %1. @@ -1003,6 +993,7 @@ Waiting\ for\ background\ tasks\ to\ finish.\ Quit\ anyway?=正在等待后台 Find\ and\ remove\ duplicate\ citation\ keys=查找并移除重复的 Citation 键 Expected\ syntax\ for\ --fetch\='\:'=期望的语法 --fetch\='\:' +Duplicate\ citation\ key=重复引用关键字 General\ file\ directory=生成文件目录 @@ -1031,6 +1022,7 @@ exportFormat=导出格式 Output\ file\ missing=没有输出文件 No\ search\ matches.=没有匹配的搜索结果 The\ output\ option\ depends\ on\ a\ valid\ input\ option.=输出选项依赖于合法的输入选项。 +Linked\ file\ name\ conventions=链接文件名惯例 Filename\ format\ pattern=文件名格式化表达式 Additional\ parameters=额外的参数 Cite\ selected\ entries\ between\ parenthesis=引用括号中的选定项 @@ -1056,6 +1048,7 @@ Connected\ to\ document=连接到文档 Insert\ a\ citation\ without\ text\ (the\ entry\ will\ appear\ in\ the\ reference\ list)=插入一条没有内容的引用(这条记录将会出现在引用列表中) Cite\ selected\ entries\ with\ extra\ information=引用包含额外信息的选中记录 Ensure\ that\ the\ bibliography\ is\ up-to-date=保证参考文献是最新的 +Your\ OpenOffice/LibreOffice\ document\ references\ the\ citation\ key\ '%0',\ which\ could\ not\ be\ found\ in\ your\ current\ library.=您的OpenOffice/LibreOffice文档引用了引用键"%0",但在您的当前库中找不到。 Unable\ to\ synchronize\ bibliography=无法同步参考文献 Combine\ pairs\ of\ citations\ that\ are\ separated\ by\ spaces\ only=合并仅仅由空格分隔的两段引文 Autodetection\ failed=自动检测失败 @@ -1098,6 +1091,8 @@ Auto-generating\ PDF-Names\ does\ not\ support\ undo.\ Continue?=自动生成 PD Use\ full\ firstname\ whenever\ possible=尽可能使用完整的名字 (Firstname) Use\ abbreviated\ firstname\ whenever\ possible=尽可能使用缩写的名字 (Firstname) Use\ abbreviated\ and\ full\ firstname=混杂使用缩写和完整的名字 (Firstname) +Name\ format=名称格式 +First\ names=名: Cleanup\ entries=清理记录 Automatically\ assign\ new\ entry\ to\ selected\ groups=新增记录分配到选中分组 %0\ mode=%0 模式 @@ -1117,7 +1112,6 @@ Resetting\ preference\ key\ '%0'=重置首选项 '%0' Unknown\ preference\ key\ '%0'=位置的首选项 '%0' Unable\ to\ clear\ preferences.=无法清除所有选项。 -Find\ unlinked\ files=查找未链入的文件 Unselect\ all=取消全选 Expand\ all=展开全部 Collapse\ all=折叠全部 @@ -1144,6 +1138,7 @@ Five\ stars=五星 Help\ on\ special\ fields=特殊字段帮助 Keywords\ of\ selected\ entries=选中记录的关键词 Manage\ content\ selectors=管理内容选择器 +Content\ selectors=内容选取 Manage\ keywords=管理关键词 No\ priority\ information=没有优先级信息 No\ rank\ information=没有评分信息 @@ -1176,6 +1171,7 @@ Not\ connected\ to\ any\ Writer\ document.\ Please\ make\ sure\ a\ document\ is\ Removed\ all\ subgroups\ of\ group\ "%0".=移除 "%0" 组中的所有子分组。 To\ disable\ the\ memory\ stick\ mode\ rename\ or\ remove\ the\ jabref.xml\ file\ in\ the\ same\ folder\ as\ JabRef.=要禁用记忆棒模式,请在与JabRef相同的文件夹中重命名或删除jabref.xml文件。 Unable\ to\ connect.\ One\ possible\ reason\ is\ that\ JabRef\ and\ OpenOffice/LibreOffice\ are\ not\ both\ running\ in\ either\ 32\ bit\ mode\ or\ 64\ bit\ mode.=无法连接。一个可能的原因是, JabRef 和 OpenOffice/LibreOffice 不是同时在32位模式或64位模式下运行。 +Delimiter(s)=分隔符 When\ downloading\ files,\ or\ moving\ linked\ files\ to\ the\ file\ directory,\ prefer\ the\ BIB\ file\ location\ rather\ than\ the\ file\ directory\ set\ above=在下载文件或将链接的文件移动到文件目录时, 请选择 "BIB" 文件位置, 而不是之前选定的文件目录。 Your\ style\ file\ specifies\ the\ character\ format\ '%0',\ which\ is\ undefined\ in\ your\ current\ OpenOffice/LibreOffice\ document.=您的样式文件指定字符格式为 "%0', 它在您当前的 OpenOffice/LibreOffice 文档中未定义。 Your\ style\ file\ specifies\ the\ paragraph\ format\ '%0',\ which\ is\ undefined\ in\ your\ current\ OpenOffice/LibreOffice\ document.=您的样式文件指定段落格式为 "%0', 它在您当前的 OpenOffice/LibreOffice 文档中未定义。 @@ -1215,9 +1211,10 @@ Clear\ connection\ settings=清除连接设置 Open\ folder=打开文件夹 Export\ entries\ ordered\ as\ specified=按照下述顺序导出记录 Export\ sort\ order=导出顺序 -Export\ sorting=导出排序 +Save\ sort\ order=保存排序 Newline\ separator=换行符 +Save\ in\ current\ table\ sort\ order=按当前排序保存 Save\ entries\ ordered\ as\ specified=以下述顺序保存记录 Show\ extra\ columns=显示额外的列 Parsing\ error=解析错误 @@ -1278,6 +1275,7 @@ Select\ export\ format=选择导出格式 Return\ to\ JabRef=返回 JabRef Could\ not\ connect\ to\ %0=无法连接到 %0 Warning\:\ %0\ out\ of\ %1\ entries\ have\ undefined\ title.=警告: %1 条记录中有 %0 条包含未定义的标题。 +Warning\:\ %0\ out\ of\ %1\ entries\ have\ undefined\ citation\ key.=警告:%0中的%1条目有未定义的引文键。 Really\ delete\ the\ selected\ entry?=确定删除选中的记录? Really\ delete\ the\ %0\ selected\ entries?=确定删除选中的 %0 条记录? Keep\ merged\ entry\ only=只保留合并后的记录 @@ -1309,6 +1307,7 @@ plain\ text=纯文本 This\ search\ contains\ entries\ in\ which\ any\ field\ contains\ the\ regular\ expression\ %0=这次搜索的结果记录符合条件:记录的任意域包含正则表达式 %0 This\ search\ contains\ entries\ in\ which\ any\ field\ contains\ the\ term\ %0=这次搜索的结果记录符合条件:记录的任意域包含词组 %0 This\ search\ contains\ entries\ in\ which=这次搜索的结果记录符合条件: +Hint\:\ To\ search\ specific\ fields\ only,\ enter\ for\ example\:=提示:要只搜索特定字段,请输入样例: Unable\ to\ autodetect\ OpenOffice/LibreOffice\ installation.\ Please\ choose\ the\ installation\ directory\ manually.=自动检测 OpenOffice/LibreOffice 安装位置失败,请手动指定安装目录。 @@ -1347,6 +1346,7 @@ Automatically\ setting\ file\ links=自动设置文件链接 Regenerating\ citation\ keys\ according\ to\ metadata=根据元数据重新生成Citation key Regenerate\ all\ keys\ for\ the\ entries\ in\ a\ BibTeX\ file=重新生成 BibTeX 文件中所有记录的键值 Show\ debug\ level\ messages=显示调试级别消息 +Default\ library\ mode=默认库 Show\ only\ preferences\ deviating\ from\ their\ default\ value=只显示与默认值不同的首选项 default=默认 key=键值 @@ -1393,6 +1393,7 @@ Internal\ style=内部样式 Add\ style\ file=添加样式文件 Current\ style\ is\ '%0'=当前样式为 "%0" Remove\ style=移除样式 +You\ must\ select\ a\ valid\ style\ file.\ Your\ style\ is\ probably\ missing\ a\ line\ for\ the\ type\ "default".=你必须选择一个有效的样式文件。你的样式可能缺少了 "默认 "类型。 Invalid\ style\ selected=所选样式无效 Reload=刷新 @@ -1513,6 +1514,7 @@ incorrect\ control\ digit=错误的控制数字 incorrect\ format=格式错误 Copied\ version\ to\ clipboard=版本已复制到剪切板 +Citation\ key=关键字 Message=消息 @@ -1543,6 +1545,7 @@ Custom=自定义 Export\ cited=导出已被引用的 Unable\ to\ generate\ new\ library=无法生成新库 +Note\:\ Use\ the\ placeholder\ %DIR%\ for\ the\ location\ of\ the\ opened\ library\ file.=注意:使用占位符%DIR%作为打开的库文件的位置。 Error\ occured\ while\ executing\ the\ command\ "%0".=执行 "%0" 命令时出错。 Reformat\ ISSN=重新格式化 ISSN @@ -1572,18 +1575,19 @@ remove\ entry\ %0=移除条目 %0 remove\ string\ %0=移除字符串 %0 undefined=未定义的 Cannot\ get\ info\ based\ on\ given\ %0\:\ %1=基于给定的 %0\: %1无法获得信息 -Get\ BibTeX\ data\ from\ %0=从 %0 中获取 BibTeX 数据 No\ %0\ found=找不到 %0 Entry\ from\ %0=来自 %0 的条目 Merge\ entry\ with\ %0\ information=与 %0 信息合并条目 Updated\ entry\ with\ info\ from\ %0=已根据 %0 更新记录 Add\ new\ list=新增条目 +Open\ existing\ list=打开现有列表 Remove\ list=删除列表 Add\ abbreviation=添加缩写 Remove\ abbreviation=删除缩写 Full\ journal\ name=完整杂志名称 Abbreviation\ name=缩写名 +Shortest\ unique\ abbreviation=最简缩写 No\ abbreviation\ files\ loaded=缩写文件未加载 @@ -1622,6 +1626,8 @@ Update\ could\ not\ be\ performed\ due\ to\ existing\ change\ conflicts.=由于 You\ are\ not\ working\ on\ the\ newest\ version\ of\ BibEntry.=您没有使用最新版本的 BibEntry。 Local\ version\:\ %0=本地版本: %0 Shared\ version\:\ %0=共享版本\: %0 +Press\ "Merge\ entries"\ to\ merge\ the\ changes\ and\ resolve\ this\ problem.=点击 "合并条目 "按钮进行合并修改,来解决此问题。 +Canceling\ this\ operation\ will\ leave\ your\ changes\ unsynchronized.=取消此操作将使您的更改不同步。 Shared\ entry\ is\ no\ longer\ present=共享条目不再存在 The\ entry\ you\ currently\ work\ on\ has\ been\ deleted\ on\ the\ shared\ side.=您当前处理的条目已在共享端被删除。 You\ can\ restore\ the\ entry\ using\ the\ "Undo"\ operation.=您可以使用 "撤消" 操作还原条目。 @@ -1647,6 +1653,7 @@ Entered\ database\ has\ obsolete\ structure\ and\ is\ no\ longer\ supported.=输 However,\ a\ new\ database\ was\ created\ alongside\ the\ pre-3.6\ one.=但是,在pre-3.6版本中,一个新数据库也一起创建了。 Opens\ a\ link\ where\ the\ current\ development\ version\ can\ be\ downloaded=打开可下载当前开发版本的链接 See\ what\ has\ been\ changed\ in\ the\ JabRef\ versions=查看 JabRef 版本中已更改的内容 +Referenced\ citation\ key\ does\ not\ exist=被引用的引文键不存在 Full\ text\ document\ for\ entry\ %0\ already\ linked.=条目 %0 的全文已链接。 Finished\ downloading\ full\ text\ document\ for\ entry\ %0.=下载条目 %0 的全文文档,已完成。 Download\ full\ text\ documents=下载全文 @@ -1660,6 +1667,8 @@ Show\ file\ annotations=显示文件批注 shared=共享 should\ contain\ an\ integer\ or\ a\ literal=应当包含整数或文字 should\ have\ the\ first\ letter\ capitalized=首字母应当大写 +edition\ of\ book\ reported\ as\ just\ 1=该书只有1版 +no\ integer\ as\ values\ for\ edition\ allowed=不允许用整数作为版本的值 Tools=工具 What's\ new\ in\ this\ version?=此版本中有什么新增内容? Want\ to\ help?=想帮忙吗? @@ -1702,8 +1711,10 @@ File\ directory\ pattern=文件目录模式 Update\ with\ bibliographic\ information\ from\ the\ web=使用来自网络的书目信息进行更新 Could\ not\ find\ any\ bibliographic\ information.=找不到任何书目信息。 +Citation\ key\ deviates\ from\ generated\ key=关键字与生成字不同 DOI\ %0\ is\ invalid=DOI %0 无效 +Select\ all\ customized\ types\ to\ be\ stored\ in\ local\ preferences\:=选择要存储在本地偏好中的所有自定义类型。 Different\ customization,\ current\ settings\ will\ be\ overwritten=不同的自定义项,当前设置将被覆盖 Entry\ type\ %0\ is\ only\ defined\ for\ Biblatex\ but\ not\ for\ BibTeX=条目类型 %0 仅为Biblatex定义,但不为BibTeX定义 @@ -1749,6 +1760,7 @@ Copy\ linked\ file=复制链接的文件 Copy\ linked\ file\ to\ folder...=复制链接的文件到文件夹... Could\ not\ copy\ file\ to\ %0,\ maybe\ the\ file\ is\ already\ existing?=无法复制文件到 %0,该文件可能已存在 Sucessfully\ copied\ file\ to\ %0=成功复制文件到 %0 +Could\ not\ resolve\ the\ file\ %0=无法解析文件(%0) Copy\ linked\ files\ to\ folder...=复制链接的文件到文件夹... Copied\ file\ successfully=已成功复制文件 @@ -1759,6 +1771,7 @@ Could\ not\ copy\ file=无法复制文件 Copied\ %0\ files\ of\ %1\ sucessfully\ to\ %2=已成功复制 %1 中的 %0 文件到 %2 Rename\ failed=重命名失败 JabRef\ cannot\ access\ the\ file\ because\ it\ is\ being\ used\ by\ another\ process.=JabRef 无法访问该文件, 因为另一个进程正在使用它。 +Show\ console\ output\ (only\ when\ the\ launcher\ is\ used)=显示控制台输出(仅当使用启动器时) Remove\ line\ breaks=移除换行符 Removes\ all\ line\ breaks\ in\ the\ field\ content.=移除字段内容中的所有换行符。 @@ -1774,6 +1787,7 @@ Entry\ from\ %0\ could\ not\ be\ parsed.=无法解析 %0 中的条目。 Invalid\ identifier\:\ '%0'.=无效的标识符:'%0'。 This\ paper\ has\ been\ withdrawn.=这篇论文已被撤回。 Finished\ writing\ XMP\ metadata.=写入XMP元数据完毕 +empty\ citation\ key=清空关键字 Your\ Java\ Runtime\ Environment\ is\ located\ at\ %0.=您的Java运行环境位于 %0。 Aux\ file=Aux 文件 Group\ containing\ entries\ cited\ in\ a\ given\ TeX\ file=包含给定TeX文件中引用的条目组 @@ -1855,21 +1869,32 @@ User\:=用户: Keystore\ password\:=密钥库密码: Keystore\:=密钥库: Password\:=密码: +Server\ Timezone\:=服务器时区: Remember\ Password=记住密码 Use\ SSL=使用 SSL +Move\ preprint\ information\ from\ 'URL'\ and\ 'journal'\ field\ to\ the\ 'eprint'\ field=将 "URL "和 "期刊 "字段的信息移至 "eprint "字段。 +Customize\ Export\ Formats=自定义导出格式 Export\ name=导出名称 +Main\ layout\ file\:=主要样式文件。 Main\ layout\ file=主布局文件 +Save\ exporter=保存导出 File\ extension\:=文件扩展名: Export\ format\ name\:=导出格式名称: +Cleared\ connection\ settings=已清空连接设置 +Error\ adding\ discovered\ CitationStyles=在添加引文样式时出错 +(more)=(更多) Cancel\ import=取消导入 Continue\ with\ import=继续导入 Import\ canceled=导入已取消 Select\ all\ new\ entries=选择所有的新条目 +Total\ items\ found\:=已找到: +Selected\ items\:=已选择: Download\ linked\ online\ files=下载已链接的online文件 Select\ the\ entries\ to\ be\ imported\:=选择要导入的条目: Add\ new\ String=添加新的字符串 Must\ not\ be\ empty\!=不能为空! Open\ Help\ page=打开帮助页面​​​​​​​​ +Add\ new\ field\ name=增加新的文件名 Field\ name\:=字段名称: Field\ name\ "%0"\ already\ exists=字段名称 %0 已存在 No\ field\ name\ selected\!=没有选择字段 @@ -1878,24 +1903,24 @@ Are\ you\ sure\ you\ want\ to\ remove\ field\ name\:\ "%0"?=确定要删除字 Add\ new\ keyword=添加关键字 Keyword\:=关键字\: Keyword\ "%0"\ already\ exists=关键词字“%0”已存在 -Keyword\ seperator=关键字分隔符 Remove\ keyword=删除关键字 Are\ you\ sure\ you\ want\ to\ remove\ keyword\:\ "%0"?=确定要删除关键字"%0"吗? Reset\ to\ default=重置为默认值 +Edit\ string\ constants=编辑语句长度 Export\ all\ entries=导出所有条目 Generate\ citation\ keys=生成CitationKey Groups\ interface=群组接口 Manage\ field\ names\ &\ content=管理字段名称和内容 New\ library=新建库 -Next\ citation\ style=下一个引文样式 +OpenOffice/LibreOffice=开放Office/LibreOffice Open\ document\ viewer=打开文档查看器 Open\ entry\ editor=打开条目编辑器 -Previous\ citation\ style=上一个引文样式 Search\ document\ identifier\ online=在线查找文档DOI Search\ for\ unlinked\ local\ files=查找未链接的本地文件 Search\ full\ text\ documents\ online=在线查找全文 Find\ and\ replace=查找和替换 +Found\ documents\:=已找到文件: Use\ selected\ document=使用选定的文档 Accept\ changes=接受修改 Dismiss\ changes=放弃修改 @@ -1911,54 +1936,133 @@ A\ string\ with\ the\ label\ '%0'\ already\ exists.=标签为%0的字符串已 Executing\ command\ "%0"...=正在执行命令 “%0”... +Rename\ file\ to\ a\ given\ name=重命名文件 +New\ Filename=新文件名 Rename\ file\ to\ defined\ pattern=将文件按照给定的样式重命名 +Application\ settings=应用设置 +Export\ an\ input\ to\ a\ file=导出至文件 Export\ preferences\ to\ a\ file=导出首选项到文件 +Import\ BibTeX=导入 BibTex Import\ preferences\ from\ a\ file=从文件中导入首选项 +Matching=正在匹配 +Same\ as\ --import,\ but\ will\ be\ imported\ to\ the\ opened\ tab=与导入相同,但会在打开的标签页中打开。 Allow\ integers\ in\ 'edition'\ field\ in\ BibTeX\ mode=允许在 BibTeX 模式的 edition 字段中使用整数 Search\ for\ citations\ in\ LaTeX\ files...=在 LaTeX 文件中搜索引文... LaTeX\ Citations\ Search\ Results=LaTeX 引文搜索结果 LaTeX\ files\ directory\:=LaTeX 文件目录: LaTeX\ files\ found\:=发现的 LaTeX 文件 +files=文件 Show\ 'LaTeX\ Citations'\ tab=显示 “LaTeX Citations” 选项卡 LaTeX\ Citations=LaTeX 引文 Search\ citations\ for\ this\ entry\ in\ LaTeX\ files=在此条目的 LaTeX 文件中搜索引文 No\ citations\ found=没有找到引用 No\ LaTeX\ files\ containing\ this\ entry\ were\ found.=没有找到包含此条目的 LaTeX 文件。 +Selected\ entry\ does\ not\ have\ an\ associated\ citation\ key.=所选内容没有关键字 +Current\ search\ directory\:=当前搜索目录: +Set\ LaTeX\ file\ directory=设置 LaTeX 文件目录 +Import\ entries\ from\ LaTeX\ files=从LaTeX导入 +Import\ new\ entries=导入新条目 Group\ color=分组颜色 - - +Columns=列 +File\ type=文件类型 +IEEE=IEEE +Internal=内部 +Special=特殊的 +Remove\ column=删除列 +Add\ custom\ column=添加自定义列 +Update\ to\ current\ column\ order=更新当前列的顺序 +Sort\ column\ one\ step\ upwards=向上排序 +Sort\ column\ one\ step\ downwards=向下排序 +Synchronize\ special\ fields\ to\ keywords=将特殊字段与关键字同步 +Serialize\ special\ fields=文件序列特殊化 +List\ must\ not\ be\ empty.=列表不能为空 + +Order=顺序 + +Add\ field\ to\ filter\ list=添加字段到过滤列表 +Add\ formatter\ to\ list=将格式添加到列表中 +Filter\ List=筛选项 Open\ files...=打开文件... Affected\ fields\:=补全字段 +Show\ preview\ as\ a\ tab\ in\ entry\ editor=在条目编辑器中以标签形式显示预览 +Font=字体 +Visual\ theme=外观主题 Light\ theme=明亮主题 Dark\ theme=暗色主题 Overwrite\ existing\ keys=覆盖该字段的内容 Key\ patterns=不同类型条目的键值风格 +Font\ settings=字体设置 +Override\ font\ settings=覆盖字体设置 +Override\ font\ size=覆盖字体大小设置 Theme\ changed\ to\ dark\ theme.=更改为暗色主题。 Theme\ changed\ to\ light\ theme.=更改为明亮主题。 +You\ must\ enter\ an\ integer\ value\ higher\ than\ 8.=你必须输入一个大于8的整数。 Letters\ after\ duplicate\ generated\ keys=在重复的BibTeX键后添加字母 Start\ on\ second\ duplicate\ key\ with\ letter\ A\ (a,\ b,\ ...)=在重复的键值后添加字母 A (a, b, ...) Start\ on\ second\ duplicate\ key\ with\ letter\ B\ (b,\ c,\ ...)=在重复的键值后添加字母 B (b, c, ...) Always\ add\ letter\ (a,\ b,\ ...)\ to\ generated\ keys=在生成键值时总是添加字母 (a, b, ...) Default\ pattern=默认模式 - - +Reset\ %s\ to\ default\ value=将%s重置为默认值 +Library\ mode=库模式 +Reset\ to\ recommended=重置至推荐值 +Remove\ all=全部移除 +Reset\ All=全部重置 +Column\ type\ %0\ is\ unknown.=栏目类型%0未知。 +Linked\ identifiers=关联标识符 +Special\ field\ type\ %0\ is\ unknown.\ Using\ normal\ column\ type.=特殊字段类型%0未知。使用普通列类型。 + +insert\ entries=插入条目 +In\ JabRef=在JabRef中 +On\ disk=在磁盘上 +Select\ all\ changes\ on\ the\ left=选择左边的所有更改 +Select\ all\ changes\ on\ the\ right=选择右边的所有更改 +Dismiss=忽略 +Mark\ all\ changes\ as\ accepted=标注所有更改为已确认 +Unmark\ all\ changes=取消标记所有更改 + +Normalize\ newline\ characters=规范化换行字符 +Normalizes\ all\ newline\ characters\ in\ the\ field\ content.=规范化字段内容中的所有换行字符。 Independent=独立 Intersection=交集 Union=并集 +Collect\ by=由...收集 +Explicit\ selection=显性选择 +Free\ search\ expression=自由搜索表达式 +Specified\ keywords=指定的关键词 +Cited\ entries=引用的条目 +Search\ term\ is\ empty.=搜索词为空。 Invalid\ regular\ expression.=无效的正则表达式 Please\ provide\ a\ valid\ aux\ file.=请提供一个有效的AUX文件 +Keyword\ delimiter=关键字分隔符 +Hierarchical\ keyword\ delimiter=层次关键词分隔符 +Escape\ ampersands=转义安培符号 Copied\ '%0'\ to\ clipboard.=复制 '%0' 到剪贴板。 +This\ operation\ requires\ an\ open\ library.=这个操作需要一个开放的库。 +Plain\ References\ Parser=普通引用解析器 +Please\ enter\ the\ plain\ references\ to\ extract\ from\ separated\ by\ double\ empty\ lines.=请输入要提取的普通引用文献,用双空行隔开。 Add\ to\ current\ library=添加到当前库 - - +%0\ entries\ were\ parsed\ from\ your\ query.=从你的查询中解析出%0条。 +Starts\ the\ extraction\ and\ adds\ the\ resulting\ entries\ to\ the\ currently\ opened\ database=开始提取并将提取的条目添加到当前打开的数据库中。 +Your\ text\ is\ being\ parsed...=正在解析文本 + +Citation\ key\ filters=引用字过滤 +Field\ filters=文件过滤 +Message\ filters=消息过滤 +Clear\ filters=清空过滤条件 + +Add\ new\ Field=增加新文件 +Add\ new\ entry\ type=增加新文件类型 +Field\ type=文件类型 +Required\ and\ optional\ fields=必选和可选文件 +Index=索引 Remove\ entry\ type=移除空条目 Remove\ field\ %0\ from\ currently\ selected\ entry\ type=从选中的条目类型中删除字段 %0 Optional=可选 @@ -1967,21 +2071,176 @@ Entry\ type\ cannot\ be\ empty.\ Please\ enter\ a\ name.=条目类型不能为 Field\ cannot\ be\ empty.\ Please\ enter\ a\ name.=字段不能为空。请输入名称。 + +Search\ ShortScience=搜索 ShortScience +Unable\ to\ open\ ShortScience.=无法打开 ShortScience + Shared\ database=共享数据库 Lookup=查找 +Access\ date\ of\ the\ address\ specified\ in\ the\ url\ field.=Url字段中指定地址的访问日期。 +Additional\ information\ related\ to\ the\ resource\ indicated\ by\ the\ eprint\ field.=与eprint字段所示资源有关的其他信息。 +Annex\ to\ the\ eventtitle\ field.=标题栏的附件 +Author(s)\ of\ a\ commentary\ to\ the\ work.=作品评注者。 +Author(s)\ of\ an\ afterword\ to\ the\ work.=作品后记的作者。 +Author(s)\ of\ an\ introduction\ to\ the\ work.=前言作者。 +Author(s)\ of\ annotations\ to\ the\ work.=作品注释者。 +Author(s)\ of\ the\ work.=该作品的作者: +Can\ be\ used\ for\ known\ event\ acronyms.=可用于已知事件的缩写。 +Chapter\ or\ section\ or\ any\ other\ unit\ of\ a\ work.=章或节或作品的任何其他部分; +Date\ of\ a\ conference,\ a\ symposium,\ or\ some\ other\ event.=会议、专题讨论会或其他活动的日期。 +Designation\ to\ be\ used\ by\ the\ citation\ style\ as\ a\ substitute\ for\ the\ regular\ label\ if\ any\ data\ required\ to\ generate\ the\ regular\ label\ is\ missing.=如果缺少生成常规标签所需的任何数据,引文样式将使用该名称来替代常规标签。 +Digital\ Object\ Identifier\ of\ the\ work.=作品的数字对象标识符。 +Edition\ of\ a\ printed\ publication.=印刷版本 +Editor(s)\ of\ the\ work\ or\ the\ main\ publication,\ depending\ on\ the\ type\ of\ the\ entry.=根据参赛作品的类型,作品或主要出版物的编辑。 +Electronic\ identifier\ of\ a\ work.=作品的电子标识码。 +Electronic\ identifier\ of\ an\ online\ publication.=在线出版物的电子标识码。 +If\ the\ work\ is\ published\ as\ part\ of\ another\ one,\ such\ as\ an\ article\ in\ a\ journal\ or\ a\ collection,\ this\ field\ holds\ the\ relevant\ page\ range\ in\ that\ other\ work.\ It\ may\ also\ be\ used\ to\ limit\ the\ reference\ to\ a\ specific\ part\ of\ a\ work\ (a\ chapter\ in\ a\ book,\ for\ example).\ For\ papers\ in\ electronic\ journals\ with\ anon-classical\ pagination\ setup\ the\ eid\ field\ may\ be\ more\ suitable.=如果该作品是作为另一部作品的一部分出版的,如期刊或文集中的一篇文章,则该字段保留该另一部作品的相关页数范围。它也可以用来限制对作品的特定部分的引用(例如,一本书中的一章)。对于电子期刊上的论文,如果设置了非经典的页码,eid字段可能更适合。 +Information\ such\ as\ a\ library\ name\ and\ a\ call\ number.=图书馆名称和号码等信息。 +International\ Standard\ Book\ Number\ of\ a\ book.=一本书的国际标准书号。 +Issue\ of\ a\ journal.=刊号 +Key\ by\ which\ the\ work\ may\ be\ cited.=可引用该作品的关键字: +Link(s)\ to\ a\ local\ PDF\ or\ other\ document\ of\ the\ work.=链接到作品的本地PDF或其他文件。 +Location\ of\ a\ conference,\ a\ symposium,\ or\ some\ other\ event.=会议、座谈会或其他活动的地点。 +Main\ title\ of\ a\ multi-volume\ book,\ such\ as\ "Collected\ Works".="文集 "等多卷书的主标题。 +Miscellaneous\ bibliographic\ data\ usually\ printed\ at\ the\ end\ of\ the\ entry.=杂项书目数据通常印在条目末尾。 +Miscellaneous\ bibliographic\ data\ which\ does\ not\ fit\ into\ any\ other\ field.=不适合放在任何其他领域的杂项书目数据。 +Name(s)\ of\ the\ (manual)\ groups\ the\ entry\ belongs\ to.=条目所属(手动)组的名称: +Name(s)\ of\ the\ publisher(s).=出版者姓名: +Name\ of\ a\ journal,\ a\ newspaper,\ or\ some\ other\ periodical.=杂志、报纸或其他一些期刊的名称。 +Name\ of\ a\ publication\ series,\ such\ as\ "Studies\ in...",\ or\ the\ number\ of\ a\ journal\ series.=一个出版物系列的名称,如 "Studies in...",或一个期刊系列的编号。 +Name\ of\ a\ university\ or\ some\ other\ institution.=某大学或其他机构的名称; +Note\ that\ this\ field\ holds\ the\ plain\ title\ of\ the\ event.\ Things\ like\ "Proceedings\ of\ the\ Fifth\ XYZ\ Conference"\ go\ into\ the\ titleaddon\ or\ booktitleaddon\ field.=请注意,该字段是活动的普通标题。像 "第五届......会议论文集 "这样的内容会被放入标题栏或书名栏。 +Note\ that\ this\ field\ is\ intended\ for\ commented\ editions\ which\ have\ a\ commentator\ in\ addition\ to\ the\ author.\ If\ the\ work\ is\ a\ stand-alone\ commentary,\ the\ commentator\ should\ be\ given\ in\ the\ author\ field.=请注意,该字段用于除作者外还有评论者的注释版本。如果作品是独立的评注,则应在作者一栏填写评注者。 +Number\ of\ a\ journal\ or\ the\ volume/number\ of\ a\ book\ in\ a\ series.=期刊的编号或系列图书的卷数/编号。 +One\ or\ more\ page\ numbers\ or\ page\ ranges.=一个或多个页码或页码范围。 +Organization(s)\ that\ published\ a\ manual\ or\ an\ online\ resource,\ or\ sponsored\ a\ conference.=出版手册或在线资源或赞助会议的组织 \: +Publication\ date\ of\ the\ work.=作品的出版日期。 +Publication\ month.=出版月份 +Publication\ notice\ for\ unusual\ publications\ which\ do\ not\ fit\ into\ any\ of\ the\ common\ categories.=不符合任何常见类别的特殊出版物的出版通知。 +Publication\ state\ of\ the\ work,\ e.\ g.,\ "in\ press".=作品的出版状态,如 "正在出版"。 +Revision\ number\ of\ a\ piece\ of\ software,\ a\ manual,\ etc.=软件、手册等的修订号。 +Separated\ list\ of\ keywords.=分开的关键词列表。 +Subtitle\ of\ a\ specific\ issue\ of\ a\ journal\ or\ other\ periodical.=期刊或其他期刊某一期的副标题。 +Subtitle\ of\ the\ work.=作品的副标题: +Place(s)\ of\ publication,\ i.\ e.,\ the\ location\ of\ the\ publisher\ or\ institution,\ depending\ on\ the\ entry\ type.=出版地点,即出版商或机构的所在地,视作品类型而定。 +This\ could\ be\ a\ section\ of\ an\ archive,\ a\ path\ indicating\ a\ service,\ a\ classification\ of\ some\ sort.=这可能是一个档案的一个部分,一个表示服务的路径,一个某种分类。 +This\ field\ is\ intended\ for\ journals\ whose\ individual\ issues\ are\ identified\ by\ a\ designation\ such\ as\ "Spring"\ or\ "Summer"\ rather\ than\ the\ month\ or\ a\ number.\ Integer\ ranges\ and\ short\ designators\ are\ better\ written\ to\ the\ number\ field.=该字段适用于用 "春季 "或 "夏季 "等名称而非月份或数字来标识各期的期刊。整数范围和短代号最好写在数字栏中。 +This\ field\ may\ replace\ the\ pages\ field\ for\ journals\ deviating\ from\ the\ classic\ pagination\ scheme\ of\ printed\ journals\ by\ only\ enumerating\ articles\ or\ papers\ and\ not\ pages.=这个字段可以取代页数字段,因为期刊偏离了印刷期刊的经典分页方式,只列举文章或论文而不是页数。 +This\ is\ roughly\ comparable\ to\ a\ DOI\ but\ specific\ to\ a\ certain\ archive,\ repository,\ service,\ or\ system.=这与DOI大致相当,但具体到某一档案、存储库、服务或系统。 +Title\ of\ a\ conference,\ a\ symposium,\ or\ some\ other\ event.=会议、专题讨论会或其他活动的名称。 +Title\ of\ a\ specific\ issue\ of\ a\ journal\ or\ other\ periodical.=期刊或其他期刊的某一期的标题。 +Title\ of\ the\ main\ publication\ this\ work\ is\ part\ of.=该作品所属的主要出版物的标题: +Title\ of\ the\ work.=作品名称 +Total\ number\ of\ pages\ of\ the\ work.=作品总页数 +Total\ number\ of\ volumes\ of\ a\ multi-volume\ work.=多卷本著作的总卷数。 +Type\ of\ the\ eprint\ identifier,\ e.\ g.,\ the\ name\ of\ the\ archive,\ repository,\ service,\ or\ system\ the\ eprint\ field\ refers\ to.=Eprint标识符的类型,例如,eprint字段所指的存档、存储库、服务或系统的名称。 +URL\ of\ an\ online\ publication.=在线出版物的URL。 +Volume\ of\ a\ multi-volume\ book\ or\ a\ periodical.=多卷书或期刊的卷数。 +Year\ of\ publication.=出版年份 +This\ field\ is\ intended\ for\ recording\ abstracts,\ to\ be\ printed\ by\ a\ special\ bibliography\ style.=本栏目用于记录摘要,以特殊书目样式打印。 +This\ field\ may\ be\ useful\ when\ implementing\ a\ style\ for\ annotated\ bibliographies.=当为注释书目设置样式时,这个字段可能是有用的。 +Subtitle\ related\ to\ the\ "Booktitle".=与 "书名 "有关的副标题。 +Annex\ to\ the\ "Booktitle",\ to\ be\ printed\ in\ a\ different\ font.="书名 "的附录,用不同的字体打印。 +Comment\ to\ this\ entry.=对这个条目进行评论。 +Secondary\ editor\ performing\ a\ different\ editorial\ role,\ such\ as\ compiling,\ redacting,\ etc.=二级编辑履行不同的编辑职责,如汇编、改编等。 +Another\ secondary\ editor\ performing\ a\ different\ role.=另一位次要编辑执行不同的角色。 +Type\ of\ editorial\ role\ performed\ by\ the\ "Editor".="编辑 "发挥的编辑作用类型。 +Type\ of\ editorial\ role\ performed\ by\ the\ "Editora".="编辑A"发挥的编辑作用类型。 +Type\ of\ editorial\ role\ performed\ by\ the\ "Editorb".="编辑B "发挥的编辑作用类型。 +Type\ of\ editorial\ role\ performed\ by\ the\ "Editorc".="编辑C"发挥的编辑作用类型。 +Author(s)\ of\ a\ foreword\ to\ the\ work.=为该作品写后记的作者。 +International\ Standard\ Technical\ Report\ Number\ of\ a\ technical\ report.=国际标准技术报告 技术报告的编号。 +International\ Standard\ Serial\ Number\ of\ a\ periodical.=期刊的国际标准序列号。 +Subtitle\ of\ a\ journal,\ a\ newspaper,\ or\ some\ other\ periodical.=期刊、报纸或其他一些期刊的副标题。 +Language(s)\ of\ the\ work.\ Languages\ may\ be\ specified\ literally\ or\ as\ localisation\ keys.=作品的语言。语言可按字面意思或作为本地化键指定。 +Subtitle\ related\ to\ the\ "Maintitle".=与 "主标题 "有关的副标题 +Annex\ to\ the\ "Maintitle",\ to\ be\ printed\ in\ a\ different\ font.="主标题 "的附录,用不同的字体打印。 +Addon\ to\ be\ printed\ immediately\ after\ the\ author\ name\ in\ the\ bibliography.=紧接在书目中作者姓名后打印的附加内容。 +If\ the\ work\ is\ a\ translation,\ a\ reprint,\ or\ something\ similar,\ the\ publication\ date\ of\ the\ original\ edition.=如果作品是译本、重印本或类似作品,请注明原版的出版日期。 +If\ the\ work\ is\ a\ translation,\ the\ language(s)\ of\ the\ original\ work.=如果是翻译作品,请注明原作品的语言。 +Pagination\ of\ the\ work.\ The\ key\ should\ be\ given\ in\ the\ singular\ form.=作品的页码。Key应以单数形式给出。 +Number\ of\ a\ partial\ volume.\ This\ field\ applies\ to\ books\ only,\ not\ to\ journals.\ It\ may\ be\ used\ when\ a\ logical\ volume\ consists\ of\ two\ or\ more\ physical\ ones.=部分卷号。该字段仅适用于书籍,不适用于期刊。当一卷逻辑卷由两卷或多卷物理卷组成时,可使用此栏。 +Title\ in\ an\ abridged\ form.=标题为节选。 +Annex\ to\ the\ "Title",\ to\ be\ printed\ in\ a\ different\ font.="标题 "的附件,要用不同的字体打印。 +Translator(s)\ of\ the\ "Title"\ or\ "Booktitle",\ depending\ on\ the\ entry\ type.\ If\ the\ translator\ is\ identical\ to\ the\ "Editor",\ the\ standard\ styles\ will\ automatically\ concatenate\ these\ fields\ in\ the\ bibliography.=标题 "或 "书名 "的译者,取决于条目类型。如果译者与 "编辑 "相同,标准样式将自动在书目中连接这些字段。 +Type\ of\ a\ "Manual",\ "Patent",\ "Report",\ or\ "Thesis".="手册"、"专利"、"报告 "或 "论文 "的类型。 +This\ field\ holds\ an\ entry\ key\ for\ the\ cross-referencing\ feature.\ Child\ entries\ with\ a\ "Crossref"\ field\ inherit\ data\ from\ the\ parent\ entry\ specified\ in\ the\ "Crossref"\ field.=该字段拥有交叉引用功能的条目键。带有 "交叉引用 "字段的子条目继承 "交叉引用 "字段中指定的父条目的数据。 +Gender\ of\ the\ author\ or\ gender\ of\ the\ editor,\ if\ there\ is\ no\ author.=作者的性别,如果没有作者,则编辑的性别; +Citation\ keys\ of\ other\ entries\ which\ have\ a\ relationship\ to\ this\ entry.=与本条目有关系的其他条目的引用键。 +This\ field\ is\ an\ alternative\ cross-referencing\ mechanism.\ It\ differs\ from\ "Crossref"\ in\ that\ the\ child\ entry\ will\ not\ inherit\ any\ data\ from\ the\ parent\ entry\ specified\ in\ the\ "Xref"\ field.=该字段是一种替代的交叉引用机制。与 "交叉引用 "不同的是,子条目不会继承 "Xref "字段中指定的父条目的任何数据。 +Owner/creator\ of\ this\ entry.=本条目的所有者/创造者: +Timestamp\ of\ this\ entry,\ when\ it\ has\ been\ created\ or\ last\ modified.=该条目的时间戳,即创建或最后修改的时间。 +User-specific\ printed\ flag,\ in\ case\ the\ entry\ has\ been\ printed.=用户特有的打印标志,以防条目被打印。 +User-specific\ priority.=用户特定的优先权。 +User-specific\ quality\ flag,\ in\ case\ its\ quality\ is\ assured.=用户特有的质量标志,在其质量得到保证的情况下。 +User-specific\ ranking.=用户特定排序。 +User-specific\ read\ status.=用户特定的读取状态。 +User-specific\ relevance\ flag,\ in\ case\ the\ entry\ is\ relevant.=用户特定的相关性标志,例如:该条目是相关的。 Auto\ complete\ disabled.=自动完成已禁用。 Auto\ complete\ enabled.=自动完成已启用。 - +Remove\ formatter\ for\ %0=删除%0的格式。 +Remove\ formatter\ '%0'=删除格式'%0' + +An\ article\ in\ a\ journal,\ magazine,\ newspaper,\ or\ other\ periodical\ which\ forms\ a\ self-contained\ unit\ with\ its\ own\ title.=期刊、杂志、报纸或其他期刊上的文章,形成一个独立的单元,有自己的标题。 +A\ single-volume\ book\ with\ one\ or\ more\ authors\ where\ the\ authors\ share\ credit\ for\ the\ work\ as\ a\ whole.=有一个或多个作者的单卷书,作者分享整个作品的利益。 +A\ book-like\ work\ without\ a\ formal\ publisher\ or\ sponsoring\ institution.=没有正式的出版社或赞助机构的图书类作品。 +A\ single-volume\ collection\ with\ multiple,\ self-contained\ contributions\ by\ distinct\ authors\ which\ have\ their\ own\ title.\ The\ work\ as\ a\ whole\ has\ no\ overall\ author\ but\ it\ will\ usually\ have\ an\ editor.=由不同作者提供的多篇自成一体的作品组成的单卷集,有自己的标题。整部作品没有总的作者,但通常会有一名编辑。 +A\ legacy\ alias\ for\ "InProceedings".="InProceedings "的传统别称。 +A\ part\ of\ a\ book\ which\ forms\ a\ self-contained\ unit\ with\ its\ own\ title.=一本书的一部分,形成一个独立的单元,有自己的标题。 +A\ contribution\ to\ a\ collection\ which\ forms\ a\ self-contained\ unit\ with\ a\ distinct\ author\ and\ title.=对某一文集的贡献,形成一个自成一体的单位,有明确的作者和标题。 +An\ article\ in\ a\ conference\ proceedings.=会议论文集中的一篇文章。 +Technical\ or\ other\ documentation,\ not\ necessarily\ in\ printed\ form.=技术或其他文件,不一定是印刷版。 +A\ fallback\ type\ for\ entries\ which\ do\ not\ fit\ into\ any\ other\ category.=不适合任何其他类别的条目的后备类型。 +Similar\ to\ "Thesis"\ except\ that\ the\ type\ field\ is\ optional\ and\ defaults\ to\ the\ localised\ term\ \ Master's\ thesis.=与 "论文 "类似,只是类型字段是可选的,默认为本地化的术语硕士论文。 +Similar\ to\ "Thesis"\ except\ that\ the\ type\ field\ is\ optional\ and\ defaults\ to\ the\ localised\ term\ PhD\ thesis.=与 "论文 "类似,只是类型字段是可选的,默认为本地化术语的博士论文。 +A\ single-volume\ conference\ proceedings.\ This\ type\ is\ very\ similar\ to\ "Collection".=单卷的会议记录。这种类型与 "收藏集 "非常相似。 +Similar\ to\ "Report"\ except\ that\ the\ type\ field\ is\ optional\ and\ defaults\ to\ the\ localised\ term\ technical\ report.=与 "报告 "类似,但类型字段是可选的,默认为本地化术语的技术报告。 +A\ work\ with\ an\ author\ and\ a\ title\ which\ has\ not\ been\ formally\ published,\ such\ as\ a\ manuscript\ or\ the\ script\ of\ a\ talk.=有作者和标题的作品,但尚未正式出版,如手稿或谈话稿等。 +This\ type\ is\ similar\ to\ "InBook"\ but\ intended\ for\ works\ originally\ published\ as\ a\ stand-alone\ book.=这种类型与 "InBook "类似,但适用于最初作为独立书籍出版的作品。 +An\ article\ in\ a\ work\ of\ reference.\ This\ is\ a\ more\ specific\ variant\ of\ the\ generic\ "InCollection"\ entry\ type.=参考文献中的一篇文章。这是通用 "InCollection "条目类型的一个更具体的变体。 +A\ multi-volume\ "Book".=一本多卷的书。 +A\ multi-volume\ "Collection".=一本多卷的集。 +A\ multi-volume\ "Proceedings"\ entry.=一个多卷的议事录条目。 +A\ multi-volume\ "Reference"\ entry.\ The\ standard\ styles\ will\ treat\ this\ entry\ type\ as\ an\ alias\ for\ "MvCollection".=一个多卷的 "参考 "条目。标准样式将把这个条目类型作为 "MvCollection "的别称。 +This\ entry\ type\ is\ intended\ for\ sources\ such\ as\ web\ sites\ which\ are\ intrinsically\ online\ resources.=这种录入类型是针对网站等内在网络资源的来源。 +A\ single-volume\ work\ of\ reference\ such\ as\ an\ encyclopedia\ or\ a\ dictionary.=单卷的参考书,如百科全书或字典。 +A\ technical\ report,\ research\ report,\ or\ white\ paper\ published\ by\ a\ university\ or\ some\ other\ institution.=大学或其他机构发表的技术报告、研究报告或白皮书。 +An\ entry\ set\ is\ a\ group\ of\ entries\ which\ are\ cited\ as\ a\ single\ reference\ and\ listed\ as\ a\ single\ item\ in\ the\ bibliography.=条目集是指在书目中作为单一参考文献引用并作为单一项目列出的一组条目。 +Supplemental\ material\ in\ a\ "Book".\ This\ type\ is\ provided\ for\ elements\ such\ as\ prefaces,\ introductions,\ forewords,\ afterwords,\ etc.\ which\ often\ have\ a\ generic\ title\ only.="书 "中的补充材料。这种类型是为序言、导言、前言、后记等内容提供的,这些内容往往只有一个通用标题。 +Supplemental\ material\ in\ a\ "Collection".="收藏集"中的补充材料。 +Supplemental\ material\ in\ a\ "Periodical".\ This\ type\ may\ be\ useful\ when\ referring\ to\ items\ such\ as\ regular\ columns,\ obituaries,\ letters\ to\ the\ editor,\ etc.\ which\ only\ have\ a\ generic\ title.="期刊 "中的补充材料。这种类型在提及诸如普通专栏、讣告、致编辑的信等只有一个通用标题的项目时可能有用。 +A\ thesis\ written\ for\ an\ educational\ institution\ to\ satisfy\ the\ requirements\ for\ a\ degree.=为满足学位要求而为教育机构撰写的论文。 +An\ alias\ for\ "Online",\ provided\ for\ jurabib\ compatibility.="在线 "的别名,为jurabib兼容性提供。 +Computer\ software.\ The\ standard\ styles\ will\ treat\ this\ entry\ type\ as\ an\ alias\ for\ "Misc".=计算机软件。标准样式将把这个条目类型作为 "Misc "的别称。 +A\ data\ set\ or\ a\ similar\ collection\ of\ (mostly)\ raw\ data.=一组数据或类似的(大部分)原始数据的集合。 Display\ count\ of\ items\ in\ group=显示组中的条目数量 Remove\ the\ following\ characters\:=删除以下字符: +Truncate=设置断点 +Truncates\ a\ string\ after\ a\ given\ index.=在给定的索引后设置一个字符串断点。 Close=关闭 Close\ all=关闭全部 Close\ all\ libraries=关闭所有库 Close\ other\ libraries=关闭其他库 +Close\ others=关闭其它 +Reveal\ in\ file\ explorer=在文件资源管理器中显示 + + + +(\ Note\:\ Press\ return\ to\ commit\ changes\ in\ the\ table\!\ )=( 注意:按返回键提交表格中的更改! ) +Reset=重新设定 +Reset\ entry\ types\ and\ fields\ to\ defaults=将条目类型和字段重置为默认值 +This\ will\ reset\ all\ entry\ types\ to\ their\ default\ values\ and\ remove\ all\ custom\ entry\ types=这将把所有条目类型重置为默认值,并删除所有自定义条目类型。 +Replace\ tabs\ with\ space=用空格代替制表符 +Replace\ tabs\ with\ space\ in\ the\ field\ content.=在字段内容中用空格代替标签。 +Remove\ redundant\ spaces=删除多余的空格 +Replaces\ consecutive\ spaces\ with\ a\ single\ space\ in\ the\ field\ content.=将字段内容中连续的空格替换为一个空格。 +Remove\ digits=去掉数字 +Removes\ digits.=去除数字。 + From 8d783355ab007c7fe23ead761688ca459370362a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Dec 2020 18:26:28 +0100 Subject: [PATCH 03/33] Bump tika-core from 1.24.1 to 1.25 (#7165) * Bump tika-core from 1.24.1 to 1.25 Bumps [tika-core](https://github.com/apache/tika) from 1.24.1 to 1.25. - [Release notes](https://github.com/apache/tika/releases) - [Changelog](https://github.com/apache/tika/blob/main/CHANGES.txt) - [Commits](https://github.com/apache/tika/compare/1.24.1...1.25) Signed-off-by: dependabot[bot] * fix module name of tika Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Siedlerchr --- build.gradle | 2 +- src/main/java/module-info.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 1504135542b..23df049d8d2 100644 --- a/build.gradle +++ b/build.gradle @@ -107,7 +107,7 @@ dependencies { implementation group: 'org.apache.commons', name: 'commons-csv', version: '1.8' implementation 'com.h2database:h2-mvstore:1.4.200' - implementation group: 'org.apache.tika', name: 'tika-core', version: '1.24.1' + implementation group: 'org.apache.tika', name: 'tika-core', version: '1.25' // required for reading write-protected PDFs - see https://github.com/JabRef/jabref/pull/942#issuecomment-209252635 implementation 'org.bouncycastle:bcprov-jdk15on:1.67' diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 64504a259fe..2394dbfc2cf 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -81,7 +81,7 @@ requires org.apache.commons.lang3; requires org.antlr.antlr4.runtime; requires flowless; - requires org.apache.tika.core; + requires tika.core; requires flexmark; requires flexmark.ext.gfm.strikethrough; From 7272b2b967283aecbfce939da9678e1212249738 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 7 Dec 2020 20:48:36 +0100 Subject: [PATCH 04/33] Update stale.yml (#7122) Co-authored-by: Tobias Diez Co-authored-by: Dominik Voigt --- .github/workflows/stale.yml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index db8e6e705ef..f227fc4bd1a 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -2,17 +2,27 @@ name: Mark stale issues and pull requests on: schedule: - - cron: "0 0 * * *" + - cron: "20 19 * * *" jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@master + - uses: actions/stale@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'This issue will be closed in 7 days due to inactivity :zzz: Please provide the requested information if the problem persists.' + days-before-stale: 180 + days-before-close: 14 + stale-issue-message: | + This issue has been inactive for half a year. Since JabRef is constantly evolving this issue may not be relevant any longer and it will be closed in two weeks if no further activity occurs. + + As part of an effort to ensure that the JabRef team is focusing on important and valid issues, we would like to ask if you could update the issue if it still persists. This could be in the following form: + + - If there has been a longer discussion, add a short summary of the most important points as a new comment (if not yet existing). + - Provide further steps or information on how to reproduce this issue. + - Upvote the initial post if you like to see it implemented soon. Votes are not the only metric that we use to determine the requests that are implemented, however, they do factor into our decision-making process. + - If all information is provided and still up-to-date, then just add a short comment that the issue is still relevant. + + Thank you for your contribution! stale-issue-label: 'status: stale' - days-before-stale: 30 - only-labels: 'status: waiting-for-customer-feedback' From 8674477a345ceae5de3ec8fe9959dff95068b782 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 7 Dec 2020 21:51:36 +0100 Subject: [PATCH 05/33] Fix file not linked after DL from fulltext fetcher (#7162) --- .../externalfiles/DownloadFullTextAction.java | 25 +------------------ src/main/resources/l10n/JabRef_en.properties | 1 - 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/src/main/java/org/jabref/gui/externalfiles/DownloadFullTextAction.java b/src/main/java/org/jabref/gui/externalfiles/DownloadFullTextAction.java index d63f3ff7eda..51ff76fd892 100644 --- a/src/main/java/org/jabref/gui/externalfiles/DownloadFullTextAction.java +++ b/src/main/java/org/jabref/gui/externalfiles/DownloadFullTextAction.java @@ -1,6 +1,5 @@ package org.jabref.gui.externalfiles; -import java.net.MalformedURLException; import java.net.URL; import java.nio.file.Path; import java.util.List; @@ -17,11 +16,8 @@ import org.jabref.gui.actions.SimpleCommand; import org.jabref.gui.externalfiletype.ExternalFileTypes; import org.jabref.gui.fieldeditors.LinkedFileViewModel; -import org.jabref.gui.fieldeditors.LinkedFilesEditorViewModel; -import org.jabref.gui.util.BackgroundTask; import org.jabref.logic.importer.FulltextFetchers; import org.jabref.logic.l10n.Localization; -import org.jabref.logic.net.URLDownload; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.LinkedFile; @@ -154,26 +150,7 @@ private void addLinkedFileFromURL(BibDatabaseContext databaseContext, URL url, B preferences.getFilePreferences(), ExternalFileTypes.getInstance()); - try { - URLDownload urlDownload = new URLDownload(newLinkedFile.getLink()); - BackgroundTask downloadTask = onlineFile.prepareDownloadTask(targetDirectory, urlDownload); - downloadTask.onSuccess(destination -> { - LinkedFile downloadedFile = LinkedFilesEditorViewModel.fromFile( - destination, - databaseContext.getFileDirectories(preferences.getFilePreferences()), - ExternalFileTypes.getInstance()); - entry.addFile(downloadedFile); - dialogService.notify(Localization.lang("Finished downloading full text document for entry %0.", - entry.getCitationKey().orElse(Localization.lang("undefined")))); - }); - downloadTask.titleProperty().set(Localization.lang("Downloading")); - downloadTask.messageProperty().set( - Localization.lang("Fulltext for") + ": " + entry.getCitationKey().orElse(Localization.lang("New entry"))); - downloadTask.showToUser(true); - Globals.TASK_EXECUTOR.execute(downloadTask); - } catch (MalformedURLException exception) { - dialogService.showErrorDialogAndWait(Localization.lang("Invalid URL"), exception); - } + onlineFile.download(); } else { dialogService.notify(Localization.lang("Full text document for entry %0 already linked.", entry.getCitationKey().orElse(Localization.lang("undefined")))); diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index e25fc7646c1..2a9775b9ec4 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -1660,7 +1660,6 @@ Opens\ a\ link\ where\ the\ current\ development\ version\ can\ be\ downloaded=O See\ what\ has\ been\ changed\ in\ the\ JabRef\ versions=See what has been changed in the JabRef versions Referenced\ citation\ key\ does\ not\ exist=Referenced citation key does not exist Full\ text\ document\ for\ entry\ %0\ already\ linked.=Full text document for entry %0 already linked. -Finished\ downloading\ full\ text\ document\ for\ entry\ %0.=Finished downloading full text document for entry %0. Download\ full\ text\ documents=Download full text documents You\ are\ about\ to\ download\ full\ text\ documents\ for\ %0\ entries.=You are about to download full text documents for %0 entries. last\ four\ nonpunctuation\ characters\ should\ be\ numerals=last four nonpunctuation characters should be numerals From 395d93bacfd077a5c152847961553390c7113167 Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Mon, 7 Dec 2020 22:06:14 +0100 Subject: [PATCH 06/33] Changed context menu item order for library tabs (#7171) --- CHANGELOG.md | 9 ++++----- src/main/java/org/jabref/gui/JabRefFrame.java | 8 ++++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a4286f4ff9..5251c3d2dbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,8 +17,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve - We added some basic functionality to customise the look of JabRef by importing a css theme file. [#5790](https://github.com/JabRef/jabref/issues/5790) - We added connection check function in network preference setting [#6560](https://github.com/JabRef/jabref/issues/6560) - We added support for exporting to YAML. [#6974](https://github.com/JabRef/jabref/issues/6974) -- We added a DOI format and organization check to detect [American Physical Society](https://journals.aps.org/) journals to copy the article ID -to the page field for cases where the page numbers are missing. [#7019](https://github.com/JabRef/jabref/issues/7019) +- We added a DOI format and organization check to detect [American Physical Society](https://journals.aps.org/) journals to copy the article ID to the page field for cases where the page numbers are missing. [#7019](https://github.com/JabRef/jabref/issues/7019) - We added a new fetcher to enable users to search jstor.org [#6627](https://github.com/JabRef/jabref/issues/6627) - We added an error message in the New Entry dialog that is shown in case the fetcher did not find anything . [#7000](https://github.com/JabRef/jabref/issues/7000) - We added a new formatter to output shorthand month format. [#6579](https://github.com/JabRef/jabref/issues/6579) @@ -28,8 +27,7 @@ to the page field for cases where the page numbers are missing. [#7019](https:// ### Changed -- We changed the default preferences for OpenOffice/LibreOffice integration to automatically sync the bibliography when -inserting new citations in a OpenOffic/LibreOffice document. [#6957](https://github.com/JabRef/jabref/issues/6957) +- We changed the default preferences for OpenOffice/LibreOffice integration to automatically sync the bibliography when inserting new citations in a OpenOffic/LibreOffice document. [#6957](https://github.com/JabRef/jabref/issues/6957) - We restructured the 'File' tab and extracted some parts into the 'Linked files' tab [#6779](https://github.com/JabRef/jabref/pull/6779) - JabRef now offers journal lists from . JabRef the lists which use a dot inside the abbreviations. [#5749](https://github.com/JabRef/jabref/pull/5749) - We removed two useless preferences in the groups preferences dialog. [#6836](https://github.com/JabRef/jabref/pull/6836) @@ -48,7 +46,8 @@ inserting new citations in a OpenOffic/LibreOffice document. [#6957](https://git - We changed the name of a group type from "Searching for keywords" to "Searching for a keyword". [6995](https://github.com/JabRef/jabref/pull/6995) - We changed the way JabRef displays the title of a tab and of the window. [4161](https://github.com/JabRef/jabref/issues/4161) - We changed connect timeouts for server requests to 30 seconds in general and 5 seconds for GROBID server (special) and improved user notifications on connection issues. [7026](https://github.com/JabRef/jabref/pull/7026) -- We changed the way linked files are opened on Linux to use the native openFile method, compatible with confined packages. [7037](https://github.com/JabRef/jabref/pull/7037) +- We changed the order of the library tab context menu items. [#7171](https://github.com/JabRef/jabref/issues/7171) +- We changed the way linked files are opened on Linux to use the native openFile method, compatible with confined packages. [7037](https://github.com/JabRef/jabref/pull/7037) - We refined the entry preview to show the full names of authors and editors, to list the editor only if no author is present, have the year ealier. [#7083](https://github.com/JabRef/jabref/issues/7083) ### Fixed diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 9c54e679995..c4d9d37e142 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -1009,12 +1009,12 @@ private ContextMenu createTabContextMenu(KeyBindingRepository keyBindingReposito ActionFactory factory = new ActionFactory(keyBindingRepository); contextMenu.getItems().addAll( + factory.createMenuItem(StandardActions.OPEN_DATABASE_FOLDER, new OpenDatabaseFolder()), + factory.createMenuItem(StandardActions.OPEN_CONSOLE, new OpenConsoleAction(stateManager)), + new SeparatorMenuItem(), factory.createMenuItem(StandardActions.CLOSE_LIBRARY, new CloseDatabaseAction()), factory.createMenuItem(StandardActions.CLOSE_OTHER_LIBRARIES, new CloseOthersDatabaseAction()), - factory.createMenuItem(StandardActions.CLOSE_ALL_LIBRARIES, new CloseAllDatabaseAction()), - new SeparatorMenuItem(), - factory.createMenuItem(StandardActions.OPEN_DATABASE_FOLDER, new OpenDatabaseFolder()), - factory.createMenuItem(StandardActions.OPEN_CONSOLE, new OpenConsoleAction(stateManager)) + factory.createMenuItem(StandardActions.CLOSE_ALL_LIBRARIES, new CloseAllDatabaseAction()) ); return contextMenu; From c7703106dc717f5ac8b7f326670429362f5bcde3 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 7 Dec 2020 22:08:45 +0100 Subject: [PATCH 07/33] Fixed setting of tab title in wrong thread (#7170) --- src/main/java/org/jabref/gui/LibraryTab.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jabref/gui/LibraryTab.java b/src/main/java/org/jabref/gui/LibraryTab.java index b8f1f8aabf5..5d50d770f9a 100644 --- a/src/main/java/org/jabref/gui/LibraryTab.java +++ b/src/main/java/org/jabref/gui/LibraryTab.java @@ -313,13 +313,16 @@ public void updateTabTitle(boolean isChanged) { addSharedDbInformation(toolTipText, bibDatabaseContext); } addModeInfo(toolTipText, bibDatabaseContext); - if (databaseLocation == DatabaseLocation.LOCAL && bibDatabaseContext.getDatabase().hasEntries()) { + if ((databaseLocation == DatabaseLocation.LOCAL) && bibDatabaseContext.getDatabase().hasEntries()) { addChangedInformation(toolTipText, Localization.lang("untitled")); } } - textProperty().setValue(tabTitle.toString()); - setTooltip(new Tooltip(toolTipText.toString())); + DefaultTaskExecutor.runInJavaFXThread(() -> { + textProperty().setValue(tabTitle.toString()); + setTooltip(new Tooltip(toolTipText.toString())); + }); + } private static void addChangedInformation(StringBuilder text, String fileName) { From d1fb9e2bad0bb7bb8a78b14ee2417e7a3e2bcc18 Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Wed, 9 Dec 2020 09:28:10 +0100 Subject: [PATCH 08/33] Fixed context menu of linked files not updated (#7174) * Fixed context menu of linked files not updated * Added some eyecandy and CHANGELOG.md * Checkstyle --- CHANGELOG.md | 1 + .../jabref/gui/actions/StandardActions.java | 12 +- .../gui/copyfiles/CopySingleFileAction.java | 32 ++-- .../gui/fieldeditors/LinkedFileViewModel.java | 5 +- .../gui/fieldeditors/LinkedFilesEditor.java | 141 ++++++++++-------- .../LinkedFilesEditorViewModel.java | 3 +- .../java/org/jabref/gui/icon/IconTheme.java | 9 +- src/main/resources/l10n/JabRef_en.properties | 2 +- 8 files changed, 128 insertions(+), 77 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5251c3d2dbb..cfbb06fed9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,6 +76,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve - We fixed an issue where the color of groups of type "free search expression" not persisting after restarting the application [#6999](https://github.com/JabRef/jabref/issues/6999) - We fixed an issue where modifications in the source tab where not saved without switching to another field before saving the library [#6622](https://github.com/JabRef/jabref/issues/6622) - We fixed an issue where the "Document Viewer" did not show the first page of the opened pdf document and did not show the correct total number of pages [#7108](https://github.com/JabRef/jabref/issues/7108) +- We fixed an issue where the context menu was not updated after a file link was changed. [#5777](https://github.com/JabRef/jabref/issues/5777) - We fixed an issue where the password for a shared SQL database was not remembered [#6869](https://github.com/JabRef/jabref/issues/6869) ### Removed diff --git a/src/main/java/org/jabref/gui/actions/StandardActions.java b/src/main/java/org/jabref/gui/actions/StandardActions.java index 0767d4021bb..1bd099016f4 100644 --- a/src/main/java/org/jabref/gui/actions/StandardActions.java +++ b/src/main/java/org/jabref/gui/actions/StandardActions.java @@ -90,7 +90,7 @@ public enum StandardActions implements Action { WRITE_XMP(Localization.lang("Write XMP metadata to PDFs"), Localization.lang("Will write XMP metadata to the PDFs linked from selected entries."), KeyBinding.WRITE_XMP), START_SYSTEMATIC_LITERATURE_REVIEW(Localization.lang("Start systematic literature review")), OPEN_DATABASE_FOLDER(Localization.lang("Reveal in file explorer")), - OPEN_FOLDER(Localization.lang("Open folder"), Localization.lang("Open folder"), KeyBinding.OPEN_FOLDER), + OPEN_FOLDER(Localization.lang("Open folder"), Localization.lang("Open folder"), IconTheme.JabRefIcons.FOLDER, KeyBinding.OPEN_FOLDER), OPEN_FILE(Localization.lang("Open file"), Localization.lang("Open file"), IconTheme.JabRefIcons.FILE, KeyBinding.OPEN_FILE), OPEN_CONSOLE(Localization.lang("Open terminal here"), Localization.lang("Open terminal here"), IconTheme.JabRefIcons.CONSOLE, KeyBinding.OPEN_CONSOLE), COPY_LINKED_FILES(Localization.lang("Copy linked files to folder...")), @@ -140,6 +140,16 @@ public enum StandardActions implements Action { CLEANUP_ENTRIES(Localization.lang("Cleanup entries"), IconTheme.JabRefIcons.CLEANUP_ENTRIES, KeyBinding.CLEANUP), SET_FILE_LINKS(Localization.lang("Automatically set file links"), KeyBinding.AUTOMATICALLY_LINK_FILES), + EDIT_FILE_LINK(Localization.lang("Edit"), IconTheme.JabRefIcons.EDIT, KeyBinding.EDIT_ENTRY), + DOWNLOAD_FILE(Localization.lang("Download file"), IconTheme.JabRefIcons.DOWNLOAD_FILE), + RENAME_FILE_TO_PATTERN(Localization.lang("Rename file to defined pattern"), IconTheme.JabRefIcons.AUTO_RENAME), + RENAME_FILE_TO_NAME(Localization.lang("Rename file to a given name"), IconTheme.JabRefIcons.RENAME, KeyBinding.REPLACE_STRING), + MOVE_FILE_TO_FOLDER(Localization.lang("Move file to file directory"), IconTheme.JabRefIcons.MOVE_TO_FOLDER), + MOVE_FILE_TO_FOLDER_AND_RENAME(Localization.lang("Move file to file directory and rename file")), + COPY_FILE_TO_FOLDER(Localization.lang("Copy linked file to folder..."), IconTheme.JabRefIcons.COPY_TO_FOLDER, KeyBinding.COPY), + REMOVE_LINK(Localization.lang("Remove link"), IconTheme.JabRefIcons.REMOVE_LINK), + DELETE_FILE(Localization.lang("Permanently delete local file"), IconTheme.JabRefIcons.DELETE_FILE, KeyBinding.DELETE_ENTRY), + HELP(Localization.lang("Online help"), IconTheme.JabRefIcons.HELP, KeyBinding.HELP), HELP_KEY_PATTERNS(Localization.lang("Help on key patterns"), IconTheme.JabRefIcons.HELP, KeyBinding.HELP), HELP_REGEX_SEARCH(Localization.lang("Help on regular expression search"), IconTheme.JabRefIcons.HELP, KeyBinding.HELP), diff --git a/src/main/java/org/jabref/gui/copyfiles/CopySingleFileAction.java b/src/main/java/org/jabref/gui/copyfiles/CopySingleFileAction.java index 0981032c29a..4505f75650d 100644 --- a/src/main/java/org/jabref/gui/copyfiles/CopySingleFileAction.java +++ b/src/main/java/org/jabref/gui/copyfiles/CopySingleFileAction.java @@ -4,48 +4,56 @@ import java.util.Optional; import java.util.function.BiFunction; +import javafx.beans.binding.Bindings; + import org.jabref.gui.DialogService; -import org.jabref.gui.Globals; +import org.jabref.gui.actions.SimpleCommand; import org.jabref.gui.util.DirectoryDialogConfiguration; import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.io.FileUtil; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.LinkedFile; import org.jabref.model.util.OptionalUtil; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; -public class CopySingleFileAction { +public class CopySingleFileAction extends SimpleCommand { private final LinkedFile linkedFile; private final DialogService dialogService; private final BibDatabaseContext databaseContext; - private final BiFunction resolvePathFilename = (path, file) -> { - return path.resolve(file.getFileName()); - }; + private final BiFunction resolvePathFilename = (path, file) -> path.resolve(file.getFileName()); + private final PreferencesService preferencesService; - public CopySingleFileAction(LinkedFile linkedFile, DialogService dialogService, BibDatabaseContext databaseContext) { + public CopySingleFileAction(LinkedFile linkedFile, DialogService dialogService, BibDatabaseContext databaseContext, PreferencesService preferencesService) { this.linkedFile = linkedFile; this.dialogService = dialogService; this.databaseContext = databaseContext; + this.preferencesService = preferencesService; + + this.executable.bind(Bindings.createBooleanBinding( + () -> !linkedFile.isOnlineLink() + && linkedFile.findIn(databaseContext, preferencesService.getFilePreferences()).isPresent(), + linkedFile.linkProperty())); } - public void copyFile() { + @Override + public void execute() { DirectoryDialogConfiguration dirDialogConfiguration = new DirectoryDialogConfiguration.Builder() - .withInitialDirectory(Path.of(Globals.prefs.get(JabRefPreferences.EXPORT_WORKING_DIRECTORY))) + .withInitialDirectory(preferencesService.getWorkingDir()) .build(); Optional exportPath = dialogService.showDirectorySelectionDialog(dirDialogConfiguration); exportPath.ifPresent(this::copyFileToDestination); } private void copyFileToDestination(Path exportPath) { - Optional fileToExport = linkedFile.findIn(databaseContext, Globals.prefs.getFilePreferences()); + Optional fileToExport = linkedFile.findIn(databaseContext, preferencesService.getFilePreferences()); Optional newPath = OptionalUtil.combine(Optional.of(exportPath), fileToExport, resolvePathFilename); if (newPath.isPresent()) { Path newFile = newPath.get(); - boolean success = FileUtil.copyFile(fileToExport.get(), newFile, false); + boolean success = fileToExport.isPresent() && FileUtil.copyFile(fileToExport.get(), newFile, false); if (success) { - dialogService.showInformationDialogAndWait(Localization.lang("Copy linked file"), Localization.lang("Sucessfully copied file to %0", newPath.map(Path::getParent).map(Path::toString).orElse(""))); + dialogService.showInformationDialogAndWait(Localization.lang("Copy linked file"), Localization.lang("Successfully copied file to %0.", newPath.map(Path::getParent).map(Path::toString).orElse(""))); } else { dialogService.showErrorDialogAndWait(Localization.lang("Copy linked file"), Localization.lang("Could not copy file to %0, maybe the file is already existing?", newPath.map(Path::getParent).map(Path::toString).orElse(""))); } diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java index 995718ce75d..7f14652a529 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java +++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java @@ -230,7 +230,10 @@ public void renameToSuggestion() { public void askForNameAndRename() { String oldFile = this.linkedFile.getLink(); Path oldFilePath = Path.of(oldFile); - Optional askedFileName = dialogService.showInputDialogWithDefaultAndWait(Localization.lang("Rename file"), Localization.lang("New Filename"), oldFilePath.getFileName().toString()); + Optional askedFileName = dialogService.showInputDialogWithDefaultAndWait( + Localization.lang("Rename file"), + Localization.lang("New Filename"), + oldFilePath.getFileName().toString()); askedFileName.ifPresent(this::renameFileToName); } diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java index e52594688c9..998cef0c43a 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java +++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java @@ -4,14 +4,12 @@ import javafx.beans.binding.Bindings; import javafx.collections.ObservableList; -import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.control.Button; import javafx.scene.control.ContextMenu; import javafx.scene.control.ListView; -import javafx.scene.control.MenuItem; import javafx.scene.control.ProgressBar; import javafx.scene.control.SeparatorMenuItem; import javafx.scene.control.Tooltip; @@ -28,10 +26,14 @@ import org.jabref.gui.DialogService; import org.jabref.gui.DragAndDropDataFormats; import org.jabref.gui.Globals; +import org.jabref.gui.actions.ActionFactory; +import org.jabref.gui.actions.SimpleCommand; +import org.jabref.gui.actions.StandardActions; import org.jabref.gui.autocompleter.SuggestionProvider; import org.jabref.gui.copyfiles.CopySingleFileAction; import org.jabref.gui.icon.IconTheme; import org.jabref.gui.keyboard.KeyBinding; +import org.jabref.gui.util.BindingsHelper; import org.jabref.gui.util.TaskExecutor; import org.jabref.gui.util.ViewModelListCellFactory; import org.jabref.gui.util.uithreadaware.UiThreadObservableList; @@ -42,6 +44,7 @@ import org.jabref.model.entry.LinkedFile; import org.jabref.model.entry.field.Field; import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; @@ -53,6 +56,7 @@ public class LinkedFilesEditor extends HBox implements FieldEditorFX { private final DialogService dialogService; private final BibDatabaseContext databaseContext; private final UiThreadObservableList decoratedModelList; + private final PreferencesService preferencesService; public LinkedFilesEditor(Field field, DialogService dialogService, @@ -64,6 +68,7 @@ public LinkedFilesEditor(Field field, this.viewModel = new LinkedFilesEditorViewModel(field, suggestionProvider, dialogService, databaseContext, taskExecutor, fieldCheckers, preferences); this.dialogService = dialogService; this.databaseContext = databaseContext; + this.preferencesService = preferences; ViewLoader.view(this) .root(this) @@ -202,74 +207,20 @@ public Parent getNode() { } @FXML - private void addNewFile(ActionEvent event) { + private void addNewFile() { viewModel.addNewFile(); } @FXML - private void fetchFulltext(ActionEvent event) { + private void fetchFulltext() { viewModel.fetchFulltext(); } @FXML - private void addFromURL(ActionEvent event) { + private void addFromURL() { viewModel.addFromURL(); } - private ContextMenu createContextMenuForFile(LinkedFileViewModel linkedFile) { - ContextMenu menu = new ContextMenu(); - - MenuItem edit = new MenuItem(Localization.lang("Edit")); - edit.setOnAction(event -> linkedFile.edit()); - - MenuItem openFile = new MenuItem(Localization.lang("Open")); - openFile.setOnAction(event -> linkedFile.open()); - - MenuItem openFolder = new MenuItem(Localization.lang("Open folder")); - openFolder.setOnAction(event -> linkedFile.openFolder()); - - MenuItem download = new MenuItem(Localization.lang("Download file")); - download.setOnAction(event -> linkedFile.download()); - - MenuItem renameFile = new MenuItem(Localization.lang("Rename file to defined pattern")); - renameFile.setOnAction(event -> linkedFile.renameToSuggestion()); - renameFile.setDisable(linkedFile.getFile().isOnlineLink() || linkedFile.isGeneratedNameSameAsOriginal()); - - MenuItem renameFileName = new MenuItem(Localization.lang("Rename file to a given name")); - renameFileName.setOnAction(event -> linkedFile.askForNameAndRename()); - renameFileName.setDisable(linkedFile.getFile().isOnlineLink()); - - MenuItem moveFile = new MenuItem(Localization.lang("Move file to file directory")); - moveFile.setOnAction(event -> linkedFile.moveToDefaultDirectory()); - moveFile.setDisable(linkedFile.getFile().isOnlineLink() || linkedFile.isGeneratedPathSameAsOriginal()); - - MenuItem renameAndMoveFile = new MenuItem(Localization.lang("Move file to file directory and rename file")); - renameAndMoveFile.setOnAction(event -> linkedFile.moveToDefaultDirectoryAndRename()); - renameAndMoveFile.setDisable(linkedFile.getFile().isOnlineLink() || linkedFile.isGeneratedPathSameAsOriginal()); - - MenuItem copyLinkedFile = new MenuItem(Localization.lang("Copy linked file to folder...")); - copyLinkedFile.setOnAction(event -> new CopySingleFileAction(linkedFile.getFile(), dialogService, databaseContext).copyFile()); - copyLinkedFile.setDisable(linkedFile.getFile().isOnlineLink()); - - MenuItem deleteFile = new MenuItem(Localization.lang("Permanently delete local file")); - deleteFile.setOnAction(event -> viewModel.deleteFile(linkedFile)); - deleteFile.setDisable(linkedFile.getFile().isOnlineLink()); - - MenuItem deleteLink = new MenuItem(Localization.lang("Remove link")); - deleteLink.setOnAction(event -> viewModel.removeFileLink(linkedFile)); - - menu.getItems().add(edit); - menu.getItems().add(new SeparatorMenuItem()); - menu.getItems().addAll(openFile, openFolder); - menu.getItems().add(new SeparatorMenuItem()); - if (linkedFile.getFile().isOnlineLink()) { - menu.getItems().add(download); - } - menu.getItems().addAll(renameFile, renameFileName, moveFile, renameAndMoveFile, copyLinkedFile, deleteLink, deleteFile); - - return menu; - } - private void handleItemMouseClick(LinkedFileViewModel linkedFile, MouseEvent event) { if (event.getButton().equals(MouseButton.PRIMARY) && (event.getClickCount() == 2)) { @@ -282,4 +233,76 @@ private void handleItemMouseClick(LinkedFileViewModel linkedFile, MouseEvent eve public double getWeight() { return 2; } + + private ContextMenu createContextMenuForFile(LinkedFileViewModel linkedFile) { + ContextMenu menu = new ContextMenu(); + ActionFactory factory = new ActionFactory(Globals.getKeyPrefs()); + + menu.getItems().addAll( + factory.createMenuItem(StandardActions.EDIT_FILE_LINK, new ContextAction(StandardActions.EDIT_FILE_LINK, linkedFile, preferencesService)), + new SeparatorMenuItem(), + factory.createMenuItem(StandardActions.OPEN_FILE, new ContextAction(StandardActions.OPEN_FILE, linkedFile, preferencesService)), + factory.createMenuItem(StandardActions.OPEN_FOLDER, new ContextAction(StandardActions.OPEN_FOLDER, linkedFile, preferencesService)), + new SeparatorMenuItem(), + factory.createMenuItem(StandardActions.DOWNLOAD_FILE, new ContextAction(StandardActions.DOWNLOAD_FILE, linkedFile, preferencesService)), + factory.createMenuItem(StandardActions.RENAME_FILE_TO_PATTERN, new ContextAction(StandardActions.RENAME_FILE_TO_PATTERN, linkedFile, preferencesService)), + factory.createMenuItem(StandardActions.RENAME_FILE_TO_NAME, new ContextAction(StandardActions.RENAME_FILE_TO_NAME, linkedFile, preferencesService)), + factory.createMenuItem(StandardActions.MOVE_FILE_TO_FOLDER, new ContextAction(StandardActions.MOVE_FILE_TO_FOLDER, linkedFile, preferencesService)), + factory.createMenuItem(StandardActions.MOVE_FILE_TO_FOLDER_AND_RENAME, new ContextAction(StandardActions.MOVE_FILE_TO_FOLDER_AND_RENAME, linkedFile, preferencesService)), + factory.createMenuItem(StandardActions.COPY_FILE_TO_FOLDER, new CopySingleFileAction(linkedFile.getFile(), dialogService, databaseContext, preferencesService)), + factory.createMenuItem(StandardActions.REMOVE_LINK, new ContextAction(StandardActions.REMOVE_LINK, linkedFile, preferencesService)), + factory.createMenuItem(StandardActions.DELETE_FILE, new ContextAction(StandardActions.DELETE_FILE, linkedFile, preferencesService)) + ); + + return menu; + } + + private class ContextAction extends SimpleCommand { + + private final StandardActions command; + private final LinkedFileViewModel linkedFile; + + public ContextAction(StandardActions command, LinkedFileViewModel linkedFile, PreferencesService preferencesService) { + this.command = command; + this.linkedFile = linkedFile; + + this.executable.bind( + switch (command) { + case RENAME_FILE_TO_PATTERN -> Bindings.createBooleanBinding( + () -> !linkedFile.getFile().isOnlineLink() + && linkedFile.getFile().findIn(databaseContext, preferencesService.getFilePreferences()).isPresent() + && !linkedFile.isGeneratedNameSameAsOriginal(), + linkedFile.getFile().linkProperty()); + case MOVE_FILE_TO_FOLDER_AND_RENAME, MOVE_FILE_TO_FOLDER -> Bindings.createBooleanBinding( + () -> !linkedFile.getFile().isOnlineLink() + && linkedFile.getFile().findIn(databaseContext, preferencesService.getFilePreferences()).isPresent() + && linkedFile.isGeneratedPathSameAsOriginal(), + linkedFile.getFile().linkProperty()); + case DOWNLOAD_FILE -> Bindings.createBooleanBinding( + () -> linkedFile.getFile().isOnlineLink(), + linkedFile.getFile().linkProperty()); + case OPEN_FILE, OPEN_FOLDER, RENAME_FILE_TO_NAME, DELETE_FILE -> Bindings.createBooleanBinding( + () -> !linkedFile.getFile().isOnlineLink() + && linkedFile.getFile().findIn(databaseContext, preferencesService.getFilePreferences()).isPresent(), + linkedFile.getFile().linkProperty()); + default -> BindingsHelper.constantOf(true); + }); + } + + @Override + public void execute() { + switch (command) { + case EDIT_FILE_LINK -> linkedFile.edit(); + case OPEN_FILE -> linkedFile.open(); + case OPEN_FOLDER -> linkedFile.openFolder(); + case DOWNLOAD_FILE -> linkedFile.download(); + case RENAME_FILE_TO_PATTERN -> linkedFile.renameToSuggestion(); + case RENAME_FILE_TO_NAME -> linkedFile.askForNameAndRename(); + case MOVE_FILE_TO_FOLDER -> linkedFile.moveToDefaultDirectory(); + case MOVE_FILE_TO_FOLDER_AND_RENAME -> linkedFile.moveToDefaultDirectoryAndRename(); + case DELETE_FILE -> viewModel.deleteFile(linkedFile); + case REMOVE_LINK -> viewModel.removeFileLink(linkedFile); + } + } + } } diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditorViewModel.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditorViewModel.java index 8fbe92dda7a..5884617f287 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditorViewModel.java +++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditorViewModel.java @@ -38,7 +38,6 @@ import org.jabref.model.entry.LinkedFile; import org.jabref.model.entry.field.Field; import org.jabref.model.util.FileHelper; -import org.jabref.preferences.JabRefPreferences; import org.jabref.preferences.PreferencesService; public class LinkedFilesEditorViewModel extends AbstractEditorViewModel { @@ -56,7 +55,7 @@ public LinkedFilesEditorViewModel(Field field, SuggestionProvider suggestionP BibDatabaseContext databaseContext, TaskExecutor taskExecutor, FieldCheckers fieldCheckers, - JabRefPreferences preferences) { + PreferencesService preferences) { super(field, suggestionProvider, fieldCheckers); diff --git a/src/main/java/org/jabref/gui/icon/IconTheme.java b/src/main/java/org/jabref/gui/icon/IconTheme.java index 649632aae4e..c796da67268 100644 --- a/src/main/java/org/jabref/gui/icon/IconTheme.java +++ b/src/main/java/org/jabref/gui/icon/IconTheme.java @@ -148,7 +148,7 @@ public enum JabRefIcons implements JabRefIcon { ADD_ENTRY(MaterialDesignIcon.PLAYLIST_PLUS), EDIT_ENTRY(MaterialDesignIcon.TOOLTIP_EDIT), EDIT_STRINGS(MaterialDesignIcon.TOOLTIP_TEXT), - FOLDER(MaterialDesignIcon.FOOD_FORK_DRINK), + FOLDER(MaterialDesignIcon.FOLDER_OUTLINE), REMOVE(MaterialDesignIcon.MINUS_BOX), REMOVE_NOBOX(MaterialDesignIcon.MINUS), FILE(MaterialDesignIcon.FILE_OUTLINE), @@ -202,6 +202,13 @@ public enum JabRefIcons implements JabRefIcon { EXPORT_TO_CLIPBOARD(MaterialDesignIcon.CLIPBOARD_ARROW_LEFT), ATTACH_FILE(MaterialDesignIcon.PAPERCLIP), AUTO_FILE_LINK(MaterialDesignIcon.FILE_FIND), + AUTO_RENAME(MaterialDesignIcon.AUTO_FIX), + DOWNLOAD_FILE(MaterialDesignIcon.DOWNLOAD), + MOVE_TO_FOLDER(MaterialDesignIcon.FILE_SEND), + COPY_TO_FOLDER(MaterialDesignIcon.CONTENT_COPY), + RENAME(MaterialDesignIcon.RENAME_BOX), + DELETE_FILE(MaterialDesignIcon.DELETE_FOREVER), + REMOVE_LINK(MaterialDesignIcon.LINK_OFF), AUTO_LINKED_FILE(MaterialDesignIcon.BRIEFCASE_CHECK), QUALITY_ASSURED(MaterialDesignIcon.CERTIFICATE), QUALITY(MaterialDesignIcon.CERTIFICATE), diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index 2a9775b9ec4..607637ce4f2 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -1763,7 +1763,7 @@ There\ exists\ already\ a\ group\ with\ the\ same\ name.=There exists already a Copy\ linked\ file=Copy linked file Copy\ linked\ file\ to\ folder...=Copy linked file to folder... Could\ not\ copy\ file\ to\ %0,\ maybe\ the\ file\ is\ already\ existing?=Could not copy file to %0, maybe the file is already existing? -Sucessfully\ copied\ file\ to\ %0=Sucessfully copied file to %0 +Successfully\ copied\ file\ to\ %0.=Successfully copied file to %0. Could\ not\ resolve\ the\ file\ %0=Could not resolve the file %0 Copy\ linked\ files\ to\ folder...=Copy linked files to folder... From 86e2c82cbe0eb8ca18f1b80f7b85b375cc316ad7 Mon Sep 17 00:00:00 2001 From: Dominik Voigt Date: Sat, 12 Dec 2020 23:02:53 +0100 Subject: [PATCH 09/33] Disable SLR in UI until #7126 is merged (#7179) --- src/main/java/org/jabref/gui/JabRefFrame.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index c4d9d37e142..39e890d86f3 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -815,10 +815,10 @@ private MenuBar createMenu() { new SeparatorMenuItem(), factory.createMenuItem(StandardActions.SEND_AS_EMAIL, new SendAsEMailAction(dialogService, stateManager)), - pushToApplicationMenuItem, - new SeparatorMenuItem(), - factory.createMenuItem(StandardActions.START_SYSTEMATIC_LITERATURE_REVIEW, new StartLiteratureReviewAction(this, Globals.getFileUpdateMonitor(), Globals.prefs.getWorkingDir(), Globals.TASK_EXECUTOR)) - ); + pushToApplicationMenuItem); + // Disabled until PR #7126 can be merged + // new SeparatorMenuItem(), + // factory.createMenuItem(StandardActions.START_SYSTEMATIC_LITERATURE_REVIEW, new StartLiteratureReviewAction(this, Globals.getFileUpdateMonitor(), Globals.prefs.getWorkingDir(), Globals.TASK_EXECUTOR) SidePaneComponent webSearch = sidePaneManager.getComponent(SidePaneType.WEB_SEARCH); SidePaneComponent groups = sidePaneManager.getComponent(SidePaneType.GROUPS); From 931c4cbbfc636b31e90f61b41d757c337cd8a101 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Sun, 13 Dec 2020 19:49:50 +0100 Subject: [PATCH 10/33] Remove processResources to speedup build (#7183) --- .idea/runConfigurations/JabRef_Main.xml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.idea/runConfigurations/JabRef_Main.xml b/.idea/runConfigurations/JabRef_Main.xml index f6e0ca898ae..4bb85cf63f1 100644 --- a/.idea/runConfigurations/JabRef_Main.xml +++ b/.idea/runConfigurations/JabRef_Main.xml @@ -1,16 +1,14 @@ - - + - + \ No newline at end of file From 88c0732063e4fde75c1d143bb25698426e584486 Mon Sep 17 00:00:00 2001 From: Nikolaus Koopmann Date: Mon, 14 Dec 2020 10:37:10 +0100 Subject: [PATCH 11/33] #7127 --- .../jabref/model/entry/identifier/DOI.java | 36 ++++++++++--------- .../model/entry/identifier/DOITest.java | 23 +++++++++++- 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/jabref/model/entry/identifier/DOI.java b/src/main/java/org/jabref/model/entry/identifier/DOI.java index 862b6355d32..428930db187 100644 --- a/src/main/java/org/jabref/model/entry/identifier/DOI.java +++ b/src/main/java/org/jabref/model/entry/identifier/DOI.java @@ -51,6 +51,8 @@ public class DOI implements Identifier { // Regex (Short DOI) private static final String SHORT_DOI_SHORTCUT = "" + "^\\s*(?:https?://)?(?:www\\.)?(?:doi\\.org/)([a-z0-9]{4,10})\\s*$"; // eg https://doi.org/bfrhmx + private static final String IN_TEXT_SHORT_DOI_SHORTCUT = "" + + "(?:https?://)?(?:www\\.)?(?:doi\\.org/)([a-z0-9]{4,10})"; // eg https://doi.org/bfrhmx somewhere in the text private static final String SHORT_DOI_EXP_PREFIX = "" + "^(?:" // can begin with... + "\\s*(?:https?://)?(?:www\\.)?" // optional url parts "http(s)://"+"www." @@ -68,32 +70,27 @@ public class DOI implements Identifier { + ")" // end group \1 + "\\s*$"; // must be the end private static final String FIND_SHORT_DOI_EXP = "" - + "(?:" // begin "any one of these" - + "(?:/urn:)" // urn:10/ab12 - + "|" // or... - + "(?:/doi:)" // doi:10/ab12 - + "|" // or... - + "(?:/urn:doi:)" // urn:doi:10/ab12 - + "|" // or... - + "(?:\\s/?)" // /10/ab12 or 10/ab12 (but not eg "2020/10/ab12") - + "|" // or... - + "(?:doi\\.org/)" // doi.org/10/ab12 + + "(?:" // begin "any one of these" (but not none of those!) + + "(?:(?:www\\.)?doi\\.org/)" // either doi.org + + "|" // or any of the following with doi.org or not... + + "(?:(?:doi.org/)?(?:(?:urn:)|(?:doi:)|(?:urn:doi:)))" // "doi:10/12ab" or " urn:10/12ab" or "/urn:doi:/10/12ab" or "doi.org/doi:10/12ab"... + ")" // end "any one of these" + "(" // begin group \1 + "10" // directory indicator - + "[/%:]" // divider - + "(?:[^\\s]+)" // suffix alphanumeric without space - + ")"; // end group \1 + + "[/%:]" // divider + + "[a-zA-Z0-9]{3,}" // at least 3 characters + + ")"; // end group \1 private static final String HTTP_EXP = "https?://[^\\s]+?" + DOI_EXP; private static final String SHORT_DOI_HTTP_EXP = "https?://[^\\s]+?" + SHORT_DOI_EXP; // Pattern private static final Pattern EXACT_DOI_PATT = Pattern.compile("^(?:https?://[^\\s]+?)?" + DOI_EXP + "$", Pattern.CASE_INSENSITIVE); - private static final Pattern DOI_PATT = Pattern.compile("(?:https?://[^\\s]+?)?" + FIND_DOI_EXP, Pattern.CASE_INSENSITIVE); + private static final Pattern FIND_DOI_PATT = Pattern.compile("(?:https?://[^\\s]+?)?" + FIND_DOI_EXP, Pattern.CASE_INSENSITIVE); // Pattern (short DOI) private static final Pattern EXACT_SHORT_DOI_SHORTCUT = Pattern.compile(SHORT_DOI_SHORTCUT, Pattern.CASE_INSENSITIVE); // eg doi.org/bfrhmx (no "10/") + private static final Pattern FIND_SHORT_DOI_SHORTCUT = Pattern.compile(IN_TEXT_SHORT_DOI_SHORTCUT, Pattern.CASE_INSENSITIVE); // eg doi.org/bfrhmx (no "10/") private static final Pattern EXACT_SHORT_DOI_PATT = Pattern.compile(SHORT_DOI_EXP_PREFIX + SHORT_DOI_EXP, Pattern.CASE_INSENSITIVE); - private static final Pattern SHORT_DOI_PATT = Pattern.compile("(?:https?://[^\\s]+?)?" + FIND_SHORT_DOI_EXP, Pattern.CASE_INSENSITIVE); + private static final Pattern FIND_SHORT_DOI_PATT = Pattern.compile("(?:https?://[^\\s]+?)?" + FIND_SHORT_DOI_EXP, Pattern.CASE_INSENSITIVE); // DOI private final String doi; // Short DOI @@ -185,17 +182,22 @@ public static boolean isValid(String doi) { public static Optional findInText(String text) { Optional result = Optional.empty(); - Matcher matcher = DOI_PATT.matcher(text); + Matcher matcher = FIND_DOI_PATT.matcher(text); if (matcher.find()) { // match only group \1 result = Optional.of(new DOI(matcher.group(1))); } - matcher = SHORT_DOI_PATT.matcher(text); + matcher = FIND_SHORT_DOI_PATT.matcher(text); if (matcher.find()) { result = Optional.of(new DOI(matcher.group(1))); } + matcher = FIND_SHORT_DOI_SHORTCUT.matcher(text); + if (matcher.find()) { + result = Optional.of(new DOI(matcher.group(0))); + } + return result; } diff --git a/src/test/java/org/jabref/model/entry/identifier/DOITest.java b/src/test/java/org/jabref/model/entry/identifier/DOITest.java index 80df3b0081f..c938b9ddd73 100644 --- a/src/test/java/org/jabref/model/entry/identifier/DOITest.java +++ b/src/test/java/org/jabref/model/entry/identifier/DOITest.java @@ -236,12 +236,33 @@ public void findDoiInsideArbitraryText() { @Test public void findShortDoiInsideArbitraryText() { - assertEquals("10/gf4gqc", DOI.findInText("other stuff 10/gf4gqc end").get().getDOI()); + assertEquals("10/12ab", DOI.findInText("other stuff doi:10/12ab end").get().getDOI()); + assertEquals("10/12ab", DOI.findInText("other stuff /urn:doi:10/12ab end").get().getDOI()); + assertEquals("10%12ab", DOI.findInText("other stuff doi:10%12ab end").get().getDOI()); + assertEquals("10%12ab", DOI.findInText("other stuff /doi:10%12ab end").get().getDOI()); + assertEquals("10/1234", DOI.findInText("10/B(C)/15 \n" + + " \n" + + "10:51 \n" + + " \n" + + " \n" + + "doi.org/10/1234 ").get().getDOI()); } + @Test + public void findShortcutDoiInsideArbitraryText() { + assertEquals("10/ab123", DOI.findInText("other stuff doi.org/ab123 end").get().getDOI()); + assertEquals("10/76543", DOI.findInText("other stuff www.doi.org/76543 end").get().getDOI()); + assertEquals("10/abcde", DOI.findInText("other stuff https://www.doi.org/abcde end").get().getDOI()); + assertEquals("10/abcde", DOI.findInText("other stuff https://doi.org/abcde end").get().getDOI()); + } + + @Test public void noDOIFoundInsideArbitraryText() { assertEquals(Optional.empty(), DOI.findInText("text without 28282 a doi")); + assertEquals(Optional.empty(), DOI.findInText("It's 10:30 o'clock")); + assertEquals(Optional.empty(), DOI.findInText("...archive number 10/XYZ/123...")); + assertEquals(Optional.empty(), DOI.findInText("some website poi.org/ab123 end")); } @Test From fa1e0280c96cbe103dff4d25e09e126c5e054335 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Dec 2020 11:07:17 +0100 Subject: [PATCH 12/33] Bump unirest-java from 3.11.05 to 3.11.06 (#7189) Bumps [unirest-java](https://github.com/Kong/unirest-java) from 3.11.05 to 3.11.06. - [Release notes](https://github.com/Kong/unirest-java/releases) - [Changelog](https://github.com/Kong/unirest-java/blob/main/CHANGELOG.md) - [Commits](https://github.com/Kong/unirest-java/compare/v3.11.05...v3.11.06) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 23df049d8d2..5b6b3c6b3b6 100644 --- a/build.gradle +++ b/build.gradle @@ -161,7 +161,7 @@ dependencies { implementation 'org.controlsfx:controlsfx:11.0.3' implementation 'org.jsoup:jsoup:1.13.1' - implementation 'com.konghq:unirest-java:3.11.05' + implementation 'com.konghq:unirest-java:3.11.06' implementation 'org.slf4j:slf4j-api:2.0.0-alpha1' implementation group: 'org.apache.logging.log4j', name: 'log4j-jcl', version: '3.0.0-SNAPSHOT' From e9849e07f8a78321109164184ecb2cc6f0767890 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Dec 2020 11:07:40 +0100 Subject: [PATCH 13/33] Bump classgraph from 4.8.93 to 4.8.94 (#7188) Bumps [classgraph](https://github.com/classgraph/classgraph) from 4.8.93 to 4.8.94. - [Release notes](https://github.com/classgraph/classgraph/releases) - [Commits](https://github.com/classgraph/classgraph/compare/classgraph-4.8.93...classgraph-4.8.94) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 5b6b3c6b3b6..a7ede9a356c 100644 --- a/build.gradle +++ b/build.gradle @@ -190,7 +190,7 @@ dependencies { implementation 'com.vladsch.flexmark:flexmark-ext-gfm-strikethrough:0.62.2' implementation 'com.vladsch.flexmark:flexmark-ext-gfm-tasklist:0.62.2' - testImplementation 'io.github.classgraph:classgraph:4.8.93' + testImplementation 'io.github.classgraph:classgraph:4.8.94' testImplementation 'org.junit.jupiter:junit-jupiter:5.7.0' testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.7.0' testImplementation 'org.junit.platform:junit-platform-launcher:1.7.0' From aa2b530a17d9064576597d77eb28f7f419442ad8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Dec 2020 11:07:59 +0100 Subject: [PATCH 14/33] Bump org.eclipse.jgit from 5.9.0.202009080501-r to 5.10.0.202012080955-r (#7187) Bumps org.eclipse.jgit from 5.9.0.202009080501-r to 5.10.0.202012080955-r. Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a7ede9a356c..7cda604786b 100644 --- a/build.gradle +++ b/build.gradle @@ -130,7 +130,7 @@ dependencies { exclude group: 'org.apache.lucene', module: 'lucene-sandbox' } - implementation group: 'org.eclipse.jgit', name: 'org.eclipse.jgit', version: '5.9.0.202009080501-r' + implementation group: 'org.eclipse.jgit', name: 'org.eclipse.jgit', version: '5.10.0.202012080955-r' implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.7.1' From f356f9e54a2d621163f5ee5ef56ed657b0fb99b4 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 14 Dec 2020 20:17:24 +0100 Subject: [PATCH 15/33] Fix newly added entry not synced to db (#7178) * Fix newly added entry not synced to db Newly added entries have empty fields; don't update the field table to prevent SQL Exception Fix shared entry not found by id use left outer join for this * fix checkstyle * fix wording * add tests for fix * adjust test --- CHANGELOG.md | 1 + .../jabref/logic/shared/DBMSProcessor.java | 61 ++++++++++--------- .../logic/shared/DBMSProcessorTest.java | 34 +++++++++++ .../logic/shared/DBMSSynchronizerTest.java | 3 +- 4 files changed, 68 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cfbb06fed9a..1ba8762b633 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,6 +78,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve - We fixed an issue where the "Document Viewer" did not show the first page of the opened pdf document and did not show the correct total number of pages [#7108](https://github.com/JabRef/jabref/issues/7108) - We fixed an issue where the context menu was not updated after a file link was changed. [#5777](https://github.com/JabRef/jabref/issues/5777) - We fixed an issue where the password for a shared SQL database was not remembered [#6869](https://github.com/JabRef/jabref/issues/6869) +- We fixed an issue where newly added entires were not synced to a shared SQL database [#7176](https://github.com/JabRef/jabref/issues/7176) ### Removed diff --git a/src/main/java/org/jabref/logic/shared/DBMSProcessor.java b/src/main/java/org/jabref/logic/shared/DBMSProcessor.java index 539ac974e61..ec364110a91 100644 --- a/src/main/java/org/jabref/logic/shared/DBMSProcessor.java +++ b/src/main/java/org/jabref/logic/shared/DBMSProcessor.java @@ -165,7 +165,7 @@ protected void insertIntoEntryTable(List bibEntries) { .append(escape("TYPE")) .append(") VALUES(?)"); // Number of commas is bibEntries.size() - 1 - for (int i = 0; i < bibEntries.size() - 1; i++) { + for (int i = 0; i < (bibEntries.size() - 1); i++) { insertIntoEntryQuery.append(", (?)"); } @@ -239,6 +239,7 @@ protected void insertIntoFieldTable(List bibEntries) { // Coerce to ArrayList in order to use List.get() List> fields = bibEntries.stream().map(bibEntry -> new ArrayList<>(bibEntry.getFields())) .collect(Collectors.toList()); + StringBuilder insertFieldQuery = new StringBuilder() .append("INSERT INTO ") .append(escape("FIELD")) @@ -253,8 +254,13 @@ protected void insertIntoFieldTable(List bibEntries) { for (List entryFields : fields) { numFields += entryFields.size(); } + + if (numFields == 0) { + return; // Prevent SQL Exception + } + // Number of commas is fields.size() - 1 - for (int i = 0; i < numFields - 1; i++) { + for (int i = 0; i < (numFields - 1); i++) { insertFieldQuery.append(", (?, ?, ?)"); } try (PreparedStatement preparedFieldStatement = connection.prepareStatement(insertFieldQuery.toString())) { @@ -493,7 +499,8 @@ public List getSharedEntries(List sharedIDs) { .append("F.").append(escape("VALUE")) .append(" FROM ") .append(escape("ENTRY")) - .append(" inner join ") + // Handle special case if entry does not have any fields (yet) + .append(" left outer join ") .append(escape("FIELD")) .append(" F on ") .append(escape("ENTRY")).append(".").append(escape("SHARED_ID")) @@ -508,41 +515,37 @@ public List getSharedEntries(List sharedIDs) { query.append(" order by ") .append(escape("SHARED_ID")); - PreparedStatement preparedStatement; - try { - preparedStatement = connection.prepareStatement(query.toString()); + try (PreparedStatement preparedStatement = connection.prepareStatement(query.toString())) { for (int i = 0; i < sharedIDs.size(); i++) { preparedStatement.setInt(i + 1, sharedIDs.get(i)); } - } catch (SQLException e) { - LOGGER.debug("Executed >{}<", query.toString()); - LOGGER.error("SQL Error", e); - return Collections.emptyList(); - } - try (ResultSet selectEntryResultSet = preparedStatement.executeQuery()) { - BibEntry bibEntry = null; - int lastId = -1; - while (selectEntryResultSet.next()) { - // We get a list of field values of bib entries "grouped" by bib entries - // Thus, the first change in the shared id leads to a new BibEntry - if (selectEntryResultSet.getInt("SHARED_ID") > lastId) { - bibEntry = new BibEntry(); - bibEntry.getSharedBibEntryData().setSharedID(selectEntryResultSet.getInt("SHARED_ID")); - bibEntry.setType(EntryTypeFactory.parse(selectEntryResultSet.getString("TYPE"))); - bibEntry.getSharedBibEntryData().setVersion(selectEntryResultSet.getInt("VERSION")); - sharedEntries.add(bibEntry); - lastId = selectEntryResultSet.getInt("SHARED_ID"); - } - // In all cases, we set the field value of the newly created BibEntry object - String value = selectEntryResultSet.getString("VALUE"); - if (value != null) { - bibEntry.setField(FieldFactory.parseField(selectEntryResultSet.getString("NAME")), value, EntriesEventSource.SHARED); + try (ResultSet selectEntryResultSet = preparedStatement.executeQuery()) { + BibEntry bibEntry = null; + int lastId = -1; + while (selectEntryResultSet.next()) { + // We get a list of field values of bib entries "grouped" by bib entries + // Thus, the first change in the shared id leads to a new BibEntry + if (selectEntryResultSet.getInt("SHARED_ID") > lastId) { + bibEntry = new BibEntry(); + bibEntry.getSharedBibEntryData().setSharedID(selectEntryResultSet.getInt("SHARED_ID")); + bibEntry.setType(EntryTypeFactory.parse(selectEntryResultSet.getString("TYPE"))); + bibEntry.getSharedBibEntryData().setVersion(selectEntryResultSet.getInt("VERSION")); + sharedEntries.add(bibEntry); + lastId = selectEntryResultSet.getInt("SHARED_ID"); + } + + // In all cases, we set the field value of the newly created BibEntry object + String value = selectEntryResultSet.getString("VALUE"); + if (value != null) { + bibEntry.setField(FieldFactory.parseField(selectEntryResultSet.getString("NAME")), value, EntriesEventSource.SHARED); + } } } } catch (SQLException e) { LOGGER.error("Executed >{}<", query.toString()); LOGGER.error("SQL Error", e); + return Collections.emptyList(); } return sharedEntries; diff --git a/src/test/java/org/jabref/logic/shared/DBMSProcessorTest.java b/src/test/java/org/jabref/logic/shared/DBMSProcessorTest.java index 97732a6ca5d..abc597cb186 100644 --- a/src/test/java/org/jabref/logic/shared/DBMSProcessorTest.java +++ b/src/test/java/org/jabref/logic/shared/DBMSProcessorTest.java @@ -95,6 +95,26 @@ void testInsertEntry() throws SQLException { assertEquals(expectedFieldMap, actualFieldMap); } + @Test + void testInsertEntryWithEmptyFields() throws SQLException { + BibEntry expectedEntry = new BibEntry(StandardEntryType.Article); + + dbmsProcessor.insertEntry(expectedEntry); + + try (ResultSet entryResultSet = selectFrom("ENTRY", dbmsConnection, dbmsProcessor)) { + assertTrue(entryResultSet.next()); + assertEquals(1, entryResultSet.getInt("SHARED_ID")); + assertEquals("article", entryResultSet.getString("TYPE")); + assertEquals(1, entryResultSet.getInt("VERSION")); + assertFalse(entryResultSet.next()); + + // Adding an empty entry should not create an entry in field table, only in entry table + try (ResultSet fieldResultSet = selectFrom("FIELD", dbmsConnection, dbmsProcessor)) { + assertFalse(fieldResultSet.next()); + } + } + } + private static BibEntry getBibEntryExample() { return new BibEntry(StandardEntryType.InProceedings) .withField(StandardField.AUTHOR, "Wirthlin, Michael J and Hutchings, Brad L and Gilson, Kent L") @@ -119,6 +139,20 @@ void testUpdateEntry() throws Exception { assertEquals(Optional.of(expectedEntry), actualEntry); } + @Test + void testUpdateEmptyEntry() throws Exception { + BibEntry expectedEntry = new BibEntry(StandardEntryType.Article); + dbmsProcessor.insertEntry(expectedEntry); + + expectedEntry.setField(StandardField.AUTHOR, "Michael J and Hutchings"); + expectedEntry.setField(new UnknownField("customField"), "custom value"); + // Update field should now find the entry + dbmsProcessor.updateEntry(expectedEntry); + + Optional actualEntry = dbmsProcessor.getSharedEntry(expectedEntry.getSharedBibEntryData().getSharedID()); + assertEquals(Optional.of(expectedEntry), actualEntry); + } + @Test void testGetEntriesByIdList() throws Exception { BibEntry firstEntry = getBibEntryExample(); diff --git a/src/test/java/org/jabref/logic/shared/DBMSSynchronizerTest.java b/src/test/java/org/jabref/logic/shared/DBMSSynchronizerTest.java index 36534eb7da2..11fa69ad521 100644 --- a/src/test/java/org/jabref/logic/shared/DBMSSynchronizerTest.java +++ b/src/test/java/org/jabref/logic/shared/DBMSSynchronizerTest.java @@ -1,6 +1,5 @@ package org.jabref.logic.shared; -import java.sql.SQLException; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -69,7 +68,7 @@ public void setup() throws Exception { } @AfterEach - public void clear() throws SQLException { + public void clear() { dbmsSynchronizer.closeSharedDatabase(); } From c0153bd501754d220e34f45ca689851f8ffd5fbd Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Mon, 14 Dec 2020 21:28:26 +0100 Subject: [PATCH 16/33] Extraction of Globals.prefs.put and .get (#7121) Co-authored-by: Siedlerchr Co-authored-by: Tobias Diez --- docs/getting-into-the-code/code-howtos.md | 9 +- .../org/jabref/cli/ArgumentProcessor.java | 4 +- .../java/org/jabref/gui/ClipBoardManager.java | 16 +- .../java/org/jabref/gui/EntryTypeView.java | 10 +- .../org/jabref/gui/EntryTypeViewModel.java | 19 +- src/main/java/org/jabref/gui/Globals.java | 6 +- .../org/jabref/gui/JabRefDialogService.java | 6 +- src/main/java/org/jabref/gui/JabRefFrame.java | 95 +- src/main/java/org/jabref/gui/JabRefGUI.java | 44 +- src/main/java/org/jabref/gui/JabRefMain.java | 25 +- src/main/java/org/jabref/gui/LibraryTab.java | 10 +- .../org/jabref/gui/SendAsEMailAction.java | 18 +- .../java/org/jabref/gui/SidePaneManager.java | 37 +- .../gui/StartLiteratureReviewAction.java | 16 +- .../jabref/gui/UpdateTimestampListener.java | 2 +- .../jabref/gui/auximport/FromAuxDialog.java | 6 +- .../BibtexExtractorViewModel.java | 8 +- .../bibtexextractor/ExtractBibtexDialog.java | 5 +- .../GenerateCitationKeyAction.java | 8 +- .../org/jabref/gui/cleanup/CleanupAction.java | 9 +- .../org/jabref/gui/collab/ChangeScanner.java | 10 +- .../gui/collab/DatabaseChangeMonitor.java | 10 +- .../gui/collab/MetaDataChangeViewModel.java | 6 +- .../jabref/gui/copyfiles/CopyFilesAction.java | 3 +- .../gui/copyfiles/CopySingleFileAction.java | 3 +- .../CustomEntryTypeDialogViewModel.java | 10 +- .../org/jabref/gui/desktop/JabRefDesktop.java | 15 +- .../org/jabref/gui/edit/CopyMoreAction.java | 27 +- .../gui/entryeditor/DeprecatedFieldsTab.java | 16 +- .../jabref/gui/entryeditor/EntryEditor.java | 16 +- .../entryeditor/EntryEditorPreferences.java | 2 +- .../gui/entryeditor/FieldsEditorTab.java | 22 +- .../gui/entryeditor/OptionalFields2Tab.java | 16 +- .../gui/entryeditor/OptionalFieldsTab.java | 16 +- .../gui/entryeditor/OtherFieldsTab.java | 9 +- .../jabref/gui/entryeditor/PreviewTab.java | 15 +- .../gui/entryeditor/RelatedArticlesTab.java | 24 +- .../gui/entryeditor/RequiredFieldsTab.java | 17 +- .../gui/entryeditor/UserDefinedFieldsTab.java | 18 +- .../CreateModifyExporterDialogViewModel.java | 9 +- .../jabref/gui/exporter/ExportCommand.java | 19 +- .../gui/exporter/ExportToClipboardAction.java | 8 +- .../gui/exporter/SaveDatabaseAction.java | 12 +- .../externalfiles/AutoLinkFilesAction.java | 10 +- .../FindUnlinkedFilesAction.java | 17 +- .../FindUnlinkedFilesDialog.java | 25 +- .../CustomizeExternalFileTypesDialog.java | 2 +- .../externalfiletype/ExternalFileTypes.java | 11 +- .../gui/fieldeditors/CitationKeyEditor.java | 6 +- .../gui/fieldeditors/EditorValidator.java | 8 +- .../jabref/gui/fieldeditors/FieldEditors.java | 6 +- .../gui/fieldeditors/IdentifierEditor.java | 16 +- .../gui/fieldeditors/JournalEditor.java | 8 +- .../gui/fieldeditors/KeywordsEditor.java | 7 +- .../gui/fieldeditors/LinkedFilesEditor.java | 3 +- .../LinkedFilesEditorViewModel.java | 4 - .../jabref/gui/fieldeditors/OwnerEditor.java | 10 +- .../fieldeditors/OwnerEditorViewModel.java | 11 +- .../gui/fieldeditors/PersonsEditor.java | 4 +- .../jabref/gui/fieldeditors/SimpleEditor.java | 6 +- .../jabref/gui/fieldeditors/UrlEditor.java | 8 +- .../org/jabref/gui/groups/GroupSidePane.java | 20 +- .../org/jabref/gui/importer/ImportAction.java | 10 +- .../jabref/gui/importer/ImportCommand.java | 12 +- ...ImportCustomEntryTypesDialogViewModel.java | 4 +- .../importer/ImportCustomizationDialog.java | 20 +- .../ImportCustomizationDialogViewModel.java | 35 +- .../gui/importer/ImportEntriesViewModel.java | 4 +- .../gui/importer/ImporterViewModel.java | 36 + .../jabref/gui/importer/NewEntryAction.java | 8 +- .../importer/actions/OpenDatabaseAction.java | 12 +- .../gui/importer/fetcher/WebSearchPane.java | 15 +- .../fetcher/WebSearchPaneViewModel.java | 22 +- .../gui/integrity/IntegrityCheckAction.java | 3 +- .../LinkedFilesEditDialogViewModel.java | 2 +- .../org/jabref/gui/maintable/MainTable.java | 3 - .../jabref/gui/maintable/RightClickMenu.java | 2 +- .../jabref/gui/mergeentries/MergeEntries.java | 5 +- .../DetectOpenOfficeInstallation.java | 12 +- .../gui/openoffice/OpenOfficePanel.java | 26 +- .../gui/openoffice/OpenOfficeSidePanel.java | 16 +- .../preferences/EntryEditorTabViewModel.java | 2 +- .../gui/preferences/ExternalTabView.java | 2 +- .../gui/preferences/ExternalTabViewModel.java | 19 +- .../gui/preferences/FileTabViewModel.java | 7 +- .../gui/preferences/GeneralTabViewModel.java | 15 +- .../preferences/LinkedFilesTabViewModel.java | 1 + .../preferences/PreferenceTabViewModel.java | 2 +- .../preferences/PreferencesDialogView.java | 4 +- .../PreferencesDialogViewModel.java | 43 +- .../preferences/PreferencesFilterDialog.java | 20 +- .../org/jabref/gui/preview/PreviewPanel.java | 27 +- .../ManageProtectedTermsViewModel.java | 30 +- .../NewProtectedTermsFileDialog.java | 3 +- .../gui/push/AbstractPushToApplication.java | 41 +- .../jabref/gui/push/PushToApplication.java | 9 +- .../gui/push/PushToApplicationAction.java | 4 +- .../gui/push/PushToApplicationSettings.java | 41 +- .../gui/push/PushToApplicationsManager.java | 39 +- .../java/org/jabref/gui/push/PushToEmacs.java | 56 +- .../jabref/gui/push/PushToEmacsSettings.java | 17 +- .../java/org/jabref/gui/push/PushToLyx.java | 29 +- .../jabref/gui/push/PushToLyxSettings.java | 15 +- .../org/jabref/gui/push/PushToTeXstudio.java | 17 +- .../org/jabref/gui/push/PushToTexmaker.java | 17 +- .../java/org/jabref/gui/push/PushToVim.java | 33 +- .../jabref/gui/push/PushToVimSettings.java | 17 +- .../org/jabref/gui/push/PushToWinEdt.java | 17 +- .../SharedDatabaseLoginDialogViewModel.java | 5 +- .../texparser/ParseLatexDialogViewModel.java | 2 +- .../autosaveandbackup/BackupManager.java | 8 +- .../logic/bibtex/comparator/MetaDataDiff.java | 4 +- .../CitationKeyPatternPreferences.java | 7 +- .../org/jabref/logic/crawler/Crawler.java | 3 +- .../jabref/logic/crawler/StudyRepository.java | 18 +- .../jabref/logic/database/DatabaseMerger.java | 12 +- .../logic/importer/fetcher/MrDLibFetcher.java | 16 +- .../org/jabref/logic/layout/LayoutEntry.java | 226 ++-- .../jabref/logic/openoffice/StyleLoader.java | 18 +- .../preferences/TimestampPreferences.java | 8 +- .../org/jabref/logic/util/UpdateField.java | 8 +- .../logic/util/io/AutoLinkPreferences.java | 14 +- .../CustomEntryTypePreferenceMigration.java | 2 +- .../jabref/preferences/CustomImportList.java | 82 -- .../preferences/GeneralPreferences.java | 8 - .../jabref/preferences/GuiPreferences.java | 88 ++ .../preferences/ImportExportPreferences.java | 40 +- .../jabref/preferences/JabRefPreferences.java | 1086 ++++++++++------- .../LastFocusedTabPreferences.java | 31 - .../jabref/preferences/MrDlibPreferences.java | 32 + ...ncesFilter.java => PreferencesFilter.java} | 8 +- .../preferences/PreferencesService.java | 124 +- .../PushToApplicationPreferences.java | 42 + .../preferences/SidePanePreferences.java | 59 + .../preferences/TelemetryPreferences.java | 30 + src/main/resources/l10n/JabRef_en.properties | 4 - .../gui/UpdateTimestampListenerTest.java | 10 +- .../gui/exporter/SaveDatabaseActionTest.java | 8 +- .../AutoSetFileLinksUtilTest.java | 7 +- .../org/jabref/logic/crawler/CrawlerTest.java | 16 + .../logic/crawler/StudyRepositoryTest.java | 3 +- .../logic/database/DatabaseMergerTest.java | 23 +- .../importer/fetcher/MrDLibFetcherTest.java | 14 +- .../LastFocusedTabPreferencesTest.java | 45 - 144 files changed, 2137 insertions(+), 1586 deletions(-) create mode 100644 src/main/java/org/jabref/gui/importer/ImporterViewModel.java delete mode 100644 src/main/java/org/jabref/preferences/CustomImportList.java create mode 100644 src/main/java/org/jabref/preferences/GuiPreferences.java delete mode 100644 src/main/java/org/jabref/preferences/LastFocusedTabPreferences.java create mode 100644 src/main/java/org/jabref/preferences/MrDlibPreferences.java rename src/main/java/org/jabref/preferences/{JabRefPreferencesFilter.java => PreferencesFilter.java} (94%) create mode 100644 src/main/java/org/jabref/preferences/PushToApplicationPreferences.java create mode 100644 src/main/java/org/jabref/preferences/SidePanePreferences.java create mode 100644 src/main/java/org/jabref/preferences/TelemetryPreferences.java delete mode 100644 src/test/java/org/jabref/preferences/LastFocusedTabPreferencesTest.java diff --git a/docs/getting-into-the-code/code-howtos.md b/docs/getting-into-the-code/code-howtos.md index 84f37908c98..354f6d26364 100644 --- a/docs/getting-into-the-code/code-howtos.md +++ b/docs/getting-into-the-code/code-howtos.md @@ -211,7 +211,7 @@ Optional file = FileHelper.expandFilename(database, fileText, preferences. ## How to work with Preferences -`model` and `logic` must not know JabRefPreferences. See `ProxyPreferences` for encapsulated preferences and [https://github.com/JabRef/jabref/pull/658](https://github.com/JabRef/jabref/pull/658) for a detailed discussion. +`model` and `logic` must not know `JabRefPreferences`. See `ProxyPreferences` for encapsulated preferences and [https://github.com/JabRef/jabref/pull/658](https://github.com/JabRef/jabref/pull/658) for a detailed discussion. See [https://github.com/JabRef/jabref/blob/master/src/main/java/org/jabref/logic/preferences/TimestampPreferences.java](https://github.com/JabRef/jabref/blob/master/src/main/java/org/jabref/logic/preferences/TimestampPreferences.java) \(via [https://github.com/JabRef/jabref/pull/3092](https://github.com/JabRef/jabref/pull/3092)\) for the current way how to deal with preferences. @@ -291,9 +291,12 @@ Or even better, try to mock the preferences and insert them via dependency injec @Test public void getTypeReturnsBibLatexArticleInBibLatexMode() { // Mock preferences - JabrefPreferences mockedPrefs = mock(JabrefPreferences.class); + PreferencesService mockedPrefs = mock(PreferencesService.class); + GeneralPreferences mockedGeneralPrefs = mock(GeneralPReferences.class); // Switch to BibLatex mode - when(mockedPrefs.getBoolean("BiblatexMode")).thenReturn(true); + when(mockedPrefs.getGeneralPrefs()).thenReturn(mockedGeneralPrefs); + when(mockedGeneralPrefs.getDefaultBibDatabaseMode()) + .thenReturn(BibDatabaseMode.BIBLATEX); // Now test EntryTypes biblatexentrytypes = new EntryTypes(mockedPrefs); diff --git a/src/main/java/org/jabref/cli/ArgumentProcessor.java b/src/main/java/org/jabref/cli/ArgumentProcessor.java index eeee79c1366..e52c15bf966 100644 --- a/src/main/java/org/jabref/cli/ArgumentProcessor.java +++ b/src/main/java/org/jabref/cli/ArgumentProcessor.java @@ -456,8 +456,8 @@ private void exportFile(List loaded, String[] data) { private void importPreferences() { try { Globals.prefs.importPreferences(cli.getPreferencesImport()); - Globals.entryTypesManager.addCustomOrModifiedTypes(Globals.prefs.loadBibEntryTypes(BibDatabaseMode.BIBTEX), - Globals.prefs.loadBibEntryTypes(BibDatabaseMode.BIBLATEX)); + Globals.entryTypesManager.addCustomOrModifiedTypes(Globals.prefs.getBibEntryTypes(BibDatabaseMode.BIBTEX), + Globals.prefs.getBibEntryTypes(BibDatabaseMode.BIBLATEX)); List customExporters = Globals.prefs.getCustomExportFormats(Globals.journalAbbreviationRepository); LayoutFormatterPreferences layoutPreferences = Globals.prefs.getLayoutFormatterPreferences(Globals.journalAbbreviationRepository); diff --git a/src/main/java/org/jabref/gui/ClipBoardManager.java b/src/main/java/org/jabref/gui/ClipBoardManager.java index d78183a3479..d66db4c34a7 100644 --- a/src/main/java/org/jabref/gui/ClipBoardManager.java +++ b/src/main/java/org/jabref/gui/ClipBoardManager.java @@ -33,6 +33,7 @@ import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.identifier.DOI; import org.jabref.model.util.OptionalUtil; +import org.jabref.preferences.PreferencesService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,15 +48,18 @@ public class ClipBoardManager { private static Clipboard clipboard; private static java.awt.datatransfer.Clipboard primary; private static ImportFormatReader importFormatReader; + private final PreferencesService preferencesService; - public ClipBoardManager() { - this(Clipboard.getSystemClipboard(), Toolkit.getDefaultToolkit().getSystemSelection(), Globals.IMPORT_FORMAT_READER); + public ClipBoardManager(PreferencesService preferencesService) { + this(Clipboard.getSystemClipboard(), Toolkit.getDefaultToolkit().getSystemSelection(), Globals.IMPORT_FORMAT_READER, preferencesService); } - public ClipBoardManager(Clipboard clipboard, java.awt.datatransfer.Clipboard primary, ImportFormatReader importFormatReader) { + public ClipBoardManager(Clipboard clipboard, java.awt.datatransfer.Clipboard primary, ImportFormatReader importFormatReader, PreferencesService preferencesService) { ClipBoardManager.clipboard = clipboard; ClipBoardManager.primary = primary; ClipBoardManager.importFormatReader = importFormatReader; + + this.preferencesService = preferencesService; } /** @@ -154,7 +158,7 @@ public void setContent(String string) { public void setContent(List entries) throws IOException { final ClipboardContent content = new ClipboardContent(); - BibEntryWriter writer = new BibEntryWriter(new FieldWriter(Globals.prefs.getFieldWriterPreferences()), Globals.entryTypesManager); + BibEntryWriter writer = new BibEntryWriter(new FieldWriter(preferencesService.getFieldWriterPreferences()), Globals.entryTypesManager); String serializedEntries = writer.serializeAll(entries, BibDatabaseMode.BIBTEX); content.put(DragAndDropDataFormats.ENTRIES, serializedEntries); content.putString(serializedEntries); @@ -172,7 +176,7 @@ public List extractData() { } private List handleBibTeXData(String entries) { - BibtexParser parser = new BibtexParser(Globals.prefs.getImportFormatPreferences(), Globals.getFileUpdateMonitor()); + BibtexParser parser = new BibtexParser(preferencesService.getImportFormatPreferences(), Globals.getFileUpdateMonitor()); try { return parser.parseEntries(new ByteArrayInputStream(entries.getBytes(StandardCharsets.UTF_8))); } catch (ParseException ex) { @@ -206,7 +210,7 @@ private List tryImportFormats(String data) { private List fetchByDOI(DOI doi) { LOGGER.info("Found DOI in clipboard"); try { - Optional entry = new DoiFetcher(Globals.prefs.getImportFormatPreferences()).performSearchById(doi.getDOI()); + Optional entry = new DoiFetcher(preferencesService.getImportFormatPreferences()).performSearchById(doi.getDOI()); return OptionalUtil.toList(entry); } catch (FetcherException ex) { LOGGER.error("Error while fetching", ex); diff --git a/src/main/java/org/jabref/gui/EntryTypeView.java b/src/main/java/org/jabref/gui/EntryTypeView.java index 83d7baa191c..944d2d94ad9 100644 --- a/src/main/java/org/jabref/gui/EntryTypeView.java +++ b/src/main/java/org/jabref/gui/EntryTypeView.java @@ -34,7 +34,7 @@ import org.jabref.model.entry.types.IEEETranEntryTypeDefinitions; import org.jabref.model.entry.types.StandardEntryType; import org.jabref.model.strings.StringUtil; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; @@ -63,16 +63,16 @@ public class EntryTypeView extends BaseDialog { private final LibraryTab libraryTab; private final DialogService dialogService; - private final JabRefPreferences prefs; + private final PreferencesService preferencesService; private EntryType type; private EntryTypeViewModel viewModel; private final ControlsFxVisualizer visualizer = new ControlsFxVisualizer(); - public EntryTypeView(LibraryTab libraryTab, DialogService dialogService, JabRefPreferences preferences) { + public EntryTypeView(LibraryTab libraryTab, DialogService dialogService, PreferencesService preferences) { this.libraryTab = libraryTab; this.dialogService = dialogService; - this.prefs = preferences; + this.preferencesService = preferences; this.setTitle(Localization.lang("Select entry type")); ViewLoader.view(this) @@ -121,7 +121,7 @@ private void addEntriesToPane(FlowPane pane, Collection @FXML public void initialize() { visualizer.setDecoration(new IconValidationDecorator()); - viewModel = new EntryTypeViewModel(prefs, libraryTab, dialogService, stateManager); + viewModel = new EntryTypeViewModel(preferencesService, libraryTab, dialogService, stateManager); idBasedFetchers.itemsProperty().bind(viewModel.fetcherItemsProperty()); idTextField.textProperty().bindBidirectional(viewModel.idTextProperty()); diff --git a/src/main/java/org/jabref/gui/EntryTypeViewModel.java b/src/main/java/org/jabref/gui/EntryTypeViewModel.java index 21f60791931..4ca06d9736a 100644 --- a/src/main/java/org/jabref/gui/EntryTypeViewModel.java +++ b/src/main/java/org/jabref/gui/EntryTypeViewModel.java @@ -25,7 +25,7 @@ import org.jabref.logic.l10n.Localization; import org.jabref.model.entry.BibEntry; import org.jabref.model.strings.StringUtil; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; import de.saxsys.mvvmfx.utils.validation.FunctionBasedValidator; import de.saxsys.mvvmfx.utils.validation.ValidationMessage; @@ -38,7 +38,7 @@ public class EntryTypeViewModel { private static final Logger LOGGER = LoggerFactory.getLogger(EntryTypeViewModel.class); - private final JabRefPreferences prefs; + private final PreferencesService preferencesService; private final BooleanProperty searchingProperty = new SimpleBooleanProperty(); private final BooleanProperty searchSuccesfulProperty = new SimpleBooleanProperty(); private final ObjectProperty selectedItemProperty = new SimpleObjectProperty<>(); @@ -51,9 +51,12 @@ public class EntryTypeViewModel { private final Validator idFieldValidator; private final StateManager stateManager; - public EntryTypeViewModel(JabRefPreferences preferences, LibraryTab libraryTab, DialogService dialogService, StateManager stateManager) { + public EntryTypeViewModel(PreferencesService preferences, + LibraryTab libraryTab, + DialogService dialogService, + StateManager stateManager) { this.libraryTab = libraryTab; - this.prefs = preferences; + this.preferencesService = preferences; this.dialogService = dialogService; this.stateManager = stateManager; fetchers.addAll(WebFetchers.getIdBasedFetchers(preferences.getImportFormatPreferences())); @@ -86,12 +89,12 @@ public BooleanProperty getFocusAndSelectAllProperty() { } public void storeSelectedFetcher() { - prefs.setIdBasedFetcherForEntryGenerator(selectedItemProperty.getValue().getName()); + preferencesService.storeIdBasedFetcherForEntryGenerator(selectedItemProperty.getValue().getName()); } private IdBasedFetcher getLastSelectedFetcher() { - return fetchers.stream().filter(fetcher -> fetcher.getName().equals(prefs.getIdBasedFetcherForEntryGenerator())) - .findFirst().orElse(new DoiFetcher(prefs.getImportFormatPreferences())); + return fetchers.stream().filter(fetcher -> fetcher.getName().equals(preferencesService.getIdBasedFetcherForEntryGenerator())) + .findFirst().orElse(new DoiFetcher(preferencesService.getImportFormatPreferences())); } public ListProperty fetcherItemsProperty() { @@ -170,7 +173,7 @@ public void runFetcherWorker() { } } else { // Regenerate CiteKey of imported BibEntry - new CitationKeyGenerator(libraryTab.getBibDatabaseContext(), prefs.getCitationKeyPatternPreferences()).generateAndSetKey(entry); + new CitationKeyGenerator(libraryTab.getBibDatabaseContext(), preferencesService.getCitationKeyPatternPreferences()).generateAndSetKey(entry); libraryTab.insertEntry(entry); } searchSuccesfulProperty.set(true); diff --git a/src/main/java/org/jabref/gui/Globals.java b/src/main/java/org/jabref/gui/Globals.java index db851799580..19e0ded1798 100644 --- a/src/main/java/org/jabref/gui/Globals.java +++ b/src/main/java/org/jabref/gui/Globals.java @@ -73,7 +73,7 @@ public class Globals { public static ExporterFactory exportFactory; public static CountingUndoManager undoManager = new CountingUndoManager(); public static BibEntryTypesManager entryTypesManager = new BibEntryTypesManager(); - public static ClipBoardManager clipboardManager = new ClipBoardManager(); + public static ClipBoardManager clipboardManager = new ClipBoardManager(prefs); // Key binding preferences private static KeyBindingRepository keyBindingRepository; @@ -97,7 +97,7 @@ public static void startBackgroundTasks() { Globals.fileUpdateMonitor = new DefaultFileUpdateMonitor(); JabRefExecutorService.INSTANCE.executeInterruptableTask(Globals.fileUpdateMonitor, "FileUpdateMonitor"); - if (Globals.prefs.shouldCollectTelemetry() && !GraphicsEnvironment.isHeadless()) { + if (Globals.prefs.getTelemetryPreferences().shouldCollectTelemetry() && !GraphicsEnvironment.isHeadless()) { startTelemetryClient(); } } @@ -112,7 +112,7 @@ private static void stopTelemetryClient() { private static void startTelemetryClient() { TelemetryConfiguration telemetryConfiguration = TelemetryConfiguration.getActive(); telemetryConfiguration.setInstrumentationKey(Globals.BUILD_INFO.azureInstrumentationKey); - telemetryConfiguration.setTrackingIsDisabled(!Globals.prefs.shouldCollectTelemetry()); + telemetryConfiguration.setTrackingIsDisabled(!Globals.prefs.getTelemetryPreferences().shouldCollectTelemetry()); telemetryClient = new TelemetryClient(telemetryConfiguration); telemetryClient.getContext().getProperties().put("JabRef version", Globals.BUILD_INFO.version.toString()); telemetryClient.getContext().getProperties().put("Java version", StandardSystemProperty.JAVA_VERSION.value()); diff --git a/src/main/java/org/jabref/gui/JabRefDialogService.java b/src/main/java/org/jabref/gui/JabRefDialogService.java index 292486b146a..53816e402e8 100644 --- a/src/main/java/org/jabref/gui/JabRefDialogService.java +++ b/src/main/java/org/jabref/gui/JabRefDialogService.java @@ -40,7 +40,7 @@ import org.jabref.gui.util.FileDialogConfiguration; import org.jabref.gui.util.ZipFileChooser; import org.jabref.logic.l10n.Localization; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; import com.jfoenix.controls.JFXSnackbar; import com.jfoenix.controls.JFXSnackbar.SnackbarEvent; @@ -67,12 +67,12 @@ public class JabRefDialogService implements DialogService { private static final Duration TOAST_MESSAGE_DISPLAY_TIME = Duration.millis(3000); private static final Logger LOGGER = LoggerFactory.getLogger(JabRefDialogService.class); - private static JabRefPreferences preferences; + private static PreferencesService preferences; private final Window mainWindow; private final JFXSnackbar statusLine; - public JabRefDialogService(Window mainWindow, Pane mainPane, JabRefPreferences preferences) { + public JabRefDialogService(Window mainWindow, Pane mainPane, PreferencesService preferences) { this.mainWindow = mainWindow; this.statusLine = new JFXSnackbar(mainPane); JabRefDialogService.preferences = preferences; diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 39e890d86f3..e751db5784a 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -120,6 +120,7 @@ import org.jabref.gui.undo.UndoRedoAction; import org.jabref.gui.util.BackgroundTask; import org.jabref.gui.util.DefaultTaskExecutor; +import org.jabref.gui.util.TaskExecutor; import org.jabref.logic.autosaveandbackup.AutosaveManager; import org.jabref.logic.autosaveandbackup.BackupManager; import org.jabref.logic.citationstyle.CitationStyleOutputFormat; @@ -136,8 +137,8 @@ import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.field.SpecialField; import org.jabref.model.entry.types.StandardEntryType; -import org.jabref.preferences.JabRefPreferences; -import org.jabref.preferences.LastFocusedTabPreferences; +import org.jabref.preferences.PreferencesService; +import org.jabref.preferences.TelemetryPreferences; import com.google.common.eventbus.Subscribe; import com.tobiasdiez.easybind.EasyBind; @@ -158,7 +159,7 @@ public class JabRefFrame extends BorderPane { private static final Logger LOGGER = LoggerFactory.getLogger(JabRefFrame.class); private final SplitPane splitPane = new SplitPane(); - private final JabRefPreferences prefs = Globals.prefs; + private final PreferencesService prefs = Globals.prefs; private final GlobalSearchBar globalSearchBar = new GlobalSearchBar(this, Globals.stateManager, prefs); private final FileHistoryMenu fileHistory; @@ -175,6 +176,8 @@ public class JabRefFrame extends BorderPane { private SidePane sidePane; private PopOver progressViewPopOver; + private final TaskExecutor taskExecutor; + public JabRefFrame(Stage mainStage) { this.mainStage = mainStage; this.dialogService = new JabRefDialogService(mainStage, this, prefs); @@ -182,6 +185,7 @@ public JabRefFrame(Stage mainStage) { this.pushToApplicationsManager = new PushToApplicationsManager(dialogService, stateManager, prefs); this.undoManager = Globals.undoManager; this.fileHistory = new FileHistoryMenu(prefs, dialogService, getOpenDatabaseAction()); + this.taskExecutor = Globals.TASK_EXECUTOR; this.setOnKeyTyped(key -> { if (this.fileHistory.isShowing()) { if (this.fileHistory.openFileByKey(key)) { @@ -287,7 +291,7 @@ private void initKeyBindings() { } private void initShowTrackingNotification() { - if (!Globals.prefs.shouldAskToCollectTelemetry()) { + if (Globals.prefs.getTelemetryPreferences().shouldAskToCollectTelemetry()) { JabRefExecutorService.INSTANCE.submit(new TimerTask() { @Override @@ -298,19 +302,20 @@ public void run() { } } - private Void showTrackingNotification() { - if (!Globals.prefs.shouldCollectTelemetry()) { - boolean shouldCollect = dialogService.showConfirmationDialogAndWait( + private void showTrackingNotification() { + TelemetryPreferences telemetryPreferences = Globals.prefs.getTelemetryPreferences(); + boolean shouldCollect = telemetryPreferences.shouldCollectTelemetry(); + + if (!telemetryPreferences.shouldCollectTelemetry()) { + shouldCollect = dialogService.showConfirmationDialogAndWait( Localization.lang("Telemetry: Help make JabRef better"), Localization.lang("To improve the user experience, we would like to collect anonymous statistics on the features you use. We will only record what features you access and how often you do it. We will neither collect any personal data nor the content of bibliographic items. If you choose to allow data collection, you can later disable it via Options -> Preferences -> General."), Localization.lang("Share anonymous statistics"), Localization.lang("Don't share")); - Globals.prefs.setShouldCollectTelemetry(shouldCollect); } - Globals.prefs.askedToCollectTelemetry(); - - return null; + Globals.prefs.storeTelemetryPreferences(telemetryPreferences.withCollectTelemetry(shouldCollect) + .withAskToCollectTelemetry(false)); } /** @@ -329,10 +334,6 @@ public void about() { HelpAction.getMainHelpPageCommand().execute(); } - public JabRefPreferences prefs() { - return prefs; - } - /** * Tears down all things started by JabRef *

@@ -342,18 +343,18 @@ public JabRefPreferences prefs() { * set to true */ private void tearDownJabRef(List filenames) { - // prefs.putBoolean(JabRefPreferences.WINDOW_MAXIMISED, getExtendedState() == Frame.MAXIMIZED_BOTH); - - if (prefs.getBoolean(JabRefPreferences.OPEN_LAST_EDITED)) { - // Here we store the names of all current files. If - // there is no current file, we remove any + if (prefs.getGuiPreferences().shouldOpenLastEdited()) { + // Here we store the names of all current files. If there is no current file, we remove any // previously stored filename. if (filenames.isEmpty()) { - prefs.remove(JabRefPreferences.LAST_EDITED); + prefs.clearEditedFiles(); } else { - prefs.putStringList(JabRefPreferences.LAST_EDITED, filenames); - Path focusedDatabase = getCurrentLibraryTab().getBibDatabaseContext().getDatabasePath().orElse(null); - new LastFocusedTabPreferences(prefs).setLastFocusedTab(focusedDatabase); + Path focusedDatabase = getCurrentLibraryTab().getBibDatabaseContext() + .getDatabasePath() + .orElse(null); + prefs.storeGuiPreferences(prefs.getGuiPreferences() + .withLastFilesOpened(filenames) + .withLastFocusedFile(focusedDatabase)); } } @@ -458,10 +459,11 @@ public void changed(ObservableValue observable, Boolean oldVa } private void setDividerPosition() { - splitPane.setDividerPositions(prefs.getDouble(JabRefPreferences.SIDE_PANE_WIDTH)); + splitPane.setDividerPositions(prefs.getGuiPreferences().getSidePaneWidth()); if (!splitPane.getDividers().isEmpty()) { EasyBind.subscribe(splitPane.getDividers().get(0).positionProperty(), - position -> prefs.putDouble(JabRefPreferences.SIDE_PANE_WIDTH, position.doubleValue())); + position -> prefs.storeGuiPreferences(prefs.getGuiPreferences() + .withSidePaneWidth(position.doubleValue()))); } } @@ -479,7 +481,7 @@ private Node createToolbar() { new HBox( factory.createIconButton(StandardActions.NEW_LIBRARY, new NewDatabaseAction(this, prefs)), - factory.createIconButton(StandardActions.OPEN_LIBRARY, new OpenDatabaseAction(this)), + factory.createIconButton(StandardActions.OPEN_LIBRARY, new OpenDatabaseAction(this, prefs, dialogService)), factory.createIconButton(StandardActions.SAVE_LIBRARY, new SaveAction(SaveAction.SaveMethod.SAVE, this, stateManager))), leftSpacer, @@ -489,8 +491,8 @@ private Node createToolbar() { rightSpacer, new HBox( - factory.createIconButton(StandardActions.NEW_ARTICLE, new NewEntryAction(this, StandardEntryType.Article, dialogService, Globals.prefs, stateManager)), - factory.createIconButton(StandardActions.NEW_ENTRY, new NewEntryAction(this, dialogService, Globals.prefs, stateManager)), + factory.createIconButton(StandardActions.NEW_ARTICLE, new NewEntryAction(this, StandardEntryType.Article, dialogService, prefs, stateManager)), + factory.createIconButton(StandardActions.NEW_ENTRY, new NewEntryAction(this, dialogService, prefs, stateManager)), factory.createIconButton(StandardActions.NEW_ENTRY_FROM_PLAIN_TEXT, new ExtractBibtexAction(stateManager)), factory.createIconButton(StandardActions.DELETE_ENTRY, new EditAction(StandardActions.DELETE_ENTRY, this, stateManager)) ), @@ -566,7 +568,7 @@ public void showLibraryTab(LibraryTab libraryTab) { } public void init() { - sidePaneManager = new SidePaneManager(Globals.prefs, this); + sidePaneManager = new SidePaneManager(prefs, this, dialogService, stateManager); sidePane = sidePaneManager.getPane(); tabbedPane = new TabPane(); @@ -683,12 +685,12 @@ private MenuBar createMenu() { new SeparatorMenuItem(), factory.createSubMenu(StandardActions.IMPORT, - factory.createMenuItem(StandardActions.IMPORT_INTO_CURRENT_LIBRARY, new ImportCommand(this, false, stateManager)), - factory.createMenuItem(StandardActions.IMPORT_INTO_NEW_LIBRARY, new ImportCommand(this, true, stateManager))), + factory.createMenuItem(StandardActions.IMPORT_INTO_CURRENT_LIBRARY, new ImportCommand(this, false, prefs, stateManager)), + factory.createMenuItem(StandardActions.IMPORT_INTO_NEW_LIBRARY, new ImportCommand(this, true, prefs, stateManager))), factory.createSubMenu(StandardActions.EXPORT, - factory.createMenuItem(StandardActions.EXPORT_ALL, new ExportCommand(this, false, Globals.prefs)), - factory.createMenuItem(StandardActions.EXPORT_SELECTED, new ExportCommand(this, true, Globals.prefs)), + factory.createMenuItem(StandardActions.EXPORT_ALL, new ExportCommand(this, false, prefs)), + factory.createMenuItem(StandardActions.EXPORT_SELECTED, new ExportCommand(this, true, prefs)), factory.createMenuItem(StandardActions.SAVE_SELECTED_AS_PLAIN_BIBTEX, new SaveAction(SaveAction.SaveMethod.SAVE_SELECTED, this, stateManager))), new SeparatorMenuItem(), @@ -735,7 +737,7 @@ private MenuBar createMenu() { factory.createMenuItem(StandardActions.MASS_SET_FIELDS, new MassSetFieldsAction(stateManager, dialogService, undoManager)) ); - if (Globals.prefs.getSpecialFieldsPreferences().isSpecialFieldsEnabled()) { + if (prefs.getSpecialFieldsPreferences().isSpecialFieldsEnabled()) { edit.getItems().addAll( new SeparatorMenuItem(), // ToDo: SpecialField needs the active BasePanel to mark it as changed. @@ -784,7 +786,7 @@ private MenuBar createMenu() { ); Menu lookupIdentifiers = factory.createSubMenu(StandardActions.LOOKUP_DOC_IDENTIFIER); - for (IdFetcher fetcher : WebFetchers.getIdFetchers(Globals.prefs.getImportFormatPreferences())) { + for (IdFetcher fetcher : WebFetchers.getIdFetchers(prefs.getImportFormatPreferences())) { LookupIdentifierAction identifierAction = new LookupIdentifierAction<>(this, fetcher, stateManager, undoManager); lookupIdentifiers.getItems().add(factory.createMenuItem(identifierAction.getAction(), identifierAction)); } @@ -795,7 +797,7 @@ private MenuBar createMenu() { new SeparatorMenuItem(), - factory.createMenuItem(StandardActions.FIND_UNLINKED_FILES, new FindUnlinkedFilesAction(this, stateManager)) + factory.createMenuItem(StandardActions.FIND_UNLINKED_FILES, new FindUnlinkedFilesAction(dialogService, prefs, undoManager, stateManager)) ); // PushToApplication @@ -814,11 +816,14 @@ private MenuBar createMenu() { new SeparatorMenuItem(), - factory.createMenuItem(StandardActions.SEND_AS_EMAIL, new SendAsEMailAction(dialogService, stateManager)), - pushToApplicationMenuItem); - // Disabled until PR #7126 can be merged - // new SeparatorMenuItem(), - // factory.createMenuItem(StandardActions.START_SYSTEMATIC_LITERATURE_REVIEW, new StartLiteratureReviewAction(this, Globals.getFileUpdateMonitor(), Globals.prefs.getWorkingDir(), Globals.TASK_EXECUTOR) + factory.createMenuItem(StandardActions.SEND_AS_EMAIL, new SendAsEMailAction(dialogService, prefs, stateManager)), + pushToApplicationMenuItem + // Disabled until PR #7126 can be merged + // new SeparatorMenuItem(), + // factory.createMenuItem(StandardActions.START_SYSTEMATIC_LITERATURE_REVIEW, + // new StartLiteratureReviewAction(this, Globals.getFileUpdateMonitor(), prefs.getWorkingDir(), + // taskExecutor, prefs, prefs.getImportFormatPreferences(), prefs.getSavePreferences())) + ); SidePaneComponent webSearch = sidePaneManager.getComponent(SidePaneType.WEB_SEARCH); SidePaneComponent groups = sidePaneManager.getComponent(SidePaneType.GROUPS); @@ -1067,7 +1072,7 @@ public LibraryTab addTab(BibDatabaseContext databaseContext, boolean raisePanel) private boolean readyForAutosave(BibDatabaseContext context) { return ((context.getLocation() == DatabaseLocation.SHARED) || - ((context.getLocation() == DatabaseLocation.LOCAL) && Globals.prefs.getBoolean(JabRefPreferences.LOCAL_AUTO_SAVE))) + ((context.getLocation() == DatabaseLocation.LOCAL) && Globals.prefs.shouldAutosave())) && context.getDatabasePath().isPresent(); } @@ -1115,7 +1120,7 @@ private boolean confirmClose(LibraryTab libraryTab) { if (response.isPresent() && response.get().equals(saveChanges)) { // The user wants to save. try { - SaveDatabaseAction saveAction = new SaveDatabaseAction(libraryTab, Globals.prefs, Globals.entryTypesManager); + SaveDatabaseAction saveAction = new SaveDatabaseAction(libraryTab, prefs, Globals.entryTypesManager); if (saveAction.save()) { return true; } @@ -1169,7 +1174,7 @@ public void closeCurrentTab() { } public OpenDatabaseAction getOpenDatabaseAction() { - return new OpenDatabaseAction(this); + return new OpenDatabaseAction(this, prefs, dialogService); } public SidePaneManager getSidePaneManager() { diff --git a/src/main/java/org/jabref/gui/JabRefGUI.java b/src/main/java/org/jabref/gui/JabRefGUI.java index 0acd1ad01cb..ed62b405ad5 100644 --- a/src/main/java/org/jabref/gui/JabRefGUI.java +++ b/src/main/java/org/jabref/gui/JabRefGUI.java @@ -26,7 +26,7 @@ import org.jabref.logic.shared.DatabaseNotSupportedException; import org.jabref.logic.shared.exception.InvalidDBMSConnectionPropertiesException; import org.jabref.logic.shared.exception.NotASharedDatabaseException; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.GuiPreferences; import impl.org.controlsfx.skin.DecorationPane; import org.slf4j.Logger; @@ -62,8 +62,9 @@ private void openWindow(Stage mainStage) { LOGGER.debug("Initializing frame"); mainFrame.init(); + GuiPreferences guiPreferences = Globals.prefs.getGuiPreferences(); // Restore window location and/or maximised state - if (Globals.prefs.getBoolean(JabRefPreferences.WINDOW_MAXIMISED)) { + if (guiPreferences.isWindowMaximised()) { mainStage.setMaximized(true); } else if ((Screen.getScreens().size() == 1) && isWindowPositionOutOfBounds()) { // corrects the Window, if its outside of the mainscreen @@ -74,10 +75,10 @@ private void openWindow(Stage mainStage) { mainStage.setHeight(768); correctedWindowPos = true; } else { - mainStage.setX(Globals.prefs.getDouble(JabRefPreferences.POS_X)); - mainStage.setY(Globals.prefs.getDouble(JabRefPreferences.POS_Y)); - mainStage.setWidth(Globals.prefs.getDouble(JabRefPreferences.SIZE_X)); - mainStage.setHeight(Globals.prefs.getDouble(JabRefPreferences.SIZE_Y)); + mainStage.setX(guiPreferences.getPositionX()); + mainStage.setY(guiPreferences.getPositionY()); + mainStage.setWidth(guiPreferences.getSizeX()); + mainStage.setHeight(guiPreferences.getSizeY()); } debugLogWindowState(mainStage); @@ -120,7 +121,7 @@ private void openWindow(Stage mainStage) { private void openDatabases() { // If the option is enabled, open the last edited libraries, if any. - if (!isBlank && Globals.prefs.getBoolean(JabRefPreferences.OPEN_LAST_EDITED)) { + if (!isBlank && Globals.prefs.getGuiPreferences().shouldOpenLastEdited()) { openLastEditedDatabases(); } @@ -136,7 +137,10 @@ private void openDatabases() { .findFirst() .flatMap(ParserResult::getFile) .map(File::getAbsolutePath) - .orElse(Globals.prefs.get(JabRefPreferences.LAST_FOCUSED)); + .orElse(Globals.prefs.getGuiPreferences() + .getLastFocusedFile() + .toAbsolutePath() + .toString()); // Add all bibDatabases databases to the frame: boolean first = false; @@ -210,11 +214,17 @@ private void openDatabases() { } private void saveWindowState(Stage mainStage) { - Globals.prefs.putBoolean(JabRefPreferences.WINDOW_MAXIMISED, mainStage.isMaximized()); - Globals.prefs.putDouble(JabRefPreferences.POS_X, mainStage.getX()); - Globals.prefs.putDouble(JabRefPreferences.POS_Y, mainStage.getY()); - Globals.prefs.putDouble(JabRefPreferences.SIZE_X, mainStage.getWidth()); - Globals.prefs.putDouble(JabRefPreferences.SIZE_Y, mainStage.getHeight()); + GuiPreferences preferences = Globals.prefs.getGuiPreferences(); + Globals.prefs.storeGuiPreferences(new GuiPreferences( + mainStage.getX(), + mainStage.getY(), + mainStage.getWidth(), + mainStage.getHeight(), + mainStage.isMaximized(), + preferences.shouldOpenLastEdited(), + preferences.getLastFilesOpened(), + preferences.getLastFocusedFile(), + preferences.getSidePaneWidth())); debugLogWindowState(mainStage); } @@ -241,14 +251,16 @@ private void debugLogWindowState(Stage mainStage) { * @return outbounds */ private boolean isWindowPositionOutOfBounds() { - return !Screen.getPrimary().getBounds().contains(Globals.prefs.getDouble(JabRefPreferences.POS_X), Globals.prefs.getDouble(JabRefPreferences.POS_Y)); + return !Screen.getPrimary().getBounds().contains( + Globals.prefs.getGuiPreferences().getPositionX(), + Globals.prefs.getGuiPreferences().getPositionY()); } private void openLastEditedDatabases() { - if (Globals.prefs.get(JabRefPreferences.LAST_EDITED) == null) { + List lastFiles = Globals.prefs.getGuiPreferences().getLastFilesOpened(); + if (lastFiles.isEmpty()) { return; } - List lastFiles = Globals.prefs.getStringList(JabRefPreferences.LAST_EDITED); for (String fileName : lastFiles) { File dbFile = new File(fileName); diff --git a/src/main/java/org/jabref/gui/JabRefMain.java b/src/main/java/org/jabref/gui/JabRefMain.java index 826c561587f..0afc8d7f720 100644 --- a/src/main/java/org/jabref/gui/JabRefMain.java +++ b/src/main/java/org/jabref/gui/JabRefMain.java @@ -25,6 +25,7 @@ import org.jabref.migrations.PreferencesMigrations; import org.jabref.model.database.BibDatabaseMode; import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; import org.apache.commons.cli.ParseException; import org.slf4j.Logger; @@ -159,27 +160,27 @@ private static boolean handleMultipleAppInstances(String[] args) { return true; } - private static void applyPreferences(JabRefPreferences preferences) { + private static void applyPreferences(PreferencesService preferences) { // Read list(s) of journal names and abbreviations - Globals.journalAbbreviationRepository = JournalAbbreviationLoader.loadRepository(Globals.prefs.getJournalAbbreviationPreferences()); + Globals.journalAbbreviationRepository = JournalAbbreviationLoader.loadRepository(preferences.getJournalAbbreviationPreferences()); // Build list of Import and Export formats - Globals.IMPORT_FORMAT_READER.resetImportFormats(Globals.prefs.getImportFormatPreferences(), - Globals.prefs.getXmpPreferences(), Globals.getFileUpdateMonitor()); - Globals.entryTypesManager.addCustomOrModifiedTypes(preferences.loadBibEntryTypes(BibDatabaseMode.BIBTEX), - preferences.loadBibEntryTypes(BibDatabaseMode.BIBLATEX)); + Globals.IMPORT_FORMAT_READER.resetImportFormats(preferences.getImportFormatPreferences(), + preferences.getXmpPreferences(), Globals.getFileUpdateMonitor()); + Globals.entryTypesManager.addCustomOrModifiedTypes(preferences.getBibEntryTypes(BibDatabaseMode.BIBTEX), + preferences.getBibEntryTypes(BibDatabaseMode.BIBLATEX)); Globals.exportFactory = ExporterFactory.create( - Globals.prefs.getCustomExportFormats(Globals.journalAbbreviationRepository), - Globals.prefs.getLayoutFormatterPreferences(Globals.journalAbbreviationRepository), - Globals.prefs.getSavePreferencesForExport(), - Globals.prefs.getXmpPreferences()); + preferences.getCustomExportFormats(Globals.journalAbbreviationRepository), + preferences.getLayoutFormatterPreferences(Globals.journalAbbreviationRepository), + preferences.getSavePreferencesForExport(), + preferences.getXmpPreferences()); // Initialize protected terms loader - Globals.protectedTermsLoader = new ProtectedTermsLoader(Globals.prefs.getProtectedTermsPreferences()); + Globals.protectedTermsLoader = new ProtectedTermsLoader(preferences.getProtectedTermsPreferences()); // Override used newline character with the one stored in the preferences // The preferences return the system newline character sequence as default - OS.NEWLINE = Globals.prefs.get(JabRefPreferences.NEWLINE); + OS.NEWLINE = preferences.getNewLineSeparator().toString(); } private static void configureProxy(ProxyPreferences proxyPreferences) { diff --git a/src/main/java/org/jabref/gui/LibraryTab.java b/src/main/java/org/jabref/gui/LibraryTab.java index 5d50d770f9a..eb2706ad36c 100644 --- a/src/main/java/org/jabref/gui/LibraryTab.java +++ b/src/main/java/org/jabref/gui/LibraryTab.java @@ -238,7 +238,7 @@ public void feedData(BibDatabaseContext bibDatabaseContext) { private boolean isDatabaseReadyForAutoSave(BibDatabaseContext context) { return ((context.getLocation() == DatabaseLocation.SHARED) || - ((context.getLocation() == DatabaseLocation.LOCAL) && preferencesService.getShouldAutosave())) + ((context.getLocation() == DatabaseLocation.LOCAL) && preferencesService.shouldAutosave())) && context.getDatabasePath().isPresent(); } @@ -252,7 +252,7 @@ private boolean isDatabaseReadyForAutoSave(BibDatabaseContext context) { * Example: *jabref-authors.bib – testbib */ public void updateTabTitle(boolean isChanged) { - boolean isAutosaveEnabled = preferencesService.getShouldAutosave(); + boolean isAutosaveEnabled = preferencesService.shouldAutosave(); DatabaseLocation databaseLocation = bibDatabaseContext.getLocation(); Optional file = bibDatabaseContext.getDatabasePath(); @@ -755,7 +755,7 @@ public FileAnnotationCache getAnnotationCache() { public void resetChangeMonitorAndChangePane() { changeMonitor.ifPresent(DatabaseChangeMonitor::unregister); - changeMonitor = Optional.of(new DatabaseChangeMonitor(bibDatabaseContext, Globals.getFileUpdateMonitor(), Globals.TASK_EXECUTOR)); + changeMonitor = Optional.of(new DatabaseChangeMonitor(bibDatabaseContext, Globals.getFileUpdateMonitor(), Globals.TASK_EXECUTOR, preferencesService)); changePane = new DatabaseChangePane(splitPane, bibDatabaseContext, changeMonitor.get()); @@ -849,11 +849,11 @@ public void listen(EntriesRemovedEvent removedEntriesEvent) { } public static class Factory { - public LibraryTab createLibraryTab(JabRefFrame frame, Path file, BackgroundTask dataLoadingTask) { + public LibraryTab createLibraryTab(JabRefFrame frame, PreferencesService preferencesService, Path file, BackgroundTask dataLoadingTask) { BibDatabaseContext context = new BibDatabaseContext(); context.setDatabasePath(file); - LibraryTab newTab = new LibraryTab(frame, frame.prefs(), context, ExternalFileTypes.getInstance()); + LibraryTab newTab = new LibraryTab(frame, preferencesService, context, ExternalFileTypes.getInstance()); newTab.setDataLoadingTask(dataLoadingTask); dataLoadingTask.onRunning(newTab::onDatabaseLoadingStarted) diff --git a/src/main/java/org/jabref/gui/SendAsEMailAction.java b/src/main/java/org/jabref/gui/SendAsEMailAction.java index c54dc6fa60e..373d8f7e6f6 100644 --- a/src/main/java/org/jabref/gui/SendAsEMailAction.java +++ b/src/main/java/org/jabref/gui/SendAsEMailAction.java @@ -19,7 +19,7 @@ import org.jabref.logic.util.io.FileUtil; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,11 +38,13 @@ public class SendAsEMailAction extends SimpleCommand { private static final Logger LOGGER = LoggerFactory.getLogger(SendAsEMailAction.class); - private DialogService dialogService; - private StateManager stateManager; + private final DialogService dialogService; + private final PreferencesService preferencesService; + private final StateManager stateManager; - public SendAsEMailAction(DialogService dialogService, StateManager stateManager) { + public SendAsEMailAction(DialogService dialogService, PreferencesService preferencesService, StateManager stateManager) { this.dialogService = dialogService; + this.preferencesService = preferencesService; this.stateManager = stateManager; this.executable.bind(ActionHelper.needsEntriesSelected(stateManager)); @@ -74,7 +76,7 @@ private String sendEmail() throws Exception { List entries = stateManager.getSelectedEntries(); // write the entries using sw, which is used later to form the email content - BibEntryWriter bibtexEntryWriter = new BibEntryWriter(new FieldWriter(Globals.prefs.getFieldWriterPreferences()), Globals.entryTypesManager); + BibEntryWriter bibtexEntryWriter = new BibEntryWriter(new FieldWriter(preferencesService.getFieldWriterPreferences()), Globals.entryTypesManager); for (BibEntry entry : entries) { try { @@ -88,9 +90,9 @@ private String sendEmail() throws Exception { // open folders is needed to indirectly support email programs, which cannot handle // the unofficial "mailto:attachment" property - boolean openFolders = JabRefPreferences.getInstance().getBoolean(JabRefPreferences.OPEN_FOLDERS_OF_ATTACHED_FILES); + boolean openFolders = preferencesService.getExternalApplicationsPreferences().shouldAutoOpenEmailAttachmentsFolder(); - List fileList = FileUtil.getListOfLinkedFiles(entries, databaseContext.getFileDirectories(Globals.prefs.getFilePreferences())); + List fileList = FileUtil.getListOfLinkedFiles(entries, databaseContext.getFileDirectories(preferencesService.getFilePreferences())); for (Path path : fileList) { attachments.add(path.toAbsolutePath().toString()); if (openFolders) { @@ -104,7 +106,7 @@ private String sendEmail() throws Exception { String mailTo = "?Body=".concat(rawEntries.getBuffer().toString()); mailTo = mailTo.concat("&Subject="); - mailTo = mailTo.concat(JabRefPreferences.getInstance().get(JabRefPreferences.EMAIL_SUBJECT)); + mailTo = mailTo.concat(preferencesService.getExternalApplicationsPreferences().getEmailSubject()); for (String path : attachments) { mailTo = mailTo.concat("&Attachment=\"").concat(path); mailTo = mailTo.concat("\""); diff --git a/src/main/java/org/jabref/gui/SidePaneManager.java b/src/main/java/org/jabref/gui/SidePaneManager.java index 472589044e3..f87c948b57c 100644 --- a/src/main/java/org/jabref/gui/SidePaneManager.java +++ b/src/main/java/org/jabref/gui/SidePaneManager.java @@ -11,7 +11,7 @@ import org.jabref.gui.importer.fetcher.WebSearchPane; import org.jabref.gui.openoffice.OpenOfficeSidePanel; import org.jabref.logic.openoffice.OpenOfficePreferences; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; /** * Manages which {@link SidePaneComponent}s are shown. @@ -21,20 +21,20 @@ public class SidePaneManager { private final SidePane sidePane; private final Map components = new LinkedHashMap<>(); private final List visibleComponents = new LinkedList<>(); - private final JabRefPreferences preferences; + private final PreferencesService preferencesService; - public SidePaneManager(JabRefPreferences preferences, JabRefFrame frame) { - this.preferences = preferences; + public SidePaneManager(PreferencesService preferencesService, JabRefFrame frame, DialogService dialogService, StateManager stateManager) { + this.preferencesService = preferencesService; this.sidePane = new SidePane(); - OpenOfficePreferences openOfficePreferences = preferences.getOpenOfficePreferences(); + OpenOfficePreferences openOfficePreferences = preferencesService.getOpenOfficePreferences(); Stream.of( - new GroupSidePane(this, preferences, frame.getDialogService()), - new WebSearchPane(this, preferences, frame), - new OpenOfficeSidePanel(this, preferences, frame)) + new GroupSidePane(this, preferencesService, dialogService), + new WebSearchPane(this, preferencesService, dialogService, stateManager), + new OpenOfficeSidePanel(this, preferencesService, frame)) .forEach(pane -> components.put(pane.getType(), pane)); - if (preferences.getBoolean(JabRefPreferences.GROUP_SIDEPANE_VISIBLE)) { + if (preferencesService.getSidePanePreferences().isGroupsPaneVisible()) { show(SidePaneType.GROUPS); } @@ -42,7 +42,7 @@ public SidePaneManager(JabRefPreferences preferences, JabRefFrame frame) { show(SidePaneType.OPEN_OFFICE); } - if (preferences.getBoolean(JabRefPreferences.WEB_SEARCH_VISIBLE)) { + if (preferencesService.getSidePanePreferences().isWebSearchPaneVisible()) { show(SidePaneType.WEB_SEARCH); } @@ -87,7 +87,7 @@ public void show(SidePaneType type) { visibleComponents.add(component); // Sort the visible components by their preferred position - visibleComponents.sort(new PreferredIndexSort()); + visibleComponents.sort(new PreferredIndexSort(preferencesService)); updateView(); @@ -114,7 +114,7 @@ public void hide(SidePaneType type) { * so that we show components at the preferred position next time. */ private void updatePreferredPositions() { - Map preferredPositions = preferences.getSidePanePreferredPositions(); + Map preferredPositions = preferencesService.getSidePanePreferences().getPreferredPositions(); // Use the currently shown positions of all visible components int index = 0; @@ -122,7 +122,7 @@ private void updatePreferredPositions() { preferredPositions.put(comp.getType(), index); index++; } - preferences.storeSidePanePreferredPositions(preferredPositions); + preferencesService.storeSidePanePreferences(preferencesService.getSidePanePreferences().withPreferredPositions(preferredPositions)); } /** @@ -164,12 +164,7 @@ public void moveDown(SidePaneComponent comp) { */ private void updateView() { sidePane.setComponents(visibleComponents); - - if (visibleComponents.isEmpty()) { - sidePane.setVisible(false); - } else { - sidePane.setVisible(true); - } + sidePane.setVisible(!visibleComponents.isEmpty()); } /** @@ -179,8 +174,8 @@ private static class PreferredIndexSort implements Comparator private final Map preferredPositions; - public PreferredIndexSort() { - preferredPositions = Globals.prefs.getSidePanePreferredPositions(); + public PreferredIndexSort(PreferencesService preferencesService) { + preferredPositions = preferencesService.getSidePanePreferences().getPreferredPositions(); } @Override diff --git a/src/main/java/org/jabref/gui/StartLiteratureReviewAction.java b/src/main/java/org/jabref/gui/StartLiteratureReviewAction.java index c67328a4e19..f6db57b4727 100644 --- a/src/main/java/org/jabref/gui/StartLiteratureReviewAction.java +++ b/src/main/java/org/jabref/gui/StartLiteratureReviewAction.java @@ -11,11 +11,13 @@ import org.jabref.gui.util.TaskExecutor; import org.jabref.logic.crawler.Crawler; import org.jabref.logic.crawler.git.GitHandler; +import org.jabref.logic.exporter.SavePreferences; +import org.jabref.logic.importer.ImportFormatPreferences; import org.jabref.logic.importer.ParseException; import org.jabref.logic.l10n.Localization; import org.jabref.model.entry.BibEntryTypesManager; import org.jabref.model.util.FileUpdateMonitor; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; import org.eclipse.jgit.api.errors.GitAPIException; import org.slf4j.Logger; @@ -28,13 +30,19 @@ public class StartLiteratureReviewAction extends SimpleCommand { private final FileUpdateMonitor fileUpdateMonitor; private final Path workingDirectory; private final TaskExecutor taskExecutor; + private final PreferencesService preferencesService; + private final ImportFormatPreferences importFormatPreferneces; + private final SavePreferences savePreferences; - public StartLiteratureReviewAction(JabRefFrame frame, FileUpdateMonitor fileUpdateMonitor, Path standardWorkingDirectory, TaskExecutor taskExecutor) { + public StartLiteratureReviewAction(JabRefFrame frame, FileUpdateMonitor fileUpdateMonitor, Path standardWorkingDirectory, TaskExecutor taskExecutor, PreferencesService preferencesService, ImportFormatPreferences importFormatPreferences, SavePreferences savePreferences) { this.frame = frame; this.dialogService = frame.getDialogService(); this.fileUpdateMonitor = fileUpdateMonitor; this.workingDirectory = getInitialDirectory(standardWorkingDirectory); this.taskExecutor = taskExecutor; + this.preferencesService = preferencesService; + this.importFormatPreferneces = importFormatPreferences; + this.savePreferences = savePreferences; } @Override @@ -50,7 +58,7 @@ public void execute() { } final Crawler crawler; try { - crawler = new Crawler(studyDefinitionFile.get(), new GitHandler(studyDefinitionFile.get().getParent()), fileUpdateMonitor, JabRefPreferences.getInstance().getImportFormatPreferences(), JabRefPreferences.getInstance().getSavePreferences(), new BibEntryTypesManager()); + crawler = new Crawler(studyDefinitionFile.get(), new GitHandler(studyDefinitionFile.get().getParent()), fileUpdateMonitor, importFormatPreferneces, savePreferences, new BibEntryTypesManager()); } catch (IOException | ParseException | GitAPIException e) { LOGGER.error("Error during reading of study definition file.", e); dialogService.showErrorDialogAndWait(Localization.lang("Error during reading of study definition file."), e); @@ -64,7 +72,7 @@ public void execute() { LOGGER.error("Error during persistence of crawling results."); dialogService.showErrorDialogAndWait(Localization.lang("Error during persistence of crawling results."), e); }) - .onSuccess(unused -> new OpenDatabaseAction(frame).openFile(Path.of(studyDefinitionFile.get().getParent().toString(), "studyResult.bib"), true)) + .onSuccess(unused -> new OpenDatabaseAction(frame, preferencesService, dialogService).openFile(Path.of(studyDefinitionFile.get().getParent().toString(), "studyResult.bib"), true)) .executeWith(taskExecutor); } diff --git a/src/main/java/org/jabref/gui/UpdateTimestampListener.java b/src/main/java/org/jabref/gui/UpdateTimestampListener.java index aad998db035..7af68d7a415 100644 --- a/src/main/java/org/jabref/gui/UpdateTimestampListener.java +++ b/src/main/java/org/jabref/gui/UpdateTimestampListener.java @@ -17,7 +17,7 @@ class UpdateTimestampListener { @Subscribe public void listen(EntryChangedEvent event) { - if (preferencesService.getTimestampPreferences().includeTimestamps()) { + if (preferencesService.getTimestampPreferences().shouldIncludeTimestamps()) { event.getBibEntry().setField(preferencesService.getTimestampPreferences().getTimestampField(), preferencesService.getTimestampPreferences().now()); } diff --git a/src/main/java/org/jabref/gui/auximport/FromAuxDialog.java b/src/main/java/org/jabref/gui/auximport/FromAuxDialog.java index 5626bc8b60e..7280deb9819 100644 --- a/src/main/java/org/jabref/gui/auximport/FromAuxDialog.java +++ b/src/main/java/org/jabref/gui/auximport/FromAuxDialog.java @@ -91,9 +91,9 @@ private void parseActionPerformed() { @FXML private void browseButtonClicked() { FileDialogConfiguration fileDialogConfiguration = new FileDialogConfiguration.Builder() - .addExtensionFilter(StandardFileType.AUX) - .withDefaultExtension(StandardFileType.AUX) - .withInitialDirectory(preferences.getWorkingDir()).build(); + .addExtensionFilter(StandardFileType.AUX) + .withDefaultExtension(StandardFileType.AUX) + .withInitialDirectory(preferences.getWorkingDir()).build(); dialogService.showFileOpenDialog(fileDialogConfiguration).ifPresent(file -> auxFileField.setText(file.toAbsolutePath().toString())); } } diff --git a/src/main/java/org/jabref/gui/bibtexextractor/BibtexExtractorViewModel.java b/src/main/java/org/jabref/gui/bibtexextractor/BibtexExtractorViewModel.java index f1d99d74331..a7c4d76b8b8 100644 --- a/src/main/java/org/jabref/gui/bibtexextractor/BibtexExtractorViewModel.java +++ b/src/main/java/org/jabref/gui/bibtexextractor/BibtexExtractorViewModel.java @@ -21,7 +21,7 @@ import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.util.FileUpdateMonitor; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,20 +38,20 @@ public class BibtexExtractorViewModel { public BibtexExtractorViewModel(BibDatabaseContext bibdatabaseContext, DialogService dialogService, - JabRefPreferences jabRefPreferences, + PreferencesService preferencesService, FileUpdateMonitor fileUpdateMonitor, TaskExecutor taskExecutor, UndoManager undoManager, StateManager stateManager) { this.dialogService = dialogService; - currentCitationfetcher = new GrobidCitationFetcher(jabRefPreferences.getImportFormatPreferences()); + currentCitationfetcher = new GrobidCitationFetcher(preferencesService.getImportFormatPreferences()); this.taskExecutor = taskExecutor; this.importHandler = new ImportHandler( dialogService, bibdatabaseContext, ExternalFileTypes.getInstance(), - jabRefPreferences, + preferencesService, fileUpdateMonitor, undoManager, stateManager); diff --git a/src/main/java/org/jabref/gui/bibtexextractor/ExtractBibtexDialog.java b/src/main/java/org/jabref/gui/bibtexextractor/ExtractBibtexDialog.java index 86f22264ee9..b7c33fdf15d 100644 --- a/src/main/java/org/jabref/gui/bibtexextractor/ExtractBibtexDialog.java +++ b/src/main/java/org/jabref/gui/bibtexextractor/ExtractBibtexDialog.java @@ -16,7 +16,7 @@ import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.util.FileUpdateMonitor; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; @@ -34,6 +34,7 @@ public class ExtractBibtexDialog extends BaseDialog { @Inject private FileUpdateMonitor fileUpdateMonitor; @Inject private TaskExecutor taskExecutor; @Inject private UndoManager undoManager; + @Inject private PreferencesService preferencesService; public ExtractBibtexDialog() { ViewLoader.view(this) @@ -52,7 +53,7 @@ public ExtractBibtexDialog() { @FXML private void initialize() { BibDatabaseContext database = stateManager.getActiveDatabase().orElseThrow(() -> new NullPointerException("Database null")); - this.viewModel = new BibtexExtractorViewModel(database, dialogService, JabRefPreferences.getInstance(), fileUpdateMonitor, taskExecutor, undoManager, stateManager); + this.viewModel = new BibtexExtractorViewModel(database, dialogService, preferencesService, fileUpdateMonitor, taskExecutor, undoManager, stateManager); input.textProperty().bindBidirectional(viewModel.inputTextProperty()); } } diff --git a/src/main/java/org/jabref/gui/citationkeypattern/GenerateCitationKeyAction.java b/src/main/java/org/jabref/gui/citationkeypattern/GenerateCitationKeyAction.java index 0cf54e3ada9..f1d53b19015 100644 --- a/src/main/java/org/jabref/gui/citationkeypattern/GenerateCitationKeyAction.java +++ b/src/main/java/org/jabref/gui/citationkeypattern/GenerateCitationKeyAction.java @@ -14,7 +14,6 @@ import org.jabref.logic.citationkeypattern.CitationKeyGenerator; import org.jabref.logic.l10n.Localization; import org.jabref.model.entry.BibEntry; -import org.jabref.preferences.JabRefPreferences; public class GenerateCitationKeyAction extends SimpleCommand { @@ -51,14 +50,15 @@ public void execute() { } public static boolean confirmOverwriteKeys(DialogService dialogService) { - if (Globals.prefs.getBoolean(JabRefPreferences.WARN_BEFORE_OVERWRITING_KEY)) { + if (Globals.prefs.getCitationKeyPatternPreferences().shouldWarnBeforeOverwriteCiteKey()) { return dialogService.showConfirmationDialogWithOptOutAndWait( Localization.lang("Overwrite keys"), Localization.lang("One or more keys will be overwritten. Continue?"), Localization.lang("Overwrite keys"), Localization.lang("Cancel"), Localization.lang("Disable this confirmation dialog"), - optOut -> Globals.prefs.putBoolean(JabRefPreferences.WARN_BEFORE_OVERWRITING_KEY, !optOut)); + optOut -> Globals.prefs.storeCitationKeyPatternPreferences( + Globals.prefs.getCitationKeyPatternPreferences().withWarnBeforeOverwriteCiteKey(!optOut))); } else { // Always overwrite keys by default return true; @@ -67,7 +67,7 @@ public static boolean confirmOverwriteKeys(DialogService dialogService) { private void checkOverwriteKeysChosen() { // We don't want to generate keys for entries which already have one thus remove the entries - if (Globals.prefs.getBoolean(JabRefPreferences.AVOID_OVERWRITING_KEY)) { + if (Globals.prefs.getCitationKeyPatternPreferences().shouldAvoidOverwriteCiteKey()) { entries.removeIf(BibEntry::hasCitationKey); // if we're going to override some citation keys warn the user about it } else if (entries.parallelStream().anyMatch(BibEntry::hasCitationKey)) { diff --git a/src/main/java/org/jabref/gui/cleanup/CleanupAction.java b/src/main/java/org/jabref/gui/cleanup/CleanupAction.java index 50e7e703c0f..ad7dab14172 100644 --- a/src/main/java/org/jabref/gui/cleanup/CleanupAction.java +++ b/src/main/java/org/jabref/gui/cleanup/CleanupAction.java @@ -18,7 +18,6 @@ import org.jabref.model.FieldChange; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; -import org.jabref.preferences.JabRefPreferences; import org.jabref.preferences.PreferencesService; public class CleanupAction extends SimpleCommand { @@ -31,7 +30,7 @@ public class CleanupAction extends SimpleCommand { private boolean isCanceled; private int modifiedEntriesCount; - public CleanupAction(JabRefFrame frame, JabRefPreferences preferences, DialogService dialogService, StateManager stateManager) { + public CleanupAction(JabRefFrame frame, PreferencesService preferences, DialogService dialogService, StateManager stateManager) { this.frame = frame; this.preferences = preferences; this.dialogService = dialogService; @@ -63,14 +62,14 @@ public void execute() { preferences.getFilePreferences()).showAndWait(); chosenPreset.ifPresent(preset -> { - if (preset.isRenamePDFActive() && Globals.prefs.getBoolean(JabRefPreferences.ASK_AUTO_NAMING_PDFS_AGAIN)) { + if (preset.isRenamePDFActive() && preferences.getAutoLinkPreferences().shouldAskAutoNamingPdfs()) { boolean confirmed = dialogService.showConfirmationDialogWithOptOutAndWait(Localization.lang("Autogenerate PDF Names"), Localization.lang("Auto-generating PDF-Names does not support undo. Continue?"), Localization.lang("Autogenerate PDF Names"), Localization.lang("Cancel"), Localization.lang("Disable this confirmation dialog"), - optOut -> Globals.prefs.putBoolean(JabRefPreferences.ASK_AUTO_NAMING_PDFS_AGAIN, !optOut)); - + optOut -> preferences.storeAutoLinkPreferences(preferences.getAutoLinkPreferences() + .withAskAutoNamingPdfs(!optOut))); if (!confirmed) { isCanceled = true; return; diff --git a/src/main/java/org/jabref/gui/collab/ChangeScanner.java b/src/main/java/org/jabref/gui/collab/ChangeScanner.java index f09de7c2bdd..4806d156a86 100644 --- a/src/main/java/org/jabref/gui/collab/ChangeScanner.java +++ b/src/main/java/org/jabref/gui/collab/ChangeScanner.java @@ -5,7 +5,6 @@ import java.util.Collections; import java.util.List; -import org.jabref.gui.Globals; import org.jabref.logic.bibtex.comparator.BibDatabaseDiff; import org.jabref.logic.bibtex.comparator.BibEntryDiff; import org.jabref.logic.bibtex.comparator.BibStringDiff; @@ -14,6 +13,7 @@ import org.jabref.logic.importer.ParserResult; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.util.DummyFileUpdateMonitor; +import org.jabref.preferences.PreferencesService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,9 +22,11 @@ public class ChangeScanner { private static final Logger LOGGER = LoggerFactory.getLogger(ChangeScanner.class); private final BibDatabaseContext database; + private final PreferencesService preferencesService; - public ChangeScanner(BibDatabaseContext database) { + public ChangeScanner(BibDatabaseContext database, PreferencesService preferencesService) { this.database = database; + this.preferencesService = preferencesService; } public List scanForChanges() { @@ -37,14 +39,14 @@ public List scanForChanges() { // Parse the modified file // Important: apply all post-load actions - ImportFormatPreferences importFormatPreferences = Globals.prefs.getImportFormatPreferences(); + ImportFormatPreferences importFormatPreferences = preferencesService.getImportFormatPreferences(); ParserResult result = OpenDatabase.loadDatabase(database.getDatabasePath().get(), importFormatPreferences, new DummyFileUpdateMonitor()); BibDatabaseContext databaseOnDisk = result.getDatabaseContext(); // Start looking at changes. BibDatabaseDiff differences = BibDatabaseDiff.compare(database, databaseOnDisk); differences.getMetaDataDifferences().ifPresent(diff -> { - changes.add(new MetaDataChangeViewModel(diff, Globals.prefs)); + changes.add(new MetaDataChangeViewModel(diff, preferencesService)); diff.getGroupDifferences().ifPresent(groupDiff -> changes.add(new GroupChangeViewModel(groupDiff))); }); differences.getPreambleDifferences().ifPresent(diff -> changes.add(new PreambleChangeViewModel(diff))); diff --git a/src/main/java/org/jabref/gui/collab/DatabaseChangeMonitor.java b/src/main/java/org/jabref/gui/collab/DatabaseChangeMonitor.java index 6181129601b..fe1f892ca62 100644 --- a/src/main/java/org/jabref/gui/collab/DatabaseChangeMonitor.java +++ b/src/main/java/org/jabref/gui/collab/DatabaseChangeMonitor.java @@ -9,6 +9,7 @@ import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.util.FileUpdateListener; import org.jabref.model.util.FileUpdateMonitor; +import org.jabref.preferences.PreferencesService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,11 +22,16 @@ public class DatabaseChangeMonitor implements FileUpdateListener { private final FileUpdateMonitor fileMonitor; private final List listeners; private final TaskExecutor taskExecutor; + private final PreferencesService preferencesService; - public DatabaseChangeMonitor(BibDatabaseContext database, FileUpdateMonitor fileMonitor, TaskExecutor taskExecutor) { + public DatabaseChangeMonitor(BibDatabaseContext database, + FileUpdateMonitor fileMonitor, + TaskExecutor taskExecutor, + PreferencesService preferencesService) { this.database = database; this.fileMonitor = fileMonitor; this.taskExecutor = taskExecutor; + this.preferencesService = preferencesService; this.listeners = new ArrayList<>(); this.database.getDatabasePath().ifPresent(path -> { @@ -40,7 +46,7 @@ public DatabaseChangeMonitor(BibDatabaseContext database, FileUpdateMonitor file @Override public void fileUpdated() { // File on disk has changed, thus look for notable changes and notify listeners in case there are such changes - ChangeScanner scanner = new ChangeScanner(database); + ChangeScanner scanner = new ChangeScanner(database, preferencesService); BackgroundTask.wrap(scanner::scanForChanges) .onSuccess(changes -> { if (!changes.isEmpty()) { diff --git a/src/main/java/org/jabref/gui/collab/MetaDataChangeViewModel.java b/src/main/java/org/jabref/gui/collab/MetaDataChangeViewModel.java index 1f9b2e6785e..83b6351fd78 100644 --- a/src/main/java/org/jabref/gui/collab/MetaDataChangeViewModel.java +++ b/src/main/java/org/jabref/gui/collab/MetaDataChangeViewModel.java @@ -8,14 +8,14 @@ import org.jabref.logic.bibtex.comparator.MetaDataDiff; import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; class MetaDataChangeViewModel extends DatabaseChangeViewModel { private final MetaDataDiff metaDataDiff; - private final JabRefPreferences preferences; + private final PreferencesService preferences; - public MetaDataChangeViewModel(MetaDataDiff metaDataDiff, JabRefPreferences preferences) { + public MetaDataChangeViewModel(MetaDataDiff metaDataDiff, PreferencesService preferences) { super(Localization.lang("Metadata change")); this.metaDataDiff = metaDataDiff; this.preferences = preferences; diff --git a/src/main/java/org/jabref/gui/copyfiles/CopyFilesAction.java b/src/main/java/org/jabref/gui/copyfiles/CopyFilesAction.java index 24c28e38097..07ee7470d6c 100644 --- a/src/main/java/org/jabref/gui/copyfiles/CopyFilesAction.java +++ b/src/main/java/org/jabref/gui/copyfiles/CopyFilesAction.java @@ -14,7 +14,6 @@ import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; -import org.jabref.preferences.JabRefPreferences; import static org.jabref.gui.actions.ActionHelper.needsDatabase; import static org.jabref.gui.actions.ActionHelper.needsEntriesSelected; @@ -46,7 +45,7 @@ public void execute() { List entries = stateManager.getSelectedEntries(); DirectoryDialogConfiguration dirDialogConfiguration = new DirectoryDialogConfiguration.Builder() - .withInitialDirectory(Path.of(Globals.prefs.get(JabRefPreferences.EXPORT_WORKING_DIRECTORY))) + .withInitialDirectory(Globals.prefs.getImportExportPreferences().getExportWorkingDirectory()) .build(); Optional exportPath = dialogService.showDirectorySelectionDialog(dirDialogConfiguration); exportPath.ifPresent(path -> { diff --git a/src/main/java/org/jabref/gui/copyfiles/CopySingleFileAction.java b/src/main/java/org/jabref/gui/copyfiles/CopySingleFileAction.java index 4505f75650d..72ec5c64266 100644 --- a/src/main/java/org/jabref/gui/copyfiles/CopySingleFileAction.java +++ b/src/main/java/org/jabref/gui/copyfiles/CopySingleFileAction.java @@ -21,9 +21,10 @@ public class CopySingleFileAction extends SimpleCommand { private final LinkedFile linkedFile; private final DialogService dialogService; private final BibDatabaseContext databaseContext; - private final BiFunction resolvePathFilename = (path, file) -> path.resolve(file.getFileName()); private final PreferencesService preferencesService; + private final BiFunction resolvePathFilename = (path, file) -> path.resolve(file.getFileName()); + public CopySingleFileAction(LinkedFile linkedFile, DialogService dialogService, BibDatabaseContext databaseContext, PreferencesService preferencesService) { this.linkedFile = linkedFile; this.dialogService = dialogService; diff --git a/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeDialogViewModel.java b/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeDialogViewModel.java index d7a034c3225..ac2ba0b697b 100644 --- a/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeDialogViewModel.java +++ b/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypeDialogViewModel.java @@ -178,8 +178,8 @@ public void removeField(FieldViewModel focusedItem) { public void resetAllCustomEntryTypes() { entryTypesManager.clearAllCustomEntryTypes(mode); preferencesService.clearBibEntryTypes(mode); - entryTypesManager.addCustomOrModifiedTypes(preferencesService.loadBibEntryTypes(BibDatabaseMode.BIBTEX), - preferencesService.loadBibEntryTypes(BibDatabaseMode.BIBLATEX)); + entryTypesManager.addCustomOrModifiedTypes(preferencesService.getBibEntryTypes(BibDatabaseMode.BIBTEX), + preferencesService.getBibEntryTypes(BibDatabaseMode.BIBLATEX)); } public void apply() { @@ -199,9 +199,9 @@ public void apply() { entryTypesManager.removeCustomOrModifiedEntryType(entryType, mode); } - preferencesService.saveCustomEntryTypes(entryTypesManager); + preferencesService.storeCustomEntryTypes(entryTypesManager); // Reload types from preferences to make sure any modifications are present when reopening the dialog - entryTypesManager.addCustomOrModifiedTypes(preferencesService.loadBibEntryTypes(BibDatabaseMode.BIBTEX), - preferencesService.loadBibEntryTypes(BibDatabaseMode.BIBLATEX)); + entryTypesManager.addCustomOrModifiedTypes(preferencesService.getBibEntryTypes(BibDatabaseMode.BIBTEX), + preferencesService.getBibEntryTypes(BibDatabaseMode.BIBLATEX)); } } diff --git a/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java b/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java index eb12f33a2f2..3cd156c24f3 100644 --- a/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java +++ b/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java @@ -27,7 +27,6 @@ import org.jabref.model.entry.identifier.DOI; import org.jabref.model.entry.identifier.Eprint; import org.jabref.model.util.FileHelper; -import org.jabref.preferences.JabRefPreferences; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -157,19 +156,19 @@ private static void openExternalFilePlatformIndependent(Optional copyTitle(); + case COPY_KEY -> copyKey(); + case COPY_CITE_KEY -> copyCiteKey(); + case COPY_KEY_AND_TITLE -> copyKeyAndTitle(); + case COPY_KEY_AND_LINK -> copyKeyAndLink(); + default -> LOGGER.info("Unknown copy command."); } } @@ -140,7 +127,7 @@ private void copyCiteKey() { return; } - String citeCommand = Optional.ofNullable(Globals.prefs.get(JabRefPreferences.CITE_COMMAND)) + String citeCommand = Optional.ofNullable(Globals.prefs.getExternalApplicationsPreferences().getCiteCommand()) .filter(cite -> cite.contains("\\")) // must contain \ .orElse("\\cite"); diff --git a/src/main/java/org/jabref/gui/entryeditor/DeprecatedFieldsTab.java b/src/main/java/org/jabref/gui/entryeditor/DeprecatedFieldsTab.java index 883bc98da1e..0c52de20ef8 100644 --- a/src/main/java/org/jabref/gui/entryeditor/DeprecatedFieldsTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/DeprecatedFieldsTab.java @@ -9,6 +9,7 @@ import javafx.scene.control.Tooltip; import org.jabref.gui.DialogService; +import org.jabref.gui.StateManager; import org.jabref.gui.autocompleter.SuggestionProviders; import org.jabref.gui.externalfiletype.ExternalFileTypes; import org.jabref.gui.icon.IconTheme; @@ -20,14 +21,23 @@ import org.jabref.model.entry.BibEntryType; import org.jabref.model.entry.BibEntryTypesManager; import org.jabref.model.entry.field.Field; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; public class DeprecatedFieldsTab extends FieldsEditorTab { private final BibEntryTypesManager entryTypesManager; - public DeprecatedFieldsTab(BibDatabaseContext databaseContext, SuggestionProviders suggestionProviders, UndoManager undoManager, DialogService dialogService, JabRefPreferences preferences, BibEntryTypesManager entryTypesManager, ExternalFileTypes externalFileTypes, TaskExecutor taskExecutor, JournalAbbreviationRepository journalAbbreviationRepository) { - super(false, databaseContext, suggestionProviders, undoManager, dialogService, preferences, externalFileTypes, taskExecutor, journalAbbreviationRepository); + public DeprecatedFieldsTab(BibDatabaseContext databaseContext, + SuggestionProviders suggestionProviders, + UndoManager undoManager, + DialogService dialogService, + PreferencesService preferences, + StateManager stateManager, + BibEntryTypesManager entryTypesManager, + ExternalFileTypes externalFileTypes, + TaskExecutor taskExecutor, + JournalAbbreviationRepository journalAbbreviationRepository) { + super(false, databaseContext, suggestionProviders, undoManager, dialogService, preferences, stateManager, externalFileTypes, taskExecutor, journalAbbreviationRepository); this.entryTypesManager = entryTypesManager; setText(Localization.lang("Deprecated fields")); diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java index 7f05300ff00..026d4ba3a5d 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java @@ -229,28 +229,28 @@ private void navigateToNextEntry() { private List createTabs() { // Preview tab - entryEditorTabs.add(new PreviewTab(databaseContext, dialogService, Globals.prefs, ExternalFileTypes.getInstance())); + entryEditorTabs.add(new PreviewTab(databaseContext, dialogService, preferencesService, stateManager, ExternalFileTypes.getInstance())); // Required fields - entryEditorTabs.add(new RequiredFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, Globals.prefs, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); + entryEditorTabs.add(new RequiredFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); // Optional fields - entryEditorTabs.add(new OptionalFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, Globals.prefs, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); - entryEditorTabs.add(new OptionalFields2Tab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, Globals.prefs, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); - entryEditorTabs.add(new DeprecatedFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, Globals.prefs, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); + entryEditorTabs.add(new OptionalFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); + entryEditorTabs.add(new OptionalFields2Tab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); + entryEditorTabs.add(new DeprecatedFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); // Other fields - entryEditorTabs.add(new OtherFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, Globals.prefs, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); + entryEditorTabs.add(new OtherFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); // General fields from preferences for (Map.Entry> tab : entryEditorPreferences.getEntryEditorTabList().entrySet()) { - entryEditorTabs.add(new UserDefinedFieldsTab(tab.getKey(), tab.getValue(), databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, Globals.prefs, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); + entryEditorTabs.add(new UserDefinedFieldsTab(tab.getKey(), tab.getValue(), databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, Globals.entryTypesManager, ExternalFileTypes.getInstance(), Globals.TASK_EXECUTOR, Globals.journalAbbreviationRepository)); } // Special tabs entryEditorTabs.add(new MathSciNetTab()); entryEditorTabs.add(new FileAnnotationTab(libraryTab.getAnnotationCache())); - entryEditorTabs.add(new RelatedArticlesTab(this, entryEditorPreferences, dialogService)); + entryEditorTabs.add(new RelatedArticlesTab(this, entryEditorPreferences, preferencesService, dialogService)); // Source tab sourceTab = new SourceTab( diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditorPreferences.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditorPreferences.java index 278c9a85427..440678504f7 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditorPreferences.java +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditorPreferences.java @@ -59,7 +59,7 @@ public boolean shouldShowLatexCitationsTab() { return shouldShowLatexCitationsTab; } - public boolean isEnableValidation() { + public boolean shouldEnableValidation() { return enableValidation; } diff --git a/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java b/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java index 9c3d74f2c6a..9d037e5af2f 100644 --- a/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java @@ -24,6 +24,7 @@ import javafx.scene.layout.RowConstraints; import org.jabref.gui.DialogService; +import org.jabref.gui.StateManager; import org.jabref.gui.autocompleter.SuggestionProviders; import org.jabref.gui.externalfiletype.ExternalFileTypes; import org.jabref.gui.fieldeditors.FieldEditorFX; @@ -35,7 +36,7 @@ import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.Field; -import org.jabref.preferences.JabRefPreferences; +import org.jabref.preferences.PreferencesService; /** * A single tab displayed in the EntryEditor holding several FieldEditors. @@ -46,16 +47,26 @@ abstract class FieldsEditorTab extends EntryEditorTab { private final boolean isCompressed; private final SuggestionProviders suggestionProviders; private final DialogService dialogService; - private final JabRefPreferences preferences; + private final PreferencesService preferences; private final ExternalFileTypes externalFileTypes; private final TaskExecutor taskExecutor; private final JournalAbbreviationRepository journalAbbreviationRepository; + private final StateManager stateManager; private PreviewPanel previewPanel; private final UndoManager undoManager; private Collection fields = new ArrayList<>(); private GridPane gridPane; - public FieldsEditorTab(boolean compressed, BibDatabaseContext databaseContext, SuggestionProviders suggestionProviders, UndoManager undoManager, DialogService dialogService, JabRefPreferences preferences, ExternalFileTypes externalFileTypes, TaskExecutor taskExecutor, JournalAbbreviationRepository journalAbbreviationRepository) { + public FieldsEditorTab(boolean compressed, + BibDatabaseContext databaseContext, + SuggestionProviders suggestionProviders, + UndoManager undoManager, + DialogService dialogService, + PreferencesService preferences, + StateManager stateManager, + ExternalFileTypes externalFileTypes, + TaskExecutor taskExecutor, + JournalAbbreviationRepository journalAbbreviationRepository) { this.isCompressed = compressed; this.databaseContext = Objects.requireNonNull(databaseContext); this.suggestionProviders = Objects.requireNonNull(suggestionProviders); @@ -65,10 +76,11 @@ public FieldsEditorTab(boolean compressed, BibDatabaseContext databaseContext, S this.externalFileTypes = Objects.requireNonNull(externalFileTypes); this.taskExecutor = Objects.requireNonNull(taskExecutor); this.journalAbbreviationRepository = Objects.requireNonNull(journalAbbreviationRepository); + this.stateManager = stateManager; } private static void addColumn(GridPane gridPane, int columnIndex, List