Разобрался таки с кривым официальным wordpress.pot

Гуглил, гуглил по разным запросам и нагуглил вот такой хитрый файлик, который типа извлекает все ресурсы как надо. Мне точнее было интересно больше какие ключевые слова используются, т.к. все собирал гуглом по крупицам и вот сейчас наконец POEDIT перестал выдрепываться и заработал как надо при извлечении ресурсов.
Тот файл 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”

  1. Vladimir 18 августа 2009 в 14:17

    На самом деле всё довольно просто:
    * функции, оканчивающиеся на __, просто возвращают переведённую строку (возможно, выполняя какие-либо другие действия, как 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. Vladimir 18 августа 2009 в 14:22

    зачем с только премудростей если раньше без них обходились?

    Официальный ответ разработчиков — для того, чтобы улучшить читаемость кода.

    Например, в 2.7 нужно было писать так:

    echo wp_specialchars(__('something', 'domain'))

    По мнению разработчиков, это было плохо и не очевидно. С 2.8 это делается так:

    esc_html_e('something', 'domain')

    Одна функция вместо трех и всего одна пара скобок.

  3. Lecactus 18 августа 2009 в 14:27

    если бы все это еще снижало прожорливость…

  4. Moringotto 18 августа 2009 в 15:39

    Ох, накрутили… И не думаю, что к лучшему.

    Кстати, Lecactus, мне ваш перевод нравится, но у вас в некоторых местах есть орфографические и пунктуационные ошибки. Сообщать вам о таких? :)

  5. Sol 18 августа 2009 в 16:26

    pot- для всех существующих версий живут здесь:
    http://svn.automattic.com/wordpress-i18n/pot/tags/

    А тот, что здесь:
    http://svn.automattic.com/wordpress-i18n/pot/trunk/
    это следующая версия, да…

  6. Lecactus 18 августа 2009 в 17:02

    Сообщать вам о таких? :)

    да, на мыло

    pot- для всех существующих версий живут здесь:

    а вот в руководстве в кодексе предлагают как раз кривую версию всегда.

    и вообще сколько сталкивался с POT файлами обычно бывали проблемы и не только в движке самом. самостоятельное сканирование обычно всегда точнее выявляло нужное.

  7. Moringotto 18 августа 2009 в 18:43

    а вот в руководстве в кодексе предлагают как раз кривую версию всегда.

    и вообще сколько сталкивался с POT файлами обычно бывали проблемы и не только в движке самом. самостоятельное сканирование обычно всегда точнее выявляло нужное

    Такое частенько бывает, каталоги POT уже надоедать начинают, поскольку уж часто авторы (не только WordPress’а, но и различных плагинов, а также тем), забывают (по чистой случайности, специально или «волей небес»?) добавлять какие-либо строки. И в результате приходится страдать.

    да, на мыло

    После выхода вашего перевода для 2.8.3 (или 2.8.4) сразу буду писать обо всем, что найду.

  8. Lecactus 18 августа 2009 в 18:47

    так 284 с обновленным переводом уже выложен, просто поста про это нет еще.
    а перевод отдельно тут http://lecactus.ru/download-manager.php?id=490

  9. Moringotto 18 августа 2009 в 20:44

    Хм, прикольно, обновился через админку и белый экран :) Что-то новенькое. Пойду править.

  10. Sol 24 августа 2009 в 3:48

    а вот в руководстве в кодексе предлагают как раз кривую версию всегда.

    В Кодексе ссылка на trunk.
    Я думал, ты читаешь рассылку для переводчиков…