2008-10-01 7 views
3

J'ai examiné quelques options pour permettre la localisation et l'internationalisation d'une application php dynamique. Il semble y avoir une variété d'outils disponibles tels que gettext et Yahoo R3 et je suis intéressé à entendre à la fois les développeurs et les traducteurs sur les outils qui sont bons à utiliser et quelle est la fonctionnalité importante pour faciliter la mise en œuvre et la traduction.Quels sont les bons outils/frameworks pour i18n d'une base de code PHP?

Répondre

3

L'implémentation de PHP gettext fonctionne très bien. Et les fichiers po avec po edit et gettext sont à peu près aussi bons que possible pour gérer la localisation, sachant qu'aucune solution de ce type ne peut gérer complètement les complexités des différentes langues. Par exemple, la méthode gettext est très bonne sur les formes plurielles, mais rien de ce que j'ai vu ne peut gérer des choses comme la conjugaison.

Pour plus d'informations voir mon post ici: How do you build a multi-language web site?

2

Nous avons bricolé avec Zend_Translate, puisque nous utilisons de toute façon Zend Framework. C'est très bien documenté et jusqu'à présent extrêmement solide.

Dans le passé, j'ai presque utilisé ma propre solution maison principalement. Ce qui implique des fichiers de langue avec des constantes ou des variables qui contiennent toutes les parties de texte et qui sont simplement répercutées dans la vue/le modèle plus tard. En ce qui concerne gettext, jadis, j'ai entendu dire que l'implémentation de gettext de PHP était défectueuse, mais je ne peux pas vraiment le confirmer et je n'ai aucune référence pour l'instant.

0

Xataface peut être utilisé pour internationaliser facilement une application PHP/MySQL arbitraire. Il prend en charge la traduction de votre texte statique et de vos données de base de données. Tout ce que vous avez à faire est d'ajouter une ligne ou 2 de code à quelques endroits dans votre application et c'est bon à faire.

http://xataface.com/documentation/tutorial/internationalization-with-dataface-0.6

1

la base de données solution conduit à afficher les messages ne sont pas toujours la bonne, je travaillais dans un site avec plus de 15 langues et traductions ont été un problème.

donc notre conception était:

  • application de traduction en php-mysql (accès de traduction, etc.)
  • puis traductions sont écrites en php arrrays
  • ces tableaux sont également mises en cache dans APC pour accélérer sur le site.

ainsi localisent les différentes langues que vous ne devez faire un include

comme

<?php 
include('lang/en.php'); 
include('lang/en_us.php'); // this file overrides few keys from the last one. 
?> 
+2

double inclusion semble être une idée très intelligente! – Mike

Questions connexes