Translations
From TYPO3Wiki
| List Projects | The TYPO3 Core & Extensions Translation-project list pages | See Current Project Members, Wishlist |
| you can help if you like! |
Contents |
Wishlist
- We need a clear documentation on translation process, workflow, translation server access and work in progress.
- Some more active team members. Translation is important!
- One page per language to see current work, and contact information.
- Translation Guidelines, common vocabulary (ex. for french "Template" -> "Gabarit", and nothing else)
- ONE clear solution to share the translation work on extension (translation server support only core translation, or a small subset of extensions)
Translation Teams
Translation teams have been formed for the following languages:
- Bulgarian
- Czech
- Dutch
- French
- Galician
- German
- Hebrew
- Hungarian
- Latvian
- Polish
- Russian
- Slovak
- Spanish
- Swedish
- Japanese
To facilitate broader acceptance of TYPO3 in the world we would very much like to see translation teams for all of the six UN languages:
If you would like to become a member of a translation team, please contact the chief translator for your language. If your language does not yet have a translation team, then there's an opportunity for you to become chief translatror ;-).
If your language is missing and you are one of translators, please create it.
With this code you can add the team-header for a new page:
{{DesignProject|Translations|TYPO3 Core & Extensions Translation|Translation}}[[Category:Translation]]
Proposal for translation workflow
There are 3 different group of users:
- chief translator
- core translators
- Extension Manager translators (EM translators)
The task for "chief"
- adding new translators
- having a final decision in translation conflicts
- removing translators that do not follow common terminology
- setting the common terminology
- normal task that belongs to "core translator"
[add your proposal here]
The task of "core translators"
- translate the core and extensions that are at translation sever
- setting the common terminology
- accepting (merging) translations sent by normal user (EM translators) through Extension Manager
[add your proposal here]
The task of "EM translators":
- Just translate the extension or missing (new) labels of existing translation and click "SEND/SHARE"
- respect the common terminology (?)
[add your proposal here]
Based on "process of translating TYPO3 (core and extensions)" by Kasper
Translation process
If there is some part of the core not translated and you would like to translate it ask for the login and password. Write email to chief translator of your language. The chief will give you access to the translation server on which you can do you translation work.
Extensions available for translation
Since new TER 2.0 translation server is not only a place to translate core TYPO3 language files. We can also translate extensions there. Right now only manually added extension can be translated. Take a look at the currently installed extensions. If your extension is not on the list and you would like it to be, please contact your chief translator.
Using llxmltranslate
locallang-XML Translation Tool is a backend module which enables users to edit 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! Some terms that lie close to the heart of TYPO3 should not be translated to facilitate the reading of the English (official) documentation.
| don't translate these terms | ||
| English | Comments | Author |
| TypoScript | dfeyer | |
| TemplaVoilà | dfeyer | |
| RTE | dfeyer | |
| Backend | king76 | |
| Frontend | king76 | |
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.
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.
create new external file
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.
After saving, translations from the original local language file will be moved into typo3conf/l10n language files.
translate 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.
The image on the right shows what it looks like when you are done translating. All labels are green. Good job!
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.
- in the extension folder
- 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" ?>
<T3locallang>
<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>
</meta>
<data type="array">
<languageKey index="default" type="array">
<label index="[item_key]">[item_value]</label>
</languageKey>
</data>
</T3locallang>
It must contain at least definition of default labels. Then there can go translation of default labels into:
<languageKey index="xx" type="array">
<label index="[item_key]">[item_value_translated]</label>
</languageKey>
where xx is code of your language.
So for instance we can have:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3locallang>
<data type="array">
<languageKey index="default" type="array">
<label index="user">User</label>
<label index="account">Account</label>
</languageKey>
<languageKey index="pl" type="array">
<label index="user">U?ytkownik</label>
</languageKey>
</data>
</T3locallang>
All translations can be put into language*.xml files in extension folder, but it has the same disadvantages as the old *.php based language system:
- if you translate labels to your language and then upgrade extension you will lost your translation
- you can send your translation to extension's author so he can put it into xml files, but this is additional work for him (it can be a lot of job 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 issue
To prevent that disadvantages the new system assume that language files can be placed at Translation Server and after translation being made they can be fetched using Extension Manager and placed outside extension in typo3conf/l10n folder. With the new system translations files are outside extensions 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 Translation Server using Extension Manager then translations files will be placed in typo3conf/l10n folder. NOTE: Even if you fetch the translation it doesn't mean that that they will be used at once. You need to tell TYPO3 that it has to use translation files from typo3conf/l10n folder. The rule is that if there is no translation at all in language file inside extension folder then the external file from l10n folder is used. There can't be even definition of language.
So you need to remove:
<languageKey index="xx" type="array">
<label index="user">U?ytkownik</label>
</languageKey>
or even empty language definition:
<languageKey index="xx" type="array">
</languageKey>
from locallang*.xml files in extension folder.
This can be done manually or you can use special extension for that: llxmltranslate.
Making hardcoded labels translateable
A lot of sys modules are hardcoded and not transable yet. The goal is to make this translateable. Here comes a few thoughts about this issue:
- add new language labels allowed in stable, dev and trunk versions
- change existing labels allowed in dev and trunk versions
llXML
The only one solution to translate extensions, csh, core, on a local Typo3 installation. Use only this extension, don't add any translation to locallang.xml (only default english version), use langage pack (> 4.0)
- locallang-XML translation tool (llxmltranslate) (contact: kasper)
Wiki upload
There was a time when the translation server did not work so well as it does now. The possibility exists to upload language files to the wiki for all to download.
Example-uploads in this wiki:
- Media:UPLOAD-test-locallang.xml
- Media:pear-Llxml_merge.fr.20070711231247.ser
- Media:Pear-locallang-and-ser.zip
Write "Media:" as prefix:
[[Media:UPLOAD-test-locallang.xml]]
[[Media:UPLOAD-test-locallang.xml| pear]]
Proposal for a locallang_common.xml
It would be fine, if there was a "language_common.xml"-file which contained all the daily used labels [Yes, No, Cancel,.....]. This file should be accessible for core and extensions.
The advantages having a file like this are:
- one place for common labels
- reduce work for translators (translators needn't translate 'Yes' for 20th time)
- keep translation consistent
- avoid translation failures
Labels which should go into this file
| Label | Label variable | Occurrence | Comment | Author |
| Yes | common_yes | Martin Kutschker | ||
| No | common_no | Martin Kutschker | ||
| OK | common_ok | Martin Kutschker | ||
| Cancel | common_cancel | Martin Kutschker | ||
| Open | common_open | Martin Kutschker | ||
| Close | common_close | Martin Kutschker | ||
| About | common_about | Martin Kutschker | ||
| Help | common_help | Steffen Kamper | ||
| Up | common_up | Steffen Kamper | ||
| Down | common_down | Steffen Kamper | ||
| Left | common_left | Steffen Kamper | ||
| Right | common_right | Steffen Kamper | ||
| Move | common_move | Steffen Kamper | ||
| Edit | common_edit | Steffen Kamper | ||
| Save | common_save | Steffen Kamper | ||
| Delete | common_delete | Stefano Kowalke | ||
| View | common_view | Steffen Kamper | ||
| common_print | Steffen Kamper | |||
| Reload | common_reload | Stefano Kowalke | ||
| Login | common_login | |||
| Logout | common_logout | |||
| Ascending | common_ascending | Stefano Kowalke | ||
| Descending | common_descending | Stefano Kowalke | ||
| Category | common_category | Stefano Kowalke | ||
| Search | common_search | Stefano Kowalke | ||
| More | common_more | |||
| Details | common_details | |||
| Upload | common_upload | |||
| Download | common_download | |||
| Send | common_send | |||
| Back | common_back | Henry Avellaneda | ||
| Next | common_next | Henry Avellaneda | ||
| Previous | common_previous | Henry Avellaneda | ||
| Go | common_go | Henry Avellaneda | ||
| Go To | common_goTo | Henry Avellaneda | ||
| Submit | common_submit | Henry Avellaneda |
