Перевод жестко закодированных строк с исходным языком, отличным от английского


Я создаю пользовательский модуль для многоязычного сайта Drupal 7, где язык по умолчанию не английский. Теперь я хочу перевести модуль. Поскольку мои исходные строки не на английском языке, я не могу использовать t().

Модуль i18n предоставляет функцию i18n_string(), которая, казалось бы, выполняет эту работу, но я не могу найти свои строки в admin/config/regional/translate/translate? Я даже реализовал hook_i18n_string_info(), чтобы определить свою собственную текстовую группу, которая отображается, но строки этого не делают!

Кто я такой пропал без вести? Или есть лучший способ перевести строки, написанные на другом языке, кроме английского?

Author: daniels, 2013-11-29

2 answers

У нас также есть много сайтов с основным языком, который не является английским.

После нескольких различных подходов мы решили записать все пользовательские строки в наших модулях на английском языке и перевести их с помощью функции t().

Затем мы используем искатель, такой как wget, для обхода всего сайта (чтобы получить все строки в базу данных переводов).

Мы включаем экстрактор шаблонов перевода модуля (https://www.drupal.org/project/potx ) и экспортировать все строки из нашего модуля с этим модулем на наших языках.

Полученные языковые файлы редактируются и добавляются переводы.

Затем этот файл помещается в подпапку "переводы" в нашем файле модуля с расширением *.po.

Удалите и переустановите модуль, чтобы активировать переводы для ваших языков.

Это может показаться большой работой, потому что так оно и есть, но это единственный метод, который действительно работал для нас.

 2
Author: lizifox, 2016-10-13 12:57:41

Перейдите в раздел admin/config/regional/i18n/strings и отметьте язык по умолчанию как английский, тогда все будет работать нормально, и вы также можете добавить другой перевод для другого языка, кроме английского.

 0
Author: Nitesh Sethia, 2013-11-29 13:20:50