:: Version 2.6.0 ::

How to translate

Principles

In iTop, a language is identified by two things:

  • The ISO 639-1 language code. Example: pt for Portuguese.
  • The ISO country code. Example: br for Brazil.

Localization relies on dictionary files, which names are prefixed with the iTop language code in lowercase, like : pt_br.dictionary.itop.core.php. Those files are part of the datamodel, so a compilation is needed after each modification (run the setup again or use the toolkit).

The embedded dictionnaries are located in :

  • <itop-root>/dictionaries/
  • <itop-root>/datamodels/2.x/<module>/

Dictionary file format

A dictionary is in fact a PHP file. It must be encoded in the utf-8 character set (this is a MUST). We recommend that the PHP closing tag be omitted as in the example given below.

<?php
/**
 * Localized data
 *
 * @copyright   Copyright (C) 2015 John Foo Ltd
 * @author      John Foo (john@foo.com)
 * @license     http://opensource.org/licenses/AGPL-3.0
 */

Dict::Add('PT BR', 'Brazilian', 'Portuguese', array(
        'Menu:ChangeManagement' => 'Gerenciamento Mudanças',
        'Menu:Change:Overview' => 'Visão geral',
        'Menu:NewChange' => 'New Change~~',
));

Notes:

  • The first parameter of the function call is the iTop language code in uppercase.
  • The second parameter of the function call is the language name in english.
  • The third parameter of the function call is the language name in the target language.
  • The line Dict::Add must be the same amongst all the dictionnary files for the same language (yes, there are redundant information here).
  • Notice the ~~ at the end of some strings. This suffix is not displayed to the end-user. It has been automatically added by Combodo when releasing a new version of iTop, revealing which new strings require a translation.

How to contribute to improve an existing language

You'll have to create a fork from iTop main repository, then do your modifications based on the develop branch, and then create a pull request.

A detailed procedure on pull request model is available in the GitHub help pages : Creating a pull request from a fork.

To add translations to an existing language : look for (grep) the ~~ and translate them in place.

Here is a quick Linux command line to find all dictionary entries (of the German (=de) language) with the ~~ tag:
find -name "de*dict*.php" | grep -v "env-" | xargs grep "~~"

Simply change de* in the command above by the language code you want to process (fr, it, sp…) and launch this command from the directory where you installed iTop.

To add translations for a new language : find out your language code and country code. Copy the english files (either dictionary.*.php or en.dict.*.php) into their respective directory, with the relevant prefix (like in pt_br.dict…). Translate them.

Do not forget to change the parameters of the Dict::Add function calls. Failing to do so will overwrite (at runtime) the english texts with yours.

The pull request will then be analyzed by iTop maintainers, and eventually merged into the main repository.

2_6_0/customization/translation.txt · Last modified: 2019/01/09 16:40 (external edit)
Back to top
Contact us