2010-01-27 9 views
4

Je construis un produit Open Source et je pense à la localisation, j'ai lu environ gettext mais il semble y avoir beaucoup de problèmes pour le faire fonctionner dans différents systèmes (serveurs, os, etc).Localisation de PHP Question

Comment gérez-vous cela? Existe-t-il un moyen sécurisé d'aider gettext à fonctionner sur plusieurs systèmes? Peut-être que c'est déjà le cas?

Salutations de Suède/Tobias

Répondre

6

Je vous recommande de jeter un oeil à Zend_translate, Zend_locale et Zend_Date. Je ne fais que commencer à les utiliser moi-même, mais pour moi, ils ressemblent déjà à une solution vraiment bonne, propre et moderne à l'internationalisation, contrairement au chaos qu'est le gettext.

L'introduction à Zend_translate répertorie un certain nombre d'arguments forts pour le choisir (ou quelque chose de similaire) sur gettext.

Dans les applications multilingues, le contenu doit être traduit en plusieurs langues et contenu d'affichage en fonction de la langue de l'utilisateur. PHP offre déjà plusieurs façons de gérer de tels problèmes, mais la solution PHP a quelques problèmes:

API Incohérence: Il n'y a pas d'API unique pour les différentes sources formats. L'utilisation de gettext pour l'exemple est très compliquée.

PHP ne prend en charge que gettext et le tableau natif: PHP lui-même offre uniquement le support pour array ou gettext. Tous les formats autres sources doivent être codés manuellement , car il n'existe aucun support natif .

Pas de détection de la langue par défaut: La langue par défaut de l'utilisateur ne peut pas être détectée sans une connaissance plus profonde des arrière-plans pour les différents navigateurs web.

Gettext n'est pas adapté aux threads: la bibliothèque gettext de PHP n'est pas thread sûre, et ne devrait pas être utilisée dans un environnement multithread . C'est dû aux problèmes avec gettext lui-même, pas PHP, mais c'est un problème existant.

+0

Je le regarde en ce moment, semble un peu grand peut-être. Avez-vous maintenant comment, par exemple, Drupal et WordPress font cela? – sandelius

+0

WP utilise gettext: http://codex.wordpress.org/I18n_for_WordPress_Developers Je pense que Drupal a son propre système, je ne sais pas sur quoi il est basé: http: // Drupal.org/project/i18n Cela peut sembler un peu grand mais c'est certainement l'une des solutions les plus simples et les plus efficaces. Il n'y a pas grand-chose d'autre sur le marché, vérifiez ma question à http://stackoverflow.com/questions/1620670/i18n-with-gettext-but-without-the-locale-hassle –

+0

Après avoir testé Zend_Locale & Translate I réalise que c'est juste ce que je veux. Je vous remercie! – sandelius

0

Les blocs linguistiques doivent être conservés à l'extérieur du programme. Ils peuvent être dans une base de données ou dans des fichiers XML. Cela permettra d'ajouter d'autres langues à un moment ultérieur.

Ensuite, toute votre application doit faire est d'identifier la localisation par l'utilisateur et servir le texte approprié pour chaque situation.

3

Le Zend_Translate de Zend Framework est le plus flexible que j'ai vu. Il n'a pas nécessairement besoin du module de support gettext du côté de PHP car il lit le format .mo-binary lui-même.