gettext() - как пользоваться и что она вообще делает?

IBSN

Новичок
gettext() - как пользоваться и что она вообще делает?

Вот прочитал и написал как было в экзампле:
PHP:
<?php

putenv("LANG=ru_RU");
$locale_path = bindtextdomain ("MyPHP", "./locale");

$old = textdomain ("MyPHP");


print (gettext ("Welcome to My PHP Application")); 
?>
В результате должен вывести "Добро пожаловать в PHP - программу!"

Помойму эта функция способна переводить текст с одного языка на другой или я ошибаюсь?

Да и дело в том, что он не выводит "Добро пожаловать в PHP - программу!" у меня а выводит "Welcome to My PHP Application"

В чем дело???
 

Макс

Старожил PHPClub
*.po файлы создал ? (xgettext --keyword=_ -C -j *.php)
*.mo файлы создал ? (msgfmt filename.po filename.mo - где filename.po - твой *.po файл)

Почитай комменты в мануале, там есть особенности с расположением файлов

ЗЫ
проще писать
print (_ ("Welcome to My PHP Application"));
вместо
print (gettext ("Welcome to My PHP Application"));
 

IBSN

Новичок
Я не ставлю apache на комп , предпочитаю ftp, ща узнаю у хостера...
 

Crazy

Developer
Re: gettext() - как пользоваться и что она вообще делает?

Автор оригинала: IBSN
Помойму эта функция способна переводить текст с одного языка на другой или я ошибаюсь?
Переводить? Нет. Не способна. :D
 

Crazy

Developer
В точности то, что написано в документации: "This function returns a translated string if one is found in the translation table, or the submitted message if not found."

Что конкретно здесь непонятно?
 

Макс

Старожил PHPClub
если коротко то
1. Ты пишешь скрипт в таком виде:
<?
....
echo _("Hello world");
...
?>
Строки переданные функции _("string"); будут переводиться
2. Скармливаешь этот скрипт gettext-у
xgettext --keyword=_ -C *.php
получишь файл *.po со всеми строками которые нужно перевести

3. Делаешь перевод
4. Компилируешь перевод: msgfmt filename.po filename.mo
Где разместить *.mo файлы - читай в доке по gettext-у + советую почитать комментарии на http://php.net/gettext
И поищи на форуме, была большая тема про gettext
 

Rynor

stay hungry
Уважаемые!
Подскажите порядок установки A1/PHP4/gettext, что-то у меня не то...
поставил RH7.3 без gettext RPM
скомпилил gettext
скомпилил апач
скомпилил же и пхп
./configure --with-gettext --with-mysql...
результата нет
.po/.mo все на месте, под виндой проблем нет...
 

tony2001

TeaM PHPClub
взять сорцы РНР.
./configure --with-apxs (или что там у вас) --with-gettext --with...--with...
make
make install

apachectl restart
смотрим phpinfo(); для пущей уверенности, что все ок.
 

Rynor

stay hungry
из сорцов вообще-то все вышеперечисленное и компилил...
про пхпинфо постоянно забываю :)
GetText Support enabled, одна строка
 

Макс

Старожил PHPClub
результата нет
.po/.mo все на месте, под виндой проблем нет...
У меня, например, такая проблема была из-за того что я языки передавал (в putenv()) как "ru", "en" а нужно "ru_RU", "en_US" (не помню как этот формат называется)
 

Rynor

stay hungry
смена ru на ru_RU дала результат, осталось уточнить как именно называется "виндовая" локаль, так как ru_RU выдает, похоже, данные в КОИ, идут крякозябры вместо текста...
у нас все сайты и данные - на CP1251 для лучшей совместимости между виндой/линуксами.
в списке локалей (locale chooser) значатся однако ru_RU и ru_RU.KOI8-R
подскажите, какая локаль в линуксах соответствует CP1251 кодировке? и где ее такую взять...

P.S. в .po я прописываю:
"Content-Type: text/plain; charset=CP1251\n"
 

Rynor

stay hungry
все получилось, люблю гугль
коллегам по сабжу:
http://unixgems.jinr.ru/~lavr/locale-1251.html
 
Сверху