Skip to main content Help Control Panel

Login   A+   A-

Development «   Development blog «  

Fichier langue [7.1]

Bonjour et félicitations pour votre travail. Je suis développeur web et apprécie d'autant plus la qualité de votre programmation ainsi que la pertinance de certains des concepts. J'aurais une question à propos d'un de vos choix : pourquoi avoir inséré les textes en dur dans tous les programmes php avec un test de langue, en lieu et place de tout regrouper dans un fichier langue ? Il me semble que la translation dans d'utres langues ainsi que l'adaptation des libellés aux règles de chacun en aurait été simplifié. Merci

2- GnapZ on May 21 2006

Bonjour et bienvenue dans le monde de Yacs.

Effectivement, c'est un sujet important et délicat. Il y a une discussion en cours là dessus dans les articles International et site multilingue. Rien n'est encore sûr à ce sujet.

4- GnapZ on May 21 2006

Gmcms : Vous semblez bien connaître PoEdit alors pourquoi ne pas nous faire une petite doc là dessus ? Ce pourrait faire avancer le sujet multilingue. J'avais jetté un oeil sur PoEdit mais je n'avais pas trouvé ça "logique". Il me manquais certainement une explication sur son utilisation. Merci.

6- Fernand on May 22 2006

Gmcms : C'est tout simplement passionnant.
Merci, et encore merci...
Bernard est à la fois le leader technique et le fondateur de YACS. C'est lui qui vous répondra explicitement et vous présentera par la même occasion les évolutions possibles sur ce sujet.
Il est actuellement en déplacement, autrement il vous aurait déjà répondu depuis longtemps (c'est la raison pour laquelle je joue ici les standardistes)... J'ai donc envie de dire:Surtout, restez en ligne.
Vous êtes chaleureusement bienvenu parmi nous. (Nous apprécions hautement que vous appréciez YACS).

7- Bernard on May 22 2006

Gmcms: Un très grand merci pour ces explications lumineuses, qui donnent envie d'aller plus loin. Il faudrait maintenant trouver une façon standard d'intégrer tout ceci dans YACS. Quelques idées, suggestions, voire un ou deux bouts de code adaptés à gettext ? Merci par avance pour la suite...

8- Vinc on May 23 2006

En un mot : bravo. Deux question subsistent :

1.       La recherche d’une autre solution que le stockage de texte dans le code est-il admis ?

2.       Le texte sorti du code peut-il contenir du PHP à exécuter ?

 

1.       Nous avions échangé en mars des impressions à ce sujet au mois de mars avec Bernard par e-mail. Il m'a convaincu depuis d'utiliser le forum.  J'espère qu'il ne m'en voudra donc pas de le citer ici car ce qu’il dit me paraît toujours juste sur certains points...et éclaire la situation actuelle.

 

Bernard: "En ce qui concerne le multi-linguisme, le problème à résoudre n'est pas tant la sélection des chaînes de caractère, que YACS gère déjà comme vous le savez, que le stockage de ces chaînes. Jusqu'à présent, j'ai évité la mise en base de données,ou en fichier extérieur, parce que le web est une interface très riche sur le plan textuel, beaucoup plus que les applications traditionnelles (dialog box Windows ou Java), et qu'il m'a paru important de bénéficier à plein de la flexibilité permise par le scripting PHP. D'où le choix de laisser les chaînes dans les scripts qui les utilisent, au risque de redondances.
 
L'élément qui manque réellement est un outil d'extraction de ces chaînes pour les présenter de façon conviviale à des traducteurs éventuels. Au départ je pensais que les traducteurs arriveraient à rentrer dans le code PHP directement, mais ça ne marche pas. En projet : un script qui fasse de l'analyse syntaxique des sources pour repérer les chaînes $context['label_en'] et qui liste tout ce qu'il y a derrière. Les traducteurs auraient ainsi un fichier unique à manipuler, libre aux développeurs de ré-insérer les chaînes traduites au bon endroit. Mais ceci est une autre histoire..." 
 

En conséquence de quoi, j' 'avais proposé à Bernard un fichier langues qu'il a placé à l'adresse suivante.  Ce fichier correspond à la version 6.3.1. je ne l'ai pas mis à jour car je ne vois pas à quoi il servirait sans méthode d’utilisation en aval. 

 

Or, je ne voyais jusqu'à aujourd'hui pas comment l'exploiter, ce que semble proposer merveilleusement Gmcms (?). Ce système semblerait en tout cas résoudre le problème de la convivialité du mode d’édition.  

2.        Il faudra tout de même vérifier que le calcul de la valeur chaîne se fait au moment de son appel sans quoi le php ne pourra pas intégrer, notamment, les skin et les valeurs propres à l'environnement au moment de l'affichage de la page, par exemple, la chaîne suivante :

//EN         error.php: 31

                $local['text_en'] = Skin::build_block("Check the adress", 'title')

                               ."Normally we are not using upper case letters, and no spacing sign.\n"

                               .Skin::build_block("Update your bookmark", 'title')

                               .'It is likely that we have changed the content of this site without warning you.'

                               .' Thank you for browsing '.Skin::build_link($context['url_to_root'], 'the site front page', 'shortcut').' and to refresh your bookmark.'."\n"

                               .Skin::build_block("Search this site", 'title')

                               .'Type one or several words in the searching form. Then hit Enter.'."\n"

                               .Skin::build_block("Browse shortcuts", 'title')

                               .'Index of '.Skin::build_link($context['url_to_root'], 'articles', 'shortcut').','

                               .' '.Skin::build_link($context['url_to_root'], 'files', 'shortcut').' and '.Skin::build_link($context['url_to_root'], 'links', 'shortcut')

                               .' will show you instantaneously the freshest pages and the most read pages on this site.'

                               .' This can be an efficient way for you to reach the adequate page.'."\n";

 

Si j’analyse cette chaîne de caractères, je vois plusieurs difficultés:

1.       la concaténation qui pourrait être contournée par la possibilité d’avoir plusieurs lignes dans le fichier .po

2.       les fonctions du type skin ::build_block(…) et skin ::build_link(…)

3.       la réutilisation de chaînes plus ou moins récemment calculées telles que  $context['url_to_root']

 

L’ordre des éléments composant une phrase n’est pas toujours le même d’une langue à l’autre. Par conséquent, je suis assez d’accord avec le fait que les traductions fassent partie du code, à moins de se contenter de phrases et d’éléments contextuels moins riches, comme le dit très justement Bernard.

 

Si effectivement ce genre de difficultés peuvent être contournées par une assignation dynamique de noms de variables (c’est le cas en PHP) et par un appel dynamique de fonctions telles que décrites ci-dessus, alors , je rêve. Est-ce le cas ?

 

Si ce n’est pas le cas, il faudra décortiquer chaque chaîne faisant appel à une fonction PHP et reconstruire ces chaînes préalablement à leur appel.

Je veux bien collaborer à répertorier les lignes de codes à traduire pour les nouvelles versions.

 

Serait-ce un tournant pour la traduction de ce superbe CMS ?

 

11- Cloubech on May 23 2006

personnellement je verrais l'utilisation d'une base de données spécifique par langue et des fonctions qui accèdent aux messages en fonction d'un numéro. je m'explique : la base par défaut contenant les messages applicatifs en français serait dbfr (par exemple). la base pour l'anglais serait dben. On accéderait aux messages par plusieurs fonctions selon le type du message. Par exemple aff_mess(210) affiche le libellé correspondant au numéro 210 dans la langue en cours. aff_err(230) affiche le message d'erreur correspondant au numéro 230.

Au lieu d'utiliser plusieurs base de données on peut utiliser plusieurs tables préfixées par le code langue.

voilà quelques idées...

13- Vinc on May 27 2006

Pour info seulement, et afin de se faire une idée du script d'extraction à réaliser pour trouver assez facilement la plupart des occurences de texte, il est possible de réaliser une recherche de texte simultanément dans tout le répertoire yacs au moyen d'un simple éditeur de texte en java: jedit.  On recherche simplement les orrurence du texte  _en']  dans tous les fichiers php du répertoire yacs. Rechercher _fr'] donne la ligne qui suit fin du texte en anglais, la plupart du temps.

14- Bernard on May 27 2006

Gmcms: Hmm, je crois que YACS se rapproche pas mal du modèle idéal proposé en fait. Les scripts remplissent des variables, et c'est un fichier de template qui effectue la transformation en XHTML, et qui lie les styles css. La différence notable par rapport à d'autres CMS, c'est que le système de template de YACS est basé seulement sur PHP, pour éviter l'apprentissage d'une syntaxe particulière type .tpl.

15- Tof on June 3 2006

Hello again

J'allais poser une question sur le multi-langue mais je vois que le sujet est déjà chaud, tant mieux !

Je vais développer bientôt un site marchand. Je pense toujours le baser sur Oscommerce, car justement le point d'achoppement principal qui m'empêche d'utiliser Yacs est la gestion du multi-langue (les autres problèmes, gestion de caddie, etc pourraient être résolus par ma pomme et intégrer à Yacs, mais je ne pense pas en avoir le temps pour ce site).

Le problèmes est tout bête, le site s'adresse à l'international, donc gestion anglais, espagnol, allemend, et peut-être chinois bientôt...

Or effectivement, le codage en dur fait dans yacs ne gère que le français et l'anglais, et aucune interface ne propose la traduction en ligne.

Personnellement, le modèle oscommerce me paraît très adapté d'un point de vue administration.

D'un point de vue programmation, je ne sais pas ce qu'il y a derrière pour l'instant, mais j'ai par contre eu l'occasion de rentrer dans d'autres outils open-source multi-langues qui sont pas mal fait de ce côté là.

egroupware est un bon exemple, à part l'outil de traduction qui est un peu complexe. dolibarr est pas mal non plus...

je parle du codage pour le programmeur, pas de la sauce qu'il y a derrière.

En tout cas, ce sujet m'intéresse...


Tof

16- Bernard on June 3 2006

Tof: l'approche gettext est sans doute à privilégier pour l'avenir, mais j'attend toujours une preuve de faisabilité. Saurais-tu rédiger un script de démo pour la translation à la volée ?

19- Tof on June 7 2006

Gmcms :

Merci beaucoup pour ce lien, je vais étudier ça de plus près. Jusqu'à présent, j'avais plutôt regardé du côté de la Creload http://www.creloaded-fr.net/ que je trouve complète mais dure d'accès.


Tof

20- Fernand on June 7 2006

Gmcms et Tof : Et zen-cart le bien nommé, qu'en pensez-vous ? Ont-ils progressé au niveau traduction en français ? J'ai l'ipression que oui, non ?!
Depuis le temps que je n'ai pas été farfouiller là-dedans ! Hummm...
(c'est l'un des forks en question)

Rate this page
Posted by Gmcms on May 20 2006, edited by Fernand on May 20 2006, (popular)