• Модератор Sergey Biryukov

    (@sergeybiryukov)


    Live and Learn

    Случайно вдохновился популярной в некоторых кругах идеей прямого перевода, позволяющего выиграть несколько мегабайт памяти. Вместо жёсткой замены строк в файлах предлагаю более простую реализацию 🙂

    Алгоритм

    Из файла ru_RU.mo при помощи особого скрипта создаётся strings-ru_RU.php, который содержит все строки перевода и функции, выступающие в роли фильтров gettext, gettext_with_context, ngettext и ngettext_with_context. Созданный файл подключается вместо ru_RU.mo.

    На текущий момент этого достаточно для работы всех стандартных конструкций в системе локализации без использования gettext. Также сохраняется возможность использовать плагины для мультиязычного блога.

    Установка перевода

    (30.12) Идея реализована в плагине Pure PHP Localization:
    http://wordpress.org/extend/plugins/pure-php-localization/

    Тестовая копия блога с 39 активными плагинами при таком подходе потребляет 24 МБ вместо 27.3.

Просмотр 15 ответов — с 1 по 15 (всего 31)
  • Интересно, что использование «системного» gettext в моем эксперименте с 2.8 дало точно такой же выигрыш — 3 метра.

    Atrax

    (@atrax)

    Ethical engineer

    Метод php- словаря еще Макс внедрял в wordpress, до того как «удалился от дел» 🙂 если уж гнаться за байтами экономии, то нужна именно жесткая замена. Чтобы каждый раз не читать полный словарь.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Подумал, что это оптимальный баланс между экономией и трудозатратами 🙂 Объём полного словаря в памяти на текущий момент — 600 КБ. Сделал для эксперимента «облегчённый» файл (без каталога wp-admin и редактора) — получилось 100 КБ.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Оформил в плагин для любого языка 🙂
    http://wordpress.org/extend/plugins/pure-php-localization/

    SergeyBiryukov, на 2.7.1 плагин не запустился 🙁 При активации пишет:
    Warning: Invalid argument supplied for foreach() in Z:\home\newblog\www\wp-content\plugins\pure-php-localization\pure-php-localization.php on line 19

    В самом блоге
    Warning: Missing argument 5 for php_l10n_ngettext() in Z:\home\newblog\www\wp-content\plugins\pure-php-localization\strings-ru_RU.php on line 26

    YuBe, попробовал Ваш способ, все отлично, экономия 2.5мб. только к сожалению отключилась локализация плагинов, может подскажете как подключить локализацию одного из плагинов на каком нибудь примере?!

    Заранее спасибо!

    Atrax

    (@atrax)

    Ethical engineer

    Requires WordPress Version: 2.9 or higher

    Вам это ни о чем не говорит?

    Извините, не подскажу. Готового решения нет. А разбираться с этим делом мне очень не хочется. По одной простой причине: я считаю, что выигрыш от этого мизерный. Если проект большой и серьезный, то лучше сразу брать большой и серьезный хостинг. А для мелочевки (типа моего блога:)), вполне достаточно старых экономных версий, скажем, 2.3.3, а то и 2.0.11.

    Вам это ни о чем не говорит?

    Говорит! По этому и написал что у меня версия 2.7.1, может автору плагина будет не сложно и он сможет переделать плагин чтобы он поддерживал и предыдущие версии!

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Добавил обработку прежних типов данных. Теперь поддерживаются все версии WordPress, начиная с 2.1 🙂 Попробуйте тестовый архив:
    http://downloads.wordpress.org/plugin/pure-php-localization.zip

    SergeyBiryukov, спасибо что сделали поддержку старых версий, но у меня к сожалению не заработало 🙁 Пишет:
    Fatal error: Call to a member function seekto() on a non-object in Z:\home\newblog\www\wp-includes\gettext.php on line 154
    При этом весь блог прекращает работать (в том числе админка) =( Лечится только удалением плагина.

    Сейчас попробывал на вновь установленном WordPress’e без плагинов, все ок… из-за чего такое может быть? Заранее спасибо!
    Версия WordPress 2.7.1

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Сообщите, пожалуйста, список установленных плагинов.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Обновил архив по ссылке — попробуйте ещё раз.

    Обновил архив по ссылке — попробуйте ещё раз.

    Заработало 🙂
    Только почему то на работающем блоге расход памяти упал с 13.75MB до 13.2MB, а на пустом демо блоге с 10.42MB до 9.36MB…..

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    На версиях до 2.9 экономия меньше — в объектах было не так много полей.
    Обновил архив — теперь в словарь добавляются также переводы активных плагинов и текущей темы оформления (если она использует gettext).

    Atrax

    (@atrax)

    Ethical engineer

    «активных» в смысле «часто используемых»?

Просмотр 15 ответов — с 1 по 15 (всего 31)
  • Тема «Прямой перевод WordPress» закрыта для новых ответов.