SlideShare a Scribd company logo
Daniel Seidel, Alkacon Software
Showcase Track
Multilingual Websites
with OpenCms
27.09.2016
● Build multilingual websites in OpenCms
● Work on an example
● The „Tutorial“ of the OpenCms demo
● Discuss the interesting bits:
● The concept of multilingual containerpages
● The properties that are important for localization
● Message bundles
● Different approaches for the website structure
● Show new features of OpenCms 10.5
What will we do?
● User-Interface localization
● Editor fields for XML Contents
● Workplace menus
● Diskus pre-containerpage approaches
● Talk about charset, encoding-problems and
alike
What will we NOT do?
● Live Demo
The website we start with
Demo
DEMO Demo
Demo
デモ
The OpenCms Tutorial
XML contents building a web page
Content 1 Content 2
Content 3
Content
4
Content
5
Content
6
content-00003.xml
Type: specification of
xmlcontent
multilingual
One page can show the same contents in different languages
index.html
Type: containerpage
unilingual
Since Opencms 9.5
● Just add a translation via the content editor
● Depending on the context the correct version is
chosen
How to localize XML content?
Available locale variants
not yet existing ones marked by "[-]"
Copy locale
Next question:
Why can we choose between only
four locales?
Locales: Global configuration
<opencms>
<system>
<internationalization>
<!-- ... -->
<localesconfigured>
<locale>en</locale>
<locale>de</locale>
<locale>fr</locale>
<locale>it</locale>
</localesconfigured>
<localesdefault>
<locale>en</locale>
<locale>de</locale>
<locale>fr</locale>
<locale>it</locale>
</localesdefault>
<!-- ... -->
opencms-system.xml
All locales, the installation supports
The order locales are chosen
Typically the entries in both
local lists are identical
● locale=en,de
● Locales in which pages can be shown
● Order is significant
● locale-available=en,de,fr,it
● Locales editable via the content editor
● Locales, not globally configured are discarded
Locale configuration via properties
Next question:
Is localization in content enough?
● Templates and Formatters may contain text that
is not part of the content
● Example: Login-Form
● Localization via message bundles
● Default Java mechanism + OpenCms extension
Localization in JSPs
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:setLocale value="${cms.locale}" />
<cms:bundle basename="org.opencms.apollo.template.schemas.login">
<!-- ... -->
<fmt:message key="apollo.login.title.loggedoff" />
<!-- ... -->
</cms:bundle>
● Problem with default bundles
● Restart of OpenCms necessary after update
● Solution
● Special resource bundle types in OpenCms
● Manipulation of the Java bundle mechanism to
work with “special bundles” as well
● No restart required
● Bundles are updated when published
Extension to Java bundles
● XML resource bundle
● XML content
● One file for all languages
● Name scheme:
bundle.base.name
● Property resource bundle
● One file per language
● Key-Value pairs as in normal
Java “.properties”-Files
● Name scheme:
bundle.base.name_{locale}
OpenCms bundle types
+ Content editor usable
+ “Copy locale” available
+ Everything in one place
- Only one person can work on a
translation at a time
- Format makes source code
editing annoying
+ Source code easily editable
+ Many Translations could be
done at the same time by
different people
- Several resources for one
bundle
Since 10.5: Graphical editor
● OpenCms 10.5 ships with a new bundle editor
● For XML and property resource bundles
The Bundle Editor
Filter
Sort
Switch
language Select
key set
Edited file
Add/delete entry
üEasy navigation and search
üOverview on all keys
üPotentially editing multiple files in one editor
üNice GUI
üSupport for bundle descriptors
Add bundle descriptor
● New resource type in OpenCms 10.5
● Unilingual
● 3 Entries: key, default value, description
● Fixes the key set for a bundle
● Name scheme: {bundle base name}_desc
● Szenario:
● JSP Developer creates descriptor
● Translation is done by differently skilled people
● Descriptor is editable only by JSP developers (via
permissions on the descriptor file)
The bundle descriptor
● Descriptor can be directly edited via bundle
editor (open it with the editor)
● Descriptor can be edited when the bundle is
edited
● If permissions suffice
Editing bundles with descriptor
View change
● Description and default value can be used
arbitrarily
● Even other editor columns can be renamed
● Adjust the column names in the editor:
● Set property bundle.descriptor.messages at
the descriptor to another bundle that contains keys
● GUI_COLUMN_HEADER_DEFAULT_0
● GUI_COLUMN_HEADER_DESCRIPTION_0
● GUI_COLUMN_HEADER_KEY_0
● GUI_COLUMN_HEADER_TRANSLATION_0
Flexibility of descriptors
● We have seen
● Concept of container pages
● Configuration of locales
● Translation of contents
● Localization in JSPs
● OpenCms specific message bundles
● The new bundle editor
● Bundle descriptors
● We are missing
● Approaches for a multilingual website's structure
Short summary
The "Single-Tree"
approach
Multilingual site – One tree
● Situation: We can render the same container
page in different locales and get the same
content
● Idea: Have just the one page for the different
languages
● Problems
● Same URL?
● How to determine the wanted language (links?)
● Localized navigation?
● More general: Localized properties?
One page – all languages
OpenCms 10.5
tackles all these
problems!
OpenCms Servlet
Resolution of URLs
CmsSingleTree
LocaleHandler
/sites/default/program/
de
/sites/default/program/
en
days.org/de/program/
days.org/en/program/
Page rendered in German
Page rendered in English
<Link>
<!-- ... Text ... -->
<URI>
<link internal="true" type="WEAK">
<target>
<![CDATA[/sites/singletree/step-1-modify-a-
page/]]>
</target>
<uuid>dff93a85-7e43-11e6-9fb2-61374ff35fd2</uuid>
</link>
</URI>
</Link>
Generation of Links
CmsLocalePrefixLinkSubstitutionHandler
ü Adds the locale prefix according to the
context
ü Not necessary to store links differently
x Can't link to other languages (from content)
● Extension of the <cms:link>-tag
● New attribute locale
JSP API – Links from JSPs
<c:set var="availableLocales">
<cms:property name="locale-available" file="search" /></c:set>
<c:set var="locales" value="${fn:split(availableLocales,',')}" />
<c:set var="currentLocale">${cms.locale}</c:set>
<c:forEach var="locale" items="${locales}">
<li><c:choose>
<c:when test="${currentLocale eq locale}">${locale}</c:when>
<c:otherwise>
<a href="<cms:link locale='${locale}'>
${cms.requestContext.uri}</cms:link>">
${locale}</a>
</c:otherwise>
</c:choose></li>
</c:forEach>
Implementation: A language switcher
● Adjusted locale handler
● Adjusted link generation
Single-Tree Configuration (I)
<!-- ... -->
<localehandler class=
"org.opencms.i18n.CmsSingleTreeLocaleHandler" />
<!-- ... -->
opencms-system.xml
<!-- ... -->
<linksubstitutionhandler>
org.opencms.staticexport.
CmsLocalePrefixLinkSubstitutionHandler
</linksubstitutionhandler>
<!-- ... -->
opencms-importexport.xml
● Add parameter "localizationMode"
● Set property "available-locales" at the site root
● Determine available locales for the language
switcher
Single-Tree Configuration (II)
<!-- ... -->
<site <!-- ... --> >
<parameters>
<param name="localizationMode">singleTree</param>
</parameters>
</site>
<!-- ... -->
opencms-system.xml
● Optionally add parameter "locale.main"
● Setting this parameter improves locale
switching/copying.
Single-Tree Configuration (III)
<!-- ... -->
<site <!-- ... --> >
<parameters>
<param name="localizationMode">singleTree</param>
<param name="locale.main">en</param>
</parameters>
</site>
<!-- ... -->
opencms-system.xml
● Properties extended with locale postfix
● E.g.: Title, Title_en, Title_en_GB
● Special JSP API for locale-specific access
● Access from "most specific" to "least specific"
● E.g.: Title in locale "en_GB" requested
● If "Title_en_GB" is found, return it. Otherwise
● If "Title_en" is found, return it. Otherwise
● If "Title" is found, return it. Otherwise
● Return Null-Property
● If a property is searched, the result with the most specific
locale, not the most direct result is returned.
● E.g.: "Title_en" from the folder is returned instead of "Title" from
the contained file, if the English title for the file is searched.
Multilingual properties - Idea
● Navigation
● Page title
● Other methods
●
●
●
Multilingual properties - Access
<cms:navigation locale="${cms.locale}" <!-- ... --> />
${cms.titleLocale[cms.locale]}
${cms:vfs(pageContext).propertyLocale
["/index.html"]["de"]["Title"]
CmsJspVfsAccessBean
<cms:resourceload <!-- ... -->>
<cms:resourceaccess var="res">
${res.propertyLocale['de']['Title']
</cms:resourceload>
CmsJspResourceAccessBean
Evaluation: Single-Tree approach
Easy to set up
Easy to maintain
Pros
Publish always for every language
Bad SEO behavior (same path for each language)
Cons
Use it for "Applications"
Essence
The "Multi-Tree"
approach
Multilingual site – multiple trees
● Typically, the top folder structure of a site in
OpenCms is organized according to the
language, this means:
● /de/ contains all German pages
● /en/ contains all English pages
● …
● The top folders should have set the property
“locale” to the respective locale
Idea: Language specific subtrees
+ Very flexible (subtrees can be totally different)
+ No SEO problems
+ Easy to understand (no implicit link adjustments)
Expected Pros and Cons
- More pages to maintain
- Hard to keep versions synchronized
- No real "link" between pages
OpenCms 10.5 tackles the problem
with missing relations between
language versions
● Szenario
● Create the site in your "main locale"
● Copy pages to other locales
● Translate page properties and content
● Keep track of pages that are local variants /
translations of each other
● New features
● "Copy page" function in Sitemap editor
● "Compare locales" view in Sitemap editor
● Some JSP API extensions (switch between
locales)
Szenario + new features
● Live Demo
Multi-Tree Support
Demo
DEMO Demo
Demo
デモ
Multi-Tree Support
● Add parameters "locale.main" and
"locale.secondary" to the site configuration
● You can also use the workplace tool "Site
configuration"
Multi-Tree Configuration
<!-- ... -->
<site <!-- ... --> >
<parameters>
<param name="locale.main">en</param>
<param name="locale.secondary">de,fr</param>
</parameters>
</site>
<!-- ... -->
opencms-system.xml
● Only for containerpages
● Different copy modes
● "Copy": Copy all suitable elements
● Option "Copy this element" on elements in
containerpages
● Copied to configured place in target sitemap
● "Reuse": Reuse all elements
● Copies only the containerpage
● "Automatic":
● "Copy" when copying to the same locale
● "Reuse" when copying to another locale (configurable)
● Page + folder are copied
The "Copy page" feature
"Copy page"
is an interesting new feature
even without different locales
But don't get your content
scattered all across the system
Compare locales features
• Locale for which related pages are shown
• Main locale marked by [*]
• Switching to all locales that are configured as
main/secondary locale for the current site
Related page in the
"Compared to" locale
Sitemap for the "Locale"
(initially the sitemap you opened)
Context menu for linked page
(of the main locale)
Show any of the linked locale
variants
Menu for an unlinked page
• Locale of currently shown sitemap
• Main locale marked by [*]
• Switching to other locales, for which a
variant of the sitemap's root page exists
● Sites view
The "Link locale variant" dialog
Site selector
Show only pages in the sitemap
Not linkable page
Already linked page
Linkable page
Colors do not indicate the "link-state" of subpages
● Locales view
The "Link locale variant" dialog
"Locale selector"
switches between sitemaps
localely linked to the current
sitemap (root pages)
Show all pages
Already linked page
Linkable page
Not linkable page
Colors do not indicate the "link-state" of subpages
● Suggested usage variants:
● Different subsites for different locale variants
● Different sites for different locale variants
(configure the same locale.main and
locale.secondary for each site)
● Keep the structure of the locale variants of the site
as similar as possible
● But, you can also:
● Connect pages of different locales somewhere in
the system
The GUI can handle this
Flexibility of the approach
● Group of locale variants of a page
● There is one fixed main locale
● Implemented via OpenCms relations from the
page variant in the secondary locale to the
page variant in the main locale
● When copying from main to other locale,
relation is added automatically
Background: Locale groups
de fr
en
CmsRelationType.LOCALE_VARIANT
● The mechanism is designed and tested for the
default OpenCms site structure
● i.e., folders with "index.html" inside
● (so "page and folder" is somehow similar)
● "Do not translate" marks are only possible for the
main locale
● Linking secondary locale variants is only possible
via the main locale
● Publish the main locale variant always first
● Delete the main locale variant always as last
● For adding/deleting a link you must have write
access to the affected secondary locale variant
Restrictions of locale groups
● "Link locale variant" is also available in the
explorer
● Context menu à Advanced à "Link locale variant"
● Only for "index.html" files (default files)
Usage without the sitemap editor
What about language
switching?
Language switcher implementation
<c:set var="langlinks" value="" />
<c:set var="showlang" value="false" />
<c:forEach var="locentry" items="${cms.localeResource}">
<c:choose>
<c:when test="${empty locentry.value}"></c:when>
<c:when test="${locentry.key == cms.locale}">
<c:set var="langlinks">${langlinks}<li class="active"><a
href="#">${locentry.key}</a></li></c:set>
</c:when>
<c:otherwise>
<c:set var="showlang" value="true" />
<c:set var="langlinks">${langlinks}<li><a
href="<cms:link>${locentry.value.link}</cms:link>">
${locentry.key}</a></li></c:set>
</c:otherwise>
</c:choose>
</c:forEach>
<c:if test="${showlang}"><ul>${langlinks}</ul></c:if>
● CmsJspStandardContextBean
(access for the currently requested resource)
● Map<String, CmsJspResourceWrapper>
getLocaleResource()
● <c:forEach var="loc" items="${cms.localeResource}>
● ${cms.localeResource["de"]}
● Locale getMainLocale()
● ${cms.mainLocale}
● CmsJspVfsAccessBean
(access for arbitrary resources in the VFS)
● Map<String, Map<String, CmsJspResourceWrapper>>
getLocaleResource()
● ${cms.vfs["/index.html"]["de"]}
● Map<String, Locale> getMainLocale()
● ${cms.vfs["/index.html"]
Overview: API extensions (I)
● New class: CmsJspResourceWrapper
● Extension of CmsResource with methods
● String getLink()
● Locale getMainLocale()
● Map<String, CmsJspResourceWrapper>
getLocaleResource()
● Return value of all new JSP API methods that
return resources
● Return value of altered method
● CmsJspVfsAccessBean.getReadResource()
Overview: API extensions (II)
Evaluation: Multi-Tree approach
Easy to understand
Very flexible
Maybe already your current setup
No SEO problems
Language variants can be published separately
Great management tools in OpenCms 10.5
Pros
Takes some setup time
Maintenance overhead
Cons
Use it for all "Non-Applications"
Essence
● New bundle editor
● Bundle descriptors
● "Copy page" for containerpages
● Multilingual sites: Single-tree support
● Locale and link substitution handler
● Multilingual properties (incl. extended JSP API)
● Multilingual sites: Enhanced multi-tree support
● Locale groups
● "Compare locale" tab in the Sitemap editor
● Extended JSP API
● Enhanced content editing (auto-copy locale)
Summary – OpenCms 10.5 features
Message of the talk:
We greatly improved the support
for multilingual websites in
OpenCms 10.5
● Any Questions?
Any Questions?
Fragen?
QUESTIONS ?
Questiones?
¿Preguntas?質問
Daniel Seidel
Alkacon Software GmbH
http://www.alkacon.com
http://www.opencms.org
Thank you very much for your attention!
OpenCms Days 2016:   Multilingual websites with OpenCms
Ad

More Related Content

What's hot (20)

OpenCms Days 2013 - Site Management Tool
OpenCms Days 2013 - Site Management ToolOpenCms Days 2013 - Site Management Tool
OpenCms Days 2013 - Site Management Tool
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2013 - Start rolling with OpenCms 9
OpenCms Days 2013 - Start rolling with OpenCms 9OpenCms Days 2013 - Start rolling with OpenCms 9
OpenCms Days 2013 - Start rolling with OpenCms 9
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Hidden features of OpenCms
OpenCms Days 2015 Hidden features of OpenCmsOpenCms Days 2015 Hidden features of OpenCms
OpenCms Days 2015 Hidden features of OpenCms
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Modern templates with nested containers
OpenCms Days 2015 Modern templates with nested containersOpenCms Days 2015 Modern templates with nested containers
OpenCms Days 2015 Modern templates with nested containers
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Next generation repository
OpenCms Days 2015  Next generation repositoryOpenCms Days 2015  Next generation repository
OpenCms Days 2015 Next generation repository
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological serviceOpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological service
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Advanced Solr Searching
OpenCms Days 2015 Advanced Solr SearchingOpenCms Days 2015 Advanced Solr Searching
OpenCms Days 2015 Advanced Solr Searching
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2013 - Details of the OpenCms 9 detail pages
OpenCms Days 2013 - Details of the OpenCms 9 detail pagesOpenCms Days 2013 - Details of the OpenCms 9 detail pages
OpenCms Days 2013 - Details of the OpenCms 9 detail pages
Alkacon Software GmbH & Co. KG
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your way
rafaelliu
 
Drupal training-1-in-mumbai
Drupal training-1-in-mumbaiDrupal training-1-in-mumbai
Drupal training-1-in-mumbai
vibrantuser
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Chang W. Doh
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
Women in Technology Poland
 
How browser work
How browser workHow browser work
How browser work
Manish Trivedi
 
How Browsers Work
How Browsers Work How Browsers Work
How Browsers Work
myposter GmbH
 
Introduction to Moodle Development
Introduction to Moodle DevelopmentIntroduction to Moodle Development
Introduction to Moodle Development
moorejon
 
Drupal 8: frontend development
Drupal 8: frontend developmentDrupal 8: frontend development
Drupal 8: frontend development
sparkfabrik
 
Architecture of the Web browser
Architecture of the Web browserArchitecture of the Web browser
Architecture of the Web browser
Sabin Buraga
 
The OpenEuropa Initiative
The OpenEuropa InitiativeThe OpenEuropa Initiative
The OpenEuropa Initiative
Nuvole
 
Architektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan KrausArchitektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan Kraus
Women in Technology Poland
 
Drupal - Introduction to Building Library Web Site Using Drupal
Drupal - Introduction to Building Library Web Site Using DrupalDrupal - Introduction to Building Library Web Site Using Drupal
Drupal - Introduction to Building Library Web Site Using Drupal
Vibrant Technologies & Computers
 
OpenCms Days 2015 Modern templates with nested containers
OpenCms Days 2015 Modern templates with nested containersOpenCms Days 2015 Modern templates with nested containers
OpenCms Days 2015 Modern templates with nested containers
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological serviceOpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological service
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2013 - Details of the OpenCms 9 detail pages
OpenCms Days 2013 - Details of the OpenCms 9 detail pagesOpenCms Days 2013 - Details of the OpenCms 9 detail pages
OpenCms Days 2013 - Details of the OpenCms 9 detail pages
Alkacon Software GmbH & Co. KG
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your way
rafaelliu
 
Drupal training-1-in-mumbai
Drupal training-1-in-mumbaiDrupal training-1-in-mumbai
Drupal training-1-in-mumbai
vibrantuser
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Chang W. Doh
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
Women in Technology Poland
 
Introduction to Moodle Development
Introduction to Moodle DevelopmentIntroduction to Moodle Development
Introduction to Moodle Development
moorejon
 
Drupal 8: frontend development
Drupal 8: frontend developmentDrupal 8: frontend development
Drupal 8: frontend development
sparkfabrik
 
Architecture of the Web browser
Architecture of the Web browserArchitecture of the Web browser
Architecture of the Web browser
Sabin Buraga
 
The OpenEuropa Initiative
The OpenEuropa InitiativeThe OpenEuropa Initiative
The OpenEuropa Initiative
Nuvole
 
Architektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan KrausArchitektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan Kraus
Women in Technology Poland
 
Drupal - Introduction to Building Library Web Site Using Drupal
Drupal - Introduction to Building Library Web Site Using DrupalDrupal - Introduction to Building Library Web Site Using Drupal
Drupal - Introduction to Building Library Web Site Using Drupal
Vibrant Technologies & Computers
 

Viewers also liked (16)

OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 OpenCms X marks the spot
OpenCms Days 2015 OpenCms X marks the spotOpenCms Days 2015 OpenCms X marks the spot
OpenCms Days 2015 OpenCms X marks the spot
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud servicesOpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - OpenCms on open clouds
OpenCms Days 2012 - OpenCms on open cloudsOpenCms Days 2012 - OpenCms on open clouds
OpenCms Days 2012 - OpenCms on open clouds
Alkacon Software GmbH & Co. KG
 
Lutece, CMS star du J2EE
Lutece, CMS star du J2EELutece, CMS star du J2EE
Lutece, CMS star du J2EE
LINAGORA
 
OpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explainedOpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explained
Alkacon Software GmbH & Co. KG
 
Liferay Portal и приемы разработки
Liferay Portal и приемы разработкиLiferay Portal и приемы разработки
Liferay Portal и приемы разработки
devclub
 
OpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCmsOpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCms
Alkacon Software GmbH & Co. KG
 
Liferay 7
Liferay 7Liferay 7
Liferay 7
Son Nguyen
 
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace
OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace
Alkacon Software GmbH & Co. KG
 
OpenCmsDays 2013 - Using OpenCms 9 folders as a network drive
OpenCmsDays 2013 - Using OpenCms 9 folders as a network driveOpenCmsDays 2013 - Using OpenCms 9 folders as a network drive
OpenCmsDays 2013 - Using OpenCms 9 folders as a network drive
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2013 - Gradle based OpenCms build automated setup
OpenCms Days 2013 - Gradle based OpenCms build automated setupOpenCms Days 2013 - Gradle based OpenCms build automated setup
OpenCms Days 2013 - Gradle based OpenCms build automated setup
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2013 - OpenCms Partner Program
OpenCms Days 2013 - OpenCms Partner ProgramOpenCms Days 2013 - OpenCms Partner Program
OpenCms Days 2013 - OpenCms Partner Program
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - Developing OpenCms with Gradle
OpenCms Days 2012 - Developing OpenCms with GradleOpenCms Days 2012 - Developing OpenCms with Gradle
OpenCms Days 2012 - Developing OpenCms with Gradle
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2013 - Social Connect for OpenCms Portal
OpenCms Days 2013 - Social Connect for OpenCms PortalOpenCms Days 2013 - Social Connect for OpenCms Portal
OpenCms Days 2013 - Social Connect for OpenCms Portal
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud servicesOpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
Alkacon Software GmbH & Co. KG
 
Lutece, CMS star du J2EE
Lutece, CMS star du J2EELutece, CMS star du J2EE
Lutece, CMS star du J2EE
LINAGORA
 
Liferay Portal и приемы разработки
Liferay Portal и приемы разработкиLiferay Portal и приемы разработки
Liferay Portal и приемы разработки
devclub
 
OpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCmsOpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCms
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace
OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace
Alkacon Software GmbH & Co. KG
 
OpenCmsDays 2013 - Using OpenCms 9 folders as a network drive
OpenCmsDays 2013 - Using OpenCms 9 folders as a network driveOpenCmsDays 2013 - Using OpenCms 9 folders as a network drive
OpenCmsDays 2013 - Using OpenCms 9 folders as a network drive
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2013 - Gradle based OpenCms build automated setup
OpenCms Days 2013 - Gradle based OpenCms build automated setupOpenCms Days 2013 - Gradle based OpenCms build automated setup
OpenCms Days 2013 - Gradle based OpenCms build automated setup
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
OpenCms Days 2012 - How Software AG is optimizing workflows with OpenCms 8 an...
Alkacon Software GmbH & Co. KG
 
Ad

Similar to OpenCms Days 2016: Multilingual websites with OpenCms (20)

OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
Alkacon Software GmbH & Co. KG
 
Multilingual WordPress
Multilingual WordPressMultilingual WordPress
Multilingual WordPress
Matt Smith
 
Multilingual Drupal presentation from "Do it With Drupal"
Multilingual Drupal presentation from "Do it With Drupal"Multilingual Drupal presentation from "Do it With Drupal"
Multilingual Drupal presentation from "Do it With Drupal"
Gábor Hojtsy
 
What's brewing in the eZ Systems extensions kitchen
What's brewing in the eZ Systems extensions kitchenWhat's brewing in the eZ Systems extensions kitchen
What's brewing in the eZ Systems extensions kitchen
Paul Borgermans
 
Drupalcamp Atlanta 2010 Internationalization Presentation
Drupalcamp Atlanta 2010 Internationalization PresentationDrupalcamp Atlanta 2010 Internationalization Presentation
Drupalcamp Atlanta 2010 Internationalization Presentation
Mediacurrent
 
Multilingual WordPress (WordCamp Toronto 2014)
Multilingual WordPress (WordCamp Toronto 2014)Multilingual WordPress (WordCamp Toronto 2014)
Multilingual WordPress (WordCamp Toronto 2014)
Matt Smith
 
OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...
OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...
OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...
Alkacon Software GmbH & Co. KG
 
Barcelona Multilanguage
Barcelona MultilanguageBarcelona Multilanguage
Barcelona Multilanguage
guest3a6661
 
JavaScript
JavaScriptJavaScript
JavaScript
Vidyut Singhania
 
Multi Lingual Websites In Umbraco
Multi Lingual Websites In UmbracoMulti Lingual Websites In Umbraco
Multi Lingual Websites In Umbraco
Paul Marden
 
Mean Stack for Beginners
Mean Stack for BeginnersMean Stack for Beginners
Mean Stack for Beginners
JEMLI Fathi
 
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
Ortus Solutions, Corp
 
Building a high-performance, scalable ML & NLP platform with Python, Sheer El...
Building a high-performance, scalable ML & NLP platform with Python, Sheer El...Building a high-performance, scalable ML & NLP platform with Python, Sheer El...
Building a high-performance, scalable ML & NLP platform with Python, Sheer El...
Pôle Systematic Paris-Region
 
DOC Presentation by DOC Contractor Alison McCauley
DOC Presentation by DOC Contractor Alison McCauleyDOC Presentation by DOC Contractor Alison McCauley
DOC Presentation by DOC Contractor Alison McCauley
Federal Communicators Network
 
Taskfile - makefiles are fun again
Taskfile - makefiles are fun againTaskfile - makefiles are fun again
Taskfile - makefiles are fun again
Bertold Kolics
 
Dart the Better JavaScript
Dart the Better JavaScriptDart the Better JavaScript
Dart the Better JavaScript
Jorg Janke
 
[submission] Final_Presentation
[submission] Final_Presentation[submission] Final_Presentation
[submission] Final_Presentation
Marcus Low Junxiang
 
Sanjip Shah: Internationalizing and Localizing WordPress Themes
Sanjip Shah: Internationalizing and Localizing  WordPress ThemesSanjip Shah: Internationalizing and Localizing  WordPress Themes
Sanjip Shah: Internationalizing and Localizing WordPress Themes
wpnepal
 
Internationalizing and localizing wordpress theme
Internationalizing and localizing  wordpress themeInternationalizing and localizing  wordpress theme
Internationalizing and localizing wordpress theme
Sanjip Shah
 
HelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript DevelopersHelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript Developers
Juho Teperi
 
Multilingual WordPress
Multilingual WordPressMultilingual WordPress
Multilingual WordPress
Matt Smith
 
Multilingual Drupal presentation from "Do it With Drupal"
Multilingual Drupal presentation from "Do it With Drupal"Multilingual Drupal presentation from "Do it With Drupal"
Multilingual Drupal presentation from "Do it With Drupal"
Gábor Hojtsy
 
What's brewing in the eZ Systems extensions kitchen
What's brewing in the eZ Systems extensions kitchenWhat's brewing in the eZ Systems extensions kitchen
What's brewing in the eZ Systems extensions kitchen
Paul Borgermans
 
Drupalcamp Atlanta 2010 Internationalization Presentation
Drupalcamp Atlanta 2010 Internationalization PresentationDrupalcamp Atlanta 2010 Internationalization Presentation
Drupalcamp Atlanta 2010 Internationalization Presentation
Mediacurrent
 
Multilingual WordPress (WordCamp Toronto 2014)
Multilingual WordPress (WordCamp Toronto 2014)Multilingual WordPress (WordCamp Toronto 2014)
Multilingual WordPress (WordCamp Toronto 2014)
Matt Smith
 
OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...
OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...
OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...
Alkacon Software GmbH & Co. KG
 
Barcelona Multilanguage
Barcelona MultilanguageBarcelona Multilanguage
Barcelona Multilanguage
guest3a6661
 
Multi Lingual Websites In Umbraco
Multi Lingual Websites In UmbracoMulti Lingual Websites In Umbraco
Multi Lingual Websites In Umbraco
Paul Marden
 
Mean Stack for Beginners
Mean Stack for BeginnersMean Stack for Beginners
Mean Stack for Beginners
JEMLI Fathi
 
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
Ortus Solutions, Corp
 
Building a high-performance, scalable ML & NLP platform with Python, Sheer El...
Building a high-performance, scalable ML & NLP platform with Python, Sheer El...Building a high-performance, scalable ML & NLP platform with Python, Sheer El...
Building a high-performance, scalable ML & NLP platform with Python, Sheer El...
Pôle Systematic Paris-Region
 
Taskfile - makefiles are fun again
Taskfile - makefiles are fun againTaskfile - makefiles are fun again
Taskfile - makefiles are fun again
Bertold Kolics
 
Dart the Better JavaScript
Dart the Better JavaScriptDart the Better JavaScript
Dart the Better JavaScript
Jorg Janke
 
Sanjip Shah: Internationalizing and Localizing WordPress Themes
Sanjip Shah: Internationalizing and Localizing  WordPress ThemesSanjip Shah: Internationalizing and Localizing  WordPress Themes
Sanjip Shah: Internationalizing and Localizing WordPress Themes
wpnepal
 
Internationalizing and localizing wordpress theme
Internationalizing and localizing  wordpress themeInternationalizing and localizing  wordpress theme
Internationalizing and localizing wordpress theme
Sanjip Shah
 
HelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript DevelopersHelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript Developers
Juho Teperi
 
Ad

More from Alkacon Software GmbH & Co. KG (14)

OpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernmentOpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernment
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 How do you develop for OpenCms?
OpenCms Days 2015 How do you develop for OpenCms?OpenCms Days 2015 How do you develop for OpenCms?
OpenCms Days 2015 How do you develop for OpenCms?
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals companyOpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals company
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portalsOpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portals
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TSOpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms 9 - A video tube?
OpenCms Days 2014 - OpenCms 9 - A video tube?OpenCms Days 2014 - OpenCms 9 - A video tube?
OpenCms Days 2014 - OpenCms 9 - A video tube?
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - Updating to OpenCms 9.5
OpenCms Days 2014 - Updating to OpenCms 9.5OpenCms Days 2014 - Updating to OpenCms 9.5
OpenCms Days 2014 - Updating to OpenCms 9.5
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - Using the SOLR collector
OpenCms Days 2014 - Using the SOLR collectorOpenCms Days 2014 - Using the SOLR collector
OpenCms Days 2014 - Using the SOLR collector
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentationOpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensionsOpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensions
Alkacon Software GmbH & Co. KG
 
Open cms days 2013 - all dressed up_release
Open cms days 2013 - all dressed up_releaseOpen cms days 2013 - all dressed up_release
Open cms days 2013 - all dressed up_release
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portalsOpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portals
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TSOpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentationOpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensionsOpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensions
Alkacon Software GmbH & Co. KG
 

Recently uploaded (20)

Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Adobe Photoshop Lightroom CC 2025 Crack Latest Version
Adobe Photoshop Lightroom CC 2025 Crack Latest VersionAdobe Photoshop Lightroom CC 2025 Crack Latest Version
Adobe Photoshop Lightroom CC 2025 Crack Latest Version
usmanhidray
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Minitab 22 Full Crack Plus Product Key Free Download [Latest] 2025
Minitab 22 Full Crack Plus Product Key Free Download [Latest] 2025Minitab 22 Full Crack Plus Product Key Free Download [Latest] 2025
Minitab 22 Full Crack Plus Product Key Free Download [Latest] 2025
wareshashahzadiii
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025
mu394968
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Adobe Photoshop Lightroom CC 2025 Crack Latest Version
Adobe Photoshop Lightroom CC 2025 Crack Latest VersionAdobe Photoshop Lightroom CC 2025 Crack Latest Version
Adobe Photoshop Lightroom CC 2025 Crack Latest Version
usmanhidray
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Minitab 22 Full Crack Plus Product Key Free Download [Latest] 2025
Minitab 22 Full Crack Plus Product Key Free Download [Latest] 2025Minitab 22 Full Crack Plus Product Key Free Download [Latest] 2025
Minitab 22 Full Crack Plus Product Key Free Download [Latest] 2025
wareshashahzadiii
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025
mu394968
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 

OpenCms Days 2016: Multilingual websites with OpenCms

  • 1. Daniel Seidel, Alkacon Software Showcase Track Multilingual Websites with OpenCms 27.09.2016
  • 2. ● Build multilingual websites in OpenCms ● Work on an example ● The „Tutorial“ of the OpenCms demo ● Discuss the interesting bits: ● The concept of multilingual containerpages ● The properties that are important for localization ● Message bundles ● Different approaches for the website structure ● Show new features of OpenCms 10.5 What will we do?
  • 3. ● User-Interface localization ● Editor fields for XML Contents ● Workplace menus ● Diskus pre-containerpage approaches ● Talk about charset, encoding-problems and alike What will we NOT do?
  • 4. ● Live Demo The website we start with Demo DEMO Demo Demo デモ The OpenCms Tutorial
  • 5. XML contents building a web page Content 1 Content 2 Content 3 Content 4 Content 5 Content 6 content-00003.xml Type: specification of xmlcontent multilingual One page can show the same contents in different languages index.html Type: containerpage unilingual Since Opencms 9.5
  • 6. ● Just add a translation via the content editor ● Depending on the context the correct version is chosen How to localize XML content? Available locale variants not yet existing ones marked by "[-]" Copy locale Next question: Why can we choose between only four locales?
  • 7. Locales: Global configuration <opencms> <system> <internationalization> <!-- ... --> <localesconfigured> <locale>en</locale> <locale>de</locale> <locale>fr</locale> <locale>it</locale> </localesconfigured> <localesdefault> <locale>en</locale> <locale>de</locale> <locale>fr</locale> <locale>it</locale> </localesdefault> <!-- ... --> opencms-system.xml All locales, the installation supports The order locales are chosen Typically the entries in both local lists are identical
  • 8. ● locale=en,de ● Locales in which pages can be shown ● Order is significant ● locale-available=en,de,fr,it ● Locales editable via the content editor ● Locales, not globally configured are discarded Locale configuration via properties Next question: Is localization in content enough?
  • 9. ● Templates and Formatters may contain text that is not part of the content ● Example: Login-Form ● Localization via message bundles ● Default Java mechanism + OpenCms extension Localization in JSPs <%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <fmt:setLocale value="${cms.locale}" /> <cms:bundle basename="org.opencms.apollo.template.schemas.login"> <!-- ... --> <fmt:message key="apollo.login.title.loggedoff" /> <!-- ... --> </cms:bundle>
  • 10. ● Problem with default bundles ● Restart of OpenCms necessary after update ● Solution ● Special resource bundle types in OpenCms ● Manipulation of the Java bundle mechanism to work with “special bundles” as well ● No restart required ● Bundles are updated when published Extension to Java bundles
  • 11. ● XML resource bundle ● XML content ● One file for all languages ● Name scheme: bundle.base.name ● Property resource bundle ● One file per language ● Key-Value pairs as in normal Java “.properties”-Files ● Name scheme: bundle.base.name_{locale} OpenCms bundle types + Content editor usable + “Copy locale” available + Everything in one place - Only one person can work on a translation at a time - Format makes source code editing annoying + Source code easily editable + Many Translations could be done at the same time by different people - Several resources for one bundle Since 10.5: Graphical editor
  • 12. ● OpenCms 10.5 ships with a new bundle editor ● For XML and property resource bundles The Bundle Editor Filter Sort Switch language Select key set Edited file Add/delete entry üEasy navigation and search üOverview on all keys üPotentially editing multiple files in one editor üNice GUI üSupport for bundle descriptors Add bundle descriptor
  • 13. ● New resource type in OpenCms 10.5 ● Unilingual ● 3 Entries: key, default value, description ● Fixes the key set for a bundle ● Name scheme: {bundle base name}_desc ● Szenario: ● JSP Developer creates descriptor ● Translation is done by differently skilled people ● Descriptor is editable only by JSP developers (via permissions on the descriptor file) The bundle descriptor
  • 14. ● Descriptor can be directly edited via bundle editor (open it with the editor) ● Descriptor can be edited when the bundle is edited ● If permissions suffice Editing bundles with descriptor View change
  • 15. ● Description and default value can be used arbitrarily ● Even other editor columns can be renamed ● Adjust the column names in the editor: ● Set property bundle.descriptor.messages at the descriptor to another bundle that contains keys ● GUI_COLUMN_HEADER_DEFAULT_0 ● GUI_COLUMN_HEADER_DESCRIPTION_0 ● GUI_COLUMN_HEADER_KEY_0 ● GUI_COLUMN_HEADER_TRANSLATION_0 Flexibility of descriptors
  • 16. ● We have seen ● Concept of container pages ● Configuration of locales ● Translation of contents ● Localization in JSPs ● OpenCms specific message bundles ● The new bundle editor ● Bundle descriptors ● We are missing ● Approaches for a multilingual website's structure Short summary
  • 18. ● Situation: We can render the same container page in different locales and get the same content ● Idea: Have just the one page for the different languages ● Problems ● Same URL? ● How to determine the wanted language (links?) ● Localized navigation? ● More general: Localized properties? One page – all languages OpenCms 10.5 tackles all these problems!
  • 19. OpenCms Servlet Resolution of URLs CmsSingleTree LocaleHandler /sites/default/program/ de /sites/default/program/ en days.org/de/program/ days.org/en/program/ Page rendered in German Page rendered in English
  • 20. <Link> <!-- ... Text ... --> <URI> <link internal="true" type="WEAK"> <target> <![CDATA[/sites/singletree/step-1-modify-a- page/]]> </target> <uuid>dff93a85-7e43-11e6-9fb2-61374ff35fd2</uuid> </link> </URI> </Link> Generation of Links CmsLocalePrefixLinkSubstitutionHandler ü Adds the locale prefix according to the context ü Not necessary to store links differently x Can't link to other languages (from content)
  • 21. ● Extension of the <cms:link>-tag ● New attribute locale JSP API – Links from JSPs <c:set var="availableLocales"> <cms:property name="locale-available" file="search" /></c:set> <c:set var="locales" value="${fn:split(availableLocales,',')}" /> <c:set var="currentLocale">${cms.locale}</c:set> <c:forEach var="locale" items="${locales}"> <li><c:choose> <c:when test="${currentLocale eq locale}">${locale}</c:when> <c:otherwise> <a href="<cms:link locale='${locale}'> ${cms.requestContext.uri}</cms:link>"> ${locale}</a> </c:otherwise> </c:choose></li> </c:forEach> Implementation: A language switcher
  • 22. ● Adjusted locale handler ● Adjusted link generation Single-Tree Configuration (I) <!-- ... --> <localehandler class= "org.opencms.i18n.CmsSingleTreeLocaleHandler" /> <!-- ... --> opencms-system.xml <!-- ... --> <linksubstitutionhandler> org.opencms.staticexport. CmsLocalePrefixLinkSubstitutionHandler </linksubstitutionhandler> <!-- ... --> opencms-importexport.xml
  • 23. ● Add parameter "localizationMode" ● Set property "available-locales" at the site root ● Determine available locales for the language switcher Single-Tree Configuration (II) <!-- ... --> <site <!-- ... --> > <parameters> <param name="localizationMode">singleTree</param> </parameters> </site> <!-- ... --> opencms-system.xml
  • 24. ● Optionally add parameter "locale.main" ● Setting this parameter improves locale switching/copying. Single-Tree Configuration (III) <!-- ... --> <site <!-- ... --> > <parameters> <param name="localizationMode">singleTree</param> <param name="locale.main">en</param> </parameters> </site> <!-- ... --> opencms-system.xml
  • 25. ● Properties extended with locale postfix ● E.g.: Title, Title_en, Title_en_GB ● Special JSP API for locale-specific access ● Access from "most specific" to "least specific" ● E.g.: Title in locale "en_GB" requested ● If "Title_en_GB" is found, return it. Otherwise ● If "Title_en" is found, return it. Otherwise ● If "Title" is found, return it. Otherwise ● Return Null-Property ● If a property is searched, the result with the most specific locale, not the most direct result is returned. ● E.g.: "Title_en" from the folder is returned instead of "Title" from the contained file, if the English title for the file is searched. Multilingual properties - Idea
  • 26. ● Navigation ● Page title ● Other methods ● ● ● Multilingual properties - Access <cms:navigation locale="${cms.locale}" <!-- ... --> /> ${cms.titleLocale[cms.locale]} ${cms:vfs(pageContext).propertyLocale ["/index.html"]["de"]["Title"] CmsJspVfsAccessBean <cms:resourceload <!-- ... -->> <cms:resourceaccess var="res"> ${res.propertyLocale['de']['Title'] </cms:resourceload> CmsJspResourceAccessBean
  • 27. Evaluation: Single-Tree approach Easy to set up Easy to maintain Pros Publish always for every language Bad SEO behavior (same path for each language) Cons Use it for "Applications" Essence
  • 29. ● Typically, the top folder structure of a site in OpenCms is organized according to the language, this means: ● /de/ contains all German pages ● /en/ contains all English pages ● … ● The top folders should have set the property “locale” to the respective locale Idea: Language specific subtrees
  • 30. + Very flexible (subtrees can be totally different) + No SEO problems + Easy to understand (no implicit link adjustments) Expected Pros and Cons - More pages to maintain - Hard to keep versions synchronized - No real "link" between pages OpenCms 10.5 tackles the problem with missing relations between language versions
  • 31. ● Szenario ● Create the site in your "main locale" ● Copy pages to other locales ● Translate page properties and content ● Keep track of pages that are local variants / translations of each other ● New features ● "Copy page" function in Sitemap editor ● "Compare locales" view in Sitemap editor ● Some JSP API extensions (switch between locales) Szenario + new features
  • 32. ● Live Demo Multi-Tree Support Demo DEMO Demo Demo デモ Multi-Tree Support
  • 33. ● Add parameters "locale.main" and "locale.secondary" to the site configuration ● You can also use the workplace tool "Site configuration" Multi-Tree Configuration <!-- ... --> <site <!-- ... --> > <parameters> <param name="locale.main">en</param> <param name="locale.secondary">de,fr</param> </parameters> </site> <!-- ... --> opencms-system.xml
  • 34. ● Only for containerpages ● Different copy modes ● "Copy": Copy all suitable elements ● Option "Copy this element" on elements in containerpages ● Copied to configured place in target sitemap ● "Reuse": Reuse all elements ● Copies only the containerpage ● "Automatic": ● "Copy" when copying to the same locale ● "Reuse" when copying to another locale (configurable) ● Page + folder are copied The "Copy page" feature "Copy page" is an interesting new feature even without different locales But don't get your content scattered all across the system
  • 35. Compare locales features • Locale for which related pages are shown • Main locale marked by [*] • Switching to all locales that are configured as main/secondary locale for the current site Related page in the "Compared to" locale Sitemap for the "Locale" (initially the sitemap you opened) Context menu for linked page (of the main locale) Show any of the linked locale variants Menu for an unlinked page • Locale of currently shown sitemap • Main locale marked by [*] • Switching to other locales, for which a variant of the sitemap's root page exists
  • 36. ● Sites view The "Link locale variant" dialog Site selector Show only pages in the sitemap Not linkable page Already linked page Linkable page Colors do not indicate the "link-state" of subpages
  • 37. ● Locales view The "Link locale variant" dialog "Locale selector" switches between sitemaps localely linked to the current sitemap (root pages) Show all pages Already linked page Linkable page Not linkable page Colors do not indicate the "link-state" of subpages
  • 38. ● Suggested usage variants: ● Different subsites for different locale variants ● Different sites for different locale variants (configure the same locale.main and locale.secondary for each site) ● Keep the structure of the locale variants of the site as similar as possible ● But, you can also: ● Connect pages of different locales somewhere in the system The GUI can handle this Flexibility of the approach
  • 39. ● Group of locale variants of a page ● There is one fixed main locale ● Implemented via OpenCms relations from the page variant in the secondary locale to the page variant in the main locale ● When copying from main to other locale, relation is added automatically Background: Locale groups de fr en CmsRelationType.LOCALE_VARIANT
  • 40. ● The mechanism is designed and tested for the default OpenCms site structure ● i.e., folders with "index.html" inside ● (so "page and folder" is somehow similar) ● "Do not translate" marks are only possible for the main locale ● Linking secondary locale variants is only possible via the main locale ● Publish the main locale variant always first ● Delete the main locale variant always as last ● For adding/deleting a link you must have write access to the affected secondary locale variant Restrictions of locale groups
  • 41. ● "Link locale variant" is also available in the explorer ● Context menu à Advanced à "Link locale variant" ● Only for "index.html" files (default files) Usage without the sitemap editor What about language switching?
  • 42. Language switcher implementation <c:set var="langlinks" value="" /> <c:set var="showlang" value="false" /> <c:forEach var="locentry" items="${cms.localeResource}"> <c:choose> <c:when test="${empty locentry.value}"></c:when> <c:when test="${locentry.key == cms.locale}"> <c:set var="langlinks">${langlinks}<li class="active"><a href="#">${locentry.key}</a></li></c:set> </c:when> <c:otherwise> <c:set var="showlang" value="true" /> <c:set var="langlinks">${langlinks}<li><a href="<cms:link>${locentry.value.link}</cms:link>"> ${locentry.key}</a></li></c:set> </c:otherwise> </c:choose> </c:forEach> <c:if test="${showlang}"><ul>${langlinks}</ul></c:if>
  • 43. ● CmsJspStandardContextBean (access for the currently requested resource) ● Map<String, CmsJspResourceWrapper> getLocaleResource() ● <c:forEach var="loc" items="${cms.localeResource}> ● ${cms.localeResource["de"]} ● Locale getMainLocale() ● ${cms.mainLocale} ● CmsJspVfsAccessBean (access for arbitrary resources in the VFS) ● Map<String, Map<String, CmsJspResourceWrapper>> getLocaleResource() ● ${cms.vfs["/index.html"]["de"]} ● Map<String, Locale> getMainLocale() ● ${cms.vfs["/index.html"] Overview: API extensions (I)
  • 44. ● New class: CmsJspResourceWrapper ● Extension of CmsResource with methods ● String getLink() ● Locale getMainLocale() ● Map<String, CmsJspResourceWrapper> getLocaleResource() ● Return value of all new JSP API methods that return resources ● Return value of altered method ● CmsJspVfsAccessBean.getReadResource() Overview: API extensions (II)
  • 45. Evaluation: Multi-Tree approach Easy to understand Very flexible Maybe already your current setup No SEO problems Language variants can be published separately Great management tools in OpenCms 10.5 Pros Takes some setup time Maintenance overhead Cons Use it for all "Non-Applications" Essence
  • 46. ● New bundle editor ● Bundle descriptors ● "Copy page" for containerpages ● Multilingual sites: Single-tree support ● Locale and link substitution handler ● Multilingual properties (incl. extended JSP API) ● Multilingual sites: Enhanced multi-tree support ● Locale groups ● "Compare locale" tab in the Sitemap editor ● Extended JSP API ● Enhanced content editing (auto-copy locale) Summary – OpenCms 10.5 features Message of the talk: We greatly improved the support for multilingual websites in OpenCms 10.5
  • 47. ● Any Questions? Any Questions? Fragen? QUESTIONS ? Questiones? ¿Preguntas?質問
  • 48. Daniel Seidel Alkacon Software GmbH http://www.alkacon.com http://www.opencms.org Thank you very much for your attention!