Author: andre
Date: 2009-06-01 14:11:34 +0200 (Mon, 01 Jun 2009)
New Revision: 35536

Modified:
   speeltuin/andre/mmsite/src/org/mmbase/mmsite/SiteUrlConverter.java
Log:
made a start with multilanguage extension on url, like .en_US

Modified: speeltuin/andre/mmsite/src/org/mmbase/mmsite/SiteUrlConverter.java
===================================================================
--- speeltuin/andre/mmsite/src/org/mmbase/mmsite/SiteUrlConverter.java  
2009-06-01 02:57:41 UTC (rev 35535)
+++ speeltuin/andre/mmsite/src/org/mmbase/mmsite/SiteUrlConverter.java  
2009-06-01 12:11:34 UTC (rev 35536)
@@ -20,7 +20,9 @@
  * The UrlConverter that can filter and create urls for pages in the site 
application.
  * It can be used as a '/' (root) UrlConverter. Use 'excludedPaths' to list 
directories to
  * exclude that might get mixed up with this one and are not mentioned in 
web.xml.
- * It presumes (pages) nodes with the fields 'path' and 'template'.<br />
+ * It presumes (pages) nodes with the fields 'path' and 'template'.
+ * When multilanguage is turned on pages get extensions like '.nl_NL' and 
'en_US', f.e. '/page.nl_NL',
+ * that can be used to display content in a different language.<br />
  * <br />
  * &lt;urlconverter class="org.mmbase.mmsite.SiteUrlConverter"&gt;<br />
  *   &lt;description xml:lang="en"&gt;UrlConverter for 
MMSite&lt;/description&gt;<br />
@@ -28,6 +30,7 @@
  *   &lt;param name="excludedPaths"&gt;mmbase,mmexamples&lt;/param&gt;<br />
  *   &lt;param name="useExtension"&gt;true&lt;/param&gt;<br />
  *   &lt;param name="extension"&gt;.html&lt;/param&gt;<br />
+ *   &lt;param name="multilanguage"&gt;true&lt;/param&gt;<br />
  * &lt;/urlconverter&gt;
  *
  * @author Andr&eacute; van Toly
@@ -36,10 +39,13 @@
  */
 public class SiteUrlConverter extends DirectoryUrlConverter {
     private static final Logger log = 
Logging.getLoggerInstance(SiteUrlConverter.class);
-
+    
+    public String language = "test"; //request.getLocale().toString(); // 
org.mmbase.mmsite.language
+    
     protected static ArrayList<String> excludedPaths = new ArrayList();
     protected static String extension = null;
     protected static boolean useExtension = false;
+    protected static boolean multilanguage = true;
 
     public SiteUrlConverter(BasicFramework fw) {
         super(fw);
@@ -59,6 +65,10 @@
     public void setExtension(String e) {
         extension = e;
     }
+    
+    public void setMultilanguage(boolean m) {
+        multilanguage = m;
+    }
 
     @Override
     public int getDefaultWeight() {
@@ -90,7 +100,13 @@
 
         }
 
-        if (useExtension && b.length() > b_len) b.append(extension);
+        if (b.length() > b_len) {   // check if url is altered
+            if (useExtension) b.append(extension);
+            if (multilanguage && !"".equals(language)) {
+                b.append(".").append(language);
+            }
+        }
+        
         if (log.isDebugEnabled()) log.debug("b: " + b.toString());
     }
 
@@ -117,13 +133,18 @@
             //if (log.isDebugEnabled()) log.debug("piece: " + piece);
         }
         String path = sb.toString();
-        //if (log.isDebugEnabled()) log.debug("path: " + path);
+        String lang = "";
+        if (log.isDebugEnabled()) log.debug("path: " + path);
 
+        if (multilanguage) {
+            lang = path.substring(path.lastIndexOf("."), path.length());
+            path = path.substring(0, path.lastIndexOf("."));
+            log.debug("lang: " + lang + ", path now: " + path);
+        }
         if (useExtension && path.indexOf(extension) > -1) {
             path = path.substring(0, path.lastIndexOf(extension));
             //pa.set(pa.size() - 1, id);
         }
-        String[]
 
         Node node = UrlUtils.getPagebyPath(cloud, path);
         if (node != null) {
@@ -131,7 +152,9 @@
             if (!template.startsWith("/")) result.append("/");
             char connector = template.indexOf("?") == -1 ? '?' : '&';
             result.append(template).append(connector).append("n=" + 
node.getNumber());
-
+            
+            if (!"".equals(lang)) result.append("&_lang=" + lang);
+            
         } else {
             return Url.NOT;
         }

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to