Translating Joomla techniques
How to setup and translate a complex multilanguage and multidomain Joomla portal. This article contains several approaches to obtaining a manageable and sustainable Joomla! multilanguage site, regardless of the number of extensions, languages, content elements and modules.
Joomla! native language management is extremely powerful in allowing any kind of customization you want to achieve; it however falls short when it comes to managing larger websites. The techniques we outline in this document offer solutions for all possible translation needs; you might not need all of them!
What do I want to translate?
The first thing is to make a plan. What do I want to translate? What content structures should be different from language to language? When is a translation needed, and when is localized content different from bare translations? Do I want a fallback to the default language?
What tools should I use?
Besides Joomla! native content languages and overrides, several components offer some content translation features; Falang and JoomFish offer an alternative structured approach to translations, which can often be extended to support third party extensions.
Joomla native translations
For each content element in Joomla! (menu items, articles, content modules, categories mainly) Joomla alllows you to specify whether they apply to all languages or a specific language. Hence it is possible, by duplicating the elements, to achieve the greatest degree of flexibility, at the cost of having a very high number of items (articles * languages, modules * languages, menu items * languages). The translated items will not have any relationship to each other, making the management of even a simple website a hard task.
With language overrides we translate the static text in extensions and Joomla! This is a very useful feature to fix the minor errors and missing strings in third party extension translations quickly.
Language domains - virtual domains - Language plugin
Several plugins allow to bind a specific domain name to a language, making it possible to create and manage several domains/subdomains from a single Joomla installation. This is not mandatory since we can achieve true multilanguage with a prefix to the urls i.e. fasterjoomla.com/en/english-alias and fasterjoomla.com/it/italian-alias; but it does make an interesting add-on.
Falang and JoomFish!
In this document we'll concentrate on Falang, the extension we're more familiar with; the two products are similar and come from the same codebase, so most info should apply to JoomFish as well. Please see the full discussion and history on our other article.
The main feature of Falang is to allow behind-the-scenes transparent translation of content; Joomla thinks it's only serving a "standard" content. Falang looks at the language code and provides - if present - a localised version.
The advantage of this approach is ease of management: in Category manager, Content management, Modules management and Menu items management we only see one item; Falang offers a feature to translate each item to several languages, additionally showing us the state (so it's easy to see what content is translated, and which translations are outdated.
I have too much content! It takes me minutes to find the right item
Take a look at fasterTranslate a free module for your backend to help you access translations directly from the item. Supports all Joomla content by default
Bringing it all together: some common requirements
First of all we need a plan. You must answer these questions:
- What content is the same for all languages?
- What content needs to be translated?
- What content must only appear on a single language?
Based on this, we'll start creating a menu structure where all items a) and b) is assigned to "All languages" (the default setting); all items c) are assigned to a specific language; all items b) are then translated with Falang.
This is it. KISS.
What should I be aware of? What are the limitations?
When a content item is only to be published on two languages, but not a third one, we'll need to duplicate it. Joomla does not offer a way to assign two languages: and we couldn't find a workaround.
A most common scenario is showing the Featured articles as a homepage: you can only choose if an article is featured in one language, or in all of them!
Let's get down to business, how do I set it up?
Please install and configure:
- Language packs;
- Content languages;
- Any language-domain-switching plugins
Now create the initial content / modules then create the menu items setup:
- Create a main menu for all languages;
- add each site-wide item with "All Languages";
- add each single-language item assigning it a specific language
And how do I teach my content editors all this?
You're on your own with this. I'll share my experience though.
A nice document explaining all the steps: success rate: 10%
A nice video showing a walkthrough for each step: success rate: 15%
Please consider that 5% gets it when you tell them, so the documentation may be worthless. You better turn on content versioning, keep good backups, and fix things as they break them.