Разобрался таки с кривым официальным wordpress.pot
Гуглил, гуглил по разным запросам и нагуглил
Тот файл wordpress.pot что выложен на wordpress.org настолько кривой что вообще лучше его не использовать, т.к. он основан на уже будущей версии 2.9 и к 2.8.* подходит не на 100%
Чем руководствовались авторы? зачем с только премудростей если раньше без них обходились? в официальной документации про это ни слова. там старое бла-бла-бла про
__($message)
и
_e($message)
В общем в версии 2.8.* используется аж вот столько ключевиков для локализации:
__
_e
_c
__ngettext:1,2
_n:1,2
_nc:1,2
__ngettext_noop:1,2
_n_noop:1,2
_x:1,2c
_nx:1,2,4c
_nx_noop:1,2,3c
esc_attr__
esc_attr_e
esc_attr_x:1,2c
esc_html__
esc_html_e
esc_html_x:1,2c
Причем о конструкции некоторых элементов можно было только примерно догадываться и на основе этого гуглить. Также нашел
Связанные записи
10 комментариев на запись “Разобрался таки с кривым официальным wordpress.pot”
На самом деле всё довольно просто:
* функции, оканчивающиеся на __, просто возвращают переведённую строку (возможно, выполняя какие-либо другие действия, как esc_attr__ и esc_html__);
* функции, оканчивающиеся на _e, выводят строку;
* функции, оканчивающиеся на _x, переводят с контекстом gettext (то же самое, что и __(), разница только в вызываемом пост-фильтре и дополнительных параметрах);
* _c — перевод с контекстом (строки вида «фраза|пояснение для переводчика»);
* _n, __ngettext — перевод с учётом единственного и множественного числа (_nx() — перевод с контекстом gettext, _nc() — перевод с контекстом переводчика);
* _n_noop, _nx_noop, __ngettext_noop — эти больше xgettext/msgmerge — ничего не переводят, используются в качестве указания на то, что строки (единственное и множественное число) нужно поместить в .po-файл.
Как-то так. Вроде бы ничего не забыл.
PS — а вообще вся эта муть живёт в wp-includes/l10n.php.
Официальный ответ разработчиков — для того, чтобы улучшить читаемость кода.
Например, в 2.7 нужно было писать так:
echo wp_specialchars(__('something', 'domain'))
По мнению разработчиков, это было плохо и не очевидно. С 2.8 это делается так:
esc_html_e('something', 'domain')
Одна функция вместо трех и всего одна пара скобок.
если бы все это еще снижало прожорливость…
Ох, накрутили… И не думаю, что к лучшему.
Кстати, Lecactus, мне ваш перевод нравится, но у вас в некоторых местах есть орфографические и пунктуационные ошибки. Сообщать вам о таких? :)
pot- для всех существующих версий живут здесь:
http://svn.automattic.com/wordpress-i18n/pot/tags/
А тот, что здесь:
http://svn.automattic.com/wordpress-i18n/pot/trunk/
это следующая версия, да…
да, на мыло
а вот в руководстве в кодексе предлагают как раз кривую версию всегда.
и вообще сколько сталкивался с POT файлами обычно бывали проблемы и не только в движке самом. самостоятельное сканирование обычно всегда точнее выявляло нужное.
Такое частенько бывает, каталоги POT уже надоедать начинают, поскольку уж часто авторы (не только WordPress’а, но и различных плагинов, а также тем), забывают (по чистой случайности, специально или «волей небес»?) добавлять какие-либо строки. И в результате приходится страдать.
После выхода вашего перевода для 2.8.3 (или 2.8.4) сразу буду писать обо всем, что найду.
так 284 с обновленным переводом уже выложен, просто поста про это нет еще.
а перевод отдельно тут http://lecactus.ru/download-manager.php?id=490
Хм, прикольно, обновился через админку и белый экран :) Что-то новенькое. Пойду править.
В Кодексе ссылка на trunk.
Я думал, ты читаешь рассылку для переводчиков…