Développement web

GCweb
Interface web permettant de mettre en ligne des collections GCstar.

Plugin Dotclear
Extensions pour ce moteur de blog.

Outils pour webmaster

Divers

Archives

Petites applications

Divers

  • CoverLink
    Créer des liens “cover.jpg” reconnu par la plupart des lecteur dans votre collection musical.
  • Envoie ftp
    Envoyer sur un ftp et insérer facilement vos images dans un forum.

po2phparray.py

J'ai eu besoin pour GCweb d'un utilitaire permettant de convertir les fichiers .po en dictionnaire compatible fonctionnant sur le même principe.

po2phparray.py à été développé et testé sous GNU/linux et devrait fonctionner sous toute plateforme avec python d'installé.

Téléchargement ?

Comment faire ?

Adaptation du code

Les chaines traductrice du script php doit, comme pour gettext, être marquée par une fonction. Par exemple ”__

__('chaine à traduire'); //chaine à traduire entre apostrophe, le script n'a pas été fait pour fonctionner avec les guillemets

Faites une extraction des chaines avec les outils de gettext.

Utilisation des outils gettext

Création des fichiers pot :

xgettext -k__ -kN__ --from-code UTF-8 <file>.php -o <file>.pot --no-wrap #création du fichier pot
  • -k__”, ”-kN__” spécifie le nom la fonction de marquage (différent que celui par défaut de gettext)
  • –no-wrap” Est obligatoir, si les fichiers po on des retours à la ligne en plus de ceux du script php ça ne fonctionnera pas !
  • –from-code UTF-8” si votre code est écrit en UTF8 !

Création/mise à jours des fichiers po

msginit -i <file>.pot -o <lang>/<file>.po       #Création
msgmerge -U <lang><file>.po potfile/<file>.pot  #Mise à jour

Utilisation de po2phparray.py

Une fois que vous avez traduit les fichiers po :

po2phparray.py file.po > file.php

Le fichier contient un code qui complète un dictionnaire php nommé $lang. Ce dictionnaire doit donc être définit en ammont !

<!-- file.php -->
<?php
$lang = array_merge($lang, array(
'chaine à traduire'
 => 'chaine traduite',
'autre chaine à traduire'
 => 'autre chaine traduite'
))
?>

Exemple de code

<?php
//l10n
$lang = array(); //Definition du tableau $lang
include diname(__FILE__).'locales/'.$conf['lang'].'/domaine.php' ;
     // $conf['lang'] : langue de l'utilsateur
     // domaine.php :   fichier créer par po2phparray.py
 
function __($str,$comment='') {
    global $lang;
    if (isset($lang[$str]))
        return $lang[$str];
    else
        return $str;
}
 
/*** votre code avec les chaines traduisible sous la forme __('votre chaine') ***/
?>
 
 
po2phparray.txt · Dernière modification: 15/01/2010 12:%i (modification externe)
 
Creative Commons License Valid XHTML 1.0 Valid CSS Powered by PHP Driven by DokuWiki Driven by DokuWiki