Switch between languages
From OpenCms Wiki
(Difference between revisions)
(One intermediate revision by one user not shown) | |||
Line 4: | Line 4: | ||
== Switch between siblings == | == 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: | 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: | ||
− | + | <code lang="Java"> | |
+ | <%@ page import="java.util.HashMap"%> | ||
+ | <%@ page import="java.util.Map"%> | ||
+ | <%@ page import="java.util.List"%> | ||
+ | <%@ page import="org.opencms.jsp.CmsJspActionElement"%> | ||
+ | <%@ page import="org.opencms.file.CmsObject"%> | ||
+ | <%@ page import="org.opencms.main.CmsException"%> | ||
+ | <%@ page import="org.opencms.flex.CmsFlexController"%> | ||
+ | <%@ page import="org.opencms.file.CmsResourceFilter"%> | ||
+ | <%@ page import="org.opencms.file.CmsResource"%> | ||
+ | |||
<%@ page contentType="text/html;charset=UTF-8" language="java" %> | <%@ page contentType="text/html;charset=UTF-8" language="java" %> | ||
Line 31: | Line 41: | ||
<a href="<%= cms.link(linksByLocale.get("fr")) %>">fr</a><br/> | <a href="<%= cms.link(linksByLocale.get("fr")) %>">fr</a><br/> | ||
<a href="<%= cms.link(linksByLocale.get("de")) %>">de</a><br/> | <a href="<%= cms.link(linksByLocale.get("de")) %>">de</a><br/> | ||
− | + | </code> | |
The above could be saved as a separate jsp element and then included in your templates. | The above could be saved as a separate jsp element and then included in your templates. |
Latest revision as of 09:56, 24 June 2008
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 import="java.util.HashMap"%> <%@ page import="java.util.Map"%> <%@ page import="java.util.List"%> <%@ page import="org.opencms.jsp.CmsJspActionElement"%> <%@ page import="org.opencms.file.CmsObject"%> <%@ page import="org.opencms.main.CmsException"%> <%@ page import="org.opencms.flex.CmsFlexController"%> <%@ page import="org.opencms.file.CmsResourceFilter"%> <%@ page import="org.opencms.file.CmsResource"%> <%@ 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.