Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 1438)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 1439)
@@ -479,4 +479,16 @@
     synchronized public Collection<String> getCollection(String key, Collection<String> def) {
         String s = get(key);
+        if(def != null)
+        {
+            String d = null;
+            for(String a : def)
+            {
+                if(d != null)
+                    d += ";" + a;
+                else
+                    d = a;
+            }
+            putDefault(key, d);
+        }
         if(s != null && s.length() != 0)
            return Arrays.asList(s.split(";"));
Index: trunk/src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 1438)
+++ trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 1439)
@@ -4,8 +4,11 @@
 import static org.openstreetmap.josm.tools.I18n.trn;
 
+import java.util.Arrays;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
+import org.openstreetmap.josm.Main;
 
 /**
@@ -21,4 +24,7 @@
      */
     public final List<RelationMember> members = new ArrayList<RelationMember>();
+
+    final static String[] defnames = {"name", "ref", "restriction", "note"};
+    static Collection<String> names = null;
 
     @Override public void visit(Visitor visitor) {
@@ -82,8 +88,14 @@
 
             name += " (";
-            String nameTag = get("name");
-            if (nameTag == null) nameTag = get("ref");
-            if (nameTag == null) nameTag = get("note");
-            if (nameTag != null) name += "\"" + nameTag + "\", ";
+            if(names == null)
+              names = Main.pref.getCollection("relation.nameOrder", Arrays.asList(defnames));
+            String nameTag = null;
+            for (String n : names) {
+                nameTag = get(n);
+                if (nameTag != null) break;
+            }
+            if (nameTag != null)
+                name += "\"" + nameTag + "\", ";
+
             int mbno = members.size();
             name += trn("{0} member", "{0} members", mbno, mbno) + ")";
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 1438)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 1439)
@@ -16,4 +16,5 @@
 import java.awt.Stroke;
 import java.awt.geom.GeneralPath;
+import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -64,5 +65,5 @@
     protected double circum;
     protected double dist;
-    protected String regionalNameOrder[];
+    protected Collection<String> regionalNameOrder;
     protected Boolean selectedCall;
     protected Boolean useStyleCache;
@@ -1094,6 +1095,6 @@
         String name = null;
         if (n.keys != null) {
-            for (int i = 0; i < regionalNameOrder.length; i++) {
-                name = n.keys.get(regionalNameOrder[i]);
+            for (String rn : regionalNameOrder) {
+                name = n.keys.get(rn);
                 if (name != null) break;
             }
@@ -1244,6 +1245,6 @@
         leftHandTraffic = Main.pref.getBoolean("mappaint.lefthandtraffic",false);
         orderFont = new Font(Main.pref.get("mappaint.font","Helvetica"), Font.PLAIN, Main.pref.getInteger("mappaint.fontsize", 8));
-        String currentLocale = Locale.getDefault().getLanguage();
-        regionalNameOrder = Main.pref.get("mappaint.nameOrder", "name:"+currentLocale+";name;int_name;ref;operator;brand").split(";");
+        String[] names = {"name:"+Main.getLanguageCode(), "name", "int_name", "ref", "operator", "brand"};
+        regionalNameOrder = Main.pref.getCollection("mappaint.nameOrder", Arrays.asList(names));
         minEN = nc.getEastNorth(0,nc.getHeight()-1);
         maxEN = nc.getEastNorth(nc.getWidth()-1,0);
