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

02.06.2010

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

Перевод модуля находится в папке 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
Похожие записи

Комментарии

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

Гость
16.06.2012, 00:16

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

Гость
30.08.2012, 21:51

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

Гость
30.08.2012, 22:14

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

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

Гость
14.05.2016, 20:45

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

Добавить комментарий