Перевод жестко закодированных строк с исходным языком, отличным от английского
Я создаю пользовательский модуль для многоязычного сайта Drupal 7, где язык по умолчанию не английский. Теперь я хочу перевести модуль. Поскольку мои исходные строки не на английском языке, я не могу использовать t()
.
Модуль i18n
предоставляет функцию i18n_string(), которая, казалось бы, выполняет эту работу, но я не могу найти свои строки в admin/config/regional/translate/translate
? Я даже реализовал hook_i18n_string_info()
, чтобы определить свою собственную текстовую группу, которая отображается, но строки этого не делают!
Кто я такой пропал без вести? Или есть лучший способ перевести строки, написанные на другом языке, кроме английского?
2 answers
У нас также есть много сайтов с основным языком, который не является английским.
После нескольких различных подходов мы решили записать все пользовательские строки в наших модулях на английском языке и перевести их с помощью функции t().
Затем мы используем искатель, такой как wget, для обхода всего сайта (чтобы получить все строки в базу данных переводов).
Мы включаем экстрактор шаблонов перевода модуля (https://www.drupal.org/project/potx ) и экспортировать все строки из нашего модуля с этим модулем на наших языках.
Полученные языковые файлы редактируются и добавляются переводы.
Затем этот файл помещается в подпапку "переводы" в нашем файле модуля с расширением *.po.
Удалите и переустановите модуль, чтобы активировать переводы для ваших языков.
Это может показаться большой работой, потому что так оно и есть, но это единственный метод, который действительно работал для нас.
Перейдите в раздел admin/config/regional/i18n/strings и отметьте язык по умолчанию как английский, тогда все будет работать нормально, и вы также можете добавить другой перевод для другого языка, кроме английского.