Тема локализации своих модулей, как-то плохо освещена в рунете. Поделюсь своим опытом.
Перевод модуля находится в папке translations и представляет из себя минимум два файла — modulename.pot (это шаблон перевода) и languagename.po (это сам перевод).
Для их генерации существует модуль Translation template extractor, который извлекает из файлов выбранного модуля текст, передаваемый в функцию t().
Отсюда два требования при написании мультиязычных модулей — весь текст должен быть на английском и проходить через t()
:
drupal_set_message('Сообщение добавлено'); // не правильно
drupal_set_message(t('Message added')); // правильно!
Процесс генерации .pot и .po файлa:
- Скачиваем модуль.
- Распаковываем модуль в папку
sites/all/modules
. - Включаем модуль Translation template extractor на странице
admin/build/modules
. - На странице
admin/build/translate/extract
выбираем свой модуль и извлекаем Регистро независимый шаблон в файл с именем имя_модуля.pot (скриншот). - Там же извлекаем Файл шаблона для перевода на Русский язык с включённой опцией Вложить существующий перевод, в файл 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
Комментарии
Огромное спасибо тебе за инфу! Ща для своего модуля буду перевод делать :)
А для 7-ки что-нить изменилось?
potx доступен и для семёрки
Спасибо.
На 7-ке все так сделал. Импорт с результатом ноль:
"По соображениям безопасности загруженный файл был переименован в news.ru_.po.
Перевод полностью импортирован. Всего новых переведённых строк: 0, обновленных строк: 0, и удаленных строк: 0.
15 строк перевода было пропущено, поскольку они содержали запрещенные HTML-теги." Откуда они там ... Ручной перевод работает.
Решено. Notepad++ не подошел или в ручках дело.
А в семерке что-то изменилось? делаю строго по шаблону - не хочет импортировать, хоть тресни.
Все работает. Используйте Poedit для перевода и ни каких проблем.
Добавить комментарий