Skip to content
Dan Michael O. Heggø edited this page Jan 26, 2015 · 11 revisions

How to translate Skosmos to a new language, or to edit existing translations

Translation basics

Translations are implemented using gettext and managed by editing po files. In addition, the translations and locales to use in a particular installation are defined by the LANGUAGES setting in config.inc; see Configuration for details.

Using Poedit

Translations are best edited using Poedit.

  • Install Poedit in Debian/Ubuntu: apt-get install poedit
  • Install Twig Gettext Extractor to let Poedit parse translatable strings from Twig templates.
    • Install it using Composer by running this command in the root of the Skosmos code repository: php composer.phar install
  • Set up Poedit to use the extractor following the installation instructions on the Twig Gettext Extractor home page, except use tools/twig-gettext-extractor as the path because we need to use our customized version of this script due to our custom Twig filters.

In Poedit, you can then update the catalog (i.e. extract all translatable strings), edit the translations for each language, and save the results.

Adding new strings to translate

If the word you want to translate can't be found in the .po files you will need to add {% trans %} and {% endtrans %} tags to the object to be translated in the twig templates. After that you can add the word to the .po file with its translation.

Translatable strings not present in templates or code

Some strings to be translated do not naturally appear in the Twig templates or PHP code, e.g. SKOS qnames such as skos:broader. Such strings are listed in the Twig template extra_msgids.twig which is not actually used by Skosmos for rendering, only for feeding the extra messages to xgettext/Poedit.

Updating existing translations

The translations are located in .po files under resources/translations/

For example if you want to make changes to the Finnish translation of Skosmos the file you will need to update is skosmos_fi.po.

Using the updated translations

After you have made the desired changes to the .po file you will need to run the translation script trans_script located in the same folder eg. in linux sh trans_script. The script creates the machine readable .mo files and moves them to the corresponding folders. Finally it restarts the local apache server so you can see your changes immediately without any cached results.

Translating to a new language

To translate to a new language, you need to:

  • Create a .po file for that language under resource/translation/ using e.g. Poedit.
  • Create a directory resource/translation/<lang>/LC_MESSAGES/ (where <lang> is the language code for your new language).
  • Run trans_script to compile .mo files from the .po files.
  • Add the new language to config.inc so it gets used.