Ноя
13
2008

О кодировках различных замолвите слово

Привет!

Разнообразие кодировок зачастую (иногда?) приводит и пользователей и разработчиков к необходимости творить "чудеса" находчивости...

Вообщем, нынче наткнулся на проблемку в одной

Очередная попытка стать жаворонком
Всем привет, недавно опять решил предпринять очередную попытку вставать рано,

из CMS: в админке и еще в нескольких местах слова выводились на русском языке но с первой буквой ввиде "кракозяблы" :) Первое на что подумал - файл перевода, начал копать где же он хранится... оказалось все намного интереснее чем просто файлик.

Хранилось это добро в формате библиотеки gettext, используя дляиз CMS: в админке и еще в нескольких местах слова выводились на русском языке но с первой буквой ввиде "кракозяблы" :) Первое на что подумал - файл перевода, начал копать где же он хранится... оказалось все намного интереснее чем просто файлик.

Хранилось это добро в формате библиотеки gettext, используя для

Постинг в закладки
Всем привет! Сегодня хочу предложить тем читателям блога, которые интересуются

этого всего два файла на каждый язык - messages.mo ("скомпилированный" из текстового файла) и messages.po (собственно текстовый исходник). Преобразование из одного файла в другой происходит с помощью linux команды msgfmt, собственно такой вот командой:

msgfmt -o messages.mo messages.po

Эта махинация потребовалась мне, чтобы подправить местами перевод и скомпилировать бинарную версию. Но на этом проблема не изчезла, и продолжая копать уже сам код в очередной раз убедился, что "все гениальное просто" - оказалось что скрипт использует вывод некоторых строк с помощью функции ucfirst, которая и коверкала первую букву.

Причины сего безобразия выяснять не стал, т.к. решил что форматирование строк - это уже дело HTML+CSS. Возможно это потому что данная функция некорректно работает с UTF-8, либо с русской локалью. На всякий случай, для тех кто столкнется с этой же проблемой, вот решение:

а)этого всего два файла на каждый язык - messages.mo ("скомпилированный" из текстового файла) и messages.po (собственно текстовый исходник). Преобразование из одного файла в другой происходит с помощью linux команды msgfmt, собственно такой вот командой:

msgfmt -o messages.mo messages.po

Эта махинация потребовалась мне, чтобы подправить местами перевод и скомпилировать бинарную версию. Но на этом проблема не изчезла, и продолжая копать уже сам код в очередной раз убедился, что "все гениальное просто" - оказалось что скрипт использует вывод некоторых строк с помощью функции ucfirst, которая и коверкала первую букву.

Причины сего безобразия выяснять не стал, т.к. решил что форматирование строк - это уже дело HTML+CSS. Возможно это потому что данная функция некорректно работает с UTF-8, либо с русской локалью. На всякий случай, для тех кто столкнется с этой же проблемой, вот решение:

а)

Фины жгут!
Всем привет! Вот нашел сегодня замечательную штуку :) конечно это

использовать многобайтовый (mb_*) вариант функции ucfirst, однако насколько я знаю она еще не входит в php, но ее можно найти в комментариях к ucfirst на php.net.

б) выводить строку без преобразования, задавая стиль в шаблонах (собственно это я и выбрал)

P.S: Эх, давно не писал в блог, совсем обленился, а ведь столько есть мыслей и идей, которыми хотелось бы поделится с народом, но постараюсь постепенно возвращаться "в струю" :)

Что за это время произошло - думаю мало кому будет интересно, скажу лишь что замечательно отдохнул в сентябре на южном берегу Крыма с близким другом и партнером по офигенным проектам - testing openx !

Нет комментариев »

RSS лента комментариев Трэкбэк

Прокомментировать

Работает на WordPress | Тема Aeros от TheBuckmaker.com WordPress Themes | Локализация: goodwin.wpbot.ru