changeset 2166:2898b1ff6013

I18N for WINFO calculation result messages. flys-artifacts/trunk@3758 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 24 Jan 2012 22:59:44 +0000
parents 637dd38d0e2f
children e0add4b2d4bc
files flys-artifacts/ChangeLog flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/BackJumpCorrector.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation2.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation3.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation4.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WstValueTable.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/resources/Resources.java flys-artifacts/src/main/resources/messages.properties flys-artifacts/src/main/resources/messages_de.properties flys-artifacts/src/main/resources/messages_de_DE.properties flys-artifacts/src/main/resources/messages_en.properties
diffstat 13 files changed, 244 insertions(+), 88 deletions(-) [+]
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/ChangeLog	Tue Jan 24 22:59:44 2012 +0000
@@ -1,3 +1,27 @@
+2012-01-24	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	I18N for WINFO calculations messages.
+
+	* src/main/java/de/intevation/flys/artifacts/model/Calculation.java:
+	  Allow optional arguments in error messages to support meaningful
+	  formatting containing e.g. numbers.
+
+	* src/main/java/de/intevation/flys/artifacts/resources/Resources.java:
+	  Added a convenience getMsg() method.
+
+	* src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java,
+	  src/main/java/de/intevation/flys/artifacts/math/BackJumpCorrector.java,
+	  src/main/java/de/intevation/flys/artifacts/model/Calculation2.java,
+	  src/main/java/de/intevation/flys/artifacts/model/Calculation3.java,
+	  src/main/java/de/intevation/flys/artifacts/model/WstValueTable.java,
+	  src/main/java/de/intevation/flys/artifacts/model/Calculation4.java:
+	  Adjusted the code to use the I18N symbols now.
+
+	* src/main/resources/messages.properties,
+	  src/main/resources/messages_de_DE.properties,
+	  src/main/resources/messages_en.properties,
+	  src/main/resources/messages_de.properties: Added the I18N strings.
+
 2012-01-23	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
 
 	* src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java:
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java	Tue Jan 24 22:59:44 2012 +0000
@@ -348,12 +348,12 @@
 
         River river = FLYSUtils.getRiver(this);
         if (river == null) {
-            return error(new WQKms[0], "No river selected.");
+            return error(new WQKms[0], "no.river.selected");
         }
 
         double[] kms = getKms();
         if (kms == null) {
-            return error(new WQKms[0], "No Kms selected.");
+            return error(new WQKms[0], "no.kms.selected");
         }
 
         double[] qs   = getQs();
@@ -366,7 +366,7 @@
             ws   = getWs();
             double [][] qws = getQsForWs(ws);
             if (qws == null) {
-                return error(new WQKms[0], "conversion ws to qs failed.");
+                return error(new WQKms[0], "converting.ws.to.qs.failed");
             }
             qs = qws[0];
 
@@ -378,13 +378,13 @@
 
         WstValueTable wst = WstValueTableFactory.getTable(river);
         if (wst == null) {
-            return error(new WQKms[0], "No Wst found for selected river.");
+            return error(new WQKms[0], "no.wst.for.selected.river");
         }
 
 
         double [] range = FLYSUtils.getKmRange(this);
         if (range == null) {
-            return error(new WQKms[0], "No range found");
+            return error(new WQKms[0], "no.range.found");
         }
 
         double refKm;
@@ -397,7 +397,7 @@
             Gauge gauge = river.determineGaugeByPosition(range[0]);
             if (gauge == null) {
                 return error(
-                    new WQKms[0], "No gauge found for km " + range[0]);
+                    new WQKms[0], "no.gauge.found.for.km");
             }
 
             refKm = gauge.getStation().doubleValue();
@@ -446,24 +446,24 @@
         River r = FLYSUtils.getRiver(this);
 
         if (r == null) {
-            return error(null, "Cannot determine river.");
+            return error(null, "no.river.selected");
         }
 
         Gauge g = getGauge();
 
         if (g == null) {
-           return error(null, "Cannot determine gauge.");
+           return error(null, "no.gauge.selected");
         }
 
         double[] locations = FLYSUtils.getLocations(this);
 
         if (locations == null) {
-            return error(null, "Cannot determine location.");
+            return error(null, "no.locations.selected");
         }
 
         WstValueTable wst = WstValueTableFactory.getTable(r);
         if (wst == null) {
-            return error(null, "No Wst found for selected river.");
+            return error(null, "no.wst.for.river");
         }
 
         return computeDurationCurveData(g, wst, locations[0]);
@@ -504,19 +504,19 @@
 
         River river = FLYSUtils.getRiver(this);
         if (river == null) {
-            return error(new WQKms[0], "no river found");
+            return error(new WQKms[0], "no.river.selected");
         }
 
         double [] distance = FLYSUtils.getKmRange(this);
 
         if (distance == null) {
-            return error(new WQKms[0], "no range found");
+            return error(new WQKms[0], "no.range.found");
         }
 
         List<Gauge> gauges = river.determineGauges(distance[0], distance[1]);
 
         if (gauges.isEmpty()) {
-            return error(new WQKms[0], "no gauges found");
+            return error(new WQKms[0], "no.gauge.selected");
         }
 
         String [] names = new String[gauges.size()];
@@ -561,18 +561,18 @@
         River r = FLYSUtils.getRiver(this);
 
         if (r == null) {
-            return error(new WQKms[0], "Cannot determine river.");
+            return error(new WQKms[0], "no.river.selected");
         }
 
         double[] locations = FLYSUtils.getLocations(this);
 
         if (locations == null) {
-            return error(new WQKms[0], "Cannot determine location.");
+            return error(new WQKms[0], "no.locations.selected");
         }
 
         WstValueTable wst = WstValueTableFactory.getTable(r);
         if (wst == null) {
-            return error(new WQKms[0], "No Wst found for selected river.");
+            return error(new WQKms[0], "no.wst.for.river");
         }
 
         return computeDischargeCurveData(wst, locations[0]);
@@ -617,27 +617,27 @@
         River river = FLYSUtils.getRiver(this);
         if (river == null) {
             logger.debug("No river selected.");
-            return error(new WQKms[0], "No river selected.");
+            return error(new WQKms[0], "no.river.selected");
         }
 
         WstValueTable table = WstValueTableFactory.getTable(river);
         if (table == null) {
             logger.debug("No wst found for selected river.");
-            return error(new WQKms[0], "No wst found for selected river.");
+            return error(new WQKms[0], "no.wst.for.river");
         }
 
         List<Segment> segments = getSegments();
 
         if (segments == null) {
             logger.debug("Cannot create segments.");
-            return error(new WQKms[0], "Cannot create segments.");
+            return error(new WQKms[0], "cannot.create.segments");
         }
 
         double [] range = getFromToStep();
 
         if (range == null) {
             logger.debug("Cannot figure out range.");
-            return error(new WQKms[0], "Cannot figure out range.");
+            return error(new WQKms[0], "no.range.found");
         }
 
         Calculation4 calc4 = new Calculation4(segments, river, isQ());
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/BackJumpCorrector.java	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/BackJumpCorrector.java	Tue Jan 24 22:59:44 2012 +0000
@@ -154,8 +154,7 @@
                 spline = interpolator.interpolate(x, y);
             }
             catch (MathIllegalArgumentException miae) {
-                // TODO: I18N
-                errors.addProblem("creating spline interpolation failed.");
+                errors.addProblem("spline.creation.failed");
                 log.error(miae);
                 continue;
             }
@@ -179,8 +178,7 @@
                 }
             }
             catch (ArgumentOutsideDomainException aode) {
-                // TODO: I18N
-                errors.addProblem("spline interpolation failed.");
+                errors.addProblem("spline.interpolation.failed");
                 log.error("spline interpolation failed", aode);
             }
         } // for all km
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation.java	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation.java	Tue Jan 24 22:59:44 2012 +0000
@@ -5,19 +5,23 @@
 
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Arrays;
 
 import java.io.Serializable;
 
 import de.intevation.artifacts.CallMeta;
 
+import de.intevation.flys.artifacts.resources.Resources;
+
 public class Calculation
 implements   Serializable
 {
     public static class Problem
     implements          Serializable
     {
-        protected Double km;
-        protected String msg;
+        protected Double    km;
+        protected String    msg;
+        protected Object [] args;
 
         public Problem() {
         }
@@ -26,20 +30,46 @@
             this.msg = msg;
         }
 
+        public Problem(String msg, Object [] args) {
+            this.msg  = msg;
+            this.args = args;
+        }
+
         public Problem(double km, String msg) {
             this.km  = km;
             this.msg = msg;
         }
 
+        public Problem(double km, String msg, Object [] args) {
+            this.km   = km;
+            this.msg  = msg;
+            this.args = args;
+        }
+
         public Element toXML(Document document, CallMeta meta) {
-            // TODO: i18n
             Element problem = document.createElement("problem");
             if (km != null) {
                 problem.setAttribute("km", String.valueOf(km));
             }
-            problem.setTextContent(msg);
+            String text = args != null
+                ? Resources.getMsg(meta, msg, msg)
+                : Resources.getMsg(meta, msg, msg, args);
+            problem.setTextContent(text);
             return problem;
         }
+
+        @Override
+        public boolean equals(Object other) {
+            if (!(other instanceof Problem)) {
+                return false;
+            }
+            Problem o = (Problem)other;
+            return !(!msg.equals(o.msg)
+                || (km == null && o.km != null)
+                || (km != null && o.km == null)
+                || (km != null && !km.equals(o.km))
+                || !Arrays.equals(args, o.args));
+        }
     } // class Problem
 
     protected List<Problem> problems;
@@ -58,12 +88,27 @@
         return problems;
     }
 
+    public void addProblem(Problem problem) {
+        List<Problem> problems = checkProblems();
+        if (!problems.contains(problem)) {
+            problems.add(problem);
+        }
+    }
+
     public void addProblem(String msg) {
-        checkProblems().add(new Problem(msg));
+        addProblem(new Problem(msg));
+    }
+
+    public void addProblem(String msg, Object ... args) {
+        addProblem(new Problem(msg, args));
     }
 
     public void addProblem(double km, String msg) {
-        checkProblems().add(new Problem(km, msg));
+        addProblem(new Problem(km, msg));
+    }
+
+    public void addProblem(double km, String msg, Object ... args) {
+        addProblem(new Problem(km, msg, args));
     }
 
     public boolean hasProblems() {
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation2.java	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation2.java	Tue Jan 24 22:59:44 2012 +0000
@@ -25,8 +25,7 @@
         double [][] wqs = wst.interpolateWQ(km, this);
 
         if (wqs == null || wqs[0].length == 0) {
-            logger.debug("Cannot compute discharge curve data.");
-            addProblem("Cannot compute discharge curve data.");
+            addProblem("cannot.compute.discharge.curve");
             return new CalculationResult(new WQKms[0], this);
         }
 
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation3.java	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation3.java	Tue Jan 24 22:59:44 2012 +0000
@@ -25,7 +25,7 @@
         double [] ws = wst.interpolateW(km, qs, new double[qs.length], this);
 
         if (days == null || days.length == 0) {
-            addProblem(km, "cannot find Ds");
+            addProblem(km, "cannot.find.ds");
         }
 
         if (logger.isDebugEnabled()) {
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation4.java	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation4.java	Tue Jan 24 22:59:44 2012 +0000
@@ -109,8 +109,7 @@
 
         if (segments.isEmpty()) {
             logger.debug("no segments found");
-            // TODO: I18N
-            addProblem("no segments found");
+            addProblem("no.segments.found");
             return new CalculationResult(new WQKms[0], this);
         }
 
@@ -118,8 +117,7 @@
 
         if (numResults < 1) {
             logger.debug("no values given");
-            // TODO: I18N
-            addProblem("no values given");
+            addProblem("no.values.given");
             return new CalculationResult(new WQKms[0], this);
         }
 
@@ -226,8 +224,7 @@
                             anchor.values[i]);
 
                         if ((qPositions[i] = qi) == null) {
-                            // TODO: I18N
-                            addProblem(pos, "cannot find q = " + anchor.values[i]);
+                            addProblem(pos, "cannot.find.q", anchor.values[i]);
                             functions[i] = Identity.IDENTITY;
                         }
                         else {
@@ -263,8 +260,7 @@
                     results[i].add(out[0], out[1], pos);
                 }
                 else {
-                    // TODO: I18N
-                    addProblem(pos, "cannot interpolate w/q");
+                    addProblem(pos, "cannot.interpolate.w.q");
                 }
             }
         }
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WstValueTable.java	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WstValueTable.java	Tue Jan 24 22:59:44 2012 +0000
@@ -130,8 +130,7 @@
             }
             catch (ArgumentOutsideDomainException aode) {
                 if (errors != null) {
-                    // TODO: I18N
-                    errors.addProblem(km, "spline interpolation failed");
+                    errors.addProblem(km, "spline.interpolation.failed");
                 }
                 log.error("spline interpolation failed.", aode);
             }
@@ -222,9 +221,8 @@
                     double wo = other.getW(qPosition);
                     if (Double.isNaN(wt) || Double.isNaN(wo)) {
                         if (errors != null) {
-                            // TODO: I18N
                             errors.addProblem(
-                                km, "cannot find w for q = " + iqs[i]);
+                                km, "cannot.find.w.for.q", iqs[i]);
                         }
                         ows[i] = Double.NaN;
                     }
@@ -234,8 +232,7 @@
                 }
                 else {
                     if (errors != null) {
-                        // TODO: I18N
-                        errors.addProblem(km, "cannot find q = " + iqs[i]);
+                        errors.addProblem(km, "cannot.find.q", iqs[i]);
                     }
                     ows[i] = Double.NaN;
                 }
@@ -251,8 +248,7 @@
 
             if (W < 1) {
                 if (errors != null) {
-                    // TODO: I18N
-                    errors.addProblem(km, "no ws found");
+                    errors.addProblem(km, "no.ws.found");
                 }
                 return null;
             }
@@ -262,9 +258,8 @@
             for (int i = 0; i < W; ++i) {
                 double sq = table.getQIndex(i, km);
                 if (Double.isNaN(sq) && errors != null) {
-                    // TODO: I18N
                     errors.addProblem(
-                        km, "no q found in " + (i+1) + " column");
+                        km, "no.q.found.in.column", (i+1));
                 }
                 splineQs[i] = sq;
             }
@@ -278,8 +273,7 @@
             }
             catch (MathIllegalArgumentException miae) {
                 if (errors != null) {
-                    // TODO: I18N
-                    errors.addProblem(km, "spline creation failed");
+                    errors.addProblem(km, "spline.creation.failed");
                 }
                 log.error("spline creation failed", miae);
             }
@@ -296,8 +290,7 @@
 
             if (W < 1) {
                 if (errors != null) {
-                    // TODO: I18N
-                    errors.addProblem("no ws found");
+                    errors.addProblem("no.ws.found");
                 }
                 return null;
             }
@@ -316,8 +309,7 @@
 
                 if (Double.isNaN(wws) || Double.isNaN(wqs)) {
                     if (errors != null) {
-                        // TODO: I18N
-                        errors.addProblem(km, "cannot find w or q");
+                        errors.addProblem(km, "cannot.find.w.or.q");
                     }
                 }
 
@@ -335,8 +327,7 @@
             }
             catch (MathIllegalArgumentException miae) {
                 if (errors != null) {
-                    // TODO: I18N
-                    errors.addProblem(km, "spline creation failed");
+                    errors.addProblem(km, "spline.creation.failed");
                 }
                 log.error("spline creation failed", miae);
             }
@@ -559,17 +550,15 @@
             for (int i = 0; i < qs.length; ++i) {
                 if (getQPosition(km, qs[i], qPosition) == null) {
                     if (errors != null) {
-                        // TODO: I18N
-                        errors.addProblem(km, "cannot find q = " + qs[i]);
+                        errors.addProblem(km, "cannot.find.q", qs[i]);
                     }
                     ws[i] = Double.NaN;
                 }
                 else {
                     if (Double.isNaN(ws[i] = row.getW(qPosition))
                     && errors != null) {
-                        // TODO: I18N
                         errors.addProblem(
-                            km, "cannot find w for q = " + qs[i]);
+                            km, "cannot.find.w.for.q", qs[i]);
                     }
                 }
             }
@@ -581,8 +570,7 @@
                 // do not extrapolate
                 Arrays.fill(ws, Double.NaN);
                 if (errors != null) {
-                    // TODO: I18N
-                    errors.addProblem(km, "km not found");
+                    errors.addProblem(km, "km.not.found");
                 }
             }
             else {
@@ -626,8 +614,7 @@
         if (rowIndex < 1 || rowIndex >= rows.size()) {
             // do not extrapolate
             if (errors != null) {
-                // TODO: I18N
-                errors.addProblem(km, "km not found");
+                errors.addProblem(km, "km.not.found");
             }
             return new double[2][0];
         }
@@ -719,7 +706,7 @@
             Arrays.fill(ws, Double.NaN);
             Arrays.fill(qs, Double.NaN);
             if (errors != null) {
-                errors.addProblem(referenceKm, "cannot find q");
+                errors.addProblem(referenceKm, "cannot.find.q", q);
             }
             return null;
         }
@@ -732,7 +719,7 @@
 
             if (Double.isNaN(qs[i] = getQ(qPosition, kms[i]))) {
                 if (errors != null) {
-                    errors.addProblem(kms[i], "cannot find q");
+                    errors.addProblem(kms[i], "cannot.find.q", q);
                 }
                 ws[i] = Double.NaN;
                 continue;
@@ -745,7 +732,7 @@
                 // direct row match
                 if (Double.isNaN(ws[i] = rows.get(rowIndex).getW(qPosition))
                 && errors != null) {
-                    errors.addProblem(kms[i], "cannot find w");
+                    errors.addProblem(kms[i], "cannot.find.w.for.q", q);
                 }
                 continue;
             }
@@ -755,7 +742,7 @@
             if (rowIndex < 1 || rowIndex > R1) {
                 // do not extrapolate
                 if (errors != null) {
-                    errors.addProblem(kms[i], "cannot find km");
+                    errors.addProblem(kms[i], "km.not.found");
                 }
                 ws[i] = Double.NaN;
                 continue;
@@ -765,7 +752,7 @@
 
             if (Double.isNaN(ws[i] = r1.getW(r2, kms[i], qPosition))
             && errors != null) {
-                errors.addProblem(kms[i], "cannot find w");
+                errors.addProblem(kms[i], "cannot.find.w.for.q", q);
             }
         }
 
@@ -874,8 +861,7 @@
         if (rowIndex >= 0) {
             SplineFunction sf = rows.get(rowIndex).createSpline(this, errors);
             if (sf == null && errors != null) {
-                // TODO: I18N
-                errors.addProblem(km, "cannot create w/q relation");
+                errors.addProblem(km, "cannot.create.wq.relation");
             }
             return sf;
         }
@@ -885,8 +871,7 @@
         if (rowIndex < 1 || rowIndex >= rows.size()) {
             // Do not extrapolate.
             if (errors != null) {
-                // TODO: I18N
-                errors.addProblem(km, "km not found");
+                errors.addProblem(km, "km.not.found");
             }
             return null;
         }
@@ -897,8 +882,7 @@
 
         SplineFunction sf = r1.createSpline(r2, km, this, errors);
         if (sf == null && errors != null) {
-            // TODO: I18N
-            errors.addProblem(km, "cannot create w/q relation");
+            errors.addProblem(km, "cannot.create.wq.relation");
         }
 
         return sf;
@@ -924,8 +908,7 @@
         PolynomialSplineFunction iQ1 = sf1.createIndexQRelation();
         if (iQ1 == null) {
             if (errors != null) {
-                // TODO: I18N
-                errors.addProblem(km1, "cannot create index/q relation");
+                errors.addProblem(km1, "cannot.create.index.q.relation");
             }
             return new double[2][0];
         }
@@ -933,8 +916,7 @@
         PolynomialSplineFunction iQ2 = sf1.createIndexQRelation();
         if (iQ2 == null) {
             if (errors != null) {
-                // TODO: I18N
-                errors.addProblem(km2, "cannot create index/q relation");
+                errors.addProblem(km2, "cannot.create.index.q.relation");
             }
             return new double[2][0];
         }
@@ -969,9 +951,8 @@
                     //      and if we should report this more than once.
                     hadErrors = true;
                     if (errors != null) {
-                        // TODO: I18N
+                        errors.addProblem("relating.w.w.failed");
                         log.debug("W~W failed", aode);
-                        errors.addProblem("W~W failed");
                     }
                 }
             }
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/resources/Resources.java	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/resources/Resources.java	Tue Jan 24 22:59:44 2012 +0000
@@ -90,6 +90,13 @@
         return getMsg(locale, key, def);
     }
 
+    public static String getMsg(
+        CallMeta meta,
+        String   key,
+        Object[] args
+    ) {
+        return getMsg(meta, key, key, args);
+    }
 
     /**
      * Returns a translated message based on a template specified by <i>key</i>
@@ -108,7 +115,7 @@
         String   def,
         Object[] args)
     {
-        String template = getMsg(meta, key, null);
+        String template = getMsg(meta, key, (String)null);
 
         if (template == null) {
             return def;
--- a/flys-artifacts/src/main/resources/messages.properties	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/resources/messages.properties	Tue Jan 24 22:59:44 2012 +0000
@@ -130,3 +130,30 @@
 Elbe = Elbe
 
 state.map.river = River
+
+spline.interpolation.failed = Spline interpolation failed.
+cannot.find.w.for.q = Cannot find W for Q = {0,number,#.##}.
+cannot.find.q = Cannot find Q = {0,number,#.##}.
+no.ws.found = No Ws found.
+no.q.found.in.column = No Q found in {0,integer} column.
+spline.creation.failed = Spline creation failed.
+cannot.find.w.or.q = Cannot find W or Q.
+km.not.found = Cannot find km.
+cannot.create.wq.relation = Cannot create W/Q relation.
+cannot.create.index.q.relation = Cannot create index/Q relation.
+relating.w.w.failed = Relating W with W failed.
+
+no.river.selected = No river selected.
+no.gauge.selected = No gauge selected.
+no.locations.selected = No locations selected.
+no.kms.selected = No KMs selected.
+converting.ws.to.qs.failed = Converting Ws to Qs failed.
+no.wst.for.river = No WST found for selected river.
+no.range.found = No range found.
+no.gauge.found.for.km = No gauge found for KM.
+cannot.create.segments = Cannot create segments.
+cannot.compute.discharge.curve = Cannot create discharge curve.
+cannot.find.ds = Cannot find Ds.
+no.segments.found = No segments found.
+no.values.given = No values given.
+cannot.interpolate.wq = Cannot interpolate W/Q.
--- a/flys-artifacts/src/main/resources/messages_de.properties	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/resources/messages_de.properties	Tue Jan 24 22:59:44 2012 +0000
@@ -16,7 +16,7 @@
 
 calc.surface.curve = Wasserstand/Wasserspiegellage
 calc.flood.map = \u00dcberschwemmungsfl\u00e4che
-calc.discharge.curve = Abflusskurve/abflusstafel
+calc.discharge.curve = Abflusskurve/Abflusstafel
 calc.duration.curve = Dauerlinie
 calc.discharge.longitudinal.section = W bei ungleichwertigem Abflussl\u00e4ngsschnitt
 calc.w.differences = Differenzen
@@ -44,7 +44,7 @@
 calculation_mode = Berechnungsart
 ld_locations = Ort(e)
 
-chart.cross_section.title = Querprofildiagram für Gew\u00e4sser {0}
+chart.cross_section.title = Querprofildiagram f\u00fcr Gew\u00e4sser {0}
 chart.cross_section.subtitle = {0}-km: {1,number,#.###}
 chart.cross_section.xaxis.label = Abstand [m]
 chart.cross_section.yaxis.label = W [NN + m]
@@ -131,3 +131,29 @@
 
 state.map.river = Gew\u00e4sser
 
+spline.interpolation.failed = Spline interpolation fehlgeschlagen.
+cannot.find.w.for.q = W zu Q = {0,number,#.##} kann nicht ermittelt werden.
+cannot.find.q = Q = {0,number,#.##} konnte nicht gefunden werden.
+no.ws.found = Keine Ws gefunden.
+no.q.found.in.column = In Spalte {0,integer} wurde kein Q gefunden.
+spline.creation.failed = Spline creation failed.
+cannot.find.w.or.q = W oder Q konnten nicht ermittelt werden.
+km.not.found = Passender Kilometer konnte nicht gefunden werden.
+cannot.create.wq.relation = W/Q-Beziehung konnte nicht ermittelt werden.
+cannot.create.index.q.relation = Spaltenindex/Q-Beziehung konnte nicht erstellt werden.
+relating.w.w.failed = Relating W with W failed.
+
+no.river.selected = Kein Gew\u00e4sser ausgew\u00e4hlt.
+no.gauge.selected = Kein Pegel ausgew\u00e4hlt.
+no.locations.selected = Keine Orte angegeben.
+no.kms.selected = Keine Kilometerstationen angegeben.
+converting.ws.to.qs.failed = Konvertierung von Ws zu Qs fehlgeschlagen.
+no.wst.for.river = Keine zum Gew\u00e4sser passende WST gefunden.
+no.range.found = Kein passender Pegel gefunden.
+no.gauge.found.for.km = Zur gegebenen Kilometerstation existiert kein Pegel.
+cannot.create.segments = Flussabschnitte konnten nicht erzeugt werden.
+cannot.compute.discharge.curve = Die Abflusskurve konnte nicht berechnet werden..
+cannot.find.ds = Dauerzahlen konnten nicht gefunden werden.
+no.segments.found = Keine Flussabschnitte gefunden.
+no.values.given = Keine Werte angegeben.
+cannot.interpolate.wq = W/Q-Wert konnte nicht interpoliert werden.
--- a/flys-artifacts/src/main/resources/messages_de_DE.properties	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/resources/messages_de_DE.properties	Tue Jan 24 22:59:44 2012 +0000
@@ -44,7 +44,7 @@
 calculation_mode = Berechnungsart
 ld_locations = Ort(e)
 
-chart.cross_section.title = Querprofildiagramm für Gew\u00e4sser {0}
+chart.cross_section.title = Querprofildiagram f\u00fcr Gew\u00e4sser {0}
 chart.cross_section.subtitle = {0}-km: {1,number,#.###}
 chart.cross_section.xaxis.label = Abstand [m]
 chart.cross_section.yaxis.label = W [NN + m]
@@ -130,3 +130,30 @@
 Elbe = Elbe
 
 state.map.river = Gew\u00e4sser
+
+spline.interpolation.failed = Spline interpolation fehlgeschlagen.
+cannot.find.w.for.q = W zu Q = {0,number,#.##} kann nicht ermittelt werden.
+cannot.find.q = Q = {0,number,#.##} konnte nicht gefunden werden.
+no.ws.found = Keine Ws gefunden.
+no.q.found.in.column = In Spalte {0,integer} wurde kein Q gefunden.
+spline.creation.failed = Spline creation failed.
+cannot.find.w.or.q = W oder Q konnten nicht ermittelt werden.
+km.not.found = Passender Kilometer konnte nicht gefunden werden.
+cannot.create.wq.relation = W/Q-Beziehung konnte nicht ermittelt werden.
+cannot.create.index.q.relation = Spaltenindex/Q-Beziehung konnte nicht erstellt werden.
+relating.w.w.failed = Relating W with W failed.
+
+no.river.selected = Kein Gew\u00e4sser ausgew\u00e4hlt.
+no.gauge.selected = Kein Pegel ausgew\u00e4hlt.
+no.locations.selected = Keine Orte angegeben.
+no.kms.selected = Keine Kilometerstationen angegeben.
+converting.ws.to.qs.failed = Konvertierung von Ws zu Qs fehlgeschlagen.
+no.wst.for.river = Keine zum Gew\u00e4sser passende WST gefunden.
+no.range.found = Kein passender Pegel gefunden.
+no.gauge.found.for.km = Zur gegebenen Kilometerstation existiert kein Pegel.
+cannot.create.segments = Flussabschnitte konnten nicht erzeugt werden.
+cannot.compute.discharge.curve = Die Abflusskurve konnte nicht berechnet werden..
+cannot.find.ds = Dauerzahlen konnten nicht gefunden werden.
+no.segments.found = Keine Flussabschnitte gefunden.
+no.values.given = Keine Werte angegeben.
+cannot.interpolate.wq = W/Q-Wert konnte nicht interpoliert werden.
--- a/flys-artifacts/src/main/resources/messages_en.properties	Mon Jan 23 17:39:51 2012 +0000
+++ b/flys-artifacts/src/main/resources/messages_en.properties	Tue Jan 24 22:59:44 2012 +0000
@@ -127,3 +127,29 @@
 
 state.map.river = River
 
+spline.interpolation.failed = Spline interpolation failed.
+cannot.find.w.for.q = Cannot find W for Q = {0,number,#.##}.
+cannot.find.q = Cannot find Q = {0,number,#.##}.
+no.ws.found = No Ws found.
+no.q.found.in.column = No Q found in {0,integer} column.
+spline.creation.failed = Spline creation failed.
+cannot.find.w.or.q = Cannot find W or Q.
+km.not.found = Cannot find km.
+cannot.create.wq.relation = Cannot create W/Q relation.
+cannot.create.index.q.relation = Cannot create index/Q relation.
+relating.w.w.failed = Relating W with W failed.
+
+no.river.selected = No river selected.
+no.gauge.selected = No gauge selected.
+no.locations.selected = No locations selected.
+no.kms.selected = No KMs selected.
+converting.ws.to.qs.failed = Converting Ws to Qs failed.
+no.wst.for.river = No WST found for selected river.
+no.range.found = No range found.
+no.gauge.found.for.km = No gauge found for KM.
+cannot.create.segments = Cannot create segments.
+cannot.compute.discharge.curve = Cannot create discharge curve.
+cannot.find.ds = Cannot find Ds.
+no.segments.found = No segments found.
+no.values.given = No values given.
+cannot.interpolate.wq = Cannot interpolate W/Q.

http://dive4elements.wald.intevation.org