Локализация через статический файл (5.0)

Автор: jason32 - 28.07/2007, сб - 12:23

Итак, проснулся я в хорошем настроении и решил наконец-то облегчить жизнь тем людям, которых раздражает кол-во запросов к базе у Друпала 5 при переводе. Для Друпал 4.7 я уже такое делал, пришла очередь пятого. Итак, без патча к сожалению не обошлось, можно и не надеяться.
файл includes/common.inc

  1. <?php
  2. function t($string, $args = 0) {
  3.   global $locale;
  4.   //////////////////////////////////////////////////////////////
  5. if (function_exists('locale_static') && $locale != 'en') {
  6.     $string = locale_static($string);
  7.   }
  8.   else
  9. ///////////////////////////////////////////////////////////////
  10.   if (function_exists('locale') && $locale != 'en') {
  11.     $string = locale($string);
  12.   }
  13.   if (!$args) {
  14.     return $string;
  15.   }
  16.   else {
  17.     // Transform arguments before inserting them
  18.     foreach ($args as $key => $value) {
  19.       switch ($key[0]) {
  20.         // Escaped only
  21.         case '@':
  22.           $args[$key] = check_plain($value);
  23.         break;
  24.         // Escaped and placeholder
  25.         case '%':
  26.         default:
  27.           $args[$key] = theme('placeholder', $value);
  28.           break;
  29.         // Pass-through
  30.         case '!':
  31.       }
  32.     }
  33.     return strtr($string, $args);
  34.   }
  35. }
  36. ?>

Добавлены строчки, которые между вот такими полосками - ///////////////////////////////////////////////////////////////.
C патчами закончили. Приаатачиваю МОДУЛЬ, никаких теперь левых конвертеров :)
PS Как вы понимаете, модуль сырой и не особенно тестированный, так что просьба сбрасывать сюда вопросы и найденные баги и фичи.

Комментарии

помогите пжлст, включил модуль Localization Static.
выдает такое сообщение The language file m:/home/localhost/www/files/Russian.php does not exist. Will rebuild him.
где его взять?

а после появления файла russian.php модуль locale_static нужно отключать или нет? у меня на сайте возникает такая проблема - при включенном locale_static другие модули добавить уже становиться невозможно.

Такого не должно быть. Во всяком случае, у меня этот модуль на другие модули никак не влияет, да и собственно он не может этого сделать.

Модуль должен быть включен, так как именно он передаёт информацию из файла russian.php Друпалу о переведённых словах. Тем модуль и полезен, что используется совместно с модулем Locale. Можно переводить прямо на своём сайте, не забывая перезаписывать файл russian.php в настройках Locale Static.

Владимир, что-то я модуль locale_static-5.x-1.1-dev на официальном сайте не нашел вообще. Хотел проверить, может уже релиз появился а не отладочная версия.

И хотел уточнить - этот модуль + патч уменьшает количество обращений к базе в русской версии Друпала?

Автор этого модуля сделал его, собственно, для себя...
и для конкретной версии, скорее всего развитие не планируется, но кто хочет, может его использовать...

Да, именно в русской, так как английские выражения есть прямо в текстах модулей, им не нужна замена...

Жаль что дальнейшее развитие не планируется. Все только и говорят об отказах в доступе к базе из-за перегрузок, а этот модуль снижает количество обращений к базе и наверное хорошо снижает.

P.S. Владимир, вы не насобирали материала по модулю Views, и особенно в связке CCK + Views + View field? Если да, то может опубликуете здесь. У меня на нем сейчас все застопорилось, а разобраться пока никак не получается. А нужно следующее:
Как в созданном документе (страница или заметка), в середине страницы (текста) вставить список ссылок на другие документы, соотнесенные с одним или несколькими терминами или словарями? Не вручную же их вписывать, особенно если этих ссылок может быть очень много - десятки, сотни, тысячи.

Вы мне когда-то рекомендовали модуль Node list, но он делает только одну выборку, а мне надо как минимум 30.

Честно говоря, эти модули (Views и др.) я считаю избыточными и ненужными для обычного сайта, они ещё больше увеличивают нагрузку на базу данных, что сказывается на производительности, а так как профессионально я разработкой сайтов не занимаюсь, то я даже не интересовался этими модулями. Хотя, думаю, что для каких-то особых целей они может быть и нужны...

Но, вообще-то, люди уже интересовались этим вопросом и даже пытались объяснить, как пользоваться этим модулем, вот ссылка на документы о Views. Если вы эти документы уже просматривали, то ничего нового я предложить не могу. Не занимался этим модулем и вообще он мне не очень нравится. CCK я также никогда особо не интересовался, меня в этом плане устраивают стандартные решения.

например, можно воспольховаться сниппетами...
или даже настроить вывод блока в определённом регионе сайте с показом на нужной странице (правда в середине текста не получится, наверное)...

Большое спасибо за ссылку на сниппеты. Это наверное то, что мне нужно. А их надо встраивать в текст страницы?

P.S. Вроде разобрался, буду теперь эксперементировать. Чем я могу отблагодарить за совет?

да, в страницы встраиваются и в блоки, в php-режиме...

хех, благодарность - это дело личное, я помог вам, вы помогите ещё кому-нибудь...