2010-08-19 4 views
0

Je suis en train d'internationaliser un projet PHP existant et je pense que la façon la plus simple de le faire est de simplement intégrer I18n + gettext.PHP, I18n et gettext ne fonctionne pas correctement?

Actuellement, j'ai un I18n.php:

<?php 
setlocale(LC_ALL, 'de_DE.UTF-8'); 
bindtextdomain('cms', './locale'); 
textdomain('cms'); 
?> 

qui est inclus dans chaque fichier qui a besoin d'une traduction.

Exemple: login.inc.php:

include_once("i18n.php"); 
... 
<tr> 
        <td width='40%' align='right'>"._('User Name').":</td> 
        <td width='60%'><input name='USERNAME' type='text' class='login_txt'></td> 
        </tr> 
        <tr> 
        <td align='right'>"._('Password').":</td> 
        <td><input name='PASSWORD' class='login_txt' type='password'></td> 
        </tr> 
... 

Ce genre fonctionne, mais je me suis un problème bizarre. Il ne fait que traduire les choses comme 2 fois sur 10, je charge cette page (2x "Benutzername", 8x "User Name"). Est-ce que quelqu'un sait ce qui pourrait causer ce problème? J'essaie de le comprendre depuis une heure déjà et toujours aucune idée. Depuis que j'écris déjà ici: Est-ce que quelqu'un connaît une meilleure approche pour internationaliser un projet PHP existant?

Merci!

Répondre

1

Oui, il existe un meilleur moyen. Voir la classe ResourceBundle et, en général, l'extension intl.

+0

Merci, je vais y jeter un coup d'oeil. – Cojones

+0

Il semble intéressant, mais je ne pouvais pas trouver une seule ligne de code de la façon de traduire les chaînes réelles? Avez-vous par hasard un bon tutoriel ou quelque chose comme ça pour l'extension intl? – Cojones

Questions connexes