[tor-commits] [exonerator/master] Display German text correctly.

karsten at torproject.org karsten at torproject.org
Wed Sep 28 07:36:41 UTC 2016


commit 0e2a331f4e8a69f5090f3fcd9c9c94d45c4c8354
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Wed Sep 28 09:26:12 2016 +0200

    Display German text correctly.
    
    Turns out that resource bundles must be ISO 8859-1 encoded, so we'll
    have to convert the German file using:
    
      native2ascii -encoding UTF-8 old new
    
    Also make some minor changes to make UTF-8 encoding of the resulting
    web page more explicit, and correct the included language code.
    
    Fixes #19954.
---
 res/ExoneraTor_de.properties                       | 40 +++++++++++-----------
 .../torproject/exonerator/ExoneraTorServlet.java   | 19 +++++-----
 2 files changed, 31 insertions(+), 28 deletions(-)

diff --git a/res/ExoneraTor_de.properties b/res/ExoneraTor_de.properties
index 19c3167..9a594d8 100644
--- a/res/ExoneraTor_de.properties
+++ b/res/ExoneraTor_de.properties
@@ -4,35 +4,35 @@ form.timestamp.label=Datum
 form.search.label=Suchen
 summary.heading=Zusammenfassung
 summary.serverproblem.dbnoconnect.title=Server-Problem
-summary.serverproblem.dbnoconnect.body.text=Es kann keine Verbindung zur Datenbank hergestellt werden. Bitte versuchen Sie es später noch einmal. Sollte dieses Problem weiterhin bestehen %s.
+summary.serverproblem.dbnoconnect.body.text=Es kann keine Verbindung zur Datenbank hergestellt werden. Bitte versuchen Sie es sp\u00e4ter noch einmal. Sollte dieses Problem weiterhin bestehen %s.
 summary.serverproblem.dbnoconnect.body.link=lassen Sie es uns bitte wissen
 summary.serverproblem.dbempty.title=Server-Problem
-summary.serverproblem.dbempty.body.text=Die Datenbank scheint leer zu sein. Bitte versuchen Sie es später noch einmal. Sollte dieses Problem weiterhin bestehen %s.
+summary.serverproblem.dbempty.body.text=Die Datenbank scheint leer zu sein. Bitte versuchen Sie es sp\u00e4ter noch einmal. Sollte dieses Problem weiterhin bestehen %s.
 summary.serverproblem.dbempty.body.link=lassen Sie es uns bitte wissen
 summary.invalidparams.notimestamp.title=Kein Datum angegeben
-summary.invalidparams.notimestamp.body=Sie müssen ein Datum angeben.
+summary.invalidparams.notimestamp.body=Sie m\u00fcssen ein Datum angeben.
 summary.invalidparams.noip.title=Keine IP-Adresse angegeben.
-summary.invalidparams.noip.body=Sie müssen eine IP-Adresse angeben.
-summary.invalidparams.timestamprange.title=Datum außerhalb des zulässigen Bereichs
-summary.invalidparams.timestamprange.body=Die Datenbank enthält keine Daten vom %s. Bitte wählen Sie ein Datum zwischen %s und %s aus.
-summary.invalidparams.invalidip.title=Ungültige IP-Adresse
-summary.invalidparams.invalidip.body=%s ist keine gültige IP-Adresse. Zulässige IP-Adress-Formate sind %s oder %s.
-summary.invalidparams.invalidtimestamp.title=Ungültiges Datum
-summary.invalidparams.invalidtimestamp.body=%s ist kein gültiges Datum. Das zulässige Datumsformat ist %s.
+summary.invalidparams.noip.body=Sie m\u00fcssen eine IP-Adresse angeben.
+summary.invalidparams.timestamprange.title=Datum au\u00dferhalb des zul\u00e4ssigen Bereichs
+summary.invalidparams.timestamprange.body=Die Datenbank enth\u00e4lt keine Daten vom %s. Bitte w\u00e4hlen Sie ein Datum zwischen %s und %s aus.
+summary.invalidparams.invalidip.title=Ung\u00fcltige IP-Adresse
+summary.invalidparams.invalidip.body=%s ist keine g\u00fcltige IP-Adresse. Zul\u00e4ssige IP-Adress-Formate sind %s oder %s.
+summary.invalidparams.invalidtimestamp.title=Ung\u00fcltiges Datum
+summary.invalidparams.invalidtimestamp.body=%s ist kein g\u00fcltiges Datum. Das zul\u00e4ssige Datumsformat ist %s.
 summary.serverproblem.nodata.title=Server-Problem
-summary.serverproblem.nodata.body.text=Die Datenbank enthält keine Daten für das angegebene Datum. Bitte versuchen Sie es später noch einmal. Sollte dieses Problem weiterhin bestehen %s.
+summary.serverproblem.nodata.body.text=Die Datenbank enth\u00e4lt keine Daten f\u00fcr das angegebene Datum. Bitte versuchen Sie es sp\u00e4ter noch einmal. Sollte dieses Problem weiterhin bestehen %s.
 summary.serverproblem.nodata.body.link=lassen Sie es uns bitte wissen
-summary.negativesamenetwork.title=Keine Übereinstimmungen gefunden
+summary.negativesamenetwork.title=Keine \u00dcbereinstimmungen gefunden
 summary.negativesamenetwork.body=Es wurde kein Tor-Server mit der IP-Adresse %s am %s bzw. am Tag vorher oder nachher gefunden. Es wurden jedoch benachbarte IP-Adressen im selben /%d-Netzwerk an diesen Tagen gefunden:
-summary.positive.title=Übereinstimmungen gefunden
+summary.positive.title=\u00dcbereinstimmungen gefunden
 summary.positive.body=Es wurde ein oder mehrere Tor-Server mit IP-Adresse %s am %s bzw. am Tag vorher oder nachher gefunden, die den Tor-Clients bekannt waren.
-summary.negative.title=Keine Übereinstimmungen gefunden
+summary.negative.title=Keine \u00dcbereinstimmungen gefunden
 summary.negative.body=Es wurde kein Tor-Server mit der IP-Adresse %s am %s bzw. am Tag vorher oder nachher gefunden.
 technicaldetails.heading=Technische Details
 technicaldetails.pre=Es wird nach Tor-Servern mit IP-Adresse %s am %s bzw. am Tag vorher oder nachher gesucht. Tor-Clients konnten diese Tor-Server verwenden, um Verbindungen aufzubauen.
 technicaldetails.colheader.timestamp=Datum/Uhrzeit (UTC)
 technicaldetails.colheader.ip=IP-Adresse(n)
-technicaldetails.colheader.fingerprint=Identitätsschlüssel
+technicaldetails.colheader.fingerprint=Identit\u00e4tsschl\u00fcssel
 technicaldetails.colheader.nickname=Spitzname
 technicaldetails.colheader.exit=Exit-Server
 technicaldetails.nickname.unknown=Unbekannt
@@ -40,13 +40,13 @@ technicaldetails.exit.unknown=Unbekannt
 technicaldetails.exit.yes=Ja
 technicaldetails.exit.no=Nein
 permanentlink.heading=Dauerhafter Link
-footer.abouttor.heading=Über Tor
-footer.abouttor.body.text=Tor ist ein internationales Softwareprojekt um Internetverbindungen zu anonymisieren indem %s. Wenn Sie eine Internetverbindung sehen, die von einem Tor-Server kommt, stammt diese in der Regel von jemandem, der Tor benutzt, und nicht vom Betreiber des Tor-Servers selbst. Weder The Tor Project, Inc. noch die Tor-Server-Betreiber besitzen Aufzeichnungen über die Internetverbindungen im Tor-Netzwerk und können daher keine Auskunft über den Ursprung der Internetverbindung geben. Mehr Informationen über Tor erhalten Sie unter %s. The Tor Project, Inc. steht Ihnen jederzeit für %s zur Verfügung.
-footer.abouttor.body.link1=Datenpakete verschlüsselt und über eine Reihe von Stationen geleitet werden bevor diese ihr Ziel erreichen
+footer.abouttor.heading=\u00dcber Tor
+footer.abouttor.body.text=Tor ist ein internationales Softwareprojekt um Internetverbindungen zu anonymisieren indem %s. Wenn Sie eine Internetverbindung sehen, die von einem Tor-Server kommt, stammt diese in der Regel von jemandem, der Tor benutzt, und nicht vom Betreiber des Tor-Servers selbst. Weder The Tor Project, Inc. noch die Tor-Server-Betreiber besitzen Aufzeichnungen \u00fcber die Internetverbindungen im Tor-Netzwerk und k\u00f6nnen daher keine Auskunft \u00fcber den Ursprung der Internetverbindung geben. Mehr Informationen \u00fcber Tor erhalten Sie unter %s. The Tor Project, Inc. steht Ihnen jederzeit f\u00fcr %s zur Verf\u00fcgung.
+footer.abouttor.body.link1=Datenpakete verschl\u00fcsselt und \u00fcber eine Reihe von Stationen geleitet werden bevor diese ihr Ziel erreichen
 footer.abouttor.body.link2=hier
 footer.abouttor.body.link3=Fragen
-footer.aboutexonerator.heading=Über ExoneraTor
-footer.aboutexonerator.body=Der ExoneraTor-Dienst basiert auf einer Datenbank von IP-Adressen, die Teil des Tor-Netzwerks sind oder waren. Dieser Dienst beantwortet die Frage, ob es an einem bestimmten Tag einen Tor-Server mit einer bestimmten IP-Adresse gegeben hat. ExoneraTor kann in einigen Fällen mehr als nur eine IP-Adresse pro Tor-Server speichern, falls ein Tor-Server eine andere IP-Adresse für ausgehende Verbindungen verwendet hat als die IP-Adresse um sich im Tor-Netzwerk zu registrieren. ExoneraTor speichert außerdem ob ein Tor-Server Verbindungen ins offene Internet zugelassen hat oder nicht.
+footer.aboutexonerator.heading=\u00dcber ExoneraTor
+footer.aboutexonerator.body=Der ExoneraTor-Dienst basiert auf einer Datenbank von IP-Adressen, die Teil des Tor-Netzwerks sind oder waren. Dieser Dienst beantwortet die Frage, ob es an einem bestimmten Tag einen Tor-Server mit einer bestimmten IP-Adresse gegeben hat. ExoneraTor kann in einigen F\u00e4llen mehr als nur eine IP-Adresse pro Tor-Server speichern, falls ein Tor-Server eine andere IP-Adresse f\u00fcr ausgehende Verbindungen verwendet hat als die IP-Adresse um sich im Tor-Netzwerk zu registrieren. ExoneraTor speichert au\u00dferdem ob ein Tor-Server Verbindungen ins offene Internet zugelassen hat oder nicht.
 footer.trademark.text="Tor" und das "Onion Logo" sind %s von The Tor Project, Inc.
 footer.trademark.link=eingetragene Warenzeichen
 
diff --git a/src/main/java/org/torproject/exonerator/ExoneraTorServlet.java b/src/main/java/org/torproject/exonerator/ExoneraTorServlet.java
index df31a0c..0f6f3b5 100644
--- a/src/main/java/org/torproject/exonerator/ExoneraTorServlet.java
+++ b/src/main/java/org/torproject/exonerator/ExoneraTorServlet.java
@@ -67,15 +67,16 @@ public class ExoneraTorServlet extends HttpServlet {
 
     /* Set content type, or the page doesn't render in Chrome. */
     response.setContentType("text/html");
-
-    /* Start writing response. */
-    PrintWriter out = response.getWriter();
-    this.writeHeader(out);
+    response.setCharacterEncoding("utf-8");
 
     /* Find the right resource bundle for the user's locale. */
     Locale locale = request.getLocale();
     ResourceBundle rb = ResourceBundle.getBundle("ExoneraTor", locale);
 
+    /* Start writing response. */
+    PrintWriter out = response.getWriter();
+    this.writeHeader(out, rb);
+
     /* Open a database connection that we'll use to handle the whole
      * request. */
     long requestedConnection = System.currentTimeMillis();
@@ -554,9 +555,10 @@ public class ExoneraTorServlet extends HttpServlet {
 
   /* Helper methods for writing the response. */
 
-  private void writeHeader(PrintWriter out) throws IOException {
-    out.println("<!DOCTYPE html>\n"
-        + "<html lang=\"en\">\n"
+  private void writeHeader(PrintWriter out, ResourceBundle rb)
+      throws IOException {
+    out.printf("<!DOCTYPE html>\n"
+        + "<html lang=\"%s\">\n"
         + "  <head>\n"
         + "    <meta charset=\"utf-8\">\n"
         + "    <meta http-equiv=\"X-UA-Compatible\" "
@@ -585,7 +587,8 @@ public class ExoneraTorServlet extends HttpServlet {
         + "            </h1>\n"
         + "          </div><!-- page-header -->\n"
         + "        </div><!-- col -->\n"
-        + "      </div><!-- row -->\n");
+        + "      </div><!-- row -->\n",
+        rb.getLocale().getLanguage());
   }
 
   private void writeForm(PrintWriter out, ResourceBundle rb,



More information about the tor-commits mailing list