You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by David Buchmann <da...@liip.ch> on 2011/03/02 19:29:25 UTC

multilanguage best practices

hi list,
we are currently building an application using jackrabbit as storage
backend. one problem we are unsure about is how to store multilingual
content and navigation structures. i see 3 ways of doing it, from simple
to complex.
i would be very happy to have input from people with experience in the
field. what do you use? what makes sense? do i miss something, are there
more clever ways of doing this?

i found one very old post about it, but maybe there is more to say about
this since then? please also note that we are not only considering
content translation but also navigation structures.
http://jackrabbit.510166.n4.nabble.com/best-practise-for-multi-language-support-td524330.html

1. language agnostic
navigation: one navigation tree per language. in the root of the
navigation, separate between the languages (i.e. have nodes "en", "fr",
"de", ...) and then just attach nodes below as usual.
nodes: no relation between translations of the same content.
+ trivial to implement
- no "language fallback" (use other language in case of incomplete
translation)
- no link between translations
- up to backend user to create same navigation tree and translate things
- language neutral elements of nodes are duplicated
- when aggregating nodes, must be careful about path (language base
element) to not show duplicate content in different languages

2. linking
navigation: still one navigation tree per language.
nodes: content nodes have a reference to a node that is the same content
in another language.
(this is the drupal way of doing things. they only do it this way
because multilanguage was added on top of the original single-language
system)
+ can be added "on top" of a system without translation
+ nodes can live inside their language' navigation tree
- uses lots of node references
- still no synchronized navigation tree
- language neutral elements of nodes are still duplicated or must be
synchronized by the application
- when aggregating nodes, must be careful about language to not show
duplicate content

3. multilingual nodes
navigation: one tree per language? or have urls in just one language? or
one tree with translations?
nodes: have a translation:[langcode] child for each language.
+ the same thing is the same in all languages
+ language neutral elements are properly handled
+ we have a fallback if a node is not existing in the preferred language
+ aggregating works without the issues of the other approaches
- still no synchronized navigation tree
- nodes either live outside the tree and all tree elements link to them,
or there is a primary language and the others tree elements link to
their respective elements

i like 3) best. however, i am unsure about the best way to model
navigation structures with 3).
tree per language allows to have different trees which can be a feature,
but its not evident how to avoid different trees when this is not wanted.
urls in just one language is very bad for user friendlyness and SEO
tree with translations sounds very bad performancewise. we directly map
paths to retrieve nodes from jackrabbit, meaning the node names show up
in the url. if there would be translations of those names, we would have
to manually walk the tree and look at the translations.

cheers,
david
-- 
Liip AG // Agile Web Development // T +41 26 422 25 11
CH-1700 Fribourg // PGP 0xA581808B // www.liip.ch