Forums / Setup & design / Translations and i18n

Translations and i18n

Author Message

Christian Johansen

Wednesday 08 March 2006 4:03:41 am

I've just successfully created my first multilingual site thanks to the excellent tutorial submitted by a user. Unfortunately I couldn't see that the tutorial explained the concept behind the i18n-operator and the documentation for it leaves one question. It shows this example:

{"This is a test"|i18n}

Outputs "This is a test" translated to the current language. 

Where does the translation come from? What if I want to translate "This is some message specific to my website" - where do I specify it's translations? Does the i18n operator always expect input to be in english? I tried the above example on a page that uses nor-NO for locale, but all I had displayed was "This is a test".

Can someone point me to some more explanation of this?

Albert Hornos

Tuesday 21 March 2006 1:51:24 am

Hi christian Johansen,
The i18n-operator look for translations in the "language".ts file locate at shared/translations. If you open a .ts file you could see an xml code structured like: namespace--message--source--translation. When you use i18n-operator at your templates you should specify a namespace at this form eZ look for the string at the source tags in this namespace and put the translation if it has.
Once you understand this, you could made your own namespace and your own translations at this language ("language".ts) and of course the source tags could be in any language (normally in english to be more coherent with the rest of the code)

I hope I could help you

Marc Boon

Friday 24 March 2006 4:26:23 am

The translation files are named translation.ts (the same filename for each language) and located in /share/translations/locale. For example the Dutch translation is in the file /share/translations/dut-NL/translation.ts
Those translations are primarily for the admin interface.
If you just want to translate some template texts for a specific siteaccess, it is better to put them in an extension. Create the following directory structure:

extensions
   your_site         // a name you choose
      translations
         locale1      // for example: dut-NL
            translation.ts
         locale2      // for example: ger-DE
            translation.ts

Then put the following lines in /settings/siteaccess/your_siteaccess/site.ini.append[.php]:

[RegionalSettings]
Locale=locale
TextTranslation=enabled
TranslationExtensions[]=your_site

'locale' is the locale you want to use for this site access, for example dut-NL or ger-DE
'your_site' is the name of the directory you chose above.

To create the translation.ts files, you can use the tool ezlupdate, which scans your templates for the i18n operator and creates entries for each message to be translated. You can also create the files manually, see the files in /share/translations for as an example of the general structure.