Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/access/AccessRulesetReader.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/access/AccessRulesetReader.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/access/AccessRulesetReader.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.core.access;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.io.IOException;
@@ -120,5 +122,5 @@
 
                 if (currentSection != Section.NONE) {
-                    throw new SAXException("classes element below root child level");
+                    throw new SAXException(tr("Classes element below root child level"));
                 }
 
@@ -130,7 +132,7 @@
 
                 if (currentSection != Section.CLASSES) {
-                    throw new SAXException("class element (" + className + ") outside classes element");
+                    throw new SAXException(tr("Class element ({0}) outside classes element", className));
                 } else if (className == null) {
-                    throw new SAXException("class element without name");
+                    throw new SAXException(tr("Class element without name"));
                 }
 
@@ -144,5 +146,5 @@
 
                 if (currentSection != Section.NONE) {
-                    throw new SAXException("classes element below root child level");
+                    throw new SAXException(tr("Classes element below root child level"));
                 }
 
@@ -154,5 +156,5 @@
                     baseTags.add(readTag(attributes));
                 } else {
-                    throw new SAXException("tag element outside basetag and implication elements");
+                    throw new SAXException(tr("Tag element outside basetag and implication elements"));
                 }
 
@@ -160,5 +162,5 @@
 
                 if (currentSection != Section.NONE) {
-                    throw new SAXException("implications element below root child level");
+                    throw new SAXException(tr("Implications element below root child level"));
                 }
 
@@ -176,7 +178,7 @@
 
             if (key == null) {
-                throw new SAXException("tag without key");
+                throw new SAXException(tr("Tag without key"));
             } else if (value == null) {
-                throw new SAXException("tag without value (key is " + key + ")");
+                throw new SAXException(tr("Tag without value (key is {0})", key));
             }
 
@@ -195,7 +197,7 @@
 
                 if (currentSection != Section.CLASSES) {
-                    throw new SAXException("closed classes while it wasn't open");
+                    throw new SAXException(tr("Closed classes while it was not open"));
                 } else if (currentAccessClass != null) {
-                    throw new SAXException("closed classes element before all class elements were closed");
+                    throw new SAXException(tr("Closed classes element before all class elements were closed"));
                 }
 
@@ -205,5 +207,5 @@
 
                 if (currentAccessClass == null) {
-                    throw new SAXException("closed class element while none was open");
+                    throw new SAXException(tr("Closed class element while none was open"));
                 }
 
@@ -213,5 +215,5 @@
 
                 if (currentSection != Section.BASETAGS) {
-                    throw new SAXException("closed basetags while it wasn't open");
+                    throw new SAXException(tr("Closed basetags while it was not open"));
                 }
 
@@ -221,5 +223,5 @@
 
                 if (currentSection != Section.IMPLICATIONS) {
-                    throw new SAXException("closed implications while it wasn't open");
+                    throw new SAXException(tr("Closed implications while it was not open"));
                 }
 
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/access/ImplicationXMLReader.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/access/ImplicationXMLReader.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/access/ImplicationXMLReader.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.core.access;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.ArrayList;
@@ -67,5 +69,5 @@
                 if ("tag".equals(name)) {
                     if (tagOpen) {
-                        throw new SAXException("tag element inside other tag element");
+                        throw new SAXException(tr("Tag element inside other tag element"));
                     }
                     currentImpliedTags.add(readTag(attributes));
@@ -78,5 +80,5 @@
 
         //all vaild paths end with return; reaching this indicates an invalid tag
-        throw new SAXException("invalid opening xml tag <" + name + "> in state " + state);
+        throw new SAXException(tr("Invalid opening xml tag <{0}> in state {1}", name, state));
 
     }
@@ -91,5 +93,5 @@
                 if (name.equals("condition")) {
                     if (!currentConditionReader.isFinished()) {
-                        throw new SAXException("condition isn't finished at </condition> tag");
+                        throw new SAXException(tr("Condition isn't finished at </condition> tag"));
                     } else {
                         currentCondition = currentConditionReader.getCondition();
@@ -110,5 +112,5 @@
                 } else if (name.equals("tag")) {
                     if (!tagOpen) {
-                        throw new SAXException("closing tag element that was not open");
+                        throw new SAXException(tr("Closing tag element that was not open"));
                     }
                     tagOpen = false;
@@ -131,5 +133,5 @@
 
         //all vaild paths end with return; reaching this indicates an invalid tag
-        throw new SAXException("invalid closing xml tag </" + name + "> in state " + state);
+        throw new SAXException(tr("Invalid closing xml tag </{0}> in state {1}", name, state));
 
     }
@@ -138,5 +140,5 @@
 
         if (state != State.BEFORE_IMPLICATION) {
-            throw new SAXException("some tags not been closed; now in state " + state);
+            throw new SAXException(tr("Some tags not been closed; now in state {0}", state));
         } else {
             return new ArrayList<Implication>(implications);
@@ -150,7 +152,7 @@
 
         if (key == null) {
-            throw new SAXException("tag without key");
+            throw new SAXException(tr("Tag without key"));
         } else if (value == null) {
-            throw new SAXException("tag without value (key is " + key + ")");
+            throw new SAXException(tr("Tag without value (key is {0})", key));
         }
 
@@ -163,5 +165,5 @@
 
         if (key == null) {
-            throw new SAXException("key element without attribute k");
+            throw new SAXException(tr("Key element without attribute k"));
         }
 
@@ -185,5 +187,5 @@
 
             if (finished) {
-                throw new SAXException("condition is already finished at <" + name + ">");
+                throw new SAXException(tr("Condition is already finished at <{0}>", name));
             }
 
@@ -203,5 +205,5 @@
                     condition = TagConditionLogic.key(readKey(attributes));
                 } else if (!("or".equals(name)) && !("and".equals(name)) && !("not".equals(name))) {
-                    throw new SAXException("unknown tag for condition: " + name);
+                    throw new SAXException(tr("Unknown tag for condition: {0}", name));
                 }
 
@@ -210,5 +212,5 @@
 
                 if ("tag".equals(openingName) || "key".equals(openingName)) {
-                    throw new SAXException("element must not have childs: " + openingName);
+                    throw new SAXException(tr("Element must not have childs: {0}", openingName));
                 }
 
@@ -224,5 +226,5 @@
 
             if (finished) {
-                throw new SAXException("condition is already finished at </" + name + ">");
+                throw new SAXException(tr("Condition is already finished at </{0}>", name));
             }
 
@@ -250,5 +252,5 @@
                             condition = TagConditionLogic.and(childConditions);
                         } else {
-                            throw new SAXException("<and> needs at least one child");
+                            throw new SAXException(tr("<and> needs at least one child"));
                         }
                     } else if ("or".equals(openingName)) {
@@ -256,5 +258,5 @@
                             condition = TagConditionLogic.or(childConditions);
                         } else {
-                            throw new SAXException("<or> needs at least one child");
+                            throw new SAXException(tr("<or> needs at least one child"));
                         }
                     } else if ("not".equals(openingName)) {
@@ -262,5 +264,5 @@
                             condition = TagConditionLogic.not(childConditions.get(0));
                         } else {
-                            throw new SAXException("<not> needs at least one child");
+                            throw new SAXException(tr("<not> needs at least one child"));
                         }
                     }
@@ -269,6 +271,5 @@
 
                 } else {
-                    throw new SAXException("wrong closing tag " + name +
-                            " (</" + openingName + "> expected");
+                    throw new SAXException(tr("Wrong closing tag {0} (</{1}> expected)", name, openingName));
                 }
 
@@ -283,5 +284,5 @@
         public TagCondition getCondition() {
             if (!finished) {
-                throw new IllegalStateException("condition " + openingName + " not yet finished");
+                throw new IllegalStateException(tr("Condition {0} not yet finished", openingName));
             } else {
                 assert condition != null;
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/graph/ConnectorEvaluationGroup.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/graph/ConnectorEvaluationGroup.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/graph/ConnectorEvaluationGroup.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.core.graph;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.ArrayList;
@@ -60,5 +62,5 @@
         assert targetNode != null && borderNodes.contains(targetNode);
 
-        if (!evaluated) { throw new IllegalStateException("group not yet evaluated"); }
+        if (!evaluated) { throw new IllegalStateException(tr("Group not yet evaluated")); }
 
         int inboundIndex = borderNodes.indexOf(startNode);
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/graph/JunctionEvaluationGroup.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/graph/JunctionEvaluationGroup.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/graph/JunctionEvaluationGroup.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.core.graph;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.ArrayList;
@@ -36,5 +38,5 @@
      */
     public Collection<Segment> getInboundSegments() {
-        if (!evaluated) { throw new IllegalStateException("group not yet evaluated"); }
+        if (!evaluated) { throw new IllegalStateException(tr("Group not yet evaluated")); }
         return inboundSegments;
     }
@@ -47,5 +49,5 @@
      */
     public Collection<Segment> getOutboundSegments() {
-        if (!evaluated) { throw new IllegalStateException("group not yet evaluated"); }
+        if (!evaluated) { throw new IllegalStateException(tr("Group not yet evaluated")); }
         return outboundSegments;
     }
@@ -66,5 +68,5 @@
         assert outboundSegment != null && outboundSegments.contains(outboundSegment);
 
-        if (!evaluated) { throw new IllegalStateException("group not yet evaluated"); }
+        if (!evaluated) { throw new IllegalStateException(tr("Group not yet evaluated")); }
 
         int inboundIndex = inboundSegments.indexOf(inboundSegment);
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/property/RoadValueLimit.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/property/RoadValueLimit.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/property/RoadValueLimit.java	(revision 26174)
@@ -67,5 +67,5 @@
                 case MINIMUM: return vehicleValue >= (Float) propertyValue;
                 case MAXIMUM: return vehicleValue <= (Float) propertyValue;
-                default:      throw new Error("unhandled LimitType");
+                default:      throw new Error("Unhandled LimitType");
             }
         } else {
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/util/TagConditionLogic.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/util/TagConditionLogic.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/core/util/TagConditionLogic.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.core.util;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.Collection;
@@ -88,5 +90,5 @@
     public static TagCondition and(final Collection<TagCondition> conditions) {
         if (conditions.size() == 0) {
-            throw new IllegalArgumentException("collection must contain at least one condition");
+            throw new IllegalArgumentException(tr("Collection must contain at least one condition"));
         }
         return new TagCondition() {
@@ -155,5 +157,5 @@
     public static TagCondition or(final Collection<TagCondition> conditions) {
         if (conditions.size() == 0) {
-            throw new IllegalArgumentException("collection must contain at least one condition");
+            throw new IllegalArgumentException(tr("Collection must contain at least one condition"));
         }
         return new TagCondition() {
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/GraphViewPlugin.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/GraphViewPlugin.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/GraphViewPlugin.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.plugin;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.io.File;
@@ -92,5 +94,5 @@
 
                 if (accessRuleset == null) {
-                    JOptionPane.showMessageDialog(Main.parent, "No ruleset has been selected!", "No ruleset", JOptionPane.ERROR_MESSAGE);
+                    JOptionPane.showMessageDialog(Main.parent, tr("No ruleset has been selected!"), tr("No ruleset"), JOptionPane.ERROR_MESSAGE);
                 } else {
                     transitionStructure.setAccessParametersAndRuleset(preferences.getCurrentParameterBookmark(), accessRuleset);
@@ -103,6 +105,6 @@
 
                 if (accessRuleset == null) {
-                    JOptionPane.showMessageDialog(Main.parent, "No ruleset has been selected!",
-                            "No ruleset", JOptionPane.ERROR_MESSAGE);
+                    JOptionPane.showMessageDialog(Main.parent, tr("No ruleset has been selected!"),
+                            tr("No ruleset"), JOptionPane.ERROR_MESSAGE);
                 } else {
 
@@ -126,11 +128,11 @@
 
         } catch (AccessRulesetSyntaxException e) {
-            JOptionPane.showMessageDialog(Main.parent, "syntax exception in access ruleset:\n" + e);
+            JOptionPane.showMessageDialog(Main.parent, tr("Syntax exception in access ruleset:\n{0}", e));
             e.printStackTrace();
         } catch (FileNotFoundException e) {
-            JOptionPane.showMessageDialog(Main.parent, "file not found:\n" + e);
+            JOptionPane.showMessageDialog(Main.parent, tr("File not found:\n{0}", e));
             e.printStackTrace();
         } catch (IOException e) {
-            JOptionPane.showMessageDialog(Main.parent, "problem when accessing a file:\n" + e);
+            JOptionPane.showMessageDialog(Main.parent, tr("Problem when accessing a file:\n{0}", e));
             e.printStackTrace();
         }
@@ -148,6 +150,6 @@
 
                 if (accessRuleset == null) {
-                    JOptionPane.showMessageDialog(Main.parent, "No ruleset has been selected!",
-                            "No ruleset", JOptionPane.ERROR_MESSAGE);
+                    JOptionPane.showMessageDialog(Main.parent, tr("No ruleset has been selected!"),
+                            tr("No ruleset"), JOptionPane.ERROR_MESSAGE);
                 } else {
                     transitionStructure.setAccessParametersAndRuleset(
@@ -159,11 +161,11 @@
 
         } catch (AccessRulesetSyntaxException e) {
-            JOptionPane.showMessageDialog(Main.parent, "syntax exception in access ruleset:\n" + e);
+            JOptionPane.showMessageDialog(Main.parent, tr("Syntax exception in access ruleset:\n{0}", e));
             e.printStackTrace();
         } catch (FileNotFoundException e) {
-            JOptionPane.showMessageDialog(Main.parent, "file not found:\n" + e);
+            JOptionPane.showMessageDialog(Main.parent, tr("File not found:\n", e));
             e.printStackTrace();
         } catch (IOException e) {
-            JOptionPane.showMessageDialog(Main.parent, "problem when accessing a file:\n" + e);
+            JOptionPane.showMessageDialog(Main.parent, tr("Problem when accessing a file:\n{0}", e));
             e.printStackTrace();
         }
@@ -206,5 +208,5 @@
                 rulesetInputStream = rulesetURL.openStream();
             } else {
-                throw new FileNotFoundException("couldn't find built-in ruleset " + ruleset);
+                throw new FileNotFoundException(tr("Couldn't find built-in ruleset {0}", ruleset));
             }
 
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/AccessParameterDialog.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/AccessParameterDialog.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/AccessParameterDialog.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.plugin.dialogs;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import static org.openstreetmap.josm.plugins.graphview.core.property.VehiclePropertyTypes.MAX_INCLINE_DOWN;
@@ -50,10 +52,10 @@
     static {
         FLOAT_PROPERTIES = new LinkedHashMap<VehiclePropertyType<Float>, String>();
-        FLOAT_PROPERTIES.put(VehiclePropertyTypes.HEIGHT, "height (m)");
-        FLOAT_PROPERTIES.put(VehiclePropertyTypes.WIDTH, "width (m)");
-        FLOAT_PROPERTIES.put(VehiclePropertyTypes.LENGTH, "length (m)");
-        FLOAT_PROPERTIES.put(VehiclePropertyTypes.SPEED, "speed (km/h)");
-        FLOAT_PROPERTIES.put(VehiclePropertyTypes.WEIGHT, "weight (t)");
-        FLOAT_PROPERTIES.put(VehiclePropertyTypes.AXLELOAD, "axleload (t)");
+        FLOAT_PROPERTIES.put(VehiclePropertyTypes.HEIGHT, tr("height (m)"));
+        FLOAT_PROPERTIES.put(VehiclePropertyTypes.WIDTH, tr("width (m)"));
+        FLOAT_PROPERTIES.put(VehiclePropertyTypes.LENGTH, tr("length (m)"));
+        FLOAT_PROPERTIES.put(VehiclePropertyTypes.SPEED, tr("speed (km/h)"));
+        FLOAT_PROPERTIES.put(VehiclePropertyTypes.WEIGHT, tr("weight (t)"));
+        FLOAT_PROPERTIES.put(VehiclePropertyTypes.AXLELOAD, tr("axleload (t)"));
     }
 
@@ -67,5 +69,5 @@
         public BookmarkNamePanel(String initialName) {
             super();
-            this.setBorder(BorderFactory.createTitledBorder("bookmark name"));
+            this.setBorder(BorderFactory.createTitledBorder(tr("Bookmark name")));
 
             this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
@@ -81,5 +83,5 @@
 
             if (existingBookmarkNames.contains(name)) {
-                JOptionPane.showMessageDialog(this, "Bookmark name already exists!");
+                JOptionPane.showMessageDialog(this, tr("Bookmark name already exists!"));
                 return null;
             }
@@ -87,6 +89,5 @@
             for (char nameChar : name.toCharArray()) {
                 if (FORBIDDEN_CHARS.contains(nameChar)) {
-                    JOptionPane.showMessageDialog(this, "Bookmark name must not contain '" +
-                            nameChar + "'!");
+                    JOptionPane.showMessageDialog(this, tr("Bookmark name must not contain ''{0}''!", nameChar));
                     return null;
                 }
@@ -103,5 +104,5 @@
         public AccessClassPanel(PreferenceAccessParameters initialParameters) {
             super();
-            this.setBorder(BorderFactory.createTitledBorder("access class"));
+            this.setBorder(BorderFactory.createTitledBorder(tr("Access class")));
 
             this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
@@ -118,6 +119,5 @@
             for (char nameChar : name.toCharArray()) {
                 if (FORBIDDEN_CHARS.contains(nameChar)) {
-                    JOptionPane.showMessageDialog(this, "Access class must not contain '" +
-                            nameChar + "'!");
+                    JOptionPane.showMessageDialog(this, tr("Access class must not contain ''{0}''!", nameChar));
                     return null;
                 }
@@ -137,5 +137,5 @@
         public AccessTypesPanel(PreferenceAccessParameters initialParameters) {
             super();
-            this.setBorder(BorderFactory.createTitledBorder("access types"));
+            this.setBorder(BorderFactory.createTitledBorder(tr("Access types")));
 
             this.setLayout(
@@ -174,5 +174,5 @@
         public VehiclePropertiesPanel(PreferenceAccessParameters initialParameters) {
             super();
-            this.setBorder(BorderFactory.createTitledBorder("vehicle properties"));
+            this.setBorder(BorderFactory.createTitledBorder(tr("Vehicle properties")));
 
             this.setLayout(new GridLayout(((COLS-1 + FLOAT_PROPERTIES.size()) / COLS),
@@ -223,5 +223,5 @@
         public RoadQualityPanel(PreferenceAccessParameters initialParameters) {
             super();
-            this.setBorder(BorderFactory.createTitledBorder("road requirements"));
+            this.setBorder(BorderFactory.createTitledBorder(tr("Road requirements")));
 
 
@@ -230,6 +230,6 @@
             /* incline up */
             {
-                JLabel inclineUpLabel = new JLabel("max. incline up (%, pos.)");
-                inclineUpLabel.setToolTipText("maximum incline the vehicle can go up");
+                JLabel inclineUpLabel = new JLabel(tr("Max. incline up (%, pos.)"));
+                inclineUpLabel.setToolTipText(tr("Maximum incline the vehicle can go up"));
                 this.add(inclineUpLabel);
 
@@ -241,5 +241,5 @@
                     inclineUpTextField.setText(vehiclePropertyString);
                 }
-                inclineUpTextField.setToolTipText("maximum incline the vehicle can go up");
+                inclineUpTextField.setToolTipText(tr("Maximum incline the vehicle can go up"));
 
                 this.add(inclineUpTextField);
@@ -248,6 +248,6 @@
             /* incline down */
             {
-                JLabel inclineDownLabel = new JLabel("max. incline down (%, pos.)");
-                inclineDownLabel.setToolTipText("maximum incline the vehicle can go down");
+                JLabel inclineDownLabel = new JLabel(tr("Max. incline down (%, pos.)"));
+                inclineDownLabel.setToolTipText(tr("Maximum incline the vehicle can go down"));
                 this.add(inclineDownLabel);
 
@@ -259,5 +259,5 @@
                     inclineDownTextField.setText(vehiclePropertyString);
                 }
-                inclineDownTextField.setToolTipText("maximum incline the vehicle can go down");
+                inclineDownTextField.setToolTipText(tr("Maximum incline the vehicle can go down"));
 
                 this.add(inclineDownTextField);
@@ -266,7 +266,7 @@
             /* surface */
             {
-                JLabel surfaceLabel = new JLabel("surface blacklist");
-                surfaceLabel.setToolTipText("list of surfaces the vehicle cannot use, "
-                        + "values are separated by semicolons (;)");
+                JLabel surfaceLabel = new JLabel(tr("Surface blacklist"));
+                surfaceLabel.setToolTipText(tr("List of surfaces the vehicle cannot use, "
+                        + "values are separated by semicolons (;)"));
                 this.add(surfaceLabel);
 
@@ -280,6 +280,6 @@
                 }
 
-                surfaceTextField.setToolTipText("list of surfaces the vehicle cannot use, "
-                        + "values are separated by semicolons (;)");
+                surfaceTextField.setToolTipText(tr("List of surfaces the vehicle cannot use, "
+                        + "values are separated by semicolons (;)"));
 
                 this.add(surfaceTextField);
@@ -288,7 +288,7 @@
             /* tracktype */
             {
-                JLabel tracktypeLabel = new JLabel("max. tracktype grade");
-                tracktypeLabel.setToolTipText("worst tracktype (1-5) the vehicle can still use,"
-                        + " 0 for none");
+                JLabel tracktypeLabel = new JLabel(tr("max. tracktype grade"));
+                tracktypeLabel.setToolTipText(tr("Worst tracktype (1-5) the vehicle can still use,"
+                        + " 0 for none"));
                 this.add(tracktypeLabel);
 
@@ -300,6 +300,6 @@
                     tracktypeTextField.setText(vehiclePropertyString);
                 }
-                tracktypeTextField.setToolTipText("worst tracktype (1-5) the vehicle can still use,"
-                        + " 0 for none");
+                tracktypeTextField.setToolTipText(tr("Worst tracktype (1-5) the vehicle can still use,"
+                        + " 0 for none"));
 
                 this.add(tracktypeTextField);
@@ -343,5 +343,5 @@
             new BoxLayout(this, BoxLayout.X_AXIS);
 
-            JButton okButton = new JButton(existingBookmark?"Change bookmark":"Create bookmark");
+            JButton okButton = new JButton(existingBookmark?tr("Change bookmark"):tr("Create bookmark"));
             okButton.addActionListener(new ActionListener() {
                 public void actionPerformed(ActionEvent e) {
@@ -358,5 +358,5 @@
             this.add(okButton);
 
-            JButton cancelButton = new JButton("Cancel");
+            JButton cancelButton = new JButton(tr("Cancel"));
             cancelButton.addActionListener(new ActionListener() {
                 public void actionPerformed(ActionEvent e) {
@@ -384,5 +384,5 @@
             Collection<String> existingBookmarkNames,
             PreferenceAccessParameters initialAccessParameters, BookmarkAction okAction) {
-        super(owner, "edit access parameters", true);
+        super(owner, tr("Edit access parameters"), true);
 
         this.existingBookmark = existingBookmark;
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/GraphViewDialog.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/GraphViewDialog.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/GraphViewDialog.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.plugin.dialogs;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.BorderLayout;
@@ -65,6 +67,6 @@
     public GraphViewDialog(final GraphViewPlugin plugin) {
 
-        super("Graph View Dialog", "graphview",
-                "Open the dialog for graph view configuration.", (Shortcut)null, HEIGHT);
+        super(tr("Graph View Dialog"), "graphview",
+                tr("Open the dialog for graph view configuration."), (Shortcut)null, HEIGHT);
 
         this.preferences = GraphViewPreferences.getInstance();
@@ -73,15 +75,15 @@
         availableColorSchemes = new LinkedHashMap<String, ColorScheme>();
 
-        availableColorSchemes.put("default",
+        availableColorSchemes.put(tr("default"),
                 new PreferencesColorScheme(preferences));
-        availableColorSchemes.put("end nodes",
+        availableColorSchemes.put(tr("end nodes"),
                 new EndNodeColorScheme(Color.GRAY, Color.RED, Color.GRAY));
-        availableColorSchemes.put("maxspeed",
+        availableColorSchemes.put(tr("maxspeed"),
                 new MaxspeedColorScheme());
-        availableColorSchemes.put("maxweight",
+        availableColorSchemes.put(tr("maxweight"),
                 new MaxweightColorScheme());
-        availableColorSchemes.put("maxheight",
+        availableColorSchemes.put(tr("maxheight"),
                 new MaxheightColorScheme());
-        availableColorSchemes.put("incline",
+        availableColorSchemes.put(tr("incline"),
                 new InclineColorScheme());
 
@@ -103,5 +105,5 @@
         /* create ruleset label and combo box */
         {
-            JLabel rulesetLabel = new JLabel("ruleset:");
+            JLabel rulesetLabel = new JLabel(tr("Ruleset:"));
             gbcLabel.gridy = 0;
             selectionLayout.setConstraints(rulesetLabel, gbcLabel);
@@ -117,5 +119,5 @@
         /* create bookmark label and combo box */
         {
-            JLabel bookmarkLabel = new JLabel("parameters:");
+            JLabel bookmarkLabel = new JLabel(tr("Parameters:"));
             gbcLabel.gridy = 1;
             selectionLayout.setConstraints(bookmarkLabel, gbcLabel);
@@ -131,5 +133,5 @@
         /* create color scheme label and combo box */
         {
-            JLabel colorSchemeLabel = new JLabel("coloring:");
+            JLabel colorSchemeLabel = new JLabel(tr("Coloring:"));
             gbcLabel.gridy = 2;
             selectionLayout.setConstraints(colorSchemeLabel, gbcLabel);
@@ -154,5 +156,5 @@
 
         JPanel buttonPanel = new JPanel();
-        JButton showLayerButton = new JButton("create/update graph");
+        JButton showLayerButton = new JButton(tr("Create/update graph"));
         showLayerButton.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/GraphViewPreferenceEditor.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/GraphViewPreferenceEditor.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/dialogs/GraphViewPreferenceEditor.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.plugin.dialogs;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Color;
@@ -59,6 +61,6 @@
         readPreferences();
 
-        preferencePanel = gui.createPreferenceTab("graphview", "Graphview",
-        "Settings for the Graphview plugin that visualizes routing graphs.");
+        preferencePanel = gui.createPreferenceTab("graphview", tr("Graphview"),
+        tr("Settings for the Graphview plugin that visualizes routing graphs."));
 
         JPanel mainPanel = createMainPanel();
@@ -123,13 +125,13 @@
 
         JPanel rulesetPanel = new JPanel();
-        rulesetPanel.setBorder(BorderFactory.createTitledBorder("ruleset"));
+        rulesetPanel.setBorder(BorderFactory.createTitledBorder(tr("Ruleset")));
         rulesetPanel.setLayout(new BoxLayout(rulesetPanel, BoxLayout.Y_AXIS));
 
-        internalRulesetCheckBox = new JCheckBox("use built-in rulesets");
+        internalRulesetCheckBox = new JCheckBox(tr("Use built-in rulesets"));
         internalRulesetCheckBox.setSelected(GraphViewPreferences.getInstance().getUseInternalRulesets());
         internalRulesetCheckBox.addActionListener(internalRulesetActionListener);
         rulesetPanel.add(internalRulesetCheckBox);
 
-        rulesetFolderLabel = new JLabel("external ruleset directory:");
+        rulesetFolderLabel = new JLabel(tr("Wxternal ruleset directory:"));
         rulesetPanel.add(rulesetFolderLabel);
 
@@ -139,5 +141,5 @@
         rulesetPanel.add(rulesetFolderTextField);
 
-        selectRulesetFolderButton = new JButton("select directory");
+        selectRulesetFolderButton = new JButton(tr("Select directory"));
         selectRulesetFolderButton.addActionListener(selectRulesetFolderActionListener);
         rulesetPanel.add(selectRulesetFolderButton);
@@ -151,5 +153,5 @@
 
         JPanel vehiclePanel = new JPanel();
-        vehiclePanel.setBorder(BorderFactory.createTitledBorder("vehicle"));
+        vehiclePanel.setBorder(BorderFactory.createTitledBorder(tr("Vehicle")));
         vehiclePanel.setLayout(new BoxLayout(vehiclePanel, BoxLayout.Y_AXIS));
 
@@ -160,17 +162,17 @@
         buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
 
-        JButton createButton = new JButton("create");
+        JButton createButton = new JButton(tr("Create"));
         createButton.addActionListener(createVehicleActionListener);
         buttonPanel.add(createButton);
 
-        editBookmarkButton = new JButton("edit");
+        editBookmarkButton = new JButton(tr("Edit"));
         editBookmarkButton.addActionListener(editVehicleActionListener);
         buttonPanel.add(editBookmarkButton);
 
-        deleteBookmarkButton = new JButton("delete");
+        deleteBookmarkButton = new JButton(tr("Delete"));
         deleteBookmarkButton.addActionListener(deleteVehicleActionListener);
         buttonPanel.add(deleteBookmarkButton);
 
-        JButton restoreDefaultsButton = new JButton("restore defaults");
+        JButton restoreDefaultsButton = new JButton(tr("Restore defaults"));
         restoreDefaultsButton.addActionListener(restoreVehicleDefaultsActionListener);
         buttonPanel.add(restoreDefaultsButton);
@@ -184,8 +186,8 @@
     	
     	JPanel visualizationPanel = new JPanel();
-    	visualizationPanel.setBorder(BorderFactory.createTitledBorder("visualization"));
+    	visualizationPanel.setBorder(BorderFactory.createTitledBorder(tr("Visualization")));
     	visualizationPanel.setLayout(new BoxLayout(visualizationPanel, BoxLayout.Y_AXIS));
     	
-    	separateDirectionsCheckBox = new JCheckBox("draw directions separately");
+    	separateDirectionsCheckBox = new JCheckBox(tr("Draw directions separately"));
     	separateDirectionsCheckBox.setSelected(GraphViewPreferences.getInstance().getSeparateDirections());
     	visualizationPanel.add(separateDirectionsCheckBox);
@@ -198,5 +200,5 @@
     		Color nodeColor = GraphViewPreferences.getInstance().getNodeColor();
     		
-    		nodeColorButton = new JButton("node color");
+    		nodeColorButton = new JButton(tr("Node color"));
     		nodeColorButton.addActionListener(chooseNodeColorActionListener);
     		colorPanel.add(nodeColorButton);
@@ -207,5 +209,5 @@
     		Color segmentColor = GraphViewPreferences.getInstance().getSegmentColor();
     		
-    		segmentColorButton = new JButton("arrow color");
+    		segmentColorButton = new JButton(tr("Arrow color"));
     		segmentColorButton.addActionListener(chooseSegmentColorActionListener);
     		colorPanel.add(segmentColorButton);
@@ -280,5 +282,5 @@
                     null,
                     false,
-                    "new bookmark",
+                    tr("New bookmark"),
                     parameterBookmarks.keySet(),
                     defaultBookmarkParameters,
@@ -337,6 +339,6 @@
                 int userChoice = JOptionPane.showConfirmDialog(
                         preferencePanel,
-                        "Really delete \"" + selectedBookmarkName + "\"?",
-                        "Bookmark deletion",
+                        tr("Really delete \"{0}\"?", selectedBookmarkName),
+                        tr("Bookmark deletion"),
                         JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
 
@@ -355,7 +357,7 @@
             int userChoice = JOptionPane.showConfirmDialog(
                     preferencePanel,
-                    "Really restore default bookmarks?\n"
-                    + "All manually added or edited bookmarks will be lost!",
-                    "Bookmark reset",
+                    tr("Really restore default bookmarks?\n"
+                    + "All manually added or edited bookmarks will be lost!"),
+                    tr("Bookmark reset"),
                     JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
 
@@ -374,5 +376,5 @@
         	
         	Color selectedColor = JColorChooser.showDialog(
-        			preferencePanel, "Choose node color", nodeColorField.getBackground());
+        			preferencePanel, tr("Choose node color"), nodeColorField.getBackground());
         	
         	if (selectedColor != null) {
@@ -387,5 +389,5 @@
         	
         	Color selectedColor = JColorChooser.showDialog(
-        			preferencePanel, "Choose arrow color", segmentColorField.getBackground());
+        			preferencePanel, tr("Choose arrow color"), segmentColorField.getBackground());
         	
         	if (selectedColor != null) {
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/layer/GraphViewLayer.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/layer/GraphViewLayer.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/layer/GraphViewLayer.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.plugin.layer;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.BasicStroke;
@@ -251,5 +253,5 @@
     private Point getNodePoint(LatLonCoords coords, MapView mv) {
         LatLon latLon = new LatLon(coords.getLat(), coords.getLon());
-        EastNorth eastNorth = Main.proj.latlon2eastNorth(latLon);
+        EastNorth eastNorth = Main.getProjection().latlon2eastNorth(latLon);
         return mv.getPoint(eastNorth);
     }
@@ -300,10 +302,10 @@
     @Override
     public String getToolTipText() {
-        return "routing graph calculated by the GraphView plugin";
+        return tr("Routing graph calculated by the GraphView plugin");
     }
 
     @Override
     public void mergeFrom(Layer from) {
-        throw new AssertionError("GraphView layer is not mergable");
+        throw new AssertionError(tr("GraphView layer is not mergable"));
     }
 
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/preferences/GraphViewPreferences.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/preferences/GraphViewPreferences.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/preferences/GraphViewPreferences.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.plugin.preferences;
+
+import static org.openstreetmap.josm.tools.I18n.marktr;
 
 import static org.openstreetmap.josm.plugins.graphview.core.property.VehiclePropertyTypes.AXLELOAD;
@@ -216,6 +218,4 @@
         currentInternalRuleset = null;
 
-        nodeColor = Color.WHITE;
-        segmentColor = Color.WHITE;
         currentColorScheme = new PreferencesColorScheme(this);
 
@@ -244,6 +244,6 @@
         }
 
-        Main.pref.put("graphview.defaultNodeColor", createColorString(nodeColor));
-        Main.pref.put("graphview.defaultSegmentColor", createColorString(segmentColor));
+        Main.pref.putColor(marktr("GraphView default node"), nodeColor);
+        Main.pref.putColor(marktr("Graphview default segment"), segmentColor);
 
         Main.pref.put("graphview.separateDirections", separateDirections);
@@ -289,17 +289,6 @@
         }
 
-        if (Main.pref.hasKey("graphview.defaultNodeColor")) {
-            Color color = parseColorString(Main.pref.get("graphview.defaultNodeColor"));
-            if (color != null) {
-                nodeColor = color;
-            }
-        }
-        if (Main.pref.hasKey("graphview.defaultSegmentColor")) {
-            Color color = parseColorString(Main.pref.get("graphview.defaultSegmentColor"));
-            if (color != null) {
-                segmentColor = color;
-            }
-        }
-
+        nodeColor = Main.pref.getColor(marktr("GraphView default node"), Color.white);
+        segmentColor = Main.pref.getColor(marktr("Graphview default segment"), Color.white);
         separateDirections = Main.pref.getBoolean("graphview.separateDirections", false);
 
@@ -471,22 +460,3 @@
         }
     }
-
-    private static final Pattern COLOR_PATTERN =
-        Pattern.compile("^(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})$");
-    private String createColorString(Color color) {
-        return color.getRed() + ", " + color.getGreen() + ", " + color.getBlue();
-    }
-
-    private Color parseColorString(String string) {
-        Matcher matcher = COLOR_PATTERN.matcher(string);
-        if (!matcher.matches()) {
-            return null;
-        } else {
-            int r = Integer.parseInt(matcher.group(1));
-            int g = Integer.parseInt(matcher.group(2));
-            int b = Integer.parseInt(matcher.group(3));
-            return new Color(r, g, b);
-        }
-    }
-
 }
Index: applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/preferences/VehiclePropertyStringParser.java
===================================================================
--- applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/preferences/VehiclePropertyStringParser.java	(revision 23434)
+++ applications/editors/josm/plugins/graphview/src/org/openstreetmap/josm/plugins/graphview/plugin/preferences/VehiclePropertyStringParser.java	(revision 26174)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.graphview.plugin.preferences;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.security.InvalidParameterException;
@@ -31,17 +33,17 @@
 
     public static final String ERROR_WEIGHT =
-        "Weights must be given as positive decimal numbers with unit \"t\" or without unit.";
+        tr("Weights must be given as positive decimal numbers with unit \"t\" or without unit.");
     public static final String ERROR_LENGTH =
-        "Lengths must be given as positive decimal numbers with unit \"m\", \"km\", \"mi\"" +
-        " or without unit.\nAlternatively, the format FEET' INCHES\" can be used.";
+        tr("Lengths must be given as positive decimal numbers with unit \"m\", \"km\", \"mi\"" +
+        " or without unit.\nAlternatively, the format FEET' INCHES\" can be used.");
     public static final String ERROR_SPEED =
-        "Speeds should be given as numbers without unit or "
-        + "as numbers followed by \"mph\".";
+        tr("Speeds should be given as numbers without unit or "
+        + "as numbers followed by \"mph\".");
     public static final String ERROR_INCLINE =
-        "Inclines must be given as positive decimal numbers with followed by \"%\".";
+        tr("Inclines must be given as positive decimal numbers with followed by \"%\".");
     public static final String ERROR_TRACKTYPE =
-        "Tracktype grades must be given as integers between 0 and 5.";
+        tr("Tracktype grades must be given as integers between 0 and 5.");
     public static final String ERROR_SURFACE =
-        "Surface values must not contain any of the following characters: ',' '{' '}' '=' '|";
+        tr("Surface values must not contain any of the following characters: ',' '{' '}' '=' '|");
 
     private static final List<Character> FORBIDDEN_SURFACE_CHARS =
@@ -145,5 +147,5 @@
 
         } else {
-            throw new InvalidParameterException("unknown property type: " + propertyType);
+            throw new InvalidParameterException("Unknown property type: " + propertyType);
         }
 
