Switch between languages

(Difference between revisions)
Jump to: navigation, search
(brainstorming what to put on this page)
 
Line 1: Line 1:
 
How to link between the same content page in different languages:
 
How to link between the same content page in different languages:
 
(short summary: retrieve current url - replace "language folder" name - link to new url)
 
(short summary: retrieve current url - replace "language folder" name - link to new url)
 +
 +
== Switch between siblings ==
 +
One way to switch between languages is to check if the currently active content has a sibling, and if it does, link to that. An example of how you could implement this:
 +
 +
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 +
   
 +
    <%
 +
        CmsJspActionElement cms = new CmsJspActionElement(pageContext, request, response);
 +
        CmsObject cmso          = CmsFlexController.getCmsObject(request);
 +
        String strPagename      = cms.getRequestContext().getUri();
 +
        String homePage        = "/playground/index.html";
 +
        Map<String, String> linksByLocale = new HashMap<String, String>();
 +
        linksByLocale.put("en", homePage);
 +
        linksByLocale.put("de", homePage);
 +
        linksByLocale.put("fr", homePage);
 +
        linksByLocale.put("nl", homePage);
 +
        try {
 +
            List<CmsResource> siblings = cmso.readSiblings(strPagename, CmsResourceFilter.ALL);
 +
            for (CmsResource sibling : siblings) {
 +
                String uri = cmso.getSitePath(sibling);
 +
                linksByLocale.put(cmso.readPropertyObject(sibling, "locale", true).getValue(), uri);
 +
            }
 +
        } catch (CmsException e) {
 +
   
 +
        }
 +
    %>   
 +
        <a href="<%= cms.link(linksByLocale.get("en")) %>">en</a><br/>
 +
        <a href="<%= cms.link(linksByLocale.get("nl")) %>">nl</a><br/>
 +
        <a href="<%= cms.link(linksByLocale.get("fr")) %>">fr</a><br/>
 +
        <a href="<%= cms.link(linksByLocale.get("de")) %>">de</a><br/>
 +
 +
The above could be saved as a separate jsp element and then included in your templates.

Revision as of 13:57, 13 November 2006

How to link between the same content page in different languages: (short summary: retrieve current url - replace "language folder" name - link to new url)

Switch between siblings

One way to switch between languages is to check if the currently active content has a sibling, and if it does, link to that. An example of how you could implement this:

   <%@ page contentType="text/html;charset=UTF-8" language="java" %>
   
   <%
       CmsJspActionElement cms = new CmsJspActionElement(pageContext, request, response);
       CmsObject cmso          = CmsFlexController.getCmsObject(request);
       String strPagename      = cms.getRequestContext().getUri();
       String homePage         = "/playground/index.html";
       Map<String, String> linksByLocale = new HashMap<String, String>();
       linksByLocale.put("en", homePage);
       linksByLocale.put("de", homePage);
       linksByLocale.put("fr", homePage);
       linksByLocale.put("nl", homePage);
       try {
           List<CmsResource> siblings = cmso.readSiblings(strPagename, CmsResourceFilter.ALL);
           for (CmsResource sibling : siblings) {
               String uri = cmso.getSitePath(sibling);
               linksByLocale.put(cmso.readPropertyObject(sibling, "locale", true).getValue(), uri);
           }
       } catch (CmsException e) {
   
       }
   %>    
       <a href="<%= cms.link(linksByLocale.get("en")) %>">en</a>
<a href="<%= cms.link(linksByLocale.get("nl")) %>">nl</a>
<a href="<%= cms.link(linksByLocale.get("fr")) %>">fr</a>
<a href="<%= cms.link(linksByLocale.get("de")) %>">de</a>

The above could be saved as a separate jsp element and then included in your templates.

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox