2009
03/05

Les fichiers .po et .mo sont utilisés pour la réalisation d’applications multi-langues Open Source. Ces fichiers ne servent en general qu’à l’affichage de texte dit "statique" (invariable). Le texte dit "dynamique" est stocké dans une base de données.
Ce programme permet de manipuler les fichiers de langues au format .po et .mo directement depuis votre site sans utilisation d’éditeur externe tel que "poedit".

17 Responses

Nicolas

Hi, I found you add/edit window really cool, I went to the ThickBox web site, but I can’t figure out how this work.
Could yo explain me how to implement ADD/EDIT window modal ?
I mean, how many files doI need ? a controler ? where do you html input fields ?

Best regards
Nicolas

admin

Hi Nicolas,

All what you want is in the file: cmsadmin/cmslanguages.php

The top buttons call the javascript function “action()” with parameter bcaction: ‘edit’, ‘add’,'delete’.
From “action()” you can call “tb_show()” to open the ThickBox.

I hope that will help you.

Jonas

Hello,

Ce programme semble être exectement ce que je cherchais pour un projet libre (http://gcweb.web4me.fr/) mais sous quel licence est-il ?

This program seems to be exect what I was looking for a free project (http://gcweb.web4me.fr/) but under what license is it?

Tanks !

admin

Salut Jonas,

Tant que c’est dans un but non lucratif tu peux l’utiliser:
http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

Tiens moi au courant de l’avancement de ton projet.

A bientot

Jonas

J’ai finallement trouvé dans /cmsadmin/cmslanguages.php que le logiciel était sous licence GNU/GPL dans /cmsadmin/cmslanguages.php et sauf erreur la GNU/GPL autorise l’utilisation pour but lucratif !

Mais je ne revennais pas pour ça :D mais pour dit que mon navigateur internet (epiphany-webkit) n’envoie pas la vaiable $_SERVER[”HTTP_ACCEPT_LANGUAGE”]

> Notice: Undefined index: HTTP_ACCEPT_LANGUAGE in /…/cmsadmin/cmslanguage.php on line 41

J’ai donc ajouter juste avant
> if (!isset($_SERVER[”HTTP_ACCEPT_LANGUAGE”]))
> $_SERVER[”HTTP_ACCEPT_LANGUAGE”] = ‘eng’;

Un autre truc, le script “google translate” ne fonctionne que si le programme est écrit en anglais, je suis allé modifier le code pour changer cella mais se serait pas mal d’avoir ça dans un fichier de config ;).

En tous cas merci pour ce petit logiciel, je vais retirer quelques boutons (Supprimer …), mettre un système de backup (en cas de vandalisme) et mettre ton petit programe en place ;).

admin

Salut Jonas,

Ok, merci pour tes remarques, je vai tester tout cela et mettre le programme a jour.

Concernant “google translate”, j’ai considere que la langue par defaut est toujours l’Anglais.

Jonas

J’aurais encore quelques demandes :D mais plus compliquées à mettre en œuvre :-/.

* Avoir une couleur d’arrière plan qui change en fonction de l’état de traduction (vert quand c’est ok, rouge quand non traduit et … orange quand c’est une traduction approximative¹)
* Avoir des boutons qui permettent de filtrer les chaines non traduite et/ou les traductions approximative¹ .
* Une barre représentant l’état des traductions (%traduit, %approximatif¹, %non traduit) un peu comme sur https://translations.launchpad.net/ubuntu/jaunty/+lang/fr

Je suis conscient que c’est du boulot, mais comme c’est le seul outils de traduction en php que j’ai trouvé (grâce au forum de framasoft). Enfin … faut voir ces idées comme des évolutions future possible ;-).

—-
¹) petite note car je ne comprend pas comment poedit fait pour savoir quels sont les traductions approximatives et terminées.

admin

Salut Jonas,

Merci pour tes remarques judicieuses.
Je vais reflechir a ta proposition de barre de progression.

Pour ce qui est de “l’etat” de traduction des elemements pris separement, il n’y a rien qui permette de l’enregistrer si ce n’est eventuellement en tant que commentaire. Et je crois qu’une colonne supplementaire avec une icone pourrait etre peut-etre mieux convenir. Mais je n’ai pas prevu de travailler sur cela a court terme.

Cyd

Bonjour,

Merci pour ce programme. Mais j’ai du mal à voir comment il peut être intégrer à un projet. En effet, dans la config, rien ne permet de paramétrer l’emplacement et la forme des fichiers à traduire.

Ainsi, les fichiers sont dans /includes/locales/$languageAbbrev/LC_MESSAGES/ alors que je voudrais lui indiquer, par exemple, de prendre ABSPATH . “../rep/langues” pour aller cherche le fichier que je souhaite (prenons original.pot) et faire les fichiers de trad dans le même répertoire, sous forme $languageAbbrev.po et .mo.

admin

Cyd,

J’ai utilise cette arborescence pour rendre le programme compatible avec la librairie “gettext” :
http://us.php.net/manual/en/book.gettext.php

Ainsi il est possible soit d’utiliser les fonctions de la librairie “gettext” qui d’apres la la literature semble etre la solution la plus performante pour les versions recentes de php ou soit d’inclure dans son code des fonctions dediees a la traduction :
http://savannah.nongnu.org/projects/php-gettext/

bgouban

Superbe application web, vraiment du beau boulot. Une adaptation en plugin wordpress ferait des centaines d’heureux ! Bonne continuation

admin

bgouban,

Ce plugin existe deja d’ailleur je m’en suis inspire pour creer ce programme :
http://www.code-styling.de/english/development/wordpress-plugin-codestyling-localization-en

Robert

Je viens de trouver cette application aujourd’hui cherchant les principes de création des sites multi-langues.

Super application et merci pour l’effort.

Par contre j’ai 2 petits soucis faisant les tests plus un avertissement :

Contexte : Linux - Ubuntu 9.04 - PHP 5
- dans class-translationfile-extends.php à la ligne 400
la commande split() affiche un avertissement en php 5 car cette commande n’est plus correcte - à utiliser enreg_split() ou explode() - de préférence explode car enreg_split affiche un autre avertissement
* j’ai remplacé split() par explode()

- lors de la création d’un nouveau fichier language chaque ligne traduite dans le nouveau fichier contient les “{” et “}” au début et à la fin de la chaine.
* je ne sais pas où trouver le code en erreur, donc un peu plus génant sauf de modifier toutes les lignes manuellement

- lors de l’édition d’un fichier .po avec le programme Poedit (référence Linux) impossible de lire le contenu du fichier .po sauvegardé avec Poedit. L’écran de l’application de contient pas de ligne…
* je ne trouve pas de solution pour récupérer le contenu .po avec votre application (la seule est de restaurer les fichiers .po téléchargés depuis votre site

Voila ma problématique, dont la réutilisation des fichiers .po existants (ou sauvegardés avec Poedit) pose le problème majeur

Cordialement

Robert

En fait il ne reste que le problème d’ajout de “{” et “}” aux lignes traduites lors de la création d’un nouveau fichier langue sur la base d’un fichier existant.

Le problème de lecture des fichiers sauvegardés avec Poedit est liée à ma mauvaise configuration… désolé

admin

Robert,

tu peux supprimer les accolades a partir du fichier:
class-translationfile-extends.php

remplace:
$this->listItems[$i][3] = ‘{’ . $this->listItems[$i][1] . ‘}’;
par
$this->listItems[$i][3] = $this->listItems[$i][1];

c’est dans la function “duplicate_language_file” a la ligne 510 environ

admin

J’ai corrige quelques bugs et mis une nouvelle version en telechargement (v1.1)

Cyd

Merci pour les précisions données plus haut… et pour la nouvelle version.

Leave a Reply