Как я могу отладить php gettext? - PullRequest
11 голосов
/ 17 июня 2011

Некоторые ключи gettext не работают для меня - они показывают ключ вместо перевода, хотя он есть. Я делаю .mo файл с PHP File_Gettext библиотекой Pear, и он, кажется, работает нормально, поэтому я сделал следующий скрипт, чтобы проверить, какие ключи не работают нормально:

$locale = 'en_GB';
$domain = 'messages';

setlocale(LC_ALL, $locale);
putenv("LC_ALL=".$locale);
bindtextdomain($domain, "D:/_gt");
bind_textdomain_codeset($domain, 'UTF-8');
textdomain($domain);

$mocreator = new File_Gettext_MO();
$mocreator->load('D:/_gt/en_GB/LC_MESSAGES/messages.mo');

foreach ($mocreator->strings as $key => $value) {
    if ($value == gettext($key)) {
        var_dump("ok");
    } else {
        var_dump($key, $value, gettext($key));
    }
}

Исходя из вышеизложенного, я вижу, что некоторые клавиши работают - я вижу много ok с - а некоторые нет, что приводит к следующему:

string 'Cancelled' (length=9)
string 'Storniert' (length=9)
string 'Cancelled' (length=9)

Итак, в файле есть перевод, но gettext по какой-то причине не может их использовать.

1 Ответ

1 голос
/ 27 июня 2011

Теперь это довольно старый вопрос, и я должен отметить, что я не очень хорошо разбираюсь в вопросах, связанных с gettext. Но у меня были некоторые проблемы с ключами массива в виде строк и кодировок.

D:/_gt создает у меня впечатление, что вы используете какую-то Windows, и, если я не ошибаюсь, все версии Windows по умолчанию используют latin-1- "with-special-locale". Я полагаю, что проблема может быть связана с кодировкой, поскольку вы указываете файл как utf8 , но я не могу вам помочь без файла .mo . Но попробуйте поменять местами операторы putenv и setlocale.

Или пробелы отсутствуют? Может ли правильный ключ быть " Cancelled"?

Но, как кто-то сказал в комментариях, это просто догадки без файла .mo .

Если вы уже нашли свой ответ, пожалуйста, добавьте его, чтобы помочь остальным интернетам! : D

...