multi languages support
authorJean-Philippe Orsini <orsinije@fr.ibm.com>
Sun, 29 Oct 2017 20:25:30 +0000 (21:25 +0100)
committerJean-Philippe Orsini <orsinije@fr.ibm.com>
Sun, 29 Oct 2017 20:25:30 +0000 (21:25 +0100)
war/src/main/java/pnews/servlet/Config.java
war/src/main/java/pnews/servlet/HTML.java
war/src/main/java/pnews/servlet/Pnews.java
war/src/main/resources/feeds.json

index 7e2b642..5bce897 100644 (file)
@@ -21,6 +21,7 @@ import pnews.Feed;
 public class Config {
         private Feed[] feeds;
         private Category[] categories;
+        private final String[] languages = { "fr", "en" };
         private static final Logger LOG = Logger.getLogger(Config.class.getName());
                 
         private void loadCategories(JsonArray jcats) {
@@ -127,6 +128,10 @@ public class Config {
                 return categories[0];
         }
         
+        public String[] getLanguages() {
+                return languages;
+        }
+        
         public static void main(String[] args) throws UnsupportedEncodingException {
                 Config cfg;
                 Feed[] feeds;           
index ad0c24a..321c5a7 100644 (file)
@@ -88,8 +88,10 @@ public class HTML {
                        appendA(buf, cat.getLabel(), cat.getURL(), cl);
                        buf.append("</li>");
                }
-               
+                buf.append("<li><a href='/en'>EN</a></li>");
+                buf.append("<li><a href='/fr'>FR</a></li>");           
                buf.append("</ul>\n");
+               
                buf.append("</nav>\n");
        }
        
index 63040c8..fc08d13 100644 (file)
@@ -90,6 +90,11 @@ public class Pnews extends HttpServlet {
 
                 LOG.exiting(Pnews.class.getName(), "redirect");
         }
+        
+        private static void doTemporaryRedirect(String newURL, HttpServletResponse rp) {
+                rp.setHeader("Location", newURL);
+                rp.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);             
+        }
 
         private void writeStats(HttpServletResponse rp) throws IOException {
                 rp.setContentType("application/json;charset=utf-8");
@@ -173,7 +178,6 @@ public class Pnews extends HttpServlet {
                 }
 
                 try {
-                
                         if (path.equals("/stats")) {
                                 writeStats(resp);
                                 return ;
@@ -185,6 +189,13 @@ public class Pnews extends HttpServlet {
                                         return ;
                                 }
                         }
+                        
+                        for (String l: config.getLanguages()) {
+                                if (path.equals("/" + l) || path.equals("/" + l + "/")) {
+                                        doTemporaryRedirect(config.getDefaultCategory().getURL(), resp);
+                                        return ;
+                                }
+                        }
                 
                         resp.getWriter().write("Not found " + req.getPathInfo());
                         resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
index a0aa0f0..34631f2 100644 (file)
@@ -75,6 +75,7 @@
                 "http://www.purepeople.com/rss/news_t0.xml": { "categories": ["people"] },
                 "http://www.generation-nt.com/export/rss.xml": { "categories": ["technologie"] },
                 "http://www.europe1.fr/var/export/rss/europe1/sciences.xml": { "categories": ["technologie"] },
+                "http://www.europe1.fr/var/export/rss/europe1/technologies.xml": { "categories": ["technologie"]},
                 "http://feeds.feedburner.com/lesnumeriques/news": { "categories": ["technologie"] },
                 "http://www.zdnet.fr/feeds/rss/actualites/": { "categories": ["technologie"] },
                 "http://www.frandroid.com/feed": { "categories": ["technologie"] },