[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Для RU.LINUX FAQ



On Thu, Aug 31, 2000 at 11:28:32PM +0400, Alex Kanavin wrote:
> > Позволю себе встрять. Правильно было бы перекодировать из кодировки
> > .mo файла (которая указана в заголовке) в кодировку шрифта, а не из
> > кодировки локали.
> 
> Да. Но внимание, вопрос: откуда gettext сможет узнать кодировку шрифта,
> которым предполагается сделать вывод? Тем более, что этой кодировки в
> половине случаев не существует (вывод на консоль, в stdout, файл).
> Заставлять же программу выяснять кодировку .mo - идеологически
> неправильно. Программу такие вещи волновать не должны вообще.

gettext не может в общем случае знать, как будет использован его
результат. Сейчас он ничего не перекодирует. Но программа знает,
куда идет вывод, следовательно она может сделать перекодировку.
Было бы неплохо, если бы библиотека libintl (куда входит gettext)
предоставляла некоторые дополнительные функции, напр. gettext_lc_ctype -
получить строку, перекодированную в LC_CTYPE кодировку.

> То есть правильно было бы хранить .mo в юникоде, а gettext-ом
> перекодировать их из юникода в кодировку локали. Это снимает проблему
> *-ации для нескольких однобайтовых кодировок одного языка. Я, честно
> говоря, даже удивлен - почему GNU не сделало столь очевидную вещь. Может
> быть потому, что это нужно только русским? Но ведь это и переход на
> юникод затрудняет тоже...

Во-первых, никто не мешает делать .mo в utf-8, а во-вторых это не
поможет, т.к. перекодировка все равно будет необходима (если, конечно,
шрифт/терминал не уникодный, а таких большинство в настоящее время)