За последние 24 часа нас посетили 26258 программистов и 1814 роботов. Сейчас ищет 1061 программист ...

gettext на freebsd

Тема в разделе "Прочие вопросы по PHP", создана пользователем TrustNo1, 15 авг 2010.

  1. TrustNo1

    TrustNo1 Активный пользователь

    С нами с:
    28 мар 2010
    Сообщения:
    10
    Симпатии:
    0
    Добрый день!
    Возникла такая проблема при использовании gettext на серваке FreeBSD - переводятся лишь от силы 2-3 строки.
    На серваках Windows и Ubuntu все работает замечательно. Вот код который устанавливает локаль:
    PHP:
    1. <?php
    2. $locale_dir = '/full/path/to/locales/dir'; // FULL path to locales dir
    3. $dom = 'messages';
    4. $lst = scandir($locale_dir);
    5. foreach($lst as $lng) $langs[] = getLangFromCode($lng);
    6. if(!$_SESSION['lang'])
    7. {
    8.     $c = GetCountryIP();
    9.     if($c == 'Russian Federation' || $c == 'Ukraine')
    10.     {
    11.         $_SESSION['lang'] = 'ru';
    12.     }
    13.     else
    14.         {
    15.         $_SESSION['lang'] = 'en';
    16.     }
    17. }
    18. setlocale(LC_ALL, getLocaleFromCode($_SESSION['lang']));
    19. bindtextdomain($dom, $locale_dir);
    20. textdomain($dom);
    21. bind_textdomain_codeset($dom, 'UTF-8');
    22. ?>
    функция getLocaleFromCode выдает локаль исходя из 2-буквенного кода языка (имена локалей хранятся в текстовом файле и вбиваются туда вручную - берутся из вывода команды 'locale -a' на серваке). Пытался установить LC_ALL и LC_MESSAGES через putenv результат тот же (посмотреть его можно к примеру тут - http://vkmuzon.7186699.spb.ru/faq.php - переключаем внизу язык на English в случае необходимости). Версия PHP 4.4.2, FreeBSD 6.4.
    Папки локалей имеют следующую структуру: locale/[двухбуквенный код языка]/LC_MESSAGES/messages.po (mo).
    Подскажите в чем может быть проблема?