Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 2229)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 2230)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
 import static org.openstreetmap.josm.tools.I18n.trn;
 
@@ -68,4 +69,5 @@
     public TaggingPresetMenu group = null;
     public String name;
+    public String name_context;
     public String locale_name;
 
@@ -141,4 +143,5 @@
         public String text;
         public String locale_text;
+        public String text_context;
         public String default_;
         public String originalValue;
@@ -178,5 +181,8 @@
             }
             if(locale_text == null) {
-                locale_text = tr(text);
+                if(text_context != null)
+                    locale_text = trc(text_context, text);
+                else
+                    locale_text = tr(text);
             }
             p.add(new JLabel(locale_text+":"), GBC.std().insets(0,0,10,0));
@@ -209,4 +215,5 @@
         public String key;
         public String text;
+        public String text_context;
         public String locale_text;
         public boolean default_ = false; // only used for tagless objects
@@ -224,5 +231,8 @@
 
             if(locale_text == null) {
-                locale_text = tr(text);
+                if(text_context != null)
+                    locale_text = trc(text_context, text);
+                else
+                    locale_text = tr(text);
             }
 
@@ -287,6 +297,8 @@
         public String key;
         public String text;
+        public String text_context;
         public String locale_text;
         public String values;
+        public String values_context;
         public String display_values;
         public String locale_display_values;
@@ -321,7 +333,7 @@
             }
             for (int i=0; i<value_array.length; i++) {
-                lhm.put(value_array[i],
-                        (locale_display_values == null) ?
-                                tr(display_array[i]) : display_array[i]);
+                lhm.put(value_array[i], (locale_display_values == null)
+                ? (values_context == null ? tr(display_array[i])
+                : tr(values_context, display_array[i])) : display_array[i]);
             }
             if(!usage.unused()){
@@ -365,5 +377,8 @@
 
             if(locale_text == null) {
-                locale_text = tr(text);
+                if(text_context != null)
+                    locale_text = trc(text_context, text);
+                else
+                    locale_text = tr(text);
             }
             p.add(new JLabel(locale_text+":"), GBC.std().insets(0,0,10,0));
@@ -407,9 +422,13 @@
     public static class Label extends Item {
         public String text;
+        public String text_context;
         public String locale_text;
 
         @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
             if(locale_text == null) {
-                locale_text = tr(text);
+                if(text_context != null)
+                    locale_text = trc(text_context, text);
+                else
+                    locale_text = tr(text);
             }
             p.add(new JLabel(locale_text), GBC.eol());
@@ -422,4 +441,5 @@
         public String href;
         public String text;
+        public String text_context;
         public String locale_text;
         public String locale_href;
@@ -427,5 +447,10 @@
         @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
             if(locale_text == null) {
-                locale_text = text == null ? tr("More information about this feature") : tr(text);
+                if(text == null)
+                    locale_text = tr("More information about this feature");
+                if(text_context != null)
+                    locale_text = trc(text_context, text);
+                else
+                    locale_text = tr(text);
             }
             String url = locale_href;
@@ -500,5 +525,8 @@
     public String getLocaleName() {
         if(locale_name == null) {
-            locale_name = tr(name);
+            if(name_context != null)
+                locale_name = trc(name_context, name);
+            else
+                locale_name = tr(name);
         }
         return locale_name;
