LINUX.ORG.RU

gettext в php


0

0

1. Установка локали перед использованием gettext автоматически означает, что у всех посетителей сайта выставится одна локаль? Встречал упоминания, что gettext не поддерживает потоки (threads) и такие применения - глобальны.

2. Что делать, если на сервере нету необходимой локали? К примеру, в .po-файле выставляю WINDOWS-1251, при компиляции ругается, что кодировка неизвестная. Какую ставить в этом случае локаль - тоже не понятно. Имеются ru_RU, ru_RU.koi8r, ru_RU.utf8. Сайт предполагается в windows-1251.

Предполагаемая конфигурация:

linux/freebsd

apache 2.x

php 4.3.x

★★★★★

Вдогонку.

Подскажите кодировку, которую можно вписать в .po-файл так, что б msgfmt не ругался. Что б просто втупую писать windows-1251-текст и выводить его без всяких перекодировок.

AngryElf ★★★★★
() автор топика

>К примеру, в .po-файле выставляю WINDOWS-1251

и где ты взял такое название?
посмотри вывод iconv и узнай как она на самом деле называется.


>Имеются ru_RU...
gettext автоматически перекодирует и выдаст в кодировке текущей локали

anonymous
()
Ответ на: комментарий от anonymous


>>К примеру, в .po-файле выставляю WINDOWS-1251

>и где ты взял такое название?
>посмотри вывод iconv и узнай как она на самом деле называется.

Да именно так и называется:

---------------------------------------------------------
[elf@elf (~)]$ iconv --list|grep 1251
CP1251//
WINDOWS-1251//
[elf@elf (~)]$
---------------------------------------------------------

Пробовал обе.



> gettext автоматически перекодирует и выдаст в кодировке текущей локали

Во-во. А если нужной локали нету?


AngryElf ★★★★★
() автор топика
Ответ на: комментарий от AngryElf

>Во-во. А если нужной локали нету?

какой нужной?

объясняю по буквам,
допустим перевод в cp1251,
а локаль у тебя ru_RU.koi8-r, тогда gettext перекодирует из cp1251 в koi8-r и выдаст тебе результат

anonymous
()

>>2. Что делать, если на сервере нету необходимой локали?

бр-бр ты хочешь указать кодировку документов по умолчанию cp-1251? (эт делается в httpd.conf) , если только для конкретных страниц, то .htaccess

ale ★★
()
Ответ на: комментарий от anonymous

>localedef -f windows-1251 -i ru_RU ru_RU.WINDOWS-1251
>по рутом, естественно, и наступит щасте :)

В случае собственного сервера - понятно. В случае стороннего хостинга - проблематично


>>Во-во. А если нужной локали нету?

>какой нужной?

>объясняю по буквам,
>допустим перевод в cp1251,
>а локаль у тебя ru_RU.koi8-r, тогда gettext перекодирует из cp1251 в koi8-r и выдаст тебе результат

Ясно :-)


>>2. Что делать, если на сервере нету необходимой локали?

>бр-бр ты хочешь указать кодировку документов по умолчанию cp-1251? (эт >делается в httpd.conf) , если только для конкретных страниц, то .htaccess

Не, я не про apache, я про то, что ниже.




Поделюсь результатами эксперимента.

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

Сайт был в windows-1251, локализация - в koi8-r, bind_textdomain_codeset использовалась для установки кодировки windows-1251. Локаль выставлялась ru_RU. Все запахало на ура.
На локаль, как я понял, можно совсем забить. Оно постольку-поскольку. Главное, что б setlocale() не возвращало false, а потом хоть трава не расти.

Конфигурация:
Gentoo Linux
Libc 2.3.5
Apache 2.0.54
PHP 4.4.0

AngryElf ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.