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.

eZ debug

Timing: Jan 18 2025 16:08:29
Script start
Timing: Jan 18 2025 16:08:29
Module start 'content'
Timing: Jan 18 2025 16:08:29
Module end 'content'
Timing: Jan 18 2025 16:08:29
Script end

Main resources:

Total runtime0.1520 sec
Peak memory usage2,048.0000 KB
Database Queries141

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0071 588.8359180.8438
Module start 'content' 0.00710.0060 769.679793.8672
Module end 'content' 0.01310.1388 863.5469522.5000
Script end 0.1519  1,386.0469 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00342.2466200.0002
Check MTime0.00140.8963200.0001
Mysql Total
Database connection0.00100.652110.0010
Mysqli_queries0.109171.76381410.0008
Looping result0.00110.71281390.0000
Template Total0.138591.110.1385
Template load0.00090.580510.0009
Template processing0.137690.542310.1376
Override
Cache load0.00060.406810.0006
Sytem overhead
Fetch class attribute can translate value0.00080.498110.0008
XML
Image XML parsing0.00030.180310.0003
General
dbfile0.00342.2240200.0002
String conversion0.00000.004130.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 1
 Number of unique templates used: 1

Time used to render debug report: 0.0001 secs