All page names need to be in English.
en da  de  fr  it  ja  km  nl  ru  zh

Translations/Before XLIFF

From TYPO3Wiki
Jump to: navigation, search

notice - Note

Since July 2011 TYPO3 uses Pootle to do the translation work. Before, a TYPO3 installation with the extension llxmltranslate was used. When that was the case, the following translation process applied.

Translation process

If there is some part of the core which is not translated and you would like to translate it, ask for the login and password. Write an e-mail to the chief translator of your language. The chief will give you access to the translation server on which you can do your translation work.

Extensions available for translation

Since TER 2.0 has been introduced the translation server is not only a place to translate the language files of the TYPO3-core; we can also translate extensions there. Right now only manually added extension can be translated. If your extension is not on the list and you would like it to be, please request installation in the translators newsgroup/mailing-list.

Using llxmltranslate

The locallang-XML Translation Tool is a backend module which enables users to edit the localization of the TYPO3 backend directly in the backend. It detects all locallang-XML files (in local/global/system extension folders) and provides an editing interface for each one of them.

Before you start

  • Before you start to translate an extension make sure that you have used the extension. You MUST be familiar with the extension before you can translate it. Always try to see the words and sentences you are about translate in their proper context. The more familiar you are with the extension the better your translation will be.
  • Follow the common-vocabulary as described on your team page.
  • Don't translate everything! Here is a list of the tems, which must not be translated.

If you think there is a good, well known and often used extension that can go to that list, you can propose to translate it in the mailing list.


Translation server, llxmltranslate: settings

After logging into the translation server you can use the 'locallang-XML translation tool' (llxmltranslate). You can use the settings page to choose additional languages to show during the translation process. <div style="clear: both;"/>

notice - Note

To prevent overriding one translator work by other do the following:
  • Change the first label of the edited file to "!!! Edited right now by: Your NameHere !!!" and SAVE so other can see the first label with the message that you are editting.
  • Make translation.
  • After you finish translating (all or the part) remove from the first label the message that you are editting so other can edit the file.

Create New External Files

Translation server, llxmltranslate: translate files, new translation

On the 'translate files' page you can choose an extension and a language file to translate. In the image on the right, you can see what this page looks like for a new translation. The external translation file in 'typo3conf/l10n' does not yet exist.

notice - Note

Take care to check both checkboxes when starting a new translation. Currently the 'move to external file' checkbox is checked by default.

After saving, translations from the original local language file will be moved into typo3conf/l10n language files.

Translate New Labels

Translation server, llxmltranslate: translate files, existing translation, new label

The image on the right shows what it looks like when there is already an external translation file (in typo3temp/l10n), but one of the labels has yet to be translated. The 'NEW' status label is marked with a blue background color.

There is a legend explaining what the colors mean:

  • green: OK
  • blue: New
  • orange: Changed
  • red: Unknown

The numbers in the legend show how many labels exist with a certain status. <div style="clear: both;"/>

Translation server, llxmltranslate: translate files, existing translation, all green

The image on the right shows what it looks like when you are done translating. All labels are green. Good job! <div style="clear: both;"/>

Translation internals - how does it work?

Old TYPO3 multilanguage extension system had only one language file: locallang*.php files. With new xml based system we have now 2 language files.

  1. in the extension folder
  2. in typo3conf/l10n/ folder

What is the difference between those 2 and from what files are the labels taken?

The main language file is that existing in extension folder. Dummy locallang.xml looks like this:

   <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
        <meta type="array">
              <description>[Insert Title]</description>
              <type>[Insert type: module/CSH/database]</type>
              <csh_table>[first argument of the t3lib_extMgm::addLLrefForTCAdescr() function call including this file inside of ext_tables.php]</csh_table>
        <data type="array">
        <languageKey index="default" type="array">
            <label index="[item_key]">[item_value]</label>

It must contain at least definitions of the default labels. Then there can go translation of default labels into:

        <languageKey index="xx" type="array">
           <label index="[item_key]">[item_value_translated]</label>

where xx is the code of your language or "default".

So for instance we can have:

   <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
       <data type="array">
                <languageKey index="default" type="array">
                        <label index="user">User</label>
                        <label index="account">Account</label>
                <languageKey index="pl" type="array">
                        <label index="user">U?ytkownik</label>

All translations can be put into language*.xml files in the extension folder itself, but it has the same disadvantages as the old *.php based language system:

  • if you translate labels to your language and then upgrade extensions you will lose your translations
  • you can send your translations to the extension's author so he can put them into xml files, but this is additional work for him (it can be a lot of work if the extension is popular and there are many translators)
  • the language file will get bigger and bigger - for sure it is not good for performance

To prevent these disadvantages the xml system assumes that language files can be placed at Translation Server and after translation being made they can be fetched using Extension Manager and placed outside the extension folder in typo3conf/l10n. With this system translation files are located outside of the extension folder and are no longer a burden to extension's authors. Their extension language files can have only default labels.

If you fetch extension translations from the Translation Server using the Extension Manager then translation files will be placed in the typo3conf/l10n folder. NOTE: You have to empty the folder typo3temp/llxml and remove the .zip files before you use the Extension Manager and update the translations. If you only fetch the new translations in the EM there is no guarantee that they will be used.

Making hardcoded labels translatable

A lot of sys-modules are hardcoded and not translatable yet. The goal is to change that.

notice - Note

You want to help us?

Then go here:


locallang-XML translation tool (llxmltranslate)

You can translate extensions, csh, core and so on on a local TYPO3 installation. Use only this extension, don't add any translation to locallang.xml manually.

Export/Merge options

Before you start: Make sure that you have updated your locallang-files in the Extension Manager to use the most current version. Otherwise you would overwrite changes that have been made in the meantime!

It's good practice to make and test your translation on your local machine or on another own implementation of TYPO3, because you can test and validate the translation results immediately there. That way you can also be sure that no other translator will overwrite your work in the time when you'll go for next coffee cup.

After you finish your job, use the option "Re-generate cached information" and next "Export". In the last step you have to choose all translated files by clicking them with the CTRL-button pressed down. Remember that there are two groups of translation-files for most extensions: The first one is the standard-functionality-translation-file. The second one (placed at the bottom; after the CSH-marker) is the CSH (context sensitive help). Make sure that you choose all files for the extension from both groups and click the export-button. Save the generated file on your HDD.

In the next step, login into the translation server and choose the Merge option from the top select-field. After a page-reload select the language (if it's different from the one you translated), point to the file saved on your HDD for upload and check the "Show only which files are inside" checkbox, to make sure that you are uploading only appropriate files. Then click "Upload merge-file". It's important because if by mistake you'll upload files from other extensions which aren't translated yet on your own machine, you can overwrite the job other translators did!

If you are sure, that the *.ser merge-file contains only the correct files, use the "Upload merge-file"-field again to point the export file, but this time without checking the "Show only which files are inside"-checkbox and upload it once again. After file-uploading is finished, click the "Save" button, choose the "Translate file"-option from the top select-field, choose the extension for which you send the files and use "Re-generate cached information" to finish the merge job.

(feel free to correct this part while you think there're any mistakes in the text)

As member of a translation team

As member of a translation team you should instead just login to the translation server and do the translation work there.


In TYPO3 4.3 we have a "locallang_common.xml"-file which contains all the daily used labels. This file should be used for core and extensions.

The advantages having a file like this are:

  • one place for common labels
  • reduce work for translators (translators don't need to translate 'Yes' for 20th time)
  • keep translation consistent
  • avoid translation failures

What labels does it contain?

Here you can see the labels, which we decided to become part of the file:

How to use it

You can use the labels using the normal syntax to include a language-label: