Inside TYPO3

TYPO3 Localisation with TemplaVoila

This article should give a compact summary of a possible best practice multilanguage configuration for TYPO3 together with TemplaVoila.


Install the extension "languagevisibility" (see links below). This extension is required for the full localisation power.

You may also want to have a look at the "l10n" extension that adds mass translation support.

Website Languages

Add the "website language" records under the TYPO3 page root and configure the desired fallback order. (typically you want to have at least "default" in you fallback order)


mod.SHARED { 		   
defaultLanguageFlag = us
defaultLanguageLabel = English - US
mod.web_txtemplavoilaM1.enableLocalizationLinkForFCEs = 1
mod.web_txtemplavoilaM1.hideCopyForTranslation >


 config {
sys_language_mode = ignore
sys_language_overlay = hideNonTranslated
sys_language_uid = 0
locale_all = en_US.utf8
[globalVar = GP:L = 1]
config {
sys_language_uid = 1
language = de
locale_all = de_DE.utf8

TemplaVoila Localisation Modi

TemplaVoila has 4 localisation modi:

  1. "Disabled" ( langDisabled = 1 )
  2. "Inlinetranslation" ( langChildren = 1 )
  3. "Inlinetranslation-seperate" ( langChildren = 0 )
  4. "databaseoverlay" ( langDatabaseOverlay =1 ) *

(* the mode "databaseoverlay" is added by the extension "languagevisibility" )

Container FCEs

You should use the mode "disabled" for all FCEs that act as pure containers:

<meta type="“array”" />

This setup in the DS tells TYPO3 that this FCE should not be translated. And it tells TemplaVoila, that this FCE should not be edited and that the default value for the language field should be "All".

Content FCEs and mixed FCEs

The typical FCEs have fields with some content, that needs to be localised. You should use the mode "databaseoverlay". (Inlinetranslation support has two big disadvantages: 1. No concurrent work on languageversions in workspaces and 2. bad usability)


<meta type="“array”" />

If your FCE has translatable content and also container fields that allows for further nesting you need to configure the container fields in a way that it always uses the default language content:


<field_content type="array">
<TCEforms type="array">

If your FCE has translatable content that is not required, you may want to fall back to the default language if this field has no content. This is useful for Images for example:

<field_image type="array">
<TCEforms type="array">


(* the "l10n_mode" support for flexforms  is added by the extension "languagevisibility" )

page DS

<meta type="“array”" />

This configuration enables the inline localisation for any TemplaVoila page property.

(In addition you have the possibility the maintain a completely own contentelement structure on pages for certain languages)

Special Attention

      • don't forget to check your correct UTF8 setup. (If TYPO3 version is below 4.5 you need to set "forceCharset = utf-8" and maybe also setDBInit )
      • TYPO3 uses the language ISO code as key for inlinetranslation in flexforms. If you have multiple localizations per language you need to add additional pseudo ISO codes. ( Read more in a related article "multilanguage websites with same language")

      blog comments powered by Disqus
      1. solar 16.08.11 15:45

        hey guys,

        really nice tipps. thank you.

        another issue, have you ever checked the browser performance of this site?
        this site is quite unsable on firefox, it causes/consumes 90% cpu-power...
        there is something not well coded on this site..

        best regards

      2. Daniel 02.08.11 21:55

        Hi Stephan

        exclude and mergeIfNotBlank both works for merging the content for the frontend-rendering.
        (exclude = always use fieldcontent from fallback language /
        mergeIfNotBlank = only use fields from fallback language if no value for the current language exists)

        But this field is not evaluated in the backend unfortunately.

      3. Stephan 26.07.11 11:29

        Hi Daniel,

        thanks for this article about Localisation and the extension "languagevisibility". Currently I try to get deeper into this, but I have still problems.

        When I play around with l10n_mode in the datastructur of the FCE I see no difference between "exclude" or "mergeIfNotBlank". It shows same behavior.

        What about "prefixLangTitle" and "noCopy"? Are these values allowed for l10n_mode in DS? What do they effect?

        I want to localize a FCE, but don't want that templavoila makes a copy of the image that was inserted in the default-FCE. How can I do this?

        best wishes, Stephan