PHP, I18n и gettext не работают должным образом? - PullRequest
0 голосов
/ 19 августа 2010

В настоящее время я интернационализирую существующий проект PHP и думаю, что самый простой способ сделать это - просто интегрировать I18n + gettext.

В настоящее время у меня есть I18n.php:

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

Что входит в каждый файл, требующий перевода.

Пример: 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>
...

Это вроде работает, но у меня есть одна странная проблема. Это только переводит вещи как 2 из 10 раз, когда я загружаю эту страницу (2x «Benutzername», 8x «User Name»). Кто-нибудь знает, что может вызвать эту проблему? Я пытаюсь понять это уже час, но до сих пор не понимаю.

Поскольку я уже пишу здесь: кто-нибудь знает лучший подход к интернационализации существующего проекта PHP?

Спасибо!

1 Ответ

1 голос
/ 19 августа 2010

Да, есть лучший способ. См. Класс ResourceBundle и, как правило, расширение intl .

...