Index: /trunk/CONTRIBUTION
===================================================================
--- /trunk/CONTRIBUTION	(revision 1801)
+++ /trunk/CONTRIBUTION	(revision 1802)
@@ -1,5 +1,23 @@
-JOSM was originally designed and coded by Immanuel Scholz 
-<imi@eigenheimstrasse.de>, and is now maintained by the 
-OpenStreetMap community.
+JOSM was originally designed and coded by Immanuel Scholz,
+and is now maintained by the OpenStreetMap community.
+
+The current JOSM maintainer is Dirk Stöcker.
+
+Major code contributions from (in alphabetical order):
+
+David Earl
+Gabriel Ebner
+Ulf Lamping
+Raphael Mack
+Frederik Ramm
+Dirk Stöcker
+Stefan Breunig
+Karl Guggisberg
+
+Many minor contributions and patches by others; see SVN history
+at http://josm.openstreetmap.de/svn/ for details. Use
+"josm-dev AT openstreetmap.org" to contact still active authors.
+
+Copyright rests with the contributors.
 
 The jpeg metadata extraction code is from Drew Noakes
@@ -13,2 +31,5 @@
 Pingel (http://xnap-commons.sourceforge.net/gettext-commons/).
 The jar file is licensed under LGPL.
+
+The Bzip2 code is from Keiron Liddle (Apache project) and licensed
+with Apache license version 2.0.
Index: /trunk/LICENSE
===================================================================
--- /trunk/LICENSE	(revision 1801)
+++ /trunk/LICENSE	(revision 1802)
@@ -3,18 +3,5 @@
 
 JOSM, and all its integral parts, are released under the GNU General 
-Public License.
-
-Earlier contributions to JOSM did not specifiy a version of that license,
-but the license included in the distribution was version 2. 
-
-All contributions made on or after 15 April 2008 are explicitly "GPL 
-v2 or later".
-
-This is valid for all files released in the JOSM subversion tree, even
-if they do not carry their own copyright or license information.
-
-According to the current JOSM maintainer, it is safe to assume that all
-previous contributions are also "GPL v2 or later", but an effort will 
-be made to contact the past contributors to have full clarity.
+Public License v2 or later.
 
 The GPL v3 is accessible here:
@@ -24,30 +11,9 @@
 http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 
+When compiled with Bzip2 support code included the whole software is licensed
+GPL v3 or later.
+
+
+
 Note: This is not valid for JOSM plugins. These are not considered
 an integral part of JOSM and may be under any license.
-
-
-Copyright and Contributors
-==========================
-
-JOSM was written by Immanuel Scholz <imi AT eigenheimstrasse.de>.
-
-Major code contributions from (in alphabetical order):
-
-David Earl <david AT frankieandshadow.com>
-Gabriel Ebner <ge AT gabrielebner.at>
-Ulf Lamping <ulf.lamping AT web.de>
-Raphael Mack <ramack AT raphael-mack.de>
-Frederik Ramm <frederik AT remote.org>
-Dirk Stöcker <openstreetmap AT dstoecker.de>
-
-Please add your name liberally if you think you have made a major
-contribution (or add names of others who have).
-
-Many minor contributions and patches by others; see SVN history
-at http://josm.openstreetmap.de/svn/ for details.
-
-The current JOSM maintainer is Dirk Stöcker.
-
-Copyright rests with the contributors.
-
Index: /trunk/src/org/openstreetmap/josm/actions/AboutAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 1801)
+++ /trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 1802)
@@ -127,4 +127,5 @@
         JTextArea readme = loadFile(Main.class.getResource("/README"), false);
         JTextArea contribution = loadFile(Main.class.getResource("/CONTRIBUTION"), false);
+        JTextArea license = loadFile(Main.class.getResource("/LICENSE"), false);
 
         JPanel info = new JPanel(new GridBagLayout());
@@ -148,4 +149,5 @@
         about.addTab(tr("Revision"), createScrollPane(revision));
         about.addTab(tr("Contribution"), createScrollPane(contribution));
+        about.addTab(tr("License"), createScrollPane(license));
         about.addTab(tr("Plugins"), new JScrollPane(PluginHandler.getInfoPanel()));
 
Index: /trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 1801)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 1802)
@@ -3,5 +3,4 @@
 package org.openstreetmap.josm.gui;
 
-import static org.openstreetmap.josm.tools.I18n.i18n;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -15,7 +14,5 @@
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
-import java.util.MissingResourceException;
 
 import javax.swing.JFrame;
@@ -25,5 +22,5 @@
 import org.openstreetmap.josm.tools.BugReportExceptionHandler;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.xnap.commons.i18n.I18nFactory;
+import org.openstreetmap.josm.tools.I18n;
 
 /**
@@ -63,7 +60,5 @@
      */
     public static void main(final String[] argArray) {
-        /* try initial language settings, may be changed later again */
-        try { i18n = I18nFactory.getI18n(MainApplication.class); }
-        catch (MissingResourceException ex) { Locale.setDefault(Locale.ENGLISH);}
+        I18n.init();
 
         Thread.setDefaultUncaughtExceptionHandler(new BugReportExceptionHandler());
@@ -92,36 +87,9 @@
         Main.pref.init(args.containsKey("reset-preferences"));
 
-        String localeName = null; // The locale to use
-
         // Check if passed as parameter
         if (args.containsKey("language"))
-            localeName = (String)(args.get("language").toArray()[0]);
-
-        if (localeName == null)
-            localeName = Main.pref.get("language", null);
-
-        if (localeName != null) {
-            Locale l;
-            Locale d = Locale.getDefault();
-            if (localeName.equals("he")) localeName = "iw_IL";
-            int i = localeName.indexOf('_');
-            if (i > 0) {
-                l = new Locale(localeName.substring(0, i), localeName.substring(i + 1));
-            } else {
-                l = new Locale(localeName);
-            }
-            try {
-                Locale.setDefault(l);
-                i18n = I18nFactory.getI18n(MainApplication.class);
-            } catch (MissingResourceException ex) {
-                if (!l.getLanguage().equals("en")) {
-                    System.out.println(tr("Unable to find translation for the locale {0}. Reverting to {1}.",
-                    l.getDisplayName(), d.getDisplayName()));
-                    Locale.setDefault(d);
-                } else {
-                    i18n = null;
-                }
-            }
-        }
+            I18n.set((String)(args.get("language").toArray()[0]));
+        else
+            I18n.set(Main.pref.get("language", null));
 
         if (argList.contains("--help") || argList.contains("-?") || argList.contains("-h")) {
Index: /trunk/src/org/openstreetmap/josm/tools/I18n.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 1801)
+++ /trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 1802)
@@ -7,5 +7,8 @@
 import java.util.Locale;
 import java.util.LinkedList;
+import java.util.MissingResourceException;
 import java.util.Vector;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.xnap.commons.i18n.I18nFactory;
 
 /**
@@ -89,3 +92,37 @@
         return l;
     }
+
+    public static void init()
+    {
+        /* try initial language settings, may be changed later again */
+        try { i18n = I18nFactory.getI18n(MainApplication.class); }
+        catch (MissingResourceException ex) { Locale.setDefault(Locale.ENGLISH);}
+    }
+
+    public static void set(String localeName)
+    {
+        if (localeName != null) {
+            Locale l;
+            Locale d = Locale.getDefault();
+            if (localeName.equals("he")) localeName = "iw_IL";
+            int i = localeName.indexOf('_');
+            if (i > 0) {
+                l = new Locale(localeName.substring(0, i), localeName.substring(i + 1));
+            } else {
+                l = new Locale(localeName);
+            }
+            try {
+                Locale.setDefault(l);
+                i18n = I18nFactory.getI18n(MainApplication.class);
+            } catch (MissingResourceException ex) {
+                if (!l.getLanguage().equals("en")) {
+                    System.out.println(tr("Unable to find translation for the locale {0}. Reverting to {1}.",
+                    l.getDisplayName(), d.getDisplayName()));
+                    Locale.setDefault(d);
+                } else {
+                    i18n = null;
+                }
+            }
+        }
+    }
 }
