Перевод внешнего API-интерфейса приводит к Drupal - PullRequest
3 голосов
/ 18 марта 2010

Мы создаем многоязычный стек Drupal, и одна из проблем, с которыми мы сталкиваемся, заключается в том, что наш обработчик платежей должен будет отправить нам некоторую информацию. Мы смогли сузить это, чтобы строки, которые они отправляют, выглядели как

<country code>-<number of months>

так что мы можем легко перевести это на любое количество языков, кроме английского.

t('FR-12') все хорошо, если мы хотим перевести это на французское описание, но, поскольку нет английского языка, подобная строка, как t('EN-12'), не может быть переведена.

Аналогично для общей строки: # API_Connection_Error

Поначалу такого рода строковый подход мне действительно показался убедительным, но, похоже, он не работает в Drupal. Есть ли у вас какие-либо предложения о том, как перевести такие общие строки как на английский, так и на другие языки?

Спасибо, я просматривал Google все утро.

1 Ответ

3 голосов
/ 19 марта 2010

Я вижу два способа достичь этого в данный момент:

  1. Вы можете просто заменить определение английского языка по умолчанию на пользовательскую версию . Таким образом, вы можете «переводить» выбранные английские строки, как и на любой другой язык. Если вы сконфигурировали модуль языкового стандарта для возврата к исходной строке в случае отсутствия переводов, вы можете просто добавить свои особые случаи в качестве переводов к своей пользовательской английской версии, а все остальное будет использовать оригинальную английскую версию.

  2. Взгляните на модуль String Overrides - он позволяет вам определять пользовательские переопределения для любой строки, которая проходит через t(), с отдельными переопределениями для языка , включая исходный английский .

Я бы использовал второй вариант в вашем случае, за исключением случаев, когда число «внешних» строк очень велико. См. Первое условие if функции t() для механизма, используемого для переопределений (поиск в специфичных для языка массивах переменных Drupal).

Обратите внимание, что модуль String Overrides просто добавляет страницы пользовательского интерфейса администратора для настройки этих переменных Drupal в Backend - вы также можете добавлять / настраивать их самостоятельно (например, из пользовательского модуля).

...