Localize JS fragments by using datasets

Change-Id: I8a05be11d04f52686d63d56f2c93ed20b82745d5
diff --git a/src/main/java/de/ids_mannheim/korap/plkexport/Service.java b/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
index 26b246c..0f5d4f1 100644
--- a/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
+++ b/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
@@ -61,8 +61,7 @@
  * - Rename to "Kalamar-Plugin-Export".
  * - Improve Readme.
  * - Add opaque source, in case source is an internal IP.
- * - Include limitation to form.
- * - Localize javascript induced "with" in the title.
+ * - Add screenshot.
  *
  * TODO:
  * - Localize RTF export.
diff --git a/src/main/resources/assets/export.js b/src/main/resources/assets/export.js
index 65f10fd..af55b93 100644
--- a/src/main/resources/assets/export.js
+++ b/src/main/resources/assets/export.js
@@ -12,16 +12,18 @@
       let v = d.value;
       if (v !== undefined && v["q"]) {
         let e = v["q"];
+        const eq = document.getElementById("export-query");
+        
         document.getElementById("q").value=v["q"];
         if (v["ql"]) {
-          e += " with " + v["ql"];
+          e += " " + (eq.dataset.withql || "with")  + " " + v["ql"];
           document.getElementById("ql").value=v["ql"];
         };
         if (v["cq"]) {
-          e += " in " + v["cq"];
+          e += " " + (eq.dataset.incq || "in") + " " + v["cq"];
           document.getElementById("cq").value=v["cq"];
         };
-        document.getElementById("export-query").innerText = e;
+        eq.innerText = e;
       }
 
       else {
diff --git a/src/main/resources/assets/templates/export.ftl b/src/main/resources/assets/templates/export.ftl
index 4f6c481..a68cca4 100644
--- a/src/main/resources/assets/templates/export.ftl
+++ b/src/main/resources/assets/templates/export.ftl
@@ -62,7 +62,7 @@
   </head>
   <body>
     <!-- <div class="banner" data-note="${dict.banner}"></div> -->
-    <h1>${dict.export}: <code id="export-query"></code></h1>
+    <h1>${dict.export}: <code id="export-query" data-withql="${dict.with_ql}" data-incq="${dict.in_cq}"></code></h1>
     <section>
       <form id="export" class="form-table" action="export" method="POST">
         <fieldset>
diff --git a/src/main/resources/locales/export.properties b/src/main/resources/locales/export.properties
index bb54079..6d14cbc 100644
--- a/src/main/resources/locales/export.properties
+++ b/src/main/resources/locales/export.properties
@@ -3,4 +3,6 @@
 hitc = Limit to the first matches:
 max_hitc = Maximum number of exportable matches:
 export_button = Exportieren
-banner = Experimental
\ No newline at end of file
+banner = Experimental
+with_ql = with
+in_cq = in
\ No newline at end of file
diff --git a/src/main/resources/locales/export_de.properties b/src/main/resources/locales/export_de.properties
index e454d15..024bec5 100644
--- a/src/main/resources/locales/export_de.properties
+++ b/src/main/resources/locales/export_de.properties
@@ -6,4 +6,6 @@
 hitc = Einschr\u00e4nken auf die ersten Treffer:
 max_hitc = Maximal zu exportierende Treffer:
 export_button = Exportieren
-banner = Experimentell
\ No newline at end of file
+banner = Experimentell
+with_ql = mit
+in_cq = in
\ No newline at end of file
diff --git a/src/test/java/de/ids_mannheim/korap/plkexport/AssetTest.java b/src/test/java/de/ids_mannheim/korap/plkexport/AssetTest.java
index b6f1336..2c5b22c 100644
--- a/src/test/java/de/ids_mannheim/korap/plkexport/AssetTest.java
+++ b/src/test/java/de/ids_mannheim/korap/plkexport/AssetTest.java
@@ -68,6 +68,31 @@
     };
 
     @Test
+    public void testFormJsLocalization () {
+
+        // Check german
+        Response responsehtml = target("/export").request()
+            .header("Accept-Language","fr-CH, fr;q=0.9, de;q=0.8, en;q=0.7, *;q=0.5").get();
+        assertEquals("HTTP Code",
+                     Status.OK.getStatusCode(), responsehtml.getStatus());
+        String str = responsehtml.readEntity(String.class);
+        
+        assertTrue("HTTP Body (de1)", str.contains("data-withql=\"mit\""));
+        assertTrue("HTTP Body (de2)", str.contains("data-incq=\"in\""));
+         
+        // Check English
+        responsehtml = target("/export").request()
+            .header("Accept-Language","fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5").get();
+        assertEquals("HTTP Code",
+                     Status.OK.getStatusCode(), responsehtml.getStatus());
+        str = responsehtml.readEntity(String.class);
+
+        assertTrue("HTTP Body (en1)", str.contains("data-withql=\"with\""));
+        assertTrue("HTTP Body (en2)", str.contains("data-incq=\"in\""));
+    };
+
+    
+    @Test
     public void testFormHtmlMaxHitc () {
 
         // Check german