Index: src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 998)
+++ src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(working copy)
@@ -48,6 +48,7 @@
 	protected Font orderFont;
 	protected ElemStyles styles;
 	protected double circum;
+    protected String regionalNameOrder[];
 
 	protected boolean isZoomOk(ElemStyle e) {
 		if (!zoomLevelDisplay) /* show everything if the user wishes so */
@@ -230,7 +231,7 @@
 		if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) || (p.y > nc.getHeight())) return;
 		int w = icon.getIconWidth(), h=icon.getIconHeight();
 		icon.paintIcon ( Main.map.mapView, g, p.x-w/2, p.y-h/2 );
-		String name = (n.keys==null) ? null : n.keys.get("name");
+		String name = getNodeName(n);
 		if (name!=null && annotate)
 		{
 			g.setColor(textColor);
@@ -246,6 +247,17 @@
 		}
 	}
 
+    protected String getNodeName(Node n) {
+        String name = null;
+        if (n.keys != null) {
+            for (int i = 0; i < regionalNameOrder.length; i++) {
+                name = n.keys.get(regionalNameOrder[i]);
+                if (name != null) break; 
+            }
+        }
+        return name;
+    }
+
 	private void drawSeg(Node n1, Node n2, Color col, boolean showDirection, int width, boolean dashed) {
 		if (col != currentColor || width != currentWidth || dashed != currentDashed) {
 			displaySegments(col, width, dashed);
@@ -326,6 +338,7 @@
 		circum = Main.map.mapView.getScale()*100*Main.proj.scaleFactor()*40041455; // circumference of the earth in meter
 		styles = MapPaintStyles.getStyles();
 		orderFont = new Font(Main.pref.get("mappaint.font","Helvetica"), Font.PLAIN, Main.pref.getInteger("mappaint.fontsize", 8));
+	    regionalNameOrder = (Main.pref.get("mappaint.nameOrder", "name:en name:de int_name")+" name").split("\\s");
 
 		if(styles.hasAreas())
 		{
