Translating LimeSurvey

From LimeSurvey Manual

Translating LimeSurvey

Wouldn't it be great to have LimeSurvey completely translated to your native language? The LimeSurvey team is always on the lookout for new translations and for people who help update the existing ones. Please read these instructions and don't hesitate to send an email to if you are in doubt or have any other questions.

How to translate - step-by-step instructions

Updating an existing translation

  1. Sign up on the LimeSurvey website and then log in to your account.
  2. Go to and log in there with the same username and password.
  3. Pick the LimeSurvey version you want to translate and simply get started. After your translation is approved, it will automatically be included in the weekly stable release and your username will be credited in the change log.
  4. If you are interested in becoming a prime translator for your language with the ability to approve newly translated strings, please contact us at Such a position requires a maximum of about an hour of work per week - it's important to us that you are reliable in doing this.

Customize an existing translation

Sometimes you might want to modify an existing translation so it accommodates your particular survey situation better. In that case, do the following:

  1. Go to, pick the LimeSurvey version you want to translate and the particular language you want to modify.
  2. On the bottom of the translation page you will find an option to export all strings as *.po file. Click on the export and save it as *.po file to your local hard-disk:
  3. Download and install Poedit.
  4. Start Poedit and edit the downloaded *.po file - modify the particular translations.
  5. When you save the *.po file, a *.mo file is automatically created. The latter will be read by LimeSurvey.
  6. The last step is to place the particular *.mo file in the right language folder in /locale by replacing the existing one.
For example, the location for French would be <LimeSurvey_root_directory>/locale/fr/LC_MESSAGES/fr.po.
Note: If you are using LimeSurvey Pro(only for Cooperate and Enterprise users), the team will be happy to place the file for you. Just create a support ticket and attach the *.po file (not the .*mo).

Creating a new translation

  1. First of all, get access to the development version of LimeSurvey. For detailed instructions, access the source code.
  2. Download and install Poedit .
  3. Now you have to find out the language-code for your language - you can search for your language-code in the IANA Language Subtag Registry.
  4. Go into the /locale directory (located in the LimeSurvey root directory) and create a directory named after your language code.
  5. Download your language template by going to on the following link [1]. Select the project, then any language (e.g. go for the English entry), and scroll to the bottom. There you have the possibility to export the language file as <your_language_code>.po file.
  6. Copy the <your_language_code>.po file to the newly created folder located in the /locale directory.
  7. Open the file with Poedit and translate everything you need to translate.
  8. To make LimeSurvey know about your language, you must add it in application/helpers/surveytranslator_helper.php (located in the LimeSurvey root directory). Open that file with a text editor and add your language in the same way the other languages are defined in that file.
  9. Save - in order to allow LimeSurvey to see the newly added language, save the modified *.po file. This will automatically generate the *.mo file in the same folder, which will be read by LimeSurvey.
  10. Send the new *.po file and the updated surveytranslator_helper.php file to
If your language use a lot of special character : please check what font must be used for pdf generation (check with dejavusans for example). Then we can add this font file in alternatepdffontfile default configuration.
If you want your name to be linked from/shown on the team page, please write so in the email!

Sample code for add a new language

    $supportedLanguages['code']['description'] = gT('Language'); // Your language name in English
    $supportedLanguages['code']['nativedescription'] = 'Language in native';  // The native name of your language
    $supportedLanguages['code']['rtl'] = (true|false); // RTL 
    $supportedLanguages['code']['dateformat'] = integer; // See getDateFormatData function
    $supportedLanguages['code']['radixpoint'] = (0|1); // 0 : ., 1 : , for radix point
    $supportedLanguages['code']['cldr'] = 'code';  // If the related Yii language code differs you can here map your language to a new code
    $supportedLanguages['code']['momentjs'] = 'code'; // Used by moment.js

Other part to be translated