У нас есть многоязычное (PHP) приложение и мы используем gettext для i18n. В бэкэнде / модели есть несколько классов, которые возвращают сообщения или форматы сообщений для printf ().
Мы используем xgettext для извлечения строк, которые мы хотим перевести.
Мы применяем функцию gettext T_ () во внешнем интерфейсе / представлении - похоже, именно там она и принадлежит. До сих пор мы сохраняли бэкэнд чистым от вызовов T_ (), таким образом, мы также можем отправлять сообщения модульного тестирования.
Итак, во внешнем интерфейсе у нас есть что-то вроде
echo T_($mymodel->getMessage());
или
printf(T_($mymodel->getMessageFormat()), $mymodel->getValue());
Это делает невозможным применение xgettext для извлечения строк, если мы не поместим некоторый фиктивный вызов T _ («мое сообщение% s для перевода») в класс MyModel.
Так что это приводит к более общему вопросу:
Применяете ли вы перевод в бэкэнд-классах, соотв. где вы применяете перевод и как вы отслеживаете строки, которые вы должны перевести?
(мне известно о Вопрос: обходной путь poedit для динамического gettext .)