LINUX.ORG.RU

проблема в локализации (кодировка в .po файле)


0

0

проблема в следующем: в программе (на C) вызывается:

bindtextdomain (PROGRAMM_NAME, TEXT_DOMAIN_DIR); textdomain (PROGRAMM_NAME); setlocale (LC_ALL, ""); ... sprintf (message_str, gettext ("This program was compiled with GStreamer (%d.%d.%d) and now running with GStreamer (%d.%d.%d)"), GST_VERSION_MAJOR, GST_VERSION_MINOR, GST_VERSION_MICRO, major, minor, micro);

в xxx.po файле (сгенерированном xgettext'ом) введён перевод для этой строки (в UTF-8) и в заголовке прописано "Content-Type: text/plain; charset=utf-8\n", "Content-Transfer-Encoding: 8bit\n"

далее сделан mo-файл (msgfmt'ом) и скопирован в нужный каталог.

после запуска программы в окружении LANG=ru_RU.UTF-8 - всё прекрасно, в ru_RU.KOI8-R и ru_RU.CP1251 - кракозябры (mc в этих окружениях работает по-русски (ну кроме UTF-8))

исправил в po-файле кодировку на koi8-r и переконвертировал его utf8-koi8r, скомпилил msgfmt'ом, скопировал в нужное место.

в ru_RU.KOI8-R - всё прекрасно, в ru_RU.CP1251 и ru_RU.UTF-8 - кракозябры.

пожалуйста, объясните, что не так.

bindtextdomain (PROGRAMM_NAME, TEXT_DOMAIN_DIR);

textdomain (PROGRAMM_NAME); setlocale (LC_ALL, "");

...

sprintf (message_str, gettext ("This program was compiled with GStreamer (%d.%d.%d) and now running with GStreamer (%d.%d.%d)"), GST_VERSION_MAJOR, GST_VERSION_MINOR, GST_VERSION_MICRO, major, minor, micro);

извиняюсь за форматирование.

дистриб - Debian Woody, glibc - 2.2.5

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

добавил

bind_textdomain_codeset (PROGRAMM_NAME, nl_langinfo(CODESET))

не помогло.

в мане на bind_textdomain_codeset написано, что gettext должен автоматом в нужную кодировку гнать :(

жду ещё советов

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

спасибо

я его добил

bind_textdomain_codeset - непричём

я взял исходники elinks, удалил в po/ все .gmo файлы и сделала make - получил тот же результат. если посмотреть elinks'овские .gmo из исходников, то внутри их чётко можно увидеть charset=koi8-r, а в новых gmo'шниках, сгенерированных мной - ничего подобного.

я поставил свежий gettext - и всё заработало!!! глюк был в той версии msgfmt, которая в Woody стоит. я этого не замечал, потому-что все пакеты, собираемые из исходников имели в tar'болах уже готовые .gmo'шки и не пересобирали их моим msgfmt'ом!

Вот и всё. Всем спасибо :)

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