Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 3338)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 3340)
@@ -64,4 +64,5 @@
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
 import org.openstreetmap.josm.plugins.PluginHandler;
+import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.OsmUrlToBounds;
@@ -360,4 +361,6 @@
         UIManager.put("OptionPane.noIcon", UIManager.get("OptionPane.cancelIcon"));
 
+        I18n.fixJFileChooser();
+        
         // init default coordinate format
         //
Index: trunk/src/org/openstreetmap/josm/tools/I18n.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 3338)
+++ trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 3340)
@@ -12,4 +12,5 @@
 import java.util.Vector;
 
+import javax.swing.JColorChooser;
 import javax.swing.JFileChooser;
 import javax.swing.UIManager;
@@ -26,5 +27,7 @@
         MODE_CS, MODE_AR, MODE_PL, MODE_RO, MODE_RU, MODE_SK, MODE_SL}
     private static PluralMode pluralMode = PluralMode.MODE_NOTONE; /* english default */
-    private static String[] fileChooserDialogStringKeys = new String[] {
+
+    /* Localization keys for file chooser (and color chooser). */
+    private static final String[] jFileChooserLocalizationKeys = new String[] {
         /* windows laf */
         "FileChooser.detailsViewActionLabelText",
@@ -92,6 +95,16 @@
         //"FileChooser.saveDialogTitleText",
         "FileChooser.updateButtonText",
-        "FileChooser.updateButtonToolTipText"
-        };
+        "FileChooser.updateButtonToolTipText",
+
+        /* color chooser */
+        "GTKColorChooserPanel.blueText",
+        "GTKColorChooserPanel.colorNameText",
+        "GTKColorChooserPanel.greenText",
+        "GTKColorChooserPanel.hueText",
+        "GTKColorChooserPanel.nameText",
+        "GTKColorChooserPanel.redText",
+        "GTKColorChooserPanel.saturationText",
+        "GTKColorChooserPanel.valueText"
+    };
     private static HashMap<String, String> strings = null;
     private static HashMap<String, String[]> pstrings = null;
@@ -424,15 +437,4 @@
             if (load(localeName)) {
                 Locale.setDefault(l);
-                
-                // localization for file chooser dialog
-                JFileChooser.setDefaultLocale(l);
-                for (String key : fileChooserDialogStringKeys) {
-                    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));
-                    }
-                }
             } else {
                 if (!l.getLanguage().equals("en")) {
@@ -443,4 +445,24 @@
                     pstrings = null;
                 }
+            }
+        }
+    }
+
+    /**
+     * Localizations for file chooser dialog.
+     * For some locals (e.g. de, fr) translations are provided
+     * by Java, but for others (e.g. ru, uk) it is not.
+     */
+    public static void fixJFileChooser() {
+        Locale l = Locale.getDefault();
+
+        JFileChooser.setDefaultLocale(l);
+        JColorChooser.setDefaultLocale(l);
+        for (String key : jFileChooserLocalizationKeys) {
+            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));
             }
         }
