Translation

From ClaroDevel

Table of contents

Translate Claroline

How to Translate Claroline

Translation and plugin

How to translate a plugin.

As each plugin would be developped separatly than rest of code, The translation can't be done like actually. Each tool can provide the list of used strings. If not, the claroline.net build it. It's possible now as get_lang() call contain en_DEV string, use as model for en_US.

On install, Theses string would be centralised somewhere for translators.

complete contain all translated string from all know plugin and kernel. missing contain all untranslated string from all know plugin and kernel.

Problem.

If two string form two module are the same english type but not same sense, translantion would be different for same translation.

solution 1

A control in get_lang know that $lang['my english string'] can contain a string if translation is same for all case (like actually) or an array if the get_lang would choose.

lang.fr $lang['my english string'] = "Ma chaîne en français";

of

$lang['my english string']['default'] = "Ma chaîne en français"; $lang['my english string']['identifier'] = "Ma chaîne variante en français";

  • default or shared or 0 would exist or the first is use
  • identifier would be build/found by get_lang.

probably based on claro_label.

So with this solution, complete is build with all string from shared lang and module.

This solution still compatible with PLE

<moosh> je  suis  en train de me tirer les cheveux  pour  lang & plugin
j'ai peut-être une idée
$lang['my string']='Ma chaine';
 mais si risque de collision
$lang['default']['my string']='Ma chaine';
$lang['cadreparticulier']['my string']='Ma variante';
default et cadre particulier serait géré par le code central pas par le traducteur ni par l'auteur du script
l'auteur n'utilis que get_lang('my string');
si my string est trouvé dans des sources différentes on le détecte
du coup  par défaut on utilise l'écriture  $lang['my string']='Ma chaine';
mais si le traducteur veut plusieurs versions le système doit 
être capable de générer des identifiant "cadre particulier"
cadre particuilier peut être le claro_label ou carrément le nom du scurpt je c pas encore trop
mais j'aurais  pas le temps de le développer
je réfléchissait à ca   parce que ca m'emmerde d'avoir c 28 langues dans chaque checkout

En fait un créateur d'outil utiliserait des get_lang('foo'). Ca c'est la version la plus simple.

Puis il doit peut être disposer d'une traduction très rapidement. Donc soit on fourni les scripts de mathieur pour générer le missing du module. soit on a un outil claroline.net à qui on envoie le module zippé et qui génère et retourne ces fichiers missing. puis les fichiers missing sont envoyés au service claroline.net de centralisation de tous les missings. Si une même clé est trouvées à plusieurs endroit, ces endroits sont "mémorisés" ainsi le traducteur ne traduit qu'une fois la chaine mais peut savoir où elle est utilisée et s'il estime que la chaine clée doit être traduite de façon différentes selon les cas il peut passer au mode variant.



Développement dans une autre langue

soit get_lang('foo') où foo n'est pas de l'anglais.

foo étant de toute façon considéré comme la langue de secours elle peut-être de n'importe quelle langue. Il est juste TRÈS recommendable de le faire en anglais. Mais il est dommage que cela ne devienne une limite.

On peut très bien imaginer que ce soit fait en espagnol. pour un développement initialement "local"

On traduit alors à partir de l'espagnol. mais ne priorité on traduit vers l'anglais. et le jour ou l'anglais est fini on peut faire passer le script et les traductions disponibles dans une moulinette qui changera les chaines "clés" par les valeurs de la traduction anglaise.

Translation refactoring

This Work has done for claroline 1.8. All is described on Translation refactoring page

Claroline translation tools

Translating Claroline in your own language or adapt the official translation to your specific needs is a common need. The complete procedure is describe in the wiki documentation of Claroline here (http://www.claroline.net/doc/en/index.php/How_to_translate_1.6_%3F). Most of what you have to do is to edit a text file containing the sentences to be translated, taking the english version as the reference. To edit those text files of Claroline in a very easy way, you can use the following adapted tools that the Claroline user community recently set up :


PhpLangEditor (Author : Sébastien Piraux)

Screenshot of PhpLangEditor
Enlarge
Screenshot of PhpLangEditor

PhpLangEditor is a Mozilla/Firefox extension, it require one of these browsers but this way it can work on any operating system where Mozilla or Firefox can be installed.

Informations, download, manual and source code can be found at Mozdev : phplangeditor.mozdev.org .

Here is some additionnal tips for the translation of Claroline using this tool :

  • Use the english complete lang file as Source file.
  • There is different ways to use Translation file
    • Use it to open another complete lang file to prefill the translation form to help you in your work.
    • Use it to open an existing translation to complete.
    • or ... don't use it, opening a translation file is not required.