PrivateMsg: проблема с переводом

Сегодня устанавливал модуль личных сообщений PrivateMsg. Установился он прекрасно, но возникли некоторые проблемы с переводом.

Когда я только начал разбираться с друпалом в моде была 5-я версия. Для него существовало достаточно большое количество модулей. В тот числе и PrivateMsg. Я его даже куда-то ставил. Потом появился стабильный Drupal 6.0, а я в это время как раз начал учиться программировать под эту CMS. И решил что, чтобы потом не тратить время на переучивание сразу начать программировать в более современной версии. Вот только того изобилия модулей, которое было раньше, не было. Среди прочего не было и PrivateMsg.

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

Некоторое время назад этот модуль появился и под 6-ю версию. Сегодня я решил установить его. Про сам процесс я писать не буду - это обычная установка модуля Drupal. После установки скачал с http://drupaler.ru/ файл с переводом. То же всё стандартно. Сначала пытался скачать перевод для версии 6.x-1.0-rc2, но такого как оказалось еще не существует. Поэтому в поле "Релиз" выбрал "Все" и получившийся файл прекрасно подошёл. Перевелось всё, за исключением одной небольшой, но очень заметной детали.
В меню "Навигация" на первом месте появилось английское слово "Messages". Попытался перевести его вручную - перевод уже присутствовал. Хотя и так ясно было, что такое простое сочетание букв обязательно должно быть уже переведено.
Полез в исходный код. Вдруг там зашит какой-нибудь не такой "Messages". Мало-ли: пробел лишний вставили, или ещё какая напасть. Как оказалось разработчики просто-напросто забыли поставить функцию перевода t() в хуке menu. Например, для моей ссылки была прописана вот такая строка:

<?php
   
'title'            => 'Messages',
?>

После исправления на
<?php
   
'title'            => t('Messages'),
?>

и очистки кэша в меню появилось русское слово "Сообщения".
Таким же образом пришлось подправить ещё несколько полей в этом хуке.

t() - нужно или нет

Эпопея с переводом натолкнула меня на интересные мысли. Я делаю модули ориентированные только на русский язык. Поэтому и функцию t() как правило не использую. Это уже как-то вошло в привычку. Зачем что-то писать по английски (тем более, что он у меня далеко не идеален: читать читаю, но складывать предложения из слов этого языка - как-то не очень получается), а потом переводить на русский? А может зря не перевожу?

Ссылки с других сайтов

Пока ничего нет
Tags:

Комментарии:

Re: PrivateMsg: проблема с переводом

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

Re: PrivateMsg: проблема с переводом

Придется похоже к использованию t(). Кроме всего прочего - это часть идеологии Drupal'a. А идеология - это, как уже убедился на собственном опыте, такая вещь: её очень просто нарушить, без видимых последствий, а потом она очень сильно ударяет.

Re: PrivateMsg: проблема с переводом

Угу, это точно. Одним из первых постов как раз писали об этой самой идеалогии Drupal. Хотя сейчас, если честно, я уже своё мнение по этому поводу немножко поменяла. Идеалогия Drupal хороша в случае небольших сайтиков - как только эти сайтики перерастают в высоконагрузочные, приходится пилить всё вплоть до ядра.

Отправить комментарий

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><h2><h3><img><p><b><img>
  • Строки и параграфы переносятся автоматически.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Each email address will be obfuscated in a human readable fashion or (if JavaScript is enabled) replaced with a spamproof clickable link.

Подробнее о форматировании

КАПЧА
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Синдикация материалов