From 2a1331ecc7d0526d3355eff5c9e41999990c0431 Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Tue, 23 Aug 2016 22:51:32 +0200 Subject: [PATCH 1/6] Removed one Globals call from MetaData (#1782) --- src/main/java/net/sf/jabref/MetaData.java | 5 +++-- .../net/sf/jabref/gui/BibtexKeyPatternDialog.java | 3 ++- .../gui/bibtexkeypattern/BibtexKeyPatternPanel.java | 2 +- .../BibtexKeyPatternPreferences.java | 13 +++++++++++-- .../bibtexkeypattern/BibtexKeyPatternUtil.java | 3 ++- .../bibtexkeypattern/DatabaseBibtexKeyPattern.java | 10 ++++------ .../logic/exporter/BibtexDatabaseWriterTest.java | 6 +++--- .../logic/importer/fileformat/BibtexParserTest.java | 5 +++-- 8 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/main/java/net/sf/jabref/MetaData.java b/src/main/java/net/sf/jabref/MetaData.java index bfa0cbf54b9..49db3657c01 100644 --- a/src/main/java/net/sf/jabref/MetaData.java +++ b/src/main/java/net/sf/jabref/MetaData.java @@ -28,6 +28,7 @@ import net.sf.jabref.logic.util.strings.StringUtil; import net.sf.jabref.model.bibtexkeypattern.AbstractBibtexKeyPattern; import net.sf.jabref.model.bibtexkeypattern.DatabaseBibtexKeyPattern; +import net.sf.jabref.model.bibtexkeypattern.GlobalBibtexKeyPattern; import net.sf.jabref.model.database.BibDatabaseMode; import net.sf.jabref.model.entry.FieldName; @@ -236,12 +237,12 @@ private static Optional getNextUnit(Reader reader) throws IOException { /** * @return the stored label patterns */ - public AbstractBibtexKeyPattern getBibtexKeyPattern() { + public AbstractBibtexKeyPattern getBibtexKeyPattern(GlobalBibtexKeyPattern globalPattern) { if (bibtexKeyPattern != null) { return bibtexKeyPattern; } - bibtexKeyPattern = new DatabaseBibtexKeyPattern(Globals.prefs); + bibtexKeyPattern = new DatabaseBibtexKeyPattern(globalPattern); // read the data from the metadata and store it into the bibtexKeyPattern for (String key : this) { diff --git a/src/main/java/net/sf/jabref/gui/BibtexKeyPatternDialog.java b/src/main/java/net/sf/jabref/gui/BibtexKeyPatternDialog.java index 0afe164e6b4..affb600e74b 100644 --- a/src/main/java/net/sf/jabref/gui/BibtexKeyPatternDialog.java +++ b/src/main/java/net/sf/jabref/gui/BibtexKeyPatternDialog.java @@ -13,6 +13,7 @@ import javax.swing.JPanel; import javax.swing.WindowConstants; +import net.sf.jabref.Globals; import net.sf.jabref.MetaData; import net.sf.jabref.gui.bibtexkeypattern.BibtexKeyPatternPanel; import net.sf.jabref.gui.keyboard.KeyBinder; @@ -43,7 +44,7 @@ public BibtexKeyPatternDialog(JabRefFrame parent, BasePanel panel) { public void setPanel(BasePanel panel) { this.panel = panel; this.metaData = panel.getBibDatabaseContext().getMetaData(); - AbstractBibtexKeyPattern keypatterns = metaData.getBibtexKeyPattern(); + AbstractBibtexKeyPattern keypatterns = metaData.getBibtexKeyPattern(Globals.prefs.getKeyPattern()); bibtexKeyPatternPanel.setValues(keypatterns); } diff --git a/src/main/java/net/sf/jabref/gui/bibtexkeypattern/BibtexKeyPatternPanel.java b/src/main/java/net/sf/jabref/gui/bibtexkeypattern/BibtexKeyPatternPanel.java index e7800cb2d40..848182114ab 100644 --- a/src/main/java/net/sf/jabref/gui/bibtexkeypattern/BibtexKeyPatternPanel.java +++ b/src/main/java/net/sf/jabref/gui/bibtexkeypattern/BibtexKeyPatternPanel.java @@ -231,7 +231,7 @@ protected GlobalBibtexKeyPattern getKeyPatternAsGlobalBibtexKeyPattern() { } public DatabaseBibtexKeyPattern getKeyPatternAsDatabaseBibtexKeyPattern() { - DatabaseBibtexKeyPattern res = new DatabaseBibtexKeyPattern(Globals.prefs); + DatabaseBibtexKeyPattern res = new DatabaseBibtexKeyPattern(Globals.prefs.getKeyPattern()); fillPatternUsingPanelData(res); return res; } diff --git a/src/main/java/net/sf/jabref/logic/bibtexkeypattern/BibtexKeyPatternPreferences.java b/src/main/java/net/sf/jabref/logic/bibtexkeypattern/BibtexKeyPatternPreferences.java index f07034b23bd..c158a08127c 100644 --- a/src/main/java/net/sf/jabref/logic/bibtexkeypattern/BibtexKeyPatternPreferences.java +++ b/src/main/java/net/sf/jabref/logic/bibtexkeypattern/BibtexKeyPatternPreferences.java @@ -1,5 +1,6 @@ package net.sf.jabref.logic.bibtexkeypattern; +import net.sf.jabref.model.bibtexkeypattern.GlobalBibtexKeyPattern; import net.sf.jabref.preferences.JabRefPreferences; public class BibtexKeyPatternPreferences { @@ -10,15 +11,18 @@ public class BibtexKeyPatternPreferences { private final boolean alwaysAddLetter; private final boolean firstLetterA; private final boolean enforceLegalKey; + private final GlobalBibtexKeyPattern keyPattern; public BibtexKeyPatternPreferences(String defaultBibtexKeyPattern, String keyPatternRegex, String keyPatternReplacement, - boolean alwaysAddLetter, boolean firstLetterA, boolean enforceLegalKey) { + boolean alwaysAddLetter, boolean firstLetterA, boolean enforceLegalKey, + GlobalBibtexKeyPattern keyPattern) { this.defaultBibtexKeyPattern = defaultBibtexKeyPattern; this.keyPatternRegex = keyPatternRegex; this.keyPatternReplacement = keyPatternReplacement; this.alwaysAddLetter = alwaysAddLetter; this.firstLetterA = firstLetterA; this.enforceLegalKey = enforceLegalKey; + this.keyPattern = keyPattern; } public static BibtexKeyPatternPreferences fromPreferences(JabRefPreferences jabRefPreferences) { @@ -27,7 +31,8 @@ public static BibtexKeyPatternPreferences fromPreferences(JabRefPreferences jabR jabRefPreferences.get(JabRefPreferences.KEY_PATTERN_REPLACEMENT), jabRefPreferences.getBoolean(JabRefPreferences.KEY_GEN_ALWAYS_ADD_LETTER), jabRefPreferences.getBoolean(JabRefPreferences.KEY_GEN_FIRST_LETTER_A), - jabRefPreferences.getBoolean(JabRefPreferences.ENFORCE_LEGAL_BIBTEX_KEY)); + jabRefPreferences.getBoolean(JabRefPreferences.ENFORCE_LEGAL_BIBTEX_KEY), + jabRefPreferences.getKeyPattern()); } public String getKeyPatternRegex() { @@ -51,4 +56,8 @@ public boolean isEnforceLegalKey() { } public String getDefaultBibtexKeyPattern() { return defaultBibtexKeyPattern;} + + public GlobalBibtexKeyPattern getKeyPattern() { + return keyPattern; + } } diff --git a/src/main/java/net/sf/jabref/logic/bibtexkeypattern/BibtexKeyPatternUtil.java b/src/main/java/net/sf/jabref/logic/bibtexkeypattern/BibtexKeyPatternUtil.java index 21b4b501702..64247fddfe6 100644 --- a/src/main/java/net/sf/jabref/logic/bibtexkeypattern/BibtexKeyPatternUtil.java +++ b/src/main/java/net/sf/jabref/logic/bibtexkeypattern/BibtexKeyPatternUtil.java @@ -385,7 +385,8 @@ public static void makeLabel(MetaData metaData, BibDatabase dBase, BibEntry entr // get the type of entry String entryType = entry.getType(); // Get the arrayList corresponding to the type - List typeList = new ArrayList<>(metaData.getBibtexKeyPattern().getValue(entryType)); + List typeList = new ArrayList<>( + metaData.getBibtexKeyPattern(bibtexKeyPatternPreferences.getKeyPattern()).getValue(entryType)); if (!typeList.isEmpty()) { typeList.remove(0); } diff --git a/src/main/java/net/sf/jabref/model/bibtexkeypattern/DatabaseBibtexKeyPattern.java b/src/main/java/net/sf/jabref/model/bibtexkeypattern/DatabaseBibtexKeyPattern.java index 18ffe3b827a..f6907e2f452 100644 --- a/src/main/java/net/sf/jabref/model/bibtexkeypattern/DatabaseBibtexKeyPattern.java +++ b/src/main/java/net/sf/jabref/model/bibtexkeypattern/DatabaseBibtexKeyPattern.java @@ -2,20 +2,18 @@ import java.util.List; -import net.sf.jabref.preferences.JabRefPreferences; - public class DatabaseBibtexKeyPattern extends AbstractBibtexKeyPattern { - private final JabRefPreferences prefs; + private final GlobalBibtexKeyPattern globalBibtexKeyPattern; - public DatabaseBibtexKeyPattern(JabRefPreferences prefs) { - this.prefs = prefs; + public DatabaseBibtexKeyPattern(GlobalBibtexKeyPattern globalBibtexKeyPattern) { + this.globalBibtexKeyPattern = globalBibtexKeyPattern; } @Override public List getLastLevelBibtexKeyPattern(String key) { - return prefs.getKeyPattern().getValue(key); + return globalBibtexKeyPattern.getValue(key); } } diff --git a/src/test/java/net/sf/jabref/logic/exporter/BibtexDatabaseWriterTest.java b/src/test/java/net/sf/jabref/logic/exporter/BibtexDatabaseWriterTest.java index b11a1f6ad5d..e096de1008c 100644 --- a/src/test/java/net/sf/jabref/logic/exporter/BibtexDatabaseWriterTest.java +++ b/src/test/java/net/sf/jabref/logic/exporter/BibtexDatabaseWriterTest.java @@ -159,7 +159,7 @@ public void writeEpilogueAndEncoding() throws Exception { @Test public void writeMetadata() throws Exception { - DatabaseBibtexKeyPattern bibtexKeyPattern = new DatabaseBibtexKeyPattern(Globals.prefs); + DatabaseBibtexKeyPattern bibtexKeyPattern = new DatabaseBibtexKeyPattern(Globals.prefs.getKeyPattern()); bibtexKeyPattern.setDefaultValue("test"); metaData.setBibtexKeyPattern(bibtexKeyPattern); @@ -172,7 +172,7 @@ public void writeMetadata() throws Exception { @Test public void writeMetadataAndEncoding() throws Exception { SavePreferences preferences = new SavePreferences().withEncoding(Charsets.US_ASCII); - DatabaseBibtexKeyPattern bibtexKeyPattern = new DatabaseBibtexKeyPattern(Globals.prefs); + DatabaseBibtexKeyPattern bibtexKeyPattern = new DatabaseBibtexKeyPattern(Globals.prefs.getKeyPattern()); bibtexKeyPattern.setDefaultValue("test"); metaData.setBibtexKeyPattern(bibtexKeyPattern); @@ -429,7 +429,7 @@ public void writeSaveOrderConfig() throws Exception { @Test public void writeCustomKeyPattern() throws Exception { - AbstractBibtexKeyPattern pattern = new DatabaseBibtexKeyPattern(Globals.prefs); + AbstractBibtexKeyPattern pattern = new DatabaseBibtexKeyPattern(Globals.prefs.getKeyPattern()); pattern.setDefaultValue("test"); pattern.addBibtexKeyPattern("article", "articleTest"); metaData.setBibtexKeyPattern(pattern); diff --git a/src/test/java/net/sf/jabref/logic/importer/fileformat/BibtexParserTest.java b/src/test/java/net/sf/jabref/logic/importer/fileformat/BibtexParserTest.java index 559dbf22fd4..9ad7b75a966 100644 --- a/src/test/java/net/sf/jabref/logic/importer/fileformat/BibtexParserTest.java +++ b/src/test/java/net/sf/jabref/logic/importer/fileformat/BibtexParserTest.java @@ -1512,9 +1512,10 @@ public void integrationTestCustomKeyPattern() throws IOException { + "@comment{jabref-meta: keypatterndefault:test;}"), importFormatPreferences); - AbstractBibtexKeyPattern bibtexKeyPattern = result.getMetaData().getBibtexKeyPattern(); + AbstractBibtexKeyPattern bibtexKeyPattern = result.getMetaData() + .getBibtexKeyPattern(Globals.prefs.getKeyPattern()); - AbstractBibtexKeyPattern expectedPattern = new DatabaseBibtexKeyPattern(Globals.prefs); + AbstractBibtexKeyPattern expectedPattern = new DatabaseBibtexKeyPattern(Globals.prefs.getKeyPattern()); expectedPattern.setDefaultValue("test"); expectedPattern.addBibtexKeyPattern("article", "articleTest"); From 9308ac9550ea020b039dc801ac8e8a69f349c8e6 Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Tue, 23 Aug 2016 23:49:31 +0200 Subject: [PATCH 2/6] Updated dependencies (#1831) --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 405693dd547..dfbb4c4e9ef 100644 --- a/build.gradle +++ b/build.gradle @@ -79,7 +79,7 @@ dependencies { compile 'org.apache.pdfbox:jempbox:1.8.12' // required for reading write-protected PDFs - see https://github.com/JabRef/jabref/pull/942#issuecomment-209252635 - compile 'org.bouncycastle:bcprov-jdk15on:1.54' + compile 'org.bouncycastle:bcprov-jdk15on:1.55' compile 'commons-cli:commons-cli:1.3.1' @@ -120,7 +120,7 @@ dependencies { testCompile 'junit:junit:4.12' testCompile 'org.mockito:mockito-core:1.10.19' - testCompile 'com.github.tomakehurst:wiremock:2.1.10' + testCompile 'com.github.tomakehurst:wiremock:2.1.11' testCompile 'org.assertj:assertj-swing-junit:3.4.0' } From 9602d99a1f30230ae8b34a4141d4c3e4a449a09a Mon Sep 17 00:00:00 2001 From: Admir Obralija Date: Wed, 24 Aug 2016 02:19:06 +0200 Subject: [PATCH 3/6] Add check for obsolete database structure. Add help popup. (#1818) --- .../sf/jabref/shared/DBMSProcessorTest.java | 4 +- .../jabref/shared/DBMSSynchronizerTest.java | 5 +- .../shared/SynchronizationTestSimulator.java | 3 +- .../net/sf/jabref/gui/help/HelpAction.java | 22 +++++ .../gui/shared/MigrationHelpDialog.java | 80 ++++++++++++++++++ .../gui/shared/OpenSharedDatabaseDialog.java | 82 ++++++++++--------- .../net/sf/jabref/logic/help/HelpFile.java | 4 +- .../net/sf/jabref/shared/DBMSProcessor.java | 47 +++++++++-- .../sf/jabref/shared/DBMSSynchronizer.java | 31 ++++--- .../net/sf/jabref/shared/MySQLProcessor.java | 8 +- .../net/sf/jabref/shared/OracleProcessor.java | 8 +- .../sf/jabref/shared/PostgreSQLProcessor.java | 8 +- .../DatabaseNotSupportedException.java | 11 +++ src/main/resources/l10n/JabRef_da.properties | 8 +- src/main/resources/l10n/JabRef_de.properties | 7 +- src/main/resources/l10n/JabRef_en.properties | 7 +- src/main/resources/l10n/JabRef_es.properties | 8 +- src/main/resources/l10n/JabRef_fa.properties | 8 +- src/main/resources/l10n/JabRef_fr.properties | 7 +- src/main/resources/l10n/JabRef_in.properties | 8 +- src/main/resources/l10n/JabRef_it.properties | 8 +- src/main/resources/l10n/JabRef_ja.properties | 8 +- src/main/resources/l10n/JabRef_nl.properties | 8 +- src/main/resources/l10n/JabRef_no.properties | 8 +- .../resources/l10n/JabRef_pt_BR.properties | 8 +- src/main/resources/l10n/JabRef_ru.properties | 8 +- src/main/resources/l10n/JabRef_sv.properties | 7 +- src/main/resources/l10n/JabRef_tr.properties | 7 +- src/main/resources/l10n/JabRef_vi.properties | 8 +- src/main/resources/l10n/JabRef_zh.properties | 8 +- 30 files changed, 341 insertions(+), 103 deletions(-) create mode 100644 src/main/java/net/sf/jabref/gui/shared/MigrationHelpDialog.java create mode 100644 src/main/java/net/sf/jabref/shared/exception/DatabaseNotSupportedException.java diff --git a/src/databaseTest/java/net/sf/jabref/shared/DBMSProcessorTest.java b/src/databaseTest/java/net/sf/jabref/shared/DBMSProcessorTest.java index aa9e85d32bf..d5dcc98ace0 100644 --- a/src/databaseTest/java/net/sf/jabref/shared/DBMSProcessorTest.java +++ b/src/databaseTest/java/net/sf/jabref/shared/DBMSProcessorTest.java @@ -40,7 +40,7 @@ public void setUp() throws ClassNotFoundException, SQLException { connection = TestConnector.getTestConnection(dbmsType); } dbmsProcessor = DBMSProcessor.getProcessorInstance(connection, dbmsType); - dbmsProcessor.setUpSharedDatabase(); + dbmsProcessor.setupSharedDatabase(); } @Parameters(name = "Test with {0} database system") @@ -58,7 +58,7 @@ public void testCheckBaseIntegrity() throws SQLException { @Test public void testSetUpSharedDatabase() throws SQLException { clear(); - dbmsProcessor.setUpSharedDatabase(); + dbmsProcessor.setupSharedDatabase(); Assert.assertTrue(dbmsProcessor.checkBaseIntegrity()); } diff --git a/src/databaseTest/java/net/sf/jabref/shared/DBMSSynchronizerTest.java b/src/databaseTest/java/net/sf/jabref/shared/DBMSSynchronizerTest.java index cd8f11a4bb7..6e8f8d41ea8 100644 --- a/src/databaseTest/java/net/sf/jabref/shared/DBMSSynchronizerTest.java +++ b/src/databaseTest/java/net/sf/jabref/shared/DBMSSynchronizerTest.java @@ -15,6 +15,7 @@ import net.sf.jabref.model.database.BibDatabase; import net.sf.jabref.model.entry.BibEntry; import net.sf.jabref.preferences.JabRefPreferences; +import net.sf.jabref.shared.exception.DatabaseNotSupportedException; import net.sf.jabref.shared.exception.OfflineLockException; import net.sf.jabref.shared.exception.SharedEntryNotPresentException; @@ -40,7 +41,7 @@ public class DBMSSynchronizerTest { @Before - public void setUp() throws ClassNotFoundException, SQLException { + public void setUp() throws ClassNotFoundException, SQLException, DatabaseNotSupportedException { Globals.prefs = JabRefPreferences.getInstance(); @@ -130,7 +131,7 @@ public void testMetaDataChangedEventListener() { } @Test - public void testInitializeDatabases() throws SQLException { + public void testInitializeDatabases() throws SQLException, DatabaseNotSupportedException { clear(); dbmsSynchronizer.initializeDatabases(); Assert.assertTrue(dbmsProcessor.checkBaseIntegrity()); diff --git a/src/databaseTest/java/net/sf/jabref/shared/SynchronizationTestSimulator.java b/src/databaseTest/java/net/sf/jabref/shared/SynchronizationTestSimulator.java index c6331b93d09..f11d6f66e3b 100644 --- a/src/databaseTest/java/net/sf/jabref/shared/SynchronizationTestSimulator.java +++ b/src/databaseTest/java/net/sf/jabref/shared/SynchronizationTestSimulator.java @@ -11,6 +11,7 @@ import net.sf.jabref.model.database.DatabaseLocation; import net.sf.jabref.model.entry.BibEntry; import net.sf.jabref.preferences.JabRefPreferences; +import net.sf.jabref.shared.exception.DatabaseNotSupportedException; import org.junit.After; import org.junit.Assert; @@ -36,7 +37,7 @@ public class SynchronizationTestSimulator { @Before - public void setUp() throws ClassNotFoundException, SQLException { + public void setUp() throws ClassNotFoundException, SQLException, DatabaseNotSupportedException { // Get only one connection for each parameter if (TestConnector.currentConnectionType != dbmsType) { connection = TestConnector.getTestConnection(dbmsType); diff --git a/src/main/java/net/sf/jabref/gui/help/HelpAction.java b/src/main/java/net/sf/jabref/gui/help/HelpAction.java index 68ddb27302c..33dea5b3eb2 100644 --- a/src/main/java/net/sf/jabref/gui/help/HelpAction.java +++ b/src/main/java/net/sf/jabref/gui/help/HelpAction.java @@ -1,11 +1,16 @@ package net.sf.jabref.gui.help; +import java.awt.Color; +import java.awt.Cursor; import java.awt.Dimension; import java.awt.event.ActionEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import javax.swing.Action; import javax.swing.Icon; import javax.swing.JButton; +import javax.swing.JLabel; import javax.swing.KeyStroke; import net.sf.jabref.Globals; @@ -57,12 +62,29 @@ public JButton getHelpButton() { return button; } + public JLabel getHelpLabel(String labelText) { + JLabel helpLabel = new JLabel("" + labelText + ""); + helpLabel.setForeground(Color.BLUE); + helpLabel.setCursor(new Cursor(Cursor.HAND_CURSOR)); + helpLabel.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + openHelpPage(); + } + }); + return helpLabel; + } + public void setHelpFile(HelpFile urlPart) { this.helpPage = urlPart; } @Override public void actionPerformed(ActionEvent e) { + openHelpPage(); + } + + private void openHelpPage() { String url = "https://help.jabref.org/" + Globals.prefs.get(JabRefPreferences.LANGUAGE) + "/" + helpPage.getPageName(); JabRefDesktop.openBrowserShowPopup(url); } diff --git a/src/main/java/net/sf/jabref/gui/shared/MigrationHelpDialog.java b/src/main/java/net/sf/jabref/gui/shared/MigrationHelpDialog.java new file mode 100644 index 00000000000..35f13d3856e --- /dev/null +++ b/src/main/java/net/sf/jabref/gui/shared/MigrationHelpDialog.java @@ -0,0 +1,80 @@ +package net.sf.jabref.gui.shared; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.KeyStroke; +import javax.swing.border.EmptyBorder; + +import net.sf.jabref.gui.help.HelpAction; +import net.sf.jabref.logic.help.HelpFile; +import net.sf.jabref.logic.l10n.Localization; + +public class MigrationHelpDialog extends JDialog { + + public MigrationHelpDialog(OpenSharedDatabaseDialog openSharedDatabaseDialog) { + super(openSharedDatabaseDialog, Localization.lang("Migration help information")); + setModal(true); + + String migrationMessage = Localization + .lang("Entered database has obsolete structure and is no longer supported."); + JLabel migrationLabel = new JLabel(migrationMessage); + migrationLabel.setAlignmentX(Component.LEFT_ALIGNMENT); + + String helpMessage = Localization.lang("Click here to learn about the migration of pre-3.6 databases."); + JLabel helpLabel = new HelpAction(HelpFile.SQL_DATABASE_MIGRATION).getHelpLabel(helpMessage); + helpLabel.setAlignmentX(Component.LEFT_ALIGNMENT); + + String informationMessage = Localization.lang("However, a new database was created alongside the pre-3.6 one."); + JLabel informationLabel = new JLabel(informationMessage); + informationLabel.setAlignmentX(Component.LEFT_ALIGNMENT); + + Action openAction = new AbstractAction() { + + @Override + public void actionPerformed(ActionEvent e) { + openSharedDatabaseDialog.openSharedDatabase(); + } + }; + + JButton okButton = new JButton(Localization.lang("OK")); + okButton.addActionListener(openAction); + okButton.setAlignmentX(Component.CENTER_ALIGNMENT); + okButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), + "Enter_pressed"); + okButton.getActionMap().put("Enter_pressed", openAction); + + JPanel buttonPanel = new JPanel(); + buttonPanel.add(okButton, BorderLayout.CENTER); + + JPanel contentPanel = new JPanel(); + contentPanel.setBorder(new EmptyBorder(9, 9, 9, 9)); + contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS)); + + contentPanel.add(migrationLabel); + contentPanel.add(Box.createRigidArea(new Dimension(0, 10))); + contentPanel.add(helpLabel); + contentPanel.add(Box.createRigidArea(new Dimension(0, 10))); + contentPanel.add(informationLabel); + contentPanel.add(Box.createRigidArea(new Dimension(0, 20))); + contentPanel.add(buttonPanel); + + add(contentPanel); + + setResizable(false); + pack(); + setLocationRelativeTo(openSharedDatabaseDialog); + } +} diff --git a/src/main/java/net/sf/jabref/gui/shared/OpenSharedDatabaseDialog.java b/src/main/java/net/sf/jabref/gui/shared/OpenSharedDatabaseDialog.java index 136158b7d55..fe100e8703c 100644 --- a/src/main/java/net/sf/jabref/gui/shared/OpenSharedDatabaseDialog.java +++ b/src/main/java/net/sf/jabref/gui/shared/OpenSharedDatabaseDialog.java @@ -1,5 +1,6 @@ package net.sf.jabref.gui.shared; +import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; @@ -29,14 +30,15 @@ import net.sf.jabref.Globals; import net.sf.jabref.JabRefException; import net.sf.jabref.gui.JabRefFrame; +import net.sf.jabref.gui.help.HelpAction; +import net.sf.jabref.logic.help.HelpFile; import net.sf.jabref.logic.l10n.Localization; import net.sf.jabref.model.database.BibDatabaseMode; import net.sf.jabref.model.database.DatabaseLocation; import net.sf.jabref.shared.DBMSConnectionProperties; import net.sf.jabref.shared.DBMSConnector; import net.sf.jabref.shared.DBMSType; - -import com.jgoodies.forms.builder.ButtonBarBuilder; +import net.sf.jabref.shared.exception.DatabaseNotSupportedException; public class OpenSharedDatabaseDialog extends JDialog { @@ -63,6 +65,7 @@ public class OpenSharedDatabaseDialog extends JDialog { private final JButton connectButton = new JButton(Localization.lang("Connect")); private final JButton cancelButton = new JButton(Localization.lang("Cancel")); + private final JButton helpButton = new HelpAction(HelpFile.SQL_DATABASE).getHelpButton(); private static final String SHARED_DATABASE_TYPE = "sharedDatabaseType"; private static final String SHARED_DATABASE_HOST = "sharedDatabaseHost"; @@ -70,6 +73,8 @@ public class OpenSharedDatabaseDialog extends JDialog { private static final String SHARED_DATABASE_NAME = "sharedDatabaseName"; private static final String SHARED_DATABASE_USER = "sharedDatabaseUser"; + private DBMSConnectionProperties connectionProperties; + private BibDatabaseContext bibDatabaseContext; /** * @param frame the JabRef Frame @@ -84,6 +89,25 @@ public OpenSharedDatabaseDialog(JabRefFrame frame) { setLocationRelativeTo(frame); } + public void openSharedDatabase() { + try { + bibDatabaseContext.getDBSynchronizer().openSharedDatabase(connectionProperties); + frame.addTab(bibDatabaseContext, true); + setGlobalPrefs(); + bibDatabaseContext.getDBSynchronizer().registerListener(new SharedDatabaseUIManager(frame)); + frame.output(Localization.lang("Connection_to_%0_server_stablished.", connectionProperties.getType().toString())); + dispose(); + } catch (ClassNotFoundException exception) { + JOptionPane.showMessageDialog(OpenSharedDatabaseDialog.this, exception.getMessage(), + Localization.lang("Driver error"), JOptionPane.ERROR_MESSAGE); + } catch (SQLException exception) { + JOptionPane.showMessageDialog(OpenSharedDatabaseDialog.this, exception.getMessage(), + Localization.lang("Connection error"), JOptionPane.ERROR_MESSAGE); + } catch (DatabaseNotSupportedException exception) { + new MigrationHelpDialog(this).setVisible(true); + } + } + /** * Defines and sets the different actions up. */ @@ -96,10 +120,10 @@ public void actionPerformed(ActionEvent e) { checkFields(); BibDatabaseMode selectedMode = Globals.prefs.getDefaultBibDatabaseMode(); - BibDatabaseContext bibDatabaseContext = new BibDatabaseContext(new Defaults(selectedMode), + bibDatabaseContext = new BibDatabaseContext(new Defaults(selectedMode), DatabaseLocation.SHARED); - DBMSConnectionProperties connectionProperties = new DBMSConnectionProperties(); + connectionProperties = new DBMSConnectionProperties(); connectionProperties.setType((DBMSType) dbmsTypeDropDown.getSelectedItem()); connectionProperties.setHost(hostField.getText()); connectionProperties.setPort(Integer.parseInt(portField.getText())); @@ -107,21 +131,8 @@ public void actionPerformed(ActionEvent e) { connectionProperties.setUser(userField.getText()); connectionProperties.setPassword(new String(passwordField.getPassword())); //JPasswordField.getPassword() does not return a String, but a char array. - bibDatabaseContext.getDBSynchronizer().openSharedDatabase(connectionProperties); + openSharedDatabase(); - frame.addTab(bibDatabaseContext, true); - - setGlobalPrefs(); - - bibDatabaseContext.getDBSynchronizer().registerListener(new SharedDatabaseUIManager(frame)); - frame.output(Localization.lang("Connection_to_%0_server_stablished.", connectionProperties.getType().toString())); - dispose(); - } catch (ClassNotFoundException exception) { - JOptionPane.showMessageDialog(OpenSharedDatabaseDialog.this, exception.getMessage(), Localization.lang("Driver error"), - JOptionPane.ERROR_MESSAGE); - } catch (SQLException exception) { - JOptionPane.showMessageDialog(OpenSharedDatabaseDialog.this, exception.getMessage(), - Localization.lang("Connection error"), JOptionPane.ERROR_MESSAGE); } catch (JabRefException exception) { JOptionPane.showMessageDialog(OpenSharedDatabaseDialog.this, exception.getMessage(), Localization.lang("Warning"), JOptionPane.WARNING_MESSAGE); @@ -129,14 +140,7 @@ public void actionPerformed(ActionEvent e) { } }; connectButton.addActionListener(openAction); - - Action cancelAction = new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - dispose(); - } - }; - cancelButton.addActionListener(cancelAction); + cancelButton.addActionListener(e -> dispose()); /** * Set up a listener which updates the default port number once the selection in dbmsTypeDropDown has changed. @@ -261,24 +265,28 @@ private void initLayout() { gridBagConstraints.insets = new Insets(4, 0, 4, 4); connectionPanel.add(portField, gridBagConstraints); - gridBagConstraints.insets = new Insets(4, 4, 4, 4); + // help button + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 5; + gridBagConstraints.insets = new Insets(10, 10, 0, 0); + JPanel helpPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + helpPanel.add(helpButton); + connectionPanel.add(helpPanel, gridBagConstraints); - ButtonBarBuilder bsb = new ButtonBarBuilder(buttonPanel); - bsb.addGlue(); - bsb.addButton(connectButton); - bsb.addRelatedGap(); - bsb.addButton(cancelButton); + // control buttons + gridBagConstraints.gridx = 1; + buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); + buttonPanel.add(connectButton); + buttonPanel.add(cancelButton); + connectionPanel.add(buttonPanel, gridBagConstraints); + // add panel getContentPane().setLayout(gridBagLayout); - gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; + gridBagConstraints.insets = new Insets(5, 5, 5, 5); gridBagLayout.setConstraints(connectionPanel, gridBagConstraints); getContentPane().add(connectionPanel); - gridBagConstraints.gridy = 1; - gridBagConstraints.insets = new Insets(10, 0, 12, 13); - gridBagLayout.setConstraints(buttonPanel, gridBagConstraints); - getContentPane().add(buttonPanel); setModal(true); // Owner window should be disabled while this dialog is opened. } diff --git a/src/main/java/net/sf/jabref/logic/help/HelpFile.java b/src/main/java/net/sf/jabref/logic/help/HelpFile.java index 3208b08636d..9d581dacb1c 100644 --- a/src/main/java/net/sf/jabref/logic/help/HelpFile.java +++ b/src/main/java/net/sf/jabref/logic/help/HelpFile.java @@ -48,7 +48,9 @@ public enum HelpFile { FETCHER_SCIENCEDIRECT(""), FETCHER_BIBSONOMY_SCRAPER(""), DATABASE_PROPERTIES("DatabaseProperties"), - FIND_DUPLICATES("FindDuplicates"); + FIND_DUPLICATES("FindDuplicates"), + SQL_DATABASE_MIGRATION("SQLDatabaseMigration"), + SQL_DATABASE("SQLDatabase"); private final String pageName; diff --git a/src/main/java/net/sf/jabref/shared/DBMSProcessor.java b/src/main/java/net/sf/jabref/shared/DBMSProcessor.java index f69e9ed48fc..1b1fbd49a59 100644 --- a/src/main/java/net/sf/jabref/shared/DBMSProcessor.java +++ b/src/main/java/net/sf/jabref/shared/DBMSProcessor.java @@ -6,16 +6,15 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Optional; import java.util.Set; import net.sf.jabref.event.source.EntryEventSource; -import net.sf.jabref.logic.l10n.Localization; import net.sf.jabref.model.entry.BibEntry; import net.sf.jabref.shared.exception.OfflineLockException; import net.sf.jabref.shared.exception.SharedEntryNotPresentException; @@ -42,13 +41,43 @@ public DBMSProcessor(Connection connection) { /** * Scans the database for required tables. + * * @return true if the structure matches the requirements, false if not. * @throws SQLException */ public boolean checkBaseIntegrity() throws SQLException { - List requiredTables = new ArrayList<>(Arrays.asList("ENTRY", "FIELD", "METADATA")); // the list should be dynamic - DatabaseMetaData databaseMetaData = connection.getMetaData(); + return checkTableAvailibility("ENTRY", "FIELD", "METADATA"); + } + + /** + * Determines whether the database is using an pre-3.6 structure. + * + * @return true if the structure is old, else false. + */ + public boolean checkForPre3Dot6Intergrity() throws SQLException { + return checkTableAvailibility( + "ENTRIES", + "ENTRY_GROUP", + "ENTRY_TYPES", + "GROUPS", + "GROUP_TYPES", + "JABREF_DATABASE", + "STRINGS"); // old tables + } + + /** + * Checks whether all given table names (case insensitive) exist in database. + * + * @param tableNames Table names to be checked + * @return true if all given tables are present, else false. + */ + private boolean checkTableAvailibility(String... tableNames) throws SQLException { + List requiredTables = new ArrayList<>(); + for (String name : tableNames) { + requiredTables.add(name.toUpperCase(Locale.ENGLISH)); + } + DatabaseMetaData databaseMetaData = connection.getMetaData(); // ...getTables(null, ...): no restrictions try (ResultSet databaseMetaDataResultSet = databaseMetaData.getTables(null, null, null, null)) { while (databaseMetaDataResultSet.next()) { @@ -59,24 +88,24 @@ public boolean checkBaseIntegrity() throws SQLException { } } - /** * Creates and sets up the needed tables and columns according to the database type and * performs a check whether the needed tables are present. * * @throws SQLException */ - public void setUpSharedDatabase() throws SQLException { + public void setupSharedDatabase() throws SQLException { setUp(); if (!checkBaseIntegrity()) { // can only happen with users direct intervention on shared database - LOGGER.error(Localization.lang("Corrupt_shared_database_structure.")); + LOGGER.error("Corrupt_shared_database_structure."); } } /** * Creates and sets up the needed tables and columns according to the database type. + * * @throws SQLException */ protected abstract void setUp() throws SQLException; @@ -84,6 +113,7 @@ public void setUpSharedDatabase() throws SQLException { /** * Escapes parts of SQL expressions like table or field name to match the conventions * of the database system using the current dbmsType. + * * @param expression Table or field name * @return Correctly escaped expression */ @@ -92,6 +122,7 @@ public void setUpSharedDatabase() throws SQLException { /** * Inserts the given bibEntry into shared database. + * * @param bibEntry {@link BibEntry} to be inserted */ public void insertEntry(BibEntry bibEntry) { @@ -324,6 +355,7 @@ private void insertOrUpdateFields(BibEntry localBibEntry) throws SQLException { /** * Removes the shared bibEntry. + * * @param bibEntry {@link BibEntry} to be deleted */ public void removeEntry(BibEntry bibEntry) { @@ -454,6 +486,7 @@ public Map getSharedMetaData() { /** * Clears and sets all shared meta data. + * * @param metaData JabRef meta data. * @throws SQLException */ diff --git a/src/main/java/net/sf/jabref/shared/DBMSSynchronizer.java b/src/main/java/net/sf/jabref/shared/DBMSSynchronizer.java index 7e7294aa568..122648e5106 100644 --- a/src/main/java/net/sf/jabref/shared/DBMSSynchronizer.java +++ b/src/main/java/net/sf/jabref/shared/DBMSSynchronizer.java @@ -13,7 +13,6 @@ import net.sf.jabref.event.source.EntryEventSource; import net.sf.jabref.logic.exporter.BibDatabaseWriter; import net.sf.jabref.logic.importer.util.ParseException; -import net.sf.jabref.logic.l10n.Localization; import net.sf.jabref.model.database.BibDatabase; import net.sf.jabref.model.entry.BibEntry; import net.sf.jabref.model.event.EntryAddedEvent; @@ -23,6 +22,7 @@ import net.sf.jabref.shared.event.ConnectionLostEvent; import net.sf.jabref.shared.event.SharedEntryNotPresentEvent; import net.sf.jabref.shared.event.UpdateRefusedEvent; +import net.sf.jabref.shared.exception.DatabaseNotSupportedException; import net.sf.jabref.shared.exception.OfflineLockException; import net.sf.jabref.shared.exception.SharedEntryNotPresentException; @@ -58,6 +58,7 @@ public DBMSSynchronizer(BibDatabaseContext bibDatabaseContext) { /** * Listening method. Inserts a new {@link BibEntry} into shared database. + * * @param event {@link EntryAddedEvent} object */ @Subscribe @@ -73,6 +74,7 @@ public void listen(EntryAddedEvent event) { /** * Listening method. Updates an existing shared {@link BibEntry}. + * * @param event {@link FieldChangedEvent} object */ @Subscribe @@ -89,6 +91,7 @@ public void listen(FieldChangedEvent event) { /** * Listening method. Deletes the given {@link BibEntry} from shared database. + * * @param event {@link EntryRemovedEvent} object */ @Subscribe @@ -104,6 +107,7 @@ public void listen(EntryRemovedEvent event) { /** * Listening method. Synchronizes the shared {@link MetaData} and applies them locally. + * * @param event */ @Subscribe @@ -118,17 +122,23 @@ public void listen(MetaDataChangedEvent event) { /** * Sets the table structure of shared database if needed and pulls all shared entries * to the new local database. + * * @param bibDatabase Local {@link BibDatabase} + * @throws DatabaseNotSupportedException if the version of shared database does not match + * the version of current shared database support ({@link DBMSProcessor}). */ - public void initializeDatabases() { - try { - if (!dbmsProcessor.checkBaseIntegrity()) { - LOGGER.info(Localization.lang("Integrity check failed. Fixing...")); - dbmsProcessor.setUpSharedDatabase(); + public void initializeDatabases() throws DatabaseNotSupportedException, SQLException { + if (!dbmsProcessor.checkBaseIntegrity()) { + LOGGER.info("Integrity check failed. Fixing..."); + dbmsProcessor.setupSharedDatabase(); + + // This check should only be performed once on initial database setup. + // Calling dbmsProcessor.setupSharedDatabase() lets dbmsProcessor.checkBaseIntegrity() be true. + if (dbmsProcessor.checkForPre3Dot6Intergrity()) { + throw new DatabaseNotSupportedException(); } - } catch (SQLException e) { - LOGGER.error("SQL Error: ", e); } + synchronizeLocalMetaData(); synchronizeLocalDatabase(); } @@ -313,6 +323,7 @@ public boolean checkCurrentConnection() { /** * Checks whether the {@link EntryEventSource} of an {@link EntryEvent} is crucial for this class. + * * @param event An {@link EntryEvent} * @return true if the event is able to trigger operations in {@link DBMSSynchronizer}, else false */ @@ -321,7 +332,7 @@ public boolean isEventSourceAccepted(EntryEvent event) { return ((eventSource == EntryEventSource.LOCAL) || (eventSource == EntryEventSource.UNDO)); } - public void openSharedDatabase(Connection connection, DBMSType type, String name) { + public void openSharedDatabase(Connection connection, DBMSType type, String name) throws DatabaseNotSupportedException, SQLException { this.dbmsType = type; this.dbName = name; this.currentConnection = connection; @@ -329,7 +340,7 @@ public void openSharedDatabase(Connection connection, DBMSType type, String name initializeDatabases(); } - public void openSharedDatabase(DBMSConnectionProperties properties) throws ClassNotFoundException, SQLException { + public void openSharedDatabase(DBMSConnectionProperties properties) throws ClassNotFoundException, SQLException, DatabaseNotSupportedException { openSharedDatabase(DBMSConnector.getNewConnection(properties), properties.getType(), properties.getDatabase()); } diff --git a/src/main/java/net/sf/jabref/shared/MySQLProcessor.java b/src/main/java/net/sf/jabref/shared/MySQLProcessor.java index 303d0c96a01..7e66919d8cb 100644 --- a/src/main/java/net/sf/jabref/shared/MySQLProcessor.java +++ b/src/main/java/net/sf/jabref/shared/MySQLProcessor.java @@ -18,6 +18,7 @@ public MySQLProcessor(Connection connection) { /** * Creates and sets up the needed tables and columns according to the database type. + * * @throws SQLException */ @Override @@ -35,9 +36,10 @@ public void setUp() throws SQLException { "`VALUE` TEXT DEFAULT NULL, " + "FOREIGN KEY (`ENTRY_SHARED_ID`) REFERENCES `ENTRY`(`SHARED_ID`) ON DELETE CASCADE)"); - connection.createStatement().executeUpdate("CREATE TABLE IF NOT EXISTS `METADATA` (" + - "`KEY` varchar(255) NOT NULL," + - "`VALUE` text NOT NULL)"); + connection.createStatement().executeUpdate( + "CREATE TABLE IF NOT EXISTS `METADATA` (" + + "`KEY` varchar(255) NOT NULL," + + "`VALUE` text NOT NULL)"); } @Override diff --git a/src/main/java/net/sf/jabref/shared/OracleProcessor.java b/src/main/java/net/sf/jabref/shared/OracleProcessor.java index 97d00fe014d..24425a14906 100644 --- a/src/main/java/net/sf/jabref/shared/OracleProcessor.java +++ b/src/main/java/net/sf/jabref/shared/OracleProcessor.java @@ -18,6 +18,7 @@ public OracleProcessor(Connection connection) { /** * Creates and sets up the needed tables and columns according to the database type. + * * @throws SQLException */ @Override @@ -42,9 +43,10 @@ public void setUp() throws SQLException { "CONSTRAINT \"ENTRY_SHARED_ID_FK\" FOREIGN KEY (\"ENTRY_SHARED_ID\") " + "REFERENCES \"ENTRY\"(\"SHARED_ID\") ON DELETE CASCADE)"); - connection.createStatement().executeUpdate("CREATE TABLE \"METADATA\" (" + - "\"KEY\" VARCHAR2(255) NULL," + - "\"VALUE\" CLOB NOT NULL)"); + connection.createStatement().executeUpdate( + "CREATE TABLE \"METADATA\" (" + + "\"KEY\" VARCHAR2(255) NULL," + + "\"VALUE\" CLOB NOT NULL)"); } @Override diff --git a/src/main/java/net/sf/jabref/shared/PostgreSQLProcessor.java b/src/main/java/net/sf/jabref/shared/PostgreSQLProcessor.java index fe7840bbe91..afe4a1e46ac 100644 --- a/src/main/java/net/sf/jabref/shared/PostgreSQLProcessor.java +++ b/src/main/java/net/sf/jabref/shared/PostgreSQLProcessor.java @@ -18,6 +18,7 @@ public PostgreSQLProcessor(Connection connection) { /** * Creates and sets up the needed tables and columns according to the database type. + * * @throws SQLException */ @Override @@ -34,9 +35,10 @@ public void setUp() throws SQLException { "\"NAME\" VARCHAR, " + "\"VALUE\" TEXT)"); - connection.createStatement().executeUpdate("CREATE TABLE IF NOT EXISTS \"METADATA\" (" - + "\"KEY\" VARCHAR," - + "\"VALUE\" TEXT)"); + connection.createStatement().executeUpdate( + "CREATE TABLE IF NOT EXISTS \"METADATA\" (" + + "\"KEY\" VARCHAR," + + "\"VALUE\" TEXT)"); } @Override diff --git a/src/main/java/net/sf/jabref/shared/exception/DatabaseNotSupportedException.java b/src/main/java/net/sf/jabref/shared/exception/DatabaseNotSupportedException.java new file mode 100644 index 00000000000..10d09df47f1 --- /dev/null +++ b/src/main/java/net/sf/jabref/shared/exception/DatabaseNotSupportedException.java @@ -0,0 +1,11 @@ +package net.sf.jabref.shared.exception; + +/** + * This exception is thrown in case that the SQL database structure is not compatible with the current shared database support mechanisms. + */ +public class DatabaseNotSupportedException extends Exception { + + public DatabaseNotSupportedException() { + super("The structure of the SQL database is not supported."); + } +} diff --git a/src/main/resources/l10n/JabRef_da.properties b/src/main/resources/l10n/JabRef_da.properties index af4471fff56..167ba5ac059 100644 --- a/src/main/resources/l10n/JabRef_da.properties +++ b/src/main/resources/l10n/JabRef_da.properties @@ -1710,8 +1710,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -1759,3 +1757,9 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_de.properties b/src/main/resources/l10n/JabRef_de.properties index 08bad4a4029..a2f977861af 100644 --- a/src/main/resources/l10n/JabRef_de.properties +++ b/src/main/resources/l10n/JabRef_de.properties @@ -2420,8 +2420,6 @@ Connection_error=Verbindungsfehler Driver_error=Treiberfehler Connection_to_%0_server_stablished.=Verbindung_zum_%0_Server hergestellt. Required_field_"%0"_is_empty.=Erforederliches_Feld_"%0"_ist_leer. -Corrupt_shared_database_structure.=Die_Struktur_der_gemeinsam_genutzten_Datenbank_ist_beschädigt. -Integrity_check_failed._Fixing...=Integritätscheck_fehlgeschlagen._Repariere... %0_driver_not_available.=%0-Treiber_nicht_verfügbar. @@ -2469,3 +2467,8 @@ 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=Hilfe_zur_Migration +Entered_database_has_obsolete_structure_and_is_no_longer_supported.=Die_eingegebene_Datenbank_ist_veraltet_und_wird_nicht_mehr_unterstützt. +However,_a_new_database_was_created_alongside_the_pre-3.6_one.=Eine_nebenläufige_Datenbank_wurde_erzeugt. + +Click_here_to_learn_about_the_migration_of_pre-3.6_databases.= diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index 83a8a3e695f..ded86b187d6 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -2255,8 +2255,6 @@ Connection_error=Connection_error Driver_error=Driver_error Connection_to_%0_server_stablished.=Connection_to_%0_server_stablished. Required_field_"%0"_is_empty.=Required_field_"%0"_is_empty. -Corrupt_shared_database_structure.=Corrupt_shared_database_structure. -Integrity_check_failed._Fixing...=Integrity_check_failed._Fixing... %0_driver_not_available.=%0_driver_not_available. The_connection_to_the_server_has_been_determinated.=The_connection_to_the_server_has_been_determinated. Connection_lost.=Connection_lost. @@ -2294,3 +2292,8 @@ One_file_found=One_file_found The_import_finished_with_warnings\:=The_import_finished_with_warnings\: There_was_one_file_that_could_not_be_imported.=There_was_one_file_that_could_not_be_imported. There_were_%0_files_which_could_not_be_imported.=There_were_%0_files_which_could_not_be_imported. + +Migration_help_information=Migration_help_information +Entered_database_has_obsolete_structure_and_is_no_longer_supported.=Entered_database_has_obsolete_structure_and_is_no_longer_supported. +However,_a_new_database_was_created_alongside_the_pre-3.6_one.=However,_a_new_database_was_created_alongside_the_pre-3.6_one. +Click_here_to_learn_about_the_migration_of_pre-3.6_databases.=Click_here_to_learn_about_the_migration_of_pre-3.6_databases. diff --git a/src/main/resources/l10n/JabRef_es.properties b/src/main/resources/l10n/JabRef_es.properties index 23939fd2930..fee340698d4 100644 --- a/src/main/resources/l10n/JabRef_es.properties +++ b/src/main/resources/l10n/JabRef_es.properties @@ -1612,8 +1612,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -1660,3 +1658,9 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_fa.properties b/src/main/resources/l10n/JabRef_fa.properties index 8cd0b6f06dd..f0b1113433a 100644 --- a/src/main/resources/l10n/JabRef_fa.properties +++ b/src/main/resources/l10n/JabRef_fa.properties @@ -2392,8 +2392,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -2440,3 +2438,9 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_fr.properties b/src/main/resources/l10n/JabRef_fr.properties index fea2d65bb08..781958fc4b9 100644 --- a/src/main/resources/l10n/JabRef_fr.properties +++ b/src/main/resources/l10n/JabRef_fr.properties @@ -1653,8 +1653,6 @@ Connection_error=Erreur_de_connexion Driver_error=Erreur_de_pilote Connection_to_%0_server_stablished.=Connexion_au_serveur_%0_établie Required_field_"%0"_is_empty.=Le_champ_requis_"%0"_est_vide; -Corrupt_shared_database_structure.=Structure_endommagée_pour_la_base_de_données_partagée. -Integrity_check_failed._Fixing...=Echec_de_la_vérification_d'intégrité._Réparation... %0_driver_not_available.=Pilote_%0_non_disponible. @@ -1708,3 +1706,8 @@ One_file_found=Un_fichier_trouvé The_import_finished_with_warnings\:=L'importation_s'est_terminée_avec_des_messages_d'avertissement\: There_was_one_file_that_could_not_be_imported.=Un_fichier_n'a_pas_pu_être_importé. There_were_%0_files_which_could_not_be_imported.=%0_fichiers_n'ont_pas_pu_être_importés. +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.= diff --git a/src/main/resources/l10n/JabRef_in.properties b/src/main/resources/l10n/JabRef_in.properties index be5398816cb..1154eb48d50 100644 --- a/src/main/resources/l10n/JabRef_in.properties +++ b/src/main/resources/l10n/JabRef_in.properties @@ -1628,8 +1628,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -1676,3 +1674,9 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_it.properties b/src/main/resources/l10n/JabRef_it.properties index d0ce3f4e181..6561589dd4f 100644 --- a/src/main/resources/l10n/JabRef_it.properties +++ b/src/main/resources/l10n/JabRef_it.properties @@ -1729,8 +1729,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -1777,3 +1775,9 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_ja.properties b/src/main/resources/l10n/JabRef_ja.properties index 3f5cc9bb8af..9a8d677b9e8 100644 --- a/src/main/resources/l10n/JabRef_ja.properties +++ b/src/main/resources/l10n/JabRef_ja.properties @@ -2369,8 +2369,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -2417,3 +2415,9 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_nl.properties b/src/main/resources/l10n/JabRef_nl.properties index 2c8ad298728..d724934c512 100644 --- a/src/main/resources/l10n/JabRef_nl.properties +++ b/src/main/resources/l10n/JabRef_nl.properties @@ -2401,8 +2401,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -2449,3 +2447,9 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_no.properties b/src/main/resources/l10n/JabRef_no.properties index c36338f38b4..a52af897cbb 100644 --- a/src/main/resources/l10n/JabRef_no.properties +++ b/src/main/resources/l10n/JabRef_no.properties @@ -2793,8 +2793,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -2841,3 +2839,9 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_pt_BR.properties b/src/main/resources/l10n/JabRef_pt_BR.properties index 0f028bee162..5c79f1d6178 100644 --- a/src/main/resources/l10n/JabRef_pt_BR.properties +++ b/src/main/resources/l10n/JabRef_pt_BR.properties @@ -1625,8 +1625,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -1673,3 +1671,9 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_ru.properties b/src/main/resources/l10n/JabRef_ru.properties index f5423d0866d..fc316a9e1a0 100644 --- a/src/main/resources/l10n/JabRef_ru.properties +++ b/src/main/resources/l10n/JabRef_ru.properties @@ -2370,8 +2370,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -2418,3 +2416,9 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_sv.properties b/src/main/resources/l10n/JabRef_sv.properties index 72e5f2100c4..c5d0aed56a8 100644 --- a/src/main/resources/l10n/JabRef_sv.properties +++ b/src/main/resources/l10n/JabRef_sv.properties @@ -1570,8 +1570,6 @@ Connection_error=Anslutningsfel Driver_error= Connection_to_%0_server_stablished.=Anslutning_till_%0-server_skapades. Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -1620,3 +1618,8 @@ One_file_found=En_fil_hittades The_import_finished_with_warnings\:=Importen_avslutades_med_varningar\: There_was_one_file_that_could_not_be_imported.=Det_fanns_en_fil_som_ej_kunde_importeras. There_were_%0_files_which_could_not_be_imported.=Det_fanns_%0_filer_som_ej_kunde_importeras. +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.= diff --git a/src/main/resources/l10n/JabRef_tr.properties b/src/main/resources/l10n/JabRef_tr.properties index 6496579996f..1677f1af952 100644 --- a/src/main/resources/l10n/JabRef_tr.properties +++ b/src/main/resources/l10n/JabRef_tr.properties @@ -1643,8 +1643,6 @@ Connection_error=Bağlantı_hatası Driver_error=Sürücü_hatası Connection_to_%0_server_stablished.=%0_sunucusuna_bağlantı_sağlandı Required_field_"%0"_is_empty.=Gerekli_alan_"%0"_boş. -Corrupt_shared_database_structure.=Bozuk_paylaşılmış_veritabanı_yapısı. -Integrity_check_failed._Fixing...=Bütünlük_kontrolü_başarısız._Onarılıyor... %0_driver_not_available.=%0_sürücüsü_yok @@ -1693,3 +1691,8 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_vi.properties b/src/main/resources/l10n/JabRef_vi.properties index b63fc3af826..e37e88b02f3 100644 --- a/src/main/resources/l10n/JabRef_vi.properties +++ b/src/main/resources/l10n/JabRef_vi.properties @@ -2396,8 +2396,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -2444,3 +2442,9 @@ 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.= diff --git a/src/main/resources/l10n/JabRef_zh.properties b/src/main/resources/l10n/JabRef_zh.properties index 091be841c32..8a47f957869 100644 --- a/src/main/resources/l10n/JabRef_zh.properties +++ b/src/main/resources/l10n/JabRef_zh.properties @@ -1637,8 +1637,6 @@ Connection_error= Driver_error= Connection_to_%0_server_stablished.= Required_field_"%0"_is_empty.= -Corrupt_shared_database_structure.= -Integrity_check_failed._Fixing...= %0_driver_not_available.= @@ -1685,3 +1683,9 @@ 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.= From be8cec3bac4813f011278bb4fc4e7cc7641e506b Mon Sep 17 00:00:00 2001 From: hakova Date: Tue, 23 Aug 2016 22:08:21 -0500 Subject: [PATCH 4/6] Updated jabref_tr.properties The latest 16 empty values were translated to complete Turkish translation --- src/main/resources/l10n/JabRef_tr.properties | 40 ++++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/main/resources/l10n/JabRef_tr.properties b/src/main/resources/l10n/JabRef_tr.properties index 1677f1af952..0a526c612ad 100644 --- a/src/main/resources/l10n/JabRef_tr.properties +++ b/src/main/resources/l10n/JabRef_tr.properties @@ -167,7 +167,7 @@ cut_entry=girdiyi_kes Database_encoding=Veritabanı_kodlaması Database_properties=Veritabanı_özellikleri -Database_type= +Database_type=Veritabanı_türü Date_format=Tarih_biçemi Default=Öntanımlı Default_encoding=Öntanımlı_kodlama @@ -380,7 +380,7 @@ Invalid_date_format=Geçersiz_tarih_biçemi Invalid_URL=Geçersiz_URL Inverted=Ters_çevrilmiş ISO_abbreviation=ISO_kısaltması -Online_help= +Online_help=Çevrimiçi_yardım JabRef_preferences=JabRef_tercihler Journal_abbreviations=Dergi_kısaltmaları Journal_list_preview=Dergi_listesi_önizleme @@ -399,7 +399,7 @@ Last_modified=Son_değiştirme LaTeX_AUX_file=LaTex_AUX_dosyası Leave_file_in_its_current_directory=Dosyayı_şimdiki_dizininde_bırak Left=Sol -Level= +Level=Düzey Limit_to_fields=Alanlara_kısıtla Limit_to_selected_entries=Seçili_girdilere_kısıtla Link=Link @@ -483,7 +483,7 @@ Open_database=Veritabanı_aç Open_editor_when_a_new_entry_is_created=Yeni_bir_girdi_oluşturulduğunda_düzenleyiciyi_aç Open_file=Dosya_aç Open_last_edited_databases_at_startup=Açılışta_son_düzenlenmiş_veritabanlarını_aç -Open_shared_database= +Open_shared_database=Paylaşılmış_veritabanını_aç Open_terminal_here=Terminali_burada_aç Open_URL_or_DOI=URL_ya_da_DOI_aç Opened_database=Açık_veritabanı @@ -533,7 +533,7 @@ Problem_with_parsing_entry=Girdi_ayrıştırmada_sorun Processing_%0=İşleniyor_%0 Program_output=Program_çıktısı -Pull_changes_from_shared_database= +Pull_changes_from_shared_database=Paylaşılmış_veritabanından_değişiklikleri_çek Pushed_citations_to_%0=Alıntılar_%0'a_itelendi Quit_JabRef=JabRef'ten_çık Quit_synchronization=Eşzamanlamayı_bitir @@ -1489,7 +1489,7 @@ Move_linked_files_to_default_file_directory_%0=Bağlantılı_dosyaları_öntanı Lookup_DOI=DOI_bul -booktitle_ends_with_'conference_on'= +booktitle_ends_with_'conference_on'=kitap_başlığı_'konudaki_konferans'_ile_bitiyor Audio_CD=Müzik_CDsi British_patent=İngiliz_patenti British_patent_request=İngiliz_patent_başvurusu @@ -1558,7 +1558,7 @@ Download_from_URL=URL'den_indir Decryption_not_supported.=Şifre_çözme_desteklenmiyor. -Cleared_'%0'_for_%1_entries= +Cleared_'%0'_for_%1_entries=%1_girdi_için_%0_temizlendi Set_'%0'_to_'%1'_for_%2_entries=%2_girdiler_için_'%0'_'%1'a_ata Toggled_'%0'_for_%1_entries=%1_girdiler_için_'%0'_değiştirildi @@ -1680,19 +1680,19 @@ You_must_enter_at_least_one_field_name=En_az_bir_alan_adı_girmelisiniz Non-ASCII_encoded_character_found=ASCII_koduyla_kodlanmamış_karakter_bulundu -Toggle_web_search_interface= +Toggle_web_search_interface=Ağ_arama_arayüzünü_değiştir -Background_color_for_resolved_fields= -Color_code_for_resolved_fields= +Background_color_for_resolved_fields=Kararlaştırılmış_alanlar_için_arkaplan_rengi +Color_code_for_resolved_fields=Kararlaştırılmış_alanlar_için_renk_kodu -%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.= +%0_files_found=%0_dosya_bulundu +%0_of_%1=%1'in_%0'i +One_file_found=Bir_dosya_bulundu +The_import_finished_with_warnings\:=İçe_aktarım_uyarılarla_bitti\: +There_was_one_file_that_could_not_be_imported.=İçe_aktarılamayan_bir_dosya_mevcuttu. +There_were_%0_files_which_could_not_be_imported.=İçe_aktarılamayan_%0_dosya_mevcuttu. +Migration_help_information=Gçö_yardımı_bilgisi +Entered_database_has_obsolete_structure_and_is_no_longer_supported.=Girilen_veritanbanı_kullanılmayan_yapıya_sahip_ve_artık_desteklenmiyor. +However,_a_new_database_was_created_alongside_the_pre-3.6_one.=Ancak,_3.6_öncesinin_yanı_sıra_yeni_bir_veritabanı_oluşturuldu. -Click_here_to_learn_about_the_migration_of_pre-3.6_databases.= +Click_here_to_learn_about_the_migration_of_pre-3.6_databases.=3.6_öncesi_veritabanlarının_göçünü_öğrenmek_için_burayı_tıklayın. From 9ba3d49585eb2eb6035735f597a44851532f46e9 Mon Sep 17 00:00:00 2001 From: hakova Date: Tue, 23 Aug 2016 22:11:46 -0500 Subject: [PATCH 5/6] Updated Menu_tr.properties Translated the latest 3 empty values to complete Turkish tranlation --- src/main/resources/l10n/Menu_tr.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/l10n/Menu_tr.properties b/src/main/resources/l10n/Menu_tr.properties index 8b124db3fd8..52ca3ec1a47 100644 --- a/src/main/resources/l10n/Menu_tr.properties +++ b/src/main/resources/l10n/Menu_tr.properties @@ -24,7 +24,7 @@ Find_duplicates=Çift_nüshaları_&bul Help=&Yardım Highlight_groups_matching_all_selected_entries=Tüm_seçili_girdilerle_eşleşen_grupları_vurgula Highlight_groups_matching_any_selected_entry=Herhangi_bir_seçili_girdiyle_eşleşen_grupları_vurgula -Online_help= +Online_help=Çevrimiçi_yardım Manage_content_selectors=İçe&rik_seçicileri_yönet Manage_custom_exports=Özel_dışa_aktarı&mları_yönet Manage_custom_imports=Özel_&içe_aktarımları_yönet @@ -37,7 +37,7 @@ New_subdatabase_based_on_AUX_file=AU&X_dosyası_tabanlı_yeni_altveritabanı Next_tab=So&nraki_sekme Open_database=Veritabanı_&Aç Open_URL_or_DOI=&URL_ya_da_DOI_aç -Open_shared_database= +Open_shared_database=Paylaşılmış_veritabanını_aç Open_terminal_here=Terminali_burada_aç Options=Se&çenekler Paste=Ya&pıştır @@ -67,7 +67,7 @@ View=&Görüntüle Import_into_new_database=Yeni_veritabanına_aktar Import_into_current_database=Mevcut_veritabanına_aktar Push_entries_to_external_application_(%0)=Girdileri_harici_uygulamaya_itele_(%0) -Pull_changes_from_shared_database= +Pull_changes_from_shared_database=Paylaşılmış_veritabaınından_değişiklikleri_çek Write_XMP-metadata_to_PDFs=XMP-metaverisini_PDF'ye_yaz Export_selected_entries=Seçili_girdileri_dışa_aktar Save_all=Tümünü_kaydet From fa44fdfe8f548dd8ee0e65a06f2f6cf4390cb62c Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Wed, 24 Aug 2016 16:17:03 +0200 Subject: [PATCH 6/6] Some more Swedish translations (#1836) --- src/main/resources/l10n/JabRef_sv.properties | 140 +++++++++---------- src/main/resources/l10n/Menu_sv.properties | 4 +- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/src/main/resources/l10n/JabRef_sv.properties b/src/main/resources/l10n/JabRef_sv.properties index c5d0aed56a8..58a2cdc8b0e 100644 --- a/src/main/resources/l10n/JabRef_sv.properties +++ b/src/main/resources/l10n/JabRef_sv.properties @@ -45,7 +45,7 @@ Add_new=Lägg_till_ny Add_new_file_type=Lägg_till_ny_filtyp Add_subgroup=Lägg_till_undergrupp Add_to_group=Lägg_till_i_grupp -Add_{}_to_specified_title_words_on_search_to_keep_the_correct_case= +Add_{}_to_specified_title_words_on_search_to_keep_the_correct_case=Lägg_till_{}_runt_skyddade_ord_i_titeln_för_att_bevara_skiftläget_vid_sökning Added_entry=Lade_till_post Added_group_"%0".=Lade_till_gruppen_"%0". Added_new=Lade_till_ny @@ -65,11 +65,11 @@ All_subgroups_(recursively)=Alla_undergrupper_(rekursivt) Allow_overwriting_existing_links.=Tillåt_att_befintliga_länkar_skrivs_över. Always_add_letter_(a,_b,_...)_to_generated_keys=Lägg_alltid_till_en_bokstav_(a,_b_...)_på_genererade_nycklar Always_reformat_BIB_file_on_save_and_export=Formattera_alltid_om_BIB-filen_vid_när_den_sparas_eller_exporteras -Always_use_this_PDF_import_style_(and_do_not_ask_for_each_import)= -An_error_occurred_while_fetching_from_ADS_(%0)\:= +Always_use_this_PDF_import_style_(and_do_not_ask_for_each_import)=Använd_alltid_detta_vid_import_av_PDF_(och_fråga_inte_för_varje_fil) +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 An_exception_occurred_while_accessing_'%0'=Ett_undantag_inträffade_när_'%0'_accessades -A_SAX_exception_occurred_while_parsing_'%0'\:= +A_SAX_exception_occurred_while_parsing_'%0'\:=Ett_SAX-undantag_inträffade_när_'%0'_tolkades\: 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. Appearance=Utseende Append=Lägg_till @@ -107,7 +107,7 @@ Automatically_assign_new_entry_to_selected_groups=Tilldela_automatiskt_nya_poste Automatically_create_groups=Skapa_grupper_automatiskt Automatically_create_groups_for_database.=Skapa_grupper_automatiskt_för_databasen. Automatically_created_groups=Skapade_grupper_automatiskt -Automatically_open_browse_dialog_when_creating_new_file_link= +Automatically_open_browse_dialog_when_creating_new_file_link=Öppna_fildialog_automatiskt_när_ny_fillänk_skapas Automatically_open_folders_of_attached_files=Öppna_automatiskt_mappar_där_filer_som_ska_skickas_med_finns Automatically_remove_exact_duplicates=Ta_bort_exakta_dubbletter_automatiskt Automatically_set_file_links=Skapa_fillänkar_automatiskt @@ -154,7 +154,7 @@ Changed_look_and_feel_settings=Ändra_inställningar_för_look-and-feel Changed_preamble=Ändrade_preamble Changed_special_field_settings=Ändrade_inställningar_för_specialfält Changed_type_to_'%0'_for=Ändrade_typ_till_'%0'_för -Changes_have_been_made_to_the_following_metadata_elements= +Changes_have_been_made_to_the_following_metadata_elements=Ändringar_har_gjorts_i_följande_metadata-element Character_encoding_'%0'_is_not_supported.=Teckenkodningen_'%0'_stöds_inte. Characters_to_ignore=Bokstäver_att_ignorera Check_existing_file_links=Kontrollera_befintliga_fillänkar @@ -183,7 +183,7 @@ Clear_rank=Rensa_ranking Clear_read_status=Rensa_lässtatus Clear_search=Rensa_sökning Cleared_connection_settings.=Rensade_anslutningsinställningar. -Click_group_to_toggle_membership_of_selected_entries= +Click_group_to_toggle_membership_of_selected_entries=Klicka_grupp_för_att_växla_valda_posters_tillhörighet Clipboard=Urklipp Close=Stäng Close_all=Stäng_alla @@ -211,7 +211,7 @@ Contained_in=Finns_i Content=Innehåll Continue?=Fortsätt? Convert=Konvertera -Convert_to_BibLatex_format_(for_example,_move_the_value_of_the_'journal'_field_to_'journaltitle')= +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) Converts_units_to_LaTeX_formatting.=Formatterar_enheter_så_att_det_ser_bra_ut Copied=Kopierade Copied_cell_contents=Kopierade_cellinnehåll @@ -228,14 +228,14 @@ Correct_the_entry,_and_reopen_editor_to_display/edit_source.= Could_not_apply_changes.=Kunde_inte_tillämpa_inte_ändringar. Could_not_call_executable=Kunde_inte_anropa_program Could_not_connect_to_%0=Kunde_inte_ansluta_till_%0 -Could_not_connect_to_Vim_server._Make_sure_that_Vim_is_running
with_correct_server_name.= +Could_not_connect_to_Vim_server._Make_sure_that_Vim_is_running
with_correct_server_name.=Kunde_inte_ansluta_till_Vim-servern._Se_till_att_Vim_körs_med_rätt_servernamn. Could_not_connect_to_a_running_gnuserv_process._Make_sure_that_Emacs_or_XEmacs_is_running,
and_that_the_server_has_been_started_(by_running_the_command_'server-start'/'gnuserv-start').= Could_not_connect_to_running_OpenOffice/LibreOffice.=Kunde_inte_ansluta_till_OpenOffice/LibreOffice. Could_not_export_file=Kunde_inte_exportera_filen Could_not_export_preferences=Kunde_inte_exportera_inställningar Could_not_find_OpenOffice/LibreOffice_installation=Kunde_inte_hitta_någon_OpenOffice/LibreOffice-installation Could_not_find_a_suitable_import_format.=Kunde_inte_hitta_ett_lämpligt_importformat. -Could_not_find_fetcher_'%0'= +Could_not_find_fetcher_'%0'=Kunde_inte_hitta_hämtaren_'%0' Could_not_find_file_'%0'.=Kunde_inte_hitta_filen_'%0'. Could_not_import_preferences=Kunde_inte_importera_inställningar Could_not_instantiate_%0._Have_you_chosen_the_correct_package_path?=Kunde_inte_instansiera_%0._Har_du_valt_rätt_sökväg? @@ -270,10 +270,10 @@ Customize_key_bindings=Anpassa_tangentbordsbindningar Cut=Klipp Database_'%0'_has_changed.=Databasen_'%0'_har_ändrats. Database_encoding=Teckenkodning_för_databas -Database_is_protected._Cannot_save_until_external_changes_have_been_reviewed.= +Database_is_protected._Cannot_save_until_external_changes_have_been_reviewed.=Databasen_är_skyddad._Kan_inte_spara_innan_externa_ändringar_är_kontrollerade. Database_properties=Databasegenskaper -Database_type= +Database_type=Databastyp Database_protection=Databasskydd Date_format=Datumformat Decrease_table_font_size=Minska_typsnittsstorlek_för_tabellen @@ -339,7 +339,7 @@ Download_failed=Nedladdning_misslyckades Download_file=Ladda_ned_fil Downloading...=Laddar_ned... -Drop_%0= +Drop_%0=Släpp_%0 Duplicate_BibTeX_key=Dubblerad_BibTeX-nyckel Duplicate_string_name=Dubblerat_strängnamn Duplicates_found=Dubbletter_hittades @@ -368,7 +368,7 @@ Ensure_unique_keys_using_letters_(b,_c,_...)=Garantera_unika_nycklar_med_bokstä Enter_URL=Ange_URL Enter_URL_to_download=Ange_URL_att_ladda_ned Entries_added_to_an_email=Poster_lades_till_ett_epostmeddelande -Entries_cannot_be_manually_assigned_to_or_removed_from_this_group.= +Entries_cannot_be_manually_assigned_to_or_removed_from_this_group.=Poster_kan_inte_manuellt_tilldelas_eller_tas_bort_från_denna_grupp. Entries_exported_to_clipboard=Poster_exporterades_till_urklipp Entry_editor,_next_entry=Posteditor,_nästa_post Entry_editor,_next_panel=Posteditor,_nästa_panel @@ -400,9 +400,9 @@ Error_opening_file=Fel_vid_öppning_av_fil Error_opening_file_'%0'.=Fel_vid_öppning_av_fil_'%0'. Error_setting_field= -Error_while_fetching_from_%0= -Error_while_writing= -Error_writing_to_%0_file(s).= +Error_while_fetching_from_%0=Fel_vid_hämtning_från_%0 +Error_while_writing=Fel_vid_skrivning +Error_writing_to_%0_file(s).=Fel_vid_skrivning_till_%0_fil(er). Exceptions=Undantag Existing_file=Existerande_fil Expand_all=Expandera_alla @@ -430,9 +430,9 @@ External_viewer_called=Öppnar_i_externt_program Extra_information=Extrainformation Extra_information_(e.g._page_number)=Extrainformation_(t._ex._sidnummer) Fetch=Hämta -Fetching_Medline_by_id...= -Fetching_Medline_by_term...= -Fetching_entries_from_Inspire= +Fetching_Medline_by_id...=Hämta_från_Medline_med_id... +Fetching_Medline_by_term...=Hämta_från_Medline_med_sökterm... +Fetching_entries_from_Inspire=Hämtar_poster_från_Inspire Field=Fält Field_is_missing=Fält_saknas Field_name=Fältnamn @@ -467,11 +467,11 @@ Find_unlinked_files=Hitta_olänkade_filer Finished_automatically_setting_external_links.= Finished_downloading_full_text_document=Nedladdning_av_dokument_avslutad Finished_resolving_duplicate_BibTeX_keys._%0_entries_modified.= -Finished_synchronizing_file_links._Entries_changed\:_%0.= -Finished_writing_XMP-metadata._Wrote_to_%0_file(s).= +Finished_synchronizing_file_links._Entries_changed\:_%0.=Synkronisering_av_fillänkar_avslutad._Ändrade_poster\:_%0. +Finished_writing_XMP-metadata._Wrote_to_%0_file(s).=Skrivning_av_XMP-metadata_avslutad._Skrev_till_%0_fil(er). Finished_writing_XMP_for_%0_file_(%1_skipped,_%2_errors).= First_select_entries_to_clean_up.=Välj_först_de_poster_som_du_vill_städa_upp. -First_select_the_entries_you_want_keys_to_be_generated_for.= +First_select_the_entries_you_want_keys_to_be_generated_for.=Välj_först_de_poster_du_vill_generera_nycklar_för. Fit_table_horizontally_on_screen= Five_stars=Fem_stjärnor Float=Visa_först @@ -514,12 +514,12 @@ Get_BibTeX_entry_from_DiVA=Hämta_BibTeX-post_från_DIVA Grab= Gray_out_entries_not_in_group_selection=Skugga_poster_som_inte_är_med_i_en_grupp Gray_out_non-hits=Skugga_icke-träffar -Group_tree_could_not_be_parsed._If_you_save_the_BibTeX_database,_all_groups_will_be_lost.= +Group_tree_could_not_be_parsed._If_you_save_the_BibTeX_database,_all_groups_will_be_lost.=Gruppträdet_kunde_inte_läsas_in._Om_du_sparar_din_databas_kommer_alla_grupper_att_förloras. Grouping_may_not_work_for_this_entry.=Grupper_kanske_inte_fungerar_för_denna_post. Groups=Grupper HTML_list=HTML-lista HTML_table=HTML-tabell -HTML_table_(with_Abstract_&_BibTeX)= +HTML_table_(with_Abstract_&_BibTeX)=HTML-tabell_(med_sammanfattning_och_BibTeX-post) Have_you_chosen_the_correct_package_path?=Har_du_valt_rätt_sökväg_till_paketet? Help=Hjälp Help_on_Name_Formatting=Hjälp_för_namnformattering @@ -529,7 +529,7 @@ Help_on_key_patterns=Hjälp_för_nyckelmönster Help_on_special_fields=Hjälp_för_specialfält Hide/show_toolbar=Dölj/visa_verktygslist Hide_non-hits=Dölj_icke-träffar -Hierarchical_context= +Hierarchical_context=Hierarkiskt_sammanhang Highlight=Framhäv Highlight_groups_matching_all_selected_entries=Framhäv_grupper_som_matchar_alla_valda_poster Highlight_groups_matching_any_selected_entry=Framhäv_grupper_som_matchar_någon_vald_poster @@ -541,27 +541,27 @@ How_would_you_like_to_link_to_'%0'?=Hur_vill_du_länka_till_'%0'? ISO_abbreviation=ISO-förkortning Icon=Ikon If_a_pasted_or_imported_entry_already_has_the_field_set,_overwrite.= -If_connecting_manually,_please_verify_program_and_library_paths.= +If_connecting_manually,_please_verify_program_and_library_paths.=Om_du_ansluter_manuellt,_kontrollera_sökvägar_till_program_och_bibliotek. If_possible,_normalize_this_list_of_names_to_conform_to_standard_BibTeX_name_formatting= Ignore=Ignorera Ill-formed_entrytype_comment_in_BIB_file= Immediate_subgroups= Import=Importera -ImportFormat_class= +ImportFormat_class=ImportFormat-klass Import_metadata_from_PDF=Importera_metadata_från_PDF Import_and_keep_old_entry=Importera_och_behåll_gammal_post Import_and_remove_old_entry=Importera_och_ta_bort_gammal_post Import_canceled_by_user=Import_avbröts_av_användare -Import_conversions= +Import_conversions=Konverteringar_vid_import Import_entries=Importera_poster Import_failed=Importen_misslyckades Import_file=Importera_fil -Import_group_definitions= +Import_group_definitions=Importera_gruppdefinitioner Import_into_current_database=Importera_till_nuvarande_databas Import_into_new_database=Importera_till_ny_databas Import_marking_color=Färg_för_importerade_poster Import_metadata_from\:=Importera_metadata_från\: -Import_name= +Import_name=Importnamn Import_preferences=Importera_inställningar Import_preferences_from_file=Importera_inställningar_från_fil Import_strings=Importera_strängar @@ -577,11 +577,11 @@ Include_entries=Inkludera_poster Include_subgroups\:_When_selected,_view_entries_contained_in_this_group_or_its_subgroups= Increase_table_font_size=Öka_typsnittsstorlek_för_tabellen Independent_group\:_When_selected,_view_only_this_group's_entries= -Initially_show_groups_tree_expanded= +Initially_show_groups_tree_expanded=Visa_gruppträdet_expanderat_från_början Input_error=Inmatningsfel Insert=Infoga -Insert_a_citation_without_text_(the_entry_will_appear_in_the_reference_list)= +Insert_a_citation_without_text_(the_entry_will_appear_in_the_reference_list)=Infoga_en_citering_utan_text_(posten_kommer_visas_i_referenslistan) Insert_empty_citation=Infoga_tom_citering Insert_rows=Infoga_rader Intersection=Snitt @@ -621,8 +621,8 @@ Level=Nivå Left_entry=Vänster_post Limit_to_fields=Begränsa_till_fält Limit_to_selected_entries=Begränsa_till_valda_poster -Line_%0\:_Found_corrupted_BibTeX_key.= -Line_%0\:_Found_corrupted_BibTeX_key_(comma_missing).= +Line_%0\:_Found_corrupted_BibTeX_key.=Rad_%0\:_Hittade_felaktig_BibTeX-nyckel. +Line_%0\:_Found_corrupted_BibTeX_key_(comma_missing).=Rad_%0\:_Hittade_felaktig_BibTeX-nyckel_(kommatecken_saknas). Line_%0\:_Found_corrupted_BibTeX_key_(contains_whitespaces).= Link=Länk Link_local_file=Länka_till_lokal_fil @@ -675,7 +675,7 @@ Modified_string=Ändrad_sträng Modify=Ändra Move/Rename_file=Flytta/Döp om fil Move=Flytta -Move_DOIs_from_note_and_URL_field_to_DOI_field_and_remove_http_prefix= +Move_DOIs_from_note_and_URL_field_to_DOI_field_and_remove_http_prefix=Flytta_DOIs_från_'note'-_och_'URL'-fälten_till_'DOI'-fältet_samt_ta_bort_http-prefix Move_contents_of_a_field_into_a_field_with_a_different_name=Flytta_innehållet_i_ett_fält_till_ett_fält_med_ett_annat_namn Move_down=Flytta_nedåt Move_entries_in_group_selection_to_the_top= @@ -683,11 +683,11 @@ Move_external_links_to_'file'_field=Flytta_externa_länkar_till_'file'-fältet Move_file_failed=Gick_inte_att_flytta_fil Move_file_to_file_directory=Flytta_fil_till_filmapp Move_file_to_file_directory?=Flytta_fil_till_filmapp? -Move_the_keyboard_focus_to_the_entry_table= +Move_the_keyboard_focus_to_the_entry_table=Flytta_tangentbordsfokus_till_tabellen Move_to_group=Flytta_till_grupp Move_up=Flytta_uppåt Moved_group_"%0".=Flyttade_grupp_"%0" -Multiple_entries_selected._Do_you_want_to_change_the_type_of_all_these_to_'%0'?= +Multiple_entries_selected._Do_you_want_to_change_the_type_of_all_these_to_'%0'?=Flera_poster_valda._Vill_du_ändra_typen_för_alla_dessa_till_'%0'? Name=Namn Name_format_used_for_autocompletion=Namnformat_för_automatisk_komplettering Name_formatter=Namnformattering @@ -706,7 +706,7 @@ New_entry=Ny_post New_field_value=Nytt_fältvärde New_file=Ny_fil New_file_link_(INSERT)=Ny_fillänk_(INFOGA) -New_from_plain_text= +New_from_plain_text=Ny_från_text New_group=Ny_grupp New_inbook=Ny_inbook-post New_mastersthesis=Ny_mastersthesis-post @@ -743,13 +743,13 @@ No_URL_defined=Ingen_URL_angiven No_valid_style_file_defined=Ingen_giltig_stilfil_definierad None= None_of_the_selected_entries_have_BibTeX_keys.=Ingen_av_de_valda_posterna_har_någon_BibTeX-nyckel. -Normal_search_active.= +Normal_search_active.=Normal_sökning_aktiv. Normalize_to_BibTeX_name_format= Not_connected_to_any_Writer_document._Please_make_sure_a_document_is_open,_and_use_the_'Select_Writer_document'_button_to_connect_to_it.= Not_overwriting_existing_key._To_change_this_setting,_open_Options_->_Prefererences_->_BibTeX_key_generator= Note\:_A_full_text_search_is_currently_not_supported_for_%0= Note_that_you_must_specify_the_fully_qualified_class_name_for_the_look_and_feel,= -Nothing_to_redo= +Nothing_to_redo=Inget_att_göra_om. Nothing_to_undo=Inget_att_ångra. Number_of_entries_successfully_imported=Antal_poster_som_lyckades_importeras Number_of_references_to_fetch?=Antal_referenser_som_ska_hämtas? @@ -757,7 +757,7 @@ OK=OK Old_entry=Gammal_post One_entry_needed_a_clean_up=En_post_behövde_städas_upp One_or_more_file_links_are_of_the_type_'%0',_which_is_undefined._What_do_you_want_to_do?= -One_or_more_keys_will_be_overwritten._Continue?= +One_or_more_keys_will_be_overwritten._Continue?=En_eller_flera_BibTeX-nycklar_kommer_skrivas_över._Fortsätt? One_star=En_stjärna Only_attach_PDF=Lägg_bara_till_PDF @@ -774,7 +774,7 @@ Open_editor_when_a_new_entry_is_created=Öppna_posteditorn_när_en_ny_post_skapa Open_file=Öppna_fil Open_folder=Öppna_mapp Open_last_edited_databases_at_startup=Öppna_senast_använda_databaser_vid_uppstart -Open_shared_database= +Open_shared_database=Öppna_delad_databas Open_terminal_here=Öppna_skalfönster_här Opened_database=Öppnade_databas Opening=Öppnar @@ -822,7 +822,7 @@ Please_enter_a_name_for_the_group.=Ange_ett_namn_för_gruppen. Please_enter_a_search_string=Ange_en_söksträng Please_enter_a_search_term._For_example,_to_search_all_fields_for_Smith,_enter\:

smith

To_search_the_field_Author_for_Smith_and_the_field_Title_for_electrical,_enter\:

author\=smith_and_title\=electrical= Please_enter_a_valid_number=Ange_ett_giltigt_tal -Please_enter_the_field_to_search_(e.g._keywords)_and_the_keyword_to_search_it_for_(e.g._electrical).= +Please_enter_the_field_to_search_(e.g._keywords)_and_the_keyword_to_search_it_for_(e.g._electrical).=Ange_fält_att_söka_i_(t._ex._keywords)_och_termen_att_söka_efter_i_det_(t._ex._electrical). Please_enter_the_string's_label=Ange_namnet_på_strängen Please_move_the_file_manually_and_link_in_place.= Please_open_or_start_a_new_database_before_searching=Öppna_eller_skapa_en_ny_databas_innan_sökning. @@ -853,7 +853,7 @@ Processing_%0=Behandlar_%0 Program_output= Progress\:_%0_of_%1=Händelseförlopp\:_%0_av_%1 Prompt_before_recovering_a_database_from_an_autosave_file=Meddela_innan_en_databas_återskapas_från_en_automatiskt_sparad_fil -Pull_changes_from_shared_database= +Pull_changes_from_shared_database=Hämta_ändringar_från_delad_databas Protected_database=Skyddad_databas Proxy_requires_authentication=Proxyn_kräver_autentisering Push_to_%0=Infoga_i_%0 @@ -880,7 +880,7 @@ References=Referenser References_found=Referenser_hittade Refine_supergroup\:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup= Refresh_OpenOffice/LibreOffice=Uppdatera_OpenOffice/LibreOffice -Refuse_to_save_the_database_before_external_changes_have_been_reviewed.= +Refuse_to_save_the_database_before_external_changes_have_been_reviewed.=Vägra_att_spara_databasen_innan_externa_ändringar_har_kontrollerats. Regenerate_all_keys_for_the_entries_in_a_BibTeX_file=Generera_BibTeX-nycklar_för_alla_poster_i_en_BibTeX-fil Regenerating_BibTeX_keys_according_to_metadata=Generera_BibTeX-nycklar_enligt_metadata Relevance=Relevans @@ -891,8 +891,8 @@ Remove=Ta_bort Remove_selected=Ta_bort_valda Remove_all_broken_links=Ta_bort_alla_trasiga_länkar Remove_all_subgroups_of_"%0"?=Ta_bort_alla_undergrupper_till_"%0"? -Remove_entry_from_import= -Remove_entry_selection_from_this_group= +Remove_entry_from_import=Ta_bort_post_från_import +Remove_entry_selection_from_this_group=Ta_bort_valda_poster_från_denna_grupp Remove_entry_type=Ta_bort_posttyp Remove_file_link_(DELETE)=Ta_bort_fillänk_(RADERA) Remove_from_group=Ta_bort_från_grupp @@ -930,14 +930,14 @@ Reset_preferences_(key1,key2,..._or_'all')=Återställ_inställningar_(nyckel1,n Resetting_all_key_bindings=Återställer_alla_tangentbordsbindningar Resetting_preference_key_'%0'=Återställer_inställningsvärde_'%0' Resolve_duplicate_BibTeX_keys=Hantera_BibTeX-nyckeldubbletter -Resolve_strings_for_all_fields_except= -Resolve_strings_for_standard_BibTeX_fields_only= +Resolve_strings_for_all_fields_except=Ersätt_strängar_för_alla_fält_utom +Resolve_strings_for_standard_BibTeX_fields_only=Ersätt_bara_strängar_för_de_vanliga_BibTeX-fälten Resolving_duplicate_BibTeX_keys...= Result=Resultat Return_to_JabRef=Återgå_till_JabRef Revert_to_original_source= Review= -Review_changes=Inspektera_ändringar +Review_changes=Kontrollera_ändringar Right=Höger Right_entry=Höger_post Run_fetcher,_e.g._"--fetch\=Medline\:cancer"= @@ -1006,7 +1006,7 @@ Selected_entries=Valda_poster Send_as_email=Skicka_som_epost Sending_of_emails=Skicka_epost Set_connection_parameters=Sätt_anslutningsinställningar -Set/clear/rename_fields= +Set/clear/rename_fields=Sätt/rensa/byt_namn_på_fält Set_field=Sätt_fält Set_fields=Sätt_fält Set_general_fields=Sätt_generella_fält @@ -1080,7 +1080,7 @@ Style_selection=Stilval Subdatabase_from_AUX=Databas_baserad_på_AUX-fil Subject_for_sending_an_email_with_references=Ämne_för_epost_med_referenser Switch_preview_layout=Byt_postvisningsstil -Switches_between_full_and_abbreviated_journal_name_if_the_journal_name_is_known.= +Switches_between_full_and_abbreviated_journal_name_if_the_journal_name_is_known.=Växlar_mellan_fullt_och_förkortat_tidskiftsnamn_om_tidskriften_är_känd. Sync_OpenOffice/LibreOffice_bibliography=Synka_OpenOffic/LibreOffice-bibliografi Synchronize_file_links=Synkronisera_fillänkar Synchronize_files=Synkronisera_filer @@ -1124,7 +1124,7 @@ The_string_has_been_removed_locally=Strängen_har_tagit_bort_lokalt There_are_possible_duplicates_(marked_with_an_icon)_that_haven't_been_resolved._Continue?= These_files_are_not_linked_in_the_active_database.=Dessa_filerna_är_inte_länkade_i_den_aktiva_databasen. This_action_will_modify_the_following_field(s)_in_at_least_one_entry_each\:= -This_could_cause_undesired_changes_to_your_entries.= +This_could_cause_undesired_changes_to_your_entries.=Detta_kan_leda_till_oönskade_effekter_för_dina_poster. This_database_contains_one_or_more_duplicated_BibTeX_keys.=Denna_databas_innehåller_en_eller_flera_BibTeX-nyckeldubbletter. This_database_uses_outdated_file_links.=Denna_databas_använder_utdaterade_fillänkar. This_entry_has_no_BibTeX_key._Generate_key_now?=Denna_post_har_ingen_BibTeX-nyckel._Generera_en_nu? @@ -1162,7 +1162,7 @@ Unabbreviate_journal_names=Expandera_förkortade_tidskriftsnamn Unabbreviate_journal_names_of_the_selected_entries=Expandera_förkortade_tidskriftsnamn_för_de_valda_posterna Unabbreviated_%0_journal_names.=Expanderade_%0_förkortade_tidskriftsnamn. Unabbreviating...=Expanderar_förkortningar... -Unable_to_autodetect_OpenOffice/LibreOffice_installation._Please_choose_the_installation_directory_manually.= +Unable_to_autodetect_OpenOffice/LibreOffice_installation._Please_choose_the_installation_directory_manually.=Kan_inte_hitta_OpenOffice/LibreOffice._Ställ_in_sökvägar_manuellt. Unable_to_clear_preferences.=Kan_inte_rensa_inställningar. 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.= Unable_to_connect_to_FreeCite_online_service.= @@ -1170,7 +1170,7 @@ Unable_to_create_backup=Kan_inte_skapa_säkerhetskopia Unable_to_find_the_requested_look_and_feel_and_thus_the_default_one_is_used.= Unable_to_open_file.=Kan_inte_öppna_fil. Unable_to_open_link.=Kan_inte_öppna_länk. -Unable_to_open_link._The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.= +Unable_to_open_link._The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=Kan_inte_öppna_länk._Programmet_'%0'_som_är_satt_för_filtypen_'%1'_kunde_inte_anropas. Unable_to_save_database=Kan_inte_spara_databas Unable_to_synchronize_bibliography=Kan_inte_synkronisera_bibliografi Undefined_file_type=Odefinierad_filtyp @@ -1198,7 +1198,7 @@ Update_timestamp_on_modification=Uppdatera_tidsstämpeln_efter_ändring Update_to_current_column_order=Uppdatera_till_aktuell_kolumnordning Update_to_current_column_widths=Uppdatera_till_aktuella_kolumnbredder Updated_group_selection= -Upgrade_external_PDF/PS_links_to_use_the_'%0'_field.= +Upgrade_external_PDF/PS_links_to_use_the_'%0'_field.=Uppgradera_PDF/PS-länkar_att_använda_'%0'-fältet. Upgrade_file=Uppgradera_fil Upgrade_old_external_file_links_to_use_the_new_feature= Usage=Användning @@ -1234,7 +1234,7 @@ What_would_you_like_to_clean_up?=Vad_vill_du_städa_upp? When_adding/removing_keywords,_separate_them_by=När_nyckelord_läggs_till/tas_bort,_separera_dem_med When_downloading_files,_or_moving_linked_files_to_the_file_directory,_prefer_the_BIB_file_location_rather_than_the_file_directory_set_above= When_opening_file_link,_search_for_matching_file_if_no_link_is_defined= -Will_write_XMP-metadata_to_the_PDFs_linked_from_selected_entries.= +Will_write_XMP-metadata_to_the_PDFs_linked_from_selected_entries.=Kommer_skriva_XMP-metadata_till_PDFer_länkade_från_valda_poster. Work_options= Write_BibTeXEntry_as_XMP-metadata_to_PDF.=Skriv_BibTeX-posten_som_XMP-metadata_i_PDF. Write_XMP-metadata=Skriv_XMP-metadata @@ -1569,7 +1569,7 @@ User=Användare Connection_error=Anslutningsfel Driver_error= Connection_to_%0_server_stablished.=Anslutning_till_%0-server_skapades. -Required_field_"%0"_is_empty.= +Required_field_"%0"_is_empty.=Det_obligatoriska_fältet_"%0"_är_tomt. %0_driver_not_available.= @@ -1577,18 +1577,18 @@ The_connection_to_the_server_has_been_determinated.=Anslutningen_till_servern_av Connection_lost.=Anslutningen_förlorades. Reconnect=Anslut_igen -Work_offline= +Work_offline=Arbeta_frånkopplad -Working_offline.= +Working_offline.=Arbetar_frånkopplad. -Update_refused.= -Update_refused= -Local_entry= -Shared_entry= +Update_refused.=Uppdateringen_avvisades. +Update_refused=Uppdateringen_avvisades +Local_entry=Lokal_post +Shared_entry=Delad_post 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= +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?= The_BibEntry_you_currently_work_on_has_been_deleted_on_the_shared_side._Hit_"Keep"_to_recover_the_entry.= @@ -1607,7 +1607,7 @@ You_must_enter_at_least_one_field_name=Du_måste_ange_minst_ett_fältnamn Non-ASCII_encoded_character_found=Bokstäver_som_inte_är_ASCII-kodade_hittades -Toggle_web_search_interface= +Toggle_web_search_interface=Växla_webbsökning Background_color_for_resolved_fields=Bakgrundsfärg_för_uppslagna_fält Color_code_for_resolved_fields=Färgkodning_av_uppslagna_fält @@ -1618,8 +1618,8 @@ One_file_found=En_fil_hittades The_import_finished_with_warnings\:=Importen_avslutades_med_varningar\: There_was_one_file_that_could_not_be_imported.=Det_fanns_en_fil_som_ej_kunde_importeras. There_were_%0_files_which_could_not_be_imported.=Det_fanns_%0_filer_som_ej_kunde_importeras. -Migration_help_information= +Migration_help_information=Migrationshjälp 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.= +Click_here_to_learn_about_the_migration_of_pre-3.6_databases.=Klicka_här_för_att_se_mer_information_om_migration_av_databaser_från_innan_version_3.6. diff --git a/src/main/resources/l10n/Menu_sv.properties b/src/main/resources/l10n/Menu_sv.properties index 5c007cb0d6c..7040e2ce813 100644 --- a/src/main/resources/l10n/Menu_sv.properties +++ b/src/main/resources/l10n/Menu_sv.properties @@ -38,7 +38,7 @@ New_subdatabase_based_on_AUX_file=&Ny_databas_baserad_på_AUX-fil Next_tab=&Nästa_flik Open_database=&Öppna_databas Open_URL_or_DOI=Öppna_&URL_eller_DOI -Open_shared_database= +Open_shared_database=Öppna_delad_databas Open_terminal_here=Öppna_&skalfönster_här Options=&Alternativ Paste=Klistra_in @@ -70,7 +70,7 @@ Import_into_new_database=Importera_till_ny_databas Import_into_current_database=Importera_till_aktuell_databas Switch_to_%0_mode=Byt_till_%0-läge Push_entries_to_external_application_(%0)=Infoga_&citeringar_i_externt_program_(%0) -Pull_changes_from_shared_database= +Pull_changes_from_shared_database=Hämta_ändringar_från_delad_databas Write_XMP-metadata_to_PDFs=Skriv_XMP-metadata_till_PDFer Export_selected_entries=E&xportera_valda_poster Save_all=S¶_alla