added more german i18n
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 25 Apr 2008 19:00:08 +0000 (19:00 +0000)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 25 Apr 2008 19:00:08 +0000 (19:00 +0000)
fixed lots of untranslated texts

git-svn-id: http://trooper/svn/projects/jSite/trunk@764 c3eda9e8-030b-0410-8277-bc7414b0a119

src/net/pterodactylus/jsite/gui/AboutDialog.java
src/net/pterodactylus/jsite/gui/ConfigurationDialog.java
src/net/pterodactylus/jsite/gui/MainWindow.java
src/net/pterodactylus/jsite/gui/SwingInterface.java
src/net/pterodactylus/jsite/i18n/jSite.properties
src/net/pterodactylus/jsite/i18n/jSite_de.properties

index 3601733..abfa166 100644 (file)
@@ -53,7 +53,7 @@ import net.pterodactylus.util.swing.SwingUtils;
 
 /**
  * An “about” dialog.
- * 
+ *
  * @author David ‘Bombe’ Roden &lt;bombe@freenetproject.org&gt;
  * @version $Id$
  */
@@ -81,9 +81,12 @@ public class AboutDialog extends JDialog implements I18nable {
        /** The license header. */
        private I18nLabel licenseHeaderLabel;
 
+       /** The tabbed pane with all the pages. */
+       private JTabbedPane pagesPane;
+
        /**
         * Creates a new “about” dialog.
-        * 
+        *
         * @param swingInterface
         *            The Swing interface
         */
@@ -105,6 +108,7 @@ public class AboutDialog extends JDialog implements I18nable {
         */
        private void initActions() {
                okayAction = new I18nAction("general.button.okay") {
+
                        /**
                         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
                         */
@@ -123,13 +127,13 @@ public class AboutDialog extends JDialog implements I18nable {
                getContentPane().add(contentPane, BorderLayout.CENTER);
                contentPane.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
 
-               JTabbedPane tabbedPane = new JTabbedPane(SwingConstants.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
-               contentPane.add(tabbedPane, BorderLayout.CENTER);
+               pagesPane = new JTabbedPane(SwingConstants.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
+               contentPane.add(pagesPane, BorderLayout.CENTER);
 
-               tabbedPane.addTab(I18n.get("aboutDialog.page.about.title"), createAboutPage());
-               tabbedPane.setToolTipTextAt(0, I18n.get("aboutDialog.page.about.shortDescription"));
-               tabbedPane.addTab(I18n.get("aboutDialog.page.license.title"), createLicensePage());
-               tabbedPane.setToolTipTextAt(1, I18n.get("aboutDialog.page.license.shortDescription"));
+               pagesPane.addTab(I18n.get("aboutDialog.page.about.title"), createAboutPage());
+               pagesPane.setToolTipTextAt(0, I18n.get("aboutDialog.page.about.shortDescription"));
+               pagesPane.addTab(I18n.get("aboutDialog.page.license.title"), createLicensePage());
+               pagesPane.setToolTipTextAt(1, I18n.get("aboutDialog.page.license.shortDescription"));
 
                JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
                contentPane.add(buttonPanel, BorderLayout.PAGE_END);
@@ -138,7 +142,7 @@ public class AboutDialog extends JDialog implements I18nable {
 
        /**
         * Creates the “about” page.
-        * 
+        *
         * @return The “about” page
         */
        private JComponent createAboutPage() {
@@ -179,7 +183,7 @@ public class AboutDialog extends JDialog implements I18nable {
 
        /**
         * Creates the “license” page.
-        * 
+        *
         * @return The “license” page
         */
        private JComponent createLicensePage() {
@@ -201,7 +205,7 @@ public class AboutDialog extends JDialog implements I18nable {
 
        /**
         * Loads the license text.
-        * 
+        *
         * @return The license text
         */
        private String loadLicenseText() {
@@ -249,12 +253,16 @@ public class AboutDialog extends JDialog implements I18nable {
                i18nMaintainerNameLabel.setText(I18n.get("i18n.maintainer.name") + " <" + I18n.get("i18n.maintainer.email") + ">");
                okayAction.updateI18n();
                setTitle(I18n.get("aboutDialog.title"));
+               pagesPane.setTitleAt(0, I18n.get("aboutDialog.page.about.title"));
+               pagesPane.setToolTipTextAt(0, I18n.get("aboutDialog.page.about.shortDescription"));
+               pagesPane.setTitleAt(1, I18n.get("aboutDialog.page.license.title"));
+               pagesPane.setToolTipTextAt(1, I18n.get("aboutDialog.page.license.shortDescription"));
                SwingUtils.repackCentered(this);
        }
 
        /**
         * Container for a contributor.
-        * 
+        *
         * @author David ‘Bombe’ Roden &lt;bombe@freenetproject.org&gt;
         * @version $Id$
         */
@@ -271,7 +279,7 @@ public class AboutDialog extends JDialog implements I18nable {
 
                /**
                 * Creates a new contributor.
-                * 
+                *
                 * @param name
                 *            The name of the contributor
                 * @param email
@@ -287,7 +295,7 @@ public class AboutDialog extends JDialog implements I18nable {
 
                /**
                 * Returns the name of the contributor.
-                * 
+                *
                 * @return The name of the contributor
                 */
                String getName() {
@@ -296,7 +304,7 @@ public class AboutDialog extends JDialog implements I18nable {
 
                /**
                 * Returns the email address of the contributor.
-                * 
+                *
                 * @return The email address of the contributor
                 */
                String getEmail() {
@@ -305,7 +313,7 @@ public class AboutDialog extends JDialog implements I18nable {
 
                /**
                 * Returns the parts where the contributor helped.
-                * 
+                *
                 * @return The parts where the contributor helped
                 */
                String getPart() {
index c512c46..a65947d 100644 (file)
@@ -23,6 +23,7 @@ import javax.swing.SwingConstants;
 import net.pterodactylus.jsite.i18n.I18n;
 import net.pterodactylus.jsite.i18n.I18nable;
 import net.pterodactylus.jsite.i18n.gui.I18nAction;
+import net.pterodactylus.jsite.i18n.gui.I18nLabel;
 import net.pterodactylus.util.swing.SwingUtils;
 
 /**
@@ -48,6 +49,9 @@ public class ConfigurationDialog extends JDialog implements I18nable {
        /** The “use custom user font” action. */
        private I18nAction useCustomUserFontAction;
 
+       /** The “restart required” warning label. */
+       private I18nLabel restartRequiredLabel;
+
        /** The “beautify” checkbox. */
        private JCheckBox antialiasCheckBox;
 
@@ -192,7 +196,7 @@ public class ConfigurationDialog extends JDialog implements I18nable {
                                actionCancel();
                        }
                };
-               antialiasAction = new I18nAction("configurationDialog.page.interface.item.beautify") {
+               antialiasAction = new I18nAction("configurationDialog.page.interface.item.antialias") {
 
                        /**
                         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
@@ -256,22 +260,25 @@ public class ConfigurationDialog extends JDialog implements I18nable {
                JPanel interfaceConfigPanel = new JPanel(new GridBagLayout());
                interfaceConfigPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
 
+               restartRequiredLabel = new I18nLabel("configurationDialog.page.interface.item.restartRequired");
+               interfaceConfigPanel.add(restartRequiredLabel, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
+
                antialiasCheckBox = new JCheckBox(antialiasAction);
-               interfaceConfigPanel.add(antialiasCheckBox, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
+               interfaceConfigPanel.add(antialiasCheckBox, new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(18, 0, 0, 0), 0, 0));
 
                useCustomControlFontCheckBox = new JCheckBox(useCustomControlFontAction);
-               interfaceConfigPanel.add(useCustomControlFontCheckBox, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 0, 0, 0), 0, 0));
+               interfaceConfigPanel.add(useCustomControlFontCheckBox, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 0, 0, 0), 0, 0));
 
                controlFontList = new FontComboBox();
-               interfaceConfigPanel.add(controlFontList, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
+               interfaceConfigPanel.add(controlFontList, new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
 
                useCustomUserFontCheckBox = new JCheckBox(useCustomUserFontAction);
-               interfaceConfigPanel.add(useCustomUserFontCheckBox, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 0, 0, 0), 0, 0));
+               interfaceConfigPanel.add(useCustomUserFontCheckBox, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 0, 0, 0), 0, 0));
 
                userFontList = new FontComboBox();
-               interfaceConfigPanel.add(userFontList, new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
+               interfaceConfigPanel.add(userFontList, new GridBagConstraints(1, 3, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
 
-               interfaceConfigPanel.add(new JPanel(), new GridBagConstraints(0, 3, 2, 1, 1.0, 1.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
+               interfaceConfigPanel.add(new JPanel(), new GridBagConstraints(0, 4, 2, 1, 1.0, 1.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
 
                return interfaceConfigPanel;
        }
@@ -306,6 +313,7 @@ public class ConfigurationDialog extends JDialog implements I18nable {
        public void updateI18n() {
                okayAction.updateI18n();
                cancelAction.updateI18n();
+               restartRequiredLabel.updateI18n();
                antialiasAction.updateI18n();
                useCustomControlFontAction.updateI18n();
                useCustomUserFontAction.updateI18n();
index 1653e79..b5bc5fb 100644 (file)
@@ -72,11 +72,14 @@ public class MainWindow extends JFrame implements I18nable {
        private I18nMenu languageMenu;
 
        /** The about menu. */
-       private I18nMenu aboutMenu;
+       private I18nMenu helpMenu;
 
        /** The tabbed project pane. */
        private JTabbedPane projectPane;
 
+       /** The project overview panel. */
+       private Box projectOverviewPanel;
+
        /**
         * Creates a new main window that redirects all actions to the given swing
         * interface.
@@ -157,17 +160,17 @@ public class MainWindow extends JFrame implements I18nable {
                menuBar.add(languageMenu);
 
                for (I18nAction languageAction: swingInterface.getLanguageActions()) {
-                       languageMenu.add(languageAction);
+                       languageMenu.add(new FixedJMenuItem(languageAction));
                }
 
                JPanel spacerPanel = new JPanel();
                spacerPanel.setOpaque(false);
                menuBar.add(spacerPanel);
 
-               aboutMenu = new I18nMenu("mainWindow.menu.help");
-               menuBar.add(aboutMenu);
+               helpMenu = new I18nMenu("mainWindow.menu.help");
+               menuBar.add(helpMenu);
 
-               aboutMenu.add(new FixedJMenuItem(swingInterface.getHelpAboutAction()));
+               helpMenu.add(new FixedJMenuItem(swingInterface.getHelpAboutAction()));
 
                setJMenuBar(menuBar);
 
@@ -214,8 +217,9 @@ public class MainWindow extends JFrame implements I18nable {
                projectPane = new JTabbedPane(SwingConstants.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
                upperPanel.add(projectPane, BorderLayout.CENTER);
 
-               Box projectOverviewPanel = new Box(BoxLayout.PAGE_AXIS);
-               projectPane.add(I18n.get("mainWindow.pane.overview.title"), projectOverviewPanel);
+               projectOverviewPanel = new Box(BoxLayout.PAGE_AXIS);
+               projectOverviewPanel.setName(I18n.get("mainWindow.pane.overview.title"));
+               projectPane.add(projectOverviewPanel);
                projectOverviewPanel.setBorder(new EmptyBorder(12, 12, 12, 12));
                projectOverviewPanel.add(Box.createVerticalGlue());
                JButton addProjectButton = new JButton(swingInterface.getAddProjectAction());
@@ -235,12 +239,28 @@ public class MainWindow extends JFrame implements I18nable {
         * {@inheritDoc}
         */
        public void updateI18n() {
+               swingInterface.getConfigureAction().updateI18n();
+               swingInterface.getImportConfigAction().updateI18n();
+               swingInterface.getQuitAction().updateI18n();
                swingInterface.getManageNodesAction().updateI18n();
                swingInterface.getNodeConnectAction().updateI18n();
                swingInterface.getNodeDisconnectAction().updateI18n();
+               swingInterface.getAddProjectAction().updateI18n();
+               swingInterface.getCloneProjectAction().updateI18n();
+               swingInterface.getDeleteProjectAction().updateI18n();
+               swingInterface.getHelpAboutAction().updateI18n();
+               jSiteMenu.updateI18n();
                nodeMenu.updateI18n();
                languageMenu.updateI18n();
+               for (I18nAction languageAction: swingInterface.getLanguageActions()) {
+                       languageAction.updateI18n();
+               }
+               helpMenu.updateI18n();
                getJMenuBar().revalidate();
+               projectOverviewPanel.setName(I18n.get("mainWindow.pane.overview.title"));
+               for (int componentIndex = 0; componentIndex < projectPane.getTabCount(); componentIndex++) {
+                       projectPane.setTitleAt(componentIndex, projectPane.getComponentAt(componentIndex).getName());
+               }
                SwingUtils.repackCentered(this);
        }
 
index b5d651b..a14cd7e 100644 (file)
@@ -311,6 +311,9 @@ public class SwingInterface implements CoreListener {
                if (configProperties.containsKey("userFont")) {
                        userFont = configProperties.getProperty("userFont");
                }
+               if (configProperties.containsKey("language")) {
+                       I18n.setLocale(new Locale(configProperties.getProperty("language")));
+               }
        }
 
        /**
@@ -337,6 +340,7 @@ public class SwingInterface implements CoreListener {
                if (userFont != null) {
                        configProperties.setProperty("userFont", userFont);
                }
+               configProperties.setProperty("language", I18n.getLocale().getLanguage());
                FileOutputStream configOutputStream = null;
                try {
                        configOutputStream = new FileOutputStream(configFile);
index 4ba5de4..0b09a6f 100644 (file)
@@ -49,12 +49,6 @@ mainWindow.menu.language.mnemonic: VK_L
 mainWindow.menu.help.name: Help
 mainWindow.menu.help.mnemonic: VK_H
 
-mainWindow.menu.help.item.about.name: About
-mainWindow.menu.help.item.about.mnemonic: VK_A
-mainWindow.menu.help.item.about.accelerator: Ctrl-VK_A
-mainWindow.menu.help.item.about.shortDescription: Shows information about jSite
-mainWindow.menu.help.item.about.longDescription: Shows information about jSite
-
 #
 # the jSite menu
 #
@@ -101,6 +95,20 @@ mainWindow.menu.node.item.disconnect.accelerator: Ctrl-VK_D
 mainWindow.menu.node.item.disconnect.shortDescription: Disconnect from node
 mainWindow.menu.node.item.disconnect.longDescription: Disconnect from the currently connected node
 
+#
+# the help menu
+#
+
+mainWindow.menu.help.item.about.name: About
+mainWindow.menu.help.item.about.mnemonic: VK_A
+mainWindow.menu.help.item.about.accelerator: Ctrl-VK_A
+mainWindow.menu.help.item.about.shortDescription: Shows information about jSite
+mainWindow.menu.help.item.about.longDescription: Shows information about jSite
+
+#
+# main window
+#
+
 mainWindow.button.addProject.name: Add Project
 mainWindow.button.addProject.mnemonic: VK_A
 mainWindow.button.addProject.accelerator: Ctrl-VK_A
@@ -180,7 +188,9 @@ editNodeDialog.error.port.message: The port number is invalid.
 
 #
 # the "about" dialog
-aboutDialog.title: About
+#
+
+aboutDialog.title: About jSite
 
 aboutDialog.page.about.title: About
 aboutDialog.page.about.shortDescription: Shows the \u201cAbout\u201d page
@@ -205,11 +215,13 @@ configurationDialog.title: Configuration
 
 configurationDialog.page.interface.name: Interface Tweaks
 
-configurationDialog.page.interface.item.beautify.name: Beautify GUI (requires restart)
-configurationDialog.page.interface.item.beautify.mnemonic: VK_B
-configurationDialog.page.interface.item.beautify.accelerator: Alt-VK_B
-configurationDialog.page.interface.item.beautify.shortDescription: Use a nicer font for the GUI
-configurationDialog.page.interface.item.beautify.longDescription: Use a nicer font for the GUI
+configurationDialog.page.interface.item.restartRequired.name: All items on this page require a restart to take effect!
+
+configurationDialog.page.interface.item.antialias.name: Antialias GUI (requires restart)
+configurationDialog.page.interface.item.antialias.mnemonic: VK_A
+configurationDialog.page.interface.item.antialias.accelerator: Alt-VK_A
+configurationDialog.page.interface.item.antialias.shortDescription: Antialias all GUI elements
+configurationDialog.page.interface.item.antialias.longDescription: Antialias all GUI elements
 
 configurationDialog.page.interface.item.useCustomControlFont.name: Use custom control font
 configurationDialog.page.interface.item.useCustomControlFont.mnemonic: VK_C
index 9cfac1f..2feb63c 100644 (file)
@@ -4,6 +4,8 @@
 # US-ASCII range encoded with the java-typical \u notation.
 
 # use small letters for mnemonics, use large letters for accelerators.
+i18n.maintainer.name: David \u2018Bombe\u2019 Roden
+i18n.maintainer.email: bombe@freenetproject.org
 
 # general gui components
 general.button.okay.name: OK
@@ -20,20 +22,54 @@ general.button.cancel.longDescription: Dialog schlie\u00dfen und \u00c4nderungen
 
 general.language.en.name: Englisch
 general.language.en.mnemonic: VK_E
+general.language.en.shortDescription: Sprache auf englisch umschalten
+general.language.en.longDescription: Sprache auf englisch umschalten
 
 general.language.de.name: Deutsch
 general.language.de.mnemonic: VK_D
+general.language.de.shortDescription: Sprache auf deutsch umschalten
+general.language.de.longDescription: Sprache auf deutsch umschalten
 
 # main window
 mainWindow.toolbar.name: jSite Toolbar
 
+mainWindow.error.projectLoadingFailed.title: Laden der Projekte fehlgeschlagen
+mainWindow.error.projectLoadingFailed.message: Die Projekte aus \u201e{0}\u201c konnten nicht geladen werden.
+
 # main menus
+mainWindow.menu.jSite.name: jSite
+mainWindow.menu.jSite.mnemonic: VK_J
+
 mainWindow.menu.node.name: Node
 mainWindow.menu.node.mnemonic: VK_N
 
 mainWindow.menu.languages.name: Sprachen
 mainWindow.menu.languages.mnemonic: VK_S
 
+mainWindow.menu.help.name: Hilfe
+mainWindow.menu.help.mnemonic: VK_H
+
+#
+# the jSite menu
+#
+mainWindow.menu.jSite.configure.name: Einstellungen
+mainWindow.menu.jSite.configure.mnemonic: VK_E
+mainWindow.menu.jSite.configure.accelerator: Ctrl-VK_E
+mainWindow.menu.jSite.configure.shortDescription: Zeigt Einstellungen an
+mainWindow.menu.jSite.configure.longDescription: Zeigt alle jSite Einstellungen an
+
+mainWindow.menu.jSite.importConfig.name: Konfigurationsimport
+mainWindow.menu.JSite.importConfig.mnemonic: VK_K
+mainWindow.menu.jSite.importConfig.accelerator: Ctrl-VK_K
+mainWindow.menu.jSite.importConfig.shortDescription: Importiert alte jSite 0.x Einstellungen
+mainWindow.menu.jSite.importConfig.longDescription: Importiert alte jSite 0.x Einstellungen
+
+mainWindow.menu.jSite.quit.name: Beenden
+mainWindow.menu.jSite.quit.mnemonic: VK_B
+mainWindow.menu.jSite.quit.accelerator: Ctrl-VK_B
+mainWindow.menu.jSite.quit.shortDescription: Beendet jSite
+mainWindow.menu.jSite.quit.longDescription: Beendet jSite
+
 #
 # the node menu
 #
@@ -56,10 +92,44 @@ mainWindow.menu.node.item.connect.longDescription: Verbindung zum Node herstelle
 mainWindow.menu.node.item.disconnect.name: Verbindung trennen
 mainWindow.menu.node.item.disconnect.mnemonic: VK_T
 mainWindow.menu.node.item.disconnect.accelerator: Ctrl-VK_T
-mainWindow.menu.node.item.disconnect.shortDescription: Von Node trennen 
+mainWindow.menu.node.item.disconnect.shortDescription: Von Node trennen
 mainWindow.menu.node.item.disconnect.longDescription: Verbindung zum Node trennen
 
 #
+# the help menu
+#
+
+mainWindow.menu.help.item.about.name: \u00dcber
+mainWindow.menu.help.item.about.mnemonic: VK_B
+mainWindow.menu.help.item.about.accelerator: Ctrl-VK_B
+mainWindow.menu.help.item.about.shortDescription: Zeigt Informationen \u00fcber jSite an
+mainWindow.menu.help.item.about.longDescription: Zeigt Informationen \u00fcber jSite an
+
+#
+# main window
+#
+
+mainWindow.button.addProject.name: Neues Projekt
+mainWindow.button.addProject.mnemonic: VK_N
+mainWindow.button.addProject.accelerator: Ctrl-VK_N
+mainWindow.button.addProject.shortDescription: Erstellt ein neues Projekt
+mainWindow.button.addProject.longDescription: Erstellt ein neues Projekt
+
+mainWindow.button.cloneProject.name: Projekt klonen
+mainWindow.button.cloneProject.mnemonic: VK_K
+mainWindow.button.cloneProject.accelerator: Ctrl-VK_K
+mainWindow.button.cloneProject.shortDescription: Klont das angezeigte Projekt
+mainWindow.button.cloneProject.longDescription: Klont das angezeigte Projekt
+
+mainWindow.button.deleteProject.name: Projekt l\u00f6schen
+mainWindow.button.deleteProject.mnemonic: VK_L
+mainWindow.button.deleteProject.accelerator: Ctrl-VK_L
+mainWindow.button.deleteProject.shortDescription: L\u00f6scht das angezeigte Projekt
+mainWindow.button.deleteProject.longDescription: L\u00f6scht das angezeigte Projekt
+
+mainWindow.pane.overview.title: Projekt\u00fcbersicht
+
+#
 # the "manage nodes" dialog
 #
 
@@ -71,45 +141,96 @@ manageNodesDialog.button.addNode.accelerator: Ctrl-VK_H
 manageNodesDialog.button.addNode.shortDescription: Node hinzuf\u00fcgen
 manageNodesDialog.button.addNode.longDescription: Einen Node hinzuf\u00fcgen
 
-manageNodesDialog.button.editNode.name: Edit Node
-manageNodesDialog.button.editNode.mnemonic: e
+manageNodesDialog.button.editNode.name: Node editiren
+manageNodesDialog.button.editNode.mnemonic: VK_E
 manageNodesDialog.button.editNode.accelerator: Ctrl-VK_E
-manageNodesDialog.button.editNode.shortDescription: Edit Selected Node
+manageNodesDialog.button.editNode.shortDescription: Den ausgew\u00e4hlten Node editieren
+manageNodesDialog.button.editNode.longDescription: Den ausgew\u00e4hlten Node editieren
 
-manageNodesDialog.button.deleteNode.name: Delete Node
-manageNodesDialog.button.deleteNode.mnemonic: d
-manageNodesDialog.button.deleteNode.accelerator: Ctrl-VK_D
-manageNodesDialog.button.deleteNode.shortDescription: Delete Selected Node(s)
+manageNodesDialog.button.deleteNode.name: Node l\u00f6schen
+manageNodesDialog.button.deleteNode.mnemonic: VK_L
+manageNodesDialog.button.deleteNode.accelerator: Ctrl-VK_L
+manageNodesDialog.button.deleteNode.shortDescription: Den ausgew\u00e4hlten Node l\u00f6schen
+manageNodesDialog.button.deleteNode.longDescription: Den ausgew\u00e4hlten Node l\u00f6schen
 
-manageNodesDialog.error.nodeListEmpty.title: Node List Empty
-manageNodesDialog.error.nodeListEmpty.message: The node list is empty.
+manageNodesDialog.error.nodeListEmpty.title: Keine Nodes konfiguriert
+manageNodesDialog.error.nodeListEmpty.message: Es wurden keine Nodes konfiguriert.
 
-manageNodesDialog.error.nodeConnected.title: Node Is Connected
-manageNodesDialog.error.nodeConnected.message: The Node \u201c{0}\u201d is still connected. Do you really want to delete it?
+manageNodesDialog.error.nodeConnected.title: Node ist verbunden
+manageNodesDialog.error.nodeConnected.message: Mit dem Node \u201e{0}\u201c besteht momentan eine Verbindung. Wollen Sie ihn wirklich l\u00f6schen?
 
 # the "edit node" dialog
 editNodeDialog.title: Edit Node
 
 editNodeDialog.label.name.name: Name
-editNodeDialog.label.name.mnemonic: n
+editNodeDialog.label.name.mnemonic: VK_N
 
 editNodeDialog.label.hostname.name: Hostname
-editNodeDialog.label.hostname.mnemonic: h
+editNodeDialog.label.hostname.mnemonic: VK_H
 
 editNodeDialog.label.port.name: Port
-editNodeDialog.label.port.mnemonic: p
+editNodeDialog.label.port.mnemonic: VK_P
+
+editNodeDialog.checkbox.sameMachine.name: Node auf gleichem Rechner
+editNodeDialog.checkbox.sameMachine.mnemonic: VK_G
+editNodeDialog.checkbox.sameMachine.accelerator: Alt-VK_G
+editNodeDialog.checkbox.sameMachine.shortDescription: Der Node befindet sich auf dem gleichen Rechner
+editNodeDialog.checkbox.sameMachine.longDescription: Der Node befindet sich auf dem gleichen Rechner, was einige Optimierungen erm\u00f6glicht
+
+editNodeDialog.error.name.title: Falscher Nodename
+editNodeDialog.error.name.message: Der Name des Nodes ist leer.
+
+editNodeDialog.error.hostname.title: Falscher Hostname
+editNodeDialog.error.hostname.message: Der Hostname ist ung\u00fcltig.
+
+editNodeDialog.error.port.title: Falsche Portnummer
+editNodeDialog.error.port.message: Die Portnummer ist ung\u00fcltig.
+
+#
+# the about dialog
+#
+
+aboutDialog.title: \u00dcber jSite
+
+aboutDialog.page.about.title: \u00dcber jSite
+aboutDialog.page.about.shortDescription: Zeigt Information \u00fcber jSite an
+
+aboutDialog.page.about.label.contributor.name: Mitwirkende
+aboutDialog.page.about.label.contributor.mnemonic: VK_UNDEFINED
+
+# translators: replace "English" with your language!
+aboutDialog.page.about.label.i18nMaintainer.name: \u00dcbersetzung (deutsch)
+aboutDialog.page.about.label.i18nMaintainer.mnemonic: VK_UNDEFINED
+
+aboutDialog.page.license.title: Lizenz
+aboutDialog.page.license.shortDescription: Zeigt die Lizenz an
+
+aboutDialog.page.license.header.name: jSite {0} wurde unter der folgenden Lizenz ver\u00f6ffentlicht:
+aboutDialog.page.license.header.mnemonic: VK_UNDEFINED
+
+#
+# the configuration dialog
+#
+configurationDialog.title: Einstellungen
+
+configurationDialog.page.interface.name: GUI Tweaks
 
-editNodeDialog.checkbox.sameMachine.name: Node on the same machine
-editNodeDialog.checkbox.sameMachine.mnemonic: s
-editNodeDialog.checkbox.sameMachine.accelerator: Alt-VK_S
-editNodeDialog.checkbox.sameMachine.shortDescription: Node is on the same machine
-editNodeDialog.checkbox.sameMachine.longDescription: The node is on the same machine as jSite and some optimizations can be used
+configurationDialog.page.interface.item.restartRequired.name: Alle Einstellungen auf dieser Seite erfordern einen Neustart, um wirksam zu werden!
 
-editNodeDialog.error.name.title: Wrong Node Name
-editNodeDialog.error.name.message: The name of the node is empty.
+configurationDialog.page.interface.item.antialias.name: Antialiasing f\u00fcr Oberfl\u00e4che aktivieren
+configurationDialog.page.interface.item.antialias.mnemonic: VK_A
+configurationDialog.page.interface.item.antialias.accelerator: Alt-VK_A
+configurationDialog.page.interface.item.antialias.shortDescription: Aktiviert Antialiasing f\u00fcr die Oberfl\u00e4che
+configurationDialog.page.interface.item.antialias.longDescription: Aktiviert Antialiasing f\u00fcr die Oberfl\u00e4che
 
-editNodeDialog.error.hostname.title: Wrong Hostname
-editNodeDialog.error.hostname.message: The hostname is invalid.
+configurationDialog.page.interface.item.useCustomControlFont.name: Andere Schriftart f\u00fcr Kontrollelemente
+configurationDialog.page.interface.item.useCustomControlFont.mnemonic: VK_K
+configurationDialog.page.interface.item.useCustomControlFont.accelerator: Alt-VK_K
+configurationDialog.page.interface.item.useCustomControlFont.shortDescription: Eine andere Schriftart f\u00fcr Kontrollelemente benutzen
+configurationDialog.page.interface.item.useCustomControlFont.longDescription: Eine andere Schriftart f\u00fcr Kontrollelemente benutzen
 
-editNodeDialog.error.port.title: Wrong Port Number
-editNodeDialog.error.port.message: The port number is invalid.
+configurationDialog.page.interface.item.useCustomUserFont.name: Andere Schriftart f\u00fcr Texteingaben
+configurationDialog.page.interface.item.useCustomUserFont.mnemonic: VK_T
+configurationDialog.page.interface.item.useCustomUserFont.accelerator: Alt-VK_T
+configurationDialog.page.interface.item.useCustomUserFont.shortDescription: Eine andere Schriftart f\u00fcr Texteingabefelder benutzen
+configurationDialog.page.interface.item.useCustomUserFont.longDescription: Eine andere Schriftart f\u00fcr Texteingabefelder benutzen