xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Создание перевода своего модуля

Опубликовано в

Тема локализации своих модулей, как-то плохо освещена в рунете. Поделюсь своим опытом.

Перевод модуля находится в папке translations и представляет из себя минимум два файла — modulename.pot (это шаблон перевода) и languagename.po (это сам перевод).

Для их генерации существует модуль Translation template extractor, который извлекает из файлов выбранного модуля текст, передаваемый в функцию t().

Отсюда два требования при написании мультиязычных модулей — весь текст должен быть на английском и проходить через t():

drupal_set_message('Сообщение добавлено'); // не правильно
drupal_set_message(t('Message added')); // правильно!

Процесс генерации .pot и .po файлa:

  1. Скачиваем модуль.
  2. Распаковываем модуль в папку sites/all/modules.
  3. Включаем модуль Translation template extractor на странице admin/build/modules.
  4. На странице admin/build/translate/extract выбираем свой модуль и извлекаем Регистро независимый шаблон в файл с именем имя_модуля.pot (скриншот).
  5. Там же извлекаем Файл шаблона для перевода на Русский язык с включённой опцией Вложить существующий перевод, в файл ru.po (скриншот).

В папке модуля создаём каталог translations, куда кладём созданные файлы.

Открываем файл ru.po в любом текстовом редакторе, либо с помощью программы Poedit, и добавляем в msgstr русский перевод соответствующих msgid.

Пример переведённого файла ru.po модуля comment_notify:

#: comment_notify.module:485
msgid "source comment"
msgstr "источник комментария"
 
#: comment_notify.module:512
msgid "Email to unsubscribe"
msgstr "Емайл, для которого нужно отключить уведомления"

Далее импортируем получившийся файл ru.po на странице admin/build/translate/import.

Перевод готов. Теперь при первой установке модуля, друпал будет автоматически импортировать нужные .po файлы из каталога translations.

Подробнее про мультиязычность модулей.
Как обновить перевод своего модуля при запуске update.php

Написанное актуально для Drupal 6
Похожие записи

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

Огромное спасибо тебе за инфу! Ща для своего модуля буду перевод делать :)

А для 7-ки что-нить изменилось?

potx доступен и для семёрки

Спасибо.

На 7-ке все так сделал. Импорт с результатом ноль:
"По соображениям безопасности загруженный файл был переименован в news.ru_.po.
Перевод полностью импортирован. Всего новых переведённых строк: 0, обновленных строк: 0, и удаленных строк: 0.
15 строк перевода было пропущено, поскольку они содержали запрещенные HTML-теги." Откуда они там ... Ручной перевод работает.

Решено. Notepad++ не подошел или в ручках дело.

А в семерке что-то изменилось? делаю строго по шаблону - не хочет импортировать, хоть тресни.

Все работает. Используйте Poedit для перевода и ни каких проблем.

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

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

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