codeur:module:multilangue

Ceci est une ancienne révision du document !


Traduction

Les modules de NPDS peuvent être codés de manière à fonctionner en plusieurs langues. En fait, ce tutorial relève plutôt d'une technique de codage plutôt que d'une fonction de NPDS, mais il peut vous être utile si vous souhaitez créer un module multilangue. DELETEMEEt si c'est le cas il doit comprendre le support utf-8 qui est indispensable pour la plupart des langues.

Ce tutorial suppose donc que vous ayez des connaissances en PHP.

Créer un dossier “lang” dans le dossier de votre module. Ce dossier contiendra les différents fichiers de traduction.

Nous vous conseillons de créer un fichier pour chaque langue, et dans chaque fichier déclarer une fonction de traduction. Attention le nommage de cette fonction peut poser problème aussi assurer vous de lui attribuer un nom unique en utilisant un préfixe (court) faisant référence au module exemple : geo_translate, gal_translate, mod_translate, quiz_translate …

* Règle de nommage des fichiers langues : à ce jour le nom du fichier lang doit être le nom de la langue en anglais ex : french, spanish, chinese…etc suivi de l'extension .php un préfixe (court) faisant référence au module

Exemple: fichier /modules/monModule/lang/english.php

<?php
/*********************************************************/
/* Fichier permettant de traduire mon module en anglais  */
/*********************************************************/
function mod_translate($str) {
    switch($str) {
        case 'Bienvenue': $tmp='Welcome'; break;
        case 'Au revoir': $tmp='Good bye'; break;
        default: $tmp='Translation undefined: <b>'.$str.'</b>'; break;
    }
   if (cur_charset=="utf-8") {
      return utf8_encode($tmp);
   } else {
      return ($tmp);
   }
}
?>

Exemple 2: fichier /modules/monModule/lang/french.php

<?php
/********************************************************/
/* Fichier permettant de laisser mon module en français */
/********************************************************/
function mod_translate($str) {
if (cur_charset=="utf-8") {
    return utf8_encode($str);
 } else {
    return ($str);
 }
}
?>

Il est important de noter que le fichier french.php ne contient en fait aucune traduction puisque la langue des messages se trouvant dans le code PHP de votre module est le Français (logique donc).

Ensuite, il faut appeller le fichier de traduction en fonction de la langue de votre NPDS. Cette langue est récupérable via la variable $language.

Un exemple est peut-être plus explicite qu'une longue explication.

Exemple: fichier /modules/monModule/maPage.php

<?php
/*******************************************/
/* Mon module qui dit bonjour et au revoir */
/*******************************************/
if (file_exists('modules/'.$ModPath.'/lang/'.$language.'.php')) {
include_once('modules/'.$ModPath.'/lang/'.$language.'.php');
}
else {
include_once('modules/'.$ModPath.'/lang/french.php');
} 
 
include('header.php');
echo mod_translate('Bonjour').'<br />';
echo mod_translate('Au revoir');
include('footer.php');
?>

La condition : if (file_exists()), est nécessaire pour éviter la génération d'une erreur php en cas d'absence du fichier langue demandé.

  • codeur/module/multilangue.1733996745.txt
  • Dernière modification : Dec. 12, 2024 09:45 AM UTC
  • de jpb