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
