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

  • Автор темы Автор темы IBSN
  • Дата начала Дата начала

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"

В чем дело???
 
*.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"));
 
Я не ставлю apache на комп , предпочитаю ftp, ща узнаю у хостера...
 
Re: gettext() - как пользоваться и что она вообще делает?

Автор оригинала: IBSN
Помойму эта функция способна переводить текст с одного языка на другой или я ошибаюсь?
Переводить? Нет. Не способна. :D
 
В точности то, что написано в документации: "This function returns a translated string if one is found in the translation table, or the submitted message if not found."

Что конкретно здесь непонятно?
 
если коротко то
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
 
Уважаемые!
Подскажите порядок установки A1/PHP4/gettext, что-то у меня не то...
поставил RH7.3 без gettext RPM
скомпилил gettext
скомпилил апач
скомпилил же и пхп
./configure --with-gettext --with-mysql...
результата нет
.po/.mo все на месте, под виндой проблем нет...
 
взять сорцы РНР.
./configure --with-apxs (или что там у вас) --with-gettext --with...--with...
make
make install

apachectl restart
смотрим phpinfo(); для пущей уверенности, что все ок.
 
из сорцов вообще-то все вышеперечисленное и компилил...
про пхпинфо постоянно забываю :)
GetText Support enabled, одна строка
 
результата нет
.po/.mo все на месте, под виндой проблем нет...
У меня, например, такая проблема была из-за того что я языки передавал (в putenv()) как "ru", "en" а нужно "ru_RU", "en_US" (не помню как этот формат называется)
 
смена 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"
 
все получилось, люблю гугль
коллегам по сабжу:
http://unixgems.jinr.ru/~lavr/locale-1251.html
 
Сверху