Skip to end of metadata
Go to start of metadata

Translating CiviCRM

If your language is not yet supported or if you wish to improve the quality of the translation, you can take the matter into your own hands. CiviCRM's web-based translation tool does not require any special technical skills, and even allows a number of different people and organizations to collaborate on a translation project.

Before you start:

  • Does your language have a page in the 'Translator Resources'? It helps a lot to determine, if necessary, what verb tense is used when translating, typography, lexicon of the most common words, and other tips to help translators normalize the translation.
  • If you wish to create a regional translation, ex: French or Spain, how different are the translations going to be? Creating a new translation is a lot of work. While we can help to synchronize one translation to another, it is not currently automatic. If you can agree with the translation team to avoid regional expressions as much as possible, you will save a lot of time!
  • Try to find and promote good translators to the role of "reviewer" in Transifex. Once a string is marked as 'reviewed', it can only be changed by reviewers or administrators. This makes it easier to open up translation teams to more people, but make sure that there is a good level of quality assurance.
  • Planning a translation sprint? Make sure you blog about it! We will also retweet and promote your work to make sure it gets visibility and hopefully more people that can review and help with the translation. If you don't have blogging permission on civicrm.org, post on the "internationalization" forum, and we can promote it on the blog.

Communicate with the rest of the community!

  • If you have any questions, please post on the "internationalization and localization" forum
  • Contact us in the CiviCRM IRC channel, feel free to ping 'bgm' or 'alejandros_'
  • We can also create a separate forum for your language on forum.civicrm.org (ex: French, Spanish, Portuguese, etc), so that you can build a community of users and translators for your language.

 

Translators Resources

This section has been created to aggregate per language translator resources.


How it Works

CiviCRM localisation uses the standard Open Source gettext approach. This means that all of the localisable strings (pieces of text) in the CiviCRM source code are extracted using automatic tools. The strings are sent to Transifex, a web-based translation tool, where volunteers translate the strings to their language. When CiviCRM releases a new version, the translated strings are then fetched from Transifex and packaged into files that can be found in civicrm-l10n.tar.gz from the download page.

For the curious, the extracted strings reside in '.pot' files which serve as 'templates' for different '.po' files - one set of such files for every language. This way, the fact that CiviCRM is localised into a given language is equivalent to the fact that there exists a set of '.po' files for the language in question. The '.po' files are plain text, for performance reasons they are converted to a binary 'MO' format. In other words, we have multiple "component.pot" files that serve as templates, which become component.po files for each language, and in order to use them in CiviCRM, the final result is concatenated into one big file and compiled as "civicrm.mo". You can see the 'pot' and 'po' files in our github repository: https://github.com/civicrm/l10n/tree/master/po

Supported languages (civicrm-l10n.tar.gz)

In order to be included in the civicrm-l10n.tar.gz file, a language must reach 20% completion rate. If you have reached 20%, please let us know by posting in the internationalisation and localisation forum.

Web-based Translation

The easiest way to translate CiviCRM is via our Transifex project, a web-based translation tool and community.

Every day, around 9 AM US Pacific time, the strings are automatically fetched from Transifex and compiled into the "civicrm.mo" files that are used in CiviCRM. If you can afford this delay, it avoids having to download all the translation files and generating this file manually.

Every day at 9h45 US Pacific time, the CiviCRM website packages updated translation files. They are available at the following address:

https://download.civicrm.org/civicrm-l10n-core/mo/xx_XX/civicrm.mo

For example, for Spanish:

https://download.civicrm.org/civicrm-l10n-core/mo/es_ES/civicrm.mo

NB: if you wish to regenerate the civicrm_data.xx_XX.mysql files, you must use a development version of CiviCRM and re-run "GenCode". For more information, see Contributing to CiviCRM using GitHub.

Manually compiling translation files

See the i18n Administrator's Guide ("Updating your translation files manually using Transifex").

Offline Translation

We strongly recommend using the Transifex web interface for translations. However, if your Internet connection is not reliable, or if you prefer to translate CiviCRM on your local computer, you can do this by downloading the files from Transifex using the command line tool, editing offline with an editor (see below), the sending the files back to Transifex as often as possible.

For the exact steps, see the i18n Administrator's Guide ("Updating your translation files manually using Transifex").

To send strings to Transifex:

$ tx push -t

To send only a specific language (faster):

$ tx push -t -l xx_XX

Once you have the proper PO files, you can use any standard Gettext tool to translate the contents (or edit it with any simple text editor). The most popular translation tools are:

After translating/updating the translation, you will need to compile it and place it in the appropriate directory of your installation (procedures in the preceding section). You can also contribute the translation back to the community by sending it to Transifex (using the command line tool, or by uploading the file in the user interface)

Localisation Code of Ethics

The goal of a localisation community is to develop a generic translation of CiviCRM that can be used in as wide a variety of organisations. There is no such thing as an ideal or perfect translation and there will always be a need for compromise on translations. Localisation communities therefore need to constantly work towards compromise on the one hand and possibly discussing specific translations for individual organisations or industries. The facilities that are available to support the individual translator or the translation teams will most likely provide the opportunity to develop excellent localised versions of CiviCRM.

  • Creating CiviCRM translations is a collaborative process. Translators will review and comment on each others work. In case the team can't compromise, the team coördinator decides
  • Consistency in a translation is important. It is therefore helpful if translators make sure they use the original terminology in all situations. You may want to use the glossary to help you achieve consistency.
  • Try to achieve concensus when translators disagree on terminology.
  • The core team decides who is the maintainer / coördinator on the basis of "first come - first serve".
  • Respect the code of ethics.

Localisation Forum

If you'd like to do any work on CiviCRM localisation or have any feedback you'd like to share with us, it would be great if you joined our forum and checked out "Internationalization and Localization" forum board: http://forum.civicrm.org/index.php/board,10.0.html

Labels
  • None