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 />
* <urlconverter class="org.mmbase.mmsite.SiteUrlConverter"><br />
* <description xml:lang="en">UrlConverter for
MMSite</description><br />
@@ -28,6 +30,7 @@
* <param name="excludedPaths">mmbase,mmexamples</param><br />
* <param name="useExtension">true</param><br />
* <param name="extension">.html</param><br />
+ * <param name="multilanguage">true</param><br />
* </urlconverter>
*
* @author André 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