Index: /trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/Main.java	(revision 12643)
+++ /trunk/src/org/openstreetmap/josm/Main.java	(revision 12644)
@@ -51,5 +51,4 @@
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
-import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
@@ -712,5 +711,4 @@
     public static void preConstructorInit() {
         ProjectionPreference.setProjection();
-        I18n.translateJavaInternalMessages();
 
         // init default coordinate format
Index: /trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 12643)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 12644)
@@ -265,5 +265,5 @@
                 // hooks for the jmapviewer component
                 FeatureAdapter.registerBrowserAdapter(OpenBrowser::displayUrl);
-                FeatureAdapter.registerTranslationAdapter(I18n.getTranslationAdapter());
+                FeatureAdapter.registerTranslationAdapter(I18n::tr);
                 FeatureAdapter.registerLoggingAdapter(name -> Logging.getLogger());
                 // UI update
@@ -710,5 +710,5 @@
         FontsManager.initialize();
 
-        I18n.setupLanguageFonts();
+        GuiHelper.setupLanguageFonts();
 
         Handler.install();
@@ -777,4 +777,5 @@
         toolbar = new ToolbarPreferences();
         Main.toolbar = toolbar;
+        GuiHelper.translateJavaInternalMessages();
         preConstructorInit();
 
Index: /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java	(revision 12643)
+++ /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java	(revision 12644)
@@ -26,6 +26,9 @@
 import java.awt.image.FilteredImageSource;
 import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.Enumeration;
 import java.util.EventObject;
+import java.util.Locale;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
@@ -34,5 +37,7 @@
 import javax.swing.GrayFilter;
 import javax.swing.ImageIcon;
+import javax.swing.JColorChooser;
 import javax.swing.JComponent;
+import javax.swing.JFileChooser;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
@@ -51,4 +56,5 @@
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -67,4 +73,90 @@
  */
 public final class GuiHelper {
+
+    /* Localization keys for file chooser (and color chooser). */
+    private static final String[] JAVA_INTERNAL_MESSAGE_KEYS = new String[] {
+        /* JFileChooser windows laf */
+        "FileChooser.detailsViewActionLabelText",
+        "FileChooser.detailsViewButtonAccessibleName",
+        "FileChooser.detailsViewButtonToolTipText",
+        "FileChooser.fileAttrHeaderText",
+        "FileChooser.fileDateHeaderText",
+        "FileChooser.fileNameHeaderText",
+        "FileChooser.fileNameLabelText",
+        "FileChooser.fileSizeHeaderText",
+        "FileChooser.fileTypeHeaderText",
+        "FileChooser.filesOfTypeLabelText",
+        "FileChooser.homeFolderAccessibleName",
+        "FileChooser.homeFolderToolTipText",
+        "FileChooser.listViewActionLabelText",
+        "FileChooser.listViewButtonAccessibleName",
+        "FileChooser.listViewButtonToolTipText",
+        "FileChooser.lookInLabelText",
+        "FileChooser.newFolderAccessibleName",
+        "FileChooser.newFolderActionLabelText",
+        "FileChooser.newFolderToolTipText",
+        "FileChooser.refreshActionLabelText",
+        "FileChooser.saveInLabelText",
+        "FileChooser.upFolderAccessibleName",
+        "FileChooser.upFolderToolTipText",
+        "FileChooser.viewMenuLabelText",
+
+        /* JFileChooser gtk laf */
+        "FileChooser.acceptAllFileFilterText",
+        "FileChooser.cancelButtonText",
+        "FileChooser.cancelButtonToolTipText",
+        "FileChooser.deleteFileButtonText",
+        "FileChooser.filesLabelText",
+        "FileChooser.filterLabelText",
+        "FileChooser.foldersLabelText",
+        "FileChooser.newFolderButtonText",
+        "FileChooser.newFolderDialogText",
+        "FileChooser.openButtonText",
+        "FileChooser.openButtonToolTipText",
+        "FileChooser.openDialogTitleText",
+        "FileChooser.pathLabelText",
+        "FileChooser.renameFileButtonText",
+        "FileChooser.renameFileDialogText",
+        "FileChooser.renameFileErrorText",
+        "FileChooser.renameFileErrorTitle",
+        "FileChooser.saveButtonText",
+        "FileChooser.saveButtonToolTipText",
+        "FileChooser.saveDialogTitleText",
+
+        /* JFileChooser motif laf */
+        //"FileChooser.cancelButtonText",
+        //"FileChooser.cancelButtonToolTipText",
+        "FileChooser.enterFileNameLabelText",
+        //"FileChooser.filesLabelText",
+        //"FileChooser.filterLabelText",
+        //"FileChooser.foldersLabelText",
+        "FileChooser.helpButtonText",
+        "FileChooser.helpButtonToolTipText",
+        //"FileChooser.openButtonText",
+        //"FileChooser.openButtonToolTipText",
+        //"FileChooser.openDialogTitleText",
+        //"FileChooser.pathLabelText",
+        //"FileChooser.saveButtonText",
+        //"FileChooser.saveButtonToolTipText",
+        //"FileChooser.saveDialogTitleText",
+        "FileChooser.updateButtonText",
+        "FileChooser.updateButtonToolTipText",
+
+        /* gtk color chooser */
+        "GTKColorChooserPanel.blueText",
+        "GTKColorChooserPanel.colorNameText",
+        "GTKColorChooserPanel.greenText",
+        "GTKColorChooserPanel.hueText",
+        "GTKColorChooserPanel.nameText",
+        "GTKColorChooserPanel.redText",
+        "GTKColorChooserPanel.saturationText",
+        "GTKColorChooserPanel.valueText",
+
+        /* JOptionPane */
+        "OptionPane.okButtonText",
+        "OptionPane.yesButtonText",
+        "OptionPane.noButtonText",
+        "OptionPane.cancelButtonText"
+    };
 
     private GuiHelper() {
@@ -526,3 +618,44 @@
         }
     }
+
+    /**
+     * Localizations for file chooser dialog.
+     * For some locales (e.g. de, fr) translations are provided
+     * by Java, but not for others (e.g. ru, uk).
+     * @since 12644 (moved from I18n)
+     */
+    public static void translateJavaInternalMessages() {
+        Locale l = Locale.getDefault();
+
+        AbstractFileChooser.setDefaultLocale(l);
+        JFileChooser.setDefaultLocale(l);
+        JColorChooser.setDefaultLocale(l);
+        for (String key : JAVA_INTERNAL_MESSAGE_KEYS) {
+            String us = UIManager.getString(key, Locale.US);
+            String loc = UIManager.getString(key, l);
+            // only provide custom translation if it is not already localized by Java
+            if (us != null && us.equals(loc)) {
+                UIManager.put(key, tr(us));
+            }
+        }
+    }
+
+    /**
+     * Setup special font for Khmer script, as the default Java fonts do not display these characters.
+     * @since 12644 (moved from I18n)
+     * @since 8282
+     */
+    public static void setupLanguageFonts() {
+        // Use special font for Khmer script, as the default Java font do not display these characters
+        if ("km".equals(LanguageInfo.getJOSMLocaleCode())) {
+            Collection<String> fonts = Arrays.asList(
+                    GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames());
+            for (String f : new String[]{"Khmer UI", "DaunPenh", "MoolBoran"}) {
+                if (fonts.contains(f)) {
+                    setUIFont(f);
+                    break;
+                }
+            }
+        }
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/tools/I18n.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 12643)
+++ /trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 12644)
@@ -2,5 +2,4 @@
 package org.openstreetmap.josm.tools;
 
-import java.awt.GraphicsEnvironment;
 import java.io.BufferedInputStream;
 import java.io.File;
@@ -22,12 +21,4 @@
 import java.util.jar.JarInputStream;
 import java.util.zip.ZipEntry;
-
-import javax.swing.JColorChooser;
-import javax.swing.JFileChooser;
-import javax.swing.UIManager;
-
-import org.openstreetmap.gui.jmapviewer.FeatureAdapter.TranslationAdapter;
-import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
 
 /**
@@ -95,89 +86,5 @@
     private static volatile String loadedCode = "en";
 
-    /* Localization keys for file chooser (and color chooser). */
-    private static final String[] JAVA_INTERNAL_MESSAGE_KEYS = new String[] {
-        /* JFileChooser windows laf */
-        "FileChooser.detailsViewActionLabelText",
-        "FileChooser.detailsViewButtonAccessibleName",
-        "FileChooser.detailsViewButtonToolTipText",
-        "FileChooser.fileAttrHeaderText",
-        "FileChooser.fileDateHeaderText",
-        "FileChooser.fileNameHeaderText",
-        "FileChooser.fileNameLabelText",
-        "FileChooser.fileSizeHeaderText",
-        "FileChooser.fileTypeHeaderText",
-        "FileChooser.filesOfTypeLabelText",
-        "FileChooser.homeFolderAccessibleName",
-        "FileChooser.homeFolderToolTipText",
-        "FileChooser.listViewActionLabelText",
-        "FileChooser.listViewButtonAccessibleName",
-        "FileChooser.listViewButtonToolTipText",
-        "FileChooser.lookInLabelText",
-        "FileChooser.newFolderAccessibleName",
-        "FileChooser.newFolderActionLabelText",
-        "FileChooser.newFolderToolTipText",
-        "FileChooser.refreshActionLabelText",
-        "FileChooser.saveInLabelText",
-        "FileChooser.upFolderAccessibleName",
-        "FileChooser.upFolderToolTipText",
-        "FileChooser.viewMenuLabelText",
-
-        /* JFileChooser gtk laf */
-        "FileChooser.acceptAllFileFilterText",
-        "FileChooser.cancelButtonText",
-        "FileChooser.cancelButtonToolTipText",
-        "FileChooser.deleteFileButtonText",
-        "FileChooser.filesLabelText",
-        "FileChooser.filterLabelText",
-        "FileChooser.foldersLabelText",
-        "FileChooser.newFolderButtonText",
-        "FileChooser.newFolderDialogText",
-        "FileChooser.openButtonText",
-        "FileChooser.openButtonToolTipText",
-        "FileChooser.openDialogTitleText",
-        "FileChooser.pathLabelText",
-        "FileChooser.renameFileButtonText",
-        "FileChooser.renameFileDialogText",
-        "FileChooser.renameFileErrorText",
-        "FileChooser.renameFileErrorTitle",
-        "FileChooser.saveButtonText",
-        "FileChooser.saveButtonToolTipText",
-        "FileChooser.saveDialogTitleText",
-
-        /* JFileChooser motif laf */
-        //"FileChooser.cancelButtonText",
-        //"FileChooser.cancelButtonToolTipText",
-        "FileChooser.enterFileNameLabelText",
-        //"FileChooser.filesLabelText",
-        //"FileChooser.filterLabelText",
-        //"FileChooser.foldersLabelText",
-        "FileChooser.helpButtonText",
-        "FileChooser.helpButtonToolTipText",
-        //"FileChooser.openButtonText",
-        //"FileChooser.openButtonToolTipText",
-        //"FileChooser.openDialogTitleText",
-        //"FileChooser.pathLabelText",
-        //"FileChooser.saveButtonText",
-        //"FileChooser.saveButtonToolTipText",
-        //"FileChooser.saveDialogTitleText",
-        "FileChooser.updateButtonText",
-        "FileChooser.updateButtonToolTipText",
-
-        /* gtk color chooser */
-        "GTKColorChooserPanel.blueText",
-        "GTKColorChooserPanel.colorNameText",
-        "GTKColorChooserPanel.greenText",
-        "GTKColorChooserPanel.hueText",
-        "GTKColorChooserPanel.nameText",
-        "GTKColorChooserPanel.redText",
-        "GTKColorChooserPanel.saturationText",
-        "GTKColorChooserPanel.valueText",
-
-        /* JOptionPane */
-        "OptionPane.okButtonText",
-        "OptionPane.yesButtonText",
-        "OptionPane.noButtonText",
-        "OptionPane.cancelButtonText"
-    };
+
     private static volatile Map<String, String> strings;
     private static volatile Map<String, String[]> pstrings;
@@ -679,25 +586,4 @@
     }
 
-    /**
-     * Localizations for file chooser dialog.
-     * For some locales (e.g. de, fr) translations are provided
-     * by Java, but not for others (e.g. ru, uk).
-     */
-    public static void translateJavaInternalMessages() {
-        Locale l = Locale.getDefault();
-
-        AbstractFileChooser.setDefaultLocale(l);
-        JFileChooser.setDefaultLocale(l);
-        JColorChooser.setDefaultLocale(l);
-        for (String key : JAVA_INTERNAL_MESSAGE_KEYS) {
-            String us = UIManager.getString(key, Locale.US);
-            String loc = UIManager.getString(key, l);
-            // only provide custom translation if it is not already localized by Java
-            if (us != null && us.equals(loc)) {
-                UIManager.put(key, tr(us));
-            }
-        }
-    }
-
     private static int pluralEval(long n) {
         switch(pluralMode) {
@@ -732,26 +618,3 @@
         return 0;
     }
-
-    public static TranslationAdapter getTranslationAdapter() {
-        return I18n::tr;
-    }
-
-    /**
-     * Setup special font for Khmer script, as the default Java fonts do not display these characters.
-     *
-     * @since 8282
-     */
-    public static void setupLanguageFonts() {
-        // Use special font for Khmer script, as the default Java font do not display these characters
-        if ("km".equals(LanguageInfo.getJOSMLocaleCode())) {
-            Collection<String> fonts = Arrays.asList(
-                    GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames());
-            for (String f : new String[]{"Khmer UI", "DaunPenh", "MoolBoran"}) {
-                if (fonts.contains(f)) {
-                    GuiHelper.setUIFont(f);
-                    break;
-                }
-            }
-        }
-    }
 }
