Localize export form
Change-Id: Id1ca535bf5c246a51efabfc62b56e4a2f738ad00
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/ExWSConf.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/ExWSConf.java
index 333ed60..7fe4233 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/ExWSConf.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/ExWSConf.java
@@ -18,7 +18,7 @@
// Version of Export Plugin
public static final int VERSION_MAJOR = 0;
public static final int VERSION_MINOR = 2;
- public static final int VERSION_PATCHLEVEL = 1;
+ public static final int VERSION_PATCHLEVEL = 2;
private static Properties prop;
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Service.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
index 972fb12..d8f3a0e 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Service.java
@@ -10,12 +10,12 @@
import java.net.URLEncoder;
import java.net.ConnectException;
import java.util.HashMap;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
-import java.util.LinkedList;
import java.util.Properties;
import java.util.Base64;
+import java.util.ResourceBundle;
+import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -48,6 +48,7 @@
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
+import org.glassfish.jersey.server.ContainerRequest;
import static de.ids_mannheim.korap.plkexport.Util.*;
@@ -67,6 +68,7 @@
* - Improve Readme.
* - 100 matches as default for export form.
* - Test ExWsConf.
+ * - Change "count" to "number of results" in RTF.
*
* TODO:
* - Abort processing when eventsource is closed.
@@ -89,6 +91,9 @@
* matches per export, while external users
* should be limited to 10.000.
* - Add 1000-separator to numbers.
+ * - Get the list of availables locales based
+ * on the given ResourceBundle.
+ * - Check for q/ql definition in JS.
*
* IDEAS:
* - Create a template mechanism for RTF export.
@@ -123,7 +128,10 @@
private final static Base64.Decoder b64Dec = Base64.getDecoder();
@Context
- private HttpServletRequest req;
+ private HttpServletRequest servletReq;
+
+ @Context
+ private ContainerRequest req;
/*
@@ -208,12 +216,12 @@
// Get client IP, in case service is behind a proxy
// Get auth (temporarily) via Session riding
String xff = "", auth = "";
- if (req != null) {
- xff = getClientIP(req.getHeader("X-Forwarded-For"));
+ if (servletReq != null) {
+ xff = getClientIP(servletReq.getHeader("X-Forwarded-For"));
if (xff == "")
- xff = req.getRemoteAddr();
+ xff = servletReq.getRemoteAddr();
- auth = authFromCookie(req);
+ auth = authFromCookie(servletReq);
};
String resp;
@@ -632,7 +640,6 @@
};
};
};
-
return "";
};
@@ -678,6 +685,16 @@
templateData.put("msg", msg);
};
+ try {
+ templateData.put("dict", this.getDictionary());
+
+ } catch (Exception e) {
+ return Response
+ .ok(new String("Dictionary not found"))
+ .status(Status.INTERNAL_SERVER_ERROR)
+ .build();
+ };
+
// Generate template
try {
Template template = cfg.getTemplate("export.ftl");
@@ -721,4 +738,33 @@
return "";
};
+
+
+ /*
+ * Load dictionary for a chosen locale as a resource bundle
+ */
+ private ResourceBundle getDictionary () throws IOException {
+
+ // Load prefered dictionary
+ Locale prefered = new Locale("en");
+
+ if (req != null) {
+
+ CHOOSE:
+ for (Locale l : req.getAcceptableLanguages()) {
+ switch (l.getLanguage()) {
+ case "de":
+ prefered = l;
+ break CHOOSE;
+ case "en":
+ prefered = l;
+ break CHOOSE;
+ };
+ };
+ };
+
+ return ResourceBundle.getBundle(
+ "locales/export", prefered
+ );
+ };
};