diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4b8ffaab115..9b20c4ecae3 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -5,3 +5,4 @@ - [ ] Screenshots added (for bigger UI changes) - [ ] Manually tested changed features in running JabRef - [ ] Check documentation status (Issue created for outdated help page at [help.jabref.org](https://github.com/JabRef/help.jabref.org/issues)?) +- [ ] If you changed the localization: Did you run `gradle localizationUpdate`? diff --git a/.gitignore b/.gitignore index b36c5968f66..cfcd6c34e69 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,6 @@ bin/ jabref.xml install4j6/ *.sonargraph + +# ignore the generated markdown file if the user forgets to delete it +status.md diff --git a/.mailmap b/.mailmap index d1e94dc20e2..16ef536babe 100644 --- a/.mailmap +++ b/.mailmap @@ -84,11 +84,10 @@ Robert Jäschke Ulrik Stervbo Stefano Gariazzo Lee Patton -Jörg Lenhard Jörg Lenhard - - - + + +Jörg Lenhard Matthias Geiger Christoph Braun Felix Wilke @@ -103,3 +102,4 @@ Christoph Schwentker Christoph Schwentker Jens Döcke Jürgen Lange +Sascha Zeller diff --git a/.travis.yml b/.travis.yml index d356d0e112f..b70d5b58519 100644 --- a/.travis.yml +++ b/.travis.yml @@ -59,6 +59,10 @@ after_script: - ./gradlew jacocoTestReport - bash <(curl -s https://codecov.io/bash) +after_failure: + # show test results if build fails + - $TRAVIS_BUILD_DIR/scripts/after-failure.sh + # cache gradle dependencies # https://docs.travis-ci.com/user/languages/java#Caching before_cache: diff --git a/AUTHORS b/AUTHORS index ed3944da175..0ca073e7a2a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -12,6 +12,7 @@ Ambrogio Oliva Andreas Amann Andreas Rudert Anh Nghia Tran +Antonio Ribeiro Behrouz Javanmardi Bernd Kalbfuss Bernhard Tempel @@ -47,6 +48,7 @@ Fedor Bezrukov Felix Berger Felix Langner Felix Wilke +Fernando Santagata Florian Straßer Francois Charette Frank Steimle diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a9600a6bcf..0661a825372 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,17 +12,28 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# ## [Unreleased] ### Changed +- Source tab in the entry editor displays "BibLaTeX Source" when using biblatex mode +- Add session restoring functionality for shared database. Related to [#1703](https://github.com/JabRef/jabref/issues/1703) +- Implementation of LiveUpdate for PostgreSQL & Oracle systems. Related to [#970](https://github.com/JabRef/jabref/issues/970). +- [koppor#31](https://github.com/koppor/jabref/issues/31): Number column in the main table is always Left aligned +- Added support for [1.0.1 CitationStyles](http://citationstyles.org/) +- You can set and cycle between different preview styles (including CitationStyles) - Added fetcher for [MathSciNet](http://www.ams.org/mathscinet), [zbMATH](https://www.zbmath.org/) and [Astrophysics Data System](http://www.adsabs.harvard.edu/) -- Implemented [#825](https://github.com/JabRef/jabref/issues/825): Search Bar across all bib files instead each having its own -- Implemented [#573](https://github.com/JabRef/jabref/issues/573): Add key shortcut for global search (`ctrl+shift+f`, if the searchfield is empty it will be focused instead) -- The search result Window will now show which entry belongs to which bib file -- The search result Window will now remember its location -- The search result Window won't stay on top anymore if the main Window is focused and will be present in the taskbar -- The user can jump from the searchbar to the maintable with `ctrl+enter` -- Implemented [#573 (comment)](https://github.com/JabRef/jabref/issues/573#issuecomment-232284156): Added shortcut: closing the search result window with `ctrl+w` +- Improved search: + - Search queries consisting of a normal query and a field-based query are now supported (for example, `JabRef AND author == you`) + - Implemented [#825](https://github.com/JabRef/jabref/issues/825): Search Bar across all bib files instead each having its own + - Implemented [#573](https://github.com/JabRef/jabref/issues/573): Add key shortcut for global search (`ctrl+shift+f`, if the searchfield is empty it will be focused instead) + - The search result Window will now show which entry belongs to which bib file + - The search result Window will now remember its location + - The search result Window won't stay on top anymore if the main Window is focused and will be present in the taskbar + - The user can jump from the searchbar to the maintable with `ctrl+enter` + - Implemented [#573 (comment)](https://github.com/JabRef/jabref/issues/573#issuecomment-232284156): Added shortcut: closing the search result window with `ctrl+w` - Added integrity check for fields with BibTeX keys, e.g., `crossref` and `related`, to check that the key exists +- Fields linking to other entries (e.g., `crossref` and `related`) have now specialized editors in the entry editor. Check the tabs "Other fields" and "General". - [#1496](https://github.com/JabRef/jabref/issues/1496) Keep track of which entry a downloaded file belongs to - Made it possible to download multiple entries in one action +- [#1506](https://github.com/JabRef/jabref/issues/1506) It is possible to apply two new key modifier `title_case` for Title Case, `capitalize` for Capitalized first character of each word (difference is that title case will leave prepositions etc in lower case), and `sentence_case` for normal sentence case (first word capitalized). In addition `lower_case` and `upper_case` can be used instead of `lower` and `upper`. +- Added two new pseudo-fields for search: `anykeyword` to search for a specific keyword and `anyfield` to search in all fields (useful in combination with search in specific fields) - [#1813](https://github.com/JabRef/jabref/issues/1813) Import/Export preferences dialog default directory set to working directory - [#1897](https://github.com/JabRef/jabref/issues/1897) Implemented integrity check for `year` field: Last four nonpunctuation characters should be numerals - Address in MS-Office 2007 xml format is now imported as `location` @@ -35,8 +46,26 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - Implemented integrity check for `note` and `howpublished` field: Should have the first letter capitalized (BibTeX) - Pos1 / HOME now select the first/last entry in the main table and the search result frame. - UP / Down / Tab / shift+Tab in the search result frame have now the same functionality as in the main table. +- Importer for MODS format added +- [#2012](https://github.com/JabRef/jabref/issues/2012) Implemented integrity check for `month` field: Should be an integer or normalized (BibLaTeX), Should be normalized (BibTeX) +- [#1779](https://github.com/JabRef/jabref/issues/1779) Implemented integrity check for `bibtexkey` field: Empty BibTeX key +- Prohibit more than one connections to the same shared database. +- Implemented integrity check for `journaltitle` field: BibLaTeX field only (BibTeX) +- [#463](https://github.com/JabRef/jabref/issues/463): Disable certain menu items, toolbar buttons and context menu items while multiple entries are selected +- [#490](https://github.com/JabRef/jabref/issues/490) Added right click menu to main table and entry editor to allow copying doi url +- [#549](https://github.com/JabRef/jabref/issues/549) Added new shortcut to copy the BibTeX key as a hyperlink to its url to the clipboard +- Complete vietnam language translation in menu +- Generalize German translation of database into "Datenbank" +- Improve language quality of the German translation of shared database +- Change "Recent files" to "Recent databases" to keep the file menu consistent +- Customized importer files need to be slightly changed since the class `ImportFormat` was renamed to `Importer` ### Fixed +- Fixed [#2092](https://github.com/JabRef/jabref/issues/2092): "None"-button in date picker clears the date field +- Fixed [#1993](https://github.com/JabRef/jabref/issues/1993): Various optimizations regarding search performance +- Fixed [koppor#160](https://github.com/koppor/jabref/issues/160): Tooltips now working in the main table +- Fixed [#2054](https://github.com/JabRef/jabref/issues/2054): Ignoring a new version now works as expected +- Fixed [#1542](https://github.com/JabRef/jabref/issues/1542): Improved error messages when using fetcher - Fixed selecting an entry out of multiple duplicates - Fixed [#617](https://github.com/JabRef/jabref/issues/617): `Enter` in global search opens the selected entry & `Enter` in search dialog window opens the selected entry - Entries in the SearchResultPanel will be shown correctly (Latex to Unicode) @@ -45,12 +74,13 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - Selecting an entry in the search result Window will now select the correct entry in the bib file - Entries in the SearchResultDialog are now converted to Unicode - Suggestions in the autocomplete (search) are now in Unicode -- Fixed NullPointerException when opening search result window for an untitled database +- Fixed NullPointerException when opening search result window for an untitled database - Fixed entry table traversal with Tab (no column traversal thus no double jump) - Fixed [#1757](https://github.com/JabRef/jabref/issues/1757): Crash after saving illegal argument in entry editor - Fixed [#1663](https://github.com/JabRef/jabref/issues/1663): Better multi-monitor support - Fixed [#1882](https://github.com/JabRef/jabref/issues/1882): Crash after saving illegal bibtexkey in entry editor - Fixed field `location` containing only city is not exported correctly to MS-Office 2007 xml format +- Fixed [#1235](https://github.com/JabRef/jabref/issues/1235): Modified Key bindings do not work correctly - Fixed field `key` field is not exported to MS-Office 2008 xml format - Fixed [#1181](https://github.com/JabRef/jabref/issues/1181) and [#1504](https://github.com/JabRef/jabref/issues/1504): Improved "Normalize to BibTeX name format": Support separated names with commas and colons. Considered name affixes such as "Jr". - Fixed download files failed silently when an invalid directory is selected @@ -59,11 +89,20 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - Fixed loop when pulling changes (shared database) when current selected field has changed - Fixed [#1958](https://github.com/JabRef/jabref/issues/1958): Verbatim fields are no longer checked for HTML encoded characters by integrity checks - Fixed [#1937](https://github.com/JabRef/jabref/issues/1937): If no help page for the current chosen language exists, the english help page will be shown +- Fixed [#2060](https://github.com/JabRef/jabref/issues/2060): Medline fetcher now imports data in UTF-8 encoding +- Fixed file menu displays wrong hotkey in the German translation +- Fixed [#2090](https://github.com/JabRef/jabref/issues/#2090): If special fields were not selected, two menu item separator were shown +- Fixed [#2064](https://github.com/JabRef/jabref/issues/2064): Not all `other fields` are shown on entry change of same type +- Fixed [#2104](https://github.com/JabRef/jabref/issues/#2104): Crash after saving BibTeX source with parsing error +- Fixed [#2109](https://github.com/JabRef/jabref/issues/#2109): Ctrl-s doesn't trigger parsing error message +- Fixed RTFChars would only use "?" for characters with unicode over the value of 127, now it uses the base character (é -> e instead of ?) ### Removed -- The non-supported feature of being able to define file directories for any extension is removed. Still, it should work for older databases using the legacy `ps` and `pdf` fields, although we strongly encourage using the `file` field. +- Removed 2nd preview style +- The non-supported feature of being able to define file directories for any extension is removed. Still, it should work for older databases using the legacy `ps` and `pdf` fields, although we strongly encourage using the `file` field. - Automatic migration for the `evastar_pdf` field is removed. - +- We removed the customizable "content selectors" since they are replaced by the auto-completion feature +- Removed optional fields from `other fields` (BibTeX), Removed deprecated fields from `other fields` (BibLaTeX) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2043f8b6b2b..6ce8c6c8948 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,8 +42,7 @@ More information on this can be found via `man git-shortlog`. Please, **do not add yourself at `@authors`**. The contribution information is tracked via the version control system. -We are currently in transition from [GPL](https://tldrlegal.com/license/gnu-general-public-license-v2) to the [MIT license](https://tldrlegal.com/license/mit-license). -Thus, all your contributions are considered being made under MIT license. +Your contribution is considered being made under [MIT license](https://tldrlegal.com/license/mit-license). ### Write a good commit message @@ -85,7 +84,7 @@ because . Add new Localization.lang("KEY") to Java file. Tests fail. In the test output a snippet is generated which must be added to the English translation file. There is also a snippet generated for the non-English files, but this is irrelevant. Add snippet to English translation file located at `src/main/resources/l10n/JabRef_en.properties` -With `gradlew generateMissingTranslationKeys` the "KEY" is added to the other translation files as well. +With `gradlew localizationUpdate` the "KEY" is added to the other translation files as well. Tests are green again. You can also directly run the specific test in your IDE. The test "LocalizationConsistencyTest" is placed under `src/test/java/net.sf.jabref.logic.l10n/LocalizationConsistencyTest.java` diff --git a/README.md b/README.md index a1774512912..45b9cfddcad 100644 --- a/README.md +++ b/README.md @@ -104,9 +104,7 @@ Releasing is done using [CircleCI](https://circleci.com/gh/JabRef/jabref). A ful ## License -We are currently in transition from [GPL](https://tldrlegal.com/license/gnu-general-public-license-v2) to the [MIT license](https://tldrlegal.com/license/mit-license). -Thus, all new contributions are considered being made under MIT license. - +Since version 3.6, JabRef is licensed under the [MIT license](https://tldrlegal.com/license/mit-license). See the [LICENSE.md](LICENSE.md) for the full MIT license. JabRef also uses libraries distributed by other parties. diff --git a/build.gradle b/build.gradle index 967dedc5c3e..14b7b05b901 100644 --- a/build.gradle +++ b/build.gradle @@ -51,6 +51,9 @@ install4j { repositories { jcenter() + maven { + url 'https://oss.sonatype.org/content/groups/public' + } } configurations { @@ -97,7 +100,7 @@ dependencies { // VersionEye states that 6.0.4 is the most recent version, but http://dev.mysql.com/downloads/connector/j/ shows that as "Development Release" compile 'mysql:mysql-connector-java:5.1.39' - compile 'org.postgresql:postgresql:9.4.1210' + compile 'com.impossibl.pgjdbc-ng:pgjdbc-ng:0.6' compile 'net.java.dev.glazedlists:glazedlists_java15:1.9.1' compile fileTree(dir: 'lib', includes: ['*.jar']) @@ -118,6 +121,13 @@ dependencies { compile 'org.xmlunit:xmlunit-core:2.2.1' compile 'org.xmlunit:xmlunit-matchers:2.2.1' + // need to use snapshots as the stable version is from 2013 and doesn't support v1.0.1 CitationStyles + compile 'org.citationstyles:styles:1.0.1-SNAPSHOT' + compile 'org.citationstyles:locales:1.0.1-SNAPSHOT' + compile 'de.undercouch:citeproc-java:0.6' + // in Java 8 Rhino was replaced by Nashorn, but 'de.undercouch:citeproc-java:0.6' depends on Rhino + compile 'org.mozilla:rhino:1.7.7.1' + testCompile 'junit:junit:4.12' testCompile 'org.mockito:mockito-core:1.10.19' testCompile 'com.github.tomakehurst:wiremock:2.1.12' @@ -127,7 +137,8 @@ dependencies { sourceSets { main { java { - srcDirs = ["src/main/java", "src/main/gen"] + // remove "src/oracleMock" if ojdbc.jar is available + srcDirs = ["src/main/java", "src/main/gen", "src/oracleMock"] } } databaseTest { diff --git a/external-libraries.txt b/external-libraries.txt index e2a892cdc75..ccba7055ef8 100644 --- a/external-libraries.txt +++ b/external-libraries.txt @@ -52,6 +52,11 @@ Project: java-diff-utils URL: http://code.google.com/p/java-diff-utils/ License: Apache 2.0 +Id: com.impossibl.pgjdbc-ng:pgjdbc-ng +Project: pgjdbc-ng +URL: http://impossibl.github.io/pgjdbc-ng +License: BSD + Id: com.jgoodies:jgoodies-common Project: JGoodies Common URL: http://www.jgoodies.com/downloads/libraries/ @@ -142,11 +147,6 @@ Project: SwingX URL: https://swingx.java.net/ License: LGPL 3.0 -Id: org.postgresql:postgresql -Project: PostgreSQL JDBC Driver -URL: http://jdbc.postgresql.org/download.html -License: BSD - Id: microba Path: lib/microba.jar Project: Microba @@ -159,4 +159,24 @@ Project: Spin URL: http://spin.sourceforge.net/ License: LGPL 2.1+ +Id: org.citationstyles.styles +Project: CSL Styles +URL: citationStyles.org +Licence: Creative Commons Attribution-ShareAlike 3.0 Unported license + +Id: org.citationstyles.locales +Project: CSL Locales +URL: citationStyles.org +Licence: Creative Commons Attribution-ShareAlike 3.0 Unported license + +Id: de.undercouch.citeproc-java +Project: Citeproc-Java +URL: http://michel-kraemer.github.io/citeproc-java/ +Licence: Apache License, Version 2.0 + +Id: org.mozilla.rhino +Project: Rhino +URL: https://developer.mozilla.org/de/docs/Rhino +Licence: Mozilla Public License Version 2.0 + The last entry has to end with an empty line. Otherwise the entry is not present in About.html. diff --git a/jabref.install4j b/jabref.install4j index 0433156f0ed..ba20c65f373 100644 --- a/jabref.install4j +++ b/jabref.install4j @@ -750,4 +750,9 @@ return true; + + -XX:+UseG1GC + -XX:+UseStringDeduplication + -XX:StringTableSize=1000003 + diff --git a/licenses/de.undercouch.citeproc-java.txt b/licenses/de.undercouch.citeproc-java.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/licenses/de.undercouch.citeproc-java.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/org.citationstyles.locales.txt b/licenses/org.citationstyles.locales.txt new file mode 100644 index 00000000000..604209a8046 --- /dev/null +++ b/licenses/org.citationstyles.locales.txt @@ -0,0 +1,359 @@ +Creative Commons Legal Code + +Attribution-ShareAlike 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(f) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined below) for the purposes of this + License. + c. "Creative Commons Compatible License" means a license that is listed + at https://creativecommons.org/compatiblelicenses that has been + approved by Creative Commons as being essentially equivalent to this + License, including, at a minimum, because that license: (i) contains + terms that have the same purpose, meaning and effect as the License + Elements of this License; and, (ii) explicitly permits the relicensing + of adaptations of works made available under that license under this + License or a Creative Commons jurisdiction license with the same + License Elements as this License. + d. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + e. "License Elements" means the following high-level license attributes + as selected by Licensor and indicated in the title of this License: + Attribution, ShareAlike. + f. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + g. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + h. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + i. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + j. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + k. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; and, + iii. Voluntary License Schemes. The Licensor waives the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(c), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(c), as requested. + b. You may Distribute or Publicly Perform an Adaptation only under the + terms of: (i) this License; (ii) a later version of this License with + the same License Elements as this License; (iii) a Creative Commons + jurisdiction license (either this or a later license version) that + contains the same License Elements as this License (e.g., + Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible + License. If you license the Adaptation under one of the licenses + mentioned in (iv), you must comply with the terms of that license. If + you license the Adaptation under the terms of any of the licenses + mentioned in (i), (ii) or (iii) (the "Applicable License"), you must + comply with the terms of the Applicable License generally and the + following provisions: (I) You must include a copy of, or the URI for, + the Applicable License with every copy of each Adaptation You + Distribute or Publicly Perform; (II) You may not offer or impose any + terms on the Adaptation that restrict the terms of the Applicable + License or the ability of the recipient of the Adaptation to exercise + the rights granted to that recipient under the terms of the Applicable + License; (III) You must keep intact all notices that refer to the + Applicable License and to the disclaimer of warranties with every copy + of the Work as included in the Adaptation You Distribute or Publicly + Perform; (IV) when You Distribute or Publicly Perform the Adaptation, + You may not impose any effective technological measures on the + Adaptation that restrict the ability of a recipient of the Adaptation + from You to exercise the rights granted to that recipient under the + terms of the Applicable License. This Section 4(b) applies to the + Adaptation as incorporated in a Collection, but this does not require + the Collection apart from the Adaptation itself to be made subject to + the terms of the Applicable License. + c. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and (iv) , consistent with Ssection 3(b), in the case of an + Adaptation, a credit identifying the use of the Work in the Adaptation + (e.g., "French translation of the Work by Original Author," or + "Screenplay based on original Work by Original Author"). The credit + required by this Section 4(c) may be implemented in any reasonable + manner; provided, however, that in the case of a Adaptation or + Collection, at a minimum such credit will appear, if a credit for all + contributing authors of the Adaptation or Collection appears, then as + part of these credits and in a manner at least as prominent as the + credits for the other contributing authors. For the avoidance of + doubt, You may only use the credit required by this Section for the + purpose of attribution in the manner set out above and, by exercising + Your rights under this License, You may not implicitly or explicitly + assert or imply any connection with, sponsorship or endorsement by the + Original Author, Licensor and/or Attribution Parties, as appropriate, + of You or Your use of the Work, without the separate, express prior + written permission of the Original Author, Licensor and/or Attribution + Parties. + d. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR +OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY +KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, +INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, +FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF +LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, +WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION +OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of the License. + + Creative Commons may be contacted at https://creativecommons.org/. diff --git a/licenses/org.citationstyles.styles.txt b/licenses/org.citationstyles.styles.txt new file mode 100644 index 00000000000..604209a8046 --- /dev/null +++ b/licenses/org.citationstyles.styles.txt @@ -0,0 +1,359 @@ +Creative Commons Legal Code + +Attribution-ShareAlike 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(f) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined below) for the purposes of this + License. + c. "Creative Commons Compatible License" means a license that is listed + at https://creativecommons.org/compatiblelicenses that has been + approved by Creative Commons as being essentially equivalent to this + License, including, at a minimum, because that license: (i) contains + terms that have the same purpose, meaning and effect as the License + Elements of this License; and, (ii) explicitly permits the relicensing + of adaptations of works made available under that license under this + License or a Creative Commons jurisdiction license with the same + License Elements as this License. + d. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + e. "License Elements" means the following high-level license attributes + as selected by Licensor and indicated in the title of this License: + Attribution, ShareAlike. + f. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + g. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + h. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + i. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + j. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + k. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; and, + iii. Voluntary License Schemes. The Licensor waives the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(c), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(c), as requested. + b. You may Distribute or Publicly Perform an Adaptation only under the + terms of: (i) this License; (ii) a later version of this License with + the same License Elements as this License; (iii) a Creative Commons + jurisdiction license (either this or a later license version) that + contains the same License Elements as this License (e.g., + Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible + License. If you license the Adaptation under one of the licenses + mentioned in (iv), you must comply with the terms of that license. If + you license the Adaptation under the terms of any of the licenses + mentioned in (i), (ii) or (iii) (the "Applicable License"), you must + comply with the terms of the Applicable License generally and the + following provisions: (I) You must include a copy of, or the URI for, + the Applicable License with every copy of each Adaptation You + Distribute or Publicly Perform; (II) You may not offer or impose any + terms on the Adaptation that restrict the terms of the Applicable + License or the ability of the recipient of the Adaptation to exercise + the rights granted to that recipient under the terms of the Applicable + License; (III) You must keep intact all notices that refer to the + Applicable License and to the disclaimer of warranties with every copy + of the Work as included in the Adaptation You Distribute or Publicly + Perform; (IV) when You Distribute or Publicly Perform the Adaptation, + You may not impose any effective technological measures on the + Adaptation that restrict the ability of a recipient of the Adaptation + from You to exercise the rights granted to that recipient under the + terms of the Applicable License. This Section 4(b) applies to the + Adaptation as incorporated in a Collection, but this does not require + the Collection apart from the Adaptation itself to be made subject to + the terms of the Applicable License. + c. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and (iv) , consistent with Ssection 3(b), in the case of an + Adaptation, a credit identifying the use of the Work in the Adaptation + (e.g., "French translation of the Work by Original Author," or + "Screenplay based on original Work by Original Author"). The credit + required by this Section 4(c) may be implemented in any reasonable + manner; provided, however, that in the case of a Adaptation or + Collection, at a minimum such credit will appear, if a credit for all + contributing authors of the Adaptation or Collection appears, then as + part of these credits and in a manner at least as prominent as the + credits for the other contributing authors. For the avoidance of + doubt, You may only use the credit required by this Section for the + purpose of attribution in the manner set out above and, by exercising + Your rights under this License, You may not implicitly or explicitly + assert or imply any connection with, sponsorship or endorsement by the + Original Author, Licensor and/or Attribution Parties, as appropriate, + of You or Your use of the Work, without the separate, express prior + written permission of the Original Author, Licensor and/or Attribution + Parties. + d. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR +OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY +KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, +INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, +FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF +LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, +WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION +OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of the License. + + Creative Commons may be contacted at https://creativecommons.org/. diff --git a/licenses/org.mozilla.rhino.txt b/licenses/org.mozilla.rhino.txt new file mode 100644 index 00000000000..cd6ebb83d75 --- /dev/null +++ b/licenses/org.mozilla.rhino.txt @@ -0,0 +1,375 @@ +The majority of Rhino is licensed under the MPL 2.0: + +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/localization.gradle b/localization.gradle index 5e820512105..7929053c7da 100644 --- a/localization.gradle +++ b/localization.gradle @@ -10,48 +10,49 @@ dependencies { jython 'org.python:jython-standalone:2.7.0' } -task checkTranslations(type: JavaExec) { - description "Print empty and duplicate translations." +task localizationStatusWithMarkdown(type: JavaExec) { + description "Creates an update file in Markdown" group = 'Localization' main 'org.python.util.jython' classpath project.configurations.jython.asPath args file("scripts/syncLang.py") - args "-d" + args "markdown" } -task checkTranslationsSummary(type: JavaExec) { - description "Print summary of empty and duplicate translations." +task localizationStatus(type: JavaExec) { + description "Prints the current status" group = 'Localization' main 'org.python.util.jython' classpath project.configurations.jython.asPath args file("scripts/syncLang.py") - args "-c" + args "status" } -task showMissingTranslationKeys(type: JavaExec) { - description "Prints differences between the English translation and translations in other languages." +task localizationStatusExtended(type: JavaExec) { + description "Prints the current status (extended output)" group = 'Localization' main 'org.python.util.jython' classpath project.configurations.jython.asPath args file("scripts/syncLang.py") - args "-t" + args "status" + args "--extended" } -task generateMissingTranslationKeys(type: JavaExec) { - description "Prints differences between the English translation and translations in other languages, and updates translations if possible." +task localizationUpdate(type: JavaExec) { + description "Updates the localization files (fixes duplicates, adds missing keys, and sort them" group = 'Localization' main 'org.python.util.jython' classpath project.configurations.jython.asPath args file("scripts/syncLang.py") - args "-t" - args "-u" + args "update" } -task sortKeysInTranslationFiles(type: JavaExec) { - description "Sorts the the keys in all localization Files according to the key order in the english files" +task localizationUpdateExtended(type: JavaExec) { + description "Updates the localization files (fixes duplicates, adds missing keys, and sort them (extended output)" group = 'Localization' main 'org.python.util.jython' classpath project.configurations.jython.asPath args file("scripts/syncLang.py") - args "-s" + args "update" + args "--extended" } diff --git a/scripts/.gitignore b/scripts/.gitignore index 66b567505ce..e2c8e94b048 100644 --- a/scripts/.gitignore +++ b/scripts/.gitignore @@ -1,2 +1,6 @@ jq jq.exe + +# python +*.pyc +*$py.class diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 00000000000..e5425d52e3c --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,23 @@ +# Script usage + +The Script has following commands available +- `$ python scripts/syncLang.py status [--extended]` + - prints the current status to the terminal + - `[--extended]` if the translations keys which create problems should be printed + - usable with Gradle tasks + - `$ gradle localizationStatus` + - `$ gradle localizationStatusExtended` + + +- `$ python scripts/syncLang.py markdown` + - Creates a markdown file of the current status and opens it + - usable with Gradle tasks + - `$ gradle localizationStatusWithMarkdown` + + +- `$ python scripts/syncLang.py update [--extended]` + - compares all the localization files against the English one and fixes unambiguous duplicates, removes obsolete keys, adds missing keys, and sorts them + - `[--extended]` if the translations keys which create problems should be printed + - usable with Gradle tasks + - `$ gradle localizationUpdate` + - `$ gradle localizationUpdateExtended` diff --git a/scripts/after-failure.sh b/scripts/after-failure.sh new file mode 100755 index 00000000000..fa029d36898 --- /dev/null +++ b/scripts/after-failure.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# taken from https://github.com/lhotari/travis-gradle-test-failures-to-console/blob/master/travis/junit-errors-to-stdout.sh +IFS=' +' +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +if [ "$TRAVIS" = "true" ]; then + #echo 'Installing xml-twig-tools and xsltproc....' + sudo apt-get install -qq -y --force-yes xml-twig-tools xsltproc > /dev/null +fi +ROOTDIR="$1" +if [ -z "$ROOTDIR" ]; then + ROOTDIR="." +fi +echo 'Formatting results...' +FILES=$(find "$ROOTDIR" -path '*/build/test-results/*.xml' | xargs --no-run-if-empty xml_grep --files --cond 'testsuite[@failures > 0 or @errors > 0]') +if [ -n "$FILES" ]; then + for file in $FILES; do + echo "Formatting $file" + if [ -f "$file" ]; then + echo '=====================================================' + xsltproc "$DIR/junit-xml-format-errors.xsl" "$file" + fi + done + echo '=====================================================' +else + echo 'No */build/test-results/*.xml files found with failing tests.' +fi diff --git a/scripts/junit-xml-format-errors.xsl b/scripts/junit-xml-format-errors.xsl new file mode 100644 index 00000000000..614c7748229 --- /dev/null +++ b/scripts/junit-xml-format-errors.xsl @@ -0,0 +1,61 @@ + + + + + + Testsuite: + +Tests run: + + , Failures: + + , Errors: + + , Time elapsed: + + sec + +--------- ----------- --------- + + + + + + + +Testcase: + + took + + + FAILURE + ERROR + SUCCESS + + + + + + + + + + + + + + + +------ Standard output ------ + + + + + + +------ Error output ------ + + + + + diff --git a/scripts/logger.py b/scripts/logger.py new file mode 100644 index 00000000000..6226645ede8 --- /dev/null +++ b/scripts/logger.py @@ -0,0 +1,29 @@ +def enum(**enums): + return type('Enum', (), enums) + + +OUTPUT_COLORS = enum( + OK='\033[0;32m', + WARN='\033[0;33m', + ERROR='\033[0;31m', + ENDC='\033[0;38m' +) + + +def error(content): + print u"{color_error}{content}{color_end}".encode('utf8') \ + .format(color_error=OUTPUT_COLORS.ERROR, content=str(content.encode('utf8')), color_end=OUTPUT_COLORS.ENDC) + + +def warn(content): + print u"{color_error}{content}{color_end}".encode('utf8') \ + .format(color_error=OUTPUT_COLORS.WARN, content=str(content.encode('utf8')), color_end=OUTPUT_COLORS.ENDC).encode('utf8') + + +def ok(content): + print u"{color_error}{content}{color_end}".encode('utf8') \ + .format(color_error=OUTPUT_COLORS.OK, content=str(content.encode('utf8')), color_end=OUTPUT_COLORS.ENDC).encode('utf8') + + +def neutral(content): + print content.encode('utf8') diff --git a/scripts/syncLang.py b/scripts/syncLang.py index dcccc87b4ea..d15081de5f9 100644 --- a/scripts/syncLang.py +++ b/scripts/syncLang.py @@ -1,306 +1,458 @@ # coding=utf-8 +from __future__ import print_function +import codecs +import datetime import os +import subprocess import sys +import webbrowser -res_dir = "src/main/resources/l10n" +import logger -keyFiles = {} +RES_DIR = "src/main/resources/l10n" +STATUS_FILE = "status.md" -def enum(**enums): - return type('Enum', (), enums) +def get_current_branch(): + """ + :return: string: the current git branch + """ + return subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).rstrip() -OUTPUT_COLORS = enum(OK='\033[0;32m', FAIL='\033[0;31m', ENDC='\033[0;37m') +def get_current_hash_short(): + """ + :return: string: the current git hash (short) + """ + return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).rstrip() -def get_keys_from_lines(lines): + +def open_file(filename): """ - Builds a list of all translation keys in the list of lines. + :param filename: string: opens the file with its associated application + """ + webbrowser.open(filename) + - :param lines: a list of strings - :return: the sorted keys within the list of strings +def get_filename(filepath): """ - keys = [] - for line in lines: - comment = line.find("#") - if comment != 0: - index = line.find("=") - while (index > 0) and (line[index - 1] == "\\"): - index = line.find("=", index + 1) - if index > 0: - keys.append(line[0:index]) - return keys + removes the res_dir path + + :param filepath: string + :return: string + """ + return filepath.replace("{}\\".format(RES_DIR), "") -def find_missing_keys(first_list, second_list): +def read_file(filename, encoding="UTF-8"): """ - Finds all keys in the first list that are not present in the second list + :param filename: string + :param encoding: string: the encoding of the file to read (standard: `UTF-8`) + :return: list of unicode strings: the lines of the file + """ + with codecs.open(filename, encoding=encoding) as file: + return [u"{}\r\n".format(line.strip()) for line in file.readlines()] + - :param first_list: a list - :param second_list: a list - :return: a list +def write_file(filename, content): """ - missing = [] - for key in first_list: - if key not in second_list: - missing.append(key) - return missing + writes the lines to the file in `UTF-8` + :param filename: string + :param content: list of unicode unicode: the lines to write + """ + codecs.open(filename, "w", encoding='utf-8').writelines(content) -def read_all_lines(filename): - f1 = open(filename) - lines = f1.readlines() - f1.close() - return lines +def get_main_jabref_preferences(): + """ + :return: string: path to JabRef_en.preference + """ + return os.path.join(RES_DIR, "JabRef_en.properties") -def append_keys_to_file(filename, keys): +def get_other_jabref_properties(): """ - Appends all the given keys to the file terminating with an equals sign + :return: list of strings: all the JabRef_*.preferences files without the english one """ - f = open(filename, "a") - f.write("\n") - for key in keys: - f.write(key + "=\n") - f.close() + jabref_property_files = filter(lambda s: (s.startswith('JabRef_') and not (s.startswith('JabRef_en'))), os.listdir(RES_DIR)) + return [os.path.join(RES_DIR, file) for file in jabref_property_files] -def remove_keys_from_file(filename, keys): - lines = open(filename).readlines() - lines_to_write = [] - for line in lines: - add = True - for key in keys: - if(line.startswith(key+"=")): - add = False - if add: - lines_to_write.append(line) - open(filename, 'w').writelines(lines_to_write) - - -def compare_property_files_to_main_property_file(main_properties_file, other_properties_files, append_missing_keys_to_other_properties_files): - keys_in_properties_file = get_keys_from_lines(read_all_lines(main_properties_file)) - - for other_properties_file in other_properties_files: - keys_in_other_properties_file = get_keys_from_lines(read_all_lines(other_properties_file)) - keys_missing = find_missing_keys(keys_in_properties_file, keys_in_other_properties_file) - keys_obsolete = find_missing_keys(keys_in_other_properties_file, keys_in_properties_file) - - print "\n\nFile '" + other_properties_file + "'\n" - if not keys_missing: - print "----> No missing keys." - else: - print "----> Missing keys:" - for key in keys_missing: - print key - - if append_missing_keys_to_other_properties_files: - append_keys_to_file(other_properties_file, keys_missing) - print "" - - if not keys_obsolete: - print "----> No possible obsolete keys (not in English language file)." - else: - print "----> Possible obsolete keys (not in English language file):" - for key in keys_obsolete: - print key - - if append_missing_keys_to_other_properties_files: - remove_keys_from_file(other_properties_file, keys_obsolete) - - print "" - - -def append_property(properties_file, key, value): - f = open(properties_file, "a") - f.write(key + "=" + value + "\n") - f.close() - - -def find_duplicate_keys_and_keys_with_no_value(current_file, display_keys): - lines = read_all_lines(current_file) - mappings = {} - duplication_count = 0 - empty_values_count = 0 - for line in lines: - is_no_comment = line.find("#") != 0 - index = line.find("=") - contains_property = index > 0 - if is_no_comment and contains_property: - key = line[0:index] - value = line[index + 1:].strip() - if key in mappings: - mappings[key].append(value) - duplication_count += 1 - if display_keys: - print "Duplicate: " + current_file + ": " + key + " =", - print mappings[key] - else: - mappings[key] = [value] - if value == "": - empty_values_count += 1 - if display_keys: - print "Empty value: " + current_file + ": " + key - issues_count = duplication_count + empty_values_count +def get_all_jabref_properties(): + """ + :return: list of strings: all the JabRef_*.preferences files with the english at the beginning + """ + jabref_property_files = get_other_jabref_properties() + jabref_property_files.insert(0, os.path.join(RES_DIR, "JabRef_en.properties")) + return jabref_property_files - message = "" - if issues_count == 0: - message = "ok" - elif duplication_count > 0: - message += str(duplication_count) + " duplicates. " - elif empty_values_count > 0: - message += str(empty_values_count) + " empty values. " - print current_file + ": " + message + +def get_main_menu_properties(): + """ + :return: string: path to Menu_en.preference + """ + return os.path.join(RES_DIR, "Menu_en.properties") -def has_duplicate_keys(keys_to_check): +def get_other_menu_properties(): """ - Checks if the property lines has duplicates + :return: list of strings: all the Menu_*.preferences files without the english one + """ + menu_property_files = filter(lambda s: (s.startswith('Menu_') and not (s.startswith('Menu_en'))), os.listdir(RES_DIR)) + return [os.path.join(RES_DIR, file) for file in menu_property_files] + - :param lines: a list of Strings - :return: a boolean +def get_all_menu_properties(): + """ + :return: list of strings: all the Menu_*.preferences files with the english at the beginning """ - keys_checked = [] - for key in keys_to_check: - if key in keys_checked: - return True - else: - keys_checked.append(key) - return False + menu_property_files = get_other_menu_properties() + menu_property_files.insert(0, os.path.join(RES_DIR, "Menu_en.properties")) + return menu_property_files def get_key_from_line(line): """ Tries to extract the key from the line - :param line: a String - :return: the key (String) or None + :param line: unicode string + :return: unicode string: the key or None """ - comment_line = line.find("#") - if comment_line != 0: + if line.find("#") != 0 or line.find("!") != 0: index_key_end = line.find("=") while (index_key_end > 0) and (line[index_key_end - 1] == "\\"): index_key_end = line.find("=", index_key_end + 1) if index_key_end > 0: - return line[0:index_key_end] + return line[0:index_key_end].strip() return None -def get_keys_dict(property_lines): +def get_key_and_value_from_line(line): + """ + Tries to extract the key and value from the line + + :param line: unicode string + :return: (unicode string, unicode string) or (None, None): (key, value) + """ + if line.find("#") != 0 or line.find("!") != 0: + index_key_end = line.find("=") + while (index_key_end > 0) and (line[index_key_end - 1] == "\\"): + index_key_end = line.find("=", index_key_end + 1) + if index_key_end > 0: + return line[0:index_key_end].strip(), line[index_key_end + 1:].strip() + return None, None + + +def get_translations_as_dict(lines): + """ + :param lines: list of unicode strings + :return: dict of unicode strings: + """ + translations = {} + for line in lines: + key, value = get_key_and_value_from_line(line=line) + if key: + translations[key] = value + return translations + + +def get_empty_keys(lines): + """ + :param lines: list of unicode strings + :return: list of unicode strings: the keys with empty values + """ + not_translated = [] + keys = get_translations_as_dict(lines=lines) + for key, value in keys.iteritems(): + if not value: + not_translated.append(key) + return not_translated + + +def fix_duplicates(lines): """ - Saves all the localizations (the whole String 'translationKey=translation') - in a dict with their translationKey as the dict key + Fixes all unambiguous duplicates - :param property_lines: a list - :return: a dict + :param lines: list of unicode strings + :return: (list of unicode strings, list of unicode strings): not fixed ambiguous duplicates, fixed unambiguous duplicates """ keys = {} - for line in property_lines: + fixed = [] + not_fixed = [] + for line in lines: + key, value = get_key_and_value_from_line(line=line) + if key: + if key in keys: + if not keys[key]: + fixed.append(u"{key}={value}".format(key=key, value=keys[key])) + keys[key] = value + elif not value: + fixed.append(u"{key}={value}".format(key=key, value=value)) + elif keys[key] == value: + fixed.append(u"{key}={value}".format(key=key, value=value)) + elif keys[key] != value: + not_fixed.append(u"{key}={value}".format(key=key, value=value)) + not_fixed.append(u"{key}={value}".format(key=key, value=keys[key])) + else: + keys[key] = value + + return keys, not_fixed, fixed + + +def get_keys_from_lines(lines): + """ + Builds a list of all translation keys in the list of lines. + + :param lines: a list of unicode strings + :return: list of unicode strings: the sorted keys within the lines + """ + keys = [] + for line in lines: key = get_key_from_line(line) - if key is not None: - keys[key] = line + if key: + keys.append(key) return keys -def sort_property_files_to_main_property_file(main_properties_file, other_property_file): - """ - Sorts the properties in the second property file in accordance of the first one - - :param main_properties_file: - :param other_property_file: - :return: - """ - lines_in_property_file = read_all_lines(main_properties_file) - keys_in_property_file = get_keys_from_lines(lines_in_property_file) - - for other_property_file in other_property_file: - lines_in_other_property_file = read_all_lines(other_property_file) - keys_in_other_property_file = get_keys_from_lines(lines_in_other_property_file) - keys_missing = find_missing_keys(keys_in_property_file, keys_in_other_property_file) - keys_obsolete = find_missing_keys(keys_in_other_property_file, keys_in_property_file) - other_has_duplicate_keys = has_duplicate_keys(keys_in_other_property_file) - - error_message = "" - if len(keys_missing) > 0: - error_message += " has missing keys;" - if len(keys_obsolete) > 0: - error_message += " has obsolete keys;" - if other_has_duplicate_keys: - error_message += " has duplicate keys;" - if len(error_message) > 0: - print "{color_fail}{file}:{message} skip file{color_end}" \ - .format(color_fail=OUTPUT_COLORS.FAIL, file=other_property_file, message=error_message, color_end=OUTPUT_COLORS.ENDC) - continue - - other_lines_to_write = [] - other_lines_key_map = get_keys_dict(lines_in_other_property_file) - for line in lines_in_property_file: - key = get_key_from_line(line) - if key is not None: - line_to_write = other_lines_key_map[key] - if not line_to_write.endswith("\n"): - line_to_write += "\n" - other_lines_to_write.append(line_to_write) +def get_missing_keys(first_list, second_list): + """ + Finds all keys in the first list that are not present in the second list + + :param first_list: list of unicode strings + :param second_list: list of unicode strings + :return: list of unicode strings + """ + missing = [] + for key in first_list: + if key not in second_list: + missing.append(key) + return missing + + +def get_duplicates(lines): + """ + finds all the duplicates and returns them + + :param lines: list of unicode strings + :return: list of unicode strings + """ + duplicates = [] + keys_checked = {} + for line in lines: + key, value = get_key_and_value_from_line(line=line) + if key: + if key in keys_checked: + duplicates.append(u"{key}={value}".format(key=key, value=value)) + translation_in_list = u"{key}={value}".format(key=key, value=keys_checked[key]) + if translation_in_list not in duplicates: + duplicates.append(translation_in_list) else: - other_lines_to_write.append(line) - open(other_property_file, "w").writelines(other_lines_to_write) + keys_checked[key] = value + return duplicates + + +def status(extended): + """ + prints the current status to the terminal - print "{color_ok}{file} has been sorted successfully{color_end}" \ - .format(color_ok=OUTPUT_COLORS.OK, file=other_property_file, color_end=OUTPUT_COLORS.ENDC) + :param extended: boolean: if the keys with problems should be printed + """ + def check_properties(main_property_file, property_files): + main_lines = read_file(filename=main_property_file) + main_keys = get_keys_from_lines(lines=main_lines) + + # the main property file gets compared to itself, but that is OK + for file in property_files: + filename = get_filename(filepath=file) + lines = read_file(file) + keys = get_keys_from_lines(lines=lines) + + keys_missing = get_missing_keys(main_keys, keys) + keys_obsolete = get_missing_keys(keys, main_keys) + keys_duplicate = get_duplicates(lines=lines) + keys_not_translated = get_empty_keys(lines=lines) + + num_keys = len(keys) + num_keys_missing = len(keys_missing) + num_keys_not_translated = len(keys_not_translated) + num_keys_obsolete = len(keys_obsolete) + num_keys_duplicate = len(keys_duplicate) + num_keys_translated = num_keys - num_keys_not_translated + + log = logger.error if num_keys_missing != 0 or num_keys_not_translated != 0 or num_keys_obsolete != 0 or num_keys_duplicate != 0 else logger.ok + log("Status of file '{file}' with {num_keys} Keys".format(file=filename, num_keys=num_keys)) + logger.ok("\t{} translated keys".format(num_keys_translated)) + + log = logger.error if num_keys_not_translated != 0 else logger.ok + log("\t{} not translated keys".format(num_keys_not_translated)) + if extended and num_keys_not_translated != 0: + logger.neutral(u"\t\t{}".format(", ".join(keys_not_translated))) + + log = logger.error if num_keys_missing != 0 else logger.ok + log("\t{} missing keys".format(num_keys_missing)) + if extended and num_keys_missing != 0: + logger.neutral(u"\t\t{}".format(", ".join(keys_missing))) + + log = logger.error if num_keys_obsolete != 0 else logger.ok + log("\t{} obsolete keys".format(num_keys_obsolete)) + if extended and num_keys_obsolete != 0: + logger.neutral(u"\t\t{}".format(", ".join(keys_obsolete))) + + log = logger.error if num_keys_duplicate != 0 else logger.ok + log("\t{} duplicates".format(num_keys_duplicate)) + if extended and num_keys_duplicate != 0: + logger.neutral(u"\t\t{}".format(", ".join(keys_duplicate))) + + check_properties(main_property_file=get_main_jabref_preferences(), property_files=get_all_jabref_properties()) + check_properties(main_property_file=get_main_menu_properties(), property_files=get_all_menu_properties()) + + +def update(extended): + """ + updates all the localization files + fixing unambiguous duplicates, removing obsolete keys, adding missing keys, and sorting them + + :param extended: boolean: if the keys with problems should be printed + """ + def update_properties(main_property_file, other_property_files): + main_lines = read_file(filename=main_property_file) + # saved the stripped lines + write_file(main_property_file, main_lines) + main_keys = get_keys_from_lines(lines=main_lines) + + main_duplicates = get_duplicates(lines=main_lines) + num_main_duplicates = len(main_duplicates) + if num_main_duplicates != 0: + logger.error("There are {num_duplicates} duplicates in {file}, please fix them manually".format(num_duplicates=num_main_duplicates, file=get_filename(filepath=main_property_file))) + if extended: + logger.neutral(u"\t{}".format(", ".join(main_duplicates))) + return + + + for other_property_file in other_property_files: + filename = get_filename(filepath=other_property_file) + lines = read_file(filename=other_property_file) + keys, not_fixed, fixed = fix_duplicates(lines=lines) + + num_keys = len(keys) + num_not_fixed = len(not_fixed) + num_fixed = len(fixed) + + if num_not_fixed != 0: + logger.error("There are {num_not_fixed_duplicates} ambiguous duplicates in {file}, please fix them manually".format(num_not_fixed_duplicates=num_not_fixed, file=filename)) + if extended: + logger.error(u"\t{}".format(u", ".join(not_fixed))) + continue + + keys_missing = get_missing_keys(main_keys, keys) + keys_obsolete = get_missing_keys(keys, main_keys) + + num_keys_missing = len(keys_missing) + num_keys_obsolete = len(keys_obsolete) + + for missing_key in keys_missing: + keys[missing_key] = "" + + for obsolete_key in keys_obsolete: + del keys[obsolete_key] + + other_lines_to_write = [] + for line in main_lines: + key = get_key_from_line(line) + if key is not None: + other_lines_to_write.append(u"{key}={value}\r\n".format(key=key, value=keys[key])) + else: + other_lines_to_write.append(line) + + sorted = len(lines) != len(other_lines_to_write) + if not sorted: + for old_line, new_lines in zip(lines, other_lines_to_write): + if old_line != new_lines: + sorted = True + + write_file(filename=other_property_file, content=other_lines_to_write) + + logger.ok("Processing file '{file}' with {num_keys} Keys".format(file=filename, num_keys=num_keys)) + if num_fixed != 0: + logger.ok("\tfixed {} unambiguous duplicates".format(num_fixed)) + if extended: + logger.neutral(u"\t\t{}".format(", ".join(fixed))) + + if num_keys_missing != 0: + logger.ok("\tadded {} missing keys".format(num_keys_missing)) + if extended: + logger.neutral(u"\t\t{}".format(", ".join(keys_missing))) + + if num_keys_obsolete != 0: + logger.ok("\tdeleted {} obsolete keys".format(num_keys_obsolete)) + if extended: + logger.neutral(u"\t\t{}".format(", ".join(keys_obsolete))) + + if sorted: + logger.ok("\thas been sorted successfully") + + update_properties(main_property_file=get_main_jabref_preferences(), other_property_files=get_other_jabref_properties()) + update_properties(main_property_file=get_main_menu_properties(), other_property_files=get_other_menu_properties()) + + +def status_create_markdown(): + """ + creates a markdown file of the current status and opens it + """ + def write_properties(property_files): + markdown.append("\n| Property file | Keys | Keys translated | Keys not translated | % translated |\n") + markdown.append("| ------------- | ---- | --------------- | ------------------- | ------------ |\n") + for file in property_files: + lines = read_file(file) + keys = get_translations_as_dict(lines=lines) + keys_missing_value = get_empty_keys(lines=lines) -if len(sys.argv) == 1: - print """This program must be run from the jabref base directory. - -Usage: syncLang.py option + num_keys = len(keys) + num_keys_missing_value = len(keys_missing_value) + num_keys_translated = num_keys - num_keys_missing_value + percent_translated = int((num_keys_translated / float(num_keys)) * 100) if num_keys != 0 else 0 + + markdown.append("| {file} | {num_keys} | {num_keys_translated} | {num_keys_missing} | {percent_translated} |\n" + .format(file=get_filename(filepath=file), num_keys=num_keys, num_keys_translated=num_keys_translated, num_keys_missing=num_keys_missing_value, percent_translated=percent_translated)) + + markdown = [] + date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M") + markdown.append("### Localization files status ({date} - Branch `{branch}` `{hash}`)\n".format(date=date, branch=get_current_branch(), hash=get_current_hash_short())) + + write_properties(property_files=get_all_jabref_properties()) + write_properties(property_files=get_all_menu_properties()) + write_file(STATUS_FILE, markdown) + logger.ok("Current status written to {}".format(STATUS_FILE)) + open_file(STATUS_FILE) + + +if len(sys.argv) == 2 and sys.argv[1] == "markdown": + status_create_markdown() + +elif (len(sys.argv) == 2 or len(sys.argv) == 3) and sys.argv[1] == "update": + update(extended=len(sys.argv) == 3 and (sys.argv[2] == "-e" or sys.argv[2] == "--extended")) + +elif (len(sys.argv) == 2 or len(sys.argv) == 3) and sys.argv[1] == "status": + status(extended=len(sys.argv) == 3 and (sys.argv[2] == "-e" or sys.argv[2] == "--extended")) + +else: + logger.neutral("""This program must be run from the JabRef base directory. + +Usage: syncLang.py {markdown, status [-e | --extended], update [-e | --extended]} Option can be one of the following: - - -c: Search the language files for empty and duplicate translations. Display only - counts for duplicated and empty values in each language file. - - -d: Search the language files for empty and duplicate translations. - For each duplicate set found, a list will be printed showing the various - translations for the same key. There is currently no option to remove duplicates - automatically. - - -s: Sort the keys in all language files according to "JabRef_en.properties" and "Menu_en.properties". - If there are duplicates or keys are missing the specific language file will be skipped! - - -t [-u]: Compare the contents of "JabRef_en.properties" and "Menu_en.properties" against the other - language files. The program will list for all the other files which keys from the English - file are missing. Additionally, the program will list keys in the other files which are - not present in the English file - possible obsolete keys. - - If the -u option is specified, all missing keys will automatically be added to the files - and all obsolete keys will be automatically removed. -""" - -elif (len(sys.argv) >= 2) and (sys.argv[1] == "-s"): - filesJabRef = filter(lambda s: (s.startswith('JabRef_') and not (s.startswith('JabRef_en'))), os.listdir(res_dir)) - filesJabRef = [os.path.join(res_dir, i) for i in filesJabRef] - filesMenu = filter(lambda s: (s.startswith('Menu_') and not (s.startswith('Menu_en'))), os.listdir(res_dir)) - filesMenu = [os.path.join(res_dir, i) for i in filesMenu] - - sort_property_files_to_main_property_file(os.path.join(res_dir, "JabRef_en.properties"), filesJabRef) - sort_property_files_to_main_property_file(os.path.join(res_dir, "Menu_en.properties"), filesMenu) - -elif (len(sys.argv) >= 2) and (sys.argv[1] == "-t"): - if (len(sys.argv) >= 3) and (sys.argv[2] == "-u"): - change_files = True - else: - change_files = False - - filesJabRef = filter(lambda s: (s.startswith('JabRef_') and not (s.startswith('JabRef_en'))), os.listdir(res_dir)) - filesJabRef = [os.path.join(res_dir, i) for i in filesJabRef] - filesMenu = filter(lambda s: (s.startswith('Menu_') and not (s.startswith('Menu_en'))), os.listdir(res_dir)) - filesMenu = [os.path.join(res_dir, i) for i in filesMenu] - - compare_property_files_to_main_property_file(os.path.join(res_dir, "JabRef_en.properties"), filesJabRef, change_files) - compare_property_files_to_main_property_file(os.path.join(res_dir, "Menu_en.properties"), filesMenu, change_files) - -elif (len(sys.argv) >= 2) and ((sys.argv[1] == "-d") or (sys.argv[1] == "-c")): - files = filter(lambda s: (s.startswith('JabRef_') and not (s.startswith('JabRef_en'))), os.listdir(res_dir)) - files.extend(filter(lambda s: (s.startswith('Menu_') and not (s.startswith('Menu_en'))), os.listdir(res_dir))) - files = [os.path.join(res_dir, i) for i in files] - for f in files: - find_duplicate_keys_and_keys_with_no_value(f, sys.argv[1] == "-d") + + status [-e | --extended]: + prints the current status to the terminal + [-e | --extended]: + if the translations keys which create problems should be printed + + markdown: + Creates a markdown file of the current status and opens it + + update [-e | --extended]: + compares all the localization files against the English one and fixes unambiguous duplicates, + removes obsolete keys, adds missing keys, and sorts them + [-e | --extended]: + if the translations keys which create problems should be printed +""") diff --git a/src/databaseTest/java/net/sf/jabref/shared/DBMSConnectorTest.java b/src/databaseTest/java/net/sf/jabref/shared/DBMSConnectionTest.java similarity index 51% rename from src/databaseTest/java/net/sf/jabref/shared/DBMSConnectorTest.java rename to src/databaseTest/java/net/sf/jabref/shared/DBMSConnectionTest.java index ca0d9b9b0c6..5de5085fec8 100644 --- a/src/databaseTest/java/net/sf/jabref/shared/DBMSConnectorTest.java +++ b/src/databaseTest/java/net/sf/jabref/shared/DBMSConnectionTest.java @@ -3,6 +3,7 @@ import java.sql.SQLException; import java.util.Collection; +import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -10,7 +11,7 @@ import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) -public class DBMSConnectorTest { +public class DBMSConnectionTest { @Parameter public DBMSType dbmsType; @@ -18,17 +19,17 @@ public class DBMSConnectorTest { @Parameters(name = "Test with {0} database system") public static Collection getTestingDatabaseSystems() { - return DBMSConnector.getAvailableDBMSTypes(); + return TestManager.getDBMSTypeTestParameter(); } @Test - public void testGetNewConnection() throws ClassNotFoundException, SQLException { - DBMSConnectionProperties properties = TestConnector.getConnectionProperties(dbmsType); - DBMSConnector.getNewConnection(properties); + public void testGetConnection() throws SQLException { + DBMSConnectionProperties properties = TestConnector.getTestConnectionProperties(dbmsType); + Assert.assertNotNull(new DBMSConnection(properties).getConnection()); } @Test(expected = SQLException.class) - public void testGetNewConnectionFail() throws SQLException, ClassNotFoundException { - DBMSConnector.getNewConnection(new DBMSConnectionProperties(dbmsType, "XXXX", 0, "XXXX", "XXXX", "XXXX")); + public void testGetConnectionFail() throws SQLException { + new DBMSConnection(new DBMSConnectionProperties(dbmsType, "XXXX", 0, "XXXX", "XXXX", "XXXX")).getConnection(); } } diff --git a/src/databaseTest/java/net/sf/jabref/shared/DBMSProcessorTest.java b/src/databaseTest/java/net/sf/jabref/shared/DBMSProcessorTest.java index d5dcc98ace0..80c3a5b1f09 100644 --- a/src/databaseTest/java/net/sf/jabref/shared/DBMSProcessorTest.java +++ b/src/databaseTest/java/net/sf/jabref/shared/DBMSProcessorTest.java @@ -1,6 +1,5 @@ package net.sf.jabref.shared; -import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Arrays; @@ -12,7 +11,6 @@ import net.sf.jabref.model.entry.BibEntry; import net.sf.jabref.shared.exception.OfflineLockException; -import net.sf.jabref.shared.exception.SharedEntryNotPresentException; import org.junit.After; import org.junit.Assert; @@ -26,7 +24,7 @@ @RunWith(Parameterized.class) public class DBMSProcessorTest { - private static Connection connection; + private DBMSConnection dbmsConnection; private DBMSProcessor dbmsProcessor; @Parameter @@ -34,18 +32,15 @@ public class DBMSProcessorTest { @Before - public void setUp() throws ClassNotFoundException, SQLException { - // Get only one connection for each parameter - if (TestConnector.currentConnectionType != dbmsType) { - connection = TestConnector.getTestConnection(dbmsType); - } - dbmsProcessor = DBMSProcessor.getProcessorInstance(connection, dbmsType); + public void setUp() throws SQLException { + dbmsConnection = TestConnector.getTestDBMSConnection(dbmsType); + dbmsProcessor = DBMSProcessor.getProcessorInstance(dbmsConnection); dbmsProcessor.setupSharedDatabase(); } @Parameters(name = "Test with {0} database system") public static Collection getTestingDatabaseSystems() { - return DBMSConnector.getAvailableDBMSTypes(); + return TestManager.getDBMSTypeTestParameter(); } @Test @@ -94,7 +89,7 @@ public void testInsertEntry() throws SQLException { } @Test - public void testUpdateEntry() throws OfflineLockException, SharedEntryNotPresentException, SQLException { + public void testUpdateEntry() throws OfflineLockException, SQLException { BibEntry expectedEntry = getBibEntryExample(); dbmsProcessor.insertEntry(expectedEntry); @@ -116,14 +111,8 @@ public void testUpdateEntry() throws OfflineLockException, SharedEntryNotPresent } } - @Test(expected = SharedEntryNotPresentException.class) - public void testUpdateNotExistingEntry() throws SharedEntryNotPresentException, OfflineLockException, SQLException { - BibEntry expectedEntry = getBibEntryExample(); - dbmsProcessor.updateEntry(expectedEntry); - } - @Test(expected = OfflineLockException.class) - public void testUpdateNewerEntry() throws OfflineLockException, SharedEntryNotPresentException, SQLException { + public void testUpdateNewerEntry() throws OfflineLockException, SQLException { BibEntry bibEntry = getBibEntryExample(); dbmsProcessor.insertEntry(bibEntry); @@ -135,7 +124,7 @@ public void testUpdateNewerEntry() throws OfflineLockException, SharedEntryNotPr } @Test - public void testUpdateEqualEntry() throws OfflineLockException, SharedEntryNotPresentException, SQLException { + public void testUpdateEqualEntry() throws OfflineLockException, SQLException { BibEntry expectedBibEntry = getBibEntryExample(); dbmsProcessor.insertEntry(expectedBibEntry); @@ -200,7 +189,7 @@ public void testGetNotExistingSharedEntry() { } @Test - public void testGetSharedIDVersionMapping() throws OfflineLockException, SharedEntryNotPresentException, SQLException { + public void testGetSharedIDVersionMapping() throws OfflineLockException, SQLException { BibEntry firstEntry = getBibEntryExample(); BibEntry secondEntry = getBibEntryExample(); @@ -275,7 +264,7 @@ private BibEntry getBibEntryExample() { private ResultSet selectFrom(String table) { try { - return connection.createStatement().executeQuery("SELECT * FROM " + escape(table)); + return dbmsConnection.getConnection().createStatement().executeQuery("SELECT * FROM " + escape(table)); } catch (SQLException e) { Assert.fail(e.getMessage()); return null; @@ -286,7 +275,7 @@ private ResultSet selectFrom(String table) { // Therefore this function was defined to improve the readability and to keep the code short. private void insertMetaData(String key, String value) { try { - connection.createStatement().executeUpdate("INSERT INTO " + escape("METADATA") + "(" + dbmsConnection.getConnection().createStatement().executeUpdate("INSERT INTO " + escape("METADATA") + "(" + escape("KEY") + ", " + escape("VALUE") + ") VALUES(" + escapeValue(key) + ", " + escapeValue(value) + ")"); } catch (SQLException e) { @@ -304,23 +293,6 @@ private String escapeValue(String value) { @After public void clear() throws SQLException { - if ((dbmsType == DBMSType.MYSQL) || (dbmsType == DBMSType.POSTGRESQL)) { - connection.createStatement().executeUpdate("DROP TABLE IF EXISTS " + escape("FIELD")); - connection.createStatement().executeUpdate("DROP TABLE IF EXISTS " + escape("ENTRY")); - connection.createStatement().executeUpdate("DROP TABLE IF EXISTS " + escape("METADATA")); - } else if (dbmsType == DBMSType.ORACLE) { - connection.createStatement().executeUpdate( - "BEGIN\n" + - "EXECUTE IMMEDIATE 'DROP TABLE " + escape("FIELD") + "';\n" + - "EXECUTE IMMEDIATE 'DROP TABLE " + escape("ENTRY") + "';\n" + - "EXECUTE IMMEDIATE 'DROP TABLE " + escape("METADATA") + "';\n" + - "EXECUTE IMMEDIATE 'DROP SEQUENCE " + escape("ENTRY_SEQ") + "';\n" + - "EXCEPTION\n" + - "WHEN OTHERS THEN\n" + - "IF SQLCODE != -942 THEN\n" + - "RAISE;\n" + - "END IF;\n" + - "END;"); - } + TestManager.clearTables(dbmsConnection); } } diff --git a/src/databaseTest/java/net/sf/jabref/shared/DBMSSynchronizerTest.java b/src/databaseTest/java/net/sf/jabref/shared/DBMSSynchronizerTest.java index c1b6d8b21bb..6a01bf31246 100644 --- a/src/databaseTest/java/net/sf/jabref/shared/DBMSSynchronizerTest.java +++ b/src/databaseTest/java/net/sf/jabref/shared/DBMSSynchronizerTest.java @@ -1,22 +1,27 @@ package net.sf.jabref.shared; -import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Map; import net.sf.jabref.logic.exporter.MetaDataSerializer; +import net.sf.jabref.logic.formatter.casechanger.LowerCaseFormatter; +import net.sf.jabref.model.bibtexkeypattern.AbstractBibtexKeyPattern; +import net.sf.jabref.model.bibtexkeypattern.GlobalBibtexKeyPattern; +import net.sf.jabref.model.cleanup.FieldFormatterCleanup; +import net.sf.jabref.model.cleanup.FieldFormatterCleanups; import net.sf.jabref.model.database.BibDatabase; import net.sf.jabref.model.database.BibDatabaseContext; +import net.sf.jabref.model.database.BibDatabaseMode; import net.sf.jabref.model.entry.BibEntry; import net.sf.jabref.model.entry.event.EntryEventSource; import net.sf.jabref.model.metadata.MetaData; import net.sf.jabref.shared.exception.DatabaseNotSupportedException; import net.sf.jabref.shared.exception.OfflineLockException; -import net.sf.jabref.shared.exception.SharedEntryNotPresentException; import org.junit.After; import org.junit.Assert; @@ -31,34 +36,36 @@ public class DBMSSynchronizerTest { private DBMSSynchronizer dbmsSynchronizer; - private Connection connection; + private DBMSConnection dbmsConnection; private DBMSProcessor dbmsProcessor; private BibDatabase bibDatabase; + private GlobalBibtexKeyPattern pattern; @Parameter public DBMSType dbmsType; - @Before - public void setUp() throws ClassNotFoundException, SQLException, DatabaseNotSupportedException { + public void setUp() throws SQLException, DatabaseNotSupportedException { - connection = TestConnector.getTestConnection(dbmsType); + dbmsConnection = TestConnector.getTestDBMSConnection(dbmsType); bibDatabase = new BibDatabase(); BibDatabaseContext context = new BibDatabaseContext(bibDatabase); + pattern = new GlobalBibtexKeyPattern(AbstractBibtexKeyPattern.split("[auth][year]")); - dbmsSynchronizer = new DBMSSynchronizer(context, ", "); - dbmsProcessor = DBMSProcessor.getProcessorInstance(connection, dbmsType); + dbmsSynchronizer = new DBMSSynchronizer(context, ',', pattern); + dbmsProcessor = DBMSProcessor.getProcessorInstance(dbmsConnection); bibDatabase.registerListener(dbmsSynchronizer); - dbmsSynchronizer.openSharedDatabase(connection, dbmsType, "TEST"); + dbmsSynchronizer.openSharedDatabase(dbmsConnection); + } @Parameters(name = "Test with {0} database system") public static Collection getTestingDatabaseSystems() { - return DBMSConnector.getAvailableDBMSTypes(); + return TestManager.getDBMSTypeTestParameter(); } @Test @@ -119,9 +126,9 @@ public void testMetaDataChangedEventListener() { MetaData testMetaData = new MetaData(); testMetaData.registerListener(dbmsSynchronizer); dbmsSynchronizer.setMetaData(testMetaData); - testMetaData.putData("databaseType", Arrays.asList("bibtex")); + testMetaData.setMode(BibDatabaseMode.BIBTEX); - Map expectedMap = MetaDataSerializer.getSerializedStringMap(testMetaData); + Map expectedMap = MetaDataSerializer.getSerializedStringMap(testMetaData, pattern); Map actualMap = dbmsProcessor.getSharedMetaData(); Assert.assertEquals(expectedMap, actualMap); @@ -160,7 +167,7 @@ public void testSynchronizeLocalDatabaseWithEntryRemoval() { } @Test - public void testSynchronizeLocalDatabaseWithEntryUpdate() throws OfflineLockException, SharedEntryNotPresentException, SQLException { + public void testSynchronizeLocalDatabaseWithEntryUpdate() throws OfflineLockException, SQLException { BibEntry bibEntry = getBibEntryExample(1); bibDatabase.insertEntry(bibEntry); Assert.assertEquals(1, bibDatabase.getEntries().size()); @@ -183,7 +190,8 @@ public void testApplyMetaData() { bibDatabase.insertEntry(bibEntry); MetaData testMetaData = new MetaData(); - testMetaData.putData("saveActions", Arrays.asList("enabled", "author[lower_case]")); + testMetaData.setSaveActions(new FieldFormatterCleanups(true, + Collections.singletonList(new FieldFormatterCleanup("author", new LowerCaseFormatter())))); dbmsSynchronizer.setMetaData(testMetaData); dbmsSynchronizer.applyMetaData(); @@ -201,30 +209,9 @@ private BibEntry getBibEntryExample(int index) { return bibEntry; } - private String escape(String expression) { - return dbmsProcessor.escape(expression); - } - @After public void clear() throws SQLException { - if ((dbmsType == DBMSType.MYSQL) || (dbmsType == DBMSType.POSTGRESQL)) { - connection.createStatement().executeUpdate("DROP TABLE IF EXISTS " + escape("FIELD")); - connection.createStatement().executeUpdate("DROP TABLE IF EXISTS " + escape("ENTRY")); - connection.createStatement().executeUpdate("DROP TABLE IF EXISTS " + escape("METADATA")); - } else if (dbmsType == DBMSType.ORACLE) { - connection.createStatement().executeUpdate( - "BEGIN\n" + - "EXECUTE IMMEDIATE 'DROP TABLE " + escape("FIELD") + "';\n" + - "EXECUTE IMMEDIATE 'DROP TABLE " + escape("ENTRY") + "';\n" + - "EXECUTE IMMEDIATE 'DROP TABLE " + escape("METADATA") + "';\n" + - "EXECUTE IMMEDIATE 'DROP SEQUENCE " + escape("ENTRY_SEQ") + "';\n" + - "EXCEPTION\n" + - "WHEN OTHERS THEN\n" + - "IF SQLCODE != -942 THEN\n" + - "RAISE;\n" + - "END IF;\n" + - "END;"); - } + TestManager.clearTables(dbmsConnection); } } diff --git a/src/databaseTest/java/net/sf/jabref/shared/DBMSTypeTest.java b/src/databaseTest/java/net/sf/jabref/shared/DBMSTypeTest.java index 435ada02450..3c488e83804 100644 --- a/src/databaseTest/java/net/sf/jabref/shared/DBMSTypeTest.java +++ b/src/databaseTest/java/net/sf/jabref/shared/DBMSTypeTest.java @@ -16,7 +16,7 @@ public void testToString() { public void testGetDriverClassPath() { Assert.assertEquals("com.mysql.jdbc.Driver", DBMSType.MYSQL.getDriverClassPath()); Assert.assertEquals("oracle.jdbc.driver.OracleDriver", DBMSType.ORACLE.getDriverClassPath()); - Assert.assertEquals("org.postgresql.Driver", DBMSType.POSTGRESQL.getDriverClassPath()); + Assert.assertEquals("com.impossibl.postgres.jdbc.PGDriver", DBMSType.POSTGRESQL.getDriverClassPath()); } @Test @@ -31,7 +31,7 @@ public void testFromString() { public void testGetUrl() { Assert.assertEquals("jdbc:mysql://localhost:3306/xe", DBMSType.MYSQL.getUrl("localhost", 3306, "xe")); Assert.assertEquals("jdbc:oracle:thin:@localhost:1521:xe", DBMSType.ORACLE.getUrl("localhost", 1521, "xe")); - Assert.assertEquals("jdbc:postgresql://localhost:5432/xe", DBMSType.POSTGRESQL.getUrl("localhost", 5432, "xe")); + Assert.assertEquals("jdbc:pgsql://localhost:5432/xe", DBMSType.POSTGRESQL.getUrl("localhost", 5432, "xe")); } @Test diff --git a/src/databaseTest/java/net/sf/jabref/shared/SynchronizationTestSimulator.java b/src/databaseTest/java/net/sf/jabref/shared/SynchronizationTestSimulator.java index ed85ca2b766..0d6afffd56b 100644 --- a/src/databaseTest/java/net/sf/jabref/shared/SynchronizationTestSimulator.java +++ b/src/databaseTest/java/net/sf/jabref/shared/SynchronizationTestSimulator.java @@ -1,10 +1,11 @@ package net.sf.jabref.shared; -import java.sql.Connection; import java.sql.SQLException; import java.util.Collection; import net.sf.jabref.model.Defaults; +import net.sf.jabref.model.bibtexkeypattern.AbstractBibtexKeyPattern; +import net.sf.jabref.model.bibtexkeypattern.GlobalBibtexKeyPattern; import net.sf.jabref.model.database.BibDatabaseContext; import net.sf.jabref.model.database.BibDatabaseMode; import net.sf.jabref.model.database.DatabaseLocation; @@ -23,43 +24,43 @@ @RunWith(Parameterized.class) public class SynchronizationTestSimulator { - private static Connection connection; - private BibDatabaseContext clientContextA; private BibDatabaseContext clientContextB; private SynchronizationTestEventListener eventListenerB; // used to monitor occurring events + private DBMSConnection dbmsConnection; + @Parameter public DBMSType dbmsType; @Before - public void setUp() throws ClassNotFoundException, SQLException, DatabaseNotSupportedException { - // Get only one connection for each parameter - if (TestConnector.currentConnectionType != dbmsType) { - connection = TestConnector.getTestConnection(dbmsType); - } + public void setUp() throws SQLException, DatabaseNotSupportedException { + this.dbmsConnection = TestConnector.getTestDBMSConnection(dbmsType); - clientContextA = new BibDatabaseContext(new Defaults(BibDatabaseMode.BIBTEX), DatabaseLocation.SHARED, ", "); - clientContextA.getDBSynchronizer().openSharedDatabase(connection, dbmsType, "A"); + GlobalBibtexKeyPattern pattern = new GlobalBibtexKeyPattern(AbstractBibtexKeyPattern.split("[auth][year]")); + clientContextA = new BibDatabaseContext(new Defaults(BibDatabaseMode.BIBTEX), DatabaseLocation.SHARED, ',', + pattern); + clientContextA.getDBMSSynchronizer().openSharedDatabase(dbmsConnection); - clientContextB = new BibDatabaseContext(new Defaults(BibDatabaseMode.BIBTEX), DatabaseLocation.SHARED, ", "); - clientContextB.getDBSynchronizer().openSharedDatabase(connection, dbmsType, "B"); + clientContextB = new BibDatabaseContext(new Defaults(BibDatabaseMode.BIBTEX), DatabaseLocation.SHARED, ',', + pattern); + clientContextB.getDBMSSynchronizer().openSharedDatabase(dbmsConnection); eventListenerB = new SynchronizationTestEventListener(); - clientContextB.getDBSynchronizer().registerListener(eventListenerB); + clientContextB.getDBMSSynchronizer().registerListener(eventListenerB); } @Parameters(name = "Test with {0} database system") public static Collection getTestingDatabaseSystems() { - return DBMSConnector.getAvailableDBMSTypes(); + return TestManager.getDBMSTypeTestParameter(); } @Test public void simulateEntryInsertionAndManualPull() { clientContextA.getDatabase().insertEntry(getBibEntryExample(1)); // client A inserts an entry clientContextA.getDatabase().insertEntry(getBibEntryExample(2)); // client A inserts another entry - clientContextB.getDBSynchronizer().pullChanges(); // client B pulls the changes + clientContextB.getDBMSSynchronizer().pullChanges(); // client B pulls the changes Assert.assertEquals(clientContextA.getDatabase().getEntries(), clientContextB.getDatabase().getEntries()); } @@ -71,7 +72,7 @@ public void simulateEntryUpdateAndManualPull() { bibEntry.setField("custom", "custom value"); // client A changes the entry bibEntry.clearField("author"); - clientContextB.getDBSynchronizer().pullChanges(); // client B pulls the changes + clientContextB.getDBMSSynchronizer().pullChanges(); // client B pulls the changes Assert.assertEquals(clientContextA.getDatabase().getEntries(), clientContextB.getDatabase().getEntries()); } @@ -80,14 +81,14 @@ public void simulateEntryUpdateAndManualPull() { public void simulateEntryDelitionAndManualPull() { BibEntry bibEntry = getBibEntryExample(1); clientContextA.getDatabase().insertEntry(bibEntry); // client A inserts an entry - clientContextB.getDBSynchronizer().pullChanges(); // client B pulls the entry + clientContextB.getDBMSSynchronizer().pullChanges(); // client B pulls the entry Assert.assertFalse(clientContextA.getDatabase().getEntries().isEmpty()); Assert.assertFalse(clientContextB.getDatabase().getEntries().isEmpty()); Assert.assertEquals(clientContextA.getDatabase().getEntries(), clientContextB.getDatabase().getEntries()); clientContextA.getDatabase().removeEntry(bibEntry); // client A removes the entry - clientContextB.getDBSynchronizer().pullChanges(); // client B pulls the change + clientContextB.getDBMSSynchronizer().pullChanges(); // client B pulls the change Assert.assertTrue(clientContextA.getDatabase().getEntries().isEmpty()); Assert.assertTrue(clientContextB.getDatabase().getEntries().isEmpty()); @@ -97,7 +98,7 @@ public void simulateEntryDelitionAndManualPull() { public void simulateUpdateOnNoLongerExistingEntry() { BibEntry bibEntryOfClientA = getBibEntryExample(1); clientContextA.getDatabase().insertEntry(bibEntryOfClientA); // client A inserts an entry - clientContextB.getDBSynchronizer().pullChanges(); // client B pulls the entry + clientContextB.getDBMSSynchronizer().pullChanges(); // client B pulls the entry Assert.assertFalse(clientContextA.getDatabase().getEntries().isEmpty()); Assert.assertFalse(clientContextB.getDatabase().getEntries().isEmpty()); @@ -120,7 +121,7 @@ public void simulateUpdateOnNoLongerExistingEntry() { public void simulateEntryChangeConflicts() { BibEntry bibEntryOfClientA = getBibEntryExample(1); clientContextA.getDatabase().insertEntry(bibEntryOfClientA); // client A inserts an entry - clientContextB.getDBSynchronizer().pullChanges(); // client B pulls the entry + clientContextB.getDBMSSynchronizer().pullChanges(); // client B pulls the entry bibEntryOfClientA.setField("year", "2001"); // A now increases the version number @@ -150,29 +151,8 @@ private BibEntry getBibEntryExample(int index) { return bibEntry; } - private String escape(String expression) { - return DBMSProcessor.getProcessorInstance(connection, dbmsType).escape(expression); - } - @After public void clear() throws SQLException { - if ((dbmsType == DBMSType.MYSQL) || (dbmsType == DBMSType.POSTGRESQL)) { - connection.createStatement().executeUpdate("DROP TABLE IF EXISTS " + escape("FIELD")); - connection.createStatement().executeUpdate("DROP TABLE IF EXISTS " + escape("ENTRY")); - connection.createStatement().executeUpdate("DROP TABLE IF EXISTS " + escape("METADATA")); - } else if (dbmsType == DBMSType.ORACLE) { - connection.createStatement().executeUpdate( - "BEGIN\n" + - "EXECUTE IMMEDIATE 'DROP TABLE " + escape("FIELD") + "';\n" + - "EXECUTE IMMEDIATE 'DROP TABLE " + escape("ENTRY") + "';\n" + - "EXECUTE IMMEDIATE 'DROP TABLE " + escape("METADATA") + "';\n" + - "EXECUTE IMMEDIATE 'DROP SEQUENCE " + escape("ENTRY_SEQ") + "';\n" + - "EXCEPTION\n" + - "WHEN OTHERS THEN\n" + - "IF SQLCODE != -942 THEN\n" + - "RAISE;\n" + - "END IF;\n" + - "END;"); - } + TestManager.clearTables(dbmsConnection); } } diff --git a/src/databaseTest/java/net/sf/jabref/shared/TestConnector.java b/src/databaseTest/java/net/sf/jabref/shared/TestConnector.java index 949e35f233e..bb76a09d54d 100644 --- a/src/databaseTest/java/net/sf/jabref/shared/TestConnector.java +++ b/src/databaseTest/java/net/sf/jabref/shared/TestConnector.java @@ -1,6 +1,5 @@ package net.sf.jabref.shared; -import java.sql.Connection; import java.sql.SQLException; public class TestConnector { @@ -8,15 +7,15 @@ public class TestConnector { public static DBMSType currentConnectionType; - public static Connection getTestConnection(DBMSType dbmsType) throws ClassNotFoundException, SQLException { + public static DBMSConnection getTestDBMSConnection(DBMSType dbmsType) throws SQLException { currentConnectionType = dbmsType; - DBMSConnectionProperties properties = getConnectionProperties(dbmsType); + DBMSConnectionProperties properties = getTestConnectionProperties(dbmsType); - return DBMSConnector.getNewConnection(properties); + return new DBMSConnection(properties); } - public static DBMSConnectionProperties getConnectionProperties(DBMSType dbmsType) { + public static DBMSConnectionProperties getTestConnectionProperties(DBMSType dbmsType) { if (dbmsType == DBMSType.MYSQL) { return new DBMSConnectionProperties(dbmsType, "localhost", dbmsType.getDefaultPort(), "jabref", "root", ""); diff --git a/src/databaseTest/java/net/sf/jabref/shared/TestManager.java b/src/databaseTest/java/net/sf/jabref/shared/TestManager.java new file mode 100644 index 00000000000..4cce90f8542 --- /dev/null +++ b/src/databaseTest/java/net/sf/jabref/shared/TestManager.java @@ -0,0 +1,48 @@ +package net.sf.jabref.shared; + +import java.sql.SQLException; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +/** + * This class provides helping methods for database tests. + * Furthermore it determines database systems which are ready to be used for tests. + */ +public class TestManager { + + public static Collection getDBMSTypeTestParameter() { + + Set dbmsTypes = new HashSet<>(); + for (DBMSType dbmsType : DBMSType.values()) { + try { + TestConnector.getTestDBMSConnection(dbmsType); + dbmsTypes.add(dbmsType); + } catch (SQLException e) { + // skip parameter + } + } + return dbmsTypes; + } + + public static void clearTables(DBMSConnection dbmsConnection) throws SQLException { + DBMSType dbmsType = dbmsConnection.getProperties().getType(); + + if (dbmsType == DBMSType.MYSQL) { + dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS `FIELD`"); + dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS `ENTRY`"); + dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS `METADATA`"); + } else if (dbmsType == DBMSType.POSTGRESQL) { + dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS \"FIELD\""); + dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS \"ENTRY\""); + dbmsConnection.getConnection().createStatement().executeUpdate("DROP TABLE IF EXISTS \"METADATA\""); + } else if (dbmsType == DBMSType.ORACLE) { + dbmsConnection.getConnection().createStatement() + .executeUpdate("BEGIN\n" + "EXECUTE IMMEDIATE 'DROP TABLE \"FIELD\"';\n" + + "EXECUTE IMMEDIATE 'DROP TABLE \"ENTRY\"';\n" + + "EXECUTE IMMEDIATE 'DROP TABLE \"METADATA\"';\n" + + "EXECUTE IMMEDIATE 'DROP SEQUENCE \"ENTRY_SEQ\"';\n" + "EXCEPTION\n" + "WHEN OTHERS THEN\n" + + "IF SQLCODE != -942 THEN\n" + "RAISE;\n" + "END IF;\n" + "END;"); + } + } +} diff --git a/src/integrationTest/java/net/sf/jabref/gui/DialogTest.java b/src/integrationTest/java/net/sf/jabref/gui/DialogTest.java index b0c204f66b1..eeb35493a14 100644 --- a/src/integrationTest/java/net/sf/jabref/gui/DialogTest.java +++ b/src/integrationTest/java/net/sf/jabref/gui/DialogTest.java @@ -5,15 +5,14 @@ import org.assertj.swing.core.GenericTypeMatcher; import org.assertj.swing.dependency.jsr305.Nonnull; -import org.junit.Ignore; import org.junit.Test; import static org.assertj.swing.finder.WindowFinder.findDialog; - +/** + * This test has been split to work, the other part can be found at DialogTest2 + */ public class DialogTest extends AbstractUITest { - // Not working on Travis - time out - @Ignore @Test public void testCancelStyleSelectDialog() { mainFrame.menuItemWithPath("Tools", "OpenOffice/LibreOffice connection").click(); @@ -46,32 +45,4 @@ protected boolean isMatching(@Nonnull JButton jButton) { findDialog(styleDialogMatcher).withTimeout(10_000).using(robot()).button(buttonMatcher2).click(); exitJabRef(); } - - // Tests work separately, but not when running both... - @Test - @Ignore - public void testCloseStyleSelectDialog() { - mainFrame.menuItemWithPath("Tools", "OpenOffice/LibreOffice connection").click(); - - GenericTypeMatcher buttonMatcher = new GenericTypeMatcher(JButton.class) { - - @Override - protected boolean isMatching(@Nonnull JButton jButton) { - return "Select style".equals(jButton.getText()); - } - }; - - mainFrame.button(buttonMatcher).click(); - - GenericTypeMatcher styleDialogMatcher = new GenericTypeMatcher(JDialog.class) { - - @Override - protected boolean isMatching(JDialog dialog) { - return "Select style".equals(dialog.getTitle()); // Only a single SidePane - } - }; - - findDialog(styleDialogMatcher).withTimeout(10_000).using(robot()).close(); - exitJabRef(); - } } diff --git a/src/integrationTest/java/net/sf/jabref/gui/DialogTest2.java b/src/integrationTest/java/net/sf/jabref/gui/DialogTest2.java new file mode 100644 index 00000000000..85d1280c038 --- /dev/null +++ b/src/integrationTest/java/net/sf/jabref/gui/DialogTest2.java @@ -0,0 +1,42 @@ +package net.sf.jabref.gui; + + +import javax.swing.JButton; +import javax.swing.JDialog; + +import org.assertj.swing.core.GenericTypeMatcher; +import org.assertj.swing.dependency.jsr305.Nonnull; +import org.junit.Test; + +import static org.assertj.swing.finder.WindowFinder.findDialog; + +/** + * Split of DialogTest, since the test cases were only running separately + */ +public class DialogTest2 extends AbstractUITest { + @Test + public void testCloseStyleSelectDialog() { + mainFrame.menuItemWithPath("Tools", "OpenOffice/LibreOffice connection").click(); + + GenericTypeMatcher buttonMatcher = new GenericTypeMatcher(JButton.class) { + + @Override + protected boolean isMatching(@Nonnull JButton jButton) { + return "Select style".equals(jButton.getText()); + } + }; + + mainFrame.button(buttonMatcher).click(); + + GenericTypeMatcher styleDialogMatcher = new GenericTypeMatcher(JDialog.class) { + + @Override + protected boolean isMatching(JDialog dialog) { + return "Select style".equals(dialog.getTitle()); // Only a single SidePane + } + }; + + findDialog(styleDialogMatcher).withTimeout(10_000).using(robot()).close(); + exitJabRef(); + } +} diff --git a/src/integrationTest/java/net/sf/jabref/gui/GUITest.java b/src/integrationTest/java/net/sf/jabref/gui/GUITest.java index 0416a9afbdf..b6505ad0595 100644 --- a/src/integrationTest/java/net/sf/jabref/gui/GUITest.java +++ b/src/integrationTest/java/net/sf/jabref/gui/GUITest.java @@ -10,7 +10,6 @@ import org.assertj.swing.core.GenericTypeMatcher; import org.assertj.swing.dependency.jsr305.Nonnull; import org.assertj.swing.fixture.DialogFixture; -import org.junit.Ignore; import org.junit.Test; import static org.assertj.swing.finder.WindowFinder.findDialog; @@ -44,7 +43,6 @@ protected boolean isMatching(@Nonnull JButton jButton) { takeScreenshot(mainFrame, "MainWindowWithOneDatabase"); } - @Ignore @Test public void testOpenAndSavePreferences() throws IOException { mainFrame.menuItemWithPath("Options", "Preferences").click(); @@ -83,8 +81,8 @@ public void testViewChanges() { mainFrame.menuItemWithPath("View", "Toggle entry preview").click(); mainFrame.menuItemWithPath("View", "Toggle entry preview").click(); - mainFrame.menuItemWithPath("View", "Switch preview layout").click(); - mainFrame.menuItemWithPath("View", "Switch preview layout").click(); + mainFrame.menuItemWithPath("View", "Next preview layout").click(); + mainFrame.menuItemWithPath("View", "Previous preview layout").click(); mainFrame.menuItemWithPath("View", "Hide/show toolbar").click(); mainFrame.menuItemWithPath("View", "Hide/show toolbar").click(); diff --git a/src/integrationTest/java/net/sf/jabref/gui/IdFetcherDialogTest.java b/src/integrationTest/java/net/sf/jabref/gui/IdFetcherDialogTest.java new file mode 100644 index 00000000000..f792b35907e --- /dev/null +++ b/src/integrationTest/java/net/sf/jabref/gui/IdFetcherDialogTest.java @@ -0,0 +1,132 @@ +package net.sf.jabref.gui; + + +import java.util.Arrays; +import java.util.Collection; + +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JDialog; +import javax.swing.text.JTextComponent; + +import org.assertj.swing.core.GenericTypeMatcher; +import org.assertj.swing.dependency.jsr305.Nonnull; +import org.assertj.swing.fixture.JTableFixture; +import org.assertj.swing.timing.Condition; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import static org.assertj.swing.finder.WindowFinder.findDialog; +import static org.assertj.swing.timing.Pause.pause; + +@RunWith(Parameterized.class) +public class IdFetcherDialogTest extends AbstractUITest { + + private final String databaseMode, fetcherType, fetchID; + + public IdFetcherDialogTest(String databaseMode, String fetcherType, String fetchID) { + this.databaseMode = databaseMode; + this.fetcherType = fetcherType; + this.fetchID = fetchID; + } + + @Test + public void insertEmptySearchID() { + mainFrame.menuItemWithPath("File", "New " + databaseMode + " database").click(); + JTableFixture entryTable = mainFrame.table(); + + entryTable.requireRowCount(0); + mainFrame.menuItemWithPath("BibTeX", "New entry...").click(); + + GenericTypeMatcher matcher = new GenericTypeMatcher(JDialog.class) { + @Override + protected boolean isMatching(JDialog dialog) { + return "Select entry type".equals(dialog.getTitle()); + } + }; + + findDialog(matcher).withTimeout(10_000).using(robot()).button(new GenericTypeMatcher(JButton.class) { + + @Override + protected boolean isMatching(@Nonnull JButton jButton) { + return "Generate".equals(jButton.getText()); + } + }).click(); + + GenericTypeMatcher matcherEmptyDialog = new GenericTypeMatcher(JDialog.class) { + @Override + protected boolean isMatching(JDialog dialog) { + return "Empty search ID".equals(dialog.getTitle()); + } + }; + + findDialog(matcherEmptyDialog).withTimeout(10_000).using(robot()).button(new GenericTypeMatcher(JButton.class) { + + @Override + protected boolean isMatching(@Nonnull JButton jButton) { + return "OK".equals(jButton.getText()); + } + }).click(); + + entryTable.requireRowCount(0); + } + + @Test + public void testFetcherDialog() { + mainFrame.menuItemWithPath("File", "New " + databaseMode + " database").click(); + JTableFixture entryTable = mainFrame.table(); + + entryTable.requireRowCount(0); + mainFrame.menuItemWithPath("BibTeX", "New entry...").click(); + + GenericTypeMatcher matcher = new GenericTypeMatcher(JDialog.class) { + @Override + protected boolean isMatching(JDialog dialog) { + return "Select entry type".equals(dialog.getTitle()); + } + }; + + findDialog(matcher).withTimeout(10_000).using(robot()).comboBox(new GenericTypeMatcher(JComboBox.class) { + @Override + protected boolean isMatching(@Nonnull JComboBox component) { + return true; + } + }).selectItem(fetcherType); + + findDialog(matcher).withTimeout(10_000).using(robot()).textBox(new GenericTypeMatcher(JTextComponent.class) { + @Override + protected boolean isMatching(@Nonnull JTextComponent component) { + return true; + } + }).enterText(fetchID); + + findDialog(matcher).withTimeout(10_000).using(robot()).button(new GenericTypeMatcher(JButton.class) { + @Override + protected boolean isMatching(@Nonnull JButton jButton) { + return "Generate".equals(jButton.getText()); + } + }).click(); + + pause(new Condition("entrySize") { + @Override + public boolean test() { + return entryTable.rowCount() == 1; + } + }, 10_000); + + entryTable.requireRowCount(1); + } + + + @Parameterized.Parameters(name = "{index}: {0} : {1} : {2}") + public static Collection instancesToTest() { + return Arrays.asList( + new Object[]{"BibTeX", "DOI", "10.1002/9781118257517"}, + new Object[]{"BibLaTeX", "DOI", "10.1002/9781118257517"}, + new Object[]{"BibTeX", "ISBN", "9780321356680"}, + new Object[]{"BibLaTeX", "ISBN", "9780321356680"} + ); + } + +} diff --git a/src/integrationTest/java/net/sf/jabref/gui/ParameterizedMenuNewEntryTest.java b/src/integrationTest/java/net/sf/jabref/gui/ParameterizedMenuNewEntryTest.java index ab191b83f9a..ae9937425d1 100644 --- a/src/integrationTest/java/net/sf/jabref/gui/ParameterizedMenuNewEntryTest.java +++ b/src/integrationTest/java/net/sf/jabref/gui/ParameterizedMenuNewEntryTest.java @@ -3,10 +3,9 @@ import java.util.Arrays; import java.util.Collection; -import net.sf.jabref.model.entry.EntryUtil; +import net.sf.jabref.model.strings.StringUtil; import org.assertj.swing.fixture.JTableFixture; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -24,14 +23,13 @@ public ParameterizedMenuNewEntryTest(String databaseMode, String entryType) { } // Not working on Travis - @Ignore @Test public void addEntryOfGivenType() { mainFrame.menuItemWithPath("File", "New " + databaseMode + " database").click(); JTableFixture entryTable = mainFrame.table(); entryTable.requireRowCount(0); - mainFrame.menuItemWithPath("BibTeX", "New entry by type...", EntryUtil.capitalizeFirst(entryType)).click(); + mainFrame.menuItemWithPath("BibTeX", "New entry by type...", StringUtil.capitalizeFirst(entryType)).click(); entryTable.requireRowCount(1); } @@ -43,7 +41,7 @@ public static Collection instancesToTest() { // @formatter:off return Arrays.asList( new Object[]{"BibTeX", "article"}, -/* new Object[]{"BibTeX", "inbook"}, + new Object[]{"BibTeX", "inbook"}, new Object[]{"BibTeX", "book"}, new Object[]{"BibTeX", "booklet"}, new Object[]{"BibTeX", "incollection"}, @@ -68,7 +66,7 @@ public static Collection instancesToTest() { new Object[]{"BibLaTeX", "mastersthesis"}, new Object[]{"BibLaTeX", "phdthesis"}, new Object[]{"BibLaTeX", "techreport"}, - new Object[]{"BibLaTeX", "unpublished"}, */ + new Object[]{"BibLaTeX", "unpublished"}, new Object[]{"BibLaTeX", "misc"} ); // @formatter:on diff --git a/src/jmh/java/net/sf/jabref/benchmarks/Benchmarks.java b/src/jmh/java/net/sf/jabref/benchmarks/Benchmarks.java index 3439f2609a7..d6d2945ba35 100644 --- a/src/jmh/java/net/sf/jabref/benchmarks/Benchmarks.java +++ b/src/jmh/java/net/sf/jabref/benchmarks/Benchmarks.java @@ -2,7 +2,6 @@ import java.io.IOException; import java.io.StringReader; -import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.stream.Collectors; @@ -12,13 +11,13 @@ import net.sf.jabref.logic.exporter.SavePreferences; import net.sf.jabref.logic.exporter.StringSaveSession; import net.sf.jabref.logic.formatter.bibtexfields.HtmlToLatexFormatter; +import net.sf.jabref.logic.importer.ParseException; import net.sf.jabref.logic.importer.ParserResult; import net.sf.jabref.logic.importer.fileformat.BibtexParser; import net.sf.jabref.logic.layout.format.HTMLChars; import net.sf.jabref.logic.layout.format.LatexToUnicodeFormatter; import net.sf.jabref.logic.search.SearchQuery; import net.sf.jabref.model.Defaults; -import net.sf.jabref.model.ParseException; import net.sf.jabref.model.database.BibDatabase; import net.sf.jabref.model.database.BibDatabaseContext; import net.sf.jabref.model.database.BibDatabaseMode; @@ -58,7 +57,7 @@ public void init() throws Exception { entry.setField("keyword", "testkeyword"); entry.setField("year", "1" + i); entry.setField("rnd", "2" + randomizer.nextInt()); - database.insertEntryWithDuplicationCheck(entry); + database.insertEntry(entry); } BibtexDatabaseWriter databaseWriter = new BibtexDatabaseWriter<>(StringSaveSession::new); StringSaveSession saveSession = databaseWriter.savePartOfDatabase( @@ -90,9 +89,14 @@ public String write() throws Exception { public List search() { // FIXME: Reuse SearchWorker here SearchQuery searchQuery = new SearchQuery("Journal Title 500", false, false); - List matchedEntries = new ArrayList<>(); - matchedEntries.addAll(database.getEntries().stream().filter(searchQuery::isMatch).collect(Collectors.toList())); - return matchedEntries; + return database.getEntries().stream().filter(searchQuery::isMatch).collect(Collectors.toList()); + } + + @Benchmark + public List parallelSearch() { + // FIXME: Reuse SearchWorker here + SearchQuery searchQuery = new SearchQuery("Journal Title 500", false, false); + return database.getEntries().parallelStream().filter(searchQuery::isMatch).collect(Collectors.toList()); } @Benchmark @@ -121,7 +125,7 @@ public String htmlToLatexConversion() { @Benchmark public boolean keywordGroupContains() throws ParseException { KeywordGroup group = new KeywordGroup("testGroup", "keyword", "testkeyword", false, false, - GroupHierarchyType.INDEPENDENT, ", "); + GroupHierarchyType.INDEPENDENT, ','); return group.containsAll(database.getEntries()); } diff --git a/src/main/antlr4/net/sf/jabref/search/Search.g4 b/src/main/antlr4/net/sf/jabref/search/Search.g4 index 955e615a2f7..097083e3366 100644 --- a/src/main/antlr4/net/sf/jabref/search/Search.g4 +++ b/src/main/antlr4/net/sf/jabref/search/Search.g4 @@ -41,9 +41,11 @@ expression: ; comparison: - left=name operator=(CONTAINS | MATCHES | EQUAL | EEQUAL | NEQUAL) right=name; // example: author != miller + left=name operator=(CONTAINS | MATCHES | EQUAL | EEQUAL | NEQUAL) right=name // example: author != miller + | right=name // example: miller (search all fields) + ; name: STRING // example: "miller" | FIELDTYPE // example: author - ; \ No newline at end of file + ; diff --git a/src/main/java/net/sf/jabref/JabRefGUI.java b/src/main/java/net/sf/jabref/JabRefGUI.java index 387faac693f..038123c84a1 100644 --- a/src/main/java/net/sf/jabref/JabRefGUI.java +++ b/src/main/java/net/sf/jabref/JabRefGUI.java @@ -1,6 +1,7 @@ package net.sf.jabref; import java.io.File; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; @@ -21,15 +22,16 @@ import net.sf.jabref.gui.importer.ParserResultWarningDialog; import net.sf.jabref.gui.importer.actions.OpenDatabaseAction; import net.sf.jabref.gui.importer.worker.AutosaveStartupPrompter; +import net.sf.jabref.gui.shared.OpenSharedDatabaseDialog; +import net.sf.jabref.gui.shared.SharedDatabaseUIManager; import net.sf.jabref.gui.worker.VersionWorker; import net.sf.jabref.logic.importer.OpenDatabase; import net.sf.jabref.logic.importer.ParserResult; import net.sf.jabref.logic.l10n.Localization; import net.sf.jabref.logic.util.OS; import net.sf.jabref.logic.util.Version; -import net.sf.jabref.migrations.PreferencesMigrations; import net.sf.jabref.preferences.JabRefPreferences; -import net.sf.jabref.preferences.VersionPreferences; +import net.sf.jabref.shared.exception.DatabaseNotSupportedException; import com.jgoodies.looks.plastic.Plastic3DLookAndFeel; import com.jgoodies.looks.plastic.theme.SkyBluer; @@ -65,16 +67,12 @@ public JabRefGUI(List argsDatabases, boolean isBlank) { } public static void checkForNewVersion(boolean manualExecution) { - Version toBeIgnored = new VersionPreferences(Globals.prefs).getIgnoredVersion(); + Version toBeIgnored = Globals.prefs.getVersionPreferences().getIgnoredVersion(); Version currentVersion = Globals.BUILD_INFO.getVersion(); new VersionWorker(JabRefGUI.getMainFrame(), manualExecution, currentVersion, toBeIgnored).execute(); } private void openWindow() { - // Perform checks and changes for users with a preference set from an older JabRef version. - PreferencesMigrations.upgradeSortOrder(); - PreferencesMigrations.upgradeFaultyEncodingStrings(); - PreferencesMigrations.upgradeLabelPatternToBibtexKeyPattern(); // This property is set to make the Mac OSX Java VM move the menu bar to the top of the screen if (OS.OS_X) { @@ -192,6 +190,17 @@ private void openWindow() { if (!bibDatabases.isEmpty()) { JabRefGUI.getMainFrame().getCurrentBasePanel().getMainTable().requestFocus(); } + + boolean isSharedDatabaseEdited = Globals.prefs.getBoolean(JabRefPreferences.SHARED_DATABASE_LAST_EDITED); + if (isSharedDatabaseEdited) { + boolean isFocused = Globals.prefs.getBoolean(JabRefPreferences.SHARED_DATABASE_LAST_FOCUSED); + try { + new SharedDatabaseUIManager(mainFrame).openLastSharedDatabaseTab(isFocused); + } catch (SQLException | DatabaseNotSupportedException e) { + LOGGER.info("Failed to restore shared database. Use connection dialog to connect."); + new OpenSharedDatabaseDialog(mainFrame).setVisible(true); + } + } } private void openLastEditedDatabases() { diff --git a/src/main/java/net/sf/jabref/JabRefMain.java b/src/main/java/net/sf/jabref/JabRefMain.java index ec082b307ab..6d11f445e2a 100644 --- a/src/main/java/net/sf/jabref/JabRefMain.java +++ b/src/main/java/net/sf/jabref/JabRefMain.java @@ -22,6 +22,7 @@ import net.sf.jabref.logic.remote.RemotePreferences; import net.sf.jabref.logic.remote.client.RemoteListenerClient; import net.sf.jabref.logic.util.OS; +import net.sf.jabref.migrations.PreferencesMigrations; import net.sf.jabref.model.entry.InternalBibtexFields; import net.sf.jabref.preferences.JabRefPreferences; @@ -52,6 +53,12 @@ private static void start(String[] args) { Localization.setLanguage(preferences.get(JabRefPreferences.LANGUAGE)); Globals.prefs.setLanguageDependentDefaultValues(); + // Perform Migrations + // Perform checks and changes for users with a preference set from an older JabRef version. + PreferencesMigrations.upgradeSortOrder(); + PreferencesMigrations.upgradeFaultyEncodingStrings(); + PreferencesMigrations.upgradeLabelPatternToBibtexKeyPattern(); + // Update handling of special fields based on preferences InternalBibtexFields .updateSpecialFields(Globals.prefs.getBoolean(JabRefPreferences.SERIALIZESPECIALFIELDS)); diff --git a/src/main/java/net/sf/jabref/cli/ArgumentProcessor.java b/src/main/java/net/sf/jabref/cli/ArgumentProcessor.java index 31fcd2c5030..fe75cc5a78b 100644 --- a/src/main/java/net/sf/jabref/cli/ArgumentProcessor.java +++ b/src/main/java/net/sf/jabref/cli/ArgumentProcessor.java @@ -39,13 +39,13 @@ import net.sf.jabref.logic.search.DatabaseSearcher; import net.sf.jabref.logic.search.SearchQuery; import net.sf.jabref.logic.util.OS; -import net.sf.jabref.logic.util.strings.StringUtil; import net.sf.jabref.model.Defaults; import net.sf.jabref.model.database.BibDatabase; import net.sf.jabref.model.database.BibDatabaseContext; import net.sf.jabref.model.database.BibDatabaseMode; import net.sf.jabref.model.entry.BibEntry; import net.sf.jabref.model.metadata.MetaData; +import net.sf.jabref.model.strings.StringUtil; import net.sf.jabref.preferences.JabRefPreferences; import net.sf.jabref.preferences.SearchPreferences; import net.sf.jabref.shared.prefs.SharedDatabasePreferences; @@ -452,7 +452,9 @@ private void regenerateBibtexKeys(List loaded) { LOGGER.info(Localization.lang("Regenerating BibTeX keys according to metadata")); for (BibEntry entry : database.getEntries()) { // try to make a new label - BibtexKeyPatternUtil.makeLabel(metaData, database, entry, + BibtexKeyPatternUtil.makeLabel( + metaData.getCiteKeyPattern(Globals.prefs.getBibtexKeyPatternPreferences().getKeyPattern()), + database, entry, Globals.prefs.getBibtexKeyPatternPreferences()); } } else { diff --git a/src/main/java/net/sf/jabref/cli/AuxCommandLine.java b/src/main/java/net/sf/jabref/cli/AuxCommandLine.java index 11a6c250054..d86e954b4a4 100644 --- a/src/main/java/net/sf/jabref/cli/AuxCommandLine.java +++ b/src/main/java/net/sf/jabref/cli/AuxCommandLine.java @@ -2,8 +2,8 @@ import net.sf.jabref.logic.auxparser.AuxParser; import net.sf.jabref.logic.auxparser.AuxParserResult; -import net.sf.jabref.logic.util.strings.StringUtil; import net.sf.jabref.model.database.BibDatabase; +import net.sf.jabref.model.strings.StringUtil; public class AuxCommandLine { private final String auxFile; diff --git a/src/main/java/net/sf/jabref/cli/GenerateCharacterTable.java b/src/main/java/net/sf/jabref/cli/GenerateCharacterTable.java index a08ef88819a..b49093b855a 100644 --- a/src/main/java/net/sf/jabref/cli/GenerateCharacterTable.java +++ b/src/main/java/net/sf/jabref/cli/GenerateCharacterTable.java @@ -3,7 +3,7 @@ import java.util.Map; import java.util.TreeMap; -import net.sf.jabref.model.util.HTMLUnicodeConversionMaps; +import net.sf.jabref.model.strings.HTMLUnicodeConversionMaps; public class GenerateCharacterTable { diff --git a/src/main/java/net/sf/jabref/collab/ChangeScanner.java b/src/main/java/net/sf/jabref/collab/ChangeScanner.java index 39ebe98967c..e2aeb320134 100644 --- a/src/main/java/net/sf/jabref/collab/ChangeScanner.java +++ b/src/main/java/net/sf/jabref/collab/ChangeScanner.java @@ -3,10 +3,8 @@ import java.io.File; import java.io.IOException; import java.nio.file.Path; -import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; -import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.Set; @@ -165,37 +163,16 @@ private void storeTempDatabase() { }); } - private void scanMetaData(MetaData inMem1, MetaData inTemp1, MetaData onDisk) { - MetaDataChange metadataChange = new MetaDataChange(inMem1, inTemp1); - List handledOnDisk = new ArrayList<>(); - // Loop through the metadata entries of the "tmp" database, looking for - // matches - for (String key : inTemp1) { - // See if the key is missing in the disk database: - List vod = onDisk.getData(key); - if (vod == null) { - metadataChange.insertMetaDataRemoval(key); - } else { - // Both exist. Check if they are different: - List vit = inTemp1.getData(key); - if (!vod.equals(vit)) { - metadataChange.insertMetaDataChange(key, vod); - } - // Remember that we've handled this one: - handledOnDisk.add(key); + private void scanMetaData(MetaData inMemory, MetaData onTmp, MetaData onDisk) { + if (!onTmp.isEmpty()) { + if (!inMemory.equals(onDisk)) { + changes.add(new MetaDataChange(inMemory, onDisk)); } - } - - // See if there are unhandled keys in the disk database: - for (String key : onDisk) { - if (!handledOnDisk.contains(key)) { - metadataChange.insertMetaDataAddition(key, onDisk.getData(key)); + } else { + if (!onDisk.isEmpty() || !onTmp.equals(onDisk)) { + changes.add(new MetaDataChange(inMemory, onDisk)); } } - - if (metadataChange.getChangeCount() > 0) { - changes.add(metadataChange); - } } private void scanEntries(EntrySorter memorySorter, EntrySorter tmpSorter, EntrySorter diskSorter) { @@ -346,7 +323,7 @@ private void scanPreamble(BibDatabase inMemory, BibDatabase onTmp, BibDatabase o Optional tmp = onTmp.getPreamble(); Optional disk = onDisk.getPreamble(); if (!tmp.isPresent()) { - disk.filter(diskContent -> !diskContent.isEmpty()).ifPresent(diskContent -> changes.add(new PreambleChange(mem, diskContent))); + disk.ifPresent(diskContent -> changes.add(new PreambleChange(mem, diskContent))); } else { if (!disk.isPresent() || !tmp.equals(disk)) { changes.add(new PreambleChange(mem, disk.orElse(null))); diff --git a/src/main/java/net/sf/jabref/collab/EntryAddChange.java b/src/main/java/net/sf/jabref/collab/EntryAddChange.java index d834b4cbd8a..a0a79a19061 100644 --- a/src/main/java/net/sf/jabref/collab/EntryAddChange.java +++ b/src/main/java/net/sf/jabref/collab/EntryAddChange.java @@ -3,7 +3,6 @@ import javax.swing.JComponent; import javax.swing.JScrollPane; -import net.sf.jabref.Globals; import net.sf.jabref.gui.BasePanel; import net.sf.jabref.gui.PreviewPanel; import net.sf.jabref.gui.undo.NamedCompound; @@ -12,7 +11,6 @@ import net.sf.jabref.model.database.BibDatabase; import net.sf.jabref.model.entry.BibEntry; import net.sf.jabref.model.entry.IdGenerator; -import net.sf.jabref.preferences.JabRefPreferences; class EntryAddChange extends Change { @@ -24,15 +22,15 @@ public EntryAddChange(BibEntry diskEntry) { super(Localization.lang("Added entry")); this.diskEntry = diskEntry; - PreviewPanel pp = new PreviewPanel(null, diskEntry, null, Globals.prefs.get(JabRefPreferences.PREVIEW_0)); + PreviewPanel pp = new PreviewPanel(null, diskEntry, null); sp = new JScrollPane(pp); } @Override public boolean makeChange(BasePanel panel, BibDatabase secondary, NamedCompound undoEdit) { diskEntry.setId(IdGenerator.next()); - panel.getDatabase().insertEntryWithDuplicationCheck(diskEntry); - secondary.insertEntryWithDuplicationCheck(diskEntry); + panel.getDatabase().insertEntry(diskEntry); + secondary.insertEntry(diskEntry); undoEdit.addEdit(new UndoableInsertEntry(panel.getDatabase(), diskEntry, panel)); return true; } diff --git a/src/main/java/net/sf/jabref/collab/EntryDeleteChange.java b/src/main/java/net/sf/jabref/collab/EntryDeleteChange.java index 5b925c3e8a2..7d8a4223e9d 100644 --- a/src/main/java/net/sf/jabref/collab/EntryDeleteChange.java +++ b/src/main/java/net/sf/jabref/collab/EntryDeleteChange.java @@ -3,7 +3,6 @@ import javax.swing.JComponent; import javax.swing.JScrollPane; -import net.sf.jabref.Globals; import net.sf.jabref.gui.BasePanel; import net.sf.jabref.gui.PreviewPanel; import net.sf.jabref.gui.undo.NamedCompound; @@ -12,7 +11,6 @@ import net.sf.jabref.model.DuplicateCheck; import net.sf.jabref.model.database.BibDatabase; import net.sf.jabref.model.entry.BibEntry; -import net.sf.jabref.preferences.JabRefPreferences; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -41,7 +39,7 @@ public EntryDeleteChange(BibEntry memEntry, BibEntry tmpEntry) { LOGGER.debug("Modified entry: " + memEntry.getCiteKeyOptional().orElse("") + "\n Modified locally: " + isModifiedLocally); - PreviewPanel pp = new PreviewPanel(null, memEntry, null, Globals.prefs.get(JabRefPreferences.PREVIEW_0)); + PreviewPanel pp = new PreviewPanel(null, memEntry, null); sp = new JScrollPane(pp); } diff --git a/src/main/java/net/sf/jabref/collab/FileUpdateMonitor.java b/src/main/java/net/sf/jabref/collab/FileUpdateMonitor.java index e39e45ba894..47d224277e2 100644 --- a/src/main/java/net/sf/jabref/collab/FileUpdateMonitor.java +++ b/src/main/java/net/sf/jabref/collab/FileUpdateMonitor.java @@ -60,7 +60,7 @@ public String addUpdateListener(FileUpdateListener ul, File file) throws IOExcep } numberOfUpdateListener++; String key = String.valueOf(numberOfUpdateListener); - entries.put(key, new Entry(ul, file)); + entries.put(key, new Entry(ul, file.toPath())); return key; } @@ -106,7 +106,11 @@ public void removeUpdateListener(String handle) { public void updateTimeStamp(String key) { Entry entry = entries.get(key); if (entry != null) { - entry.updateTimeStamp(); + try { + entry.updateTimeStamp(); + } catch (IOException e) { + LOGGER.error("Couldn't update timestamp", e); + } } } @@ -132,17 +136,17 @@ public Path getTempFile(String key) throws IllegalArgumentException { static class Entry { private final FileUpdateListener listener; - private final File file; + private final Path file; private final Path tmpFile; private long timeStamp; private long fileSize; - public Entry(FileUpdateListener ul, File f) { + public Entry(FileUpdateListener ul, Path f) throws IOException { listener = ul; file = f; - timeStamp = file.lastModified(); - fileSize = file.length(); + timeStamp = Files.getLastModifiedTime(file).toMillis(); + fileSize = Files.size(file); tmpFile = FileUpdateMonitor.getTempFile(); if (tmpFile != null) { tmpFile.toFile().deleteOnExit(); @@ -156,42 +160,37 @@ public Entry(FileUpdateListener ul, File f) { * @return boolean true if the file has changed. */ public boolean hasBeenUpdated() throws IOException { - long modified = file.lastModified(); + long modified = Files.getLastModifiedTime(file).toMillis(); if (modified == 0L) { throw new IOException("File deleted"); } - long fileSizeNow = file.length(); + long fileSizeNow = Files.size(file); return (timeStamp != modified) || (fileSize != fileSizeNow); } - public void updateTimeStamp() { - timeStamp = file.lastModified(); + public void updateTimeStamp() throws IOException { + timeStamp = Files.getLastModifiedTime(file).toMillis(); if (timeStamp == 0L) { notifyFileRemoved(); } - fileSize = file.length(); + fileSize = Files.size(file); copy(); } public boolean copy() { - boolean res = false; - try { - res = FileUtil.copyFile(file.toPath(), tmpFile, true); - } catch (IOException ex) { - LOGGER.info("Cannot copy to temporary file '" + tmpFile + '\'', ex); - } - return res; + return FileUtil.copyFile(file, tmpFile, true); + } /** * Call the listener method to signal that the file has changed. */ - public void notifyListener() { + public void notifyListener() throws IOException { // Update time stamp. - timeStamp = file.lastModified(); - fileSize = file.length(); + timeStamp = Files.getLastModifiedTime(file).toMillis(); + fileSize = Files.size(file); listener.fileUpdated(); } diff --git a/src/main/java/net/sf/jabref/collab/MetaDataChange.java b/src/main/java/net/sf/jabref/collab/MetaDataChange.java index c8f1c2ae7eb..563a578c6b5 100644 --- a/src/main/java/net/sf/jabref/collab/MetaDataChange.java +++ b/src/main/java/net/sf/jabref/collab/MetaDataChange.java @@ -1,9 +1,5 @@ package net.sf.jabref.collab; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - import javax.swing.JComponent; import javax.swing.JScrollPane; @@ -13,110 +9,41 @@ import net.sf.jabref.model.database.BibDatabase; import net.sf.jabref.model.metadata.MetaData; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - /** * */ class MetaDataChange extends Change { - private static final int ADD = 1; - private static final int REMOVE = 2; - private static final int MODIFY = 3; - - private final InfoPane tp = new InfoPane(); - private final JScrollPane sp = new JScrollPane(tp); - private final MetaData md; - private final MetaData mdSecondary; - private final List changes = new ArrayList<>(); + private final InfoPane infoPane = new InfoPane(); + private final JScrollPane sp = new JScrollPane(infoPane); + private final MetaData originalMetaData; + private final MetaData newMetaData; - private static final Log LOGGER = LogFactory.getLog(MetaDataChange.class); - - - public MetaDataChange(MetaData md, MetaData mdSecondary) { + public MetaDataChange(MetaData originalMetaData, MetaData newMetaData) { super(Localization.lang("Metadata change")); - this.md = md; - this.mdSecondary = mdSecondary; - - tp.setText("" + Localization.lang("Metadata change") + ""); - } - - public int getChangeCount() { - return changes.size(); - } - - public void insertMetaDataAddition(String key, List value) { - changes.add(new MetaDataChangeUnit(MetaDataChange.ADD, key, value)); - } + this.originalMetaData = originalMetaData; + this.newMetaData = newMetaData; - public void insertMetaDataRemoval(String key) { - changes.add(new MetaDataChangeUnit(MetaDataChange.REMOVE, key, null)); - } - - public void insertMetaDataChange(String key, List value) { - changes.add(new MetaDataChangeUnit(MetaDataChange.MODIFY, key, value)); + infoPane.setText("" + Localization.lang("Metadata change") + ""); } @Override public JComponent description() { + /* + // TODO: Show detailed description of the changes StringBuilder sb = new StringBuilder( "" + Localization.lang("Changes have been made to the following metadata elements") + ":


  "); sb.append(changes.stream().map(unit -> unit.key).collect(Collectors.joining("
  "))); sb.append(""); - tp.setText(sb.toString()); + infoPane.setText(sb.toString()); + */ return sp; } @Override public boolean makeChange(BasePanel panel, BibDatabase secondary, NamedCompound undoEdit) { - for (MetaDataChangeUnit unit : changes) { - switch (unit.getType()) { - case ADD: - md.putData(unit.getKey(), unit.getValue()); - mdSecondary.putData(unit.getKey(), unit.getValue()); - break; - case REMOVE: - md.remove(unit.getKey()); - mdSecondary.remove(unit.getKey()); - break; - case MODIFY: - md.putData(unit.getKey(), unit.getValue()); - mdSecondary.putData(unit.getKey(), unit.getValue()); - break; - default: - LOGGER.error("Undefined meta data change unit type"); - break; - } - } + panel.getBibDatabaseContext().setMetaData(newMetaData); return true; } - - - static class MetaDataChangeUnit { - - private final int type; - private final String key; - private final List value; - - - public MetaDataChangeUnit(int type, String key, List value) { - this.type = type; - this.key = key; - this.value = value; - } - - public int getType() { - return type; - } - - public String getKey() { - return key; - } - - public List getValue() { - return value; - } - } } diff --git a/src/main/java/net/sf/jabref/gui/BasePanel.java b/src/main/java/net/sf/jabref/gui/BasePanel.java index 2b0ca0f7259..013955a629c 100644 --- a/src/main/java/net/sf/jabref/gui/BasePanel.java +++ b/src/main/java/net/sf/jabref/gui/BasePanel.java @@ -48,6 +48,7 @@ import net.sf.jabref.gui.actions.Actions; import net.sf.jabref.gui.actions.BaseAction; import net.sf.jabref.gui.actions.CleanupAction; +import net.sf.jabref.gui.actions.CopyBibTeXKeyAndLinkAction; import net.sf.jabref.gui.bibtexkeypattern.SearchFixDuplicateLabels; import net.sf.jabref.gui.desktop.JabRefDesktop; import net.sf.jabref.gui.entryeditor.EntryEditor; @@ -94,6 +95,7 @@ import net.sf.jabref.logic.autocompleter.AutoCompleterFactory; import net.sf.jabref.logic.autocompleter.ContentAutoCompleters; import net.sf.jabref.logic.bibtexkeypattern.BibtexKeyPatternUtil; +import net.sf.jabref.logic.citationstyle.CitationStyleCache; import net.sf.jabref.logic.exporter.BibtexDatabaseWriter; import net.sf.jabref.logic.exporter.FileSaveSession; import net.sf.jabref.logic.exporter.SaveException; @@ -124,6 +126,7 @@ import net.sf.jabref.model.entry.event.EntryEventSource; import net.sf.jabref.preferences.HighlightMatchingGroupPreferences; import net.sf.jabref.preferences.JabRefPreferences; +import net.sf.jabref.preferences.PreviewPreferences; import net.sf.jabref.shared.DBMSSynchronizer; import net.sf.jabref.specialfields.Printed; import net.sf.jabref.specialfields.Priority; @@ -151,12 +154,13 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe private final BibDatabaseContext bibDatabaseContext; private final MainTableDataModel tableModel; + private final CitationStyleCache citationStyleCache; + // To contain instantiated entry editors. This is to save time // As most enums, this must not be null private BasePanelMode mode = BasePanelMode.SHOWING_NOTHING; private EntryEditor currentEditor; - private PreviewPanel currentPreview; private MainTableSelectionListener selectionListener; private ListEventListener groupsHighlightListener; @@ -191,8 +195,6 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe // Variable to prevent erroneous update of back/forward histories at the time // when a Back or Forward operation is being processed: private boolean backOrForwardInProgress; - // To indicate which entry is currently shown. - private final Map entryEditors = new HashMap<>(); // in switching between entries. private PreambleEditor preambleEditor; @@ -220,6 +222,8 @@ public BasePanel(JabRefFrame frame, BibDatabaseContext bibDatabaseContext) { this.frame = frame; this.tableModel = new MainTableDataModel(getBibDatabaseContext()); + citationStyleCache = new CitationStyleCache(bibDatabaseContext); + setupMainPanel(); setupActions(); @@ -274,7 +278,7 @@ public String getTabTitle() { } } else if (databaseLocation == DatabaseLocation.SHARED) { title.append( - this.bibDatabaseContext.getDBSynchronizer().getDBName() + " [" + Localization.lang("shared") + "]"); + this.bibDatabaseContext.getDBMSSynchronizer().getDBName() + " [" + Localization.lang("shared") + "]"); } return title.toString(); @@ -480,7 +484,9 @@ public void run() { // Finally, set the new keys: for (BibEntry entry : entries) { bes = entry; - BibtexKeyPatternUtil.makeLabel(bibDatabaseContext.getMetaData(), bibDatabaseContext.getDatabase(), + BibtexKeyPatternUtil.makeLabel(bibDatabaseContext.getMetaData() + .getCiteKeyPattern(Globals.prefs.getBibtexKeyPatternPreferences().getKeyPattern()), + bibDatabaseContext.getDatabase(), bes, Globals.prefs.getBibtexKeyPatternPreferences()); ce.addEdit(new UndoableKeyChange(bibDatabaseContext.getDatabase(), bes, oldvals.get(bes), bes.getCiteKeyOptional().orElse(null))); @@ -533,6 +539,9 @@ public void update() { // The action for copying the BibTeX key and the title for the first selected entry actions.put(Actions.COPY_KEY_AND_TITLE, (BaseAction) () -> copyKeyAndTitle()); + // The action for copying the BibTeX keys as hyperlinks to the urls of the selected entries + actions.put(Actions.COPY_KEY_AND_LINK, new CopyBibTeXKeyAndLinkAction(mainTable)); + actions.put(Actions.MERGE_DATABASE, new AppendDatabaseAction(frame, this)); actions.put(Actions.ADD_FILE_LINK, new AttachFileAction(this)); @@ -555,7 +564,7 @@ public void update() { .openConsole(frame.getCurrentBasePanel().getBibDatabaseContext().getDatabaseFile().orElse(null))); actions.put(Actions.PULL_CHANGES_FROM_SHARED_DATABASE, (BaseAction) () -> { - DBMSSynchronizer dbmsSynchronizer = frame.getCurrentBasePanel().getBibDatabaseContext().getDBSynchronizer(); + DBMSSynchronizer dbmsSynchronizer = frame.getCurrentBasePanel().getBibDatabaseContext().getDBMSSynchronizer(); dbmsSynchronizer.pullChanges(); }); @@ -694,8 +703,13 @@ public void update() { } actions.put(Actions.TOGGLE_PREVIEW, (BaseAction) () -> { - boolean enabled = !Globals.prefs.getBoolean(JabRefPreferences.PREVIEW_ENABLED); - Globals.prefs.putBoolean(JabRefPreferences.PREVIEW_ENABLED, enabled); + PreviewPreferences previewPreferences = Globals.prefs.getPreviewPreferences(); + boolean enabled = !previewPreferences.isPreviewPanelEnabled(); + PreviewPreferences newPreviewPreferences = previewPreferences + .getBuilder() + .withPreviewPanelEnabled(enabled) + .build(); + Globals.prefs.storePreviewPreferences(newPreviewPreferences); setPreviewActiveBasePanels(enabled); frame.setPreviewToggle(enabled); }); @@ -718,13 +732,8 @@ public void update() { groupsHighlightListener.listChanged(null); }); - actions.put(Actions.SWITCH_PREVIEW, (BaseAction) selectionListener::switchPreview); - - actions.put(Actions.MANAGE_SELECTORS, (BaseAction) () -> { - ContentSelectorDialog2 csd = new ContentSelectorDialog2(frame, frame, BasePanel.this, false, null); - csd.setLocationRelativeTo(frame); - csd.setVisible(true); - }); + actions.put(Actions.NEXT_PREVIEW_STYLE, (BaseAction) selectionListener::nextPreviewStyle); + actions.put(Actions.PREVIOUS_PREVIEW_STYLE, (BaseAction) selectionListener::previousPreviewStyle); actions.put(Actions.EXPORT_TO_CLIPBOARD, new ExportToClipboardAction(frame)); actions.put(Actions.SEND_AS_EMAIL, new SendAsEMailAction(frame)); @@ -830,7 +839,7 @@ private void paste() { // independently of the copied // ones. be.setId(IdGenerator.next()); - bibDatabaseContext.getDatabase().insertEntryWithDuplicationCheck(be); + bibDatabaseContext.getDatabase().insertEntry(be); ce.addEdit(new UndoableInsertEntry(bibDatabaseContext.getDatabase(), be, BasePanel.this)); @@ -1138,7 +1147,7 @@ public BibEntry newEntry(EntryType type) { String id = IdGenerator.next(); final BibEntry be = new BibEntry(id, actualType.getName()); try { - bibDatabaseContext.getDatabase().insertEntryWithDuplicationCheck(be); + bibDatabaseContext.getDatabase().insertEntry(be); // Set owner/timestamp if options are enabled: List list = new ArrayList<>(); list.add(be); @@ -1305,7 +1314,7 @@ public void listen(EntryRemovedEvent removedEntryEvent) { public void insertEntry(final BibEntry bibEntry) { if (bibEntry != null) { try { - bibDatabaseContext.getDatabase().insertEntryWithDuplicationCheck(bibEntry); + bibDatabaseContext.getDatabase().insertEntry(bibEntry); if (Globals.prefs.getBoolean(JabRefPreferences.USE_OWNER)) { // Set owner field to default value UpdateField.setAutomaticFields(bibEntry, true, true, Globals.prefs.getUpdateFieldPreferences()); @@ -1478,10 +1487,6 @@ public void setupMainPanel() { createMainTable(); - for (EntryEditor ee : entryEditors.values()) { - ee.validateAllFields(); - } - splitPane.setTopComponent(mainTable.getPane()); // Remove borders @@ -1492,7 +1497,7 @@ public void setupMainPanel() { // otherwise set the bottom component to null. if (mode == BasePanelMode.SHOWING_PREVIEW) { mode = BasePanelMode.SHOWING_NOTHING; - highlightEntry(currentPreview.getEntry()); + highlightEntry(selectionListener.getPreview().getEntry()); } else if (mode == BasePanelMode.SHOWING_EDITOR) { mode = BasePanelMode.SHOWING_NOTHING; } else { @@ -1510,8 +1515,7 @@ public void setupMainPanel() { AutoCompletePreferences autoCompletePreferences = new AutoCompletePreferences(Globals.prefs); // Set up AutoCompleters for this panel: if (Globals.prefs.getBoolean(JabRefPreferences.AUTO_COMPLETE)) { - autoCompleters = new ContentAutoCompleters(getDatabase(), bibDatabaseContext.getMetaData(), - autoCompletePreferences, Globals.journalAbbreviationLoader); + autoCompleters = new ContentAutoCompleters(getDatabase(), autoCompletePreferences, Globals.journalAbbreviationLoader); // ensure that the autocompleters are in sync with entries this.getDatabase().registerListener(new AutoCompleteListener()); } else { @@ -1568,7 +1572,7 @@ public void updateStringDialog() { public void adjustSplitter() { if (mode == BasePanelMode.SHOWING_PREVIEW) { splitPane.setDividerLocation( - splitPane.getHeight() - Globals.prefs.getInt(JabRefPreferences.PREVIEW_PANEL_HEIGHT)); + splitPane.getHeight() - Globals.prefs.getPreviewPreferences().getPreviewPanelHeight()); } else { splitPane.setDividerLocation( splitPane.getHeight() - Globals.prefs.getInt(JabRefPreferences.ENTRY_EDITOR_HEIGHT)); @@ -1611,25 +1615,13 @@ public void showEntry(final BibEntry be) { divLoc = splitPane.getDividerLocation(); } - if (entryEditors.containsKey(be.getType())) { - // We already have an editor for this entry type. - entryEditor = entryEditors.get(be.getType()); - entryEditor.switchTo(be); - if (visName != null) { - entryEditor.setVisiblePanel(visName); - } - splitPane.setBottomComponent(entryEditor); - } else { - // We must instantiate a new editor for this type. - entryEditor = new EntryEditor(frame, BasePanel.this, be); - if (visName != null) { - entryEditor.setVisiblePanel(visName); - } - splitPane.setBottomComponent(entryEditor); - - entryEditors.put(be.getType(), entryEditor); - + // We must instantiate a new editor. + entryEditor = new EntryEditor(frame, BasePanel.this, be); + if (visName != null) { + entryEditor.setVisiblePanel(visName); } + splitPane.setBottomComponent(entryEditor); + if (divLoc > 0) { splitPane.setDividerLocation(divLoc); } else { @@ -1650,28 +1642,13 @@ public void showEntry(final BibEntry be) { */ public EntryEditor getEntryEditor(BibEntry entry) { EntryEditor entryEditor; - if (entryEditors.containsKey(entry.getType())) { - EntryEditor visibleNow = currentEditor; - - // We already have an editor for this entry type. - entryEditor = entryEditors.get(entry.getType()); - - // If the cached editor is not the same as the currently shown one, - // make sure the current one stores its current edit: - if ((visibleNow != null) && (!(entryEditor.equals(visibleNow)))) { - visibleNow.storeCurrentEdit(); - } - entryEditor.switchTo(entry); - } else { - // We must instantiate a new editor for this type. First make sure the old one - // stores its last edit: - storeCurrentEdit(); - // Then start the new one: - entryEditor = new EntryEditor(frame, BasePanel.this, entry); + // We must instantiate a new editor. First make sure the old one + // stores its last edit: + storeCurrentEdit(); + // Then start the new one: + entryEditor = new EntryEditor(frame, BasePanel.this, entry); - entryEditors.put(entry.getType(), entryEditor); - } return entryEditor; } @@ -1689,9 +1666,6 @@ public void showEntryEditor(EntryEditor editor) { if (mode == BasePanelMode.SHOWING_EDITOR) { Globals.prefs.putInt(JabRefPreferences.ENTRY_EDITOR_HEIGHT, splitPane.getHeight() - splitPane.getDividerLocation()); - } else if (mode == BasePanelMode.SHOWING_PREVIEW) { - Globals.prefs.putInt(JabRefPreferences.PREVIEW_PANEL_HEIGHT, - splitPane.getHeight() - splitPane.getDividerLocation()); } mode = BasePanelMode.SHOWING_EDITOR; currentEditor = editor; @@ -1709,8 +1683,8 @@ public void showEntryEditor(EntryEditor editor) { */ public void showPreview(PreviewPanel preview) { mode = BasePanelMode.SHOWING_PREVIEW; - currentPreview = preview; splitPane.setBottomComponent(preview); + adjustSplitter(); } /** @@ -1775,7 +1749,7 @@ public void entryEditorClosing(EntryEditor editor) { */ public void ensureNotShowingBottomPanel(BibEntry entry) { if (((mode == BasePanelMode.SHOWING_EDITOR) && (currentEditor.getEntry() == entry)) - || ((mode == BasePanelMode.SHOWING_PREVIEW) && (currentPreview.getEntry() == entry))) { + || ((mode == BasePanelMode.SHOWING_PREVIEW) && (selectionListener.getPreview().getEntry() == entry))) { hideBottomComponent(); } } @@ -1804,25 +1778,6 @@ public void storeCurrentEdit() { } } - /** - * This method iterates through all existing entry editors in this BasePanel, telling each to update all its - * instances of FieldContentSelector. This is done to ensure that the list of words in each selector is up-to-date - * after the user has made changes in the Manage dialog. - */ - public void updateAllContentSelectors() { - for (Map.Entry stringEntryEditorEntry : entryEditors.entrySet()) { - EntryEditor ed = stringEntryEditorEntry.getValue(); - ed.updateAllContentSelectors(); - } - } - - public void rebuildAllEntryEditors() { - for (Map.Entry stringEntryEditorEntry : entryEditors.entrySet()) { - EntryEditor ed = stringEntryEditorEntry.getValue(); - ed.rebuildPanels(); - } - } - public void markBaseChanged() { baseChanged = true; @@ -1953,7 +1908,9 @@ public void autoGenerateKeysBeforeSaving() { for (BibEntry bes : bibDatabaseContext.getDatabase().getEntries()) { Optional oldKey = bes.getCiteKeyOptional(); if (!(oldKey.isPresent()) || oldKey.get().isEmpty()) { - BibtexKeyPatternUtil.makeLabel(bibDatabaseContext.getMetaData(), bibDatabaseContext.getDatabase(), + BibtexKeyPatternUtil.makeLabel(bibDatabaseContext.getMetaData() + .getCiteKeyPattern(Globals.prefs.getBibtexKeyPatternPreferences().getKeyPattern()), + bibDatabaseContext.getDatabase(), bes, Globals.prefs.getBibtexKeyPatternPreferences()); ce.addEdit(new UndoableKeyChange(bibDatabaseContext.getDatabase(), bes, null, bes.getCiteKeyOptional().get())); // Cite key is set here @@ -1984,8 +1941,12 @@ private void setPreviewActive(boolean enabled) { */ public void saveDividerLocation() { if (mode == BasePanelMode.SHOWING_PREVIEW) { - Globals.prefs.putInt(JabRefPreferences.PREVIEW_PANEL_HEIGHT, - splitPane.getHeight() - splitPane.getDividerLocation()); + int previewPanelHeight = splitPane.getHeight() - splitPane.getDividerLocation(); + PreviewPreferences previewPreferences = Globals.prefs.getPreviewPreferences() + .getBuilder() + .withPreviewPanelHeight(previewPanelHeight) + .build(); + Globals.prefs.storePreviewPreferences(previewPreferences); } else if (mode == BasePanelMode.SHOWING_EDITOR) { Globals.prefs.putInt(JabRefPreferences.ENTRY_EDITOR_HEIGHT, splitPane.getHeight() - splitPane.getDividerLocation()); @@ -2100,11 +2061,9 @@ private class PrintPreviewAction implements BaseAction { @Override public void action() throws Exception { - if (currentPreview == null) { - selectionListener.setPreviewActive(true); - showPreview(selectionListener.getPreview()); - } - currentPreview.getPrintAction().actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null)); + selectionListener.setPreviewActive(true); + showPreview(selectionListener.getPreview()); + selectionListener.getPreview().getPrintAction().actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null)); } } @@ -2387,7 +2346,8 @@ public Optional searchAndOpen() { Map> result; if (Globals.prefs.getBoolean(JabRefPreferences.AUTOLINK_USE_REG_EXP_SEARCH_KEY)) { String regExp = Globals.prefs.get(JabRefPreferences.REG_EXP_SEARCH_EXPRESSION_KEY); - result = RegExpFileSearch.findFilesForSet(entries, extensions, dirs, regExp); + result = RegExpFileSearch.findFilesForSet(entries, extensions, dirs, regExp, + Globals.prefs.getKeywordDelimiter()); } else { boolean autoLinkExactKeyOnly = Globals.prefs.getBoolean(JabRefPreferences.AUTOLINK_EXACT_KEY_ONLY); result = FileUtil.findAssociatedFiles(entries, extensions, dirs, autoLinkExactKeyOnly); @@ -2438,10 +2398,6 @@ public MainTable getMainTable() { return mainTable; } - public Map getEntryEditors() { - return entryEditors; - } - public BibDatabaseContext getDatabaseContext() { return bibDatabaseContext; } @@ -2453,4 +2409,17 @@ public SearchQuery getCurrentSearchQuery() { public void setCurrentSearchQuery(SearchQuery currentSearchQuery) { this.currentSearchQuery = currentSearchQuery; } + + public CitationStyleCache getCitationStyleCache() { + return citationStyleCache; + } + + public PreviewPanel getPreviewPanel() { + if (selectionListener == null) { + // only occurs if this is called while instantiating this BasePanel + return null; + } + return selectionListener.getPreview(); + } + } diff --git a/src/main/java/net/sf/jabref/gui/ContentSelectorDialog2.java b/src/main/java/net/sf/jabref/gui/ContentSelectorDialog2.java deleted file mode 100644 index 7a7eb2e4a69..00000000000 --- a/src/main/java/net/sf/jabref/gui/ContentSelectorDialog2.java +++ /dev/null @@ -1,515 +0,0 @@ -package net.sf.jabref.gui; - -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.awt.Window; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.FocusAdapter; -import java.awt.event.FocusEvent; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.BorderFactory; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JDialog; -import javax.swing.JList; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTextField; - -import net.sf.jabref.gui.help.HelpAction; -import net.sf.jabref.gui.keyboard.KeyBinder; -import net.sf.jabref.logic.help.HelpFile; -import net.sf.jabref.logic.l10n.Localization; -import net.sf.jabref.model.entry.FieldName; -import net.sf.jabref.model.metadata.MetaData; - -import com.jgoodies.forms.builder.ButtonBarBuilder; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -class ContentSelectorDialog2 extends JDialog { - - private final GridBagLayout gbl = new GridBagLayout(); - private final GridBagConstraints con = new GridBagConstraints(); - private final JPanel fieldPan = new JPanel(); - private final JPanel wordPan = new JPanel(); - private final JPanel buttonPan = new JPanel(); - private final JPanel fieldNamePan = new JPanel(); - private final JPanel wordEditPan = new JPanel(); - - private static final String WORD_FIRSTLINE_TEXT = Localization.lang("= -= Abbreviate_journal_names_of_the_selected_entries_(ISO_abbreviation)=Forkort_tidsskriftsnavn_for_de_valgte_poster_(ISO-forkortelse) Abbreviate_journal_names_of_the_selected_entries_(MEDLINE_abbreviation)=Forkort_tidsskriftsnavn_for_de_valgte_poster_(MEDLINE-forkortelse) @@ -42,10 +40,10 @@ Action=Handling Add=Tilføj -Add_a_(compiled)_custom_ImportFormat_class_from_a_class_path.=Tilføj_en_(kompileret)_egendefineret_ImportFormat-klasse_fra_en_classpath. +Add_a_(compiled)_custom_Importer_class_from_a_class_path.=Tilføj_en_(kompileret)_egendefineret_Importer-klasse_fra_en_classpath. The_path_need_not_be_on_the_classpath_of_JabRef.=Stien_behøver_ikke_at_være_på_JabRefs_classpath. -Add_a_(compiled)_custom_ImportFormat_class_from_a_ZIP-archive.=Tilføj_en_kompileret_ImportFormat-klasse_fra_en_ZIP-fil. +Add_a_(compiled)_custom_Importer_class_from_a_ZIP-archive.=Tilføj_en_kompileret_Importer-klasse_fra_en_ZIP-fil. The_ZIP-archive_need_not_be_on_the_classpath_of_JabRef.=ZIP-filen_behøver_ikke_at_være_i_din_classpath. Add_entry_selection_to_this_group=Føj_valgte_poster_til_denne_gruppe @@ -82,7 +80,6 @@ All_subgroups_(recursively)=Alle_undergrupper_(rekursivt) Always_reformat_BIB_file_on_save_and_export= -An_exception_occurred_while_accessing_'%0'=En_fejl_opstod_ved_læsning_af_'%0' A_SAX_exception_occurred_while_parsing_'%0'\:=En_SAXException_forekom_ved_læsning_af_'%0'\: and=og @@ -156,7 +153,7 @@ Backup_old_file_when_saving=Lav_sikkerhedskopi_ved_gemning BibTeX_key_is_unique.=BibTeX-nøglen_er_unik -BibTeX_source=BibTeX-kilde +%0_source=%0-kilde Broken_link=Ugyldigt_link @@ -665,13 +662,11 @@ Import_strings=Importer_strenge Import_to_open_tab=Importer_til_åbent_faneblad -Import_word_selector_definitions=Importer_definitioner_for_hurtigvælgere - Imported_entries=Importerede_poster Imported_from_database=Importerede_fra_databasen -ImportFormat_class=ImportFormat-klasse +Importer_class=Importer-klasse Importing=Importerer @@ -760,8 +755,6 @@ Main_file_directory=Hovedbibliotek Main_layout_file=Hoved-layoutfil -Manage=Opsæt - Manage_custom_exports=Opsæt_eksterne_eksportfiltre Manage_custom_imports=Opsæt_eksterne_importfiltre @@ -876,8 +869,6 @@ Nothing_to_redo=Ingenting_at_gentage Nothing_to_undo=Ingenting_at_fortryde -Number_of_references_to_fetch?=Antal_referencer_som_skal_hentes? - occurrences=forekomster OK=OK @@ -982,6 +973,13 @@ Preferences=Indstillinger Preferences_recorded.=Indstillinger_gemt. Preview=Forhåndsvisning +Citation_Style= +Current_Preview= +Bad_character_inside_entry= +Error_while_generating_citation_style= +Preview_style_changed_to\:_%0= +Next_preview_layout= +Previous_preview_layout= Previous_entry=Forrige_post @@ -1005,7 +1003,7 @@ Redo=Gentag Reference_database=Referencedatabase -References_found=Referencer_fundet +%0_references_found._Number_of_references_to_fetch?=Referencer_fundet\:_%0._Antal_referencer_som_skal_hentes? Refine_supergroup\:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup=Undergruppe\:_Vis_poster_indeholdt_både_i_denne_gruppe_og_gruppe_over @@ -1101,8 +1099,6 @@ Save_failed=Gemning_mislykkedes Save_failed_during_backup_creation=Gemning_mislykkedes_ved_oprettelse_af_sikkerhedskopi -Save_failed_while_committing_changes\:_%0=Gemning_mislykkedes_ved_inddatering_af_ændringer\:_%0 - Save_selected_as...=Gem_valgte_som_... Saved_database=Database_gemt @@ -1153,7 +1149,7 @@ Settings=Indstillinger Shortcut=Genvej -Show/edit_BibTeX_source=Vis/rediger_BibTeX-kilde +Show/edit_%0_source=Vis/rediger_%0-kilde Show_'Firstname_Lastname'=Vis_'Fornavn_Efternavn' @@ -1175,7 +1171,7 @@ Show_icons_for_groups=Vis_ikoner_for_grupper Show_last_names_only=Vis_kun_efternavn Show_names_unchanged=Vis_navn_uændret - + Show_optional_fields=Vis_valgfrie_felter Show_required_fields=Vis_obligatoriske_felter @@ -1324,7 +1320,6 @@ Unmark_entries=Fjern_mærkning Unmark_entry=Fjern_mærkning - untitled=uden_navn Up=Op @@ -1419,6 +1414,7 @@ Fetching_Medline_by_term...=Henter_fra_Medline_via_udtryk... Please_enter_a_valid_number=Indtast_venligst_et_gyldigt_tal Please_enter_a_comma_separated_list_of_Medline_IDs_(numbers)_or_search_terms.=Indtast_venligst_en_kommasepareret_liste_af_Medline_IDer_(numre)_eller_søgeudtryk. Show_search_results_in_a_window=Vis_søgeresultater_i_et_vindue +Search_in_all_open_databases= Move_file_to_file_directory?=Flyt_fil_til_filbibliotek? Rename_to_'%0'=Omdøb_til_'%0' You_have_changed_the_menu_and_label_font_size.=Du_har_ændret_menu-_og_tekst-skriftstørrelsen. @@ -1714,7 +1710,6 @@ Five_stars= Four_stars= Help_on_special_fields= Keywords_of_selected_entries= -Manage_content_selectors= Manage_keywords= No_priority_information= No_rank_information= @@ -1771,8 +1766,6 @@ Add_{}_to_specified_title_words_on_search_to_keep_the_correct_case= Import_conversions= Please_enter_a_search_string= Please_open_or_start_a_new_database_before_searching= -An_error_occurred_while_fetching_from_ADS_(%0)\:= -An_error_occurred_while_parsing_abstract= Log= Canceled_merging_entries= @@ -1829,7 +1822,6 @@ Move_to_group= Clear_read_status= Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')= -Could_not_apply_changes.= Deprecated_fields= Hide/show_toolbar= No_read_status_information= @@ -1894,7 +1886,6 @@ Modified_groups_tree= Removed_all_groups= Accepting_the_change_replaces_the_complete_groups_tree_with_the_externally_modified_groups_tree.= Select_export_format= -Export_with_selected_format= Return_to_JabRef= Please_move_the_file_manually_and_link_in_place.= Could_not_connect_to_%0=Kunne_ikke_forbinde_til_%0 @@ -1921,13 +1912,12 @@ Copy_BibTeX_key_and_title= File_rename_failed_for_%0_entries.= To_set_up,_go_to=For_at_sætte_op,_gå_til Merged_BibTeX_source_code= -'%0'_is_not_a_valid_ADS_bibcode.= Invalid_DOI\:_'%0'.=Ugyldig_DOI\:_'%0'. should_start_with_a_name= should_end_with_a_name= unexpected_closing_curly_bracket= unexpected_opening_curly_bracket= -large_capitals_are_not_masked_using_curly_brackets_{}= +capital_letters_are_not_masked_using_curly_brackets_{}= should_contain_a_four_digit_number= should_contain_a_valid_page_number_range= Filled= @@ -1947,7 +1937,6 @@ This_search_contains_entries_in_which_any_field_contains_the_term_%0= This_search_contains_entries_in_which= An_autosave_file_was_found_for_this_database._This_could_indicate_that_JabRef_did_not_shut_down_cleanly_last_time_the_file_was_used.= -Note\:_A_full_text_search_is_currently_not_supported_for_%0= Unable_to_autodetect_OpenOffice/LibreOffice_installation._Please_choose_the_installation_directory_manually.= JabRef_no_longer_supports_'ps'_or_'pdf'_fields.
File_links_are_now_stored_in_the_'file'_field_and_files_are_stored_in_an_external_file_directory.
To_make_use_of_this_feature,_JabRef_needs_to_upgrade_file_links.

= This_database_uses_outdated_file_links.= @@ -1987,7 +1976,6 @@ Resolve_duplicate_BibTeX_keys= Save_all= String_dialog,_add_string= String_dialog,_remove_string= -Switch_preview_layout= Synchronize_files= Unabbreviate= should_contain_a_protocol= @@ -2155,8 +2143,6 @@ OpenOffice/LibreOffice_integration= incorrect_control_digit= incorrect_format= - - Copy_version_to_clipboard= Copied_version_to_clipboard= @@ -2232,7 +2218,6 @@ Database= User= Connect=Tilslut Connection_error= -Driver_error= Connection_to_%0_server_established.= Required_field_"%0"_is_empty.= %0_driver_not_available.= @@ -2251,8 +2236,12 @@ Local_version\:_%0= Shared_version\:_%0= Please_merge_the_shared_entry_with_yours_and_press_"Merge_entries"_to_resolve_this_problem.= Canceling_this_operation_will_leave_your_changes_unsynchronized._Cancel_anyway?= -The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side._Hit_"Keep"_to_recover_the_entry.= +Shared_entry_is_no_longer_present= +The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side.= +You_can_restore_the_entry_using_the_"Undo"_operation.= Remember_password?= +You_are_already_connected_to_a_database_using_entered_connection_details.= + Cannot_cite_entries_without_BibTeX_keys._Generate_keys_now?= New_technical_report= @@ -2301,6 +2290,12 @@ Fetcher_'%0'_did_not_find_an_entry_for_id_'%1'.= Select_first_entry= Select_last_entry= -Search_in_all_open_databases= - Invalid_ISBN\:_'%0'.= +should_be_an_integer_or_normalized= +should_be_normalized= + +Empty_search_ID= +The_given_search_ID_was_empty.= +Copy_BibTeX_key_and_link= +empty_BibTeX_key= +BibLaTeX_field_only= diff --git a/src/main/resources/l10n/JabRef_de.properties b/src/main/resources/l10n/JabRef_de.properties index 797430f89a3..ad31648d85b 100644 --- a/src/main/resources/l10n/JabRef_de.properties +++ b/src/main/resources/l10n/JabRef_de.properties @@ -16,12 +16,10 @@ %0_matches_the_term_%1=%0_exakt_dem_Ausdruck_%1_entspricht -= Could_not_find_file_'%0'
linked_from_entry_'%1'=Die_Datei_'%0',_die_vom_Eintrag
'%1'_verlinkt_wird,_wurde_nicht_gefunden == -= Abbreviate_journal_names_of_the_selected_entries_(ISO_abbreviation)=Abreviar_nombres_de_revistas_de_las_entradas_seleccionadas_(Abreviatura_ISO) Abbreviate_journal_names_of_the_selected_entries_(MEDLINE_abbreviation)=Abreviar_nombres_de_revistas_de_las_entradas_seleccionadas_(Abreviatura_MEDLINE) @@ -42,10 +40,10 @@ Action=Acción Add=Añadir -Add_a_(compiled)_custom_ImportFormat_class_from_a_class_path.=Añadir_una_clase_personalizada_(compilada)_ImportFormat_desde_una_classpath. +Add_a_(compiled)_custom_Importer_class_from_a_class_path.=Añadir_una_clase_personalizada_(compilada)_Importer_desde_una_classpath. The_path_need_not_be_on_the_classpath_of_JabRef.=La_ruta_no_debe_estar_en_la_classpath_de_JabRef. -Add_a_(compiled)_custom_ImportFormat_class_from_a_ZIP-archive.=Añadir_una_clase_personalizada_(compilada)_ImportFormat_desde_un_archivo_ZIP. +Add_a_(compiled)_custom_Importer_class_from_a_ZIP-archive.=Añadir_una_clase_personalizada_(compilada)_Importer_desde_un_archivo_ZIP. The_ZIP-archive_need_not_be_on_the_classpath_of_JabRef.=El_archivo_ZIP_no_tiene_por_qué_estar_en_la_classpath_de_JabRef. Add_entry_selection_to_this_group=Añadir_selección_de_entrada_al_grupo @@ -82,7 +80,6 @@ All_subgroups_(recursively)=Todos_los_subgrupos(Recursivamente) Always_reformat_BIB_file_on_save_and_export=Siempre_reformatear_el_fichero_BIB_al_guardar_y_exportar -An_exception_occurred_while_accessing_'%0'=Ocurrió_una_Excepción_mientras_se_accedía_a_'%0' A_SAX_exception_occurred_while_parsing_'%0'\:=Ocurrió_una_Excepción_SAX_mientras_se_analizaba_la_sintaxis_de_'%0'\: and=y @@ -156,7 +153,7 @@ Backup_old_file_when_saving=Hacer_copia_de_respaldo_del_archivo_antiguo_al_graba BibTeX_key_is_unique.=La_clave_BibTeX_es_única -BibTeX_source=Origen_BibTeX +%0_source=Origen_%0 Broken_link=Enlace_roto @@ -665,13 +662,11 @@ Import_strings=Importar_cadenas Import_to_open_tab=Importar_en_pestaña_abierta -Import_word_selector_definitions=Importar_definiciones_de_selector_de_palabras - Imported_entries=Importar_entradas Imported_from_database=Importado_desde_base_de_datos -ImportFormat_class=Importar_formato_de_clase +Importer_class=Importar_formato_de_clase Importing=Importando @@ -760,8 +755,6 @@ Main_file_directory=Carpeta_del_archivo_principal Main_layout_file=Archivo_de_configuración_principal -Manage=Administrar - Manage_custom_exports=Administrar_esportaciones_personalizadas Manage_custom_imports=Administrar_importaciones_personalizadas @@ -876,8 +869,6 @@ Nothing_to_redo=Nada_que_rehacer Nothing_to_undo=Nada_que_deshacer -Number_of_references_to_fetch?=¿Número_de_apariciones_a_recuperar? - occurrences=apariciones OK=Ok @@ -982,6 +973,13 @@ Preferences=Preferencias Preferences_recorded.=Preferencias_guardadas. Preview=Vista_previa +Citation_Style= +Current_Preview= +Bad_character_inside_entry= +Error_while_generating_citation_style= +Preview_style_changed_to\:_%0= +Next_preview_layout= +Previous_preview_layout= Previous_entry=Entrada_anterior @@ -1005,7 +1003,7 @@ Redo=Rehacer Reference_database=Base_de_datos_de_referencia -References_found=Referencias_encontradas +%0_references_found._Number_of_references_to_fetch?=Referencias_encontradas\:_%0._¿Número_de_apariciones_a_recuperar? Refine_supergroup\:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup=Refinar_supergrupo\:_Ver_entradas_contenidas_en_este_grupo_y_sus_subgrupos_cuando_estén_seleccionadas @@ -1101,8 +1099,6 @@ Save_failed=Fallón_el_guardado Save_failed_during_backup_creation=Error_durante_el_guardado_mientras_se_creaba_la_copia_de_seguridad -Save_failed_while_committing_changes\:_%0=Error_mientras_se_efectuaban_los_cambios\:_%0 - Save_selected_as...=Guardar_seleccionado_como... Saved_database=Base_de_datos_guardada @@ -1153,7 +1149,7 @@ Settings=Ajustes Shortcut=Atajo -Show/edit_BibTeX_source=Mostrar/editar_fuente_BibTeX +Show/edit_%0_source=Mostrar/editar_fuente_%0 Show_'Firstname_Lastname'=Mostrar_'Nombre_Apellido' @@ -1175,7 +1171,7 @@ Show_icons_for_groups=Mostrar_iconos_para_grupos Show_last_names_only=Mostrar_sólo_apellidos Show_names_unchanged=Mostrar_nombres_sin_cambios - + Show_optional_fields=Mostrar_campos_opcionales Show_required_fields=Mostrar_campos_requeridos @@ -1324,7 +1320,6 @@ Unmark_entries=Desmarcar_entradas Unmark_entry=Desmarcar_entrada - untitled=sin_título Up=Arriba @@ -1419,6 +1414,7 @@ Fetching_Medline_by_term...=Recuperando_desde_Medline_por_término... Please_enter_a_valid_number=Por_favor,_introduzca_un_número_válido Please_enter_a_comma_separated_list_of_Medline_IDs_(numbers)_or_search_terms.=Por_favor,_introduzca_una_lista_de_valores_separados_por_coma_de_IDs_de_Medline_(números)_o_términos_de_búsqueda. Show_search_results_in_a_window=Mostrar_los_resultados_de_la_búsqueda_en_una_ventana +Search_in_all_open_databases= Move_file_to_file_directory?=¿Mover_archivo_a_la_carpeta_de_archivos? Rename_to_'%0'=Renombrar_a_'%0' You_have_changed_the_menu_and_label_font_size.=Ha_cambiado_el_tamaño_de_tipo_de_letra_para_el_menu_y_etiqueta. @@ -1714,7 +1710,6 @@ Five_stars=Cinco_estrellas Four_stars=Cuatro_estrellas Help_on_special_fields=Ayuda_sobre_campos_especiales Keywords_of_selected_entries=Palabras_clave_de_las_entradas_seleccionadas -Manage_content_selectors=Getionar_selectores_de_contenido Manage_keywords=Administrar_palabras_clave No_priority_information=Sin_información_de_prioridad No_rank_information=Sin_información_de_rango @@ -1771,8 +1766,6 @@ Add_{}_to_specified_title_words_on_search_to_keep_the_correct_case=Añadir_{}_pa Import_conversions=Importar_conversiones Please_enter_a_search_string=Introduzca_una_cadena_de_búsqueda,_por_favor Please_open_or_start_a_new_database_before_searching=Abra_o_cree_una_nueva_base_de_datos_antes_de_buscar,_por_favor -An_error_occurred_while_fetching_from_ADS_(%0)\:=Ocurrió_un_error_al_recuperar_desde_ADS_(%0)\: -An_error_occurred_while_parsing_abstract=Ocurrió_un_error_mientras_se_analizaba_el_resumen Log=Registro Canceled_merging_entries=Cancelar_fusionado_de_entradas @@ -1829,7 +1822,6 @@ Move_to_group=Mover_al_grupo Clear_read_status=Borrar_status_de_lectura Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=Convertir_a_formato_BibLatex_(por_ejemplo,_mover_el_valor_del_campo_'journal'_a_'journaltitle') -Could_not_apply_changes.=No_se_pudieron_aplicar_los_cambios Deprecated_fields=Campos_obsoletos Hide/show_toolbar=Mostrar/ocultar_barra_de_herramientas No_read_status_information=No_hay_información_sobre_status_de_lectura @@ -1894,7 +1886,6 @@ Modified_groups_tree=Árbol_de_grupos_modificado Removed_all_groups=Se_eliminaron_todos_los_grupos Accepting_the_change_replaces_the_complete_groups_tree_with_the_externally_modified_groups_tree.=Aceptar_el_cambio_reemplaza_el_árbol_completo_de_grupos_por_el_árbol_de_grupos_modificado_externamente Select_export_format=Seleccionar_formato_para_exportar -Export_with_selected_format=Exportar_con_el_formato_seleccionado Return_to_JabRef=Volver_a_JabRef Please_move_the_file_manually_and_link_in_place.=Por_favor,_mueva_el_fichero_manualmente_y_enlance_en_el_destino Could_not_connect_to_%0=No_se_puede_conectar_a_%0 @@ -1921,13 +1912,12 @@ Copy_BibTeX_key_and_title=Copiar_clave_y_título_BibTeX File_rename_failed_for_%0_entries.=Ha_fallado_el_renombrado_para_%0_entradas. To_set_up,_go_to=Para_configurar,_vaya_a Merged_BibTeX_source_code=Código_fuente_BibTex_fusionado -'%0'_is_not_a_valid_ADS_bibcode.='%0'_no_es_un_bibcode_ADS_válido Invalid_DOI\:_'%0'.=DOI_no_válida\:_'%0'. should_start_with_a_name=debería_comenzar_por_un_nombre should_end_with_a_name=debería_acabar_por_un_nombre unexpected_closing_curly_bracket=Llave_de_cierre_inesperada unexpected_opening_curly_bracket=Llave_de_apertura_inesperada -large_capitals_are_not_masked_using_curly_brackets_{}=la_máscara_no_afecta_a_las_mayúsculas_al_usar_llaves_{} +capital_letters_are_not_masked_using_curly_brackets_{}=la_máscara_no_afecta_a_las_mayúsculas_al_usar_llaves_{} should_contain_a_four_digit_number=debería_contener_un_número_de_cuatro_dígitos should_contain_a_valid_page_number_range=debería_contener_un_número_de_página_válido Filled=Relleno @@ -1947,7 +1937,6 @@ This_search_contains_entries_in_which_any_field_contains_the_term_%0=Esta This_search_contains_entries_in_which=Esta_búsqueda_contiene_entradas_en_las_cuales An_autosave_file_was_found_for_this_database._This_could_indicate_that_JabRef_did_not_shut_down_cleanly_last_time_the_file_was_used.=_Se_ha_encontrado_un_fichero_de_autoguardado_de_esta_base_de_datos._Esto_podría_indicar_que_JabRef_no_se_cerró_correctamente_la_última_vez_que_se_usó_el_archivo. -Note\:_A_full_text_search_is_currently_not_supported_for_%0=Nota\:_Por_el_momento_no_se_soporta_la_búsqueda_de_texto_completo_para_%0 Unable_to_autodetect_OpenOffice/LibreOffice_installation._Please_choose_the_installation_directory_manually.=No_se_puede_autodetectar_OpenOffice/LibreOffice._Por_favor,_escoja_el_directorio_de_instalación_manualmente. JabRef_no_longer_supports_'ps'_or_'pdf'_fields.
File_links_are_now_stored_in_the_'file'_field_and_files_are_stored_in_an_external_file_directory.
To_make_use_of_this_feature,_JabRef_needs_to_upgrade_file_links.

=Jabref_ya_no_soporta_los_campos_'ps'_o_'pdf'.
Ahora_los_enlaces_a_archivo_se_guardan_en_el_campo_'archivo'_y_los_archivos_se_guardan_en_un_directorio_externo.
Para_hacer_uso_de_esta_característica,_JabRef_necesita_actualizar_los_enlaces.

This_database_uses_outdated_file_links.=Esta_base_de_datos_usa_enlaces_obsoletos @@ -1987,7 +1976,6 @@ Resolve_duplicate_BibTeX_keys=Resolver_claves_BibTeX_duplicadas Save_all=Guardar_todo String_dialog,_add_string=Diálogo_de_cadena,_añadir_cadena String_dialog,_remove_string=Diálogo_de_cadena,_eliminar_cadena -Switch_preview_layout=Cambiar_esquema_de_previsualización Synchronize_files=Sincronizar_archivos Unabbreviate=Eliminar_abreviatura should_contain_a_protocol=Debería_contener_un_protocolo @@ -2155,8 +2143,6 @@ OpenOffice/LibreOffice_integration= incorrect_control_digit= incorrect_format= - - Copy_version_to_clipboard= Copied_version_to_clipboard= @@ -2232,7 +2218,6 @@ Database= User= Connect=Conectar Connection_error= -Driver_error= Connection_to_%0_server_established.= Required_field_"%0"_is_empty.= %0_driver_not_available.= @@ -2251,8 +2236,12 @@ Local_version\:_%0= Shared_version\:_%0= Please_merge_the_shared_entry_with_yours_and_press_"Merge_entries"_to_resolve_this_problem.= Canceling_this_operation_will_leave_your_changes_unsynchronized._Cancel_anyway?= -The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side._Hit_"Keep"_to_recover_the_entry.= +Shared_entry_is_no_longer_present= +The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side.= +You_can_restore_the_entry_using_the_"Undo"_operation.= Remember_password?= +You_are_already_connected_to_a_database_using_entered_connection_details.= + Cannot_cite_entries_without_BibTeX_keys._Generate_keys_now?= New_technical_report= @@ -2301,6 +2290,12 @@ Fetcher_'%0'_did_not_find_an_entry_for_id_'%1'.= Select_first_entry= Select_last_entry= -Search_in_all_open_databases= - Invalid_ISBN\:_'%0'.= +should_be_an_integer_or_normalized= +should_be_normalized= + +Empty_search_ID= +The_given_search_ID_was_empty.= +Copy_BibTeX_key_and_link= +empty_BibTeX_key= +BibLaTeX_field_only= diff --git a/src/main/resources/l10n/JabRef_fa.properties b/src/main/resources/l10n/JabRef_fa.properties index 42a0e184ad9..579ecddb780 100644 --- a/src/main/resources/l10n/JabRef_fa.properties +++ b/src/main/resources/l10n/JabRef_fa.properties @@ -16,12 +16,10 @@ %0_matches_the_term_%1= -= Could_not_find_file_'%0'
linked_from_entry_'%1'= = -= Abbreviate_journal_names_of_the_selected_entries_(ISO_abbreviation)=Abréger_les_noms_de_journaux_des_entrées_sélectionnées_(abréviations_ISO) Abbreviate_journal_names_of_the_selected_entries_(MEDLINE_abbreviation)=Abréger_les_noms_de_journaux_des_entrées_sélectionnées_(abréviations_MEDLINE) @@ -42,10 +40,10 @@ Action=Action Add=Ajouter -Add_a_(compiled)_custom_ImportFormat_class_from_a_class_path.=Ajouter_une_classe_ImportFormat_personnalisée_(compilée)_à_partir_d'un_chemin_de_classe. +Add_a_(compiled)_custom_Importer_class_from_a_class_path.=Ajouter_une_classe_Importer_personnalisée_(compilée)_à_partir_d'un_chemin_de_classe. The_path_need_not_be_on_the_classpath_of_JabRef.=Le_chemin_n'a_pas_besoin_d'être_dans_le_chemin_de_classe_de_JabRef. -Add_a_(compiled)_custom_ImportFormat_class_from_a_ZIP-archive.=Ajouter_une_classe_ImportFormat_personnalisée_(compilée)_à_partir_d'une_archive_ZIP. +Add_a_(compiled)_custom_Importer_class_from_a_ZIP-archive.=Ajouter_une_classe_Importer_personnalisée_(compilée)_à_partir_d'une_archive_ZIP. The_ZIP-archive_need_not_be_on_the_classpath_of_JabRef.=L'archive_ZIP_n'a_pas_besoin_d'être_dans_le_chemin_de_classe_de_JabRef. Add_entry_selection_to_this_group=Ajouter_les_entrées_sélectionnées_à_ce_groupe @@ -82,7 +80,6 @@ All_subgroups_(recursively)=Tous_les_sous-groupes_(récursivement) Always_reformat_BIB_file_on_save_and_export=Toujours_remettre_en_forme_les_fichiers_BIB_lors_de_l'enregistrement_et_de_l'exportation -An_exception_occurred_while_accessing_'%0'=Une_exception_est_survenue_lors_de_l'accès_à_'%0' A_SAX_exception_occurred_while_parsing_'%0'\:=Une_exception_SAX_est_survenue_pendant_le_traitement_de_'%0'_\: and=et @@ -156,7 +153,7 @@ Backup_old_file_when_saving=Créer_une_copie_de_sauvegarde_lors_de_l'enregistrem BibTeX_key_is_unique.=La_clef_BibTeX_est_unique. -BibTeX_source=Source_BibTeX +%0_source=Source_%0 Broken_link=Lien_invalide @@ -665,13 +662,11 @@ Import_strings=Importer_les_chaînes Import_to_open_tab=Importer_dans_l'onglet_ouvert -Import_word_selector_definitions=Importer_les_définitions_des_sélecteurs_de_mots - Imported_entries=Entrées_importées Imported_from_database=Importé_à_partir_de_la_base_de_données -ImportFormat_class=Classe_ImportFormat +Importer_class=Classe_Importer Importing=Importation_en_cours @@ -760,8 +755,6 @@ Main_file_directory=Répertoire_de_fichiers_principal Main_layout_file=Principal_fichier_de_mise_en_page -Manage=Gérer - Manage_custom_exports=Gérer_les_exportations_personnalisées Manage_custom_imports=Gérer_les_importations_personnalisées @@ -876,8 +869,6 @@ Nothing_to_redo=Rien_à_répéter Nothing_to_undo=Rien_à_annuler -Number_of_references_to_fetch?=Nombre_de_références_à_récupérer_? - occurrences=occurrences OK=Ok @@ -982,6 +973,13 @@ Preferences=Préférences Preferences_recorded.=Préférences_enregistrées. Preview=Aperçu +Citation_Style=Style_de_citation +Current_Preview=Aperçu_actuel +Bad_character_inside_entry=Caractère_érroné_dans_l'entrée +Error_while_generating_citation_style=Erreur_lors_de_la_génération_du_style_de_citation +Preview_style_changed_to\:_%0=Style_d'aperçu_modifié_en_:_%0 +Next_preview_layout=Mode_d'aperçu_suivant +Previous_preview_layout=Mode_d'aperçu_précédent Previous_entry=Entrée_précédente @@ -1005,7 +1003,7 @@ Redo=Répéter Reference_database=Base_de_référence -References_found=Références_trouvées +%0_references_found._Number_of_references_to_fetch?=Références_trouvées\:_%0._Nombre_de_références_à_récupérer_? Refine_supergroup\:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup=Raffine_le_super-groupe_\:_Quand_sélectionné,_afficher_les_entrées_contenues_à_la_fois_dans_ce_groupe_et_son_super-groupe @@ -1101,8 +1099,6 @@ Save_failed=Echec_de_l'enregistrement Save_failed_during_backup_creation=L'enregistrement_a_échoué_durant_la_création_de_la_copie_de_secours -Save_failed_while_committing_changes\:_%0=L'enregistrement_a_échoué_lors_de_la_soumission_des_changements\:_%0 - Save_selected_as...=Enregistrer_la_sélection_sous... Saved_database=Base_enregistrée @@ -1153,7 +1149,7 @@ Settings=Paramètres Shortcut=Raccourci -Show/edit_BibTeX_source=Montrer/éditer_le_source_BibTeX +Show/edit_%0_source=Montrer/éditer_le_source_%0 Show_'Firstname_Lastname'=Ordre_d'affichage_'Prénom_Nom' @@ -1324,7 +1320,6 @@ Unmark_entries=Désétiqueter_ces_entrées Unmark_entry=Désétiqueter_l'entrée - untitled=sans_titre Up=Haut @@ -1419,6 +1414,7 @@ Fetching_Medline_by_term...=Recherche_sur_Medline_par_terme... Please_enter_a_valid_number=SVP,_entrez_un_nombre_valide Please_enter_a_comma_separated_list_of_Medline_IDs_(numbers)_or_search_terms.=SVP,_entrez_une_liste_séparée_par_des_virgules_d'ID_Medline_(nombres)_ou_de_termes_de_recherche. Show_search_results_in_a_window=Afficher_les_résultats_de_recherche_dans_une_fenêtre +Search_in_all_open_databases=Rechercher_sur_toutes_les_bases_ouvertes Move_file_to_file_directory?=Déplacer_le_fichier_vers_le_répertoire_de_fichiers_? Rename_to_'%0'=Renommer_vers_'%0' You_have_changed_the_menu_and_label_font_size.=Vous_avez_modifié_la_taille_de_police_des_menus_et_des_étiquettes. @@ -1714,7 +1710,6 @@ Five_stars=Cinq_étoiles Four_stars=Quatre_étoiles Help_on_special_fields=Aide_sur_les_champs_spéciaux Keywords_of_selected_entries=Mots-clefs_des_entrées_sélectionnés -Manage_content_selectors=Gérer_les_sélecteurs_de_contenu Manage_keywords=Gérer_les_mots-clefs No_priority_information=Pas_d'information_sur_la_priorité No_rank_information=Pas_d'information_sur_le_rang @@ -1771,8 +1766,6 @@ Add_{}_to_specified_title_words_on_search_to_keep_the_correct_case=Ajouter_{}_au Import_conversions=Importer_les_conversions Please_enter_a_search_string=Entrez_s'il_vous_plait_une_chaine_de_recherche Please_open_or_start_a_new_database_before_searching=S'il_vous_plait,_ouvrez_ou_créer_une_nouvelle_base_avant_la_recherche -An_error_occurred_while_fetching_from_ADS_(%0)\:=Une_erreur_est_survenue_lors_de_la_recherche_ADS_(%0)_\: -An_error_occurred_while_parsing_abstract=Une_erreur_est_survenue_pendant_le_traitement_du_résumé Log=Message Canceled_merging_entries=Fusion_des_entrées_interrompues @@ -1781,7 +1774,7 @@ Format_units_by_adding_non-breaking_separators_and_keeping_the_correct_case_on_s Merge_entries=Fusionner_les_entrées Merged_entries=Entrées_fusionnées_dans_une_nouvelle_et_anciennes_conservées Merged_entry=Entrée_fusionnée -None=Aucune +None=Effacer Parse=Analyser Result=Résultat Show_DOI_first=Montrer_le_DOI_en_premier @@ -1829,7 +1822,6 @@ Move_to_group=Déplacer_vers_le_groupe Clear_read_status=Effacer_le_statut_de_lecture Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=Convertir_au_format_BibLaTeX_(par_exemple,_transformer_la_valeur_du_champ_'journal'_en_'journaltitle') -Could_not_apply_changes.=Les_changements_n'ont_pas_pu_être_effectués. Deprecated_fields=Champs_obsolètes Hide/show_toolbar=Masquer/afficher_la_barre_d'outils No_read_status_information=Pas_d'information_sur_le_statut_de_lecture @@ -1894,7 +1886,6 @@ Modified_groups_tree=Arbre_des_groupes_modifié Removed_all_groups=Supprimer_tous_les_groupes Accepting_the_change_replaces_the_complete_groups_tree_with_the_externally_modified_groups_tree.=Acceptation_que_l'arbre_des_groupes_entier_soit_remplacé_par_l'arbre_des_groupes_modifiés_externalement. Select_export_format=Sélectionner_un_format_d'exportation -Export_with_selected_format=Exporter_avec_le_format_sélectionné Return_to_JabRef=Revenir_à_JabRef Please_move_the_file_manually_and_link_in_place.=Déplacez_le_fichier_manuellement_et_liez-le,_SVP. Could_not_connect_to_%0=La_connexion_à_%0_n'a_pas_pu_être_établie @@ -1921,13 +1912,12 @@ Copy_BibTeX_key_and_title=Copier_la_clef_BibTeX_et_le_titre File_rename_failed_for_%0_entries.=Le_renommage_des_fichiers_a_échoué_pour_%0_entrées. To_set_up,_go_to=Pour_configurer,_voir Merged_BibTeX_source_code=Code_source_BibTeX_fusionné -'%0'_is_not_a_valid_ADS_bibcode.='%0'n'est_pas_un_bibcode_ADS_valide. Invalid_DOI\:_'%0'.=DOI_invalide\:_'%0'. should_start_with_a_name=devrait_débuter_par_un_nom should_end_with_a_name=devrait_se_terminer_par_un_nom unexpected_closing_curly_bracket=accolade_fermante_incongrue unexpected_opening_curly_bracket=accolade_ouvrante_incongrue -large_capitals_are_not_masked_using_curly_brackets_{}=Des_grandes_capitales_ne_sont_pas_incluses_entre_accolades_{} +capital_letters_are_not_masked_using_curly_brackets_{}=Des_majuscules_ne_sont_pas_incluses_entre_accolades_{} should_contain_a_four_digit_number=devrait_contenir_un_nombre_à_quatre_chiffres should_contain_a_valid_page_number_range=devrait_contenir_une_gamme_de_pages_valide Filled=Rempli @@ -1947,7 +1937,6 @@ This_search_contains_entries_in_which_any_field_contains_the_term_%0=Cett This_search_contains_entries_in_which=Cette_recherche_contient_des_entrées_pour_lequelles An_autosave_file_was_found_for_this_database._This_could_indicate_that_JabRef_did_not_shut_down_cleanly_last_time_the_file_was_used.=Un_fichier_de_sauvegarde_automatique_a_été_trouvé_pour_cette_base_de_données._Cela_pourrait_indiquer_que_JabRef_ne_s'est_pas_fermé_proprement_la_dernière_fois_que_ce_fichier_a_été_utilisé. -Note\:_A_full_text_search_is_currently_not_supported_for_%0=Note_\:_La_recherche_sur_le_texte_complet_n'est_actuellement_pas_disponible_pour_%0 Unable_to_autodetect_OpenOffice/LibreOffice_installation._Please_choose_the_installation_directory_manually.=La_détection_automatique_de_OpenOffice/LibreOffice_a_échouée._S'il_voul_plait,_sélectionnez_manuellement_le_répertoire_d'installation. JabRef_no_longer_supports_'ps'_or_'pdf'_fields.
File_links_are_now_stored_in_the_'file'_field_and_files_are_stored_in_an_external_file_directory.
To_make_use_of_this_feature,_JabRef_needs_to_upgrade_file_links.

=JabRef_ne_gère_plus_les_champs_'ps'_et_'pdf'.
Les_liens_vers_les_fichiers_sont_maintenant_enregistrés_dans_le_champ_'file'_et_les_fichiers_sont_enregistrés_dans_un_répertoire_externe.
Pour_utiliser_cette_fonctionnalité,_JabRef_a_besoin_de_mettre_à_jour_les_liens_vers_les_fichiers.

This_database_uses_outdated_file_links.=Cette_base_de_données_utilise_des_liens_de_fichier_périmés @@ -1987,7 +1976,6 @@ Resolve_duplicate_BibTeX_keys=Solutionner_les_clefs_BibTeX_dupliquées Save_all=Enregistrer_tout String_dialog,_add_string=Chaine_de_dialogue,_ajouter_une_chaine String_dialog,_remove_string=Chaine_de_dialogue,_supprimer_une_chaine -Switch_preview_layout=Basculer_la_prévisualisation Synchronize_files=Synchroniser_les_fichiers Unabbreviate=Dés-abréger should_contain_a_protocol=doit_contenir_un_protocole @@ -2155,8 +2143,6 @@ OpenOffice/LibreOffice_integration=Intégration_OpenOffice/LibreOffice incorrect_control_digit=chiffre_de_contrôle_incorrect incorrect_format=format_incorrect - - Copy_version_to_clipboard=Copier_la_version_dans_le_presse-papiers Copied_version_to_clipboard=Version_copiée_dans_le_presse-papiers @@ -2232,7 +2218,6 @@ Database=Base_de_données User=Utilisateur Connect=Connexion_automatique Connection_error=Erreur_de_connexion -Driver_error=Erreur_de_pilote Connection_to_%0_server_established.=Connexion_au_serveur_%0_établie Required_field_"%0"_is_empty.=Le_champ_requis_"%0"_est_vide; %0_driver_not_available.=Pilote_%0_non_disponible. @@ -2251,8 +2236,12 @@ Local_version\:_%0=Version_locale\:_%0 Shared_version\:_%0=Version_partagée\:_%0 Please_merge_the_shared_entry_with_yours_and_press_"Merge_entries"_to_resolve_this_problem.=SVP,_fusionnez_l'entrée_partagée_avec_la_vôtre_et_cliquez_sur_"Fusionner_les_entr\u00e9es"_pour_résoudre_ce_problème. Canceling_this_operation_will_leave_your_changes_unsynchronized._Cancel_anyway?=Annuler_cette_operation_laissera_vos_changements_désynchronisés._Annuler_quand_même_? -The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side._Hit_"Keep"_to_recover_the_entry.=L'entrée_sur_laquelle_vous_travaillez_actuellement_a_été_supprimée_de_la_base_partagée._Cliquez_sur_"Garder"_pour_réintégrer_l'entrée. -Remember_password?= +Shared_entry_is_no_longer_present=L'entrée_partagée_n'est_plus_présente +The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side.=L'entrée_sur_laquelle_vous_travaillez_actuellement_a_été_supprimée_de_la_base_partagée. +You_can_restore_the_entry_using_the_"Undo"_operation.=Vous_pouvez_restaurer_l'entrée_en_utilisant_l'opération_"Annuler". +Remember_password?=Mémoriser_le_mot_de_passe_? +You_are_already_connected_to_a_database_using_entered_connection_details.=Vous_êtes_déjà_connecté_à_une_base_de_données_en_utilisant_les_informations_de_connexion_entrées. + Cannot_cite_entries_without_BibTeX_keys._Generate_keys_now?=Citation_impossible_sans_clef_BibTeX._Générer_les_clefs_maintenant? New_technical_report=Nouveau_rapport_technique @@ -2283,7 +2272,7 @@ Opens_JabRef's_blog=Ouvre_le_blog_de_JabRef Opens_JabRef's_website=Ouvre_le_site_Internet_de_JabRef Opens_a_link_where_the_current_development_version_can_be_downloaded=Ouvre_un_lien_d'où-la_version_de_développement_actuelle_peut_être_téléchargée See_what_has_been_changed_in_the_JabRef_versions=Afficher_les_changements_dans_les_versions_de_JabRef -Referenced_BibTeX_key_does_not_exist= +Referenced_BibTeX_key_does_not_exist=La_clef_BibTeX_référencée_n'existe_pas Finished_downloading_full_text_document_for_entry_%0.=Téléchargement_terminé_pour_le_texte_intégral_de_l'entrée_%0. Full_text_document_download_failed_for_entry_%0.=Echec_du_téléchargement_pour_le_texte_intégral_de_l'entrée_%0. Look_up_full_text_documents=Recherche_des_textes_intégraux @@ -2301,6 +2290,12 @@ Fetcher_'%0'_did_not_find_an_entry_for_id_'%1'.=L'outil_de_recherche_%0_n'a_pas_ Select_first_entry=Sélectionner_la_première_entrée Select_last_entry=Sélectionner_la_dernière_entrée -Search_in_all_open_databases=Rechercher_sur_toutes_les_bases_ouvertes - Invalid_ISBN\:_'%0'.=ISBN_invalide_:_%0. +should_be_an_integer_or_normalized=devrait_être_un_entier_ou_une_abréviation_standard +should_be_normalized=devrait_être_une_abréviation_standard + +Empty_search_ID=Identifiant_de_recherche_vide +The_given_search_ID_was_empty.=L'Identifiant_de_recherche_entré_était_vide. +Copy_BibTeX_key_and_link=Copier_la_clef_BibTeX_et_le_lien +empty_BibTeX_key=Clef_BibTeX_vide +BibLaTeX_field_only=Champ_BibLaTeX_uniquement diff --git a/src/main/resources/l10n/JabRef_in.properties b/src/main/resources/l10n/JabRef_in.properties index 34cf2bdc6a7..0d9ab80d81b 100644 --- a/src/main/resources/l10n/JabRef_in.properties +++ b/src/main/resources/l10n/JabRef_in.properties @@ -16,12 +16,10 @@ %0_matches_the_term_%1=%0_sesuai_dengan_istilah_%1 -= Could_not_find_file_'%0'
linked_from_entry_'%1'=tidak_bisa_menemukan_berkas_'%0'
tautan_dari_entri_'%1' = -= Abbreviate_journal_names_of_the_selected_entries_(ISO_abbreviation)=Abbrevia_i_nomi_dei_giornali_delle_voci_selezionate_(abbreviazioni_ISO) Abbreviate_journal_names_of_the_selected_entries_(MEDLINE_abbreviation)=Abbrevia_i_nomi_dei_giornali_delle_voci_selezionate_(abbreviazioni_MEDLINE) @@ -32,7 +30,7 @@ Abbreviation=Abbreviazione About_JabRef=Informazioni_su_JabRef -Abstract=Riassunto +Abstract=Sommario Accept=Accetta @@ -42,10 +40,10 @@ Action=Azione Add=Aggiungi -Add_a_(compiled)_custom_ImportFormat_class_from_a_class_path.=Aggiungi_una_classe_ImportFormat_personalizzata_(compilata)_da_un_percorso. +Add_a_(compiled)_custom_Importer_class_from_a_class_path.=Aggiungi_una_classe_Importer_personalizzata_(compilata)_da_un_percorso. The_path_need_not_be_on_the_classpath_of_JabRef.=Il_percorso_non_deve_necessariamente_essere_nel_classpath_di_JabRef. -Add_a_(compiled)_custom_ImportFormat_class_from_a_ZIP-archive.=Aggiungi_una_classe_ImportFormat_personalizzata_(compilata)_da_un_archivio_ZIP. +Add_a_(compiled)_custom_Importer_class_from_a_ZIP-archive.=Aggiungi_una_classe_Importer_personalizzata_(compilata)_da_un_archivio_ZIP. The_ZIP-archive_need_not_be_on_the_classpath_of_JabRef.=L'archivio_ZIP_non_deve_necessariamente_essere_nel_classpath_di_JabRef. Add_entry_selection_to_this_group=Aggiungi_le_voci_selezionate_a_questo_gruppo @@ -80,10 +78,9 @@ All_fields=Tutti_i_campi All_subgroups_(recursively)=Tutti_i_sottogruppi_(ricorsivamente) -Always_reformat_BIB_file_on_save_and_export= +Always_reformat_BIB_file_on_save_and_export=Riformatta_sempre_il_file_BIB_quando_salvi_o_esporti -An_exception_occurred_while_accessing_'%0'=Eccezione_durante_l'accesso_a_'%0' -A_SAX_exception_occurred_while_parsing_'%0'\:=Eccezione_SAX_durante_l'elaborazione_di_'%0'\: +A_SAX_exception_occurred_while_parsing_'%0'\:=Eccezione_SAX_durante_l'analisi_di_'%0'\: and=e and_the_class_must_be_available_in_your_classpath_next_time_you_start_JabRef.=e_la_classe_deve_essere_nel_tuo_"classpath"_al_successivo_avvio_di_JabRef. @@ -116,7 +113,7 @@ Assigned_1_entry_to_group_"%0".=Una_voce_assegnata_al_gruppo_"%0". Attach_URL=Allega_URL -Attempt_to_automatically_set_file_links_for_your_entries._Automatically_setting_works_if_a_file_in_your_file_directory
or_a_subdirectory_is_named_identically_to_an_entry's_BibTeX_key,_plus_extension.=Tentativo_di_definire_automaticamente_file_collegamenti_per_le_tue_voci._La_definizione_avviene_automaticamente_se_un_file_nella_cartella_file_o_sottocartella
ha_lo_stesso_nome_della_chiave_di_una_voce_BibTeX,_a_meno_dell'estensione. +Attempt_to_automatically_set_file_links_for_your_entries._Automatically_setting_works_if_a_file_in_your_file_directory
or_a_subdirectory_is_named_identically_to_an_entry's_BibTeX_key,_plus_extension.=Tentativo_di_definire_automaticamente_collegamenti_a_file_per_le_tue_voci._La_definizione_avviene_automaticamente_se_un_file_nella_cartella_file_o_sottocartella
ha_lo_stesso_nome_della_chiave_di_una_voce_BibTeX,_a_meno_dell'estensione. Auto=Auto @@ -124,7 +121,7 @@ Autodetect_format=Rivelamento_automatico_del_formato Autogenerate_BibTeX_keys=Generazione_automatica_delle_chiavi_BibTeX -Autolink_files_with_names_starting_with_the_BibTeX_key=Collegare_automaticamente_i_file_con_nome_che_inizia_con_la_chiave_BibTeX +Autolink_files_with_names_starting_with_the_BibTeX_key=Collegare_automaticamente_i_file_con_nomi_che_iniziano_con_la_chiave_BibTeX Autolink_only_files_that_match_the_BibTeX_key=Collegare_automaticamente_solo_i_file_con_nome_corrispondente_alla_chiave_BibTeX @@ -152,11 +149,11 @@ Background_color_for_optional_fields=Colore_di_sfondo_per_i_campi_facoltativi Background_color_for_required_fields=Colore_di_sfondo_per_i_campi_obbligatori -Backup_old_file_when_saving=Fare_una_copia_di_backup_del_vecchio_file_quando_viene_salvato +Backup_old_file_when_saving=Fai_una_copia_di_backup_del_vecchio_file_quando_viene_salvato -BibTeX_key_is_unique.=La_chiave_BibTeX_\u00e8_unica. +BibTeX_key_is_unique.=La_chiave_BibTeX_è_unica. -BibTeX_source=Sorgente_BibTeX +%0_source=Sorgente_%0 Broken_link=Collegamento_interrotto @@ -168,9 +165,9 @@ Cancel=Annulla Cannot_add_entries_to_group_without_generating_keys._Generate_keys_now?=Le_voci_non_possono_essere_inserite_in_un_gruppo_se_prive_di_chiave._Generare_le_chiavi_ora? -Cannot_merge_this_change=Questa_modifica_non__pu\u00f2_essere_incorporata +Cannot_merge_this_change=Questa_modifica_non__può_essere_incorporata -Cannot_move_group_"%0"_down.=Impossibile_spostare_il_gruppo_"%0"_in_gi\u00f9 +Cannot_move_group_"%0"_down.=Impossibile_spostare_il_gruppo_"%0"_in_giù Cannot_move_group_"%0"_left.=Impossibile_spostare_il_gruppo_"%0"_a_sinistra @@ -178,11 +175,11 @@ Cannot_move_group_"%0"_right.=Impossibile_spostare_il_gruppo_"%0"_a_destra Cannot_move_group_"%0"_up.=Impossibile_spostare_il_gruppo_"%0"_in_su -case_insensitive=non_distingue__maiuscole_e_minuscole +case_insensitive=non_distingue_maiuscole_e_minuscole -case_sensitive=distingue__maiuscole_e_minuscole +case_sensitive=distingue_maiuscole_e_minuscole -Case_sensitive=Distingue__maiuscole_e_minuscole +Case_sensitive=Distingue_maiuscole_e_minuscole change_assignment_of_entries=modifica_l'assegnazione_delle_voci @@ -196,7 +193,7 @@ Change_of_Grouping_Method=Cambia_Metodo_di_Raggruppamento change_preamble=modifica_il_preambolo -Change_table_column_and_General_fields_settings_to_use_the_new_feature=Modificare_le_colonne_della_tabella_e_le_impostazioni_dei_campi_generali_per_utilizzare_la_nuova_funzione +Change_table_column_and_General_fields_settings_to_use_the_new_feature=Modifica_le_colonne_della_tabella_e_le_impostazioni_dei_campi_generali_per_utilizzare_la_nuova_funzione Changed_font_settings=Parametri_dei_font_modificati @@ -208,9 +205,9 @@ Changed_preamble=Preambolo_modificato Characters_to_ignore=Caratteri_da_ignorare -Check_existing_file_links=Verificare_i_file_collegamenti_esistenti +Check_existing_file_links=Verificare_i_collegamenti_a_file_esistenti -Check_links=Verificare_i_collegamenti +Check_links=Verifica_i_collegamenti Choose_the_URL_to_download.=Scegliere_l'URL_da_scaricare. Cite_command=Comando_Cite @@ -222,8 +219,8 @@ Clear=Svuota Clear_fields=Annulla_i_campi Close=Chiudi -Close_others= -Close_all= +Close_others=Chiudi_gli_altri +Close_all=Chiudi_tutti Close_dialog=Chiudi_la_finestra_di_dialogo @@ -263,7 +260,7 @@ Copy_file_to_file_directory=Copia_il_file_nella_cartella_dei_file Copy_to_clipboard=Copia_negli_appunti -Could_not_call_executable=Non_\u00e8_possibile_effetuare_la_chiamata_dell'eseguibile +Could_not_call_executable=Non_è_possibile_effetuare_la_chiamata_dell'eseguibile Could_not_connect_to_Vim_server._Make_sure_that_Vim_is_running
with_correct_server_name.=Impossibile_stabilire_la_connessione_al_server_Vim.
Assicurarsi_che_Vim_sia_in_esecuzione_con_il_nome_di_server_corretto. Could_not_export_file=Impossibile_esportare_il_file @@ -273,9 +270,9 @@ Could_not_export_preferences=Impossibile_esportare_le_preferenze Could_not_find_a_suitable_import_format.=Impossibile_trovare_un_formato_di_importazione_adeguato Could_not_import_preferences=Impossibile_importare_le_preferenze -Could_not_instantiate_%0=Impossibile_inizializzare_%0 -Could_not_instantiate_%0_%1=Impossibile_inizializzare_%0_%1 -Could_not_instantiate_%0._Have_you_chosen_the_correct_package_path?=Impossibile_inizializzare_%0._Verificare_il_"package_path". +Could_not_instantiate_%0=Impossibile_istanziare_%0 +Could_not_instantiate_%0_%1=Impossibile_istanziare_%0_%1 +Could_not_instantiate_%0._Have_you_chosen_the_correct_package_path?=Impossibile_istanziare_%0._Verificare_il_"package_path". Could_not_open_link=Impossibile_aprire_il_collegamento Could_not_print_preview=Impossibile_visualizzare_l'anteprima_di_stampa @@ -283,7 +280,7 @@ Could_not_print_preview=Impossibile_visualizzare_l'anteprima_di_stampa Could_not_run_the_'vim'_program.=Impossibile_eseguire_il_programma_'vim'. Could_not_save_file.=Impossibile_salvare_il_file. -Character_encoding_'%0'_is_not_supported.=La_codifica_dei_caratteri_'%0'_non_\u00e8_supportata. +Character_encoding_'%0'_is_not_supported.=La_codifica_dei_caratteri_'%0'_non_è_supportata. Created_groups.=Gruppi_creati @@ -303,16 +300,16 @@ Customize_key_bindings=Personalizza_combinazioni_di_tasti Cut=Taglia -cut_entries=Taglia_voci +cut_entries=taglia_voci cut_entry=taglia_voce Database_encoding=Codifica_database -Database_properties=Propriet\u00e0_del_database +Database_properties=Proprietà_del_database -Database_type= +Database_type=Tipo_di_database Date_format=Formato_data @@ -333,13 +330,13 @@ Delete=Cancella Delete_custom_format=Cancella_i_formati_personalizzati -delete_entries=Cancella_le_voci +delete_entries=cancella_le_voci Delete_entry=Cancella_la_voce delete_entry=cancella_la_voce -Delete_multiple_entries=Cancella_pi\u00f9_voci +Delete_multiple_entries=Cancella_più_voci Delete_rows=Cancella_voci @@ -347,7 +344,7 @@ Delete_strings=Cancella_stringhe Deleted=Cancellato -Delete_local_file= +Delete_local_file=Cancella_file_locale Delimit_fields_with_semicolon,_ex.=Campi_delimitati_da_punto_e_virgola,_ex. @@ -360,7 +357,7 @@ Deselect_all_duplicates=Deseleziona_tutti_i_duplicati Disable_this_confirmation_dialog=Disabilita_la_richiesta_di_conferma -Display_all_entries_belonging_to_one_or_more_of_the_selected_groups.=Mostra_tutte_le_voci_appartenenti_a_uno_o_pi\u00f9_gruppi_tra_quelli_selezionati. +Display_all_entries_belonging_to_one_or_more_of_the_selected_groups.=Mostra_tutte_le_voci_appartenenti_a_uno_o_più_gruppi_tra_quelli_selezionati. Display_all_error_messages=Mostra_tutti_i_messaggi_di_errore @@ -387,9 +384,9 @@ Do_not_write_the_following_fields_to_XMP_Metadata\:=Non_scrivere_i_dati_dei_camp Do_you_want_JabRef_to_do_the_following_operations?=Vuoi_che_JabRef_esegua_le_operazioni_seguenti? -Donate_to_JabRef= +Donate_to_JabRef=Fai_una_donazione_a_JabRef -Down=Gi\u00f9 +Down=Giù Download=Download @@ -492,7 +489,7 @@ Export_preferences=Esporta_preferenze Export_preferences_to_file=Esporta_preferenze_in_un_file -Export_properties=Esporta_propriet\u00e0 +Export_properties=Esporta_proprietà Export_to_clipboard=Esporta_negli_appunti @@ -525,18 +522,18 @@ Field_to_group_by=Campo_di_raggruppamento File=File file=file -File_'%0'_is_already_open.=Il_file_'%0'__\u00e8_gi\u00e0_aperto. +File_'%0'_is_already_open.=Il_file_'%0'__è_già_aperto. File_'%0'_not_found=File_'%0'_non_trovato File_changed=File_modificato -File_directory_is_'%0'\:=La_cartella_dei_file_\u00e8_'%0'\: +File_directory_is_'%0'\:=La_cartella_dei_file_è_'%0'\: -File_directory_is_not_set_or_does_not_exist\!=La_cartella_dei_file_non_\u00e8_impostata_o_non_esiste\! +File_directory_is_not_set_or_does_not_exist\!=La_cartella_dei_file_non_è_impostata_o_non_esiste\! File_exists=Il_file_esiste -File_has_been_updated_externally._What_do_you_want_to_do?=Il_file_\u00e8_stato_aggiornato_da_un'applicazione_esterna._Cosa_vuoi_fare? +File_has_been_updated_externally._What_do_you_want_to_do?=Il_file_è_stato_aggiornato_da_un'applicazione_esterna._Cosa_vuoi_fare? File_not_found=File_non_trovato File_type=Tipo_di_file @@ -551,7 +548,7 @@ Filter=Filtro Finished_automatically_setting_external_links.=Impostazione_automatica_dei_collegamenti_esterni_terminata. -Finished_synchronizing_file_links._Entries_changed\:_%0.=Sincronizzazione_di_file_collegamenti:_Voci_cambiate\:_%0. +Finished_synchronizing_file_links._Entries_changed\:_%0.=Sincronizzazione_di_collegamenti_a_file:_Voci_cambiate\:_%0. Finished_writing_XMP-metadata._Wrote_to_%0_file(s).=Scrittura_dei_metadati_XMP_terminata._Scrittura_eseguita_su_%0_file. Finished_writing_XMP_for_%0_file_(%1_skipped,_%2_errors).=Terminata_la_scrittura_di_metadati_XMP_per_%0_file_(%1_saltati,_%2_errori). @@ -602,7 +599,7 @@ Generate_now=Genera_ora Generated_BibTeX_key_for=Generata_la_chiave_BibTeX_per Generating_BibTeX_key_for=Generazione_in_corso_della_chiave_BibTeX_per -Get_fulltext= +Get_fulltext=Prendi_testo_completo Grab=Assegna Gray_out_entries_not_in_group_selection=Evidenzia_in_grigio_le_voci_fuori_dai_gruppi_selezionati @@ -611,7 +608,7 @@ Gray_out_non-hits=Disattiva_le_voci_non_corrispondenti Groups=Gruppi -Have_you_chosen_the_correct_package_path?=Il_classpath_\u00e8_corretto? +Have_you_chosen_the_correct_package_path?=Il_classpath_è_corretto? Help=Aiuto @@ -627,14 +624,14 @@ Hierarchical_context=Contesto_gerarchico Highlight=Evidenzia Highlight_groups_matching_all_selected_entries=Evidenzia_i_gruppi_corrispondenti_a_tutte_le_voci_selezionate Highlight_groups_matching_any_selected_entry=Evidenzia_i_gruppi_corrispondenti_almeno_ad_una_delle_voci_selezionate -Disable_highlight_groups_matching_entries= +Disable_highlight_groups_matching_entries=Disabilita_l'evidenziazione_dei_gruppi_corrispondenti -Highlight_overlapping_groups=Evidenzia_gruppi_con_voci_in__comune +Highlight_overlapping_groups=Evidenzia_gruppi_con_voci_in_comune Hint\:_To_search_specific_fields_only,_enter_for_example\:

author\=smith_and_title\=electrical=Suggerimento\:_Per_ricercare_in_un_campo_specifico_digitare,_per_esempio\:

author\=smith_and_title\=electrical HTML_table=Tabella_HTML -HTML_table_(with_Abstract_&_BibTeX)=Tabella_HTML_(con_riassunto_e_BibTeX) +HTML_table_(with_Abstract_&_BibTeX)=Tabella_HTML_(con_Sommario_e_BibTeX) Icon=Icona Ignore=Ignora @@ -665,19 +662,17 @@ Import_strings=Importa_stringhe Import_to_open_tab=Importa_nella_scheda_aperta -Import_word_selector_definitions=Importa_le_definizioni_per_la_selezione_di_parole - Imported_entries=Voci_importate Imported_from_database=Importato_dal_database -ImportFormat_class=Classe_ImportFormat +Importer_class=Classe_Importer Importing=Importazione_in_corso Importing_in_unknown_format=Importazione_in_formato_sconosciuto -Include_abstracts=Includi_il_riassunto +Include_abstracts=Includi_il_sommario Include_entries=Includi_voci Include_subgroups\:_When_selected,_view_entries_contained_in_this_group_or_its_subgroups=Includi_i_sottogruppi\:_Quando_selezionato,_mostra_le_voci_contenute_in_questo_gruppo_e_nei_suoi_sottogruppi @@ -702,11 +697,11 @@ Invalid_date_format=Formato_data_non_valido Invalid_URL=URL_non_valido -Inverted=Complemantare +Inverted=Complementare ISO_abbreviation=Abbreviazione_ISO -Online_help= +Online_help=Help_online JabRef_preferences=Preferenze_JabRef @@ -742,7 +737,7 @@ LaTeX_AUX_file=File_AUX_LaTeX Leave_file_in_its_current_directory=Lascia_il_file_nella_cartella_corrente Left=Sinistra -Level= +Level=Livello Limit_to_fields=Restrizioni_ai_campi @@ -753,15 +748,13 @@ Link_local_file=Collegamento_al_file_locale Link_to_file_%0=Collegamento_al_file_%0 Listen_for_remote_operation_on_port=Porta_in_ascolto_per_operazioni_remote -Load_and_Save_preferences_from/to_jabref.xml_on_start-up_(memory_stick_mode)=Carica_e_salva_le_preferenze_da/in_jabref.xml_all'avvio_(modalit\u00e0_chiavetta_di_memoria) +Load_and_Save_preferences_from/to_jabref.xml_on_start-up_(memory_stick_mode)=Carica_e_salva_le_preferenze_da/in_jabref.xml_all'avvio_(modalità_chiavetta_di_memoria) Look_and_feel=Aspetto Main_file_directory=Cartella_dei_file_principale Main_layout_file=File_di_layout_principale -Manage=Gestione - Manage_custom_exports=Gestione_delle_esportazioni_personalizzate Manage_custom_imports=Gestione_delle_importazioni_personalizzate @@ -773,15 +766,15 @@ Mark_entries=Contrassegna_voci Mark_entry=Contrassegna_voce -Mark_new_entries_with_addition_date=Contrassegna_le_nuove_voci_con_la_data_di_aggiunta +Mark_new_entries_with_addition_date=Contrassegna_le_nuove_voci_con_la_data_di_inserimento Mark_new_entries_with_owner_name=Contrassegna_le_nuove_voci_con_il_nome_del_proprietario -Memory_stick_mode=Modalit\u00e0_chiavetta_di_memoria +Memory_stick_mode=Modalità_chiavetta_di_memoria Menu_and_label_font_size=Dimensione_del_font_di_menu_ed_etichette -Merged_external_changes=Incorpora_modifiche_esterne +Merged_external_changes=Modifiche_esterne_incorporate Messages=Messaggi @@ -795,11 +788,11 @@ Modified_string=Stringa_modificata Modify=Modifica -modify_group=Modifica_gruppo +modify_group=modifica_gruppo Move=Sposta -Move_down=Sposta_in_gi\u00f9 +Move_down=Sposta_in_giù Move_entries_in_group_selection_to_the_top=Sposta_le_voci_selezionate_in_su Move_external_links_to_'file'_field=Sposta_i_collegamenti_esterni_nel_campo_'file' @@ -828,7 +821,7 @@ New_BibTeX_subdatabase=Nuovo_subdatabase_BibTeX New_content=Nuovo_contenuto New_database_created.=Nuovo_database_creato -New_%0_database= +New_%0_database=Nuovo_database_%0 New_field_value=Nuovo_valore_del_campo New_file=Nuovo_file @@ -853,37 +846,35 @@ No_entries_found_for_the_search_string_'%0'=Nessuna_voce_trovata_in_base_alla_st No_entries_imported.=Nessuna_voce_importata -No_exceptions_have_occurred.=Non_si_\u00e8_verificata_nessuna_eccezione +No_exceptions_have_occurred.=Non_si_è_verificata_nessuna_eccezione No_files_found.=Nessun_file_trovato. No_GUI._Only_process_command_line_options.=Senza_interfaccia_grafica._Elaborate_solo_le_opzioni_della_riga_di_comando. -No_journal_names_could_be_abbreviated.=Nessun_nome_di_rivista_pu\u00f2_essere_abbreviato. +No_journal_names_could_be_abbreviated.=Nessun_nome_di_rivista_può_essere_abbreviato. -No_journal_names_could_be_unabbreviated.=Nessuna_abbreviazione_di_rivista_pu\u00f2_essere_estesa. +No_journal_names_could_be_unabbreviated.=Nessuna_abbreviazione_di_rivista_può_essere_estesa. No_PDF_linked=Nessun_file_PDF_collegato No_references_found=Nessun_riferimento_trovato No_URL_defined=Nessun_URL_trovato -not=no +not=non not_found=non_trovato -Note_that_you_must_specify_the_fully_qualified_class_name_for_the_look_and_feel,=Nota\:_\u00e8_necessario_specificare_il_nome_di_classe_completo_per_il_"Look-and-Feel", +Note_that_you_must_specify_the_fully_qualified_class_name_for_the_look_and_feel,=Nota\:_è_necessario_specificare_il_nome_di_classe_completo_per_il_"Look-and-Feel", Nothing_to_redo=Niente_da_ripetere Nothing_to_undo=Niente_da_annullare -Number_of_references_to_fetch?=Numero_di_riferimenti_da_recuperare? - occurrences=ricorrenze -OK=Ok -One_or_more_file_links_are_of_the_type_'%0',_which_is_undefined._What_do_you_want_to_do?=Uno_o_pi\u00f9_collegamenti_a_file_sono_del_tipo_'%0',_non_definito._Come_procedere? +OK=OK +One_or_more_file_links_are_of_the_type_'%0',_which_is_undefined._What_do_you_want_to_do?=Uno_o_più_collegamenti_a_file_sono_del_tipo_'%0',_non_definito._Come_procedere? -One_or_more_keys_will_be_overwritten._Continue?=Una_o_pi\u00f9_chiavi_saranno_sovrascritte._Continuare? +One_or_more_keys_will_be_overwritten._Continue?=Una_o_più_chiavi_saranno_sovrascritte._Continuare? Open=Apri @@ -898,9 +889,9 @@ Open_file=Apri_file Open_last_edited_databases_at_startup=All'avvio_apri_i_database_aperti_nella_sessione_precedente -Open_shared_database= +Open_shared_database=Apri_database_condiviso -Open_terminal_here= +Open_terminal_here=Apri_un_terminale_qui Open_URL_or_DOI=Apri_URL_o_DOI @@ -982,6 +973,13 @@ Preferences=Preferenze Preferences_recorded.=Preferenze_registrate. Preview=Anteprima +Citation_Style=Stile_delle_citazioni +Current_Preview=Anteprima_di_stampa_corrente +Bad_character_inside_entry=Carattere_errato_nella_voce +Error_while_generating_citation_style=Errore_durante_la_generazione_dello_stile_di_citazione +Preview_style_changed_to\:_%0=Stile_di_anteprima_modificato_in\:_%0 +Next_preview_layout=Prossimo_layout_di_anteprima +Previous_preview_layout=Successivo_layout_di_anteprima Previous_entry=Voce_precedente @@ -989,7 +987,7 @@ Primary_sort_criterion=Criterio_di_ordinamento_principale Problem_with_parsing_entry=Problema_di_analisi_di_una_voce Processing_%0=Elaborazione_di_%0 Program_output=Output_del_programma -Pull_changes_from_shared_database= +Pull_changes_from_shared_database=Estrai_modifiche_dal_database_condiviso Pushed_citations_to_%0=Citazioni_inviate_a_%0 @@ -1005,7 +1003,7 @@ Redo=Ripeti Reference_database=Database_di_riferimenti -References_found=Riferimenti_trovati +%0_references_found._Number_of_references_to_fetch?=Riferimenti_trovati\:_%0._Numero_di_riferimenti_da_recuperare? Refine_supergroup\:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup=Perfeziona_il_super-gruppo\:_Quando_selezionato,_mostra_le_voci_contenute_sia_in_questo_gruppo_sia_nel_suo_super-gruppo @@ -1101,8 +1099,6 @@ Save_failed=Salvataggio_fallito Save_failed_during_backup_creation=Salvataggio_fallito_durante_la_creazione_della_copia_di_backup -Save_failed_while_committing_changes\:_%0=Salvataggio_fallito_nel_rendere_definitivi_i_cambiamenti\:_%0 - Save_selected_as...=Salva_la_selezione_come... Saved_database=Database_salvato @@ -1153,7 +1149,7 @@ Settings=Parametri Shortcut=Scorciatoia -Show/edit_BibTeX_source=Mostra/Modifica_codice_sorgente_BibTeX +Show/edit_%0_source=Mostra/Modifica_codice_sorgente_%0 Show_'Firstname_Lastname'=Mostra_'Nome_Cognome' @@ -1175,7 +1171,7 @@ Show_icons_for_groups=Mostra_le_icone_per_i_gruppi Show_last_names_only=Mostra_solo_i_cognomi Show_names_unchanged=Mostra_i_nomi_immodificati - + Show_optional_fields=Mostra_i_campi_opzionali Show_required_fields=Mostra_i_campi_obbligatori @@ -1222,7 +1218,7 @@ Strings_for_database=Stringhe_per_il_database Subdatabase_from_AUX=Subdatabase_da_file_LaTeX_AUX -Switches_between_full_and_abbreviated_journal_name_if_the_journal_name_is_known.=Alterna_nomi_completi_e_nomi_abbreviati_per_le_riviste_delle_quali_\u00e8_noto_il_nome. +Switches_between_full_and_abbreviated_journal_name_if_the_journal_name_is_known.=Alterna_nomi_completi_e_nomi_abbreviati_per_le_riviste_delle_quali_è_noto_il_nome. Synchronize_file_links=Sincronizza_il_collegamento_ai_file @@ -1245,55 +1241,55 @@ Test=Test paste_text_here=Area_di_inserimento_testo -The_chosen_date_format_for_new_entries_is_not_valid=Il_formato_di_data_scelto_per_le_nuove_voci_non_\u00e8_valido +The_chosen_date_format_for_new_entries_is_not_valid=Il_formato_di_data_scelto_per_le_nuove_voci_non_è_valido -The_chosen_encoding_'%0'_could_not_encode_the_following_characters\:=La_codifica_scelta_'%0'_non_pu\u00f2_codificare_i_caratteri_seguenti\: +The_chosen_encoding_'%0'_could_not_encode_the_following_characters\:=La_codifica_scelta_'%0'_non_può_codificare_i_caratteri_seguenti\: the_field_%0=il_campo_%0 -The_file
'%0'
has_been_modified
externally\!=Il_file_
'%0'
_\u00e8_stato_modificato_da_un'applicazione_esterna +The_file
'%0'
has_been_modified
externally\!=Il_file_
'%0'
_è_stato_modificato_da_un'applicazione_esterna -The_group_"%0"_already_contains_the_selection.=Il_gruppo_"%0"_contiene_gi\u00e0_la_selezione. +The_group_"%0"_already_contains_the_selection.=Il_gruppo_"%0"_contiene_già_la_selezione. -The_label_of_the_string_cannot_be_a_number.=L'etichetta_della_stringa_non_pu\u00f2_essere_un_numero. +The_label_of_the_string_cannot_be_a_number.=L'etichetta_della_stringa_non_può_essere_un_numero. -The_label_of_the_string_cannot_contain_spaces.=L'etichetta_della_stringa_non_pu\u00f2_contenere_spazi. +The_label_of_the_string_cannot_contain_spaces.=L'etichetta_della_stringa_non_può_contenere_spazi. -The_label_of_the_string_cannot_contain_the_'\#'_character.=L'etichetta_della_stringa_non_pu\u00f2_contenere_il_carattere_'\#' +The_label_of_the_string_cannot_contain_the_'\#'_character.=L'etichetta_della_stringa_non_può_contenere_il_carattere_'\#' The_output_option_depends_on_a_valid_import_option.=L'opzione_di_output_dipende_da_una_opzione_di_importazione_valida. -The_PDF_contains_one_or_several_BibTeX-records.=Il_file_PDF_contiene_uno_o_pi\u00f9_record_BibTeX. +The_PDF_contains_one_or_several_BibTeX-records.=Il_file_PDF_contiene_uno_o_più_record_BibTeX. Do_you_want_to_import_these_as_new_entries_into_the_current_database?=Vuoi_importarli_come_nuove_voci_nel_database_corrente? -The_regular_expression_%0_is_invalid\:=L'espressione_regolare_%0_non_\u00e8_valida\: +The_regular_expression_%0_is_invalid\:=L'espressione_regolare_%0_non_è_valida\: The_search_is_case_insensitive.=La_ricerca_non_distingue_maiuscole_e_minuscole. The_search_is_case_sensitive.=La_ricerca_distingue_maiuscole_e_minuscole. -The_string_has_been_removed_locally=La_stringa_\u00e8_stata_rimossa_localmente +The_string_has_been_removed_locally=La_stringa_è_stata_rimossa_localmente There_are_possible_duplicates_(marked_with_an_icon)_that_haven't_been_resolved._Continue?=Ci_sono_dei_potenziali_duplicati_(contrassegnati_con_una_icona_'D')_che_non_possono_essere_risolti._Continuare? -This_entry_has_no_BibTeX_key._Generate_key_now?=Questa_voce_\u00e8_priva_di_una_chiave_BibTeX._Generarla_ora? +This_entry_has_no_BibTeX_key._Generate_key_now?=Questa_voce_è_priva_di_una_chiave_BibTeX._Generarla_ora? -This_entry_is_incomplete=La_voce_\u00e8_incompleta +This_entry_is_incomplete=La_voce_è_incompleta -This_entry_type_cannot_be_removed.=Questo_tipo_di_voce_non_pu\u00f2_essere_eliminato. +This_entry_type_cannot_be_removed.=Questo_tipo_di_voce_non_può_essere_eliminato. -This_external_link_is_of_the_type_'%0',_which_is_undefined._What_do_you_want_to_do?=Questo_collegamento_\u00e8_di_tipo_'%0',_ancora_indefinito._Cosa_vuoi_fare? +This_external_link_is_of_the_type_'%0',_which_is_undefined._What_do_you_want_to_do?=Questo_collegamento_è_di_tipo_'%0',_ancora_indefinito._Cosa_vuoi_fare? This_group_contains_entries_based_on_manual_assignment._Entries_can_be_assigned_to_this_group_by_selecting_them_then_using_either_drag_and_drop_or_the_context_menu._Entries_can_be_removed_from_this_group_by_selecting_them_then_using_the_context_menu.=Questo_gruppo_contiene_voci_assegnate_manualmente._Altre_voci_possono_essere_assegnate_a_questo_gruppo_selezionandole_e_utilizzando_il_menu_contestuale_oppure_trascinandole_nel_gruppo._Le_voci_possono_essere_rimosse_dal_gruppo_selezionandole_e_utilizzando_il_menu_contestuale. This_group_contains_entries_whose_%0_field_contains_the_keyword_%1=Questo_gruppo_contiene_voci_in_cui_il_campo_%0__contiene_la_keyword_%1 This_group_contains_entries_whose_%0_field_contains_the_regular_expression_%1=Questo_gruppo_contiene_voci_in_cui_il_campo_%0__contiene_l'espressione_regolare_%1 -This_makes_JabRef_look_up_each_file_link_and_check_if_the_file_exists._If_not,_you_will_be_given_options
to_resolve_the_problem.=Per_ciascuno_dei_file_collegamenti,_JabRef_verificher\u00e0_l'esistenza_del_file.
In_caso_negativo_proporr\u00e0_delle_opzioni_per_la_risoluzione_del_problema. +This_makes_JabRef_look_up_each_file_link_and_check_if_the_file_exists._If_not,_you_will_be_given_options
to_resolve_the_problem.=Per_ciascuno_dei_file_collegamenti,_JabRef_verificherà_l'esistenza_del_file.
In_caso_negativo_proporrà_delle_opzioni_per_la_risoluzione_del_problema. -This_operation_requires_all_selected_entries_to_have_BibTeX_keys_defined.=Per_questa_operazione_\u00e8_necessario_che_tutte_le_voci_selezionate_abbiano_la_chiave_BibTeX_definita +This_operation_requires_all_selected_entries_to_have_BibTeX_keys_defined.=Per_questa_operazione_è_necessario_che_tutte_le_voci_selezionate_abbiano_la_chiave_BibTeX_definita -This_operation_requires_one_or_more_entries_to_be_selected.=Per_questa_operazione_una_o_pi\u00f9_voci_devono_essere_selezionate +This_operation_requires_one_or_more_entries_to_be_selected.=Per_questa_operazione_una_o_più_voci_devono_essere_selezionate Toggle_abbreviation=Mostra/Nascondi_l'abbreviazione Toggle_entry_preview=Mostra/Nascondi_l'anteprima @@ -1304,7 +1300,7 @@ Unabbreviate_journal_names_of_the_selected_entries=Mostra_il_nome_completo_delle Unabbreviated_%0_journal_names.=%0_nomi_di_riviste_per_esteso. Unable_to_open_file.=Impossibile_aprire_il_file -Unable_to_open_link._The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=Impossibile_aprire_il_collegamento._L'applicazione_'%0'_associata_con_il_tipo_di_file_'%1'_non_pu\u00f2_essere_aperta. +Unable_to_open_link._The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=Impossibile_aprire_il_collegamento._L'applicazione_'%0'_associata_con_il_tipo_di_file_'%1'_non_può_essere_aperta. unable_to_write_to=Impossibile_scrivere_su Undefined_file_type=Tipo_di_file_non_definito @@ -1324,7 +1320,6 @@ Unmark_entries=Rimuovi_i_contrassegni_dalle_voci Unmark_entry=Rimuovi_il_contrassegno_dalla_voce - untitled=senza_titolo Up=Su @@ -1363,7 +1358,7 @@ Warning=Avvertimento Warnings=Avvertimenti -web_link=Collegamenti_Internet +web_link=collegamenti_Internet What_do_you_want_to_do?=Cosa_vuoi_fare? @@ -1387,22 +1382,22 @@ XMP_export_privacy_settings=Impostazioni_per_la_riservatezza_dei_dati_XMP_esport XMP-metadata=Metadati_XMP XMP-metadata_found_in_PDF\:_%0=Metadati_XMP_trovati_nel_file_PDF\:_%0 You_must_restart_JabRef_for_this_to_come_into_effect.=Riavviare_JabRef_per_rendere_effettiva_la_modifica. -You_have_changed_the_language_setting.=La_lingua_\u00e8_stata_modificata. +You_have_changed_the_language_setting.=La_lingua_è_stata_modificata. You_have_changed_the_look_and_feel_setting.=Le_impostazioni_dell'aspetto_dell'applicazione_sono_stati_cambiati. -You_have_entered_an_invalid_search_'%0'.=\u00c8_stata_inserita_una_ricerca_non_valida_'%0'. +You_have_entered_an_invalid_search_'%0'.=È_stata_inserita_una_ricerca_non_valida_'%0'. You_must_choose_a_filename_to_store_journal_abbreviations=Scegliere_un_nome_per_il_file_in_cui_registrare_le_abbreviazioni_delle_riviste You_must_restart_JabRef_for_the_new_key_bindings_to_work_properly.=Riavviare_JabRef_per_rendere_operative_le_nuove_assegnazioni_di_tasti. -Your_new_key_bindings_have_been_stored.=La_nuova_assegnazione_di_tasti_\u00e8_stata_salvata. +Your_new_key_bindings_have_been_stored.=La_nuova_assegnazione_di_tasti_è_stata_salvata. -The_following_fetchers_are_available\:=Le_utilit\u00e0_di_ricerca_seguenti_sono_disponibili\: -Could_not_find_fetcher_'%0'=Impossibile_trovare_l'utilit\u00e0_di_ricerca_'%0' -Running_query_'%0'_with_fetcher_'%1'.=Esecuzione_della_query_'%0'_con_l'utilit\u00e0_di_ricerca_'%1'. -Query_'%0'_with_fetcher_'%1'_did_not_return_any_results.=La_query_'%0'_con_l'utilit\u00e0_di_ricerca_'%1'_non_ha_prodotto_alcun_risultato. +The_following_fetchers_are_available\:=Le_utilità_di_ricerca_seguenti_sono_disponibili\: +Could_not_find_fetcher_'%0'=Impossibile_trovare_l'utilità_di_ricerca_'%0' +Running_query_'%0'_with_fetcher_'%1'.=Esecuzione_della_query_'%0'_con_l'utilità_di_ricerca_'%1'. +Query_'%0'_with_fetcher_'%1'_did_not_return_any_results.=La_query_'%0'_con_l'utilità_di_ricerca_'%1'_non_ha_prodotto_alcun_risultato. Move/Rename_file=Sposta/Rinomina_il_file File_moved=File_spostato Move_file_failed=Spostamento_del_file_fallito @@ -1419,11 +1414,12 @@ Fetching_Medline_by_term...=Recupero_da_Medline_per_termine... Please_enter_a_valid_number=Inserire_un_numero_valido Please_enter_a_comma_separated_list_of_Medline_IDs_(numbers)_or_search_terms.=Inserire_una_lista_separata_da_virgole_di_ID_Medline_(numeri)_o_termini_di_ricerca. Show_search_results_in_a_window=Mostra_i_risultati_della_ricerca_in_una_finestra +Search_in_all_open_databases=Cerca_in_tutti_i_database_aperti Move_file_to_file_directory?=Spostare_i_file_nella_cartella_dei_file_principale? Rename_to_'%0'=Rinomina_in_'%0' You_have_changed_the_menu_and_label_font_size.=Sono_state_modificate_le_dimensioni_del_carattere_di_menu_ed_etichette. -Database_is_protected._Cannot_save_until_external_changes_have_been_reviewed.=Il_database_\u00e8_protetto._Le_modifiche_esterne_devono_evvere_state_riviste_prima_di_poter_salvare. +Database_is_protected._Cannot_save_until_external_changes_have_been_reviewed.=Il_database_è_protetto._Le_modifiche_esterne_devono_evvere_state_riviste_prima_di_poter_salvare. Protected_database=Database_protetto Refuse_to_save_the_database_before_external_changes_have_been_reviewed.=Rifiuta_di_salvare_prima_che_le_modifiche_esterne_siano_state_riviste. Database_protection=Protezione_del_database @@ -1434,7 +1430,7 @@ Unable_to_open_link.=Impossibile_aprire_il_collegamento. Move_the_keyboard_focus_to_the_entry_table=Sposta_il_cursore_nella_tabella_delle_voci MIME_type=Tipo_MIME -This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instance_of_JabRef
instead_of_opening_a_new_instance._For_instance,_this_is_useful_when_you_open_a_file_in_JabRef
from_your_web_browser.
Note_that_this_will_prevent_you_from_running_more_than_one_instance_of_JabRef_at_a_time.=Questa_funzione_permette_l'apertura_o_l'importazione_di_nuovi_file_in_una_istanza_di_JabRef_gi\u00e0_aperta
invece_di_aprirne_una_nuova._Per_esempio,_ci\u00f2_\u00e8_utile_quando_un_file_viene_aperto_in_JabRef
da_un_browser_web.
Questo_tuttavia_impedisce_di_aprire_pi\u00f9_sessioni_di_JabRef_contemporaneamente. +This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instance_of_JabRef
instead_of_opening_a_new_instance._For_instance,_this_is_useful_when_you_open_a_file_in_JabRef
from_your_web_browser.
Note_that_this_will_prevent_you_from_running_more_than_one_instance_of_JabRef_at_a_time.=Questa_funzione_permette_l'apertura_o_l'importazione_di_nuovi_file_in_una_istanza_di_JabRef_già_aperta
invece_di_aprirne_una_nuova._Per_esempio,_ciò_è_utile_quando_un_file_viene_aperto_in_JabRef
da_un_browser_web.
Questo_tuttavia_impedisce_di_aprire_più_sessioni_di_JabRef_contemporaneamente. Run_fetcher,_e.g._"--fetch\=Medline\:cancer"=Lanciare_una_ricerca,_es._"--fetch=Medline\:cancer" The_ACM_Digital_Library=ACM_Digital_Library @@ -1443,7 +1439,7 @@ Reset=Reinizializza Use_IEEE_LaTeX_abbreviations=Usa_le_abbreviazioni_LaTeX_IEEE The_Guide_to_Computing_Literature=The_Guide_to_Computing_Literature -When_opening_file_link,_search_for_matching_file_if_no_link_is_defined=All'apertura_di_un_collegamento_ad_un_file,_ricercare_un_file_corrispondente_se_non_ne_\u00e8_definito_uno. +When_opening_file_link,_search_for_matching_file_if_no_link_is_defined=All'apertura_di_un_collegamento_ad_un_file,_ricercare_un_file_corrispondente_se_non_ne_è_definito_uno. Settings_for_%0=Parametri__per_%0 Mark_entries_imported_into_an_existing_database=Contrassegna_le_voci_importate_in_un_database_preesistente Unmark_all_entries_before_importing_new_entries_into_an_existing_database=Rimuovi_tutti_i_contrassegni_prima_di_importare_nuove_voci_in_un_database_preesistente @@ -1456,12 +1452,12 @@ Line_%0\:_Found_corrupted_BibTeX_key_(contains_whitespaces).=Riga_%0\:_chiave_Bi Line_%0\:_Found_corrupted_BibTeX_key_(comma_missing).=Riga_%0\:_chiave_BibTeX_corrotta_(virgola_mancante). Full_text_document_download_failed=Fallito_il_download_del_documento_citato Update_to_current_column_order=Salvare_l'ordine_delle_colonne_attuale -Download_from_URL= +Download_from_URL=Scarica_dall'URL Rename_field=Rinomina_il_campo Set/clear/rename_fields=Imposta/svuota/rinomina_i_campi Rename_field_to=Rinomina_il_campo_in Move_contents_of_a_field_into_a_field_with_a_different_name=Sposta_il_contenuto_di_un_campo_in_un_campo_con_nome_diverso -You_can_only_rename_one_field_at_a_time=\u00c8_possibile_rinominare_solo_un_campo_per_volta +You_can_only_rename_one_field_at_a_time=È_possibile_rinominare_solo_un_campo_per_volta Remove_all_broken_links=Rimuovere_tutti_i_collegamenti_non_validi @@ -1484,8 +1480,8 @@ Formatter_not_found\:_%0=Formattazione_non_trovata\:_%0 Clear_inputarea=Svuota_l'area_di_inserimento Automatically_set_file_links_for_this_entry=Definire_automaticamente_i_collegamenti_ai_file_per_questa_voce -Could_not_save,_file_locked_by_another_JabRef_instance.=Impossibile_salvare,_il_file_\u00e8_bloccato_da_un'altra_istanza_di_JabRef. -File_is_locked_by_another_JabRef_instance.=Il_file_\u00e8_bloccato_da_un'altra_istanza_di_JabRef. +Could_not_save,_file_locked_by_another_JabRef_instance.=Impossibile_salvare,_il_file_è_bloccato_da_un'altra_istanza_di_JabRef. +File_is_locked_by_another_JabRef_instance.=Il_file_è_bloccato_da_un'altra_istanza_di_JabRef. Do_you_want_to_override_the_file_lock?=Vuoi_ignorare_il_blocco_del_file? File_locked=File_bloccato Current_tmp_value=Variabile_"tmp"_corrente @@ -1501,19 +1497,19 @@ Save_without_backup?=Salvare_senza_backup? Unable_to_create_backup=Impossibile_creare_un_backup Move_file_to_file_directory=Sposta_il_file_nella_cartella_dei_file Rename_file_to=Rinomina_il_file_in -All_Entries_(this_group_cannot_be_edited_or_removed)=Tutte_le_voci_(questo_gruppo_non_pu\u00f2_essere_modificato_o_rimosso) +All_Entries_(this_group_cannot_be_edited_or_removed)=Tutte_le_voci_(questo_gruppo_non_può_essere_modificato_o_rimosso) static_group=gruppo_statico dynamic_group=gruppo_dinamico refines_supergroup=ridefinisce_il_super-gruppo includes_subgroups=include_il_super-gruppo contains=contiene -search_expression=espressione_di_ricerc +search_expression=espressione_di_ricerca Optional_fields_2=Campi_opzionali_2 Waiting_for_save_operation_to_finish=In_attesa_del_termine_del_salvataggio Resolving_duplicate_BibTeX_keys...=Risoluzione_delle_chiavi_BibTeX_duplicate... Finished_resolving_duplicate_BibTeX_keys._%0_entries_modified.=Terminata_la_risoluzione_delle_chiavi_BibTeX_duplicate._%0_voci_modificate. -This_database_contains_one_or_more_duplicated_BibTeX_keys.=Questo_database_contiene_una_o_pi\u00f9_chiavi_BibTeX_duplicate. +This_database_contains_one_or_more_duplicated_BibTeX_keys.=Questo_database_contiene_una_o_più_chiavi_BibTeX_duplicate. Do_you_want_to_resolve_duplicate_keys_now?=Vuoi_effettuare_la_risoluzione_delle_chiavi_duplicate_ora? Find_and_remove_duplicate_BibTeX_keys=Trova_e_rimuovi_le_chiavi_BibTeX_duplicate @@ -1522,8 +1518,8 @@ Duplicate_BibTeX_key=Chiave_BibTeX_duplicata Import_marking_color=Colore_per_contrassegnare_le_voci_importate Always_add_letter_(a,_b,_...)_to_generated_keys=Aggiungi_sempre_una_lettera_(a,_b,_...)_alle_chiavi_generate -Ensure_unique_keys_using_letters_(a,_b,_...)=Assicura_l'unicit\u00e0_delle_chiavi_con_l'uso_di_lettere_(a,_b,_...) -Ensure_unique_keys_using_letters_(b,_c,_...)=Assicura_l'unicit\u00e0_delle_chiavi_con_l'uso_di_lettere_(b,_c,_...) +Ensure_unique_keys_using_letters_(a,_b,_...)=Assicura_l'unicità_delle_chiavi_con_l'uso_di_lettere_(a,_b,_...) +Ensure_unique_keys_using_letters_(b,_c,_...)=Assicura_l'unicità_delle_chiavi_con_l'uso_di_lettere_(b,_c,_...) Entry_editor_active_background_color=Colore_dello_sfondo_quando_attivo_l'editor_delle_voci Entry_editor_background_color=Colore_dello_sfondo_dell'editor_delle_voci Entry_editor_font_color=Colore_del_font_dell'editor_delle_voci @@ -1537,7 +1533,7 @@ Search_failed\:_illegal_search_expression=Ricerca_fallita\:_espressione_di_ricer Show_ArXiv_column=Mostra_la_colonna_ArXiv Highlight_groups_that_contain_entries_contained_in_any_currently_selected_group=Evidenzia_i_gruppi_contenenti_voci_incluse_in_uno_dei_gruppi_selezionati -You_must_enter_an_integer_value_in_the_interval_1025-65535_in_the_text_field_for=\u00c8_necessario_inserire_un_intero_nell'intervallo_1025-65535_nel_campo_di_testo_per +You_must_enter_an_integer_value_in_the_interval_1025-65535_in_the_text_field_for=È_necessario_inserire_un_intero_nell'intervallo_1025-65535_nel_campo_di_testo_per Automatically_open_browse_dialog_when_creating_new_file_link=Apri_automaticamente_la_finestra_di_dialogo_"Sfoglia"_quando_viene_creato_un_nuovo_collegamento_ad_un_file Import_metadata_from\:=Importa_i_Metadati_da\: Choose_the_source_for_the_metadata_import=Scegli_la_sorgente_dei_metadati_da_importare @@ -1551,7 +1547,7 @@ Autocomplete_names_in_'Firstname_Lastname'_format_only=Autocompletamento_dei_nom Autocomplete_names_in_'Lastname,_Firstname'_format_only=Autocompletamento_dei_nomi_solo_nel_formato_'Lastname,_Firstname' Autocomplete_names_in_both_formats=Autocompletamento_dei_nomi_in_entrambi_i_formati Marking_color_%0=Colore_di_contrassegno_%0 -The_name_'comment'_cannot_be_used_as_an_entry_type_name.=Il_nome_'comment'_non_pu\u00f2_essere_utilizzato_come_nome_di_tipo_di_voce. +The_name_'comment'_cannot_be_used_as_an_entry_type_name.=Il_nome_'comment'_non_può_essere_utilizzato_come_nome_di_tipo_di_voce. You_must_enter_an_integer_value_in_the_text_field_for=Inserire_un_numero_intero_nel_campo_di_testo_per Send_as_email=Invia_come_email References=Riferimenti @@ -1560,14 +1556,14 @@ Subject_for_sending_an_email_with_references=Oggetto_per_l'invio_di_email_con_ri Automatically_open_folders_of_attached_files=Apri_automaticamente_le_cartelle_dei_file_allegati Create_entry_based_on_content=Crea_una_voce_in_base_al_contenuto Do_not_show_this_box_again_for_this_import=Non_mostrare_nuovamente_questo_dialogo_per_questa_importazione -Always_use_this_PDF_import_style_(and_do_not_ask_for_each_import)=Usa_sempre_questa_modalit\u00e0_di_importazione_PDF_(non_chiedere_per_ogni_importazione) +Always_use_this_PDF_import_style_(and_do_not_ask_for_each_import)=Usa_sempre_questa_modalità_di_importazione_PDF_(non_chiedere_per_ogni_importazione) Error_creating_email=Errore_nella_creazione_della_email Entries_added_to_an_email=Voci_aggiunte_ad_un'email exportFormat=Formato_di_esportazione Output_file_missing=File_di_output_mancante No_search_matches.=Nessuna_corrispondenza_per_la_ricerca. The_output_option_depends_on_a_valid_input_option.=L'opzione_di_output_dipende_da_un'opzione_di_input_valida. -Default_import_style_for_drag_and_drop_of_PDFs=Modalit\u00e0_di_importazione_predefinita_per_il_drag_and_drop_dei_file_PDF +Default_import_style_for_drag_and_drop_of_PDFs=Modalità_di_importazione_predefinita_per_il_drag_and_drop_dei_file_PDF Default_PDF_file_link_action=Azione_predefinita_per_il_collegamento_ai_file_PDF Filename_format_pattern=Modello_del_formato_dei_nomi_dei_file Additional_parameters=Parametri_addizionali @@ -1591,7 +1587,7 @@ Select_Writer_document=Selezionare_il_documento_Writer Sync_OpenOffice/LibreOffice_bibliography=Sincronizza_la_bibliografia_OpenOffice/LibreOffice Select_which_open_Writer_document_to_work_on=Selezionare_il_documento_Writer_aperto_su_cui_lavorare Connected_to_document=Connesso_al_documento -Insert_a_citation_without_text_(the_entry_will_appear_in_the_reference_list)=Inserire_una_citazione_senza_testo_(la_voce_comparir\u00e0_nella_lista_dei_riferimenti) +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 Ensure_that_the_bibliography_is_up-to-date=Assicura_che_la_bibliografia_sia_aggiornata Your_OpenOffice/LibreOffice_document_references_the_BibTeX_key_'%0',_which_could_not_be_found_in_your_current_database.=Il_tuo_documento_OpenOffice/LibreOffice_fa_riferimento_alla_chiave_BibTeX_'%0',_non_presente_nel_database_corrente. @@ -1605,15 +1601,15 @@ Path_to_OpenOffice/LibreOffice_directory=Percorso_per_la_cartella_OpenOffice/Lib Path_to_OpenOffice/LibreOffice_executable=Percorso_per_il_file_eseguibile_OpenOffice/LibreOffice Path_to_OpenOffice/LibreOffice_library_dir=Percorso_per_la_cartella_della_libreria_OpenOffice/LibreOffice Connection_lost=Connessione_perduta -The_paragraph_format_is_controlled_by_the_property_'ReferenceParagraphFormat'_or_'ReferenceHeaderParagraphFormat'_in_the_style_file.=Il_formato_del_paragrafo_\u00e8_controllato_dalle_propriet\u00e0_'ReferenceParagraphFormat'_o_'ReferenceHeaderParagraphFormat'_nel_file_di_stile. -The_character_format_is_controlled_by_the_citation_property_'CitationCharacterFormat'_in_the_style_file.=Il_formato_del_carattere_\u00e8_controllato_dalla_propriet\u00e0_della_citazione_'CitationCharacterFormat'_nel_file_di_stile. +The_paragraph_format_is_controlled_by_the_property_'ReferenceParagraphFormat'_or_'ReferenceHeaderParagraphFormat'_in_the_style_file.=Il_formato_del_paragrafo_è_controllato_dalle_proprietà_'ReferenceParagraphFormat'_o_'ReferenceHeaderParagraphFormat'_nel_file_di_stile. +The_character_format_is_controlled_by_the_citation_property_'CitationCharacterFormat'_in_the_style_file.=Il_formato_del_carattere_è_controllato_dalla_proprietà_della_citazione_'CitationCharacterFormat'_nel_file_di_stile. 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 Look_up_BibTeX_entries_in_all_open_databases=Ricerca_le_voci_BibTeX_in_tutti_i_database_aperti Autodetecting_paths...=Autorilevamento_dei_percorsi... Could_not_find_OpenOffice/LibreOffice_installation=Impossibile_trovare_l'installazione_OpenOffice/LibreOffice Directories=Cartelle -Found_more_than_one_OpenOffice/LibreOffice_executable.=Trovati_pi\u00f9_di_un_file_eseguibile_OpenOffice/LibreOffice. +Found_more_than_one_OpenOffice/LibreOffice_executable.=Trovati_più_di_un_file_eseguibile_OpenOffice/LibreOffice. Please_choose_which_one_to_connect_to\:=Selezionare_quello_al_quale_connettersi\: Choose_OpenOffice/LibreOffice_executable=Scegliere_file_eseguibile_OpenOffice/LibreOffice Select_document=Selezionare_il_documento @@ -1632,18 +1628,18 @@ Use_the_BIB_file_location_as_primary_file_directory=Utilizza_la_posizione_del_fi Could_not_run_the_gnuclient/emacsclient_program._Make_sure_you_have_the_emacsclient/gnuclient_program_installed_and_available_in_the_PATH.=Impossibile_eseguire_il_programma_gnuclient/emacsclient._Assicurarsi_che_il_programma_gnuclient/emacsclient_sia_installato_e_disponibile_nel_PATH. Built-in_journal_list=Lista_di_riviste_interna OpenOffice/LibreOffice_connection=Connessione_a_OpenOffice/LibreOffice -You_can_add_additional_journal_names_by_setting_up_a_personal_journal_list,
as_well_as_linking_to_external_journal_lists.=\u00c8_possibile_aggiungere_altri_nomi_di_riviste_creando_una_lista_personale,
oppure_creando_un_collegamento_a_liste_di_riviste_esterne. +You_can_add_additional_journal_names_by_setting_up_a_personal_journal_list,
as_well_as_linking_to_external_journal_lists.=È_possibile_aggiungere_altri_nomi_di_riviste_creando_una_lista_personale,
oppure_creando_un_collegamento_a_liste_di_riviste_esterne. JabRef_includes_a_built-in_list_of_journal_abbreviations.=JabRef_include_una_lista_interna_di_abbreviazioni_di_nomi_di_riviste. You_must_select_either_a_valid_style_file,_or_use_one_of_the_default_styles.=Selezionare_un_file_di_stile_valido_oppure_utilizzare_uno_degli_stili_predefiniti. -This_is_a_simple_copy_and_paste_dialog._First_load_or_paste_some_text_into_the_text_input_area.
After_that,_you_can_mark_text_and_assign_it_to_a_BibTeX_field.=Questo_\u00e8_un_semplice_dialogo_di_copia_e_incolla._Prima_carica_o_incolla_il_testo_nell'area_di_inserimento_di_testo.
Quindi_\u00e8_possibile_selezionare_parti_del_testo_e_assegnarle_ai_campi_BibTeX. +This_is_a_simple_copy_and_paste_dialog._First_load_or_paste_some_text_into_the_text_input_area.
After_that,_you_can_mark_text_and_assign_it_to_a_BibTeX_field.=Questo_è_un_semplice_dialogo_di_copia_e_incolla._Prima_carica_o_incolla_il_testo_nell'area_di_inserimento_di_testo.
Quindi_è_possibile_selezionare_parti_del_testo_e_assegnarle_ai_campi_BibTeX. This_feature_generates_a_new_database_based_on_which_entries_are_needed_in_an_existing_LaTeX_document.=Questa_funzione_genera_un_nuovo_database_basato_sulle_voci_necessarie_in_un_documento_LaTeX_esistente. -You_need_to_select_one_of_your_open_databases_from_which_to_choose_entries,_as_well_as_the_AUX_file_produced_by_LaTeX_when_compiling_your_document.=\u00c8_necessario_selezionare_uno_dei_database_aperti_da_cui_scegliere_le_voci,_cos\u00ec_come_il_file_AUX_prodotto_da_LaTeX_nel_compilare_il_documento. +You_need_to_select_one_of_your_open_databases_from_which_to_choose_entries,_as_well_as_the_AUX_file_produced_by_LaTeX_when_compiling_your_document.=È_necessario_selezionare_uno_dei_database_aperti_da_cui_scegliere_le_voci,_così_come_il_file_AUX_prodotto_da_LaTeX_nel_compilare_il_documento. First_select_entries_to_clean_up.=Selezionare_le_voci_da_ripulire. Cleanup_entry=Ripulisci_voce Autogenerate_PDF_Names=Genera_automaticamente_i_nomi_dei_file_PDF -Auto-generating_PDF-Names_does_not_support_undo._Continue?=La_generazione_automatica_dei_nomi_dei_file_PDF_non_pu\u00f2_essere_annullata._Continuare? +Auto-generating_PDF-Names_does_not_support_undo._Continue?=La_generazione_automatica_dei_nomi_dei_file_PDF_non_può_essere_annullata._Continuare? Use_full_firstname_whenever_possible=Usa_nome_completo_quando_possibile Use_abbreviated_firstname_whenever_possible=Usa_nome_abbreviato_quando_possibile @@ -1654,7 +1650,7 @@ Name_format_used_for_autocompletion=Formato_dei_nomi_usato_per_l'autocompletamen Treatment_of_first_names=Gestione_dei_nomi Cleanup_entries=Ripulisci_voci Automatically_assign_new_entry_to_selected_groups=Assegna_automaticamente_la_nuova_voce_ai_gruppi_selezionati -%0_mode=modalit\u00e0_%0 +%0_mode=modalità_%0 Move_DOIs_from_note_and_URL_field_to_DOI_field_and_remove_http_prefix=Sposta_i_DOI_dai_campi_note_e_URL_al_campo_DOI_e_rimuovi_il_prefisso_'http' Make_paths_of_linked_files_relative_(if_possible)=Rendi_relativi_i_percorsi_dei_file_collegati_(se_possibile) Rename_PDFs_to_given_filename_format_pattern=Rinomina_i_file_PDF_secondo_il_modello_di_nome_dei_file @@ -1701,49 +1697,48 @@ BibTeX_entry_creation=Creazione_della_voce_BibTeX = Unable_to_connect_to_FreeCite_online_service.=Impossibile_connettersi_al_servizio_online_FreeCite. Parse_with_FreeCite=Analizza_con_FreeCite -The_current_BibTeX_key_will_be_overwritten._Continue?=La_chiave_BibTeX_corrente_sar\u00e0_sovrascritta._Continuare? +The_current_BibTeX_key_will_be_overwritten._Continue?=La_chiave_BibTeX_corrente_sarà_sovrascritta._Continuare? Overwrite_key=Sovrascrivi_chiave Not_overwriting_existing_key._To_change_this_setting,_open_Options_->_Prefererences_->_BibTeX_key_generator=Le_chiavi_esistenti_non_vengono_sovrascritte._Per_cambiare_questa_impostazione,_aprire_Opzioni_->_Preferenze_->_Generatore_di_chiavi_BibTeX How_would_you_like_to_link_to_'%0'?=Come_vuoi_collegare_a_'%0'? BibTeX_key_patterns=Modelli_delle_chiavi_BibTeX Changed_special_field_settings=Cambiate_le_impostazioni_dei_campi_speciali -Clear_priority=Azzera_le_priorit\u00e0 +Clear_priority=Azzera_le_priorità Clear_rank=Azzera_la_valutazione Enable_special_fields=Abilita_campi_speciali Five_stars=Cinque_stelle Four_stars=Quattro_stelle Help_on_special_fields=Aiuto_sui_campi_speciali Keywords_of_selected_entries=Parole_chiave_delle_voci_selezionate -Manage_content_selectors=Gestione_dei_selettori_dei_contenuti Manage_keywords=Gestione_delle_parole_chiave -No_priority_information=Nessuna_informazione_di_priorit\u00e0 +No_priority_information=Nessuna_informazione_di_priorità No_rank_information=Nessuna_informazione_sulla_valutazione One_star=Una_stella -Priority=Priorit\u00e0 -Priority_high=Priorit\u00e0_alta -Priority_low=Priorit\u00e0_bassa -Priority_medium=Priorit\u00e0_media -Quality=Qualit\u00e0 +Priority=Priorità +Priority_high=Priorità_alta +Priority_low=Priorità_bassa +Priority_medium=Priorità_media +Quality=Qualità Rank=Valutazione Relevance=Rilevanza -Set_priority_to_high=Assegna_priorit\u00e0_alta -Set_priority_to_low=Assegna_priorit\u00e0_bassa -Set_priority_to_medium=Assegna_priorit\u00e0_media -Show_priority=Mostra_priorit\u00e0 -Show_quality=Mostra_qualit\u00e0 +Set_priority_to_high=Assegna_priorità_alta +Set_priority_to_low=Assegna_priorità_bassa +Set_priority_to_medium=Assegna_priorità_media +Show_priority=Mostra_priorità +Show_quality=Mostra_qualità Show_rank=Mostra_valutazione Show_relevance=Mostra_rilevanza Synchronize_with_keywords=Sincronizza_con_le_parole_chiave Synchronized_special_fields_based_on_keywords=Sincronizzati_i_campi_speciali_in_base_alle_parole_chiave. Three_stars=Tre_stelle Toggle_relevance=Mostra/Nascondi_rilevanza -Toggle_quality_assured=Mostra/Nascondi_qualit\u00e0 +Toggle_quality_assured=Mostra/Nascondi_qualità Two_stars=Due_stelle Update_keywords=Aggiorna_parole_chiave Write_values_of_special_fields_as_separate_fields_to_BibTeX=Scrivi_i_valori_dei_campi_speciali_come_campi_separati_nelle_voci_BibTeX You_have_changed_settings_for_special_fields.=Sono_state_modificate_le_impostazioni_per_i_campi_speciali. %0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.=Trovate_%0_voci._Per_ridurre_il_carico_sul_server_ne_saranno_scaricate_solo_%1. -A_string_with_that_label_already_exists=Una_stringa_con_questa_etichetta_esiste_gi\u00e0. +A_string_with_that_label_already_exists=Una_stringa_con_questa_etichetta_esiste_già. 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. Correct_the_entry,_and_reopen_editor_to_display/edit_source.=Correggi_la_voce_e_riapri_l'editor_per_mostrare/modificare_il_codice_sorgente. @@ -1753,31 +1748,29 @@ Make_sure_you_have_installed_OpenOffice/LibreOffice_with_Java_support.=Assicurar If_connecting_manually,_please_verify_program_and_library_paths.=Se_si_effettua_la_connessione_manualmente_verificare_i_percorsi_al_programma_e_alla_libreria. Error_message\:=Messaggio_di_errore\: Created_group_"%0".=Creato_il_gruppo_"%0". -If_a_pasted_or_imported_entry_already_has_the_field_set,_overwrite.=Se_la_voce_incollata_o_importata_ha_il_campo_gi\u00e0_impostato,_sovrascrivere. +If_a_pasted_or_imported_entry_already_has_the_field_set,_overwrite.=Se_la_voce_incollata_o_importata_ha_il_campo_già_impostato,_sovrascrivere. Import_metadata_from_PDF=Importa_metadati_dal_file_PDF Not_connected_to_any_Writer_document._Please_make_sure_a_document_is_open,_and_use_the_'Select_Writer_document'_button_to_connect_to_it.=Non_connesso_ad_alcun_documento_Writer._Assicurarsi_che_un_documento_sia_aperto_e_connetterlo_con_il_bottone_"Selezionare_il_documento_Writer". Removed_all_subgroups_of_group_"%0".=Eliminati_tutti_i_sottogruppi_del_gruppo_"%0". -To_disable_the_memory_stick_mode_rename_or_remove_the_jabref.xml_file_in_the_same_folder_as_JabRef.=Per_disabilitare_la_modalit\u00e0_chiavetta_di_memoria_rinominare_o_cancellare_il_file_"jabref.xml"_che_si_trova_nella_cartella_di_installazione_di_JabRef. -Unable_to_connect._One_possible_reason_is_that_JabRef_and_OpenOffice/LibreOffice_are_not_both_running_in_either_32_bit_mode_or_64_bit_mode.=Impossibile_connettersi._Una_possibile_ragione_\u00e8_il_fatto_che_JabRef_e_OpenOffice/LibreOffice_non_vengono_eseguiti_nella_stessa_modalit\u00e0_a_32_o_64_bit. +To_disable_the_memory_stick_mode_rename_or_remove_the_jabref.xml_file_in_the_same_folder_as_JabRef.=Per_disabilitare_la_modalità_chiavetta_di_memoria_rinominare_o_cancellare_il_file_"jabref.xml"_che_si_trova_nella_cartella_di_installazione_di_JabRef. +Unable_to_connect._One_possible_reason_is_that_JabRef_and_OpenOffice/LibreOffice_are_not_both_running_in_either_32_bit_mode_or_64_bit_mode.=Impossibile_connettersi._Una_possibile_ragione_è_il_fatto_che_JabRef_e_OpenOffice/LibreOffice_non_vengono_eseguiti_nella_stessa_modalità_a_32_o_64_bit. Use_the_following_delimiter_character(s)\:=Usa_i_seguenti_caratteri_di_delimitazione\: When_downloading_files,_or_moving_linked_files_to_the_file_directory,_prefer_the_BIB_file_location_rather_than_the_file_directory_set_above=Quando_si_scaricano_i_file_o_si_spostano_i_file_collegati,_preferire_la_posizione_del_file_BibTeX_alla_cartella_impostata_sopra. -Your_style_file_specifies_the_character_format_'%0',_which_is_undefined_in_your_current_OpenOffice/LibreOffice_document.=Il_file_di_stile_specifica_il_formato_di_carattere_"%0"_che_non_\u00e8_tuttavia_definito_nel_documento_OpenOffice/LibreOffice_corrente. -Your_style_file_specifies_the_paragraph_format_'%0',_which_is_undefined_in_your_current_OpenOffice/LibreOffice_document.=Il_file_di_stile_specifica_il_formato_di_paragrafo_"%0"_che_non_\u00e8_tuttavia_definito_nel_documento_OpenOffice/LibreOffice_corrente. +Your_style_file_specifies_the_character_format_'%0',_which_is_undefined_in_your_current_OpenOffice/LibreOffice_document.=Il_file_di_stile_specifica_il_formato_di_carattere_"%0"_che_non_è_tuttavia_definito_nel_documento_OpenOffice/LibreOffice_corrente. +Your_style_file_specifies_the_paragraph_format_'%0',_which_is_undefined_in_your_current_OpenOffice/LibreOffice_document.=Il_file_di_stile_specifica_il_formato_di_paragrafo_"%0"_che_non_è_tuttavia_definito_nel_documento_OpenOffice/LibreOffice_corrente. Searching...=Ricerca_in_corso... -You_have_selected_more_than_%0_entries_for_download._Some_web_sites_might_block_you_if_you_make_too_many_rapid_downloads._Do_you_want_to_continue?=Sono_state_selezionate_pi\u00f9_di_%0_voci_da_scaricare._Alcuni_siti_potrebbero_bloccare_la_connessione_se_si_eseguono_scaricamenti_troppo_numerosi_e_rapidi._Continuare? +You_have_selected_more_than_%0_entries_for_download._Some_web_sites_might_block_you_if_you_make_too_many_rapid_downloads._Do_you_want_to_continue?=Sono_state_selezionate_più_di_%0_voci_da_scaricare._Alcuni_siti_potrebbero_bloccare_la_connessione_se_si_eseguono_scaricamenti_troppo_numerosi_e_rapidi._Continuare? Confirm_selection=Conferma_la_selezione Add_{}_to_specified_title_words_on_search_to_keep_the_correct_case=Aggiungere_{}_alle_parole_del_titolo_specificate_per_mantenere_la_corretta_capitalizzazione_nella_ricerca. Import_conversions=Importare_le_conversioni Please_enter_a_search_string=Inserire_una_stringa_di_ricerca Please_open_or_start_a_new_database_before_searching=Aprire_o_creare_un_nuovo_database_prima_di_effettuare_la_ricerca -An_error_occurred_while_fetching_from_ADS_(%0)\:=Si_\u00e8_verificato_un_errore_durante_il_recupero_da_ADS_(%0)\: -An_error_occurred_while_parsing_abstract=Si_\u00e8_verificato_un_errore_durante_l'elaborazione_del_riassunto Log=Registro Canceled_merging_entries=Accorpamento_delle_voci_cancellato -Format_units_by_adding_non-breaking_separators_and_keeping_the_correct_case_on_search=Struttura_le_unit\u00e0_aggiungendo_separatori_non_interrompibili_e_conservare_la_corretta_capitalizzazione_per_la_ricerca +Format_units_by_adding_non-breaking_separators_and_keeping_the_correct_case_on_search=Struttura_le_unità_aggiungendo_separatori_non_interrompibili_e_conservare_la_corretta_capitalizzazione_per_la_ricerca Merge_entries=Accorpa_le_voci Merged_entries=Accorpate_le_voci_in_una_nuova_e_mantenute_le_vecchie Merged_entry=Voce_accorpata @@ -1787,7 +1780,7 @@ Result=Risultato Show_DOI_first=Mostrare_prima_il_DOI Show_URL_first=Mostrare_prima_l'URL Use_Emacs_key_bindings=Utilizza_le_scorciatoie_di_tastiera_di_Emacs -You_have_to_choose_exactly_two_entries_to_merge.=\u00c8_necessario_selezionare_esattamente_due_voci_da_accorpare. +You_have_to_choose_exactly_two_entries_to_merge.=È_necessario_selezionare_esattamente_due_voci_da_accorpare. Update_timestamp_on_modification=Aggiornare_data_e_ora_a_seguito_di_una_modifica All_key_bindings_will_be_reset_to_their_defaults.=Tutte_le_scorciatoie_di_tastiera_saranno_reimpostate_ai_valori_predefiniti. @@ -1799,11 +1792,11 @@ Hostname=Host Invalid_setting=Impostazione_non_valida Network=Rete Please_specify_both_hostname_and_port=Specificare_sia_il_nome_dell'host_sia_il_numero_della_porta -Please_specify_both_username_and_password= +Please_specify_both_username_and_password=Specificare_sia_il_nome_utente_che_la_password Use_custom_proxy_configuration=Utilizza_una_configurazione_del_proxy_personalizzata. -Proxy_requires_authentication= -Attention\:_Password_is_stored_in_plain_text\!= +Proxy_requires_authentication=Il_proxy_richiede_un'autenticazione +Attention\:_Password_is_stored_in_plain_text\!=Attenzione\:_Password_salvata_come_testo_semplice\! Clear_connection_settings=Reinizializza_i_parametri_di_connessione Cleared_connection_settings.=Parametri_di_connessione_reinizializzati @@ -1816,7 +1809,7 @@ Open_folder=Apri_la_cartella Searches_for_unlinked_PDF_files_on_the_file_system=Cerca_i_file_PDF_non_collegati_nel_filesystem Export_entries_ordered_as_specified=Esporta_le_voci_nell'ordine_specificato Export_sort_order=Esporta_il_modo_di_ordinamento -Export_sorting= +Export_sorting=Esporta_l'ordinamento Newline_separator=Separatore_di_linea Save_entries_ordered_as_specified=Salva_le_voci_nell'ordine_specificato @@ -1829,7 +1822,6 @@ Move_to_group=Sposta_nel_gruppo Clear_read_status=Annulla_lo_stato_di_lettura Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=Converti_nel_formato_BibLatex_(per_esempio,_sposta_il_valore_del_campo_'journal'_nel_campo_'journaltitle') -Could_not_apply_changes.=Impossibile_applicare_le_modifiche. Deprecated_fields=Campi_obsoleti Hide/show_toolbar=Mostra/Nascondi_la_barra_degli_strumenti No_read_status_information=Nessuna_informazione_sullo_stato_di_lettura @@ -1860,447 +1852,450 @@ Unable_to_find_the_requested_look_and_feel_and_thus_the_default_one_is_used.=Imp Opens_JabRef's_GitHub_page=Apri_la_pagina_di_JabRef_su_GitHub Could_not_open_browser.=Impossibile_avviare_il_browser -Please_open_%0_manually.= -The_link_has_been_copied_to_the_clipboard.= +Please_open_%0_manually.=Per_favore_aprire_%0_manualmente. +The_link_has_been_copied_to_the_clipboard.=Il_link_è_stato_copiato_negli_appunti. -Open_%0_file= +Open_%0_file=Apri_il_file_%0 -Cannot_delete_file= -File_permission_error= +Cannot_delete_file=Non_posso_cancellare_il_file +File_permission_error=Errore_nei_permessi_del_file Push_to_%0=Invia_a_%0 Path_to_%0=Percorso_per_%0 -Convert= -Normalize_to_BibTeX_name_format= -Help_on_Name_Formatting= - -Add_new_file_type= -Follow_DOI_or_URL_link_and_try_to_locate_PDF_full_text_document= - -Left_entry= -Right_entry= -Use= -Original_entry= -Replace_original_entry= -No_information_added= -Select_at_least_one_entry_to_manage_keywords.= -OpenDocument_text= -OpenDocument_spreadsheet= -OpenDocument_presentation= -%0_image= -Added_entry= -Modified_entry= -Deleted_entry= -Modified_groups_tree= -Removed_all_groups= -Accepting_the_change_replaces_the_complete_groups_tree_with_the_externally_modified_groups_tree.= -Select_export_format= -Export_with_selected_format= -Return_to_JabRef= -Please_move_the_file_manually_and_link_in_place.= +Convert=Converti +Normalize_to_BibTeX_name_format=Normalizza_al_formato_di_nome_di_BibTeX +Help_on_Name_Formatting=Aiuto_sulla_Formattazione_dei_Nomi + +Add_new_file_type=Aggiungi_un_nuovo_tipo_di_file +Follow_DOI_or_URL_link_and_try_to_locate_PDF_full_text_document=Segue_il_link_DOI_o_URL_e_cerca_di_localizzare_il_documento_PDF_completo + +Left_entry=Voce_di_sinistra +Right_entry=Voce_di_destra +Use=Uso +Original_entry=Voce_originale +Replace_original_entry=Rimpiazza_il_voce_originale +No_information_added=Non_è_stata_aggiunta_alcuna_informazione +Select_at_least_one_entry_to_manage_keywords.=Seleziona_almeno_una_voce_per_gestire_le_parole_chiave +OpenDocument_text=Testo_di_OpenDocument +OpenDocument_spreadsheet=Foglio_di_calcolo_di_OpenDocument +OpenDocument_presentation=Presentazione_di_OpenDocument +%0_image=immagine_%0 +Added_entry=Voce_aggiunta +Modified_entry=Voce_modificata +Deleted_entry=Voce_cancellata +Modified_groups_tree=Albero_dei_gruppi_modificato +Removed_all_groups=Cancellati_tutti_i_gruppi +Accepting_the_change_replaces_the_complete_groups_tree_with_the_externally_modified_groups_tree.=Accettando_le_modifiche_si_sovrascriver_à_l'albero_dei_gruppi_con_quello_modificato_esternamente. +Select_export_format=Selezionare_il_formato_di_esportazione +Return_to_JabRef=Ritorna_a_JabRef +Please_move_the_file_manually_and_link_in_place.=Per_favore_sposta_il_file_manualmente_e_collegalo_al_suo_posto. Could_not_connect_to_%0=Impossibile_la_connessione_a_%0 -Warning\:_%0_out_of_%1_entries_have_undefined_BibTeX_key.= -occurrence= -Added_new_'%0'_entry.= -Multiple_entries_selected._Do_you_want_to_change_the_type_of_all_these_to_'%0'?= +Warning\:_%0_out_of_%1_entries_have_undefined_BibTeX_key.=Attenzione\:_%0_di_%1_campi_hanno_chiavi_BibTeX_non_definite. +occurrence=occorrenza +Added_new_'%0'_entry.=Aggiunta_la_nuova_voce_'%0'. +Multiple_entries_selected._Do_you_want_to_change_the_type_of_all_these_to_'%0'?=Selezione_multipla._Vuoi_cambiare_il_tipo_di_tutti_questi_in_'%0'? Changed_type_to_'%0'_for=Tipo_cambiato_in_'%0'_per -Really_delete_the_selected_entry?= -Really_delete_the_%0_selected_entries?= -Keep_merged_entry_only= -Keep_left= -Keep_right= -Old_entry= -From_import= -No_problems_found.= -%0_problem(s)_found= -Save_changes= -Discard_changes= -Database_'%0'_has_changed.=Il_database_'%0'_\u00e8_stato_modificato. -Print_entry_preview= +Really_delete_the_selected_entry?=Cancellare_veramente_la_voce_selezionata? +Really_delete_the_%0_selected_entries?=Cancellare_veramente_le_%0_voci_selezionate? +Keep_merged_entry_only=Tieni_solo_i_voci_accorpate +Keep_left=Tieni_quelli_di_sinistra +Keep_right=Tieni_quelli_di_destra +Old_entry=Voce_vecchia +From_import=Dall'importazione +No_problems_found.=Nessun_problema_trovato. +%0_problem(s)_found=%0_problemi_trovati +Save_changes=Salva_le_modifiche +Discard_changes=Scarta_le_modifiche +Database_'%0'_has_changed.=Il_database_'%0'_è_stato_modificato. +Print_entry_preview=Stampa_l'anteprima_della_voce Copy_\\cite{BibTeX_key}=Copia_\\cite{chiave_BibTeX} Copy_BibTeX_key_and_title=Copia_la_chiave_BibTeX_ed_il_titolo File_rename_failed_for_%0_entries.=Rinominazione_dei_file_fallita_per_%0_voci. To_set_up,_go_to=Per_configurare_vedi -Merged_BibTeX_source_code= -'%0'_is_not_a_valid_ADS_bibcode.= +Merged_BibTeX_source_code=Codice_sorgente_BibTeX_accorpato Invalid_DOI\:_'%0'.=DOI_non_valido\:_'%0'. -should_start_with_a_name= -should_end_with_a_name= -unexpected_closing_curly_bracket= -unexpected_opening_curly_bracket= -large_capitals_are_not_masked_using_curly_brackets_{}= -should_contain_a_four_digit_number= -should_contain_a_valid_page_number_range= -Filled= -Field_is_missing= +should_start_with_a_name=deve_cominciare_con_un_nome +should_end_with_a_name=deve_finire_con_un_nome +unexpected_closing_curly_bracket=parentesi_graffa_chiusa_inaspettata +unexpected_opening_curly_bracket=parentesi_graffa_aperta_inaspettata +capital_letters_are_not_masked_using_curly_brackets_{}=le_maiuscole_grandi_non_vengono_nascoste_con_le_parentesi_graffe_{} +should_contain_a_four_digit_number=deve_contenere_un_numero_di_quattro_cifre +should_contain_a_valid_page_number_range=deve_contenere_un_intervallo_valido_di_numeri_di_pagina +Filled=Riempito +Field_is_missing=Campo_mancante Search_%0=Ricerca_%0 -Search_results_in_all_databases_for_%0= -Search_results_in_database_%0_for_%1= -Search_globally= -No_results_found.= -Found_%0_results.= -Advanced_search_active.= -Normal_search_active.= -plain_text= -This_search_contains_entries_in_which_any_field_contains_the_regular_expression_%0= -This_search_contains_entries_in_which_any_field_contains_the_term_%0= -This_search_contains_entries_in_which= - -An_autosave_file_was_found_for_this_database._This_could_indicate_that_JabRef_did_not_shut_down_cleanly_last_time_the_file_was_used.= -Note\:_A_full_text_search_is_currently_not_supported_for_%0= -Unable_to_autodetect_OpenOffice/LibreOffice_installation._Please_choose_the_installation_directory_manually.= -JabRef_no_longer_supports_'ps'_or_'pdf'_fields.
File_links_are_now_stored_in_the_'file'_field_and_files_are_stored_in_an_external_file_directory.
To_make_use_of_this_feature,_JabRef_needs_to_upgrade_file_links.

= -This_database_uses_outdated_file_links.= - -Clear_search= -Close_database= -Close_entry_editor= -Decrease_table_font_size= -Entry_editor,_next_entry= -Entry_editor,_next_panel= -Entry_editor,_next_panel_2= -Entry_editor,_previous_entry= -Entry_editor,_previous_panel= -Entry_editor,_previous_panel_2= -Entry_editor,_store_field= -File_list_editor,_move_entry_down= -File_list_editor,_move_entry_up= -Focus_entry_table= -Import_into_current_database= -Import_into_new_database= -Increase_table_font_size= -New_article= -New_book= -New_entry= -New_from_plain_text= -New_inbook= -New_mastersthesis= -New_phdthesis= -New_proceedings= -New_unpublished= -Next_tab= -Preamble_editor,_store_changes= -Previous_tab= -Push_to_application= -Refresh_OpenOffice/LibreOffice= -Resolve_duplicate_BibTeX_keys= -Save_all= -String_dialog,_add_string= -String_dialog,_remove_string= -Switch_preview_layout= -Synchronize_files= -Unabbreviate= -should_contain_a_protocol= -Copy_preview= -Automatically_setting_file_links= -Regenerating_BibTeX_keys_according_to_metadata= -No_meta_data_present_in_BIB_file._Cannot_regenerate_BibTeX_keys= -Regenerate_all_keys_for_the_entries_in_a_BibTeX_file= -Show_debug_level_messages= -Default_bibliography_mode= -New_%0_database_created.= -Show_only_preferences_deviating_from_their_default_value= -default= -key= -type= -value= -Show_preferences= -Save_actions= -Enable_save_actions= - -Other_fields= -Show_remaining_fields= - -link_should_refer_to_a_correct_file_path= -abbreviation_detected= -wrong_entry_type_as_proceedings_has_page_numbers= -Abbreviate_journal_names= -Abbreviating...= -Adding_fetched_entries= -Display_keywords_appearing_in_ALL_entries= -Display_keywords_appearing_in_ANY_entry= -Fetching_entries_from_Inspire= -None_of_the_selected_entries_have_BibTeX_keys.= -Unabbreviate_journal_names= -Unabbreviating...= -Usage= - - -Adds_{}_brackets_around_acronyms,_month_names_and_countries_to_preserve_their_case.= -Are_you_sure_you_want_to_reset_all_settings_to_default_values?= -Reset_preferences= -Ill-formed_entrytype_comment_in_BIB_file= - -Move_linked_files_to_default_file_directory_%0= - -Clipboard= -Could_not_paste_entry_as_text\:= -Do_you_still_want_to_continue?= -This_action_will_modify_the_following_field(s)_in_at_least_one_entry_each\:= -This_could_cause_undesired_changes_to_your_entries.= -Run_field_formatter\:= -Table_font_size_is_%0= +Search_results_in_all_databases_for_%0=Risultati_della_ricerca_di_%0_in_tutti_i_database +Search_results_in_database_%0_for_%1=Risultati_della_ricerca_di_%1_nel_database_%0 +Search_globally=Ricerca_globale +No_results_found.=Nessun_risultato_trovato. +Found_%0_results.=Trovati_%0_risultati. +Advanced_search_active.=Ricerca_avanzata_attiva. +Normal_search_active.=Ricerca_normale_attiva. +plain_text=Testo_semplice +This_search_contains_entries_in_which_any_field_contains_the_regular_expression_%0=Questa_ricerca_contiene_occorrenze_in_cui_qualsiasi_campo_contiene_l'espressione_regolare_%0 +This_search_contains_entries_in_which_any_field_contains_the_term_%0=Questa_ricerca_contiene_occorrenze_in_cui_qualsiasi_campo_contiene_il_termine_%0 +This_search_contains_entries_in_which=Questa_ricerca_contiene_occorrenze_in_cui + +An_autosave_file_was_found_for_this_database._This_could_indicate_that_JabRef_did_not_shut_down_cleanly_last_time_the_file_was_used.=È_stato_trovato_un_file_di_salvataggio_automatico_per_questo_database._Questo_potrebbe_indicare_che_JabRef_non_si_è_chiuso_correttamente_l'ultima_volta_che_il_file_è_stato_usato. +Unable_to_autodetect_OpenOffice/LibreOffice_installation._Please_choose_the_installation_directory_manually.=Non_sono_in_grado_di_rilevare_l'installazione_di_OpenOffice/LibreOffice._Scegliere_la_cartella_di_installazione_manualmente. +JabRef_no_longer_supports_'ps'_or_'pdf'_fields.
File_links_are_now_stored_in_the_'file'_field_and_files_are_stored_in_an_external_file_directory.
To_make_use_of_this_feature,_JabRef_needs_to_upgrade_file_links.

=JabRef_non_supporta_più_campi_'ps'_o_'pdf'.
I_link_ai_file_sono_salvati_ora_nei_campi_'file'_e_i_file_sono_salvati_in_una_cartella_esterna.
Per_usare_questa_funzione_JabRef_ha_bisogno_di_aggiornare_i_link_ai_file.

+This_database_uses_outdated_file_links.=Questo_database_usa_vecchi_link_a_file. + +Clear_search=Cancella_la_ricerca +Close_database=Chiudi_il_database +Close_entry_editor=Chiudi_l'editor_della_voce +Decrease_table_font_size=Decrementa_la_grandezza_del_carattere_della_tavola +Entry_editor,_next_entry=Editor_della_voce,_voce_successiva +Entry_editor,_next_panel=Editor_della_voce,_pannello_successivo +Entry_editor,_next_panel_2=Editor_della_voce,_pannello_successivo_2 +Entry_editor,_previous_entry=Editor_della_voce,_voce_precedente +Entry_editor,_previous_panel=Editor_della_voce,_pannello_precedente +Entry_editor,_previous_panel_2=Editor_della_voce,_pannello_precedente_2 +Entry_editor,_store_field=Editor_della_voce,_campo_accumulatore +File_list_editor,_move_entry_down=Editor_di_liste_di_file,_sposta_la_voce_in_giù +File_list_editor,_move_entry_up=Editor_di_liste_di_file,_sposta_la_voce_in_su +Focus_entry_table=Sposta_il_fuoco_sulla_tavola_della_voce +Import_into_current_database=Importa_nel_database_corrente +Import_into_new_database=Importa_in_un_nuovo_database +Increase_table_font_size=Incremente_la_grandezza_del_carattere_della_tavola +New_article=Nuovo_articolo +New_book=Nuovo_libro +New_entry=Nuova_voce +New_from_plain_text=Nuovo_da_testo_libero +New_inbook=Nuovo_in_libro +New_mastersthesis=Nuova_tesi_di_master +New_phdthesis=Nuova_tesi_di_dottorato +New_proceedings=Nuovi_atti_di_congresso +New_unpublished=Nuovo_non_pubblicato +Next_tab=Scheda_successiva +Preamble_editor,_store_changes=Editor_di_preambolo +Previous_tab=Scheda_precedente +Push_to_application=Manda_all'applicazione +Refresh_OpenOffice/LibreOffice=Ricarica_OpenOffice/LibreOffice +Resolve_duplicate_BibTeX_keys=Risolvi_duplicazione_chiavi_BibTeX +Save_all=Salva_tutto +String_dialog,_add_string=Dialogo_stringhe,_aggiungi_una_stringa +String_dialog,_remove_string=Dialogo_stringhe,_cancella_una_stringa +Synchronize_files=Sincronizza_file +Unabbreviate=Togli_abbreviazioni +should_contain_a_protocol=deve_contenere_un_protocollo +Copy_preview=Copia_l'anteprima +Automatically_setting_file_links=Seleziona_automaticamente_i_collegamenti_ai_file +Regenerating_BibTeX_keys_according_to_metadata=Rigenera_le_chiavi_BibTeX_secondo_i_metadati +No_meta_data_present_in_BIB_file._Cannot_regenerate_BibTeX_keys=Non_ci_sono_meta_nel_fil_BIB._Non_posso_rigenerare_le_chiavi_BibTeX +Regenerate_all_keys_for_the_entries_in_a_BibTeX_file=Rigenera_tutte_le_chiavi_per_i_campi_di_un_file_BibTeX +Show_debug_level_messages=Mostra_i_messaggi_del_livello_di_debug +Default_bibliography_mode=Modalità_bibliografica_predefinita +New_%0_database_created.=Creato_il_nuovo_database_%0. +Show_only_preferences_deviating_from_their_default_value=Mostra_solo_le_preferenze_diverse_dai_valori_predefiniti +default=predefinito +key=chiave +type=tipo +value=valore +Show_preferences=Mostra_preferenze +Save_actions=Salva_azioni +Enable_save_actions=Abilita_il_salvataggio_delle_azioni + +Other_fields=Altri_campi +Show_remaining_fields=Mostra_i_campi_rimanenti + +link_should_refer_to_a_correct_file_path=il_link_deve_riferirsi_ad_un_percorso_file_corretto +abbreviation_detected=rilevata_abbreviazione +wrong_entry_type_as_proceedings_has_page_numbers=tipo_di_voce_sbagliata_perché_ha_numeri_di_pagina +Abbreviate_journal_names=Nomi_di_rivista_abbreviati +Abbreviating...=Applico_le_abbreviazioni +Adding_fetched_entries=Aggiungo_le_voci_estratte +Display_keywords_appearing_in_ALL_entries=Mostra_le_parole_chiave_che_compaiono_in_TUTTI_le_voci +Display_keywords_appearing_in_ANY_entry=Mostra_le_parole_chiave_che_compaiono_in_QUALSIASI_voce +Fetching_entries_from_Inspire=Estrae_le_voci_da_Inspire +None_of_the_selected_entries_have_BibTeX_keys.=Nessuno_delle_voci_selezionate_ha_chiavi_BibTeX. +Unabbreviate_journal_names=Nomi_di_rivista_senza_abbreviazione +Unabbreviating...=Elimino_le_abbreviazioni +Usage=Uso + + +Adds_{}_brackets_around_acronyms,_month_names_and_countries_to_preserve_their_case.=Aggiungi_parentesi_graffe_{}_intorno_ad_acronimi,_nomi_di_mesi_e_nazioni_per_preservare_maiuscole/minuscole. +Are_you_sure_you_want_to_reset_all_settings_to_default_values?=Sei_sicuro_di_voler_riportare_tutte_le_preferenze_ai_propri_valori_predefiniti? +Reset_preferences=Reimposta_le_preferenze +Ill-formed_entrytype_comment_in_BIB_file=Commento_nel_tipo_di_voce_malformato_nel_file_BIB + +Move_linked_files_to_default_file_directory_%0=Sposta_i_collegamenti_ai_file_nella_cartella_predefinita + +Clipboard=Appunti +Could_not_paste_entry_as_text\:=Non_posso_incollare_la_voce_come_testo\: +Do_you_still_want_to_continue?=Vuoi_ancora_continuare? +This_action_will_modify_the_following_field(s)_in_at_least_one_entry_each\:=Questa_azione_modificherà_i_seguenti_campi_per_almeno_una_voce_ciascuno\: +This_could_cause_undesired_changes_to_your_entries.=Questo_potrebbe_causare_modifiche_indesiderate_alle_tue_voci. +Run_field_formatter\:=Fa_andare_il_formattatore_di_campo\: +Table_font_size_is_%0=La_grandezza_del_carattere_\e00e8_%0 %0_import_canceled=Importazione_da_%0_annullata -Internal_style= -Add_style_file= -Are_you_sure_you_want_to_remove_the_style?= -Current_style_is_'%0'= -Remove_style= -Select_one_of_the_available_styles_or_add_a_style_file_from_disk.= -You_must_select_a_valid_style_file.= -Reload= - -Capitalize= -Capitalize_all_words,_but_converts_articles,_prepositions,_and_conjunctions_to_lower_case.= -Capitalize_the_first_word,_changes_other_words_to_lower_case.= -Changes_all_letters_to_lower_case.= -Changes_all_letters_to_upper_case.= -Changes_the_first_letter_of_all_words_to_capital_case_and_the_remaining_letters_to_lower_case.= -Cleans_up_LaTeX_code.= -Converts_HTML_code_to_LaTeX_code.= -Converts_HTML_code_to_Unicode.= -Converts_LaTeX_encoding_to_Unicode_characters.= -Converts_Unicode_characters_to_LaTeX_encoding.= -Converts_ordinals_to_LaTeX_superscripts.= -Converts_units_to_LaTeX_formatting.= -HTML_to_LaTeX= -LaTeX_cleanup= -LaTeX_to_Unicode= -Lower_case= -Minify_list_of_person_names= -Normalize_date= -Normalize_month= -Normalize_month_to_BibTeX_standard_abbreviation.= -Normalize_names_of_persons= -Normalize_page_numbers= -Normalize_pages_to_BibTeX_standard.= -Normalizes_lists_of_persons_to_the_BibTeX_standard.= -Normalizes_the_date_to_ISO_date_format.= -Ordinals_to_LaTeX_superscript= -Protect_terms= -Remove_enclosing_braces= -Removes_braces_encapsulating_the_complete_field_content.= -Sentence_case= -Shortens_lists_of_persons_if_there_are_more_than_2_persons_to_"et_al.".= -Title_case= -Unicode_to_LaTeX= -Units_to_LaTeX= -Upper_case= -Does_nothing.= -Identity= -Clears_the_field_completely.= -Directory_not_found= -Main_file_directory_not_set\!= -This_operation_requires_exactly_one_item_to_be_selected.= -Importing_in_%0_format= -Female_name= -Female_names= -Male_name= -Male_names= -Mixed_names= -Neuter_name= -Neuter_names= - -Lookup_DOI= - -Audio_CD= -British_patent= -British_patent_request= -Candidate_thesis= -Collaborator= -Column= -Compiler= -Continuator= -Data_CD= -Editor= -European_patent= -European_patent_request= -Founder= -French_patent= -French_patent_request= -German_patent= -German_patent_request= -Line= -Master's_thesis= -Page= -Paragraph= -Patent= -Patent_request= -PhD_thesis= -Redactor= -Research_report= -Reviser= -Section= -Software= -Technical_report= -U.S._patent= -U.S._patent_request= -Verse= - -change_entries_of_group= -odd_number_of_unescaped_'\#'= - -Plain_text= -Show_diff= -character= -word= -Show_symmetric_diff= - -HTML_encoded_character_found= -booktitle_ends_with_'conference_on'= - -All_external_files= - -OpenOffice/LibreOffice_integration= - -incorrect_control_digit= -incorrect_format= - - -Copy_version_to_clipboard= -Copied_version_to_clipboard= - -BibTeX_key= -Message= -Decryption_not_supported.= +Internal_style=Stile_interno +Add_style_file=Aggiungi_file_di_stile +Are_you_sure_you_want_to_remove_the_style?=Sei_sicuro_di_voler_rimuovere_lo_stile? +Current_style_is_'%0'=Lo_stile_corrente_è_'%0' +Remove_style=Rimuovi_lo_stile +Select_one_of_the_available_styles_or_add_a_style_file_from_disk.=Seleziona_uno_degli_stili_disponibili_o_aggiungi_uno_stile_dal_disco. +You_must_select_a_valid_style_file.=Devi_selezionare_un_file_di_stile_valido. +Reload=Ricarica + +Capitalize=Metti_in_maiuscolo_la_prima_lettera +Capitalize_all_words,_but_converts_articles,_prepositions,_and_conjunctions_to_lower_case.=Metti_in_maiuscolo_la_prima_lettera_di_tutte_le_parole,_ma_converti_articoli_preposizioni_e_congiunzioni_in_minuscolo. +Capitalize_the_first_word,_changes_other_words_to_lower_case.=Metti_in_maiuscolo_la_prima_lettera_della_prima_parola,_metti_in_minuscolo_tutte_le_altre_parole. +Changes_all_letters_to_lower_case.=Metti_tutte_le_lettere_in_minuscolo. +Changes_all_letters_to_upper_case.=Metti_tutte_le_lettere_in_maiuscolo. +Changes_the_first_letter_of_all_words_to_capital_case_and_the_remaining_letters_to_lower_case.=Metti_in_maiuscolo_la_prima_lettera_di_tutte_le_parole_e_le_altre_in_minuscolo. +Cleans_up_LaTeX_code.=Pulisci_il_codice_LaTeX. +Converts_HTML_code_to_LaTeX_code.=Converti_il_codice_HTML_in_LaTeX. +Converts_HTML_code_to_Unicode.=Converti_il_codice_HTML_in_Unicode. +Converts_LaTeX_encoding_to_Unicode_characters.=Converti_la_codice_LaTeX_in_caratteri_Unicode. +Converts_Unicode_characters_to_LaTeX_encoding.=Converti_i_caratteri_Unicode_in_codice_LaTeX. +Converts_ordinals_to_LaTeX_superscripts.=Converti_gli_ordinali_in_indici_alti_LaTeX. +Converts_units_to_LaTeX_formatting.=Converti_unità_in_formattazione_LaTeX. +HTML_to_LaTeX=Da_HTML_a_LaTeX +LaTeX_cleanup=Pulisci_il_LaTeX +LaTeX_to_Unicode=Da_LaTeX_a_Unicode +Lower_case=Minuscolo +Minify_list_of_person_names=Riduci_la_lista_di_nomi_di_persona +Normalize_date=Normalizza_la_data +Normalize_month=Normalizza_il_mese +Normalize_month_to_BibTeX_standard_abbreviation.=Normalizza_il_mese_secondo_l'abbreviazione_standard_di_BibTeX. +Normalize_names_of_persons=Normalizza_i_nomi_di_persona +Normalize_page_numbers=Normalizza_i_numeri_di_pagina +Normalize_pages_to_BibTeX_standard.=Normalizza_le_pagine_secondo_lo_standard_di_BibTeX. +Normalizes_lists_of_persons_to_the_BibTeX_standard.=Normalizza_le_liste_di_persone__secondo_lo_standard_di_BibTeX. +Normalizes_the_date_to_ISO_date_format.=Normalizza_le_date_secondo_il_formato_di_data_ISO +Ordinals_to_LaTeX_superscript=Da_ordinali_ad_apici_LaTeX +Protect_terms=Termini_protetti +Remove_enclosing_braces=Rimuovi_le_parentesi_graffe_interne +Removes_braces_encapsulating_the_complete_field_content.=Rimuovi_le_parentesi_graffe_che_incapsulano_completamente_il_contenuto_dei_campi. +Sentence_case=Frase_maiuscola/minuscola +Shortens_lists_of_persons_if_there_are_more_than_2_persons_to_"et_al.".=Se_ci_sono_più_di_due_persone_in_una_lista,_abbrevia_in_"et_al.". +Title_case=Titolo_maiuscolo/minuscolo +Unicode_to_LaTeX=Da_Unicode_a_LaTeX +Units_to_LaTeX=Da_unità_a_LaTeX +Upper_case=Maiuscolo +Does_nothing.=Non_fa_niente. +Identity=Identità +Clears_the_field_completely.=Azzera_completamente_il_campo. +Directory_not_found=Cartella_non_trovata +Main_file_directory_not_set\!=Cartella_principale_non_selezionata\! +This_operation_requires_exactly_one_item_to_be_selected.=Per_questa_operazione_devi_selezionare_esattamente_un_elemento. +Importing_in_%0_format=Importo_nel_formato_%0 +Female_name=Nome_di_donna +Female_names=Nomi_di_donna +Male_name=Nome_di_uomo +Male_names=Nomi_di_uomo +Mixed_names=Nomi_misti +Neuter_name=Nome_neutro +Neuter_names=Nomi_neutri + +Lookup_DOI=Cerca_DOI + +Audio_CD=CD_Audio +British_patent=Brevetto_britannico +British_patent_request=Richiesto_brevetto_britannico +Candidate_thesis=Tesi_candidata +Collaborator=Collaboratore +Column=Colonna +Compiler=Compilatore +Continuator=Continuatore +Data_CD=CD_Dati +Editor=Editore +European_patent=Brevetto_europeo +European_patent_request=Richiesta_di_brevetto_europeo +Founder=Fondatore +French_patent=Brevetto_francese +French_patent_request=Richiesta_di_brevetto_francese +German_patent=Brevetto_tedesco +German_patent_request=Richesta_di_brevetto_tedesco +Line=Riga +Master's_thesis=Tesi_di_laurea_specialistica +Page=Pagina +Paragraph=Paragrafo +Patent=Brevetto +Patent_request=Richiesta_di_brevetto +PhD_thesis=Tesi_di_dottorato +Redactor=Redattore +Research_report=Relazione_di_ricerca +Reviser=Revisore +Section=Sezione +Software=Software +Technical_report=Relazione_tecnica +U.S._patent=Brevetto_U.S. +U.S._patent_request=Richiesta_di_brevetto_U.S. +Verse=Verso + +change_entries_of_group=modifica_le_voci_del_gruppo +odd_number_of_unescaped_'\#'=numero_dispari_di_'\#'_non_marcati + +Plain_text=Testo_semplice +Show_diff=Mostra_differenze +character=carattere +word=parola +Show_symmetric_diff=Mostra_differenze_simmetriche + +HTML_encoded_character_found=Trovato_un_carattere_in_codifica_HTML +booktitle_ends_with_'conference_on'=il_titolo_del_libro_termina_con_'conferenza_su' + +All_external_files=Tutti_i_file_esterni + +OpenOffice/LibreOffice_integration=integrazione_con_OpenOffice/LibreOffice + +incorrect_control_digit=carattere_di_controllo_non_corretto +incorrect_format=formato_non_corretto +Copy_version_to_clipboard=Copia_la_versione_negli_appunti +Copied_version_to_clipboard=Versione_copiata_negli_appunti + +BibTeX_key=Chiave_BibTeX +Message=Messaggio +Decryption_not_supported.=Decrittografazione_non_supportata. Cleared_'%0'_for_%1_entries=Reinizializzati_'%0'_per_%1_voce/i Set_'%0'_to_'%1'_for_%2_entries='%0'_impostata_a_'%1'_per_%2_voce/i Toggled_'%0'_for_%1_entries=Modificata_la_valutazione_di_'%0'_per_%1_voce/i -Check_for_updates= -Download_update= -New_version_available= -Installed_version= -Remind_me_later= -Ignore_this_update= -Could_not_connect_to_the_update_server.= -Please_try_again_later_and/or_check_your_network_connection.= -To_see_what_is_new_view_the_changelog.= -A_new_version_of_JabRef_has_been_released.= -JabRef_is_up-to-date.= -Latest_version= -Online_help_forum= -Custom= - -Export_cited= -Unable_to_generate_new_database= - -Open_console= -Use_default_terminal_emulator= -Execute_command= -Note\:_Use_the_placeholder_%0_for_the_location_of_the_opened_database_file.= -Executing_command_\"%0\"...= -Error_occured_while_executing_the_command_\"%0\".= -Reformat_ISSN= - -Countries_and_territories_in_English= -Electrical_engineering_terms= -Enabled= -Internal_list= -Manage_protected_terms_files= -Months_and_weekdays_in_English= -The_text_after_the_last_line_starting_with_\#_will_be_used= -Add_protected_terms_file= -Are_you_sure_you_want_to_remove_the_protected_terms_file?= -Remove_protected_terms_file= -Add_selected_text_to_list= -Add_{}_around_selected_text= -Format_field= -New_protected_terms_file= -change_field_%0_of_entry_%1_from_%2_to_%3= -change_key_from_%0_to_%1= -change_string_content_%0_to_%1= -change_string_name_%0_to_%1= -change_type_of_entry_%0_from_%1_to_%2= -insert_entry_%0= -insert_string_%0= -remove_entry_%0= -remove_string_%0= -undefined= -Cannot_get_info_based_on_given_%0\:_%1= -Get_BibTeX_data_from_%0= -No_%0_found= -Entry_from_%0= -Merge_entry_with_%0_information= -Updated_entry_with_info_from_%0= -Connection= -Connecting...= -Host= -Port= -Database= -User= -Connect=Connessione -Connection_error= -Driver_error= -Connection_to_%0_server_established.= -Required_field_"%0"_is_empty.= -%0_driver_not_available.= -The_connection_to_the_server_has_been_terminated.= -Connection_lost.= -Reconnect= -Work_offline= -Working_offline.= -Update_refused.= -Update_refused= -Local_entry= -Shared_entry= -Update_could_not_be_performed_due_to_existing_change_conflicts.= -You_are_not_working_on_the_newest_version_of_BibEntry.= -Local_version\:_%0= -Shared_version\:_%0= -Please_merge_the_shared_entry_with_yours_and_press_"Merge_entries"_to_resolve_this_problem.= -Canceling_this_operation_will_leave_your_changes_unsynchronized._Cancel_anyway?= -The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side._Hit_"Keep"_to_recover_the_entry.= -Remember_password?= -Cannot_cite_entries_without_BibTeX_keys._Generate_keys_now?= -New_technical_report= - -%0_file= -Custom_layout_file= -Protected_terms_file= -Style_file= - -Open_OpenOffice/LibreOffice_connection= -You_must_enter_at_least_one_field_name= -Non-ASCII_encoded_character_found= -Toggle_web_search_interface= -Background_color_for_resolved_fields= -Color_code_for_resolved_fields= -%0_files_found= -%0_of_%1= -One_file_found= -The_import_finished_with_warnings\:= -There_was_one_file_that_could_not_be_imported.= -There_were_%0_files_which_could_not_be_imported.= - -Migration_help_information= -Entered_database_has_obsolete_structure_and_is_no_longer_supported.= -However,_a_new_database_was_created_alongside_the_pre-3.6_one.= -Click_here_to_learn_about_the_migration_of_pre-3.6_databases.= -Opens_JabRef's_Facebook_page= -Opens_JabRef's_blog= -Opens_JabRef's_website= -Opens_a_link_where_the_current_development_version_can_be_downloaded= -See_what_has_been_changed_in_the_JabRef_versions= -Referenced_BibTeX_key_does_not_exist= -Finished_downloading_full_text_document_for_entry_%0.= -Full_text_document_download_failed_for_entry_%0.= -Look_up_full_text_documents= -You_are_about_to_look_up_full_text_documents_for_%0_entries.= -last_four_nonpunctuation_characters_should_be_numerals= -shared= -should_contain_an_integer_or_a_literal= -should_have_the_first_letter_capitalized= - -ID= -ID_type= -ID-based_entry_generator= -Fetcher_'%0'_did_not_find_an_entry_for_id_'%1'.= - -Select_first_entry= -Select_last_entry= - -Search_in_all_open_databases= - -Invalid_ISBN\:_'%0'.= +Check_for_updates=Cerca_degli_aggiornamenti +Download_update=Scarica_gli_aggiornamenti +New_version_available=Nuova_versione_disponibile +Installed_version=Versione_installata +Remind_me_later=Ricordamelo_dopo +Ignore_this_update=Ignora_questo_aggiornamento +Could_not_connect_to_the_update_server.=Non_posso_connettermi_al_server_degli_aggiornamenti. +Please_try_again_later_and/or_check_your_network_connection.=Prova_più_tardi_e/o_controlla_la_tua_connessione. +To_see_what_is_new_view_the_changelog.=Per_vedere_cosa_c'è_di_nuovo_controlla_il_changelog +A_new_version_of_JabRef_has_been_released.=È_stata_rilasciata_una_nuova_versione_di_JabRef. +JabRef_is_up-to-date.=JabRef_è_aggiornato. +Latest_version=Ultima_versione +Online_help_forum=Forum_per_help_online +Custom=Appopsito + +Export_cited=Esporta_citazioni +Unable_to_generate_new_database=Impossibile_generare_il_nuovo_database + +Open_console=Apri_la_console +Use_default_terminal_emulator=Usa_l'emulatore_di_terminale_predefinito +Execute_command=Esegui_il_comando +Note\:_Use_the_placeholder_%0_for_the_location_of_the_opened_database_file.=Nota\:_Usa_il_segnaposto_%0_come_posizione_nel_file_di_database_aperto. +Executing_command_\"%0\"...=Esegui_il_comando_\"%0\" +Error_occured_while_executing_the_command_\"%0\".=È_avvenuto_un_errore_eseguendo_il_comando_\"%0\". +Reformat_ISSN=Riformatta_ISSN + +Countries_and_territories_in_English=Paesi_e_territori_in_inglese +Electrical_engineering_terms=Termini_di_ingegneria_elettrica +Enabled=Abilitato +Internal_list=Lista_interna +Manage_protected_terms_files=Gestisci_file_di_termini_protetti +Months_and_weekdays_in_English=Mesi_e_giorni_in_inglese +The_text_after_the_last_line_starting_with_\#_will_be_used=Verrà_usato_il_testo_dopo_l'ultima_riga_che_comincia_con_\# +Add_protected_terms_file=Aggiungi_un_file_di_termini_protetti +Are_you_sure_you_want_to_remove_the_protected_terms_file?=Sei_sicuro_di_voler_rimuovere_il_file_di_termini_protetti? +Remove_protected_terms_file=Rimuovi_il_file_di_termini_protetti +Add_selected_text_to_list=Aggiungi_il_testo_selezionato_alla_lista +Add_{}_around_selected_text=Aggiungi_{}_intorno_al_testo_selezionato +Format_field=Campo_di_formattazione +New_protected_terms_file=Nuovo_file_di_termini_protetti +change_field_%0_of_entry_%1_from_%2_to_%3=modifica_il_campo_%0_della_voce_%1_da_%2_a_%3 +change_key_from_%0_to_%1=modifica_la_chiave_da_%0_a_%1 +change_string_content_%0_to_%1=modifica_il_contenuto_della_stringa_da_%0_a_%1 +change_string_name_%0_to_%1=modifica_il_nome_della_stringa_da_%0_a_%1 +change_type_of_entry_%0_from_%1_to_%2=modifica_il_tipo_della_voce_%0_da_%1_a_%2 +insert_entry_%0=inserisci_la_voce_%0 +insert_string_%0=inserisci_la_stringa_%0 +remove_entry_%0=rimuovi_la_voce_%0 +remove_string_%0=rimuovi_la_stringa_%0 +undefined=non_definito +Cannot_get_info_based_on_given_%0\:_%1=Non_trovo_informazioni_in_base_alla_data_%0\:_%1 +Get_BibTeX_data_from_%0=Preleva_i_dati_BibTeX_da_%0 +No_%0_found=Nessun_%0_trovato +Entry_from_%0=Voce_da_%0 +Merge_entry_with_%0_information=Accorpa_la_voce_con_l'informazione_%0 +Updated_entry_with_info_from_%0=Aggiornata_la_voce_con_l'informazione_da_%0 +Connection=Connessione +Connecting...=Connetto... +Host=Host +Port=Porta +Database=Database +User=Utente +Connect=Connetto +Connection_error=Errore_di_connessione +Connection_to_%0_server_established.=Connessione_al_server_%0_stabilita. +Required_field_"%0"_is_empty.=Il_campo_obbligatorio_"%0"_è_vuoto. +%0_driver_not_available.=Driver_%0_non_disponibile. +The_connection_to_the_server_has_been_terminated.=La_connessione_al_server_è_stata_interrotta. +Connection_lost.=Connessione_perduta. +Reconnect=Riconnetto +Work_offline=Lavora_senza_connessione +Working_offline.=Senza_connessione. +Update_refused.=Aggiornamento_rifiutato. +Update_refused=Aggiornamento_rifiutato +Local_entry=Voce_locale +Shared_entry=Voce_condivisa +Update_could_not_be_performed_due_to_existing_change_conflicts.=L'aggiornamento_non_è_stato_possibile_a_causa_di_un_conflitto_tra_modifiche. +You_are_not_working_on_the_newest_version_of_BibEntry.=Non_stai_usando_la_versione_più_recente_di_BibEntry. +Local_version\:_%0=Versione_locale\:_%0 +Shared_version\:_%0=Versione_condivisa\:_%0 +Please_merge_the_shared_entry_with_yours_and_press_"Merge_entries"_to_resolve_this_problem.=Accorpa_la_voce_condivisa_con_la_tua_e_premi_"Accorpa_voci"_per_risolvere_questo_problema. +Canceling_this_operation_will_leave_your_changes_unsynchronized._Cancel_anyway?=Cancellare_questa_operazione_lascerà_le_modifiche_non_sincronizzate._Cancella_comunque? +Shared_entry_is_no_longer_present=La_voce_condivisa_non_è_più_presente +The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side.=La_BibEntry_su_cui_stai_lavorando_è_stata_cancellata_dalla_parte_che_l'ha_condivisa. +You_can_restore_the_entry_using_the_"Undo"_operation.=Puoi_ripristinare_la_voce_usando_l'"Undo". +Remember_password?=Devo_ricordare_la_password? +You_are_already_connected_to_a_database_using_entered_connection_details.=Sei_già_connesso_ad_un_database_con_i_dettagli_di_connessione_specificati. + +Cannot_cite_entries_without_BibTeX_keys._Generate_keys_now?=Non_posso_citare_voci_senza_chiavi_BibTeX._Le_genero_ora? +New_technical_report=Nuovo_rapporto_tecnico + +%0_file=file_%0 +Custom_layout_file=File_di_layout_apposito +Protected_terms_file=File_di_termini_protetti +Style_file=File_stile + +Open_OpenOffice/LibreOffice_connection=Apri_connessione_OpenOffice/LibreOffice +You_must_enter_at_least_one_field_name=Devi_inserire_almeno_il_nome_di_un_campo +Non-ASCII_encoded_character_found=Trovato_un_carattere_non_codificato_ASCII +Toggle_web_search_interface=Inverti_la_selezione_dell'interfaccia_di_ricerca_web +Background_color_for_resolved_fields=Colore_di_sfondo_per_i_campi_risolti +Color_code_for_resolved_fields=Codice_di_colore_per_i_campi_risolti +%0_files_found=Trovati_%0_file +%0_of_%1=%0_di_%1 +One_file_found=Trovato_un_file +The_import_finished_with_warnings\:=L'importazione_è_terminata_con_degli_avvisi\: +There_was_one_file_that_could_not_be_imported.=Un_file_non_è_stato_importato. +There_were_%0_files_which_could_not_be_imported.=%0_file_non_sono_stati_importati. + +Migration_help_information=Informazioni_per_la_migrazione +Entered_database_has_obsolete_structure_and_is_no_longer_supported.=Il_database_selezionato_ha_una_struttura_obsoleta_e_non_è_più_supportato. +However,_a_new_database_was_created_alongside_the_pre-3.6_one.=Tuttavia_è_stato_creato_un_nuovo_database_oltre_a_quello_pre-3.6. +Click_here_to_learn_about_the_migration_of_pre-3.6_databases.=Clicca_qui_per_informazioni_sulla_migrazione_di_database_pre-3.6 +Opens_JabRef's_Facebook_page=Apri_la_pagina_Facebook_di_JabRef +Opens_JabRef's_blog=Apri_il_blog_di_JabRef +Opens_JabRef's_website=Apri_il_sito_web_di_JabRef +Opens_a_link_where_the_current_development_version_can_be_downloaded=Apri_un_collegamento_da_cui_scaricare_la_versione_di_sviluppo +See_what_has_been_changed_in_the_JabRef_versions=Vedi_cosa_è_cambiato_tra_le_versioni_di_JabRef +Referenced_BibTeX_key_does_not_exist=La_chiave_BibTeX_a_cui_ci_si_riferisce_non_esiste +Finished_downloading_full_text_document_for_entry_%0.=Lo_scaricamento_del_testo_completo_del_documento_della_voce_%0_è_terminato. +Full_text_document_download_failed_for_entry_%0.=Lo_scaricamento_del_testo_completo_del_documento_della_voce_%0_è_fallito +Look_up_full_text_documents=Cerca_documenti_completi +You_are_about_to_look_up_full_text_documents_for_%0_entries.=Stai_per_cercare_documenti_completi_per_la_voce_%0. +last_four_nonpunctuation_characters_should_be_numerals=gli_ultimi_quattro_caratteri_non_di_interpunzione_devono_essere_dei_numerali +shared=condiviso +should_contain_an_integer_or_a_literal=deve_contenere_almeno_un_intero_o_una_lettera +should_have_the_first_letter_capitalized=la_prima_lettera_deve_essere_maiuscola + +ID=ID +ID_type=Tipo_di_ID +ID-based_entry_generator=Generatore_di_voci_basato_su_ID +Fetcher_'%0'_did_not_find_an_entry_for_id_'%1'.=Il_collettore_'%0'_non_ha_trovato_una_voce_per_l'id_'%1' + +Select_first_entry=Seleziona_la_prima_voce +Select_last_entry=Seleziona_l'ultima_voce + +Invalid_ISBN\:_'%0'.=ISBN_invalido\:'%0' +should_be_an_integer_or_normalized=dovrebbe_essere_un_intero_o_normalizzato +should_be_normalized=dovrebbe_essere_normalizzato + +Empty_search_ID=ID_della_ricerca_vuoto +The_given_search_ID_was_empty.=L'ID_della_ricerca_usato_era_vuoto. +Copy_BibTeX_key_and_link=Copia_la_chiave_e_il_link_BibTeX +empty_BibTeX_key=chiave_BibTeX_vuota +BibLaTeX_field_only=campo_solo_BibLaTeX diff --git a/src/main/resources/l10n/JabRef_ja.properties b/src/main/resources/l10n/JabRef_ja.properties index fd90f9ebb46..bba42f918a9 100644 --- a/src/main/resources/l10n/JabRef_ja.properties +++ b/src/main/resources/l10n/JabRef_ja.properties @@ -1,4 +1,3 @@ - #! #! created/edited by Popeye version 0.55 (github.com/JabRef/popeye) #! encoding:UTF-8 @@ -17,12 +16,10 @@ %0_matches_the_term_%1=%0は項目%1に一致します -=<フィールド名> Could_not_find_file_'%0'
linked_from_entry_'%1'=項目「%1」からリンクされているファイル
「%0」を見つけることができませんでした = -= Abbreviate_journal_names_of_the_selected_entries_(ISO_abbreviation)=Kort_tijdschriftennamen_met_de_geselecteerde_entries_af_(ISO_afkorting) Abbreviate_journal_names_of_the_selected_entries_(MEDLINE_abbreviation)=Kort_tijdschriftennamen_met_de_geselecteerde_entries_af_(MEDLINE_afkorting) @@ -42,10 +40,10 @@ Action=Actie Add=Toevoegen -Add_a_(compiled)_custom_ImportFormat_class_from_a_class_path.=Voeg_een_(gecompileerde)_externe_ImportFormat_klasse_van_een_class_path_toe. +Add_a_(compiled)_custom_Importer_class_from_a_class_path.=Voeg_een_(gecompileerde)_externe_Importer_klasse_van_een_class_path_toe. The_path_need_not_be_on_the_classpath_of_JabRef.=Het_pad_moet_niet_in_het_classpath_van_JabRef_staan. -Add_a_(compiled)_custom_ImportFormat_class_from_a_ZIP-archive.=Voeg_een_(gecompileerde)_externe_ImportFormat_klasse_van_een_ZIP-archief_toe. +Add_a_(compiled)_custom_Importer_class_from_a_ZIP-archive.=Voeg_een_(gecompileerde)_externe_Importer_klasse_van_een_ZIP-archief_toe. The_ZIP-archive_need_not_be_on_the_classpath_of_JabRef.=Het_pad_moet_niet_in_het_classpath_van_JabRef_staan. Add_entry_selection_to_this_group=Voeg_entry_selectie_toe_aan_deze_groep @@ -82,7 +80,6 @@ All_subgroups_(recursively)=Alle_subgroepen_(recursief) Always_reformat_BIB_file_on_save_and_export= -An_exception_occurred_while_accessing_'%0'= A_SAX_exception_occurred_while_parsing_'%0'\:= and=en @@ -156,7 +153,7 @@ Backup_old_file_when_saving=Maak_reservekopie_van_oud_bestand_bij_het_opslaan BibTeX_key_is_unique.=BibTeX-sleutel_is_uniek -BibTeX_source=BibTeX-broncode +%0_source=%0-broncode Broken_link= @@ -665,13 +662,11 @@ Import_strings=Importeer_constanten Import_to_open_tab=Importeer_naar_open_tabblad -Import_word_selector_definitions=Importeer_woordselecteerder_definities - Imported_entries=Ge\u00efmporteerde_entries Imported_from_database=Ge\u00efmporteerd_van_database -ImportFormat_class=ImportFormat_Klasse +Importer_class=Importer_Klasse Importing=Aan_het_importeren @@ -760,8 +755,6 @@ Main_file_directory= Main_layout_file=Hoofd_layoutbestand -Manage=Beheren - Manage_custom_exports=Beheer_externe_exportfilters Manage_custom_imports=Beheer_externe_importfilters @@ -876,8 +869,6 @@ Nothing_to_redo=Niets_om_te_herstellen Nothing_to_undo=Niets_om_ongedaan_te_maken -Number_of_references_to_fetch?=Aantal_referenties_om_op_te_halen? - occurrences=voorkomens OK=OK @@ -982,6 +973,13 @@ Preferences=Instellingen Preferences_recorded.=Instellingen_opgeslagen. Preview=Voorbeeld +Citation_Style= +Current_Preview= +Bad_character_inside_entry= +Error_while_generating_citation_style= +Preview_style_changed_to\:_%0= +Next_preview_layout= +Previous_preview_layout= Previous_entry=Vorige_entry @@ -1005,7 +1003,7 @@ Redo=Herstellen Reference_database=Referentie_database -References_found=Referenties_gevonden +%0_references_found._Number_of_references_to_fetch?=Referenties_gevonden\:_%0._Aantal_referenties_om_op_te_halen? Refine_supergroup\:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup=Verfijn_supergroep\:_Wanneer_geselecteerd,_toon_de_entries_die_in_deze_groep_en_zijn_supergroep_zitten @@ -1101,8 +1099,6 @@ Save_failed=Opslaan_mislukt Save_failed_during_backup_creation=Opslaan_mislukt_tijdens_creatie_van_backup -Save_failed_while_committing_changes\:_%0=Opslaan_mislukt_bij_het_vastleggen_van_veranderingen\:_%0 - Save_selected_as...=Sla_geselecteerde_op_als_... Saved_database=Database_opgeslagen @@ -1153,7 +1149,7 @@ Settings=Instellingen Shortcut=Snelkoppeling -Show/edit_BibTeX_source=Toon/bewerk_BibTeX-broncode +Show/edit_%0_source=Toon/bewerk_%0-broncode Show_'Firstname_Lastname'=Toon_'Voornaam_Familienaam' @@ -1175,7 +1171,7 @@ Show_icons_for_groups=Toon_iconen_voor_groepen Show_last_names_only=Toon_enkel_laatste_namen Show_names_unchanged=Toon_namen_onveranderd - + Show_optional_fields=Toon_optionele_velden Show_required_fields=Toon_vereiste_velden @@ -1324,9 +1320,6 @@ Unmark_entries=Alle_markeringen_van_entries_ongedaan_maken Unmark_entry=Markering_van_entry_ongedaan_maken - - - untitled=naamloos Up=Omhoog @@ -1421,6 +1414,7 @@ Fetching_Medline_by_term...= Please_enter_a_valid_number= Please_enter_a_comma_separated_list_of_Medline_IDs_(numbers)_or_search_terms.= Show_search_results_in_a_window= +Search_in_all_open_databases= Move_file_to_file_directory?= Rename_to_'%0'= You_have_changed_the_menu_and_label_font_size.= @@ -1716,7 +1710,6 @@ Five_stars= Four_stars= Help_on_special_fields= Keywords_of_selected_entries= -Manage_content_selectors= Manage_keywords= No_priority_information= No_rank_information= @@ -1773,8 +1766,6 @@ Add_{}_to_specified_title_words_on_search_to_keep_the_correct_case= Import_conversions= Please_enter_a_search_string= Please_open_or_start_a_new_database_before_searching= -An_error_occurred_while_fetching_from_ADS_(%0)\:= -An_error_occurred_while_parsing_abstract= Log= Canceled_merging_entries= @@ -1831,7 +1822,6 @@ Move_to_group= Clear_read_status= Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')= -Could_not_apply_changes.= Deprecated_fields= Hide/show_toolbar= No_read_status_information= @@ -1896,7 +1886,6 @@ Modified_groups_tree= Removed_all_groups= Accepting_the_change_replaces_the_complete_groups_tree_with_the_externally_modified_groups_tree.= Select_export_format= -Export_with_selected_format= Return_to_JabRef= Please_move_the_file_manually_and_link_in_place.= Could_not_connect_to_%0= @@ -1923,13 +1912,12 @@ Copy_BibTeX_key_and_title=Kopieer_BibTeX_sleutel_en_titel File_rename_failed_for_%0_entries.= To_set_up,_go_to=Om_in_te_stellen,_ga_naar Merged_BibTeX_source_code= -'%0'_is_not_a_valid_ADS_bibcode.= Invalid_DOI\:_'%0'.=Ongeldig_DOI\:_'%0'. should_start_with_a_name= should_end_with_a_name= unexpected_closing_curly_bracket= unexpected_opening_curly_bracket= -large_capitals_are_not_masked_using_curly_brackets_{}= +capital_letters_are_not_masked_using_curly_brackets_{}= should_contain_a_four_digit_number= should_contain_a_valid_page_number_range= Filled= @@ -1949,7 +1937,6 @@ This_search_contains_entries_in_which_any_field_contains_the_term_%0= This_search_contains_entries_in_which= An_autosave_file_was_found_for_this_database._This_could_indicate_that_JabRef_did_not_shut_down_cleanly_last_time_the_file_was_used.= -Note\:_A_full_text_search_is_currently_not_supported_for_%0= Unable_to_autodetect_OpenOffice/LibreOffice_installation._Please_choose_the_installation_directory_manually.= JabRef_no_longer_supports_'ps'_or_'pdf'_fields.
File_links_are_now_stored_in_the_'file'_field_and_files_are_stored_in_an_external_file_directory.
To_make_use_of_this_feature,_JabRef_needs_to_upgrade_file_links.

= This_database_uses_outdated_file_links.= @@ -1989,7 +1976,6 @@ Resolve_duplicate_BibTeX_keys= Save_all= String_dialog,_add_string= String_dialog,_remove_string= -Switch_preview_layout= Synchronize_files= Unabbreviate= should_contain_a_protocol= @@ -2157,8 +2143,6 @@ OpenOffice/LibreOffice_integration= incorrect_control_digit= incorrect_format= - - Copy_version_to_clipboard= Copied_version_to_clipboard= @@ -2234,7 +2218,6 @@ Database= User= Connect=Verbinden Connection_error= -Driver_error= Connection_to_%0_server_established.= Required_field_"%0"_is_empty.= %0_driver_not_available.= @@ -2253,8 +2236,12 @@ Local_version\:_%0= Shared_version\:_%0= Please_merge_the_shared_entry_with_yours_and_press_"Merge_entries"_to_resolve_this_problem.= Canceling_this_operation_will_leave_your_changes_unsynchronized._Cancel_anyway?= -The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side._Hit_"Keep"_to_recover_the_entry.= +Shared_entry_is_no_longer_present= +The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side.= +You_can_restore_the_entry_using_the_"Undo"_operation.= Remember_password?= +You_are_already_connected_to_a_database_using_entered_connection_details.= + Cannot_cite_entries_without_BibTeX_keys._Generate_keys_now?= New_technical_report= @@ -2303,6 +2290,12 @@ Fetcher_'%0'_did_not_find_an_entry_for_id_'%1'.= Select_first_entry= Select_last_entry= -Search_in_all_open_databases= - Invalid_ISBN\:_'%0'.= +should_be_an_integer_or_normalized= +should_be_normalized= + +Empty_search_ID= +The_given_search_ID_was_empty.= +Copy_BibTeX_key_and_link= +empty_BibTeX_key= +BibLaTeX_field_only= diff --git a/src/main/resources/l10n/JabRef_no.properties b/src/main/resources/l10n/JabRef_no.properties index 62c8c8a338f..7e1b78cb53c 100644 --- a/src/main/resources/l10n/JabRef_no.properties +++ b/src/main/resources/l10n/JabRef_no.properties @@ -16,12 +16,10 @@ %0_matches_the_term_%1=%0_matcher_uttrykket_%1 -= Could_not_find_file_'%0'
linked_from_entry_'%1'=Kunne_ikke_finne_filen_'%0'
linket_fra_enheten_'%1' = -= Abbreviate_journal_names_of_the_selected_entries_(ISO_abbreviation)=Abreviar_nomes_de_periódicos_das_referências_selecionadas_(abreviação_ISO) Abbreviate_journal_names_of_the_selected_entries_(MEDLINE_abbreviation)=Abreviar_nomes_de_periódicos_das_referências_selecionadas_(abreviação_MEDLINE) @@ -42,10 +40,10 @@ Action=Ação Add=Adicionar -Add_a_(compiled)_custom_ImportFormat_class_from_a_class_path.=Adicionar_uma_classe_ImportFormat_customizada_(compilada)_a_partir_de_um_classpath. +Add_a_(compiled)_custom_Importer_class_from_a_class_path.=Adicionar_uma_classe_Importer_customizada_(compilada)_a_partir_de_um_classpath. The_path_need_not_be_on_the_classpath_of_JabRef.=O_caminho_não_precisa_estar_no_classpath_do_JabRef. -Add_a_(compiled)_custom_ImportFormat_class_from_a_ZIP-archive.=Adicionar_uma_classe_ImportFormat_customizada_(compilada)_a_partir_de_um_arquivo_zip. +Add_a_(compiled)_custom_Importer_class_from_a_ZIP-archive.=Adicionar_uma_classe_Importer_customizada_(compilada)_a_partir_de_um_arquivo_zip. The_ZIP-archive_need_not_be_on_the_classpath_of_JabRef.=O_arquivo_zip_não_precisa_estar_no_classpath_do_JabRef. Add_entry_selection_to_this_group=Adicionar_referências_selecionadas_a_um_grupo @@ -82,7 +80,6 @@ All_subgroups_(recursively)=Todos_os_subgrupos_(recursivamente) Always_reformat_BIB_file_on_save_and_export= -An_exception_occurred_while_accessing_'%0'=Uma_exceção_ocorreu_durante_ao_acesso_a_'%0' A_SAX_exception_occurred_while_parsing_'%0'\:=Uma_exceção_ocorreu_durante_a_análise_de_'%0' and=e @@ -156,7 +153,7 @@ Backup_old_file_when_saving=Criar_uma_cópia_de_segurança_do_arquivo_antigo_qua BibTeX_key_is_unique.=A_chave_BibTeX_é_única. -BibTeX_source=Fonte_BibTeX +%0_source=Fonte_%0 Broken_link=Link_quebrado @@ -665,13 +662,11 @@ Import_strings=Importar_strings Import_to_open_tab=Importar_para_abrir_aba -Import_word_selector_definitions=Importar_definições_de_seleção_de_palavra - Imported_entries=Referências_importadas Imported_from_database=Importado_a_partir_da_base_de_dados -ImportFormat_class=Classe_ImportFormat +Importer_class=Classe_Importer Importing=Importando @@ -760,8 +755,6 @@ Main_file_directory=Diretório_de_arquivos_principal Main_layout_file=Arquivo_de_leiaute_principal -Manage=Gerenciar - Manage_custom_exports=Gerenciar_exportações_personalizadas Manage_custom_imports=Gerenciar_importações_personalizadas @@ -876,8 +869,6 @@ Nothing_to_redo=Nada_para_refazer Nothing_to_undo=Nada_para_desfazer -Number_of_references_to_fetch?=Números_de_referências_para_recuperar? - occurrences=ocorrências OK=Ok @@ -982,6 +973,13 @@ Preferences=Preferências Preferences_recorded.=Preferências_salvas. Preview=Previsualização +Citation_Style= +Current_Preview= +Bad_character_inside_entry= +Error_while_generating_citation_style= +Preview_style_changed_to\:_%0= +Next_preview_layout= +Previous_preview_layout= Previous_entry=Referência_anterior @@ -1005,7 +1003,7 @@ Redo=Refazer Reference_database=Base_de_dados_de_referência -References_found=Referências_encontradas +%0_references_found._Number_of_references_to_fetch?=Referências_encontradas\:_%0._Números_de_referências_para_recuperar? Refine_supergroup\:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup=Refinar_supergrupo\:_Quando_selecionado,_visualiza_referências_contidas_em_ambos_os_grupos_e_seu_supergrupo. @@ -1101,8 +1099,6 @@ Save_failed=Falha_ao_salvar Save_failed_during_backup_creation=Falha_ao_salvar_durante_a_criação_do_backup -Save_failed_while_committing_changes\:_%0=Falha_ao_salvar_durante_o_armazenamento_das_mudanças\:_%0 - Save_selected_as...=Salvar_selecionados_como... Saved_database=Base_de_dados_salva @@ -1153,7 +1149,7 @@ Settings=Configurações Shortcut=Atalho -Show/edit_BibTeX_source=Exibir/editar_fonte_BibTeX +Show/edit_%0_source=Exibir/editar_fonte_%0 Show_'Firstname_Lastname'=Exibir_'Nome,_Sobrenome' @@ -1175,7 +1171,7 @@ Show_icons_for_groups=Exibir_ícones_para_grupos Show_last_names_only=Exibir_apenas_últimos_nomes Show_names_unchanged=Exibir_nomes_não_modificados - + Show_optional_fields=Exibir_campos_opcionais Show_required_fields=Exibir_campos_obrigatórios @@ -1324,7 +1320,6 @@ Unmark_entries=Desmarcar_referências Unmark_entry=Desmarcar_referência - untitled=Sem_título Up=Acima @@ -1419,6 +1414,7 @@ Fetching_Medline_by_term...=Recuperando_do_Medline_por_termo... Please_enter_a_valid_number=Por_favor,_digite_um_número_válido Please_enter_a_comma_separated_list_of_Medline_IDs_(numbers)_or_search_terms.=Por_favor,_digite_uma_lista_separada_por_vírgulas_de_IDs_ou_termos_de_busca_Medline. Show_search_results_in_a_window=Exibir_resultados_de_busca_em_uma_janela +Search_in_all_open_databases= Move_file_to_file_directory?=Mover_arquivo_para_o_diretório_de_arquivos? Rename_to_'%0'=Renomear_para_'%0' You_have_changed_the_menu_and_label_font_size.=Você_alterou_o_menu_e_tamanho_de_fonte_dos_rótulos. @@ -1714,7 +1710,6 @@ Five_stars=Cinco_estrelas Four_stars=Quatro_estrelas Help_on_special_fields=Ajuda_com_campos_especiais Keywords_of_selected_entries=Palavras-chave_das_entradas_selecionadas -Manage_content_selectors=Gerenciar_seletores_de_conteúdo Manage_keywords=Gerenciar_palavras-chave No_priority_information=Sem_informações_de_prioridade No_rank_information=Sem_informações_de_classificação @@ -1771,8 +1766,6 @@ Add_{}_to_specified_title_words_on_search_to_keep_the_correct_case=Adicione_{}_ Import_conversions=Importar_conversões Please_enter_a_search_string=Favor_digitar_uma_string_de_busca Please_open_or_start_a_new_database_before_searching=Por_favor,_abra_ou_inicie_uma_base_de_dados_antes_de_realizar_a_busca -An_error_occurred_while_fetching_from_ADS_(%0)\:=Um_Erro_ocorreu_enquanto_pensquisando_a_partir_do_ADS_(%0)\: -An_error_occurred_while_parsing_abstract=Um_erro_ocorreu_durante_a_interpretação_do_abstract_(resumo) Log=Log Canceled_merging_entries=União_das_referências_cancelada @@ -1829,7 +1822,6 @@ Move_to_group=Mover_para_grupo Clear_read_status=Limpar_status_de_leitura Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=Converter_para_o_formato_Biblatex_(por_exemplo,_mude_o_valor_do_campo_'journal'_para_'journaltitle') -Could_not_apply_changes.=Não_foi_possível_realizar_as_mudanças. Deprecated_fields=Campo_em_desuso Hide/show_toolbar=Mostrar/esconder_barra_de_ferramentas No_read_status_information=Sem_informação_sobre_status_da_leitura @@ -1894,7 +1886,6 @@ Modified_groups_tree= Removed_all_groups= Accepting_the_change_replaces_the_complete_groups_tree_with_the_externally_modified_groups_tree.= Select_export_format= -Export_with_selected_format=Exportar_com_formato_selecionado Return_to_JabRef= Please_move_the_file_manually_and_link_in_place.= Could_not_connect_to_%0=Não_foi_possível_conectar_a_%0 @@ -1921,13 +1912,12 @@ Copy_BibTeX_key_and_title=Copiar_chave_BibTeX_e_título File_rename_failed_for_%0_entries.= To_set_up,_go_to=Para_configurar,_acesse_o_menu Merged_BibTeX_source_code= -'%0'_is_not_a_valid_ADS_bibcode.= Invalid_DOI\:_'%0'.=DOI_inválida\:_'%0'. should_start_with_a_name= should_end_with_a_name= unexpected_closing_curly_bracket= unexpected_opening_curly_bracket= -large_capitals_are_not_masked_using_curly_brackets_{}= +capital_letters_are_not_masked_using_curly_brackets_{}= should_contain_a_four_digit_number= should_contain_a_valid_page_number_range= Filled= @@ -1947,7 +1937,6 @@ This_search_contains_entries_in_which_any_field_contains_the_term_%0= This_search_contains_entries_in_which= An_autosave_file_was_found_for_this_database._This_could_indicate_that_JabRef_did_not_shut_down_cleanly_last_time_the_file_was_used.= -Note\:_A_full_text_search_is_currently_not_supported_for_%0= Unable_to_autodetect_OpenOffice/LibreOffice_installation._Please_choose_the_installation_directory_manually.= JabRef_no_longer_supports_'ps'_or_'pdf'_fields.
File_links_are_now_stored_in_the_'file'_field_and_files_are_stored_in_an_external_file_directory.
To_make_use_of_this_feature,_JabRef_needs_to_upgrade_file_links.

= This_database_uses_outdated_file_links.= @@ -1987,7 +1976,6 @@ Resolve_duplicate_BibTeX_keys= Save_all=Salvar_todos String_dialog,_add_string= String_dialog,_remove_string= -Switch_preview_layout= Synchronize_files=Sincronizar_arquivos Unabbreviate=Reverter_abreviações should_contain_a_protocol= @@ -2155,8 +2143,6 @@ OpenOffice/LibreOffice_integration= incorrect_control_digit= incorrect_format= - - Copy_version_to_clipboard= Copied_version_to_clipboard= @@ -2232,7 +2218,6 @@ Database= User= Connect=Conectar Connection_error= -Driver_error= Connection_to_%0_server_established.= Required_field_"%0"_is_empty.= %0_driver_not_available.= @@ -2251,8 +2236,12 @@ Local_version\:_%0= Shared_version\:_%0= Please_merge_the_shared_entry_with_yours_and_press_"Merge_entries"_to_resolve_this_problem.= Canceling_this_operation_will_leave_your_changes_unsynchronized._Cancel_anyway?= -The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side._Hit_"Keep"_to_recover_the_entry.= +Shared_entry_is_no_longer_present= +The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side.= +You_can_restore_the_entry_using_the_"Undo"_operation.= Remember_password?= +You_are_already_connected_to_a_database_using_entered_connection_details.= + Cannot_cite_entries_without_BibTeX_keys._Generate_keys_now?= New_technical_report= @@ -2301,6 +2290,12 @@ Fetcher_'%0'_did_not_find_an_entry_for_id_'%1'.= Select_first_entry= Select_last_entry= -Search_in_all_open_databases= - Invalid_ISBN\:_'%0'.= +should_be_an_integer_or_normalized= +should_be_normalized= + +Empty_search_ID= +The_given_search_ID_was_empty.= +Copy_BibTeX_key_and_link= +empty_BibTeX_key= +BibLaTeX_field_only= diff --git a/src/main/resources/l10n/JabRef_ru.properties b/src/main/resources/l10n/JabRef_ru.properties index fb93523eba1..566269fe4f1 100644 --- a/src/main/resources/l10n/JabRef_ru.properties +++ b/src/main/resources/l10n/JabRef_ru.properties @@ -16,12 +16,10 @@ %0_matches_the_term_%1=%0_соответствует_условию_%1 -=<имя_поля> Could_not_find_file_'%0'
linked_from_entry_'%1'=Не_обнаружен_файл_'%0'
по_ссылке_из_записи_'%1' = -= Abbreviate_journal_names_of_the_selected_entries_(ISO_abbreviation)=Förkorta_tidskriftsnamnen_för_valda_poster_(ISO-förkortningar) Abbreviate_journal_names_of_the_selected_entries_(MEDLINE_abbreviation)=Förkorta_tidskriftsnamnen_för_valda_poster_(MEDLINE-förkortningar) @@ -42,10 +40,10 @@ Action=Händelse Add=Lägg_till -Add_a_(compiled)_custom_ImportFormat_class_from_a_class_path.=Lägg_till_en_(kompilerad)_ImportFormat-klass_från_en_sökväg_till_en_klass. +Add_a_(compiled)_custom_Importer_class_from_a_class_path.=Lägg_till_en_(kompilerad)_Importer-klass_från_en_sökväg_till_en_klass. The_path_need_not_be_on_the_classpath_of_JabRef.= -Add_a_(compiled)_custom_ImportFormat_class_from_a_ZIP-archive.=Lägg_till_en_(kompilerad)_ImportFormat-klass_från_en_zip-fil. +Add_a_(compiled)_custom_Importer_class_from_a_ZIP-archive.=Lägg_till_en_(kompilerad)_Importer-klass_från_en_zip-fil. The_ZIP-archive_need_not_be_on_the_classpath_of_JabRef.= Add_entry_selection_to_this_group=Lägg_till_valda_poster_till_denna_grupp @@ -82,7 +80,6 @@ All_subgroups_(recursively)=Alla_undergrupper_(rekursivt) Always_reformat_BIB_file_on_save_and_export=Formattera_alltid_om_BIB-filen_vid_när_den_sparas_eller_exporteras -An_exception_occurred_while_accessing_'%0'=Ett_undantag_inträffade_när_'%0'_accessades A_SAX_exception_occurred_while_parsing_'%0'\:=Ett_SAX-undantag_inträffade_när_'%0'_tolkades\: and=och @@ -156,7 +153,7 @@ Backup_old_file_when_saving=Skapa_en_säkerhetskopia_av_den_gamla_filen_vid_spar BibTeX_key_is_unique.=BibTeX-nyckeln_är_unik. -BibTeX_source=BibTeX-källkod +%0_source=%0_källkod Broken_link=Trasig_länk @@ -665,13 +662,11 @@ Import_strings=Importera_strängar Import_to_open_tab=Importera_till_öppen_flik -Import_word_selector_definitions= - Imported_entries=Importerade_poster Imported_from_database=Importerade_från_databas -ImportFormat_class=ImportFormat-klass +Importer_class=Importer-klass Importing=Importerar @@ -760,8 +755,6 @@ Main_file_directory=Huvudmapp_för_filer Main_layout_file=Huvudfil_för_layout -Manage=Hantera - Manage_custom_exports=Hantera_egna_exporterare Manage_custom_imports=Hantera_egna_importerare @@ -876,8 +869,6 @@ Nothing_to_redo=Inget_att_göra_om. Nothing_to_undo=Inget_att_ångra. -Number_of_references_to_fetch?=Antal_referenser_som_ska_hämtas? - occurrences=förekomster OK=OK @@ -982,6 +973,13 @@ Preferences=Inställningar Preferences_recorded.=Inställningar_sparade. Preview=Postvisning +Citation_Style= +Current_Preview= +Bad_character_inside_entry= +Error_while_generating_citation_style= +Preview_style_changed_to\:_%0= +Next_preview_layout= +Previous_preview_layout= Previous_entry=Föregående_post @@ -1005,7 +1003,7 @@ Redo=Gör_igen Reference_database=Referensdatabas -References_found=Referenser_hittade +%0_references_found._Number_of_references_to_fetch?=Referenser_hittade\:_%0._Antal_referenser_som_ska_hämtas? Refine_supergroup\:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup= @@ -1101,8 +1099,6 @@ Save_failed=Sparningen_misslyckades Save_failed_during_backup_creation=Sparningen_misslyckades_när_säkerhetskopian_skulle_skapas -Save_failed_while_committing_changes\:_%0= - Save_selected_as...=Spara_valda_som_... Saved_database=Sparade_databas @@ -1153,7 +1149,7 @@ Settings=Alternativ Shortcut=Genväg -Show/edit_BibTeX_source=Visa/ändra_BibTeX-källkod +Show/edit_%0_source=Visa/Ändra_%0-källkod Show_'Firstname_Lastname'=Visa_som_'Förnamn_Efternamn' @@ -1175,7 +1171,7 @@ Show_icons_for_groups=Visa_ikoner_för_grupper Show_last_names_only=Visa_bara_efternamn Show_names_unchanged=Visa_namnen_som_de_är - + Show_optional_fields=Visa_valfria_fält Show_required_fields=Visa_obligatoriska_fält @@ -1284,8 +1280,6 @@ This_entry_type_cannot_be_removed.=Denna_posttyp_kan_inte_tas_bort. This_external_link_is_of_the_type_'%0',_which_is_undefined._What_do_you_want_to_do?=Den_här_externa_länken_är_av_typen_'%0',_som_är_odefinierad._Vad_vill_du_göra? -This_feature_generates_a_new_database_based_on_which_entries_are_needed_in_an_existing_LaTeX_document.= -This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instance_of_JabRef
instead_of_opening_a_new_instance._For_instance,_this_is_useful_when_you_open_a_file_in_JabRef
from_your_web_browser.
Note_that_this_will_prevent_you_from_running_more_than_one_instance_of_JabRef_at_a_time.= This_group_contains_entries_based_on_manual_assignment._Entries_can_be_assigned_to_this_group_by_selecting_them_then_using_either_drag_and_drop_or_the_context_menu._Entries_can_be_removed_from_this_group_by_selecting_them_then_using_the_context_menu.= This_group_contains_entries_whose_%0_field_contains_the_keyword_%1=Denna_grupp_innehåller_poster_där_fältet_%0_innehåller_nyckelordet_%1 @@ -1326,13 +1320,8 @@ Unmark_entries=Avmarkera_poster Unmark_entry=Avmarkera_post - untitled=namnlös -Unmarked_all_%0_selected_entries=Avmarkerade_alla_%0_valda_poster -Unmarked_all_entries=Avmarkerade_alla_poster -Unmarked_selected_entry=Avmarkerade_valda_poster -Unselect_all= Up=Uppåt Update_to_current_column_widths=Uppdatera_till_aktuella_kolumnbredder @@ -1425,6 +1414,7 @@ Fetching_Medline_by_term...=Hämta_från_Medline_med_sökterm... Please_enter_a_valid_number=Ange_ett_giltigt_tal Please_enter_a_comma_separated_list_of_Medline_IDs_(numbers)_or_search_terms.= Show_search_results_in_a_window=Visa_sökresultaten_i_ett_fönster +Search_in_all_open_databases= Move_file_to_file_directory?=Flytta_fil_till_filmapp? Rename_to_'%0'=Byt_namn_till_'%0' You_have_changed_the_menu_and_label_font_size.= @@ -1439,6 +1429,8 @@ BibTeX_key_generator=BibTeX-nyckelgenerator Unable_to_open_link.=Kan_inte_öppna_länk. Move_the_keyboard_focus_to_the_entry_table=Flytta_tangentbordsfokus_till_tabellen MIME_type=MIME-typ + +This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instance_of_JabRef
instead_of_opening_a_new_instance._For_instance,_this_is_useful_when_you_open_a_file_in_JabRef
from_your_web_browser.
Note_that_this_will_prevent_you_from_running_more_than_one_instance_of_JabRef_at_a_time.= Run_fetcher,_e.g._"--fetch\=Medline\:cancer"= The_ACM_Digital_Library=ACMs_digitala_bibliotek @@ -1641,6 +1633,7 @@ JabRef_includes_a_built-in_list_of_journal_abbreviations.=JabRef_har_en_inbyggd_ You_must_select_either_a_valid_style_file,_or_use_one_of_the_default_styles.=Du_måste_antingen_välja_en_giltig_stilfil_eller_använda_en_av_standardstilarna. This_is_a_simple_copy_and_paste_dialog._First_load_or_paste_some_text_into_the_text_input_area.
After_that,_you_can_mark_text_and_assign_it_to_a_BibTeX_field.= +This_feature_generates_a_new_database_based_on_which_entries_are_needed_in_an_existing_LaTeX_document.= You_need_to_select_one_of_your_open_databases_from_which_to_choose_entries,_as_well_as_the_AUX_file_produced_by_LaTeX_when_compiling_your_document.= First_select_entries_to_clean_up.=Välj_först_de_poster_som_du_vill_städa_upp. @@ -1682,6 +1675,7 @@ Unable_to_clear_preferences.=Kan_inte_rensa_inställningar. Reset_preferences_(key1,key2,..._or_'all')=Återställ_inställningar_(nyckel1,nyckel2,..._eller_'all') Find_unlinked_files=Hitta_olänkade_filer +Unselect_all= Expand_all=Expandera_alla Collapse_all=Fäll_ihop_alla Opens_the_file_browser.=Öppnar_filbläddraren @@ -1716,7 +1710,6 @@ Five_stars=Fem_stjärnor Four_stars=Fyra_stjärnor Help_on_special_fields=Hjälp_för_specialfält Keywords_of_selected_entries=Nyckelord_för_valda_poster -Manage_content_selectors=Hantera_innehållsväljare Manage_keywords=Hantera_nyckelord No_priority_information=Ingen_prioritetsinformation No_rank_information=Ingen_rankinginformation @@ -1773,8 +1766,6 @@ Add_{}_to_specified_title_words_on_search_to_keep_the_correct_case=Lägg_till_{} Import_conversions=Konverteringar_vid_import Please_enter_a_search_string=Ange_en_söksträng Please_open_or_start_a_new_database_before_searching=Öppna_eller_skapa_en_ny_databas_innan_sökning. -An_error_occurred_while_fetching_from_ADS_(%0)\:=Ett_fel_inträffade_vid_hämtning_från_ADS_(%0)\: -An_error_occurred_while_parsing_abstract=Ett_fel_inträffade_när_sammanfattningen_tolkades Log=Logg Canceled_merging_entries=Avbröt_sammanslagning_av_poster @@ -1831,7 +1822,6 @@ Move_to_group=Flytta_till_grupp Clear_read_status=Rensa_lässtatus Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')=Konvertera_till_BibLatex-format_(t._ex._genom_att_flytta_data_från_'journal'-fältet_till_'journaltitle'-fältet) -Could_not_apply_changes.=Kunde_inte_tillämpa_inte_ändringar. Deprecated_fields= Hide/show_toolbar=Dölj/visa_verktygslist No_read_status_information=Ingen_information_om_lässtatus @@ -1851,9 +1841,13 @@ Table_row_height_padding=Extra_höjd_på_tabellrader Marked_selected_entry=Markerade_vald_post Marked_all_%0_selected_entries=Markerade_alla_%0_valda_poster +Unmarked_selected_entry=Avmarkerade_valda_poster +Unmarked_all_%0_selected_entries=Avmarkerade_alla_%0_valda_poster Toggle_print_status=Växla_utskriftsstatus +Unmarked_all_entries=Avmarkerade_alla_poster + Unable_to_find_the_requested_look_and_feel_and_thus_the_default_one_is_used.= Opens_JabRef's_GitHub_page=Öppnar_JabRefs_GitHub-sida @@ -1861,7 +1855,6 @@ Could_not_open_browser.=Kunde_inte_öppna_webbläsaren. Please_open_%0_manually.=Öppna_%0_för_hand. The_link_has_been_copied_to_the_clipboard.=Länken_har_kopierats_till_urklipp. - Open_%0_file=Öppna_%0-fil Cannot_delete_file=Kan_inte_radera_fil @@ -1893,7 +1886,6 @@ Modified_groups_tree=Modifierade_gruppträd Removed_all_groups=Tog_bort_alla_grupper Accepting_the_change_replaces_the_complete_groups_tree_with_the_externally_modified_groups_tree.=Om_ändringarna_accepteras_så_kommer_hela_gruppträdet_att_ersättas_av_det_externt_ändrade_gruppträdet. Select_export_format= -Export_with_selected_format=Exportera_med_valt_format Return_to_JabRef=Återgå_till_JabRef Please_move_the_file_manually_and_link_in_place.= Could_not_connect_to_%0=Kunde_inte_ansluta_till_%0 @@ -1920,13 +1912,12 @@ Copy_BibTeX_key_and_title=Kopiera_BibTeX-nyckel_och_titel File_rename_failed_for_%0_entries.=Döpa_om_filen_misslyckades_för_%0_poster. To_set_up,_go_to=För_att_ställa_in,_gå_till Merged_BibTeX_source_code=Kombinerad_BibTeX-källkod -'%0'_is_not_a_valid_ADS_bibcode.='%0'_är_inte_en_giltig_ADS-bibkod. Invalid_DOI\:_'%0'.=Ogiltig_DOI\:_'%0'. should_start_with_a_name=ska_börja_med_ett_namn should_end_with_a_name=ska_avslutas_med_ett_namn unexpected_closing_curly_bracket=oväntad_avslutande_måsvinge unexpected_opening_curly_bracket=oväntad_startande_måsvinge -large_capitals_are_not_masked_using_curly_brackets_{}=stora_bokstäver_är_inte_skyddade_med_måsvingar_{} +capital_letters_are_not_masked_using_curly_brackets_{}=stora_bokstäver_är_inte_skyddade_med_måsvingar_{} should_contain_a_four_digit_number=ska_innehålla_ett_fyrsiffrigt_tal should_contain_a_valid_page_number_range=ska_innehålla_ett_giltligt_sidintervall Filled=Fyllde @@ -1946,7 +1937,6 @@ This_search_contains_entries_in_which_any_field_contains_the_term_%0=Denn This_search_contains_entries_in_which=Denna_sökning_innehåller_poster_där An_autosave_file_was_found_for_this_database._This_could_indicate_that_JabRef_did_not_shut_down_cleanly_last_time_the_file_was_used.=En_automatiskt_sparad_fil_hittades_för_databasen._Det_kan_betyda_att_JabRef_inte_avslutades_korrekt_senaste_gången_databasen_användes. -Note\:_A_full_text_search_is_currently_not_supported_for_%0= Unable_to_autodetect_OpenOffice/LibreOffice_installation._Please_choose_the_installation_directory_manually.=Kan_inte_hitta_OpenOffice/LibreOffice._Ställ_in_sökvägar_manuellt. JabRef_no_longer_supports_'ps'_or_'pdf'_fields.
File_links_are_now_stored_in_the_'file'_field_and_files_are_stored_in_an_external_file_directory.
To_make_use_of_this_feature,_JabRef_needs_to_upgrade_file_links.

= This_database_uses_outdated_file_links.=Denna_databas_använder_utdaterade_fillänkar. @@ -1986,7 +1976,6 @@ Resolve_duplicate_BibTeX_keys=Hantera_BibTeX-nyckeldubbletter Save_all=Spara_alla String_dialog,_add_string=Strängdialog,_lägg_till_sträng String_dialog,_remove_string=Strängdialog,_ta_bort_sträng -Switch_preview_layout=Byt_postvisningsstil Synchronize_files=Synkronisera_filer Unabbreviate=Expandera_förkortning should_contain_a_protocol=ska_innehålla_ett_protokoll @@ -2154,8 +2143,6 @@ OpenOffice/LibreOffice_integration=OpenOffice/LibreOffice-integration incorrect_control_digit=felaktig_kontrollsiffra incorrect_format=felaktigit_format - - Copy_version_to_clipboard=Kopiera_version_till_urklipp Copied_version_to_clipboard=Kopierade_version_till_urklipp @@ -2231,7 +2218,6 @@ Database=Databas User=Användare Connect=Anslut Connection_error=Anslutningsfel -Driver_error= Connection_to_%0_server_established.=Anslutning_till_%0-server_skapades. Required_field_"%0"_is_empty.=Det_obligatoriska_fältet_"%0"_är_tomt. %0_driver_not_available.= @@ -2250,8 +2236,12 @@ Local_version\:_%0=Lokal_version\:_%0 Shared_version\:_%0=Delad_version\:_%0 Please_merge_the_shared_entry_with_yours_and_press_"Merge_entries"_to_resolve_this_problem.= Canceling_this_operation_will_leave_your_changes_unsynchronized._Cancel_anyway?=Om_denna_operation_avbryts_kommer_din_ändringar_ej_bli_synkroniserade._Avbryt_ändå? -The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side._Hit_"Keep"_to_recover_the_entry.=Posten_du_arbetar_med_har_tagits_bort_från_den_delade_databasen,_Tryck_"Behåll"_för_att_återskapa_posten. +Shared_entry_is_no_longer_present= +The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side.=Posten_du_arbetar_med_har_tagits_bort_från_den_delade_databasen. +You_can_restore_the_entry_using_the_"Undo"_operation.= Remember_password?=Kom_ihåg_lösenord? +You_are_already_connected_to_a_database_using_entered_connection_details.= + Cannot_cite_entries_without_BibTeX_keys._Generate_keys_now?=Kan_inte_citera_poster_utan_BibTeX-nycklar._Generera_nycklar_nu? New_technical_report=Ny_teknisk_rapport @@ -2300,6 +2290,12 @@ Fetcher_'%0'_did_not_find_an_entry_for_id_'%1'.= Select_first_entry= Select_last_entry= -Search_in_all_open_databases= - Invalid_ISBN\:_'%0'.= +should_be_an_integer_or_normalized= +should_be_normalized= + +Empty_search_ID= +The_given_search_ID_was_empty.= +Copy_BibTeX_key_and_link= +empty_BibTeX_key= +BibLaTeX_field_only= diff --git a/src/main/resources/l10n/JabRef_tr.properties b/src/main/resources/l10n/JabRef_tr.properties index 0fbd55262ca..0f40f82ba7b 100644 --- a/src/main/resources/l10n/JabRef_tr.properties +++ b/src/main/resources/l10n/JabRef_tr.properties @@ -16,12 +16,10 @@ %0_matches_the_term_%1=%0_şu_terimle_eşleşiyor_%1 -= Could_not_find_file_'%0'
linked_from_entry_'%1'='%1'_girdisinden_bağlantılı
'%0'_dosyası_bulunamadı = -= Abbreviate_journal_names_of_the_selected_entries_(ISO_abbreviation)=Viết_tắt_tên_tạp_chí_của_các_mục_được_chọn_(viết_tắt_kiểu_ISO) Abbreviate_journal_names_of_the_selected_entries_(MEDLINE_abbreviation)=Viết_tắt_tên_tạp_chí_của_các_mục_được_chọn_(viết_tắt_kiểu_MEDLINE) @@ -42,10 +40,10 @@ Action=Hành_động Add=Thêm -Add_a_(compiled)_custom_ImportFormat_class_from_a_class_path.=Thêm_một_lớp_ĐịnhdạngNhập_tùy_biến_(được_biên_dịch)_từ_đường_dẫn_lớp. +Add_a_(compiled)_custom_Importer_class_from_a_class_path.=Thêm_một_lớp_ĐịnhdạngNhập_tùy_biến_(được_biên_dịch)_từ_đường_dẫn_lớp. The_path_need_not_be_on_the_classpath_of_JabRef.=Đường_dẫn_không_được_trùng_với_đường_dẫn_lớp_của_JabRef. -Add_a_(compiled)_custom_ImportFormat_class_from_a_ZIP-archive.=Thêm_một_lớp_ĐịnhdạngNhập_tùy_biến_(được_biên_dịch)_từ_một_tập_tin-zip._ +Add_a_(compiled)_custom_Importer_class_from_a_ZIP-archive.=Thêm_một_lớp_ĐịnhdạngNhập_tùy_biến_(được_biên_dịch)_từ_một_tập_tin-zip._ The_ZIP-archive_need_not_be_on_the_classpath_of_JabRef.=Tập_tin-zip_không_được_trùng_với_đường_dẫn_lớp_của_JabRef. Add_entry_selection_to_this_group=Thêm_phép_chọn_mục_vào_nhóm_này @@ -82,7 +80,6 @@ All_subgroups_(recursively)=Tất_cả_các_nhóm_con_(đệ_quy) Always_reformat_BIB_file_on_save_and_export= -An_exception_occurred_while_accessing_'%0'=Một_lỗi_xảy_ra_khi_đang_truy_cập_'%0' A_SAX_exception_occurred_while_parsing_'%0'\:=Một_lỗi_SAXException_xảy_ra_khi_đang_phân_tách_'%0'\: and=và @@ -156,7 +153,7 @@ Backup_old_file_when_saving=Sao_lại_tập_tin_cũ_khi_lưu BibTeX_key_is_unique.=Khóa_BibTeX_không_được_trùng. -BibTeX_source=Nguồn_BibTeX +%0_source=Nguồn_%0 Broken_link=Liên_kết_bị_đứt @@ -665,13 +662,11 @@ Import_strings=Nhập_các_chuỗi Import_to_open_tab=Nhập_vào_thẻ_đang_mở -Import_word_selector_definitions=Nhập_các_định_nghĩa_trình_chọn_từ - Imported_entries=Các_mục_được_nhập Imported_from_database=được_nhập_từ_CSDL -ImportFormat_class=Lớp_ĐịnhdạngNhập +Importer_class=Lớp_ĐịnhdạngNhập Importing=Đang_nhập @@ -760,8 +755,6 @@ Main_file_directory=Thư_mục_tập_tin_chính Main_layout_file=Tập_tin_trình_bày_chính -Manage=Quản_lý - Manage_custom_exports=Quản_lý_các_phép_xuất_tùy_chọn Manage_custom_imports=Quản_lý_các_phép_nhập_tùy_chọn @@ -876,8 +869,6 @@ Nothing_to_redo=Không_có_lệnh_nào_để_lặp_lại Nothing_to_undo=Không_có_lệnh_nào_để_quay_ngược_lại -Number_of_references_to_fetch?=Số_lượng_tài_liệu_tham_khảo_cần_lấy_về? - occurrences=các_lần_xuất_hiện OK=Đồng_ý @@ -982,6 +973,13 @@ Preferences=Các_tùy_thích Preferences_recorded.=Các_tùy_thích_được_ghi_lại. Preview=Xem_trước +Citation_Style= +Current_Preview= +Bad_character_inside_entry= +Error_while_generating_citation_style= +Preview_style_changed_to\:_%0= +Next_preview_layout=Xem_trước_bố_trí_tiếp_theo +Previous_preview_layout=Xem_trước_bố_trí_trước_đó Previous_entry=Mục_trước_đó @@ -1005,7 +1003,7 @@ Redo=Lặp_lại_lệnh Reference_database=CSDL_tham_khảo -References_found=Các_tài_liệu_tham_khảo_được_tìm_thấy +%0_references_found._Number_of_references_to_fetch?=Các_tài_liệu_tham_khảo_được_tìm_thấy\:_%0._Số_lượng_tài_liệu_tham_khảo_cần_lấy_về? Refine_supergroup\:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup=Tinh_chỉnh_nhóm_lớn\:_Khi_được_chọn,_xem_các_mục_chứa_các_trong_nhóm_này_và_nhóm_lớn_của_nó @@ -1101,8 +1099,6 @@ Save_failed=Việc_lưu_thất_bại Save_failed_during_backup_creation=Việc_lưu_thất_bại_khi_đang_tạo_bản_sao_lưu -Save_failed_while_committing_changes\:_%0=Việc_lưu_thất_bại_khi_đang_thực_hiện_những_thay_đổi\:_%0 - Save_selected_as...=Lưu_phần_chọn_thành_... Saved_database=Đã_lưu_CSDL @@ -1153,7 +1149,7 @@ Settings=Các_thiết_lập Shortcut=Phím_tắt -Show/edit_BibTeX_source=Hiển_thị/Chỉnh_sửa_nguồn_BibTeX +Show/edit_%0_source=Hiển_thị/Chỉnh_sửa_nguồn_%0 Show_'Firstname_Lastname'=Hiển_thị_'Tên.gọi_Họ' @@ -1175,7 +1171,7 @@ Show_icons_for_groups=Hiển_thị_các_biểu_tượng_của_nhóm Show_last_names_only=Chỉ_hiển_thị_Họ Show_names_unchanged=Hiển_thị_các_tên_không_bị_thay_đổi - + Show_optional_fields=Hiển_thị_các_trường_tùy_chọn Show_required_fields=Hiển_thị_các_trường_cần_có @@ -1324,9 +1320,6 @@ Unmark_entries=Khử_đánh_dấu_các_mục Unmark_entry=Khử_đánh_dấu_mục - - - untitled=không_tiêu_đề Up=Lên @@ -1421,6 +1414,7 @@ Fetching_Medline_by_term...=Lấy_về_từ_Medline_theo_thuật_ngữ... Please_enter_a_valid_number=Vui_lòng_nhập_một_con_số_hợp_lệ Please_enter_a_comma_separated_list_of_Medline_IDs_(numbers)_or_search_terms.=Vui_lòng_nhập_một_danh_sách_các_id_Medline_(con_số),_cách_nhau_bởi_dấu_phẩy,_hoặc_nhập_thuật_ngữ_cần_tìm. Show_search_results_in_a_window=Hiển_thị_kết_quả_tìm_trong_một_cửa_sổ +Search_in_all_open_databases= Move_file_to_file_directory?=Di_chuyển_tập_tin_vào_thư_mục_tập_tin? Rename_to_'%0'=Đổi_tên_thành_'%0' You_have_changed_the_menu_and_label_font_size.= @@ -1555,7 +1549,7 @@ Autocomplete_names_in_both_formats= Marking_color_%0= The_name_'comment'_cannot_be_used_as_an_entry_type_name.= You_must_enter_an_integer_value_in_the_text_field_for= -Send_as_email= +Send_as_email=Gửi_bằng_email References= Sending_of_emails= Subject_for_sending_an_email_with_references= @@ -1626,14 +1620,14 @@ Use_EMACS_23_insertion_string= If_possible,_normalize_this_list_of_names_to_conform_to_standard_BibTeX_name_formatting= Could_not_open_%0= Unknown_import_format= -Web_search= +Web_search=Tìm_kiếm_trên_web Style_selection= No_valid_style_file_defined= Choose_pattern= Use_the_BIB_file_location_as_primary_file_directory= Could_not_run_the_gnuclient/emacsclient_program._Make_sure_you_have_the_emacsclient/gnuclient_program_installed_and_available_in_the_PATH.= Built-in_journal_list= -OpenOffice/LibreOffice_connection= +OpenOffice/LibreOffice_connection=Nối_với_OpenOffice/LibreOffice You_can_add_additional_journal_names_by_setting_up_a_personal_journal_list,
as_well_as_linking_to_external_journal_lists.= JabRef_includes_a_built-in_list_of_journal_abbreviations.= You_must_select_either_a_valid_style_file,_or_use_one_of_the_default_styles.= @@ -1710,13 +1704,12 @@ How_would_you_like_to_link_to_'%0'?= BibTeX_key_patterns= Changed_special_field_settings= Clear_priority= -Clear_rank= +Clear_rank=Xóa_bỏ_hạng Enable_special_fields= Five_stars= Four_stars= Help_on_special_fields= Keywords_of_selected_entries= -Manage_content_selectors= Manage_keywords= No_priority_information= No_rank_information= @@ -1726,7 +1719,7 @@ Priority_high= Priority_low= Priority_medium= Quality= -Rank= +Rank=Xếp_hạng Relevance= Set_priority_to_high= Set_priority_to_low= @@ -1773,8 +1766,6 @@ Add_{}_to_specified_title_words_on_search_to_keep_the_correct_case= Import_conversions= Please_enter_a_search_string= Please_open_or_start_a_new_database_before_searching= -An_error_occurred_while_fetching_from_ADS_(%0)\:= -An_error_occurred_while_parsing_abstract= Log= Canceled_merging_entries= @@ -1794,7 +1785,7 @@ You_have_to_choose_exactly_two_entries_to_merge.= Update_timestamp_on_modification= All_key_bindings_will_be_reset_to_their_defaults.= -Automatically_set_file_links= +Automatically_set_file_links=Tự_động_tạo_liên_kết_cho_tập_tin Continue?= Resetting_all_key_bindings= Hostname= @@ -1827,11 +1818,10 @@ Show_extra_columns= Parsing_error= illegal_backslash_expression= -Move_to_group= +Move_to_group=Di_chuyển_vào_nhóm Clear_read_status= Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')= -Could_not_apply_changes.= Deprecated_fields= Hide/show_toolbar= No_read_status_information= @@ -1896,7 +1886,6 @@ Modified_groups_tree= Removed_all_groups= Accepting_the_change_replaces_the_complete_groups_tree_with_the_externally_modified_groups_tree.= Select_export_format= -Export_with_selected_format= Return_to_JabRef= Please_move_the_file_manually_and_link_in_place.= Could_not_connect_to_%0=Không_thể_kết_nối_đến_%0 @@ -1923,13 +1912,12 @@ Copy_BibTeX_key_and_title= File_rename_failed_for_%0_entries.= To_set_up,_go_to=Để_cài_đặt,_chọn Merged_BibTeX_source_code= -'%0'_is_not_a_valid_ADS_bibcode.= Invalid_DOI\:_'%0'.=DOI_không_hợp_lệ\:_'%0'. should_start_with_a_name= should_end_with_a_name= unexpected_closing_curly_bracket= unexpected_opening_curly_bracket= -large_capitals_are_not_masked_using_curly_brackets_{}= +capital_letters_are_not_masked_using_curly_brackets_{}= should_contain_a_four_digit_number= should_contain_a_valid_page_number_range= Filled= @@ -1949,7 +1937,6 @@ This_search_contains_entries_in_which_any_field_contains_the_term_%0= This_search_contains_entries_in_which= An_autosave_file_was_found_for_this_database._This_could_indicate_that_JabRef_did_not_shut_down_cleanly_last_time_the_file_was_used.= -Note\:_A_full_text_search_is_currently_not_supported_for_%0= Unable_to_autodetect_OpenOffice/LibreOffice_installation._Please_choose_the_installation_directory_manually.= JabRef_no_longer_supports_'ps'_or_'pdf'_fields.
File_links_are_now_stored_in_the_'file'_field_and_files_are_stored_in_an_external_file_directory.
To_make_use_of_this_feature,_JabRef_needs_to_upgrade_file_links.

= This_database_uses_outdated_file_links.= @@ -1989,12 +1976,11 @@ Resolve_duplicate_BibTeX_keys= Save_all= String_dialog,_add_string= String_dialog,_remove_string= -Switch_preview_layout= Synchronize_files= Unabbreviate= should_contain_a_protocol= Copy_preview= -Automatically_setting_file_links= +Automatically_setting_file_links=Tự_động_thiết_lập_liên_kết_với_tập_tin Regenerating_BibTeX_keys_according_to_metadata= No_meta_data_present_in_BIB_file._Cannot_regenerate_BibTeX_keys= Regenerate_all_keys_for_the_entries_in_a_BibTeX_file= @@ -2157,8 +2143,6 @@ OpenOffice/LibreOffice_integration= incorrect_control_digit= incorrect_format= - - Copy_version_to_clipboard= Copied_version_to_clipboard= @@ -2170,7 +2154,7 @@ Cleared_'%0'_for_%1_entries= Set_'%0'_to_'%1'_for_%2_entries= Toggled_'%0'_for_%1_entries= -Check_for_updates= +Check_for_updates=Kiểm_tra_cập_nhật Download_update= New_version_available= Installed_version= @@ -2234,7 +2218,6 @@ Database= User= Connect=Kết_nối Connection_error= -Driver_error= Connection_to_%0_server_established.= Required_field_"%0"_is_empty.= %0_driver_not_available.= @@ -2253,8 +2236,12 @@ Local_version\:_%0= Shared_version\:_%0= Please_merge_the_shared_entry_with_yours_and_press_"Merge_entries"_to_resolve_this_problem.= Canceling_this_operation_will_leave_your_changes_unsynchronized._Cancel_anyway?= -The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side._Hit_"Keep"_to_recover_the_entry.= +Shared_entry_is_no_longer_present= +The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side.= +You_can_restore_the_entry_using_the_"Undo"_operation.= Remember_password?= +You_are_already_connected_to_a_database_using_entered_connection_details.= + Cannot_cite_entries_without_BibTeX_keys._Generate_keys_now?= New_technical_report= @@ -2303,6 +2290,12 @@ Fetcher_'%0'_did_not_find_an_entry_for_id_'%1'.= Select_first_entry= Select_last_entry= -Search_in_all_open_databases= - Invalid_ISBN\:_'%0'.= +should_be_an_integer_or_normalized= +should_be_normalized= + +Empty_search_ID= +The_given_search_ID_was_empty.= +Copy_BibTeX_key_and_link= +empty_BibTeX_key= +BibLaTeX_field_only= diff --git a/src/main/resources/l10n/JabRef_zh.properties b/src/main/resources/l10n/JabRef_zh.properties index dfe2297d177..2386e5742c4 100644 --- a/src/main/resources/l10n/JabRef_zh.properties +++ b/src/main/resources/l10n/JabRef_zh.properties @@ -16,12 +16,10 @@ %0_matches_the_term_%1=%0_匹配词组_%1 -=<域名称> Could_not_find_file_'%0'
linked_from_entry_'%1'=无法找到记录'%1'链接的文件'%0'