diff --git a/.github/workflows/GreetingFirstTimeCodeContribution.yml b/.github/workflows/GreetingFirstTimeCodeContribution.yml
new file mode 100644
index 00000000000..fb0ed3164f4
--- /dev/null
+++ b/.github/workflows/GreetingFirstTimeCodeContribution.yml
@@ -0,0 +1,23 @@
+name: GreetingFirstTimeCodeContribution
+
+on:
+ issues:
+ types:
+ - labeled
+
+jobs:
+ GreetingFirstTimeCodeContribution:
+ if: ${{ github.event.label.name == 'FirstTimeCodeContribution' }}
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+ steps:
+ - name: GreetingFirstTimeCodeContribution
+ uses: peter-evans/create-or-update-comment@v2
+ with:
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ issue-number: ${{ github.event.issue.number }}
+ body: |
+ As a general advice for newcomers: check out [Contributing](https://github.com/JabRef/jabref/blob/main/CONTRIBUTING.md) for a start. Also, [guidelines for setting up a local workspace](https://devdocs.jabref.org/getting-into-the-code/guidelines-for-setting-up-a-local-workspace) is worth having a look at.
+
+ Feel free to ask here at GitHub, if you have any issue related questions. If you have questions about how to setup your workspace use JabRef's [Gitter](https://gitter.im/JabRef/jabref) chat. Try to open a (draft) pull-request early on, so that people can see you are working on the issue and so that they can see the direction the pull request is heading towards. This way, you will likely receive valuable feedback.
diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml
index 624ead6dc9f..2d3633931d4 100644
--- a/.github/workflows/automerge.yml
+++ b/.github/workflows/automerge.yml
@@ -16,12 +16,12 @@ jobs:
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
- name: Auto approve
- uses: hmarr/auto-approve-action@v3.0.0
+ uses: hmarr/auto-approve-action@v3.1.0
if: steps.waitforstatuschecks.outputs.status == 'success'
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Merge pull requests
- uses: pascalgn/automerge-action@v0.15.3
+ uses: pascalgn/automerge-action@v0.15.5
if: steps.waitforstatuschecks.outputs.status == 'success'
env:
MERGE_METHOD: "merge"
diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml
index 66315e75afe..d14a77edd1a 100644
--- a/.github/workflows/deployment.yml
+++ b/.github/workflows/deployment.yml
@@ -51,17 +51,28 @@ jobs:
runs-on: ${{ matrix.os }}
name: Create installer and portable version for ${{ matrix.displayName }}
steps:
+ - name: Check secrets presence
+ id: checksecrets
+ shell: bash
+ run: |
+ if [ "$BUILDJABREFPRIVATEKEY" == "" ]; then
+ echo ::set-output name=secretspresent::false
+ else
+ echo ::set-output name=secretspresent::true
+ fi
+ env:
+ BUILDJABREFPRIVATEKEY: ${{ secrets.buildJabRefPrivateKey }}
- name: Fetch all history for all tags and branches
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install GitVersion
- uses: gittools/actions/gitversion/setup@v0.9.14
+ uses: gittools/actions/gitversion/setup@v0.9.15
with:
versionSpec: "5.x"
- name: Run GitVersion
id: gitversion
- uses: gittools/actions/gitversion/execute@v0.9.14
+ uses: gittools/actions/gitversion/execute@v0.9.15
- name: Set up JDK
uses: actions/setup-java@v3
with:
@@ -69,14 +80,14 @@ jobs:
distribution: 'temurin'
cache: 'gradle'
- name: Setup OSX key chain on OSX
- if: matrix.os == 'macos-latest'
+ if: (matrix.os == 'macos-latest') && steps.checksecrets.outputs.secretspresent
uses: apple-actions/import-codesign-certs@v1
with:
p12-file-base64: ${{ secrets.OSX_SIGNING_CERT }}
p12-password: ${{ secrets.OSX_CERT_PWD }}
keychain-password: jabref
- name: Setup OSX key chain on OSX for app id cert
- if: matrix.os == 'macos-latest'
+ if: (matrix.os == 'macos-latest') && steps.checksecrets.outputs.secretspresent
uses: apple-actions/import-codesign-certs@v1
with:
p12-file-base64: ${{ secrets.OSX_SIGNING_CERT_APPLICATION }}
@@ -84,12 +95,14 @@ jobs:
create-keychain: false
keychain-password: jabref
- name: Build runtime image
+ if: (matrix.os != 'macos-latest') || steps.checksecrets.outputs.secretspresent
run: ./gradlew -i -PprojVersion="${{ steps.gitversion.outputs.AssemblySemVer }}" -PprojVersionInfo="${{ steps.gitversion.outputs.InformationalVersion }}" jlinkZip
- name: Build installer
+ if: (matrix.os != 'macos-latest') || steps.checksecrets.outputs.secretspresent
run: ./gradlew -i -PprojVersion="${{ steps.gitversion.outputs.AssemblySemVer }}" -PprojVersionInfo="${{ steps.gitversion.outputs.InformationalVersion }}" jpackage
shell: bash
- name: Resign app image for OSX and build dmg
- if: matrix.os == 'macos-latest'
+ if: (matrix.os == 'macos-latest') && steps.checksecrets.outputs.secretspresent
shell: bash
run: |
codesign --entitlements buildres/mac/jabref.entitlements --options runtime -vvv -f --sign "Developer ID Application: JabRef e.V. (6792V39SK3)" build/distribution/JabRef.app/Contents/runtime/Contents/MacOS/libjli.dylib
@@ -100,7 +113,7 @@ jobs:
jpackage --type pkg --dest build/distribution --name JabRef --mac-package-identifier JabRef --app-version "${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}" --app-image build/distribution/JabRef.app --verbose --type pkg --vendor JabRef --app-version "${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}" --file-associations buildres/mac/bibtexAssociations.properties --resource-dir buildres/mac
productsign --sign "Developer ID Installer: JabRef e.V. (6792V39SK3)" "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.pkg" "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}-signed.pkg"
- name: Notarize dmg and pkg installer
- if: matrix.os == 'macos-latest' && startsWith(github.ref, 'refs/tags/')
+ if: (matrix.os == 'macos-latest') && startsWith(github.ref, 'refs/tags/') && steps.checksecrets.outputs.secretspresent
shell: bash
run: |
REQUEST_UUID_DMG=$(xcrun altool --verbose --notarize-app --primary-bundle-id "org.jabref" --username ${{ secrets.OSX_NOTARIZATION_APP_USERNAME }} --password ${{ secrets.OSX_NOTARIZATION_APP_PWD }} --asc-provider "6792V39SK3" --file "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.dmg" | grep RequestUUID | awk '{print $3}')
@@ -157,12 +170,12 @@ jobs:
- name: Fetch all history for all tags and branches
run: git fetch --prune --unshallow
- name: Install GitVersion
- uses: gittools/actions/gitversion/setup@v0.9.14
+ uses: gittools/actions/gitversion/setup@v0.9.15
with:
versionSpec: '5.x'
- name: Run GitVersion
id: gitversion
- uses: gittools/actions/gitversion/execute@v0.9.14
+ uses: gittools/actions/gitversion/execute@v0.9.15
- name: Get linux binaries
uses: actions/download-artifact@master
with:
diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml
deleted file mode 100644
index 13352cc38f1..00000000000
--- a/.github/workflows/greetings.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-name: Greetings
-
-on:
- issues:
- types: assigned
-
-jobs:
- greeting:
- runs-on: ubuntu-latest
- permissions:
- issues: write
- pull-requests: write
- steps:
- - uses: actions/first-interaction@v1
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- issue-message: "As a general advice for newcomers: check out https://github.com/JabRef/jabref/blob/main/CONTRIBUTING.md for a start. Also, https://devdocs.jabref.org/getting-into-the-code/guidelines-for-setting-up-a-local-workspace is worth having a look at. Feel free to ask if you have any questions here on GitHub or also at JabRef's [Gitter](https://gitter.im/JabRef/jabref) chat.
-
-Try to open a (draft) pull request early on, so that people can see you are working on the issue and so that they can see the direction the pull request is heading towards. This way, you will likely receive valuable feedback."
diff --git a/.github/workflows/tests-fetchers.yml b/.github/workflows/tests-fetchers.yml
index 8bf681fb7cc..66148b73038 100644
--- a/.github/workflows/tests-fetchers.yml
+++ b/.github/workflows/tests-fetchers.yml
@@ -11,10 +11,8 @@ on:
- 'build.gradle'
pull_request:
paths:
- - 'src/main/java/org/jabref/logic/**'
- - 'src/test/java/org/jabref/logic/**'
- - 'src/main/java/org/jabref/model/**'
- - 'src/test/java/org/jabref/model/**'
+ - 'src/main/java/org/jabref/logic/importer/fetcher/**'
+ - 'src/test/java/org/jabref/logic/importer/fetcher/**'
- '.github/workflows/tests-fetchers.yml'
- 'build.gradle'
schedule:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a6fe286f545..f9c659eb0a5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -46,6 +46,13 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve
- We fixed an issue where a message about changed metadata would occur on saving although nothing changed. [#9159](https://github.com/JabRef/jabref/issues/9159)
- When adding or editing a subgroup it is placed w.r.t. to alphabetical ordering rather than at the end. [koppor#577](https://github.com/koppor/jabref/issues/577)
- We modified the Directory of Open Access Books (DOAB) fetcher so that it will now also fetch the ISBN when possible. [#8708](https://github.com/JabRef/jabref/issues/8708)
+- Groups context menu now shows appropriate options depending on number of subgroups. [koppor#579](https://github.com/koppor/jabref/issues/579)
+- We changed the color of found text from red to high-contrast colors (background: yellow; font color: purple). [koppor#552](https://github.com/koppor/jabref/issues/552)
+- We modified the "Delete file" dialog and add the full file path to the dialog text. The file path in the title was changed to file name only. [koppor#534](https://github.com/koppor/jabref/issues/534)
+- Download from URL now automatically fills with URL from clipboard. [koppor#535](https://github.com/koppor/jabref/issues/535)
+- We added HTML and Markdown files to Find Unlinked Files and removed BibTeX.[koppor#547](https://github.com/koppor/jabref/issues/547)
+- We changed the messages after importing unlinked local files to past tense. [koppor#548](https://github.com/koppor/jabref/issues/548)
+- We fixed an issue where the wrong icon for a successful import of a bib entry was shown [#9308](https://github.com/JabRef/jabref/pull/9308)
### Fixed
@@ -59,6 +66,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve
- We fixed a performance regression when opening large libraries [#9041](https://github.com/JabRef/jabref/issues/9041)
- We fixed a bug where spaces are trimmed when highlighting differences in the Entries merge dialog. [koppor#371](https://github.com/koppor/jabref/issues/371)
- We fixed some visual glitches with the linked files editor field in the entry editor and increased its height. [#8823](https://github.com/JabRef/jabref/issues/8823)
+- We fixed some visual inconsistencies (round corners of highlighted buttons). [#8806](https://github.com/JabRef/jabref/issues/8806)
- We fixed several bugs regarding the manual and the autosave of library files that sometimes lead to exceptions or data loss. [#9067](https://github.com/JabRef/jabref/pull/9067), [#8448](https://github.com/JabRef/jabref/issues/8484), [#8746](https://github.com/JabRef/jabref/issues/8746), [#6684](https://github.com/JabRef/jabref/issues/6684), [#6644](https://github.com/JabRef/jabref/issues/6644), [#6102](https://github.com/JabRef/jabref/issues/6102), [#6002](https://github.com/JabRef/jabref/issues/6000)
- We fixed an issue where applied save actions on saving the library file would lead to the dialog "The library has been modified by another program" popping up [#4877](https://github.com/JabRef/jabref/issues/4877)
- We fixed issues with save actions not correctly loaded when opening the library. [#9122](https://github.com/JabRef/jabref/pull/9122)
@@ -73,6 +81,9 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve
- We fixed an issue where hitting enter on the search field within the preferences dialog closed the dialog. [koppor#630](https://github.com/koppor/jabref/issues/630)
- We fixed a typo within a connection error message. [koppor#625](https://github.com/koppor/jabref/issues/625)
- We fixed an issue where the 'close dialog' key binding was not closing the Preferences dialog. [#8888](https://github.com/jabref/jabref/issues/8888)
+- We fixed an issue where journal abbreviations would not abbreviate journal titles with escaped ampersands (\\&). [#8948](https://github.com/JabRef/jabref/issues/8948)
+- We fixed an issue where font size preferences did not apply correctly to preference dialog window and the menu bar. [#8386](https://github.com/JabRef/jabref/issues/8386) and [#9279](https://github.com/JabRef/jabref/issues/9279)
+- We fixed an issue when using an unsafe character in the citation key, the auto-linking feature fails to link files. [#9267](https://github.com/JabRef/jabref/issues/9267)
### Removed
diff --git a/build.gradle b/build.gradle
index f9dcfee846c..3980eac1247 100644
--- a/build.gradle
+++ b/build.gradle
@@ -115,11 +115,11 @@ dependencies {
implementation 'org.apache.pdfbox:fontbox:3.0.0-RC1'
implementation 'org.apache.pdfbox:xmpbox:3.0.0-RC1'
- implementation 'org.apache.lucene:lucene-core:9.4.0'
- implementation 'org.apache.lucene:lucene-queryparser:9.4.0'
- implementation 'org.apache.lucene:lucene-queries:9.4.0'
- implementation 'org.apache.lucene:lucene-analysis-common:9.4.0'
- implementation 'org.apache.lucene:lucene-highlighter:9.4.0'
+ implementation 'org.apache.lucene:lucene-core:9.4.1'
+ implementation 'org.apache.lucene:lucene-queryparser:9.4.1'
+ implementation 'org.apache.lucene:lucene-queries:9.4.1'
+ implementation 'org.apache.lucene:lucene-analysis-common:9.4.1'
+ implementation 'org.apache.lucene:lucene-highlighter:9.4.1'
implementation group: 'org.apache.commons', name: 'commons-csv', version: '1.9.0'
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
@@ -176,7 +176,7 @@ dependencies {
implementation 'org.controlsfx:controlsfx:11.1.2'
implementation 'org.jsoup:jsoup:1.15.3'
- implementation 'com.konghq:unirest-java:3.13.11'
+ implementation 'com.konghq:unirest-java:3.13.12'
implementation 'org.slf4j:slf4j-api:2.0.3'
implementation "org.tinylog:tinylog-api:2.5.0"
@@ -208,7 +208,7 @@ dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1'
testImplementation 'org.junit.platform:junit-platform-launcher:1.9.1'
- testImplementation 'org.mockito:mockito-core:4.8.0'
+ testImplementation 'org.mockito:mockito-core:4.8.1'
testImplementation 'org.xmlunit:xmlunit-core:2.9.0'
testImplementation 'org.xmlunit:xmlunit-matchers:2.9.0'
testRuntimeOnly 'com.tngtech.archunit:archunit-junit5-engine:1.0.0'
@@ -217,7 +217,7 @@ dependencies {
testImplementation "org.testfx:testfx-junit5:4.0.16-alpha"
testImplementation "org.hamcrest:hamcrest-library:2.2"
- checkstyle 'com.puppycrawl.tools:checkstyle:10.3.4'
+ checkstyle 'com.puppycrawl.tools:checkstyle:10.4'
// xjc needs the runtime as well for the ant task, otherwise it fails
xjc group: 'org.glassfish.jaxb', name: 'jaxb-xjc', version: '3.0.2'
xjc group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '3.0.2'
diff --git a/buildres/csl/csl-styles/Gemfile.lock b/buildres/csl/csl-styles/Gemfile.lock
index dde35577b7f..fcd98426ce1 100644
--- a/buildres/csl/csl-styles/Gemfile.lock
+++ b/buildres/csl/csl-styles/Gemfile.lock
@@ -65,10 +65,10 @@ GEM
mini_portile2 (2.8.0)
multipart-post (2.1.1)
namae (1.1.1)
- nokogiri (1.13.6)
+ nokogiri (1.13.9)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
- nokogiri (1.13.6-x64-mingw32)
+ nokogiri (1.13.9-x64-mingw32)
racc (~> 1.4)
octokit (4.21.0)
faraday (>= 0.9)
diff --git a/buildres/csl/csl-styles/arcadia-science.csl b/buildres/csl/csl-styles/arcadia-science.csl
new file mode 100644
index 00000000000..74c7dc8d89a
--- /dev/null
+++ b/buildres/csl/csl-styles/arcadia-science.csl
@@ -0,0 +1,139 @@
+
+
diff --git a/buildres/csl/csl-styles/dependent/veterinary-record-open.csl b/buildres/csl/csl-styles/dependent/veterinary-record-open.csl
deleted file mode 100644
index 7976ce1ce56..00000000000
--- a/buildres/csl/csl-styles/dependent/veterinary-record-open.csl
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
diff --git a/buildres/csl/csl-styles/harvard-university-of-abertay-dundee.csl b/buildres/csl/csl-styles/harvard-university-of-abertay-dundee.csl
index 0e21a947c7d..0a793b00138 100644
--- a/buildres/csl/csl-styles/harvard-university-of-abertay-dundee.csl
+++ b/buildres/csl/csl-styles/harvard-university-of-abertay-dundee.csl
@@ -13,10 +13,13 @@
Sebastian Karcher
+
+ Naman Merchant
+
The Abertay version of the Harvard author-date style
- 2012-11-16T18:17:12+00:00
+ 2022-09-11T21:02:45+00:00
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License
@@ -47,6 +50,7 @@
+
@@ -56,6 +60,7 @@
+
@@ -64,14 +69,7 @@
-
-
-
-
-
-
-
-
+
@@ -145,22 +143,16 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -171,9 +163,11 @@
-
+
-
+
+
+
diff --git a/buildres/csl/csl-styles/iawa-journal.csl b/buildres/csl/csl-styles/iawa-journal.csl
index ffae3813e49..da0b9ed086d 100644
--- a/buildres/csl/csl-styles/iawa-journal.csl
+++ b/buildres/csl/csl-styles/iawa-journal.csl
@@ -9,6 +9,9 @@
Patrick O'Brien
+
+ Ronald Visser
+
0928-1541
@@ -131,7 +134,7 @@
-
+
diff --git a/buildres/csl/csl-styles/ieee.csl b/buildres/csl/csl-styles/ieee.csl
index bff5b9197ed..8238e0aac1d 100644
--- a/buildres/csl/csl-styles/ieee.csl
+++ b/buildres/csl/csl-styles/ieee.csl
@@ -45,7 +45,7 @@
IEEE style as per the 2021 guidelines, V 01.29.2021.
- 2021-05-07T00:52:46+10:00
+ 2022-10-11T00:52:46+10:00
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License
@@ -177,7 +177,7 @@
-
+
diff --git a/buildres/csl/csl-styles/journal-of-medical-internet-research.csl b/buildres/csl/csl-styles/journal-of-medical-internet-research.csl
index b75708a423d..b597dcd425a 100644
--- a/buildres/csl/csl-styles/journal-of-medical-internet-research.csl
+++ b/buildres/csl/csl-styles/journal-of-medical-internet-research.csl
@@ -20,11 +20,15 @@
Patrick O'Brien
+
+ Andrei Bosco Bezerra Torres
+ andrei.torres@ontariotechu.net
+
1439-4456
1438-8871
- 2017-06-02T10:20:48+00:00
+ 2022-09-08T13:25:00+00:00
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License
@@ -74,16 +78,19 @@
-
+
-
-
-
+
+
+
+
+
+
-
+
@@ -96,29 +103,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
@@ -143,11 +141,6 @@
-
-
-
-
-
@@ -179,7 +172,6 @@
-
@@ -204,7 +196,6 @@
-
diff --git a/buildres/csl/csl-styles/physiotherapy-theory-and-practice.csl b/buildres/csl/csl-styles/physiotherapy-theory-and-practice.csl
index b10b7c0d7c6..5ff20e0edcf 100644
--- a/buildres/csl/csl-styles/physiotherapy-theory-and-practice.csl
+++ b/buildres/csl/csl-styles/physiotherapy-theory-and-practice.csl
@@ -14,7 +14,7 @@
0959-3985
1532-5040
- 2022-01-11T08:37:50+00:00
+ 2022-09-05T16:08:42+00:00
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License
@@ -63,8 +63,8 @@
-
+
@@ -73,7 +73,7 @@
-
+
@@ -81,9 +81,11 @@
-
-
-
+
+
+
+
+
diff --git a/buildres/csl/csl-styles/veterinary-record-open.csl b/buildres/csl/csl-styles/veterinary-record-open.csl
new file mode 100644
index 00000000000..322dac9de53
--- /dev/null
+++ b/buildres/csl/csl-styles/veterinary-record-open.csl
@@ -0,0 +1,211 @@
+
+
diff --git a/src/main/java/org/jabref/gui/Base.css b/src/main/java/org/jabref/gui/Base.css
index 9ecf96eea3a..df5ac2adab9 100644
--- a/src/main/java/org/jabref/gui/Base.css
+++ b/src/main/java/org/jabref/gui/Base.css
@@ -339,7 +339,7 @@ TextFlow > .tooltip-text-monospaced {
.combo-box-base:editable > .arrow-button {
-fx-background-color: transparent;
-fx-background-insets: 0;
- -fx-background-radius: 0;
+ -fx-background-radius: 4px;
-fx-text-fill: -fx-text-base-color;
}
diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java
index 9da1e8fd77f..08a03176ec2 100644
--- a/src/main/java/org/jabref/gui/JabRefFrame.java
+++ b/src/main/java/org/jabref/gui/JabRefFrame.java
@@ -659,6 +659,15 @@ public void init() {
Platform.runLater(() -> stateManager.focusOwnerProperty().bind(
EasyBind.map(mainStage.getScene().focusOwnerProperty(), Optional::ofNullable)));
+ EasyBind.subscribe(tabbedPane.getSelectionModel().selectedItemProperty(), selectedTab -> {
+ if (selectedTab instanceof LibraryTab libraryTab) {
+ stateManager.setActiveDatabase(libraryTab.getBibDatabaseContext());
+ } else if (selectedTab == null) {
+ // All databases are closed
+ stateManager.setActiveDatabase(null);
+ }
+ });
+
/*
* The following state listener makes sure focus is registered with the
* correct database when the user switches tabs. Without this,
diff --git a/src/main/java/org/jabref/gui/LibraryTab.java b/src/main/java/org/jabref/gui/LibraryTab.java
index 607bcb474f7..8357479185d 100644
--- a/src/main/java/org/jabref/gui/LibraryTab.java
+++ b/src/main/java/org/jabref/gui/LibraryTab.java
@@ -226,14 +226,6 @@ public void onDatabaseLoadingSucceed(ParserResult result) {
LOGGER.error("Cannot access lucene index", e);
}
}
-
- // a temporary workaround to update groups pane
- stateManager.activeDatabaseProperty().bind(
- EasyBind.map(frame.getTabbedPane().getSelectionModel().selectedItemProperty(),
- selectedTab -> Optional.ofNullable(selectedTab)
- .filter(tab -> tab instanceof LibraryTab)
- .map(tab -> (LibraryTab) tab)
- .map(LibraryTab::getBibDatabaseContext)));
}
public void onDatabaseLoadingFailed(Exception ex) {
@@ -247,6 +239,11 @@ public void feedData(BibDatabaseContext bibDatabaseContext) {
cleanUp();
this.bibDatabaseContext = Objects.requireNonNull(bibDatabaseContext);
+ // When you open an existing library, a library tab with a loading animation is added immediately.
+ // At that point, the library tab is given a temporary bibDatabaseContext with no entries.
+ // This line is necessary because, while there is already a binding that updates the active database when a new tab is added,
+ // it doesn't handle the case when a library is loaded asynchronously.
+ stateManager.setActiveDatabase(bibDatabaseContext);
bibDatabaseContext.getDatabase().registerListener(this);
bibDatabaseContext.getMetaData().registerListener(this);
diff --git a/src/main/java/org/jabref/gui/StateManager.java b/src/main/java/org/jabref/gui/StateManager.java
index 9a27649eb9c..9cab5af0169 100644
--- a/src/main/java/org/jabref/gui/StateManager.java
+++ b/src/main/java/org/jabref/gui/StateManager.java
@@ -34,6 +34,8 @@
import com.tobiasdiez.easybind.EasyBind;
import com.tobiasdiez.easybind.EasyBinding;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* This class manages the GUI-state of JabRef, including:
@@ -49,6 +51,7 @@
*/
public class StateManager {
+ private static final Logger LOGGER = LoggerFactory.getLogger(StateManager.class);
private final CustomLocalDragboard localDragboard = new CustomLocalDragboard();
private final ObservableList openDatabases = FXCollections.observableArrayList();
private final OptionalObjectProperty activeDatabase = OptionalObjectProperty.empty();
@@ -129,6 +132,15 @@ public Optional getActiveDatabase() {
return activeDatabase.get();
}
+ public void setActiveDatabase(BibDatabaseContext database) {
+ if (database == null) {
+ LOGGER.info("No open database detected");
+ activeDatabaseProperty().set(Optional.empty());
+ } else {
+ activeDatabaseProperty().set(Optional.of(database));
+ }
+ }
+
public List getEntriesInCurrentDatabase() {
return OptionalUtil.flatMap(activeDatabase.get(), BibDatabaseContext::getEntries)
.collect(Collectors.toList());
diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.css b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.css
index e53c688a081..4b2befd4dd3 100644
--- a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.css
+++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.css
@@ -122,7 +122,11 @@
}
#bibtexSourceCodeArea .search {
- -fx-fill: red;
+ -rtfx-background-color: #ffff00;
+ -fx-fill: #7800A9 ;
+ -fx-font-size: 1.2em;
+ -fx-font-weight: bolder;
+
}
#citationsPane {
diff --git a/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java b/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java
index 873ae09cb59..38fd37299af 100644
--- a/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java
+++ b/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java
@@ -119,10 +119,10 @@ protected List call() {
if (!pdfEntriesInFile.isEmpty()) {
entriesToAdd.addAll(pdfEntriesInFile);
- addResultToList(file, true, Localization.lang("Importing using extracted PDF data"));
+ addResultToList(file, true, Localization.lang("File was successfully imported as a new entry"));
} else {
entriesToAdd.add(createEmptyEntryWithLink(file));
- addResultToList(file, false, Localization.lang("No metadata found. Creating empty entry with file link"));
+ addResultToList(file, false, Localization.lang("No metadata was found. An empty entry was created with file link"));
}
} else if (FileUtil.isBibFile(file)) {
var bibtexParserResult = contentImporter.importFromBibFile(file, fileUpdateMonitor);
@@ -131,10 +131,10 @@ protected List call() {
}
entriesToAdd.addAll(bibtexParserResult.getDatabaseContext().getEntries());
- addResultToList(file, false, Localization.lang("Importing bib entry"));
+ addResultToList(file, true, Localization.lang("Bib entry was successfully imported"));
} else {
entriesToAdd.add(createEmptyEntryWithLink(file));
- addResultToList(file, false, Localization.lang("No BibTeX data found. Creating empty entry with file link"));
+ addResultToList(file, false, Localization.lang("No BibTeX data was found. An empty entry was created with file link"));
}
} catch (IOException ex) {
LOGGER.error("Error importing", ex);
diff --git a/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogViewModel.java b/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogViewModel.java
index 2129e473c4a..92fc8904b5e 100644
--- a/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogViewModel.java
+++ b/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogViewModel.java
@@ -102,7 +102,8 @@ public UnlinkedFilesDialogViewModel(DialogService dialogService,
this.fileFilterList = FXCollections.observableArrayList(
new FileExtensionViewModel(StandardFileType.ANY_FILE, preferences.getFilePreferences()),
- new FileExtensionViewModel(StandardFileType.BIBTEX_DB, preferences.getFilePreferences()),
+ new FileExtensionViewModel(StandardFileType.HTML, preferences.getFilePreferences()),
+ new FileExtensionViewModel(StandardFileType.MARKDOWN, preferences.getFilePreferences()),
new FileExtensionViewModel(StandardFileType.PDF, preferences.getFilePreferences()));
this.dateFilterList = FXCollections.observableArrayList(DateRange.values());
diff --git a/src/main/java/org/jabref/gui/externalfiletype/StandardExternalFileType.java b/src/main/java/org/jabref/gui/externalfiletype/StandardExternalFileType.java
index 92718e09a7a..fc12e9670e8 100644
--- a/src/main/java/org/jabref/gui/externalfiletype/StandardExternalFileType.java
+++ b/src/main/java/org/jabref/gui/externalfiletype/StandardExternalFileType.java
@@ -28,8 +28,8 @@ public enum StandardExternalFileType implements ExternalFileType {
TIFF(Localization.lang("%0 image", "TIFF"), "tiff", "image/tiff", "gimp", "picture", IconTheme.JabRefIcons.PICTURE),
URL("URL", "html", "text/html", "firefox", "www", IconTheme.JabRefIcons.WWW),
MHT("MHT", "mht", "multipart/related", "firefox", "www", IconTheme.JabRefIcons.WWW),
- ePUB("ePUB", "epub", "application/epub+zip", "firefox", "www", IconTheme.JabRefIcons.WWW);
-
+ ePUB("ePUB", "epub", "application/epub+zip", "firefox", "www", IconTheme.JabRefIcons.WWW),
+ MARKDOWN("Markdown", "md", "text/markdown", "emacs", "emacs", IconTheme.JabRefIcons.FILE_TEXT);
private final String name;
private final String extension;
private final String mimeType;
diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java
index 1b0c9f6da8f..e02143f4554 100644
--- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java
+++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java
@@ -392,8 +392,8 @@ public boolean delete() {
ButtonType removeFromEntry = new ButtonType(Localization.lang("Remove from entry"), ButtonData.YES);
ButtonType deleteFromEntry = new ButtonType(Localization.lang("Delete from disk"));
Optional buttonType = dialogService.showCustomButtonDialogAndWait(AlertType.INFORMATION,
- Localization.lang("Delete '%0'", file.get().toString()),
- Localization.lang("Delete the selected file permanently from disk, or just remove the file from the entry? Pressing Delete will delete the file permanently from disk."),
+ Localization.lang("Delete '%0'", file.get().getFileName().toString()),
+ Localization.lang("Delete '%0' permanently from disk, or just remove the file from the entry? Pressing Delete will delete the file permanently from disk.", file.get().toString()),
removeFromEntry, deleteFromEntry, ButtonType.CANCEL);
if (buttonType.isPresent()) {
diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditorViewModel.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditorViewModel.java
index 44a3f15d538..94e292babd6 100644
--- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditorViewModel.java
+++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditorViewModel.java
@@ -16,6 +16,7 @@
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
+import org.jabref.gui.ClipBoardManager;
import org.jabref.gui.DialogService;
import org.jabref.gui.autocompleter.SuggestionProvider;
import org.jabref.gui.externalfiles.AutoSetFileLinksUtil;
@@ -214,8 +215,15 @@ public void fetchFulltext() {
}
public void addFromURL() {
- Optional urlText = dialogService.showInputDialogAndWait(
- Localization.lang("Download file"), Localization.lang("Enter URL to download"));
+ String clipText = ClipBoardManager.getContents();
+ Optional urlText;
+ if (clipText.startsWith("http://") || clipText.startsWith("https://") || clipText.startsWith("ftp://")) {
+ urlText = dialogService.showInputDialogWithDefaultAndWait(
+ Localization.lang("Download file"), Localization.lang("Enter URL to download"), clipText);
+ } else {
+ urlText = dialogService.showInputDialogAndWait(
+ Localization.lang("Download file"), Localization.lang("Enter URL to download"));
+ }
if (urlText.isPresent()) {
try {
URL url = new URL(urlText.get());
diff --git a/src/main/java/org/jabref/gui/groups/GroupTreeView.java b/src/main/java/org/jabref/gui/groups/GroupTreeView.java
index fd3ab5c7614..53495ff6bda 100644
--- a/src/main/java/org/jabref/gui/groups/GroupTreeView.java
+++ b/src/main/java/org/jabref/gui/groups/GroupTreeView.java
@@ -403,7 +403,11 @@ private Optional> getTreeItemByValue(TreeItem viewModel.removeGroupNoSubgroups(group));
MenuItem editGroup = new MenuItem(Localization.lang("Edit group"));
editGroup.setOnAction(event -> {
@@ -425,11 +429,9 @@ private ContextMenu createContextMenuForGroup(GroupNodeViewModel group) {
});
MenuItem removeSubgroups = new MenuItem(Localization.lang("Remove subgroups"));
- removeSubgroups.setOnAction(event -> {
- viewModel.removeSubgroups(group);
- });
+ removeSubgroups.setOnAction(event -> viewModel.removeSubgroups(group));
- MenuItem sortSubgroups = new MenuItem(Localization.lang("Sort subgroups"));
+ MenuItem sortSubgroups = new MenuItem(Localization.lang("Sort subgroups A-Z"));
sortSubgroups.setOnAction(event -> viewModel.sortAlphabeticallyRecursive(group.getGroupNode()));
MenuItem addEntries = new MenuItem(Localization.lang("Add selected entries to this group"));
@@ -438,17 +440,28 @@ private ContextMenu createContextMenuForGroup(GroupNodeViewModel group) {
MenuItem removeEntries = new MenuItem(Localization.lang("Remove selected entries from this group"));
removeEntries.setOnAction(event -> viewModel.removeSelectedEntries(group));
- menu.getItems().add(editGroup);
- removeGroup.getItems().add(removeGroupKeepSubgroups);
- removeGroup.getItems().add(removeGroupAndSubgroups);
- menu.getItems().add(removeGroup);
- menu.getItems().add(new SeparatorMenuItem());
- menu.getItems().add(addSubgroup);
- menu.getItems().add(removeSubgroups);
- menu.getItems().add(sortSubgroups);
- menu.getItems().add(new SeparatorMenuItem());
- menu.getItems().add(addEntries);
- menu.getItems().add(removeEntries);
+ menu.setOnShown(event -> {
+ menu.getItems().clear();
+ menu.getItems().add(editGroup);
+ if (group.getChildren().size() > 0) {
+ menu.getItems().add(removeGroupWithSubgroups);
+ menu.getItems().add(new SeparatorMenuItem());
+ menu.getItems().add(addSubgroup);
+ menu.getItems().add(removeSubgroups);
+ menu.getItems().add(sortSubgroups);
+ } else {
+ menu.getItems().add(removeGroupNoSubgroups);
+ menu.getItems().add(new SeparatorMenuItem());
+ menu.getItems().add(addSubgroup);
+ }
+ menu.getItems().add(new SeparatorMenuItem());
+ menu.getItems().add(addEntries);
+ menu.getItems().add(removeEntries);
+ });
+
+ menu.getItems().add(new Menu());
+ removeGroupWithSubgroups.getItems().add(removeGroupKeepSubgroups);
+ removeGroupWithSubgroups.getItems().add(removeGroupAndSubgroups);
// TODO: Disable some actions under certain conditions
// if (group.canBeEdited()) {
diff --git a/src/main/java/org/jabref/gui/groups/GroupTreeViewModel.java b/src/main/java/org/jabref/gui/groups/GroupTreeViewModel.java
index 8cf74178629..08a9465b2cf 100644
--- a/src/main/java/org/jabref/gui/groups/GroupTreeViewModel.java
+++ b/src/main/java/org/jabref/gui/groups/GroupTreeViewModel.java
@@ -471,6 +471,43 @@ public void removeGroupAndSubgroups(GroupNodeViewModel group) {
}
}
+ /**
+ * Removes the specified group (after asking for confirmation).
+ */
+ public void removeGroupNoSubgroups(GroupNodeViewModel group) {
+ boolean confirmed;
+ if (selectedGroups.size() <= 1) {
+ confirmed = dialogService.showConfirmationDialogAndWait(
+ Localization.lang("Remove group"),
+ Localization.lang("Remove group \"%0\"?", group.getDisplayName()),
+ Localization.lang("Remove"));
+ } else {
+ confirmed = dialogService.showConfirmationDialogAndWait(
+ Localization.lang("Remove groups and subgroups"),
+ Localization.lang("Remove all selected groups and their subgroups?"),
+ Localization.lang("Remove all"));
+ }
+
+ if (confirmed) {
+ // TODO: Add undo
+ // final UndoableAddOrRemoveGroup undo = new UndoableAddOrRemoveGroup(groupsRoot, node, UndoableAddOrRemoveGroup.REMOVE_NODE_WITHOUT_CHILDREN);
+ // panel.getUndoManager().addEdit(undo);
+
+ ArrayList selectedGroupNodes = new ArrayList<>(selectedGroups);
+ selectedGroupNodes.forEach(eachNode -> {
+ removeGroupsAndSubGroupsFromEntries(eachNode);
+ eachNode.getGroupNode().removeFromParent();
+ });
+
+ if (selectedGroupNodes.size() > 1) {
+ dialogService.notify(Localization.lang("Removed all selected groups."));
+ } else {
+ dialogService.notify(Localization.lang("Removed group \"%0\".", group.getDisplayName()));
+ }
+ writeGroupChangesToMetaData();
+ }
+ }
+
void removeGroupsAndSubGroupsFromEntries(GroupNodeViewModel group) {
for (GroupNodeViewModel child : group.getChildren()) {
removeGroupsAndSubGroupsFromEntries(child);
diff --git a/src/main/java/org/jabref/gui/importer/NewEntryAction.java b/src/main/java/org/jabref/gui/importer/NewEntryAction.java
index ef085920713..fcb25a991bc 100644
--- a/src/main/java/org/jabref/gui/importer/NewEntryAction.java
+++ b/src/main/java/org/jabref/gui/importer/NewEntryAction.java
@@ -24,11 +24,14 @@ public class NewEntryAction extends SimpleCommand {
private static final Logger LOGGER = LoggerFactory.getLogger(NewEntryAction.class);
private final JabRefFrame jabRefFrame;
+
/**
* The type of the entry to create.
*/
private Optional type;
+
private final DialogService dialogService;
+
private final PreferencesService preferences;
public NewEntryAction(JabRefFrame jabRefFrame, DialogService dialogService, PreferencesService preferences, StateManager stateManager) {
diff --git a/src/main/java/org/jabref/gui/theme/ThemeManager.java b/src/main/java/org/jabref/gui/theme/ThemeManager.java
index de6a9f197fa..b6f42071d76 100644
--- a/src/main/java/org/jabref/gui/theme/ThemeManager.java
+++ b/src/main/java/org/jabref/gui/theme/ThemeManager.java
@@ -213,7 +213,7 @@ public void updateFontStyle(Scene scene) {
if (appearancePreferences.shouldOverrideDefaultFontSize()) {
scene.getRoot().setStyle("-fx-font-size: " + appearancePreferences.getMainFontSize() + "pt;");
} else {
- scene.getRoot().setStyle("");
+ scene.getRoot().setStyle("-fx-font-size: " + appearancePreferences.getDefaultFontSize() + "pt;");
}
}
diff --git a/src/main/java/org/jabref/logic/journals/JournalAbbreviationRepository.java b/src/main/java/org/jabref/logic/journals/JournalAbbreviationRepository.java
index 523e1323be1..825bd706e27 100644
--- a/src/main/java/org/jabref/logic/journals/JournalAbbreviationRepository.java
+++ b/src/main/java/org/jabref/logic/journals/JournalAbbreviationRepository.java
@@ -7,6 +7,7 @@
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
+import java.util.regex.Matcher;
import java.util.stream.Collectors;
import org.h2.mvstore.MVMap;
@@ -48,7 +49,7 @@ private static boolean isMatchedAbbreviated(String name, Abbreviation abbreviati
* Letters) or its abbreviated form (e.g. Phys. Rev. Lett.).
*/
public boolean isKnownName(String journalName) {
- String journal = journalName.trim();
+ String journal = journalName.trim().replaceAll(Matcher.quoteReplacement("\\&"), "&");
boolean isKnown = customAbbreviations.stream().anyMatch(abbreviation -> isMatched(journal, abbreviation));
if (isKnown) {
@@ -75,7 +76,7 @@ public boolean isAbbreviatedName(String journalName) {
* @param input The journal name (either abbreviated or full name).
*/
public Optional get(String input) {
- String journal = input.trim();
+ String journal = input.trim().replaceAll(Matcher.quoteReplacement("\\&"), "&");
Optional customAbbreviation = customAbbreviations.stream()
.filter(abbreviation -> isMatched(journal, abbreviation))
diff --git a/src/main/java/org/jabref/logic/util/StandardFileType.java b/src/main/java/org/jabref/logic/util/StandardFileType.java
index aadae024051..0b7f73e5a09 100644
--- a/src/main/java/org/jabref/logic/util/StandardFileType.java
+++ b/src/main/java/org/jabref/logic/util/StandardFileType.java
@@ -45,7 +45,9 @@ public enum StandardFileType implements FileType {
CFF("CFF", "cff"),
ANY_FILE("Any", "*"),
CER("SSL Certificate", "cer"),
- CITAVI("Citavi", "ctv6bak", "ctv5bak");
+ CITAVI("Citavi", "ctv6bak", "ctv5bak"),
+ MARKDOWN("Markdown", "md");
+
diff --git a/src/main/java/org/jabref/logic/util/io/CitationKeyBasedFileFinder.java b/src/main/java/org/jabref/logic/util/io/CitationKeyBasedFileFinder.java
index 27f71f6b530..81746101a40 100644
--- a/src/main/java/org/jabref/logic/util/io/CitationKeyBasedFileFinder.java
+++ b/src/main/java/org/jabref/logic/util/io/CitationKeyBasedFileFinder.java
@@ -66,7 +66,7 @@ public List findAssociatedFiles(BibEntry entry, List directories, Li
}
private boolean matches(String filename, String citeKey) {
- boolean startsWithKey = filename.startsWith(citeKey);
+ boolean startsWithKey = filename.startsWith(FileNameCleaner.cleanFileName(citeKey));
if (startsWithKey) {
// The file name starts with the key, that's already a good start
// However, we do not want to match "JabRefa" for "JabRef" since this is probably a file belonging to another entry published in the same time / same name
diff --git a/src/main/java/org/jabref/logic/util/io/FileUtil.java b/src/main/java/org/jabref/logic/util/io/FileUtil.java
index 7d63235c647..2b02869a59d 100644
--- a/src/main/java/org/jabref/logic/util/io/FileUtil.java
+++ b/src/main/java/org/jabref/logic/util/io/FileUtil.java
@@ -380,10 +380,10 @@ public static boolean isBibFile(Path file) {
}
/**
- * Test if the file is a bib file by simply checking the extension to be ".bib"
+ * Test if the file is a pdf file by simply checking the extension to be ".pdf"
*
* @param file The file to check
- * @return True if file extension is ".bib", false otherwise
+ * @return True if file extension is ".pdf", false otherwise
*/
public static boolean isPDFFile(Path file) {
return getFileExtension(file).filter("pdf"::equals).isPresent();
diff --git a/src/main/java/org/jabref/preferences/AppearancePreferences.java b/src/main/java/org/jabref/preferences/AppearancePreferences.java
index a4d04bb70b6..f1dc8782c2d 100644
--- a/src/main/java/org/jabref/preferences/AppearancePreferences.java
+++ b/src/main/java/org/jabref/preferences/AppearancePreferences.java
@@ -12,11 +12,13 @@
public class AppearancePreferences {
private final BooleanProperty shouldOverrideDefaultFontSize;
private final IntegerProperty mainFontSize;
+ private final IntegerProperty defaultFontSize;
private final ObjectProperty theme;
- public AppearancePreferences(boolean shouldOverrideDefaultFontSize, int mainFontSize, Theme theme) {
+ public AppearancePreferences(boolean shouldOverrideDefaultFontSize, int mainFontSize, int defaultFontSize, Theme theme) {
this.shouldOverrideDefaultFontSize = new SimpleBooleanProperty(shouldOverrideDefaultFontSize);
this.mainFontSize = new SimpleIntegerProperty(mainFontSize);
+ this.defaultFontSize = new SimpleIntegerProperty(defaultFontSize);
this.theme = new SimpleObjectProperty<>(theme);
}
@@ -36,6 +38,10 @@ public int getMainFontSize() {
return mainFontSize.get();
}
+ public int getDefaultFontSize() {
+ return defaultFontSize.get();
+ }
+
public void setMainFontSize(int mainFontSize) {
this.mainFontSize.set(mainFontSize);
}
diff --git a/src/main/java/org/jabref/preferences/JabRefPreferences.java b/src/main/java/org/jabref/preferences/JabRefPreferences.java
index f4ddffdb5bf..d3bafb7a661 100644
--- a/src/main/java/org/jabref/preferences/JabRefPreferences.java
+++ b/src/main/java/org/jabref/preferences/JabRefPreferences.java
@@ -2075,6 +2075,7 @@ public AppearancePreferences getAppearancePreferences() {
appearancePreferences = new AppearancePreferences(
getBoolean(OVERRIDE_DEFAULT_FONT_SIZE),
getInt(MAIN_FONT_SIZE),
+ (Integer) defaults.get(MAIN_FONT_SIZE),
new Theme(get(FX_THEME))
);
diff --git a/src/main/resources/csl-styles/ieee.csl b/src/main/resources/csl-styles/ieee.csl
index bff5b9197ed..8238e0aac1d 100644
--- a/src/main/resources/csl-styles/ieee.csl
+++ b/src/main/resources/csl-styles/ieee.csl
@@ -45,7 +45,7 @@
IEEE style as per the 2021 guidelines, V 01.29.2021.
- 2021-05-07T00:52:46+10:00
+ 2022-10-11T00:52:46+10:00
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License
@@ -177,7 +177,7 @@
-
+
diff --git a/src/main/resources/l10n/JabRef_ar.properties b/src/main/resources/l10n/JabRef_ar.properties
index 25474fa1bab..ab8ce21bc4d 100644
--- a/src/main/resources/l10n/JabRef_ar.properties
+++ b/src/main/resources/l10n/JabRef_ar.properties
@@ -1,5 +1,6 @@
+Empty\ entries=مراجع فارغة
@@ -14,27 +15,38 @@
+Abbreviation=اختصار
+Abbreviations=الاختصارات
+About\ JabRef=حول JabRef
+Abstract=الملخص
+Accept=قبول
+Add=إضافة
+Add\ entry\ manually=إنشاء مرجع يدويًا
+All\ entries=جميع المراجع
+and=و
+Application=التطبيق
+Apply=فعّل
@@ -46,14 +58,19 @@
+Available\ export\ formats=صيغ التصدير المتاحة
+Available\ import\ formats=الصيغ المتوفرة
+Browse=تصفح
+by=عن طريق
+Cancel=إلغاء
@@ -72,18 +89,29 @@
+Close\ the\ current\ library=إغلاق المكتبة الحالية
+Close\ window=إغلاق النافذة
+Comments=تعليقات
+Content=المحتوى
+Copied=تم نسخ
+Copy=نسخ
+Copy\ title=نسخ العنوان
+Copy\ citation\ key=نسخ مفتاح الاستشهاد
+Copy\ to\ clipboard=نسخ للحافظة
+Could\ not\ export\ file=تعذر تصدير الملف
+Could\ not\ export\ preferences=تعذر تصدير الإعدادات
@@ -99,14 +127,17 @@
+cut\ entry\ %0=قَص المرجع %0
+Library\ properties=خصائص المكتبة
+Delete\ entry=حذف المرجع
@@ -136,21 +167,30 @@
+empty\ library=مكتبة فارغة
+entry=مرجع
+Entry\ editor=محرر المراجع
+Entry\ table=جدول المراجع
+Export=تصدير
+Exporting=جار التصدير
+Field=الحقل
+field=حقل
+Field\ name=اسم الحقل
@@ -201,6 +241,7 @@
+JabRef\ preferences=إعدادات JabRef
@@ -239,7 +280,9 @@
+Next\ entry=المرجع التالي
+no\ library\ generated=لم يتم توليد المكتبة
@@ -253,6 +296,7 @@
+Open\ library=فتح المكتبة
@@ -279,8 +323,11 @@
+Preferences=الإعدادات
+Preferences\ recorded.=تم تسجيل الإعدادات.
+Previous\ entry=المرجع السابق
@@ -324,9 +371,18 @@
+Save\ library=حفظ المكتبة
+Save\ library\ as...=حفظ المكتبة كـ...
+Saving\ library=جار حفظ المكتبة
+Library\ saved=تم حفظ المكتبة
+Automatically\ save\ the\ library\ to=حفظ المكتبة آليا إلى
+Library\ protection=حماية المكتبة
+Unable\ to\ save\ library=تعذر حفظ المكتبة
+Please\ open\ or\ start\ a\ new\ library\ before\ searching=الرجاء فتح أو إنشاء مكتبة جديدة قبل البحث
+Please\ enter\ a\ field\ name\ to\ search\ for\ a\ keyword.=الرجاء إدخال اسم الحقل للبحث عن كلمة مفتاحية.
@@ -341,7 +397,9 @@
+Show\ optional\ fields=إظهار الحقول الاختيارية
+Show\ required\ fields=إظهار الحقول المطلوبة
@@ -354,6 +412,7 @@
+the\ field\ %0=الحقل %0
@@ -397,12 +456,14 @@
+Rename\ field=إعادة تسمية الحقل
+Optional\ fields\ 2=الحقول الاختيارية 2
@@ -423,6 +484,7 @@
+Enable\ special\ fields=تفعيل الحقول الخاصة
@@ -441,11 +503,18 @@
+Original\ entry=المرجع الأصلي
+Return\ to\ library=العودة إلى المكتبة
+Library\ '%0'\ has\ changed.=المكتبة '%0' تغيرت.
+Close\ library=أغلق المكتبة
+Import\ into\ current\ library=استيراد إلى المكتبة الحالية
+Import\ into\ new\ library=استيراد إلى مكتبة جديدة
+Other\ fields=حقول أخرى
@@ -481,6 +550,7 @@
+Library=المكتبة
@@ -511,19 +581,27 @@
+Next\ library=المكتبة التالية
+Previous\ library=المكتبة السابقة
+Export\ name=تصدير الإسم
+Export\ all\ entries=تصدير جميع المراجع
+New\ library=إنشاء مكتبة جديدة
+The\ library\ has\ been\ modified\ by\ another\ program.=تم تعديل المكتبة بواسطة برنامج آخر.
+Export\ preferences\ to\ a\ file=تصدير الإعدادات إلى ملف
+Import\ preferences\ from\ a\ file=استيراد الإعدادات من ملف
@@ -533,8 +611,10 @@
+Add\ to\ current\ library=إضافة إلى المكتبة الحالية
+Field\ type=نوع الحقل
@@ -585,6 +665,13 @@
+
+Edit\ content=تعديل المحتوى
+Copy\ or\ Move\ content=نسخ أو نقل المحتوى
+Copy\ content=نسخ المحتوى
+Move\ content=نقل المحتوى
+Swap\ content=مبادلة المحتوى
+Copy\ or\ move\ the\ content\ of\ one\ field\ to\ another=نسخ أو نقل محتوى حقل إلى آخر
diff --git a/src/main/resources/l10n/JabRef_da.properties b/src/main/resources/l10n/JabRef_da.properties
index 2ba8f8b784f..7093588da0c 100644
--- a/src/main/resources/l10n/JabRef_da.properties
+++ b/src/main/resources/l10n/JabRef_da.properties
@@ -564,6 +564,7 @@ Removed\ group\ "%0"\ and\ its\ subgroups.=Fjernede gruppen "%0" og dens undergr
+
Remove\ link=Slet link
diff --git a/src/main/resources/l10n/JabRef_de.properties b/src/main/resources/l10n/JabRef_de.properties
index 12c54f760e3..bdfa809f047 100644
--- a/src/main/resources/l10n/JabRef_de.properties
+++ b/src/main/resources/l10n/JabRef_de.properties
@@ -62,6 +62,7 @@ Add\ subgroup=Untergruppe hinzufügen
Added\ group\ "%0".=Gruppe "%0" hinzugefügt.
+Added\ string\:\ '%0'=Zeichenkette hinzugefügt\: '%0'
Added\ string=String hinzugefügt
All\ entries=Alle Einträge
@@ -199,7 +200,9 @@ Create\ custom\ fields\ for\ each\ BibTeX\ entry=Erstellen Sie benutzerdefiniert
crossreferenced\ entries\ included=Inklusive querverwiesenen Einträgen
+Current\ content\:\ %0=Aktueller Inhalt\: %0
+Current\ value\:\ %0=Aktueller Wert\: %0
Custom\ entry\ types=Benutzerdefinierte Eintragstypen
@@ -326,6 +329,7 @@ Export\ to\ text\ file.=In Text-Datei exportieren.
Exporting=Exportiere
Extension=Erweiterung
+External\ Changes\ Resolver=Externer Änderungsauflöser
External\ file\ links=Links zu externen Dateien
@@ -484,6 +488,8 @@ Keyword=Stichwort
Keywords=Schlüsselwörter
Label=Name
+Label\:\ %0=Bezeichnung %0
+Content\:\ %0=Inhalt\: %0
Language=Sprache
Last\ modified=zuletzt geändert
@@ -514,6 +520,7 @@ Modified\ group\ "%0".=Gruppe "%0" geändert.
Modified\ groups=Geänderte Gruppen
Modified\ string=Veränderter String
+Modified\ string\:\ '%0' =String geändert\: '%0'
Modify=Bearbeiten
@@ -700,13 +707,18 @@ Remove\ all\ selected\ groups\ and\ their\ subgroups?=Alle ausgewählten Gruppen
Removed\ all\ selected\ groups\ and\ their\ subgroups.=Alle ausgewählten Gruppen und ihre Untergruppen entfernt.
+Remove\ group\ "%0"?=Gruppe "%0" entfernen?
+
Remove\ link=Link löschen
Remove\ string\ %0=Entferne String %0
Removed\ group\ "%0".=Gruppe "%0" gelöscht.
+Deleted\ string=String gelöscht
+Deleted\ string\:\ '%0'=String gelöscht\: '%0'
+Renamed\ string\:\ '%0'=String umbenannt\: '%0'
Replace=Ersetzen
Replace\ With\:=Ersetzen durch\:
@@ -760,6 +772,7 @@ Autosave\ local\ libraries=Automatische Abspeicherung für lokale Bibliotheken
Automatically\ save\ the\ library\ to=Speichere die Bibliothek automatisch nach
Please\ enter\ a\ valid\ file\ path.=Bitte geben Sie einen korrekten Dateipfad ein.
Overwrite\ file=Datei überschreiben
+Unable\ to\ write\ to\ %0.=Kann nicht nach %0 schreiben.
Refuse\ to\ save\ the\ library\ before\ external\ changes\ have\ been\ reviewed.=Die Bibliothek kann nicht gespeichert werden, bis externe Änderungen geprüft wurden.
Library\ protection=Bibliotheksschutz
@@ -770,11 +783,14 @@ Character\ encoding\ '%0'\ is\ not\ supported.=Die Zeichenkodierung '%0' wird ni
Search=Suchen
Searching...=Suche läuft...
+Finished\ Searching=Suche beendet
Search\ expression=Suchausdruck
Fulltext\ search=Volltextsuche
Help\ on\ regular\ expression\ search=Hilfe zur Suche mit regulärem Ausdruck
Searching\ for\ duplicates...=Suche nach doppelten Einträgen...
Searching\ for\ files=Suche nach Dateien
+The\ search\ is\ case-insensitive.=Bei der Suche wird die Groß- und Kleinschreibung nicht berücksichtigt.
+The\ search\ is\ case-sensitive.=Bei der Suche wird die Groß- und Kleinschreibung berücksichtigt.
Use\ regular\ expression\ search=Suche mit regulärem Ausdruck benutzen
search\ expression=Suchausdruck
Free\ search\ expression=Freier Suchausdruck
@@ -853,7 +869,7 @@ Please\ check\ your\ library\ file\ for\ wrong\ syntax.=Bitte überprüfen Sie I
SourceTab\ error=SourceTab Fehler
User\ input\ via\ entry-editor\ in\ `{}bibtex\ source`\ tab\ led\ to\ failure.=Benutzereingabe via Eintragseditor im Tab `{}bibtex source` führte zu einem Fehler.
-Sort\ subgroups=Untergruppen sortieren
+Sort\ subgroups\ A-Z=Untergruppen sortieren A-Z
source\ edit=Quelltextbearbeitung
Special\ name\ formatters=Spezielle Namens-Formatierer
@@ -917,7 +933,9 @@ Username=Benutzername
Value\ cleared\ externally=Wert extern gelöscht
+Value\ set\ externally\:\ %0=Wert extern gesetzt\: %0
+Verify\ that\ LyX\ is\ running\ and\ that\ the\ lyxpipe\ is\ valid.=Überprüfen Sie, ob LyX läuft und ob die Lyxpipe gültig ist.
View=Ansicht
Vim\ server\ name=Vim Server-Name
@@ -1303,12 +1321,18 @@ OpenDocument\ text=OpenDocument-Text
OpenDocument\ spreadsheet=OpenDocument-Tabelle
OpenDocument\ presentation=OpenDocument-Präsentation
%0\ image=%0-Bild
+Added\ entry\ '%0'=Eintrag '%0' hinzugefügt
Added\ entry=Eintrag hinzugefügt
+Modified\ entry\ '%0'=Eintrag '%0' geändert
Modified\ entry=Eintrag bearbeitet
+Deleted\ entry\ '%0'=Eintrag '%0' gelöscht
Deleted\ entry=Eintrag gelöscht
Modified\ groups\ tree=Gruppenstruktur bearbeitet
Removed\ all\ groups=Alle Gruppen entfernt
+%0.\ Accepting\ the\ change\ replaces\ the\ complete\ groups\ tree\ with\ the\ externally\ modified\ groups\ tree.=%0. Das Akzeptieren der Änderung ersetzt den kompletten Gruppenbaum durch den extern modifizierten Gruppenbaum.
Select\ export\ format=Export-Format wählen
+Return\ to\ library=Zurück zur Bibliothek
+On\ JabRef=In JabRef
Could\ not\ connect\ to\ %0=Verbindung zu %0 fehlgeschlagen
Warning\:\ %0\ out\ of\ %1\ entries\ have\ undefined\ title.=Warnung\: %0 von %1 Einträgen haben keinen Titel.
Warning\:\ %0\ out\ of\ %1\ entries\ have\ undefined\ citation\ key.=Warnung\: %0 von %1 Einträgen haben nicht definierte Zitationsschlüssel.
@@ -1667,6 +1691,7 @@ 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. Detaillierte Informationen\: %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.
@@ -1744,6 +1769,7 @@ Error\ while\ generating\ fetch\ URL=Fehler beim generieren der Abruf URL
Error\ while\ parsing\ ID\ list=Fehler beim parsen der ID-Liste
Unable\ to\ get\ PubMed\ IDs=Es ist nicht möglich die PubMed ID's zu bekommen
Backup\ found=Backup gefunden
+A\ backup\ file\ for\ '%0'\ was\ found\ at\ '%1'.=Eine Sicherungsdatei für '%0' wurde unter '%1' gefunden.
This\ could\ indicate\ that\ JabRef\ did\ not\ shut\ down\ cleanly\ last\ time\ the\ file\ was\ used.=Dies kann bedeuten, dass JabRef bei der letzten Benutzung nicht korrekt beendet wurde.
Do\ you\ want\ to\ recover\ the\ library\ from\ the\ backup\ file?=Möchten Sie die Bibliothek mit Hilfe der Backup-Datei wiederherstellen?
@@ -1795,7 +1821,7 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=Diese Datei wurde automatisch gefunden. Möchten Sie sie dem Eintrag zuordnen?
Names\ are\ not\ in\ the\ standard\ %0\ format.=Namen entsprechen nicht dem Standard %0-Format
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Die ausgewählte Datei unwiderruflich löschen oder nur vom Eintrag entfernen? Drücken sie Entfernen, um die Datei von der Festplatte zu löschen.
+Delete\ '%0'\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Soll '%0' unwiderruflich vom Datenträger gelöscht oder soll die Datei nur aus dem Eintrag entfernt werden? Durch Drücken 'Auf der Festplatte löschen' wird die Datei unwiderruflich vom Datenträger gelöscht.
Delete\ '%0'=Lösche Datei '%0'
Delete\ from\ disk=Auf der Festplatte löschen
Remove\ from\ entry=Vom Eintrag entfernen
@@ -2297,10 +2323,10 @@ Error\ importing.\ See\ the\ error\ log\ for\ details.=Fehler beim Importieren.
Error\ from\ import\:\ %0=Fehler beim Import\: %0
Error\ reading\ PDF\ content\:\ %0=Fehler beim Lesen des PDF-Inhalts\: %0
-Importing\ bib\ entry=Improtiere bib Eintrag
-Importing\ using\ extracted\ PDF\ data=Importieren mit extrahierten PDF-Daten
-No\ BibTeX\ data\ found.\ Creating\ empty\ entry\ with\ file\ link=Keine BibTeX-Daten gefunden. Erstelle leeren Eintrag mit Datei-Verknüpfung
-No\ metadata\ found.\ Creating\ empty\ entry\ with\ file\ link=Keine Metadaten gefunden. Leerer Eintrag mit Datei-Link wird erstellt
+Bib\ entry\ was\ successfully\ imported=Bib-Eintrag wurde erfolgreich importiert
+File\ was\ successfully\ imported\ as\ a\ new\ entry=Datei wurde erfolgreich als neuer Eintrag importiert
+No\ BibTeX\ data\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=Es wurden keine BibTeX-Daten gefunden. Ein leerer Eintrag mit einer Dateiverknüpfung wurde erstellt
+No\ metadata\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=Es wurden keine Metadaten gefunden. Ein leerer Eintrag mit einer Dateiverknüpfung wurde erstellt
Processing\ file\ %0=Datei %0 wird verarbeitet
Export\ selected=Ausgewählte exportieren
@@ -2374,7 +2400,9 @@ Research\ Questions=Forschungsfragen
Study\ Title\:=Titel der Studie\:
Start\ new\ systematic\ literature\ review=Neue systematische Literaturübersicht starten
Manage\ study\ definition=Studiendefinition verwalten
+Update\ study\ search\ results=Studiensuchergebnisse aktualisieren
Study\ repository\ could\ not\ be\ created=Studienrepository konnte nicht angelegt werden
+Select\ Databases\:=Datenbanken auswählen\:
All\ query\ terms\ are\ joined\ using\ the\ logical\ AND,\ and\ OR\ operators=Alle Suchbegriffe werden mit den logischen Operatoren AND und OR verknüpft
Finalize=Fertigstellen
@@ -2413,6 +2441,7 @@ Symmetric\ word\ by\ word=Wort für Wort symmetrisch
Verbatim=Verbatim
Word\ by\ word=Wort für Wort
Could\ not\ extract\ Metadata\ from\:\ %0=Metadaten konnten nicht extrahiert werden aus\: %0
+Merge\ PDF\ metadata=PDF-Metadaten zusammenführen
Add\ certificate=Zertifikat hinzufügen
Serial\ number=Seriennummer
@@ -2424,6 +2453,14 @@ Version=Version
Error\ downloading=Fehler beim Herunterladen
+No\ data\ was\ found\ for\ the\ identifier=Es wurden keine Daten für den Bezeichner gefunden
+Server\ not\ available=Server nicht verfügbar
+Fetching\ information\ using\ %0=Abrufen von Informationen mit %0
+Look\ up\ identifier=Bezeichner suchen
+Bibliographic\ data\ not\ found.\ Cause\ is\ likely\ the\ client\ side.\ Please\ check\ connection\ and\ identifier\ for\ correctness.=Bibliografische Daten nicht gefunden. Ursache ist wahrscheinlich die Client-Seite. Bitte überprüfen Sie die Verbindung und den Bezeichner auf Korrektheit.
+Bibliographic\ data\ not\ found.\ Cause\ is\ likely\ the\ server\ side.\ Please\ try\ again\ later.=Bibliografische Daten nicht gefunden. Ursache ist wahrscheinlich die Serverseite. Bitte versuchen Sie es später erneut.
+Error\ message\ %0=Fehlermeldung %0
+Identifier\ not\ found=Bezeichner nicht gefunden
Custom\ API\ key=Eigener API-Schlüssel
Check\ %0\ API\ Key\ Setting=%0 API-Schlüsseleinstellungen überprüfen
@@ -2446,13 +2483,32 @@ Automatic\ field\ editor=Automatischer Feldeditor
From=Von
Keep\ Modifications=Änderungen akzeptieren
To=Nach
+Open\ Link=Öffne Link
+Highlight\ words=Wörter Hervorheben
+Highlight\ characters=Zeichen hervorheben
+Unified\ View=Vereinheitlichte Ansicht
+Split\ View=Geteilte Ansicht
+Plain\ Text=Einfacher Text
+Show\ Diff=Zeige Änderungen
+Merged\ Entry=Zusammengeführter Eintrag
+Edit\ file\ link=Datei-Verknüpfung bearbeiten
(Note\:\ If\ original\ entries\ lack\ keywords\ to\ qualify\ for\ the\ new\ group\ configuration,\ confirming\ here\ will\ add\ them)=(Hinweis\: Wenn es den ursprünglichen Einträgen an Schlüsselwörtern fehlt, die sich für die neue Gruppenkonfiguration qualifizieren, wird die Bestätigung hier diese hinzufügen)
Assign=Zuweisen
Do\ not\ assign=Nicht zuweisen
+Error\ occured\ %0=Fehler %0 aufgetreten
+Left\ Entry=Linker Eintrag
+Merge\ %0=%0 zusammenführen
+Right\ Entry=Rechter Eintrag
+Unmerge\ %0=%0 trennen
plain\ text=Klartext
+The\ %0s\ are\ the\ same.\ However,\ the\ order\ of\ field\ content\ differs=Die %0s sind identisch. Die Reihenfolge der Feldinhalte ist jedoch unterschiedlich
+Keep\ from\ import=Von Import behalten
+Keep\ merged=Zusammengeführtes behalten
+Keep\ old\ entry=Alten Eintrag behalten
+No\ entries\ corresponding\ to\ given\ query=Keine Einträge, die der angegebenen Abfrage entsprechen
diff --git a/src/main/resources/l10n/JabRef_el.properties b/src/main/resources/l10n/JabRef_el.properties
index d3c987f8fdc..3bb4dd92b9a 100644
--- a/src/main/resources/l10n/JabRef_el.properties
+++ b/src/main/resources/l10n/JabRef_el.properties
@@ -601,6 +601,7 @@ Removed\ group\ "%0"\ and\ its\ subgroups.=Η ομάδα "%0" και οι υπο
+
Remove\ link=Αφαίρεση συνδέσμου
@@ -1494,7 +1495,6 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=Το αρχείο βρέθηκε αυτόματα. Θέλετε να το συνδέσετε με αυτήν την καταχώρηση;
Names\ are\ not\ in\ the\ standard\ %0\ format.=Τα ονόματα δεν είναι γραμμένα με τη βασική μορφή %0.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Οριστική διαγραφή του επιλεγμένου αρχείου από το δίσκο, ή αφαίρεση του αρχείου από την καταχώρηση; Εάν πατήσετε 'Διαγραφή' το αρχείο θα διαγραφεί οριστικά από το δίσκο.
Delete\ '%0'=Διαγραφή '%0'
Delete\ from\ disk=Διαγραφή από το δίσκο
Remove\ from\ entry=Αφαίρεση από την καταχώρηση
diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties
index 2ac871e6ecc..c355aecce47 100644
--- a/src/main/resources/l10n/JabRef_en.properties
+++ b/src/main/resources/l10n/JabRef_en.properties
@@ -707,6 +707,8 @@ Remove\ all\ selected\ groups\ and\ their\ subgroups?=Remove all selected groups
Removed\ all\ selected\ groups\ and\ their\ subgroups.=Removed all selected groups and their subgroups.
+Remove\ group\ "%0"?=Remove group "%0"?
+
Remove\ link=Remove link
Remove\ string\ %0=Remove string %0
@@ -867,7 +869,7 @@ Please\ check\ your\ library\ file\ for\ wrong\ syntax.=Please check your librar
SourceTab\ error=SourceTab error
User\ input\ via\ entry-editor\ in\ `{}bibtex\ source`\ tab\ led\ to\ failure.=User input via entry-editor in `{}bibtex source` tab led to failure.
-Sort\ subgroups=Sort subgroups
+Sort\ subgroups\ A-Z=Sort subgroups A-Z
source\ edit=source edit
Special\ name\ formatters=Special name formatters
@@ -1819,7 +1821,7 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=This file was found automatically. Do you want to link it to this entry?
Names\ are\ not\ in\ the\ standard\ %0\ format.=Names are not in the standard %0 format.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Delete the selected file permanently from disk, or just remove the file from the entry? Pressing Delete will delete the file permanently from disk.
+Delete\ '%0'\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Delete '%0' permanently from disk, or just remove the file from the entry? Pressing Delete will delete the file permanently from disk.
Delete\ '%0'=Delete '%0'
Delete\ from\ disk=Delete from disk
Remove\ from\ entry=Remove from entry
@@ -2321,10 +2323,10 @@ Error\ importing.\ See\ the\ error\ log\ for\ details.=Error importing. See the
Error\ from\ import\:\ %0=Error from import\: %0
Error\ reading\ PDF\ content\:\ %0=Error reading PDF content\: %0
-Importing\ bib\ entry=Importing bib entry
-Importing\ using\ extracted\ PDF\ data=Importing using extracted PDF data
-No\ BibTeX\ data\ found.\ Creating\ empty\ entry\ with\ file\ link=No BibTeX data found. Creating empty entry with file link
-No\ metadata\ found.\ Creating\ empty\ entry\ with\ file\ link=No metadata found. Creating empty entry with file link
+Bib\ entry\ was\ successfully\ imported=Bib entry was successfully imported
+File\ was\ successfully\ imported\ as\ a\ new\ entry=File was successfully imported as a new entry
+No\ BibTeX\ data\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=No BibTeX data was found. An empty entry was created with file link
+No\ metadata\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=No metadata was found. An empty entry was created with file link
Processing\ file\ %0=Processing file %0
Export\ selected=Export selected
diff --git a/src/main/resources/l10n/JabRef_es.properties b/src/main/resources/l10n/JabRef_es.properties
index a344ed7cce3..cfb9f3195ba 100644
--- a/src/main/resources/l10n/JabRef_es.properties
+++ b/src/main/resources/l10n/JabRef_es.properties
@@ -700,6 +700,7 @@ Remove\ all\ selected\ groups\ and\ their\ subgroups?=¿Eliminar todos los grupo
Removed\ all\ selected\ groups\ and\ their\ subgroups.=Eliminados todos los grupos seleccionados y sus subgrupos.
+
Remove\ link=Eliminar enlace
Remove\ string\ %0=Eliminar cadena %0
@@ -853,7 +854,6 @@ Please\ check\ your\ library\ file\ for\ wrong\ syntax.=Por favor, comprueba err
SourceTab\ error=Error de SourceTab
User\ input\ via\ entry-editor\ in\ `{}bibtex\ source`\ tab\ led\ to\ failure.=Entrada de usuario a través del editor de entrada en la pestaña `{}bibtex source` condujo al error.
-Sort\ subgroups=Ordenar subgrupos
source\ edit=editar fuente
Special\ name\ formatters=Formateadores con nombre especial
@@ -1794,7 +1794,6 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=Este archivo se encontró automáticamente. ¿Quiere vincularlo a esta entrada?
Names\ are\ not\ in\ the\ standard\ %0\ format.=Los nombres no están en el formato %0 estándar.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=¿Eliminar el archivo seleccionado permanentemente del disco, o simplemente eliminar el archivo de la entrada? Pulsando Borrar eliminará el archivo permanentemente del disco.
Delete\ '%0'=Eliminar '%0'
Delete\ from\ disk=Eliminar del disco duro
Remove\ from\ entry=Eliminar de la entrada
@@ -2296,10 +2295,6 @@ Error\ importing.\ See\ the\ error\ log\ for\ details.=Error al importar. Consul
Error\ from\ import\:\ %0=Error de importación\: %0
Error\ reading\ PDF\ content\:\ %0=Error al leer el contenido PDF\: %0
-Importing\ bib\ entry=Importando entrada bibliográfica
-Importing\ using\ extracted\ PDF\ data=Importación usando datos extraídos del PDF
-No\ BibTeX\ data\ found.\ Creating\ empty\ entry\ with\ file\ link=No se encontraron datos BibTeX. Creando entrada vacía con enlace de archivo
-No\ metadata\ found.\ Creating\ empty\ entry\ with\ file\ link=No se encontraron metadatos. Creando entrada vacía con enlace de archivo
Processing\ file\ %0=Procesando archivo %0
Export\ selected=Exportar seleccionados
diff --git a/src/main/resources/l10n/JabRef_fa.properties b/src/main/resources/l10n/JabRef_fa.properties
index 24dd75bae5f..0dd902fe0bf 100644
--- a/src/main/resources/l10n/JabRef_fa.properties
+++ b/src/main/resources/l10n/JabRef_fa.properties
@@ -363,6 +363,7 @@ Open\ terminal\ here=در اینجا پایانه را باز کن
+
Library\ saved=کتابخانه ذخیره شد
diff --git a/src/main/resources/l10n/JabRef_fr.properties b/src/main/resources/l10n/JabRef_fr.properties
index c5721e1245e..ec64debc327 100644
--- a/src/main/resources/l10n/JabRef_fr.properties
+++ b/src/main/resources/l10n/JabRef_fr.properties
@@ -707,6 +707,8 @@ Remove\ all\ selected\ groups\ and\ their\ subgroups?=Supprimer tous les groupes
Removed\ all\ selected\ groups\ and\ their\ subgroups.=Tous les groupes sélectionnés et leurs sous-groupes ont été supprimés.
+Remove\ group\ "%0"?=Supprimer le groupe "%0" ?
+
Remove\ link=Supprimer le lien
Remove\ string\ %0=Supprimer la chaîne %0
@@ -867,7 +869,7 @@ Please\ check\ your\ library\ file\ for\ wrong\ syntax.=Veuillez vérifier la sy
SourceTab\ error=Erreur de SourceTab
User\ input\ via\ entry-editor\ in\ `{}bibtex\ source`\ tab\ led\ to\ failure.=La saisie de l'utilisateur via l'éditeur d'entrée dans l'onglet `{}bibtex source` a conduit à un échec.
-Sort\ subgroups=Trier les sous-groupes
+Sort\ subgroups\ A-Z=Trier les sous-groupes A-Z
source\ edit=édition du source
Special\ name\ formatters=Formateurs de nom spéciaux
@@ -1451,11 +1453,11 @@ Invalid\ style\ selected=Style sélectionné non valide
Reload=Recharger
Capitalize=Mettre Des Majuscules
-Capitalize\ all\ words,\ but\ converts\ articles,\ prepositions,\ and\ conjunctions\ to\ lower\ case.=Met une majuscule à tous les mots sauf aux articles, prépositions et conjonctions.
+Capitalize\ all\ words,\ but\ converts\ articles,\ prepositions,\ and\ conjunctions\ to\ lower\ case.=Met une Majuscule à tous les Mots sauf aux Articles, Prépositions et Conjonctions.
Capitalize\ the\ first\ word,\ changes\ other\ words\ to\ lower\ case.=Met en majuscule l'initiale du premier mot, et tout le reste en minuscules.
-Changes\ all\ letters\ to\ lower\ case.=Met tout en minuscules.
-Changes\ all\ letters\ to\ upper\ case.=Met tout en capitales.
-Changes\ the\ first\ letter\ of\ all\ words\ to\ capital\ case\ and\ the\ remaining\ letters\ to\ lower\ case.=Met en majuscule la première lettre de tous les mots, et les autres lettres en minuscules.
+Changes\ all\ letters\ to\ lower\ case.=met tout en minuscules.
+Changes\ all\ letters\ to\ upper\ case.=MET TOUT EN CAPITALES.
+Changes\ the\ first\ letter\ of\ all\ words\ to\ capital\ case\ and\ the\ remaining\ letters\ to\ lower\ case.=Met En Majuscule La Première Lettre De Tous Les Mots, Et Les Autres Lettres En Minuscules.
Cleans\ up\ LaTeX\ code.=Nettoyer le code LaTeX.
Converts\ HTML\ code\ to\ LaTeX\ code.=Convertit le code HTML en code LaTeX.
HTML\ to\ Unicode=HTML vers Unicode
@@ -1819,7 +1821,7 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=Ce fichier a été trouvé automatiquement. Voulez-vous le lier à cette entrée ?
Names\ are\ not\ in\ the\ standard\ %0\ format.=Des noms ne sont pas au standard du format %0.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Supprimer définitivement le ficher sélectionné du disque, ou effacer simplement le fichier de cette entrée ? Presser Suppr supprimera définitivement ce fichier du disque.
+Delete\ '%0'\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Supprimer '%0' définitivement du disque, ou supprimer juste le fichier de l'entrée ? Appuyer sur Supprimer supprimera définitivement le fichier du disque.
Delete\ '%0'=Supprimer « %0 »
Delete\ from\ disk=Supprimer du disque
Remove\ from\ entry=Effacer de l'entrée
@@ -2321,10 +2323,10 @@ Error\ importing.\ See\ the\ error\ log\ for\ details.=Erreur lors de l'importat
Error\ from\ import\:\ %0=Erreur d'importation \: %0
Error\ reading\ PDF\ content\:\ %0=Erreur de lecture du contenu du PDF \: %0
-Importing\ bib\ entry=Importation de l'entrée BIB
-Importing\ using\ extracted\ PDF\ data=Importation en utilisant les données extraites du PDF
-No\ BibTeX\ data\ found.\ Creating\ empty\ entry\ with\ file\ link=Aucune donnée BibTeX trouvée. Création d'une entrée vide avec un lien de fichier
-No\ metadata\ found.\ Creating\ empty\ entry\ with\ file\ link=Aucune métadonnée trouvée. Création d'une entrée vide avec un lien de fichier
+Bib\ entry\ was\ successfully\ imported=L'entrée BibTeX a été importée avec succès
+File\ was\ successfully\ imported\ as\ a\ new\ entry=Le fichier a été importé avec succès en tant que nouvelle entrée
+No\ BibTeX\ data\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=Aucune donnée BibTeX n'a été trouvée. Une entrée vide a été créée avec un lien de fichier
+No\ metadata\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=Aucune métadonnée n'a été trouvée. Une entrée vide a été créée avec un lien de fichier
Processing\ file\ %0=Traitement du fichier %0
Export\ selected=Exporter la sélection
diff --git a/src/main/resources/l10n/JabRef_id.properties b/src/main/resources/l10n/JabRef_id.properties
index 1471063ec4f..d61b0f259f9 100644
--- a/src/main/resources/l10n/JabRef_id.properties
+++ b/src/main/resources/l10n/JabRef_id.properties
@@ -593,6 +593,7 @@ Removed\ group\ "%0"\ and\ its\ subgroups.=Hapus grup "%0" dan sub-grup nya.
+
Remove\ link=Hapus tautan
@@ -1471,7 +1472,6 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=File ini ditemukan secara otomatis. Apakah Anda ingin menautkannya ke entri ini?
Names\ are\ not\ in\ the\ standard\ %0\ format.=Nama tidak dalam format standar % 0.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Hapus file yang dipilih secara permanen dari disk, atau hapus saja file dari entri? Menekan Delete akan menghapus file secara permanen dari disk.
Delete\ '%0'=Hapus ' % 0 '
Delete\ from\ disk=Hapus dari disk
Remove\ from\ entry=Hapus dari entri
diff --git a/src/main/resources/l10n/JabRef_it.properties b/src/main/resources/l10n/JabRef_it.properties
index ed3ab0c6fcd..b7fa7126670 100644
--- a/src/main/resources/l10n/JabRef_it.properties
+++ b/src/main/resources/l10n/JabRef_it.properties
@@ -360,7 +360,10 @@ Filter=Filtro
Filter\ groups=Filtra gruppi
+Success\!\ Finished\ writing\ metadata.=Completato con successo\! Scrivere i metadati.
Finished\ writing\ metadata\ for\ %0\ file\ (%1\ skipped,\ %2\ errors).=Terminata la scrittura di metadati Xmp per %0 file (%1 saltati, %2 errori).
+Error\ while\ writing\ metadata.\ See\ the\ error\ log\ for\ details.=Errore durante la scrittura dei metadati. Vedere il registro degli errori per i dettagli.
+Failed\ to\ write\ metadata,\ file\ %1\ not\ found.=Impossibile scrivere i metadati, file %1 non trovato.
First\ select\ the\ entries\ you\ want\ keys\ to\ be\ generated\ for.=Selezionare dapprima le voci per le quali si vogliono generare le chiavi.
@@ -527,7 +530,9 @@ Moved\ group\ "%0".=Spostato gruppo "%0".
Mr.\ DLib\ Privacy\ settings=Impostazioni Privacy di Mr. DLib
+No\ database\ is\ open=Nessun database è aperto
+We\ need\ a\ database\ to\ export\ from.\ Open\ one.=Abbiamo bisogno di una banca dati da cui esportare. Aprine una.
No\ recommendations\ received\ from\ Mr.\ DLib\ for\ this\ entry.=Nessun suggerimento ricevuto da Mr. DLib per questa voce.
@@ -702,6 +707,8 @@ Remove\ all\ selected\ groups\ and\ their\ subgroups?=Rimuovere tutti i gruppi s
Removed\ all\ selected\ groups\ and\ their\ subgroups.=Rimossi tutti i gruppi selezionati e i loro sottogruppi.
+Remove\ group\ "%0"?=Rimuovere il gruppo "%0"?
+
Remove\ link=Rimuovere il collegamento
Remove\ string\ %0=Rimuovi la stringa %0
@@ -862,7 +869,7 @@ Please\ check\ your\ library\ file\ for\ wrong\ syntax.=Controlla il file della
SourceTab\ error=Errore SourceTab
User\ input\ via\ entry-editor\ in\ `{}bibtex\ source`\ tab\ led\ to\ failure.=L'input dell'utente tramite entry-editor nella scheda `{}bibtex source` ha portato al fallimento.
-Sort\ subgroups=Ordina sottogruppi
+Sort\ subgroups\ A-Z=Ordina sottogruppi A-Z
source\ edit=modifica sorgente
Special\ name\ formatters=Formattazioni speciali dei nomi
@@ -1057,6 +1064,7 @@ Cite\ special=Citazione speciale
Extra\ information\ (e.g.\ page\ number)=Informazione aggiuntiva (es. numero di pagina)
Manage\ citations=Gestione delle citazioni
Problem\ modifying\ citation=Problema nella modifica della citazione
+Problem\ collecting\ citations=Problema nella raccolta delle citazioni
Citation=Citazione
Connecting...=Connetto...
Select\ style=Seleziona stile
@@ -1071,7 +1079,9 @@ Sync\ OpenOffice/LibreOffice\ bibliography=Sincronizza la bibliografia OpenOffic
Select\ which\ open\ Writer\ document\ to\ work\ on=Selezionare il documento Writer aperto su cui lavorare
Connected\ to\ document=Connesso al documento
+Could\ not\ connect\ to\ any\ Writer\ document.\ Please\ make\ sure\ a\ document\ is\ open\ before\ using\ the\ 'Select\ Writer\ document'\ button\ to\ connect\ to\ it.=Impossibile connettersi ad alcun documento di Writer. Assicurato che un documento sia aperto prima di usare il pulsante 'Seleziona documento di scrittura' per collegarvisi.
+No\ Writer\ documents\ found=Nessun documento di Writer trovato
Insert\ a\ citation\ without\ text\ (the\ entry\ will\ appear\ in\ the\ reference\ list)=Inserire una citazione senza testo (la voce comparirà nella lista dei riferimenti)
Cite\ selected\ entries\ with\ extra\ information=Cita le voci selezionate con informazioni aggiuntive
@@ -1079,8 +1089,11 @@ Ensure\ that\ the\ bibliography\ is\ up-to-date=Assicura che la bibliografia sia
Your\ OpenOffice/LibreOffice\ document\ references\ the\ citation\ key\ '%0',\ which\ could\ not\ be\ found\ in\ your\ current\ library.=Il tuo documento OpenOffice/LibreOffice fa riferimento alla chiave BibTeX '%0', non presente nella libreria corrente.
+This\ operation\ requires\ a\ bibliography\ database.=Questa operazione richiede un database bibliografico.
+Your\ OpenOffice/LibreOffice\ document\ references\ at\ least\ %0\ citation\ keys\ which\ could\ not\ be\ found\ in\ your\ current\ library.\ Some\ of\ these\ are\ %1.=Il documento OpenOffice/LibreOffice fa riferimento ad almeno %0 chiavi di citazione che non possono essere trovate nella tua libreria attuale. Alcune di queste sono %1.
+Your\ OpenOffice/LibreOffice\ document\ references\ no\ citation\ keys\ which\ could\ also\ be\ found\ in\ your\ current\ library.=Il documento OpenOffice/LibreOffice non fa riferimento a nessuna chiave di citazione che possa essere trovata anche nella tua libreria attuale.
Unable\ to\ synchronize\ bibliography=Impossiblile sincronizzare la bibliografia
Combine\ pairs\ of\ citations\ that\ are\ separated\ by\ spaces\ only=Combina le coppie di citazioni separate solo da spazi
@@ -1088,7 +1101,12 @@ Autodetection\ failed=Autorilevamento non riuscito
Please\ wait...=Attendere...
Connection\ lost=Connessione perduta
+Could\ not\ update\ bibliography=Impossibile aggiornare la bibliografia
+Not\ connected\ to\ document=Non connesso al documento
+Problem\ combining\ cite\ markers=Problema di combinazione marcatori citazione
+Unable\ to\ reload\ style\ file=Impossibile ricaricare il file di stile
+Problem\ during\ separating\ cite\ markers=Problema durante la separazione dei marcatori di citazione
Automatically\ sync\ bibliography\ when\ inserting\ citations=Sincronizza automaticamente la bibliografia all'inserimento delle citazioni
Look\ up\ BibTeX\ entries\ in\ the\ active\ tab\ only=Ricerca le voci BibTeX solo nella scheda attiva
@@ -1189,6 +1207,7 @@ Toggle\ relevance=Mostra/Nascondi rilevanza
Toggle\ quality\ assured=Mostra/Nascondi qualità
Toggle\ print\ status=Invertito lo stato di stampa
Update\ keywords=Aggiorna parole chiave
+Problem\ connecting=Problema di connessione
Connection\ to\ OpenOffice/LibreOffice\ has\ been\ lost.\ Please\ make\ sure\ OpenOffice/LibreOffice\ is\ running,\ and\ try\ to\ reconnect.=Perduta la connessione con OpenOffice/LibreOffice. Assicurarsi che OpenOffice/LibreOffice sia in esecuzione e provare a riconnettersi.
JabRef\ will\ send\ at\ least\ one\ request\ per\ entry\ to\ a\ publisher.=JabRef spedirà almeno una richiesta per voce ad un editore.
@@ -1242,7 +1261,11 @@ Check\ connection=Controlla la connessione
Connection\ failed\!=Connessione fallita\!
Connection\ successful\!=Connessione riuscita\!
+SSL\ Configuration=Configurazione SSL
SSL\ configuration\ changed=Configurazione SSL modificata
+SSL\ certificate\ file=File di certificato SSL
+Duplicate\ Certificates=Certificati Duplicati
+You\ already\ added\ this\ certificate=Hai già aggiunto questo certificato
Open\ folder=Apri cartella
Export\ sort\ order=Esporta il modo di ordinamento
@@ -1577,10 +1600,21 @@ Custom=Appopsito
Export\ cited=Esporta citazioni
Unable\ to\ generate\ new\ library=Impossibile generare la nuova libreria
+The\ cursor\ is\ in\ a\ protected\ area.=Il cursore si trova in un'area protetta.
+JabRefException=JabRefException
+No\ bibliography\ database\ is\ open\ for\ citation.=Nessun database bibliografico è aperto per la citazione.
+No\ database\ is\ open\ for\ updating\ citation\ markers\ after\ citing.=Nessun database è aperto per aggiornare le citazioni dopo aver citato.
+No\ bibliography\ entries\ are\ selected\ for\ citation.=Nessuna voce bibliografica selezionata per la citazione.
+No\ bibliography\ style\ is\ selected\ for\ citation.=Non è stato selezionato uno stile bibliografico per la citazione.
+No\ database=Nessun database
+No\ entries\ selected\ for\ citation=Nessuna voce selezionata per la citazione
+Open\ one\ before\ citing.=Aprirne uno prima di citare.
+Select\ one\ before\ citing.=Selezionane uno prima di citare.
+Select\ some\ before\ citing.=Selezionare alcuni prima di citare.
Found\ identical\ ranges=Trovati intervalli identici
Found\ overlapping\ ranges=Trovati intervalli di sovrapposizione
@@ -1787,7 +1821,7 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=Questo file è stato trovato automaticamente. Vuoi collegarlo a questa voce?
Names\ are\ not\ in\ the\ standard\ %0\ format.=I nomi non sono nel formato standard %0.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Cancello permanentemente i file selezionati dal disco, o rimuovo solo il file dalla voce? Premendo Cancella il file verrà cancellato permanentemente dal disco.
+Delete\ '%0'\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Eliminare permanentemente '%0' dal disco, o semplicemente rimuovere il file dalla voce? Premendo Eliminare verrà eliminato il file in modo permanente dal disco.
Delete\ '%0'=Cancella '%0'
Delete\ from\ disk=Cancella dal disco
Remove\ from\ entry=Rimuovi dalla voce
@@ -2289,10 +2323,10 @@ Error\ importing.\ See\ the\ error\ log\ for\ details.=Errore nell'importazione.
Error\ from\ import\:\ %0=Errore dall'importazione\: %0
Error\ reading\ PDF\ content\:\ %0=Errore nel leggere il contenuto PDF\: %0
-Importing\ bib\ entry=Importazione voce bib
-Importing\ using\ extracted\ PDF\ data=Importazione utilizzando i dati PDF estratti
-No\ BibTeX\ data\ found.\ Creating\ empty\ entry\ with\ file\ link=Nessun dato BibTeX trovato. Creazione di una voce vuota con collegamento al file
-No\ metadata\ found.\ Creating\ empty\ entry\ with\ file\ link=Nessun metadata trovato. Creazione di una voce vuota con collegamento al file
+Bib\ entry\ was\ successfully\ imported=Voce bib importata con successo
+File\ was\ successfully\ imported\ as\ a\ new\ entry=Il file è stato importato con successo come nuova voce
+No\ BibTeX\ data\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=Nessun dato BibTeX è stato trovato. Una voce vuota è stata creata con il collegamento del file
+No\ metadata\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=Nessun metadato trovato. Una voce vuota è stata creata con il collegamento del file
Processing\ file\ %0=Elaborazione file %0
Export\ selected=Esporta selezionati
@@ -2308,19 +2342,34 @@ Custom\ DOI\ URI=Uri DOI Personalizzato
Use\ custom\ DOI\ base\ URI\ for\ article\ access=Usa l'URI di base DOI personalizzato per l'accesso agli articoli
Cited\ on\ pages=Citato sulle pagine
+Please\ move\ the\ cursor\ into\ the\ document\ text.=Spostare il cursore nel testo del documento.
+To\ get\ the\ visual\ positions\ of\ your\ citations\ I\ need\ to\ move\ the\ cursor\ around,\ but\ could\ not\ get\ it.=Per ottenere le posizioni visive delle vostre citazioni ho bisogno di spostare il cursore intorno, ma non poteva ottenerlo.
+I\ cannot\ insert\ to\ the\ cursors\ current\ location.=Non posso inserire nella posizione corrente del cursore.
+Please\ move\ the\ cursor\ to\ the\ location\ for\ the\ new\ citation.=Si prega di spostare il cursore nella posizione per la nuova citazione.
+Please\ create\ it\ in\ the\ document\ or\ change\ in\ the\ file\:=Si prega di crearlo nel documento o di modificarlo nel file\:
+Please\ use\ the\ latter\ in\ the\ style\ file\ below\ to\ avoid\ localization\ problems.=Usare quest'ultimo nel file di stile qui sotto per evitare problemi di localizzazione.
+The\ %0\ character\ style\ '%1'\ is\ a\ display\ name\ for\ '%2'.=Lo stile '%1' del carattere %0 è un nome visualizzato per '%2'.
+The\ %0\ character\ style\ '%1'\ is\ missing\ from\ the\ document=Lo stile '%1' del carattere %0 manca nel documento
+The\ %0\ paragraph\ style\ '%1'\ is\ a\ display\ name\ for\ '%2'.=Lo stile '%1' del paragrafo %0 è un nome visualizzato per '%2'.
+The\ %0\ paragraph\ style\ '%1'\ is\ missing\ from\ the\ document=Lo stile '%1' del paragrafo %0 manca nel documento
+Error\ while\ checking\ if\ Writer\ is\ recording\ changes\ or\ has\ recorded\ changes.=Errore durante il controllo se Writer sta registrando modifiche o ha registrato modifiche.
+Cannot\ work\ with\ [Edit]/[Track\ Changes]/[Record]\ turned\ on.=Impossibile lavorare con [Modifica]/[Traccia Cambiamenti/[Registra] attivato.
+Changes\ by\ JabRef\ could\ result\ in\ unexpected\ interactions\ with\ recorded\ changes.=Le modifiche di JabRef potrebbero causare interazioni impreviste con i cambiamenti registrati.
+Recording\ and/or\ Recorded\ changes=Registrazione e/o modifiche registrate
+Use\ [Edit]/[Track\ Changes]/[Manage]\ to\ resolve\ them\ first.=Usa [Modifica]/[Traccia Cambiamenti/[Gestisci] per risolverli prima.
Unable\ to\ find\ valid\ certification\ path\ to\ requested\ target(%0),\ download\ anyway?=Impossibile trovare un percorso di certificazione valido per il target richiesto (%0), scaricare comunque?
Download\ operation\ canceled.=Operazione di download annullata.
@@ -2394,7 +2443,15 @@ Word\ by\ word=Parola per parola
Could\ not\ extract\ Metadata\ from\:\ %0=Impossibile estrarre i metadati da\: %0
Merge\ PDF\ metadata=Unisci i metadati PDF
+Add\ certificate=Aggiungi certificato
+Serial\ number=Numero di serie
+Issuer=Emittente
+Valid\ from=Valido da
+Valid\ to=Valido fino al
+Signature\ algorithm=Algoritmo della firma
+Version=Versione
+Error\ downloading=Errore nel download
No\ data\ was\ found\ for\ the\ identifier=Non sono stati trovati dati per l'identificatore
Server\ not\ available=Server non disponibile
diff --git a/src/main/resources/l10n/JabRef_ja.properties b/src/main/resources/l10n/JabRef_ja.properties
index 7fef0ccb148..506ee061713 100644
--- a/src/main/resources/l10n/JabRef_ja.properties
+++ b/src/main/resources/l10n/JabRef_ja.properties
@@ -700,6 +700,7 @@ Remove\ all\ selected\ groups\ and\ their\ subgroups?=選択したすべての
Removed\ all\ selected\ groups\ and\ their\ subgroups.=選択したすべてのグループとその下層グループを削除しました。
+
Remove\ link=リンクを削除
Remove\ string\ %0=文字列 %0 を削除
@@ -853,7 +854,6 @@ Please\ check\ your\ library\ file\ for\ wrong\ syntax.=ライブラリファイ
SourceTab\ error=ソースタブでエラー
User\ input\ via\ entry-editor\ in\ `{}bibtex\ source`\ tab\ led\ to\ failure.=項目エディタ経由で `{}bibtex source`タブにユーザー入力を行うと失敗します。
-Sort\ subgroups=下層グループを整序
source\ edit=ソースの編集
Special\ name\ formatters=名前の整形の定義
@@ -1795,7 +1795,6 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=このファイルは自動的に検出されました.ファイルをこの項目にリンクしますか?
Names\ are\ not\ in\ the\ standard\ %0\ format.=名称が%0標準形式ではありません.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=選択したファイルをディスクから永久に削除しますか,それとも項目からファイルを除去するだけにしますか?削除を押すとディスクからファイルを永久に削除することになります.
Delete\ '%0'=「%0」を削除
Delete\ from\ disk=ディスクから削除
Remove\ from\ entry=項目から除去
@@ -2297,10 +2296,6 @@ Error\ importing.\ See\ the\ error\ log\ for\ details.=読み込みでエラー
Error\ from\ import\:\ %0=読み込みエラー\: %0
Error\ reading\ PDF\ content\:\ %0=PDFコンテンツの読み込みエラー\: %0
-Importing\ bib\ entry=bib 項目を読み込んでいます
-Importing\ using\ extracted\ PDF\ data=抽出したPDFデータを使って読み込み
-No\ BibTeX\ data\ found.\ Creating\ empty\ entry\ with\ file\ link=BibTeXデータが見つかりませんでした.ファイルリンクで空の項目を作成します
-No\ metadata\ found.\ Creating\ empty\ entry\ with\ file\ link=メタデータが見つかりませんでした.ファイルリンクで空の項目を作成します
Processing\ file\ %0=ファイル %0 を処理しています
Export\ selected=選択したものを書き出し
diff --git a/src/main/resources/l10n/JabRef_ko.properties b/src/main/resources/l10n/JabRef_ko.properties
index b2dcab891ab..13a485b22f3 100644
--- a/src/main/resources/l10n/JabRef_ko.properties
+++ b/src/main/resources/l10n/JabRef_ko.properties
@@ -679,6 +679,7 @@ Removed\ group\ "%0"\ and\ its\ subgroups.=그룹 "%0" 및 해당 하위 그룹
+
Remove\ link=링크 삭제
Remove\ string\ %0=문자열 %0 삭제
@@ -821,7 +822,6 @@ Skipped\ -\ No\ PDF\ linked=건너뜀 - 연결된 PDF 없음
Skipped\ -\ PDF\ does\ not\ exist=건너뜀 - PDF가 존재하지 않습니다
-Sort\ subgroups=하위 그룹 정렬
source\ edit=소스 편집
Special\ name\ formatters=특수 이름 포맷터
@@ -1729,7 +1729,6 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=이 파일은 자동으로 발견되었습니다. 이 항목에 연결하시겠습니까?
Names\ are\ not\ in\ the\ standard\ %0\ format.=이름이 표준 %0 형식이 아닙니다.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=선택한 파일을 디스크에서 영구적으로 삭제하시겠습니까, 아니면 항목에서 파일을 제거하시겠습니까? 삭제를 누르면 디스크에서 파일이 영구적으로 삭제됩니다.
Delete\ '%0'=%0 삭제
Delete\ from\ disk=디스크에서 삭제
Remove\ from\ entry=항목에서 제거
@@ -2227,10 +2226,6 @@ Error\ importing.\ See\ the\ error\ log\ for\ details.=가져오는 중에 오
Error\ from\ import\:\ %0=가져오기 오류\: %0
Error\ reading\ PDF\ content\:\ %0=PDF 콘텐츠를 읽는 중 오류\: %0
-Importing\ bib\ entry=출입 항목 가져오는중
-Importing\ using\ extracted\ PDF\ data=추출된 PDF 데이터를 사용하여 가져오기
-No\ BibTeX\ data\ found.\ Creating\ empty\ entry\ with\ file\ link=BibTex 데이터가 발견되지 않음.\n파일 링크로 빈 항목 생성 중.
-No\ metadata\ found.\ Creating\ empty\ entry\ with\ file\ link=메타데이터가 발견되지 않음.\n파일 링크로 빈 항목 생성 중.
Processing\ file\ %0=파일 %0 처리중
Export\ selected=선택한 항목 내보내기
diff --git a/src/main/resources/l10n/JabRef_nl.properties b/src/main/resources/l10n/JabRef_nl.properties
index 5994a3f987f..efbddab6fff 100644
--- a/src/main/resources/l10n/JabRef_nl.properties
+++ b/src/main/resources/l10n/JabRef_nl.properties
@@ -628,6 +628,7 @@ Removed\ group\ "%0"\ and\ its\ subgroups.=Groep "%0" en zijn subgroepen verwijd
+
Remove\ link=Verwijder link
@@ -1538,7 +1539,6 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=Dit bestand werd automatisch gevonden. Wilt u het koppelen aan deze invoer?
Names\ are\ not\ in\ the\ standard\ %0\ format.=Namen zijn niet in de standaard %0 indeling.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Het geselecteerde bestand permanent verwijderen van de schijf, of alleen het bestand verwijderen uit de invoer? Op delete drukken zal het bestand permanent verwijderen van de schijf.
Delete\ '%0'=Verwijder '%0'
Delete\ from\ disk=Van schijf verwijderen
Remove\ from\ entry=Invoer wissen
diff --git a/src/main/resources/l10n/JabRef_no.properties b/src/main/resources/l10n/JabRef_no.properties
index cf71027727d..7d88241b3a0 100644
--- a/src/main/resources/l10n/JabRef_no.properties
+++ b/src/main/resources/l10n/JabRef_no.properties
@@ -594,6 +594,7 @@ Removed\ group\ "%0"\ and\ its\ subgroups.=Fjernet gruppen "%0" og dens undergru
+
Remove\ link=Slett link
diff --git a/src/main/resources/l10n/JabRef_pl.properties b/src/main/resources/l10n/JabRef_pl.properties
index 2c35e842738..3fe658bf78f 100644
--- a/src/main/resources/l10n/JabRef_pl.properties
+++ b/src/main/resources/l10n/JabRef_pl.properties
@@ -466,6 +466,7 @@ Remove\ group\ and\ subgroups=Usuń grupę i podgrupy
+
Remove\ link=Usuń łącze
diff --git a/src/main/resources/l10n/JabRef_pt.properties b/src/main/resources/l10n/JabRef_pt.properties
index 1ca88af0623..1e8bcd69a4a 100644
--- a/src/main/resources/l10n/JabRef_pt.properties
+++ b/src/main/resources/l10n/JabRef_pt.properties
@@ -618,6 +618,7 @@ Removed\ group\ "%0"\ and\ its\ subgroups.=Grupo "%0" e seus subgrupos removidos
+
Remove\ link=Remover link
diff --git a/src/main/resources/l10n/JabRef_pt_BR.properties b/src/main/resources/l10n/JabRef_pt_BR.properties
index 3f4f7ba73c9..312ab2d2f5f 100644
--- a/src/main/resources/l10n/JabRef_pt_BR.properties
+++ b/src/main/resources/l10n/JabRef_pt_BR.properties
@@ -688,6 +688,7 @@ Removed\ group\ "%0"\ and\ its\ subgroups.=Grupo "%0" e seus subgrupos removidos
+
Remove\ link=Remover link
Remove\ string\ %0=Remover string %0
@@ -835,7 +836,6 @@ Skipped\ -\ No\ PDF\ linked=Omitido - Nenhum PDF linkado
Skipped\ -\ PDF\ does\ not\ exist=Omitido - O PDF não existe
-Sort\ subgroups=Ordenar subgrupos
source\ edit=edição de fonte
Special\ name\ formatters=Formatadores de nome espepciais
@@ -1760,7 +1760,6 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=Este arquivo foi encontrado automaticamente. Deseja vinculá-lo à referência?
Names\ are\ not\ in\ the\ standard\ %0\ format.=Nomes não estão no formato padrão %0.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Excluir o arquivo do disco permanentemente, ou apenas remover o arquivo da referência? Pressionando "Remover" você irá excluir o arquivo permanentemente do disco.
Delete\ '%0'=Remover '%0'
Delete\ from\ disk=Remover do disco
Remove\ from\ entry=Remover da referência
@@ -2261,10 +2260,6 @@ Error\ importing.\ See\ the\ error\ log\ for\ details.=Erro ao importar. Veja o
Error\ from\ import\:\ %0=Erro de importação\: %0
Error\ reading\ PDF\ content\:\ %0=Erro ao ler conteúdo do PDF\: %0
-Importing\ bib\ entry=Importando entrada bib
-Importing\ using\ extracted\ PDF\ data=Importando usando dados extraídos do PDF
-No\ BibTeX\ data\ found.\ Creating\ empty\ entry\ with\ file\ link=Nenhum dado BibTeX encontrado. Criando uma referência vazia com link do arquivo
-No\ metadata\ found.\ Creating\ empty\ entry\ with\ file\ link=Nenhum metadado encontrado. Criando uma entrada vazia com link de arquivo
Processing\ file\ %0=Processando arquivo %0
Export\ selected=Exportar selecionado
diff --git a/src/main/resources/l10n/JabRef_ru.properties b/src/main/resources/l10n/JabRef_ru.properties
index 2471c4d2aac..d9e60546144 100644
--- a/src/main/resources/l10n/JabRef_ru.properties
+++ b/src/main/resources/l10n/JabRef_ru.properties
@@ -700,6 +700,7 @@ Remove\ all\ selected\ groups\ and\ their\ subgroups?=Удалить все вы
Removed\ all\ selected\ groups\ and\ their\ subgroups.=Все выбранные группы и их подгруппы удалены.
+
Remove\ link=Удалить ссылку
Remove\ string\ %0=Удалить строку %0
@@ -853,7 +854,6 @@ Please\ check\ your\ library\ file\ for\ wrong\ syntax.=Пожалуйста, п
SourceTab\ error=Ошибка SourceTab
User\ input\ via\ entry-editor\ in\ `{}bibtex\ source`\ tab\ led\ to\ failure.=Пользовательский ввод посредством редактора записей во вкладке `{}bibtex source` привёл к возникновению ошибки.
-Sort\ subgroups=Сортировать подгруппы
source\ edit=изменение источника
Special\ name\ formatters=Особые программы форматирования имени
@@ -1795,7 +1795,6 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=Этот файл был найден автоматически. Вы хотите связать его с этой записью?
Names\ are\ not\ in\ the\ standard\ %0\ format.=Имена не в стандартном формате %0.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Удалить файл с диска навсегда или просто из записи? Нажатие "Удалить" чтобы удалить файл с диска.
Delete\ '%0'=Удалить '%0'
Delete\ from\ disk=Удалить с диска
Remove\ from\ entry=Удалить из записи
@@ -2297,10 +2296,6 @@ Error\ importing.\ See\ the\ error\ log\ for\ details.=Ошибка импорт
Error\ from\ import\:\ %0=Ошибка из импорта\: %0
Error\ reading\ PDF\ content\:\ %0=Ошибка чтения содержимого PDF\: %0
-Importing\ bib\ entry=Импорт записи bib
-Importing\ using\ extracted\ PDF\ data=Импортирование с помощью извлеченных данных PDF
-No\ BibTeX\ data\ found.\ Creating\ empty\ entry\ with\ file\ link=Данные BibTeX не найдены. Создание пустой записи со ссылкой на файл
-No\ metadata\ found.\ Creating\ empty\ entry\ with\ file\ link=Метаданные не найдены. Создание пустой записи со ссылкой на файл
Processing\ file\ %0=Обработка файла %0
Export\ selected=Экспортировать выделенное
diff --git a/src/main/resources/l10n/JabRef_sv.properties b/src/main/resources/l10n/JabRef_sv.properties
index d18d1eb4203..8ce0be16b6e 100644
--- a/src/main/resources/l10n/JabRef_sv.properties
+++ b/src/main/resources/l10n/JabRef_sv.properties
@@ -607,6 +607,7 @@ Removed\ group\ "%0"\ and\ its\ subgroups.=Tog bort gruppen "%0" och dess underg
+
Remove\ link=Ta bort länk
Remove\ string\ %0=Ta bort sträng %0
diff --git a/src/main/resources/l10n/JabRef_tl.properties b/src/main/resources/l10n/JabRef_tl.properties
index 04257162742..f503a92592a 100644
--- a/src/main/resources/l10n/JabRef_tl.properties
+++ b/src/main/resources/l10n/JabRef_tl.properties
@@ -589,6 +589,7 @@ Removed\ group\ "%0"\ and\ its\ subgroups.=Na tanggal ang grupo "%0"at ang mabab
+
Remove\ link=Tanggalin ang link
@@ -1201,7 +1202,6 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=Awtomatikong nakita ang file na ito. Gusto mo bang i-link ito sa entry na ito?
Names\ are\ not\ in\ the\ standard\ %0\ format.=Ang mga pangalan ay wala sa karaniwang format na %0.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Tanggalin ang napiling file nang permanente mula sa disk, o alisin lamang ang file mula sa entry? Ang pagpindot sa Delete ay permanenteng tanggalin ang file mula sa disk.
Delete\ '%0'=Tanggalin ang '%0'
Delete\ from\ disk=Tanggalin mula sa disk
Remove\ from\ entry=Alisin mula sa entry
diff --git a/src/main/resources/l10n/JabRef_tr.properties b/src/main/resources/l10n/JabRef_tr.properties
index 6253485809a..bd98232e1fd 100644
--- a/src/main/resources/l10n/JabRef_tr.properties
+++ b/src/main/resources/l10n/JabRef_tr.properties
@@ -19,7 +19,9 @@ Unable\ to\ monitor\ file\ changes.\ Please\ close\ files\ and\ processes\ and\
%0/%1\ entries=%0/%1 girdi
+Export\ operation\ finished\ successfully.=Dışa aktarım işlemi başarıyla tamamlandı.
+Reveal\ in\ File\ Explorer=Dosya Gezgini'nde Göster
%0\ matches\ the\ regular\ expression\ %1=%0 şu Düzenli İfadeyle eşleşiyor %1
@@ -60,6 +62,7 @@ Add\ subgroup=Altgrup ekle
Added\ group\ "%0".="%0" grubu eklendi.
+Added\ string\:\ '%0'=Dizge eklendi\: '%0'
Added\ string=Dizge eklendi
All\ entries=Tüm girdiler
@@ -197,7 +200,9 @@ Create\ custom\ fields\ for\ each\ BibTeX\ entry=Her BibTeX girdisi için özel
crossreferenced\ entries\ included=çapraz bağlantılı girdiler dahil edildi
+Current\ content\:\ %0=Mevcut içerik\: %0
+Current\ value\:\ %0=Mevcut değer\: %0
Custom\ entry\ types=Özel girdi türleri
@@ -324,6 +329,7 @@ Export\ to\ text\ file.=Metin dosyasına aktar.
Exporting=Dışa aktarılıyor
Extension=Uzantı
+External\ Changes\ Resolver=Harici Değişiklikler Çözücüsü
External\ file\ links=Harici dosya linkleri
@@ -482,6 +488,8 @@ Keyword=Anahtar sözcük
Keywords=Anahtar Sözcükler
Label=Etiket
+Label\:\ %0=Etiket\: %0
+Content\:\ %0=İçerik\: %0
Language=Dil
Last\ modified=Son değiştirme
@@ -512,6 +520,7 @@ Modified\ group\ "%0".=Değiştirilmiş grup "%0".
Modified\ groups=Değiştirilmiş gruplar
Modified\ string=Değiştirilmiş dizge
+Modified\ string\:\ '%0' =Değiştirilmiş dizge\: '%0'
Modify=Değiştir
@@ -680,16 +689,25 @@ Remove\ group=Grubu sil
Remove\ group\ and\ subgroups=Grubu ve altgrupları sil
+Remove\ groups\ and\ subgroups=Grupları ve alt grupları sil
+Remove\ all\ selected\ groups\ and\ keep\ their\ subgroups?=Tüm seçili grupları sil ve alt gruplarını tut?
+Remove\ group\ "%0"\ and\ keep\ its\ subgroups?=Grup '%0'i sil ve alt gruplarını tut?
+Remove\ groups=Grupları sil
+Removed\ all\ selected\ groups.=Tüm seçili gruplar silindi.
Remove\ group\ "%0"\ and\ its\ subgroups?="%0" grubu ve altgrupları silinsin mi?
Removed\ group\ "%0"\ and\ its\ subgroups.="%0" grubu ve altgrupları silindi.
+Remove\ all\ selected\ groups\ and\ their\ subgroups?=Tüm seçili grupları ve alt gruplarını sil?
+Removed\ all\ selected\ groups\ and\ their\ subgroups.=Tüm seçili gruplar ve alt grupları silindi.
+
+Remove\ group\ "%0"?="%0" grubu silinsin mi?
Remove\ link=Linki sil
@@ -697,7 +715,10 @@ Remove\ string\ %0=%0 Dizgesini sil
Removed\ group\ "%0".="%0" grubu silindi.
+Deleted\ string=Dizge silindi
+Deleted\ string\:\ '%0'=Silinen dizge\: '%0'
+Renamed\ string\:\ '%0'=Yeniden adlandırılan dizge\: '%0'
Replace=Yerine koy
Replace\ With\:=Şununla değiştir\:
@@ -751,6 +772,7 @@ Autosave\ local\ libraries=Yerel kütüphaneleri otomatik kaydet
Automatically\ save\ the\ library\ to=Kütüphaneyi otomatik olarak şuraya kaydet
Please\ enter\ a\ valid\ file\ path.=Lütfen geçerli bir dosya yolu girin.
Overwrite\ file=Dosyanın üzerine yaz
+Unable\ to\ write\ to\ %0.=%0'e yazılamadı.
Refuse\ to\ save\ the\ library\ before\ external\ changes\ have\ been\ reviewed.=Harici değişiklikler gözden geçirilene dek veritabanının kaydedilmesini reddet.
Library\ protection=Veirtabanı koruması
@@ -761,11 +783,14 @@ Character\ encoding\ '%0'\ is\ not\ supported.='%0' karakter kodlaması destekle
Search=Ara
Searching...=Arıyor...
+Finished\ Searching=Arama Bitti
Search\ expression=İfade ara
Fulltext\ search=Tam metin arama
Help\ on\ regular\ expression\ search=Düzenli İfade Arama hakkında yardım
Searching\ for\ duplicates...=Çift nüshalar aranıyor...
Searching\ for\ files=Dosyalar aranıyor
+The\ search\ is\ case-insensitive.=Arama büyük/küçük harfe duyarsız.
+The\ search\ is\ case-sensitive.=Arama büyük/küçük harfe duyarlı.
Use\ regular\ expression\ search=Düzenli İfade Aramayı kullan
search\ expression=arama ifadesi
Free\ search\ expression=Serbest arama ifadesi
@@ -837,8 +862,14 @@ Size=Boyut
Skipped\ -\ No\ PDF\ linked=Atlandı - PDF eklenmedi
Skipped\ -\ PDF\ does\ not\ exist=Atlandı - PDF mevcut değil
+JabRef\ skipped\ the\ entry.=JabRef girdiyi atladı.
+Import\ error=İçe aktarma hatası
+Open\ library\ error=Açık kütüphane hatası
+Please\ check\ your\ library\ file\ for\ wrong\ syntax.=Lütfen kütüphane dosyanızı yazım hatası için kontrol edin.
+SourceTab\ error=KaynakSekmesi hatası
+User\ input\ via\ entry-editor\ in\ `{}bibtex\ source`\ tab\ led\ to\ failure.=`{}bibtex source` sekmesinde girdi düzenleyiciyle yapılan kullanıcı girdisi hataya yol açtı.
-Sort\ subgroups=Alt grupları sırala
+Sort\ subgroups\ A-Z=A-Z alt gruplarını sırala
source\ edit=kaynak düzenle
Special\ name\ formatters=Özel Ad Biçemleyicileri
@@ -902,7 +933,9 @@ Username=Kullanıcı adı
Value\ cleared\ externally=Değer, haricen silindi
+Value\ set\ externally\:\ %0=Değer, haricen atandı\: %0
+Verify\ that\ LyX\ is\ running\ and\ that\ the\ lyxpipe\ is\ valid.=LyX'in çalıştığını ve veri iletişim hattının geçerli olduğunu teyit edin.
View=Görüntüle
Vim\ server\ name=Vim Sunucu Adı
@@ -1229,6 +1262,7 @@ Connection\ failed\!=Bağlantı başarısız\!
Connection\ successful\!=Bağlantı başarılı\!
SSL\ Configuration=SSL Yapılandırması
+SSL\ configuration\ changed=SSL yapılandırması değişti
SSL\ certificate\ file=SSL sertifika dosyası
Duplicate\ Certificates=Çift nüsha Sertifikalar
You\ already\ added\ this\ certificate=Bu sertifikayı zaten eklediniz
@@ -1268,6 +1302,7 @@ Please\ open\ %0\ manually.=Lütfen %0'i kendiniz açın.
The\ link\ has\ been\ copied\ to\ the\ clipboard.=Bağlantı panoya kopyalandı.
Open\ %0\ file=%0 dosyayı aç
+Could\ not\ detect\ terminal\ automatically.\ Please\ define\ a\ custom\ terminal\ in\ the\ preferences.=Terminal otomatik olarak belirlenemedi. Lütfen tercihlerde özel bir terminal tanımlayınız.
Cannot\ delete\ file=Dosya silinemiyor
File\ permission\ error=Dosya izin hatası
@@ -1286,12 +1321,18 @@ OpenDocument\ text=AçıkBelge metni
OpenDocument\ spreadsheet=AçıkBelge iş tablosu
OpenDocument\ presentation=AçıkBelge sunumu
%0\ image=%0 resim
+Added\ entry\ '%0'='%0' girdisi eklendi
Added\ entry=Eklenen girdi
+Modified\ entry\ '%0'='%0' girdisi değiştirildi
Modified\ entry=Değiştirilmiş girdi
+Deleted\ entry\ '%0'='%0' girdisi silindi
Deleted\ entry=Girdi silindi
Modified\ groups\ tree=Değiştirilmiş grup ağacı
Removed\ all\ groups=Tüm gruplar silindi
+%0.\ Accepting\ the\ change\ replaces\ the\ complete\ groups\ tree\ with\ the\ externally\ modified\ groups\ tree.=%0. Değişikliği kabul etmek, harici olarak değiştirilmiş grup ağacını mevcut grup ağacının tamamının yerine koyar.
Select\ export\ format=Dışa aktarma biçemini seç
+Return\ to\ library=Kütüphaneye dön
+On\ JabRef=JabRef'te
Could\ not\ connect\ to\ %0=%0'e bağlanılamadı
Warning\:\ %0\ out\ of\ %1\ entries\ have\ undefined\ title.=Uyarı\: %1 girdiden %0'inin tanımlanmamış başlığı var.
Warning\:\ %0\ out\ of\ %1\ entries\ have\ undefined\ citation\ key.=Uyarı\:%1 girdiden %0'inde tanımlanmamış atıf anahtarı var.
@@ -1640,6 +1681,8 @@ Issue\ report\ successful=Sorun raporu başarılı
Your\ issue\ was\ reported\ in\ your\ browser.=Sorununuz tarayıcınızda rapor edildi.
The\ log\ and\ exception\ information\ was\ copied\ to\ your\ clipboard.=Kayıt dosyası ve istisna bilgisi panonuza kopyalandı.
Please\ paste\ this\ information\ (with\ Ctrl+V)\ in\ the\ issue\ description.=Lütfen bu bilgiyi sorun tarifine (Ctrl+V ile) yapıştırın.
+Last\ notification=Son bildirim
+Check\ the\ event\ log\ to\ see\ all\ notifications=Tüm bildirimleri görmek için olay kayıtlarını inceleyin
Host=Makine
Port=Bağlantı noktası
@@ -1648,6 +1691,7 @@ User=Kullanıcı
Connect=Bağlan
Connection\ error=Bağlantı hatası
Connection\ to\ %0\ server\ established.=%0 sunucusuna bağlantı sağlandı
+There\ are\ connection\ issues\ with\ a\ JabRef\ server.\ Detailed\ information\:\ %0=Bit JabRef sunucusuyla bağlantı sorunları var. Ayrıntılı bilgi\: %0
Required\ field\ "%0"\ is\ empty.=Gerekli alan "%0" boş.
%0\ driver\ not\ available.=%0 sürücüsü yok
The\ connection\ to\ the\ server\ has\ been\ terminated.=Sunucuyla olan bağlantı sonlandırıldı.
@@ -1725,6 +1769,7 @@ Error\ while\ generating\ fetch\ URL=URL'den getirme oluşturulurken hata
Error\ while\ parsing\ ID\ list=ID listesi çözümlenirken hata
Unable\ to\ get\ PubMed\ IDs=PubMed IDleri alınamadı
Backup\ found=Yedek bulundu
+A\ backup\ file\ for\ '%0'\ was\ found\ at\ '%1'.='%1'de, '%0' için bir yedek dosyası bulundu.
This\ could\ indicate\ that\ JabRef\ did\ not\ shut\ down\ cleanly\ last\ time\ the\ file\ was\ used.=Bu, dosya son kullanıldığında JabRef'in temiz kapatılmadığını belirtiyor olabilir.
Do\ you\ want\ to\ recover\ the\ library\ from\ the\ backup\ file?=Veritabanınızı yedek dosyadan kurtarmak ister misiniz?
@@ -1776,7 +1821,7 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=Bu dosya otomatik olarak bulundu. Bu girdiye bağlantılamak ister misiniz?
Names\ are\ not\ in\ the\ standard\ %0\ format.=İsimler, standart %0 biçeminde değil.
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Seçili dosyayı diskten kalıcı olarak sil, ya da sadece dosyayı girdiden kaldır? Sile basmak dosyayı diskten kalıcı olarak silecek.
+Delete\ '%0'\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.='%0'i diskten kalıcı olarak sil, ya da sadece dosyayı girdiden kaldır? Sile basmak dosyayı diskten kalıcı olarak silecek.
Delete\ '%0'='%0' Sil
Delete\ from\ disk=Diskten sil
Remove\ from\ entry=Girdiden sil
@@ -2278,10 +2323,10 @@ Error\ importing.\ See\ the\ error\ log\ for\ details.=İçe almada hata. Ayrın
Error\ from\ import\:\ %0=İçe aktarmada hata\: %0
Error\ reading\ PDF\ content\:\ %0=PDF içeriğini okumada hata\: %0
-Importing\ bib\ entry=bib girdisi içe aktarılıyor
-Importing\ using\ extracted\ PDF\ data=Ayrıştırılmış PDF verisinden içe aktarılıyor
-No\ BibTeX\ data\ found.\ Creating\ empty\ entry\ with\ file\ link=BibTeX verisi bulunamadı. Dosya bağlanısıyla boş girdi oluşturuluyor
-No\ metadata\ found.\ Creating\ empty\ entry\ with\ file\ link=Metadata verisi bulunamadı. Dosya bağlantısıyla boş girdi oluşturuluyor
+Bib\ entry\ was\ successfully\ imported=Bib girdisi başarıyla içe aktarıldı
+File\ was\ successfully\ imported\ as\ a\ new\ entry=Dosya, yeni bir girdi olarak başarıyla içe aktarıldı
+No\ BibTeX\ data\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=BibTeX verisi bulunamadı. Dosya bağlantısıyla boş bir girdi oluşturuldu
+No\ metadata\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=Metaverisi bulunamadı. Dosya bağlantısıyla boş bir girdi oluşturuldu
Processing\ file\ %0=Dosya işleniyor %0
Export\ selected=Seçilenleri dışa aktar
@@ -2355,7 +2400,9 @@ Research\ Questions=Araştırma Soruları
Study\ Title\:=Çalışma Başlığı\:
Start\ new\ systematic\ literature\ review=Yeni sistematik literatür derlemesini başlat
Manage\ study\ definition=Çalışma tanımını yönet
+Update\ study\ search\ results=Çalışma arama sonuçlarını güncelle
Study\ repository\ could\ not\ be\ created=Çalışma veri havuzu oluşturulamadı
+Select\ Databases\:=Veri Tabanlarını Seçin\:
All\ query\ terms\ are\ joined\ using\ the\ logical\ AND,\ and\ OR\ operators=Tüm sorgu terimleri mantıksal VE ve VEYA işlemcileriyle birleştirildi
Finalize=Tamamla
@@ -2394,6 +2441,7 @@ Symmetric\ word\ by\ word=Sözcük sözcük simetrik
Verbatim=Harfi harfine
Word\ by\ word=Sözcük sözcük
Could\ not\ extract\ Metadata\ from\:\ %0=%0'den Metaverisi çıkarılamadı
+Merge\ PDF\ metadata=PDF metaverisini birleştir
Add\ certificate=Sertifika ekle
Serial\ number=Seri numarası
@@ -2405,14 +2453,62 @@ Version=Sürüm
Error\ downloading=İndirmede hata
+No\ data\ was\ found\ for\ the\ identifier=Tanımlayıcı için veri bulunamadı
+Server\ not\ available=Sunucu mevcut değil
+Fetching\ information\ using\ %0=%0 kullanılarak bilgi getiriliyor
+Look\ up\ identifier=Tanımlayıcıyı ara
+Bibliographic\ data\ not\ found.\ Cause\ is\ likely\ the\ client\ side.\ Please\ check\ connection\ and\ identifier\ for\ correctness.=Kaynakça verisi bulunamadı. Neden muhtemelen istemci tarafında. Lütfen bağlantı ve tanımlayıcıyı doğrulayın.
+Bibliographic\ data\ not\ found.\ Cause\ is\ likely\ the\ server\ side.\ Please\ try\ again\ later.=Kaynakça verisi bulunamadı. Neden muhtemelen sunucu tarafında. Lütfen daha sonra tekrar deneyin.
+Error\ message\ %0=Hata mesajı\: %0
+Identifier\ not\ found=Tanımlayıcı bulunamadı
Custom\ API\ key=Özel API anahtarı
Check\ %0\ API\ Key\ Setting=%0 API Anahtar Ayarlarını Kontrol Edin
-
-
-
+Edit\ content=İçeriği düzenle
+Copy\ or\ Move\ content=İçeriği Kopyala ya da Taşı
+Overwrite\ field\ content=Alan içeriğinin üzerine yaz
+Set=Ata
+Append=Sonuna ekle
+Clear\ field\ content=Alan içeriğini temizle
+Set\ or\ append\ content=İçeriği ata ya da sonuna ekle
+Edit\ field\ content\ for\ selected\ entries=Seçili girdiler için alan içeriğini düzenle
+Rename=Yeniden adlandır
+New\ field\ name=Yeni alan adı
+Copy\ content=İçeriği kopyala
+Move\ content=İçeriği taşı
+Swap\ content=İçeriği takasla
+Copy\ or\ move\ the\ content\ of\ one\ field\ to\ another=İçeriği bir alandan diğerine kopyala ya da taşı
+Automatic\ field\ editor=Otomatik alan düzenleyici
+From=Nereden
+Keep\ Modifications=Değişiklikleri Tut
+To=Nereye
+Open\ Link=Bağlantıyı Aç
+Highlight\ words=Sözcükleri vurgula
+Highlight\ characters=Karakterleri vurgula
+Unified\ View=Birleşik Görünüm
+Split\ View=Ayrık Görünüm
+Plain\ Text=Salt Metin
+Show\ Diff=Farkı Göster
+Merged\ Entry=Birleşik Girdi
+
+Edit\ file\ link=Dosya bağlantısını düzenle
+
+(Note\:\ If\ original\ entries\ lack\ keywords\ to\ qualify\ for\ the\ new\ group\ configuration,\ confirming\ here\ will\ add\ them)=(Not\: Eğer orijinal girdiler yeni grup yapılandırması için gerekli anahtar sözcükleri içermiyorsa, buradaki teyit onları ekleyecektir)
+Assign=Ata
+Do\ not\ assign=Atama
+
+Error\ occured\ %0=Hata oluştu %0
+Left\ Entry=Sol Girdi
+Merge\ %0=Birleştir %0
+Right\ Entry=Sağ Girdi
+Unmerge\ %0=Ayrıştır %0
plain\ text=salt metin
+The\ %0s\ are\ the\ same.\ However,\ the\ order\ of\ field\ content\ differs=%0ler aynı. Lakin, alan içerik sıralaması farklı
+Keep\ from\ import=İçe aktarmaya dahil etme
+Keep\ merged=Birleşik tut
+Keep\ old\ entry=Eski girdiyi tut
+No\ entries\ corresponding\ to\ given\ query=Mevcut sorguya karşılık gelen girdi yok
diff --git a/src/main/resources/l10n/JabRef_uk.properties b/src/main/resources/l10n/JabRef_uk.properties
index 25474fa1bab..d74cacc266f 100644
--- a/src/main/resources/l10n/JabRef_uk.properties
+++ b/src/main/resources/l10n/JabRef_uk.properties
@@ -589,5 +589,6 @@
+
diff --git a/src/main/resources/l10n/JabRef_vi.properties b/src/main/resources/l10n/JabRef_vi.properties
index 89ee00bb63d..6978e6350d7 100644
--- a/src/main/resources/l10n/JabRef_vi.properties
+++ b/src/main/resources/l10n/JabRef_vi.properties
@@ -601,6 +601,7 @@ Removed\ group\ "%0"\ and\ its\ subgroups.=Đã loại bỏ nhóm "%0" và các
+
Remove\ link=Loại bỏ liên kết
diff --git a/src/main/resources/l10n/JabRef_zh_CN.properties b/src/main/resources/l10n/JabRef_zh_CN.properties
index 3b6b53c5ff8..780fddd37c6 100644
--- a/src/main/resources/l10n/JabRef_zh_CN.properties
+++ b/src/main/resources/l10n/JabRef_zh_CN.properties
@@ -707,6 +707,8 @@ Remove\ all\ selected\ groups\ and\ their\ subgroups?=移除所有选定的分
Removed\ all\ selected\ groups\ and\ their\ subgroups.=移除所有选定的分组及其子分组
+Remove\ group\ "%0"?=移除分组 "%0"?
+
Remove\ link=移除链接
Remove\ string\ %0=移除字符串 %0
@@ -867,7 +869,7 @@ Please\ check\ your\ library\ file\ for\ wrong\ syntax.=请检查您的库文件
SourceTab\ error=SourceTab错误
User\ input\ via\ entry-editor\ in\ `{}bibtex\ source`\ tab\ led\ to\ failure.=通过条目编辑器的 "{}bibtex source" 标签中输入时出错。
-Sort\ subgroups=排序子组
+Sort\ subgroups\ A-Z=Sort subgroups A-Z
source\ edit=源代码编辑
Special\ name\ formatters=姓名格式化
@@ -1819,7 +1821,7 @@ To\ improve\ the\ user\ experience,\ we\ would\ like\ to\ collect\ anonymous\ st
This\ file\ was\ found\ automatically.\ Do\ you\ want\ to\ link\ it\ to\ this\ entry?=自动查找到文件。你想把它链接到这个条目吗?
Names\ are\ not\ in\ the\ standard\ %0\ format.=名称不是标准的 %0 格式。
-Delete\ the\ selected\ file\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Delete the selected file permanently from disk, or just remove the file from the entry? Pressing Delete will delete the file permanently from disk.
+Delete\ '%0'\ permanently\ from\ disk,\ or\ just\ remove\ the\ file\ from\ the\ entry?\ Pressing\ Delete\ will\ delete\ the\ file\ permanently\ from\ disk.=Delete '%0' permanently from disk, or just remove the file from the entry? Pressing Delete will delete the file permanently from disk.
Delete\ '%0'=删除 %0
Delete\ from\ disk=从磁盘中删除
Remove\ from\ entry=从条目中移除
@@ -2321,10 +2323,10 @@ Error\ importing.\ See\ the\ error\ log\ for\ details.=导入错误。具体内
Error\ from\ import\:\ %0=导入错误: %0
Error\ reading\ PDF\ content\:\ %0=读取 PDF 内容时出错: %0
-Importing\ bib\ entry=正在导入 bib 条目
-Importing\ using\ extracted\ PDF\ data=正在使用提取出的 PDF 数据导入
-No\ BibTeX\ data\ found.\ Creating\ empty\ entry\ with\ file\ link=未找到BibTeX数据。正在创建带有文件链接的空条目
-No\ metadata\ found.\ Creating\ empty\ entry\ with\ file\ link=未找到元数据。正在使用文件链接创建空条目
+Bib\ entry\ was\ successfully\ imported=Bib条目已成功导入
+File\ was\ successfully\ imported\ as\ a\ new\ entry=文件已成功导入为新条目
+No\ BibTeX\ data\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=未找到BibTeX数据,创建了包含文件链接的新条目
+No\ metadata\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=未找到元数据,创建了包含文件链接的新条目
Processing\ file\ %0=正在处理文件 %0
Export\ selected=导出所选项
diff --git a/src/main/resources/l10n/JabRef_zh_TW.properties b/src/main/resources/l10n/JabRef_zh_TW.properties
index ea1dbb6d53d..52c3162d11e 100644
--- a/src/main/resources/l10n/JabRef_zh_TW.properties
+++ b/src/main/resources/l10n/JabRef_zh_TW.properties
@@ -565,6 +565,7 @@ Remove\ group=移除群組
+
Remove\ link=移除連結
Remove\ string\ %0=移除字串 %0
diff --git a/src/test/java/org/jabref/architecture/MainArchitectureTests.java b/src/test/java/org/jabref/architecture/MainArchitectureTests.java
index 25b60cea46c..86335032845 100644
--- a/src/test/java/org/jabref/architecture/MainArchitectureTests.java
+++ b/src/test/java/org/jabref/architecture/MainArchitectureTests.java
@@ -115,6 +115,7 @@ public static void restrictUsagesInModel(JavaClasses classes) {
@ArchTest
public static void restrictUsagesInLogic(JavaClasses classes) {
noClasses().that().resideInAPackage(PACKAGE_ORG_JABREF_LOGIC)
+ .and().areNotAnnotatedWith(AllowedToUseSwing.class)
.should().dependOnClassesThat().resideInAPackage(PACKAGE_JAVAX_SWING)
.orShould().dependOnClassesThat().haveFullyQualifiedName(CLASS_ORG_JABREF_GLOBALS)
.check(classes);
diff --git a/src/test/java/org/jabref/gui/externalfiletype/ExternalFileTypesTest.java b/src/test/java/org/jabref/gui/externalfiletype/ExternalFileTypesTest.java
index dadcba319fc..8ca169a8fe4 100644
--- a/src/test/java/org/jabref/gui/externalfiletype/ExternalFileTypesTest.java
+++ b/src/test/java/org/jabref/gui/externalfiletype/ExternalFileTypesTest.java
@@ -22,6 +22,7 @@
class ExternalFileTypesTest {
private static final Set TEST_LIST = Set.of(
+ StandardExternalFileType.MARKDOWN,
StandardExternalFileType.PDF,
StandardExternalFileType.URL,
StandardExternalFileType.JPG,
diff --git a/src/test/java/org/jabref/gui/theme/ThemeManagerTest.java b/src/test/java/org/jabref/gui/theme/ThemeManagerTest.java
index 31bd4a64bbb..d772ca6deff 100644
--- a/src/test/java/org/jabref/gui/theme/ThemeManagerTest.java
+++ b/src/test/java/org/jabref/gui/theme/ThemeManagerTest.java
@@ -53,7 +53,7 @@ public void themeManagerUsesProvidedTheme() throws IOException {
Path testCss = tempFolder.resolve("test.css");
Files.writeString(testCss, TEST_CSS_CONTENT, StandardOpenOption.CREATE);
AppearancePreferences appearancePreferences =
- new AppearancePreferences(false, 0, new Theme(testCss.toString()));
+ new AppearancePreferences(false, 0, 0, new Theme(testCss.toString()));
ThemeManager themeManager = new ThemeManager(appearancePreferences, new DummyFileUpdateMonitor(), Runnable::run);
@@ -73,7 +73,7 @@ public void customThemeAvailableEvenWhenDeleted() throws IOException {
Path testCss = tempFolder.resolve("test.css");
Files.writeString(testCss, TEST_CSS_CONTENT, StandardOpenOption.CREATE);
AppearancePreferences appearancePreferences =
- new AppearancePreferences(false, 0, new Theme(testCss.toString()));
+ new AppearancePreferences(false, 0, 0, new Theme(testCss.toString()));
// ActiveTheme should provide the additionalStylesheet that was created before
ThemeManager themeManagerCreatedBeforeFileDeleted = new ThemeManager(appearancePreferences, new DummyFileUpdateMonitor(), Runnable::run);
@@ -101,7 +101,7 @@ public void customThemeAvailableEvenWhenDeleted() throws IOException {
public void customThemeBecomesAvailableAfterFileIsCreated() throws IOException {
Path testCss = tempFolder.resolve("test.css");
AppearancePreferences appearancePreferences =
- new AppearancePreferences(false, 0, new Theme(testCss.toString()));
+ new AppearancePreferences(false, 0, 0, new Theme(testCss.toString()));
// ActiveTheme should provide no additionalStylesheet when no file exists
ThemeManager themeManagerCreatedBeforeFileExists = new ThemeManager(appearancePreferences, new DummyFileUpdateMonitor(), Runnable::run);
@@ -132,7 +132,7 @@ public void largeCustomThemeNotHeldInMemory() throws IOException {
}
Files.writeString(largeCssTestFile, " */", StandardOpenOption.APPEND);
AppearancePreferences appearancePreferences =
- new AppearancePreferences(false, 0, new Theme(largeCssTestFile.toString()));
+ new AppearancePreferences(false, 0, 0, new Theme(largeCssTestFile.toString()));
// ActiveTheme should provide the large additionalStylesheet that was created before
ThemeManager themeManager = new ThemeManager(appearancePreferences, new DummyFileUpdateMonitor(), Runnable::run);
@@ -165,7 +165,7 @@ public void installThemeOnScene() throws IOException {
Path testCss = tempFolder.resolve("reload.css");
Files.writeString(testCss, TEST_CSS_CONTENT, StandardOpenOption.CREATE);
AppearancePreferences appearancePreferences =
- new AppearancePreferences(false, 0, new Theme(testCss.toString()));
+ new AppearancePreferences(false, 0, 0, new Theme(testCss.toString()));
ThemeManager themeManager = new ThemeManager(appearancePreferences, new DummyFileUpdateMonitor(), Runnable::run);
@@ -180,7 +180,7 @@ public void installThemeOnWebEngine() throws IOException {
Path testCss = tempFolder.resolve("reload.css");
Files.writeString(testCss, TEST_CSS_CONTENT, StandardOpenOption.CREATE);
AppearancePreferences appearancePreferences =
- new AppearancePreferences(false, 0, new Theme(testCss.toString()));
+ new AppearancePreferences(false, 0, 0, new Theme(testCss.toString()));
ThemeManager themeManager = new ThemeManager(appearancePreferences, new DummyFileUpdateMonitor(), Runnable::run);
@@ -209,7 +209,7 @@ public void liveReloadCssDataUrl() throws IOException, InterruptedException {
Path testCss = tempFolder.resolve("reload.css");
Files.writeString(testCss, TEST_CSS_CONTENT, StandardOpenOption.CREATE);
AppearancePreferences appearancePreferences =
- new AppearancePreferences(false, 0, new Theme(testCss.toString()));
+ new AppearancePreferences(false, 0, 0, new Theme(testCss.toString()));
final ThemeManager themeManager;
diff --git a/src/test/java/org/jabref/logic/bibtex/BibEntryWriterTest.java b/src/test/java/org/jabref/logic/bibtex/BibEntryWriterTest.java
index ad5f8f70ecb..9c1dc3f3aa9 100644
--- a/src/test/java/org/jabref/logic/bibtex/BibEntryWriterTest.java
+++ b/src/test/java/org/jabref/logic/bibtex/BibEntryWriterTest.java
@@ -856,7 +856,7 @@ static Stream testGetFormattedFieldNameData() {
@MethodSource("testGetFormattedFieldNameData")
void testGetFormattedFieldName(String expected, String fieldName, int indent) {
Field field = FieldFactory.parseField(fieldName);
- assertEquals(expected, bibEntryWriter.getFormattedFieldName(field, indent));
+ assertEquals(expected, BibEntryWriter.getFormattedFieldName(field, indent));
}
static Stream testGetLengthOfLongestFieldNameData() {
@@ -871,6 +871,6 @@ static Stream testGetLengthOfLongestFieldNameData() {
@ParameterizedTest
@MethodSource("testGetLengthOfLongestFieldNameData")
void testGetLengthOfLongestFieldName(int expected, BibEntry entry) {
- assertEquals(expected, bibEntryWriter.getLengthOfLongestFieldName(entry));
+ assertEquals(expected, BibEntryWriter.getLengthOfLongestFieldName(entry));
}
}
diff --git a/src/test/java/org/jabref/logic/journals/JournalAbbreviationRepositoryTest.java b/src/test/java/org/jabref/logic/journals/JournalAbbreviationRepositoryTest.java
index 68071fe0089..97c6766676f 100644
--- a/src/test/java/org/jabref/logic/journals/JournalAbbreviationRepositoryTest.java
+++ b/src/test/java/org/jabref/logic/journals/JournalAbbreviationRepositoryTest.java
@@ -1,5 +1,16 @@
package org.jabref.logic.journals;
+import javax.swing.undo.CompoundEdit;
+
+import org.jabref.architecture.AllowedToUseSwing;
+import org.jabref.gui.journals.AbbreviationType;
+import org.jabref.gui.journals.UndoableAbbreviator;
+import org.jabref.gui.journals.UndoableUnabbreviator;
+import org.jabref.model.database.BibDatabase;
+import org.jabref.model.entry.BibEntry;
+import org.jabref.model.entry.field.StandardField;
+import org.jabref.model.entry.types.StandardEntryType;
+
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -7,6 +18,7 @@
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
+@AllowedToUseSwing("UndoableUnabbreviator and UndoableAbbreviator requires Swing Compound Edit in order test the abbreviation and unabreviation of journal titles")
class JournalAbbreviationRepositoryTest {
private JournalAbbreviationRepository repository;
@@ -134,4 +146,61 @@ void getFromFullName() {
void getFromAbbreviatedName() {
assertEquals(new Abbreviation("American Journal of Public Health", "Am. J. Public Health"), repository.get("Am. J. Public Health").get());
}
+
+ @Test
+ void testAbbreviationsWithEscapedAmpersand() {
+ assertEquals(new Abbreviation("ACS Applied Materials & Interfaces", "ACS Appl. Mater. Interfaces"), repository.get("ACS Applied Materials & Interfaces").get());
+ assertEquals(new Abbreviation("ACS Applied Materials & Interfaces", "ACS Appl. Mater. Interfaces"), repository.get("ACS Applied Materials \\& Interfaces").get());
+ assertEquals(new Abbreviation("Antioxidants & Redox Signaling", "Antioxid. Redox Signaling"), repository.get("Antioxidants & Redox Signaling").get());
+ assertEquals(new Abbreviation("Antioxidants & Redox Signaling", "Antioxid. Redox Signaling"), repository.get("Antioxidants \\& Redox Signaling").get());
+
+ repository.addCustomAbbreviation(new Abbreviation("Long & Name", "L. N.", "LN"));
+ assertEquals(new Abbreviation("Long & Name", "L. N.", "LN"), repository.get("Long & Name").get());
+ assertEquals(new Abbreviation("Long & Name", "L. N.", "LN"), repository.get("Long \\& Name").get());
+ }
+
+ @Test
+ void testJournalAbbreviationWithEscapedAmpersand() {
+ BibDatabase bibDatabase = new BibDatabase();
+ JournalAbbreviationRepository journalAbbreviationRepository = JournalAbbreviationLoader.loadBuiltInRepository();
+ UndoableAbbreviator undoableAbbreviator = new UndoableAbbreviator(journalAbbreviationRepository, AbbreviationType.DEFAULT);
+
+ BibEntry entryWithEscapedAmpersandInJournal = new BibEntry(StandardEntryType.Article);
+ entryWithEscapedAmpersandInJournal.setField(StandardField.JOURNAL, "ACS Applied Materials \\& Interfaces");
+
+ undoableAbbreviator.abbreviate(bibDatabase, entryWithEscapedAmpersandInJournal, StandardField.JOURNAL, new CompoundEdit());
+ BibEntry expectedAbbreviatedJournalEntry = new BibEntry(StandardEntryType.Article)
+ .withField(StandardField.JOURNAL, "ACS Appl. Mater. Interfaces");
+ assertEquals(expectedAbbreviatedJournalEntry, entryWithEscapedAmpersandInJournal);
+ }
+
+ @Test
+ void testJournalUnabbreviate() {
+ BibDatabase bibDatabase = new BibDatabase();
+ JournalAbbreviationRepository journalAbbreviationRepository = JournalAbbreviationLoader.loadBuiltInRepository();
+ UndoableUnabbreviator undoableUnabbreviator = new UndoableUnabbreviator(journalAbbreviationRepository);
+
+ BibEntry abbreviatedJournalEntry = new BibEntry(StandardEntryType.Article);
+ abbreviatedJournalEntry.setField(StandardField.JOURNAL, "ACS Appl. Mater. Interfaces");
+
+ undoableUnabbreviator.unabbreviate(bibDatabase, abbreviatedJournalEntry, StandardField.JOURNAL, new CompoundEdit());
+ BibEntry expectedAbbreviatedJournalEntry = new BibEntry(StandardEntryType.Article)
+ .withField(StandardField.JOURNAL, "ACS Applied Materials & Interfaces");
+ assertEquals(expectedAbbreviatedJournalEntry, abbreviatedJournalEntry);
+ }
+
+ @Test
+ void testJournalAbbreviateWithoutEscapedAmpersand() {
+ BibDatabase bibDatabase = new BibDatabase();
+ JournalAbbreviationRepository journalAbbreviationRepository = JournalAbbreviationLoader.loadBuiltInRepository();
+ UndoableAbbreviator undoableAbbreviator = new UndoableAbbreviator(journalAbbreviationRepository, AbbreviationType.DEFAULT);
+
+ BibEntry entryWithoutEscapedAmpersandInJournal = new BibEntry(StandardEntryType.Article);
+ entryWithoutEscapedAmpersandInJournal.setField(StandardField.JOURNAL, "ACS Applied Materials & Interfaces");
+
+ undoableAbbreviator.abbreviate(bibDatabase, entryWithoutEscapedAmpersandInJournal, StandardField.JOURNAL, new CompoundEdit());
+ BibEntry expectedAbbreviatedJournalEntry = new BibEntry(StandardEntryType.Article)
+ .withField(StandardField.JOURNAL, "ACS Appl. Mater. Interfaces");
+ assertEquals(expectedAbbreviatedJournalEntry, entryWithoutEscapedAmpersandInJournal);
+ }
}
diff --git a/src/test/java/org/jabref/logic/util/io/CitationKeyBasedFileFinderTest.java b/src/test/java/org/jabref/logic/util/io/CitationKeyBasedFileFinderTest.java
index edb0bfaed3a..3f29211f4e0 100644
--- a/src/test/java/org/jabref/logic/util/io/CitationKeyBasedFileFinderTest.java
+++ b/src/test/java/org/jabref/logic/util/io/CitationKeyBasedFileFinderTest.java
@@ -15,6 +15,7 @@
import org.junit.jupiter.api.io.TempDir;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
class CitationKeyBasedFileFinderTest {
@@ -99,4 +100,30 @@ void findAssociatedFilesInNonExistingDirectoryFindsNothing() throws Exception {
assertEquals(Collections.emptyList(), results);
}
+
+ @Test
+ void findAssociatedFilesWithUnsafeCharactersStartWithSearch() throws Exception {
+ BibEntry entryWithUnsafeCitationKey = new BibEntry(StandardEntryType.Article);
+ entryWithUnsafeCitationKey.setCitationKey("?test");
+
+ Path testFile = Files.createFile(pdfsDir.resolve("_test_file.pdf"));
+ FileFinder fileFinder = new CitationKeyBasedFileFinder(false);
+
+ List results = fileFinder.findAssociatedFiles(entryWithUnsafeCitationKey, Collections.singletonList(pdfsDir), Collections.singletonList("pdf"));
+
+ assertEquals(Collections.singletonList(testFile), results);
+ }
+
+ @Test
+ void findAssociatedFilesWithUnsafeCharactersExactSearch() throws Exception {
+ BibEntry entryWithUnsafeCitationKey = new BibEntry(StandardEntryType.Article);
+ entryWithUnsafeCitationKey.setCitationKey("test:test/*test?");
+
+ Path testFile = Files.createFile(pdfsDir.resolve("test_test__test_.pdf"));
+ FileFinder fileFinder = new CitationKeyBasedFileFinder(true);
+
+ List results = fileFinder.findAssociatedFiles(entryWithUnsafeCitationKey, Collections.singletonList(pdfsDir), Collections.singletonList("pdf"));
+
+ assertNotEquals(Collections.singletonList(testFile), results);
+ }
}