[RESOLU] Questions pour site multi langues

Eléphant du PHP | 418 Messages

14 janv. 2013, 20:58

Salutation à tous

J'ai actuellement le projet de reprendre un site déjà fonctionnel et mit en prod, et ce afin de le moderniser dans ses balises et ses codes php et js.

Je compte aussi faire qu'il soit multi langue, j'ai déjà consulter nombreux tutos, mais chacun à plus ou moins sa façon de faire.
J'ai retenu cette façon de procéder, mais je pense que c'est améliorable, bien que déjà bien évolué.

Je me demandais pour améliorer cette façon de procéder, que pensez vous du système de template?
Si vous trouvez cela adapté, connaitriez vous un moteur template facile à gérer et mettre en place sur un site déjà existant?

Merci pour votre aide

Cordialement

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 janv. 2013, 23:23

salut,


Le principe de changement de langue est simple et efficace reste a voir comment fonctionne ton site à la base :)

Ensuite le fait d'avoir une pléiade de variable ça c'est autre chose (attention aux collisions ;) )

Si tu veux quelque chose d'un peu plus robuste il peux être préférable d'imaginer un système différent (et plus complexe).

Par exemple utiliser un tableau par langue avec l'index qui te sert pour récupérer le bon texte.

tu peux imaginer un système a base de fichier xml, ini (ou autre) qui vont contenir les traductions et une classe utilitaire qui a charger le fichier et te fournit l'info quand tu as besoin.

Le tout est, bien sur, à adapter au code existant (par exemple ajouter de la poo dans un code procédural peux p'tet faire "tâche" mais n'est pas a exclure ;) ).



@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 418 Messages

14 janv. 2013, 23:38

Le principe de changement de langue est simple et efficace reste a voir comment fonctionne ton site à la base :) .
Mon site fonctionne un peu à la manière barbare Oo, c'est à dire une page index, qui inclus les autres pages en fonction de l'url (c'est simple, efficace mais pas réellement optimisé, et les temps de chargement peuvent être lourd si on gère mal).
Ensuite le fait d'avoir une pléiade de variable ça c'est autre chose (attention aux collisions ;) )
oui c'est vrai, j'ai rajouter un "$lang_" dans les variables pour éviter les conflit avec les variables internes, et les noms sont excessivement long mais on vois tout de suite c'est à quelle page qu'elle appartient, et sa fonction (ex: $lang_accueil_message_bonjours ^^).
tu peux imaginer un système a base de fichier xml, ini (ou autre) qui vont contenir les traductions et une classe utilitaire qui a charger le fichier et te fournit l'info quand tu as besoin.
Je connais pas trop le xml, et pas du tout les .ini
Afin de m'aider à voir ce principe, aurais tu de bons tutos à proposer? ou un exemple que tu aurais fait? (je vais rechercher de mon côté tout de même ^^)

Merci beaucoup

Cordialement

ViPHP
AB
ViPHP | 5818 Messages

15 janv. 2013, 01:00

Il y a aussi l'alternative de mettre tes traductions en bdd

Eléphant du PHP | 418 Messages

15 janv. 2013, 01:24

Oui c'est pas faux, mais vive la crise ^^

J'ai au moins 50 fichiers Oo sachant que je sépare l'affichage des requêtes.

Mais dans l'idée ça peux le faire, mais faut voir niveau perf ^^

Merci beaucoup

Cordialement

Eléphant du PHP | 120 Messages

15 janv. 2013, 19:12

Il y a aussi l'alternative de mettre tes traductions en bdd
C'est une alternative qu'on peut recommencer pour des petits sites avec peu de trafic.

Mais quelle que soit la façon dont on le fait, il ne faut pas faire un truc statique. Il faut permettre de remplacer des textes comme "Vous avez X nouveaux messages". Mettre des pluriels, des singuliers. Tout ça n'est pas évident à implémenter ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 janv. 2013, 20:19

Je connais pas trop le xml, et pas du tout les .ini
Afin de m'aider à voir ce principe, aurais tu de bons tutos à proposer? ou un exemple que tu aurais fait? (je vais rechercher de mon côté tout de même ^^)
Pour XML je te laisse le soin de regarder sur Google ;)

Pour le fichier ini regarde ton php.ini ;)
Pour l'utilisation j'aime bien les outilsn de zend framework (utilisable sans tout le truc).

Tu peux aussi imaginer un système équivalent au properties de java.

Pour le côté performance un système de cache est assez recommandé ;)

@+
Il en faut peu pour être heureux ......

ViPHP
AB
ViPHP | 5818 Messages

15 janv. 2013, 20:57

Il y a aussi l'alternative de mettre tes traductions en bdd
C'est une alternative qu'on peut recommencer pour des petits sites avec peu de trafic.
Après pour la montée en charge ça dépend aussi de comment on organise le code et de ce qu'on appelle "petit".

J'ai implémenté cette solution sur un mutualisé avec un site qui fait plusieurs centaines de pages et plusieurs milliers de visiteurs journaliers et les mesures google de temps de chargement d'une page indiquent qu'ont est plus rapide que 80% par rapport à la moyenne.

On est bien d'accord que ce n'est pas la méthode la plus optimisée en termes de performances brutes mais c'est juste pour donner un ordre d'idée... (et niveau souplesse et fonctionnalités c'est top).

Eléphant du PHP | 120 Messages

15 janv. 2013, 21:38

Ah oui j'oubliais : http://www.php.net/gettext

ViPHP
AB
ViPHP | 5818 Messages

15 janv. 2013, 23:20

Houlà gettext ! tu sors l'artillerie lourde là :)

Sans aucun doute le plus performant, mais bon niveau convivial... dans mes derniers souvenirs cela demandait de l'utiliser avec un logiciel tiers et de compiler les traductions... y'a quand même pas mal de contraintes.
Si l'on a des besoins très poussés en termes de performances, oui mais pour le reste je déconseillerais plutôt (de surcroit pour les débutants).

Eléphant du PHP | 353 Messages

16 janv. 2013, 17:06

Houlà gettext ! tu sors l'artillerie lourde là :)

Sans aucun doute le plus performant, mais bon niveau convivial... dans mes derniers souvenirs cela demandait de l'utiliser avec un logiciel tiers et de compiler les traductions... y'a quand même pas mal de contraintes.
Si l'on a des besoins très poussés en termes de performances, oui mais pour le reste je déconseillerais plutôt (de surcroit pour les débutants).
C'est une blague ? Je veux bien que ce soit un tout petit peu plus complexe (et pas compliqué) pour les débutants mais gettext si ce n'est pas le standard pour faire de l'internationalisation cela devrait l'être.
Pleins d'avantages :
- facile d'extraire les chaînes à traduire
- gestion des pluriels multiples (et oui certaines langues ont plus d'un pluriel !!!)
- palanquées d'outils pour faciliter le boulot des traducteurs (application, interface web, ...)
- gestion des mises à jour du vocabulaire, gestion des ressemblances dans les chaînes à traduire
- ...

ViPHP
AB
ViPHP | 5818 Messages

16 janv. 2013, 21:55

C'est une blague ? Je veux bien que ce soit un tout petit peu plus complexe (et pas compliqué) pour les débutants mais gettext si ce n'est pas le standard pour faire de l'internationalisation cela devrait l'être.
Pleins d'avantages :
- facile d'extraire les chaînes à traduire
- gestion des pluriels multiples (et oui certaines langues ont plus d'un pluriel !!!)
- palanquées d'outils pour faciliter le boulot des traducteurs (application, interface web, ...)
- gestion des mises à jour du vocabulaire, gestion des ressemblances dans les chaînes à traduire
- ...
Et aussi pas mal de contraintes. Sinon pourquoi tout le monde ne l'utiliserait-il pas ?

Cela me rappelle une vieille discussion.
Je vois plutôt l'intérêt de gettex pour des gros sites très fréquentés, là où l'on a réellement besoin de performances, avec du contenu qui se renouvelle fréquemment et qui nécessite de nombreux intervenants externes pour la traduction. Mais es-tu certain que c'est le profil de tous les sites multilingues ?
Parce que sinon c'est un peu se servir d'un tank pour tuer une mouche et c'est sans doute une explication parmi d'autres - pour moi c'est l'obligation d'utiliser un logiciel tiers qui m'a rebuté - du fait que si gettext est un standard il est loin d'être employé systématiquement pour faire du multilingues.

Eléphant du PHP | 418 Messages

18 janv. 2013, 06:58

Merci pour vos avis, après avoir cherché tous les avantages et inconvénients (plus dans la difficulté de mettre en place), j'ai décider de garder le premier système, et de le joindre avec un template.

Par contre, je vais, une fois toute les traductions faites, voir si je faire un tableau de langue, ou si je laisse les fichiers sans rapports l'un a l'autre, et les mettre en relation avec un fichier permettant de détecter la langue souhaité et créer les cookies , comme j'ai actuellement et comme montré sur le tuto sauf que j'y est apporté une sécurité pour éviter d'avoir un nouveau cookies à chaque changement (j'ai eu un bug, du coup j'ai fait des conditions).

Si jamais vous avais une solution qui me fait gagner de la performance, sans avoir à refaire tout le site ^^, je prend.

Merci beaucoup, et bonne continuation

Cordialement