Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 5158)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 5159)
@@ -77,4 +77,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.UrlLabel;
+import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.XmlObjectParser;
 import org.openstreetmap.josm.tools.template_engine.ParseError;
@@ -268,4 +269,6 @@
         public String short_description;
         public String icon;
+        public String locale_display_value;
+        public String locale_short_description;
 
         public String getListDisplay() {
@@ -276,14 +279,12 @@
                 return "&nbsp;";
 
-            StringBuilder res = new StringBuilder("<b>");
-            if (display_value != null) {
-                res.append(display_value);
-            } else {
-                res.append(value);
-            }
+            final StringBuilder res = new StringBuilder("<b>");
+            final String displ = Utils.firstNonNull(locale_display_value, tr(display_value), tr(value));
+            res.append(displ);
             res.append("</b>");
-            if (short_description != null) {
+            final String descr = Utils.firstNonNull(locale_short_description, tr(short_description));
+            if (descr != null) {
                 // wrap in table to restrict the text width
-                res.append("<div style=\"width:300px; padding:0 0 5px 5px\">").append(short_description).append("</div>");
+                res.append("<div style=\"width:300px; padding:0 0 5px 5px\">").append(descr).append("</div>");
             }
             return res.toString();
@@ -299,10 +300,4 @@
         public PresetListEntry(String value) {
             this.value = value;
-            this.display_value = value;
-        }
-
-        public PresetListEntry(String value, String display_value) {
-            this.value = value;
-            this.display_value = display_value;
         }
 
@@ -593,24 +588,13 @@
 
         private String[] initListEntriesFromAttributes() {
-
             char delChar = getDelChar();
 
             String[] value_array = splitEscaped(delChar, values);
-            String[] display_array;
-            String[] short_descriptions_array = null;
-
-            if (locale_display_values != null) {
-                display_array = splitEscaped(delChar, locale_display_values);
-            } else if (display_values != null) {
-                display_array = splitEscaped(delChar, display_values);
-            } else {
-                display_array = value_array;
-            }
-
-            if (locale_short_descriptions != null) {
-                short_descriptions_array = splitEscaped(delChar, locale_short_descriptions);
-            } else if (short_descriptions != null) {
-                short_descriptions_array = splitEscaped(delChar, short_descriptions);
-            }
+
+            final String displ = Utils.firstNonNull(locale_display_values, display_values);
+            String[] display_array = displ == null ? value_array : splitEscaped(delChar, displ);
+
+            final String descr = Utils.firstNonNull(locale_short_descriptions, short_descriptions);
+            String[] short_descriptions_array = descr == null ? null : splitEscaped(delChar, descr);
 
             if (display_array.length != value_array.length) {
Index: trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 5158)
+++ trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 5159)
@@ -63,7 +63,16 @@
     }
 
-	public static <T> Collection<T> filter(Collection<? extends T> collection, Predicate<? super T> predicate) {
-		return new FilteredCollection<T>(collection, predicate);
-	}
+    public static <T> Collection<T> filter(Collection<? extends T> collection, Predicate<? super T> predicate) {
+        return new FilteredCollection<T>(collection, predicate);
+    }
+
+    public static <T> T firstNonNull(T... items) {
+        for (T i : items) {
+            if (i != null) {
+                return i;
+            }
+        }
+        return null;
+    }
 
     /**
