Merge branch 'release-0.11.1' 0.11.1
authorDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Mon, 1 Oct 2012 19:34:43 +0000 (21:34 +0200)
committerDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Mon, 1 Oct 2012 19:34:43 +0000 (21:34 +0200)
12 files changed:
.gitignore
pom.xml
src/main/java/de/todesbaum/jsite/gui/KeyDialog.java
src/main/java/de/todesbaum/jsite/gui/ProjectPage.java
src/main/java/de/todesbaum/jsite/main/CLI.java
src/main/java/de/todesbaum/jsite/main/Configuration.java
src/main/java/de/todesbaum/jsite/main/Main.java
src/main/resources/de/todesbaum/jsite/i18n/jSite.properties
src/main/resources/de/todesbaum/jsite/i18n/jSite_de.properties
src/main/resources/de/todesbaum/jsite/i18n/jSite_fr.properties
src/main/resources/de/todesbaum/jsite/i18n/jSite_pl.properties [new file with mode: 0644]
src/main/resources/flag-pl.png [new file with mode: 0644]

index 71c5144..2f7896d 100644 (file)
@@ -1,4 +1 @@
-bin
-build/
-dist/
 target/
diff --git a/pom.xml b/pom.xml
index b7cbad9..7302bb8 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
        <modelVersion>4.0.0</modelVersion>
        <groupId>net.pterodactylus</groupId>
        <artifactId>jSite</artifactId>
-       <version>0.11</version>
+       <version>0.11.1</version>
        <dependencies>
                <dependency>
                        <groupId>net.pterodactylus</groupId>
index 732bb6e..ae8cea4 100644 (file)
@@ -59,6 +59,7 @@ import javax.swing.SwingConstants;
 
 import net.pterodactylus.util.swing.ComboBoxModelList;
 import de.todesbaum.jsite.application.Freenet7Interface;
+import de.todesbaum.jsite.application.Project;
 import de.todesbaum.jsite.i18n.I18n;
 import de.todesbaum.jsite.i18n.I18nContainer;
 import de.todesbaum.util.freenet.fcp2.wot.OwnIdentity;
@@ -88,6 +89,9 @@ public class KeyDialog extends JDialog {
        /** The “Regenerate” button’s action. */
        private Action generateAction;
 
+       /** The “Copy from Project” action. */
+       private Action copyFromProjectAction;
+
        /** The “Copy from Identity” action. */
        private Action copyFromIdentityAction;
 
@@ -97,12 +101,18 @@ public class KeyDialog extends JDialog {
        /** The text field for the public key. */
        private JTextField publicKeyTextField;
 
+       /** The select box for the projects. */
+       private JComboBox projectsComboBox;
+
        /** The select box for the own identities. */
        private JComboBox ownIdentitiesComboBox;
 
        /** Whether the dialog was cancelled. */
        private boolean cancelled;
 
+       /** The list of projects. */
+       private final List<Project> projects = new ArrayList<Project>();
+
        /** The list of own identities. */
        private final List<OwnIdentity> ownIdentities = new ArrayList<OwnIdentity>();
 
@@ -184,6 +194,20 @@ public class KeyDialog extends JDialog {
        }
 
        /**
+        * Sets the projects to display and copy URIs from.
+        *
+        * @param projects
+        *            The list of projects
+        */
+       public void setProjects(Collection<? extends Project> projects) {
+               synchronized (this.projects) {
+                       this.projects.clear();
+                       this.projects.addAll(projects);
+               }
+               projectsComboBox.setSelectedIndex(-1);
+       }
+
+       /**
         * Sets the own identities to display and copy URIs from.
         *
         * @param ownIdentities
@@ -256,6 +280,18 @@ public class KeyDialog extends JDialog {
                cancelAction.putValue(Action.SHORT_DESCRIPTION, I18n.getMessage("jsite.key-dialog.button.cancel.tooltip"));
                cancelAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_ESCAPE);
 
+               copyFromProjectAction = new AbstractAction(I18n.getMessage("jsite.key-dialog.button.copy-from-project")) {
+
+                       @Override
+                       @SuppressWarnings("synthetic-access")
+                       public void actionPerformed(ActionEvent actionevent) {
+                               actionCopyFromProject();
+                       }
+               };
+               copyFromProjectAction.putValue(Action.SHORT_DESCRIPTION, I18n.getMessage("jsite.key-dialog.button.copy-from-project.tooltip"));
+               copyFromProjectAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P);
+               copyFromProjectAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_DOWN_MASK));
+
                copyFromIdentityAction = new AbstractAction(I18n.getMessage("jsite.key-dialog.button.copy-from-identity")) {
 
                        @Override
@@ -265,7 +301,8 @@ public class KeyDialog extends JDialog {
                        }
                };
                copyFromIdentityAction.putValue(Action.SHORT_DESCRIPTION, I18n.getMessage("jsite.key-dialog.button.copy-from-identity.tooltip"));
-               copyFromIdentityAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK));
+               copyFromIdentityAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_I);
+               copyFromIdentityAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_I, InputEvent.CTRL_DOWN_MASK));
 
                generateAction = new AbstractAction(I18n.getMessage("jsite.key-dialog.button.generate")) {
 
@@ -305,11 +342,29 @@ public class KeyDialog extends JDialog {
                publicKeyTextField = new JTextField();
                contentPanel.add(publicKeyTextField, new GridBagConstraints(1, 2, 2, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(6, 12, 0, 0), 0, 0));
 
-               final JLabel identitiesLabel = new JLabel(I18n.getMessage("jsite.key-dialog.label.identities"));
-               contentPanel.add(identitiesLabel, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(12, 0, 0, 0), 0, 0));
+               final JLabel copyKeysLabel = new JLabel(I18n.getMessage("jsite.key-dialog.label.copy-keys"));
+               contentPanel.add(copyKeysLabel, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(12, 0, 0, 0), 0, 0));
+
+               final JLabel projectLabel = new JLabel(I18n.getMessage("jsite.key-dialog.label.project"));
+               contentPanel.add(projectLabel, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(12, 18, 0, 0), 0, 0));
+
+               projectsComboBox = new JComboBox(new ComboBoxModelList<Project>(projects));
+               projectsComboBox.addActionListener(new ActionListener() {
+
+                       @Override
+                       @SuppressWarnings("synthetic-access")
+                       public void actionPerformed(ActionEvent actionEvent) {
+                               copyFromProjectAction.setEnabled(projectsComboBox.getSelectedIndex() > -1);
+                       }
+
+               });
+               contentPanel.add(projectsComboBox, new GridBagConstraints(1, 4, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(6, 12, 0, 0), 0, 0));
+
+               JButton copyFromProjectButton = new JButton(copyFromProjectAction);
+               contentPanel.add(copyFromProjectButton, new GridBagConstraints(2, 4, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_END, GridBagConstraints.HORIZONTAL, new Insets(6, 12, 0, 0), 0, 0));
 
                final JLabel identityLabel = new JLabel(I18n.getMessage("jsite.key-dialog.label.identity"));
-               contentPanel.add(identityLabel, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(12, 18, 0, 0), 0, 0));
+               contentPanel.add(identityLabel, new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(12, 18, 0, 0), 0, 0));
 
                ownIdentitiesComboBox = new JComboBox(new ComboBoxModelList<OwnIdentity>(ownIdentities));
                ownIdentitiesComboBox.addActionListener(new ActionListener() {
@@ -334,17 +389,17 @@ public class KeyDialog extends JDialog {
                                return this;
                        }
                });
-               contentPanel.add(ownIdentitiesComboBox, new GridBagConstraints(1, 4, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(6, 12, 0, 0), 0, 0));
+               contentPanel.add(ownIdentitiesComboBox, new GridBagConstraints(1, 5, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(6, 12, 0, 0), 0, 0));
 
                JButton copyFromIdentityButton = new JButton(copyFromIdentityAction);
-               contentPanel.add(copyFromIdentityButton, new GridBagConstraints(2, 4, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_END, GridBagConstraints.NONE, new Insets(6, 12, 0, 0), 0, 0));
+               contentPanel.add(copyFromIdentityButton, new GridBagConstraints(2, 5, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_END, GridBagConstraints.HORIZONTAL, new Insets(6, 12, 0, 0), 0, 0));
 
                final JLabel actionsLabel = new JLabel(I18n.getMessage("jsite.key-dialog.label.actions"));
-               contentPanel.add(actionsLabel, new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(12, 0, 0, 0), 0, 0));
+               contentPanel.add(actionsLabel, new GridBagConstraints(0, 6, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(12, 0, 0, 0), 0, 0));
 
                JPanel actionButtonPanel = new JPanel(new FlowLayout(FlowLayout.LEADING, 12, 12));
                actionButtonPanel.setBorder(BorderFactory.createEmptyBorder(-12, -12, -12, -12));
-               contentPanel.add(actionButtonPanel, new GridBagConstraints(0, 6, 3, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(12, 18, 0, 0), 0, 0));
+               contentPanel.add(actionButtonPanel, new GridBagConstraints(0, 7, 3, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.HORIZONTAL, new Insets(12, 18, 0, 0), 0, 0));
 
                actionButtonPanel.add(new JButton(generateAction));
 
@@ -365,8 +420,9 @@ public class KeyDialog extends JDialog {
                                keysLabel.setText(I18n.getMessage("jsite.key-dialog.label.keys"));
                                privateKeyLabel.setText(I18n.getMessage("jsite.key-dialog.label.private-key"));
                                publicKeyLabel.setText(I18n.getMessage("jsite.key-dialog.label.public-key"));
-                               identitiesLabel.setText(I18n.getMessage("jsite.key-dialog.label.identities"));
+                               copyKeysLabel.setText(I18n.getMessage("jsite.key-dialog.label.copy-keys"));
                                identityLabel.setText(I18n.getMessage("jsite.key-dialog.label.identity"));
+                               projectLabel.setText(I18n.getMessage("jsite.key-dialog.label.project"));
                                actionsLabel.setText(I18n.getMessage("jsite.key-dialog.label.actions"));
                        }
                });
@@ -399,6 +455,18 @@ public class KeyDialog extends JDialog {
        }
 
        /**
+        * Copies the public and private key from the selected project.
+        */
+       private void actionCopyFromProject() {
+               Project project = (Project) projectsComboBox.getSelectedItem();
+               if (project == null) {
+                       return;
+               }
+               setPublicKey(project.getRequestURI());
+               setPrivateKey(project.getInsertURI());
+       }
+
+       /**
         * Copies the public and private key from the selected identity.
         */
        private void actionCopyFromIdentity() {
index ad3f2e5..ceee143 100644 (file)
@@ -33,6 +33,7 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.io.IOException;
 import java.text.MessageFormat;
+import java.util.List;
 import java.util.Map.Entry;
 
 import javax.swing.AbstractAction;
@@ -442,7 +443,7 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D
         * @param projects
         *            The list of projects
         */
-       public void setProjects(Project[] projects) {
+       public void setProjects(List<Project> projects) {
                projectListModel.clear();
                for (Project project : projects) {
                        projectListModel.add(project);
@@ -454,8 +455,8 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D
         *
         * @return The list of projects
         */
-       public Project[] getProjects() {
-               return projectListModel.toArray(new Project[projectListModel.size()]);
+       public List<Project> getProjects() {
+               return projectListModel;
        }
 
        /**
@@ -631,6 +632,7 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D
                        KeyDialog keyDialog = new KeyDialog(freenetInterface, wizard);
                        keyDialog.setPrivateKey(selectedProject.getInsertURI());
                        keyDialog.setPublicKey(selectedProject.getRequestURI());
+                       keyDialog.setProjects(getProjects());
                        keyDialog.setOwnIdentities(webOfTrustInterface.getOwnIdentities());
                        keyDialog.setVisible(true);
                        if (!keyDialog.wasCancelled()) {
index bbe76c7..9f0b2db 100644 (file)
@@ -19,6 +19,7 @@
 package de.todesbaum.jsite.main;
 
 import java.io.PrintWriter;
+import java.util.List;
 
 import net.pterodactylus.util.io.StreamCopier.ProgressListener;
 import de.todesbaum.jsite.application.Freenet7Interface;
@@ -50,7 +51,7 @@ public class CLI implements InsertListener {
        private Node[] nodes;
 
        /** The projects. */
-       private Project[] projects;
+       private List<Project> projects;
 
        /** Whether the insert has finished. */
        private boolean finished = false;
index 0cc7750..4b49577 100644 (file)
@@ -307,7 +307,7 @@ public class Configuration {
         *
         * @return A list of all projects
         */
-       public Project[] getProjects() {
+       public List<Project> getProjects() {
                List<Project> projects = new ArrayList<Project>();
                SimpleXML projectsNode = rootNode.getNode("project-list");
                if (projectsNode != null) {
@@ -381,7 +381,7 @@ public class Configuration {
                                }
                        }
                }
-               return projects.toArray(new Project[projects.size()]);
+               return projects;
        }
 
        /**
@@ -390,7 +390,7 @@ public class Configuration {
         * @param projects
         *            The list of all projects
         */
-       public void setProjects(Project[] projects) {
+       public void setProjects(List<Project> projects) {
                SimpleXML projectsNode = new SimpleXML("project-list");
                for (Project project : projects) {
                        SimpleXML projectNode = projectsNode.append("project");
index 92143a4..8a4f905 100644 (file)
@@ -80,7 +80,7 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen
        private static final Logger logger = Logger.getLogger(Main.class.getName());
 
        /** The version. */
-       private static final Version VERSION = new Version(0, 11);
+       private static final Version VERSION = new Version(0, 11, 1);
 
        /** The configuration. */
        private Configuration configuration;
@@ -122,7 +122,7 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen
        }
 
        /** The supported locales. */
-       private static final Locale[] SUPPORTED_LOCALES = new Locale[] { Locale.ENGLISH, Locale.GERMAN, Locale.FRENCH };
+       private static final Locale[] SUPPORTED_LOCALES = new Locale[] { Locale.ENGLISH, Locale.GERMAN, Locale.FRENCH, new Locale("pl") };
 
        /** The actions that switch the language. */
        private Map<Locale, Action> languageActions = new HashMap<Locale, Action>();
index e483ce7..19ea78d 100644 (file)
@@ -177,6 +177,8 @@ jsite.update-checker.latest-version.okay.message=<html>You are currently running
 jsite.key-dialog.title=Manage Project Keys
 jsite.key-dialog.button.ok.tooltip=Accepts the changes
 jsite.key-dialog.button.cancel.tooltip=Discards the changes
+jsite.key-dialog.button.copy-from-project=Copy from Project
+jsite.key-dialog.button.copy-from-project.tooltip=Copies the public and private keys from the selected project
 jsite.key-dialog.button.copy-from-identity=Copy from Identity
 jsite.key-dialog.button.copy-from-identity.tooltip=Copies the public and private keys from the selected identity
 jsite.key-dialog.button.generate=Regenerate Keys
@@ -184,7 +186,8 @@ jsite.key-dialog.button.generate.tooltip=Create a new key pair
 jsite.key-dialog.label.keys=<html><b>Keys</b></html>
 jsite.key-dialog.label.private-key=Private Key
 jsite.key-dialog.label.public-key=Public Key
-jsite.key-dialog.label.identities=<html><b>Identities</b></html>
+jsite.key-dialog.label.copy-keys=<html><b>Copy Keys</b></html>
+jsite.key-dialog.label.project=Project
 jsite.key-dialog.label.identity=Identity
 jsite.key-dialog.label.actions=<html><b>Actions</b></html>
 
index 0752114..7f82138 100644 (file)
@@ -177,6 +177,8 @@ jsite.update-checker.latest-version.okay.message=<html>Es l\u00e4uft momentan Ve
 jsite.key-dialog.title=Projektschl\u00fcsselverwaltung
 jsite.key-dialog.button.ok.tooltip=\u00c4nderungen akzeptieren
 jsite.key-dialog.button.cancel.tooltip=\u00c4nderungen verwerfen
+jsite.key-dialog.button.copy-from-project=Von Projekt kopieren
+jsite.key-dialog.button.copy-from-project.tooltip=Kopiert das Schl\u00fcsselpaar des ausgew\u00e4hlten Projekts
 jsite.key-dialog.button.copy-from-identity=Von Identit\u00e4t kopieren
 jsite.key-dialog.button.copy-from-identity.tooltip=Kopiert das Schl\u00fcsselpaar der ausgew\u00e4hlten Identit\u00e4t
 jsite.key-dialog.button.generate=Schl\u00fcssel neu generieren
@@ -184,7 +186,8 @@ jsite.key-dialog.button.generate.tooltip=Generiert ein neues Schl\u00fcsselpaar
 jsite.key-dialog.label.keys=<html><b>Schl\u00fcssel</b></html>
 jsite.key-dialog.label.private-key=Privater Schl\u00fcssel
 jsite.key-dialog.label.public-key=\u00d6ffentlicher Schl\u00fcssel
-jsite.key-dialog.label.identities=<html><b>Identit\u00e4ten</b></html>
+jsite.key-dialog.label.copy-keys=<html><b>Schl\u00fcssel kopieren</b></html>
+jsite.key-dialog.label.project=Projekt
 jsite.key-dialog.label.identity=Identit\u00e4t
 jsite.key-dialog.label.actions=<html><b>Aktionen</b></html>
 
index 80d3fc5..39beff1 100644 (file)
@@ -177,6 +177,8 @@ jsite.update-checker.latest-version.okay.message=<html>Vous utilisez la version
 jsite.key-dialog.title=G\u00e9rer les cl\u00e9s des projets
 jsite.key-dialog.button.ok.tooltip=Accepter les changements
 jsite.key-dialog.button.cancel.tooltip=Annuler les changements
+jsite.key-dialog.button.copy-from-project=Copy from Project
+jsite.key-dialog.button.copy-from-project.tooltip=Copies the public and private keys from the selected project
 jsite.key-dialog.button.copy-from-identity=Copy from Identity
 jsite.key-dialog.button.copy-from-identity.tooltip=Copies the public and private keys from the selected identity
 jsite.key-dialog.button.generate=Reg\u00e9n\u00e9rer les cl\u00e9s
@@ -184,7 +186,8 @@ jsite.key-dialog.button.generate.tooltip=Cr\u00e9er une nouvelle paire de cl\u00
 jsite.key-dialog.label.keys=<html><b>Cl\u00e9s</b></html>
 jsite.key-dialog.label.private-key=Cl\u00e9 priv\u00e9e
 jsite.key-dialog.label.public-key=Cl\u00e9 publique
-jsite.key-dialog.label.identities=<html><b>Identities</b></html>
+jsite.key-dialog.label.copy-keys=<html><b>Copy Keys</b></html>
+jsite.key-dialog.label.project=Project
 jsite.key-dialog.label.identity=Identity
 jsite.key-dialog.label.actions=<html><b>Actions</b></html>
 
@@ -201,4 +204,4 @@ jsite.error.index-not-inserted=<html><b>Fichier par d\u00e9faut non ins\u00e9r\u
 jsite.error.no-custom-key=<html><b>Pas de clef existante sp\u00e9cifi\u00e9e pour ce fichier</b><br><br>Vous avez sp\u00e9cifier de ne pas ins\u00e9rer <code>{0}</code><br> mais n'avez pas sp\u00e9cifier de clef ou rediriger!</html>
 jsite.error.no-files-to-insert=<html><b>Aucun fichier \u00e0 ins\u00e9rer</b><br><br>Vous n'avez s\u00e9lectionn\u00e9 aucun fichier pour l'insertion !<br>Veuillez s\u00e9lectionner au moins un fichier \u00e0 ins\u00e9rer.</html>
 jsite.error.duplicate-file=<html><b>Fichier dupliqu\u00e9</b><br><br>Le fichier <code>{0}</code> est ins\u00e9r\u00e9 deux fois !<br>Veuillez v\u00e9rifier les noms de fichier et les redirections.</html>
-# to update: 144, 145, 180, 181, 187-189, 193
\ No newline at end of file
+# to update: 144, 145, 180-183, 189-192, 196
\ No newline at end of file
diff --git a/src/main/resources/de/todesbaum/jsite/i18n/jSite_pl.properties b/src/main/resources/de/todesbaum/jsite/i18n/jSite_pl.properties
new file mode 100644 (file)
index 0000000..454510b
--- /dev/null
@@ -0,0 +1,206 @@
+#
+# jSite - jSite_pl.properties - Copyright © 2006–2012 David Roden
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+# Polish language file
+
+# Attention, translators! Most of the strings here are used directly.
+# However, some of them are parsed by MessageFormat
+# (http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html)
+# and thus have to adhere to some rules (check the URL above). This is the
+# case when a line contains placeholders like {0} or {0,number}! In these
+# lines single quotes (ASCII 39) needs to be escaped by entering them twice,
+# otherwise the placeholder will not be replaced!
+
+jsite.main.already-running=<html><b>Program jSite zosta\u0142 uruchomiony</b><br><br>Plik blokady zosta\u0142 znaleziony co sugeruje, \u017ce jeszcze jedna<br> instacja jSite jest uruchomiona. Je\u015bli u\u017cyjesz kilka instancji tego <br>programu, to zapewniam, \u017ce zniszczysz sobie konfiguracj\u0119.</html>
+jsite.main.already-running.override=Zacznij teraz
+
+jsite.wizard.previous=Poprzedni
+jsite.wizard.next=Nast\u0119pny
+jsite.wizard.quit=Zako\u0144cz
+
+jsite.quit.question=Jeste\u015b pewien, \u017ce chcesz zako\u0144czy\u0107?
+jsite.quit.config-not-saved=<html><b>Konfiguracja nie jest zapisana</b><br><br>Plik konfiguracji nie jest zachowany.<br>Czy mimo wszystko zako\u0144czy\u0107?</html>
+jsite.quit.overwrite-configuration=<html><b>Nadpisa\u0107 konfiguracj\u0119?</b><br><br>Plik konfiguracyjny: <code>{0}</code> ju\u017c istnieje.<br>Nadpisa\u0107?</html>
+jsite.quit.overwrite-configuration.title=Nadpisa\u0107 konfiguracj\u0119?
+jsite.quit.config-not-saved=<html><b>Konfiguracja nie zosta\u0142a zapisana</b><br><br>Konfiguracja mog\u0142a nie zosta\u0107 zachowana.<br>Zako\u0144czy\u0107 mimo to?</html>
+
+jsite.menu.languages=J\u0119zyki
+jsite.menu.language.en=English
+jsite.menu.language.de=Deutsch
+jsite.menu.language.fr=Fran\u00e7ais
+jsite.menu.language.it=Italiano
+jsite.menu.language.pl=Polski
+jsite.menu.nodes=W\u0119z\u0142y
+jsite.menu.nodes.manage-nodes=Zarz\u0105dzaj w\u0119z\u0142ami
+jsite.menu.options=Opcje
+jsite.menu.options.preferences=Ustawienia
+jsite.menu.help=Pomoc
+jsite.menu.help.check-for-updates=Sprawd\u017a uaktualnienia
+jsite.menu.help.about=O programie
+
+jsite.about.message=<html><big><b>jSite {0}</b></big><br><br>Copyright \u00a9 2006\u20132012 David Roden<br>Publikowany na licencji GNU General Public License</html>
+
+jsite.node-manager.heading=Zarz\u0105dzanie w\u0119z\u0142ami
+jsite.node-manager.description=Tu mo\u017cesz arz\u0105dza\u0107 swoimi w\u0119z\u0142ami.
+jsite.node-manager.node-information=Informacja o w\u0119\u017ale
+jsite.node-manager.add-node=Dodaj w\u0119ze\u0142
+jsite.node-manager.new-node=Nowy w\u0119ze\u0142
+jsite.node-manager.delete-node=Kasuj w\u0119ze\u0142
+jsite.node-manager.delete-node.warning=<html><b>Potwierd\u017a skasowanie w\u0119z\u0142a</b><br><br>Faktycznie chcesz skasowa\u0107 w\u0119ze\u0142?</html>
+jsite.node-manager.name=Nazwa
+jsite.node-manager.hostname=Nazwa hosta
+jsite.node-manager.port=Port
+
+jsite.preferences.heading=Ustawienia
+jsite.preferences.description=Zarz\u0105dzaj globalnymi ustawieniami.
+jsite.preferences.temp-directory=Katalog plik\u00f3w tymczasowych
+jsite.preferences.temp-directory.default=Domy\u015blny (wybrany przez system)
+jsite.preferences.temp-directory.custom=Dostosuj
+jsite.preferences.temp-directory.choose=Wybierz
+jsite.preferences.temp-directory.choose.approve=Wybierz
+jsite.preferences.config-directory=Lokalizacja pliku konfiguracyjnego
+jsite.preferences.config-directory.jar=Dalej do pliku JAR
+jsite.preferences.config-directory.home=Katalog domowy
+jsite.preferences.config-directory.custom=W\u0142asny katalog
+jsite.preferences.insert-options=Opcje wgrywania
+jsite.preferences.insert-options.use-early-encode=Wcze\u015bnie generuj URI
+jsite.preferences.insert-options.priority=Priorytet
+jsite.preferences.insert-options.manifest-putter=Manifest Putter
+
+jsite.insert.heading=Projekt wgrany
+jsite.insert.description=Prosz\u0119 zaczekaj do czasu wgrania ca\u0142ego projektu.
+jsite.insert.project-information=Informacje o projekcie
+jsite.insert.request-uri=FreeStrona
+jsite.insert.start-time=Czas rozpocz\u0119cia
+jsite.insert.starting=Rozpoczynam\u2026
+jsite.insert.done=Sko\u0144czone
+jsite.insert.done.title=Wgrywanie zako\u0144czone
+jsite.insert.insert-aborted=Wgrywanie przerwane
+jsite.insert.insert-aborted.title=Wgrywanie przerwane.
+jsite.insert.progress=W trakcie
+jsite.insert.k-per-s=KB/s
+jsite.insert.insert-failed=<html><b>Wgranie nie powiod\u0142o si\u0119</b><br><br>Pliki nie zosta\u0142y wgrane<br>Niekt\u00f3re pliki nie wgra\u0142y si\u0119.</html>
+jsite.insert.insert-failed-with-cause=<html><b>Wgranie nie powiod\u0142o si\u0119</b><br><br>Wgranie plik\u00f3w nie uda\u0142o si\u0119.<br>Niekt\u00f3re pliki nie zosta\u0142y wgrane.<br>Zg\u0142oszono nast\u0119puj\u0105ce b\u0142\u0119dy:<br><br><code>{0}</code></html>
+jsite.insert.insert-failed.title=Wgrywanie zako\u0144czone niepowodzeniem
+jsite.insert.inserted=<html><b>Projekt wgrany</b><br><br>Tw\u00f3j projekt zosta\u0142 wgrany poprawnie.</html>
+jsite.insert.okay-copy-uri=Skopiuj URI do schowka
+jsite.insert.reinserted-edition=<html><b>Edycja wgrana ponownie</b><br><br>Edycja, kt\u00f3r\u0105 wgrywasz<br>zosta\u0142a ju\u017c wgrana wcze\u015bniej.</html>
+jsite.insert.reinserted-edition.title=Edycja wgrana ponownie
+
+jsite.file-scanner.can-not-read-directory=Nie jestem w stanie przeczyta\u0107 katalogu
+
+jsite.project.heading=Wybierz projekt
+jsite.project.description=Wybierz projekt z listy ni\u017cej do wgrania lub stw\u00f3rz nowy projekt.
+jsite.project.action.browse=Przegl\u0105daj
+jsite.project.action.browse.choose=Wybierz
+jsite.project.action.browse.tooltip=Wybierz katalog
+jsite.project.action.add-project=Dodaj projekt
+jsite.project.action.add-project.tooltip=Dodaj nowy projekt
+jsite.project.new-project.name=Nowy projekt
+jsite.project.action.delete-project=Skasuj projekt
+jsite.project.action.delete-project.tooltip=Skasuj projekt
+jsite.project.action.delete-project.confirm=<html><b>Potwierd\u017a usuni\u0119cie</b><br><br>Projekt \u201c{0}\u201d zostanie skasowany!<br>Czy chcesz kontynuowa\u0107 kasowanie?</html>
+jsite.project.action.clone-project=Klonuj projekt
+jsite.project.action.clone-project.copy=Kopiuj\u0119 {0}
+jsite.project.action.clone-project.tooltip=Klonuj zaznaczony projekt
+jsite.project.action.copy-uri=Przekopiuj URI do schowka
+jsite.project.action.copy-uri.tooltip=Przekopiuj URI projektu do schowka
+jsite.project.action.manage-keys=Zarz\u0105dzaj kluczami
+jsite.project.action.manage-keys.tooltip=Zarz\u0105dzaj kluczami tego projektu
+jsite.project.action.reset-edition=Wyma\u017c wydanie
+jsite.project.action.reset-edition.tooltip=Wyma\u017c numer wydania projektu
+jsite.project.project.information=Informacja o Projekcie
+jsite.project.project.name=Nazwa
+jsite.project.project.description=Opis
+jsite.project.project.local-path=Lokalna \u015bcie\u017cka
+jsite.project.project.address=Adres
+jsite.project.project.path=\u015acie\u017cka do FreeStrony
+jsite.project.project.edition=Popraw
+jsite.project.project.uri=URI
+jsite.project.keygen.io-error=<html><b>B\u0142\u0105d komunikacji z w\u0119z\u0142em</b><br><br>Komunikacja z w\u0119z\u0142em si\u0119 nie powiod\u0142a.<br>Otrzyma\u0142em takie komunikaty b\u0142\u0119d\u00f3w:<br><br><code>{0}</code><br><br>Upewnij si\u0119 czy poprawnie <br>wprowadzono nazw\u0119 hosta i numer portu<br>w "Ustawieniach w\u0119z\u0142a".</html>
+jsite.project.warning.generate-new-key=<html><b>Wygenerowa\u0107 nowy klucz?</b><br><br>Je\u015bli wygenerujesz zupe\u0142nie nowy klucz, Twoja strona zostanie opublikowana<br>pod nowym kluczem (adresem). Wszyscy, kt\u00f3rzy ufali poprzedniemu adresowy i kluczowi<br>mog\u0105 nie wiedzie\u0107 o nowym kluczu</html>
+jsite.project.warning.reset-edition=<html><b>Zresetowa\u0107 edycj\u0119?</b><br><br>Zresetowanie edycji mo\u017ce prowadzi\u0107 do b\u0142\u0119d\u00f3w wgrywania<br>i zamieszania, je\u015bli nie zmieni\u0142e\u015b<br>\u015bcie\u017cki do kluczy projektu!</html>
+jsite.project.warning.use-clipboard-now=<html><b>URI skopiowane</b><br><br>Zauwa\u017c, \u017ce zamkni\u0119cie jSite<br>spowoduje wyczyszczenie schowka. U\u017cyj<br>skopiowanego URI natychmiast w innym oknie!</html>
+
+jsite.project-files.heading=Pliki projektu
+jsite.project-files.description=<html>Na tej stronie mo\u017cesz ustawi\u0107 parametry plik\u00f3w projektu, takich jak<br>zewn\u0119trzne klucze lub typy MIME, je\u015bli automatyczne rozpoznanie ich zawiedzie.</html>
+jsite.project-files.action.rescan=Od\u015bwie\u017c
+jsite.project-files.action.rescan.tooltip=Od\u015bwie\u017c katalogi w poszukiwaniu nowych plik\u00f3w
+jsite.project-files.always-force-insert=Zawsze wymuszaj wgrywanie
+jsite.project-files.always-force-insert.tooltip=Gdy zaznaczone wszystkie pliki projektu zastan\u0105 grane, nawet je\u015bli nie zosta\u0142y zmodyfikowane
+jsite.project-files.ignore-hidden-files=Ignoruj pliki ukryte
+jsite.project-files.ignore-hidden-files.tooltip=Gdy zaznaczone ukryte pliki nie zostan\u0105 wgrane
+jsite.project-files.file-options=Opcje Plik\u00f3w
+jsite.project-files.default=Domy\u015blny plik
+jsite.project-files.default.tooltip=Ustaw ten plik projektu indeks plik\u00f3w
+jsite.project-files.insert=Wgraj
+jsite.project-files.insert.tooltip=Odznacz je\u015bli ten plik jest wgrany zewn\u0119trznie.
+jsite.project-files.force-insert=Wymu\u015b wgranie
+jsite.project-files.force-insert.tooltip=Wymusza wgranie pliku, nawet je\u015bli nie zosta\u0142 zmodyfikowany
+jsite.project-files.insert-redirect=Przekieruj
+jsite.project-files.insert-redirect.tooltip=Zaznacz, je\u015bli chcesz wgra\u0107 przekierowanie do tego pliku
+jsite.project-files.custom-key=Zaawansowane klucze
+jsite.project-files.custom-key.tooltip=Zewn\u0119trznie utworzony klucz dla pliku
+jsite.project-files.rename=Zmie\u0144 nazw\u0119
+jsite.project-files.rename.tooltip=Zmienia nazw\u0119 pliku
+jsite.project-files.mime-type=Typ MIME
+jsite.project-files.mime-type.tooltip=Ustaw poprawny typ MIME je\u015bli detekcja zawiod\u0142a
+jsite.project-files.container=Kontener
+jsite.project-files.container.tooltip=Wybierz kontener dla obecnego pliku
+jsite.project-files.scan-error=<html><b>B\u0142\u0105d przy skanowaniu plik\u00f3w</b><br><br>Podany katalog nie istnieje<br>lub niekt\u00f3re pliki/katalogi nie sa dost\u0119pne do czytania.<br>prosz\u0119 wr\u00f3\u0107 i ustaw poprawny katalog.</html>
+jsite.project-files.insert-now=Wgraj teraz
+jsite.project-files.invalid-default-file=Tylko pliki z katalogu nadrz\u0119dnego (root directory) mog\u0105 zosta\u0107 zaznaczone jako domy\u015blne.
+jsite.project-files.scanning=Skanuj\u0119\u2026
+
+jsite.update-checker.found-version.title=Znalaz\u0142em now\u0105 wersj\u0119
+jsite.update-checker.found-version.message=<html>Znaleziono now\u0105 wersj\u0119.<br><br>Wersja {0} (podwersja {1,date})</html>
+jsite.update-checker.latest-version.title=Sprawd\u017a uaktualnienia
+jsite.update-checker.latest-version.newer.message=<html>U\u017cywasz wersji {0}, ale jest ju\u017c<br>nowa wersja ({1})!</html>
+jsite.update-checker.latest-version.older.message=<html>Aktualnie u\u017cywasz wersji {0},<br>a najnowsza wersja to {1}.</html>
+jsite.update-checker.latest-version.okay.message=<html>U\u017cywana wersja to {0},<br>kt\u00f3ra jest najbardziej aktualn\u0105 wersj\u0105.</html>
+
+jsite.key-dialog.title=Zarz\u0105dzaj kluczami projektu
+jsite.key-dialog.button.ok.tooltip=Akceptuj zmiany
+jsite.key-dialog.button.cancel.tooltip=Skasuj zmiany
+jsite.key-dialog.button.copy-from-project=Skopiuj z Projektu
+jsite.key-dialog.button.copy-from-project.tooltip=Kopiuje klucz prywatny i publiczny z zaznaczonego projektu
+jsite.key-dialog.button.copy-from-identity=Skopiuj z to\u017csamo\u015bci (identity)
+jsite.key-dialog.button.copy-from-identity.tooltip=Kopiuje klucz prywatny i publiczny z zaznaczonej to\u017csamo\u015bci
+jsite.key-dialog.button.generate=Wygeneruj klucze ponownie
+jsite.key-dialog.button.generate.tooltip=Tworzy now\u0105 par\u0119 kluczy
+jsite.key-dialog.label.keys=<html><b>Klucze</b></html>
+jsite.key-dialog.label.private-key=Klucz prywatny
+jsite.key-dialog.label.public-key=Klucz publiczny
+jsite.key-dialog.label.copy-keys=<html><b>Kopiuj klucze</b></html>
+jsite.key-dialog.label.project=Projekt
+jsite.key-dialog.label.identity=To\u017csamo\u015b\u0107
+jsite.key-dialog.label.actions=<html><b>Dzia\u0142ania</b></html>
+
+jsite.warning.empty-index=<html><b>Brak pliku domy\u015blnego</b><br><br>Nie wskaza\u0142e\u015b pliku domy\u015blnego dla tego projektu.<br>Wgrywanie projektu bez pliku domy\u015blnego jest mo\u017cliwe, <br>ale powiniene\u015b wybra\u0107 plik domy\u015blny, co u\u0142atwi przegl\u0105danie.</html>
+jsite.warning.index-not-html=<html><b>Domy\u015blny plik nie jest typu HTML</b><br><br>Tw\u00f3j domy\u015blny plik nie posiada typu MIME "text/html"!<br>Wynik otwarcia pliku za pomoc\u0105 przegl\u0105darki mo\u017ce by\u0107 nieprzewidywalny.</html>
+jsite.warning.site-larger-than-2-mib=<html><b>Twoja strona jest wi\u0119ksza ni\u017c 2MiB!</b><br><br>Twoja strona posiada wi\u0119cej, ni\u017c 2 mebibajty zasob\u00f3w.<br>Prawdopodobnie nie b\u0119dzie wy\u015bwietlana poprawnie przez b\u0142\u0119dy Freenetu.<br>Spr\u00f3buj zmniejszy\u0107 rozmiar, albo wgraj stron\u0119 na w\u0142asne ryzyko.</html>
+
+jsite.error.no-node-selected=<html><b>Nie zaznaczono w\u0119z\u0142a</b><br><br>Zaznacz, prosz\u0119, w\u0119ze\u0142 z menu!</html>
+jsite.error.no-node-running=<html><b>W\u0119ze\u0142 nie jest uruchomiony</b><br><br>Nie mo\u017cesz wgra\u0107 projektu, je\u015bli tw\u00f3j w\u0119ze\u0142 nie jest uruchomiony.<br>Uruchom w\u0119ze\u0142 i spr\u00f3buj ponownie.</html>
+jsite.error.no-local-path=<html><b>\u015acie\u017cka nie jest lokalna</b><br><br>\u015acie\u017cka, kt\u00f3r\u0105 wybra\u0142e\u015b do plik\u00f3w do wgrania nie jest lokalna.<br>Kontynuacja bez niej nie jest mo\u017cliwa.</html>
+jsite.error.no-path=<html><b>\u015acie\u017cka nie prowadzi do FreeStrony</b><br><br>\u015acie\u017cka, kt\u00f3r\u0105 wybra\u0142e\u015b nie prowadzi do FreeStrony.<br>Kontynuacja bez niej nie jest mo\u017cliwa.</html>
+jsite.error.index-missing=<html>Brakuje pliku domy\u015blnego</b><br><br>Plik domy\u015blny, kt\u00f3ry wybra\u0142e\u015b<br>ju\u017c nie istnieje!<br>Wybierz nowy plk domy\u015blny z listy.</html>
+jsite.error.index-not-inserted=<html><b>Plik domy\u015blny nie zosta\u0142 wgrany</b><br><br>Wybra\u0142e\u015b, aby nie wgrywa\u0107 pliku domy\u015blnego!<br>Musisz wybra\u0107, aby by\u0142 wgrywany,<br>albo wybra\u0107 inny plik domy\u015blny!</html>
+jsite.error.no-custom-key=<html><b>Brak w\u0142asnego klucza dla pliku</b><br><br>Wybra\u0142e\u015b, aby nie wgrywa\u0107 <code>{0}</code>,<br>ale nie uda\u0142o si\u0119 wprowadzi\u0107 klucza, by do niego przekierowa\u0107!</html>
+jsite.error.no-files-to-insert=<html><b>Brak plik\u00f3w do wgrania</b><br><br>Nie zaznaczy\u0142e\u015b \u017cadnych plik\u00f3w do wgrania!<br>Zaznacz, prosz\u0119, przynajmniej jeden plik.</html>
+jsite.error.duplicate-file=<html><b>Duplikat pliku</b><br><br>Plik <code>{0}</code> jest wgrany dwa razy!<br>Sprawd\u017a, prosz\u0119, nazwy plik\u00f3w i przekierowania.</html>
diff --git a/src/main/resources/flag-pl.png b/src/main/resources/flag-pl.png
new file mode 100644 (file)
index 0000000..8c564c3
Binary files /dev/null and b/src/main/resources/flag-pl.png differ