Перевод модуля находится в папке translations и представляет из себя минимум два файла — modulename.pot (это шаблон перевода) и languagename.po (это сам перевод).
Для их генерации существует модуль Translation template extractor, который извлекает из файлов выбранного модуля текст, передаваемый в функцию t().
Отсюда два требования при написании мультиязычных модулей — весь текст должен быть на английском и проходить через t():
drupal_set_message('Сообщение добавлено'); // не правильно
drupal_set_message(t('Message added')); // правильно!
Процесс генерации .pot и .po файлa:
В папке модуля создаём каталог 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.
— Подробнее про мультиязычность модулей.