Zend_Translate: не строка, а основанный на идентификаторе перевод - или как обрабатывать изменения в исходной строке
Насколько я понял, Zend_Translate использует строки в качестве ключей для файлов перевода. Это означает, что если я изменю исходную строку (например, исправлю опечатку), все переводы для этой строки будут потеряны.
Есть ли способ автоматически обновить эти переводы? Моя идея состоит в том, чтобы пометить эти переводы как "TODO", когда исходная строка изменилась.
Я полагаю, что для этого мне нужно использовать систему перевода на основе идентификатора вместо системы перевода на основе строк. Каждая строка имеет уникальный идентификатор.
Я знаю, что система перевода на основе строк имеет то преимущество, что одинаковые строки не нужно переводить дважды. Это очень редкий случай использования в моем приложении, поэтому перевод одинаковых строк в два раза был бы абсолютно нормальным.
Я думал о реализации этого сам, но я не знаю, как сделать это с хорошей производительностью.
Есть предложения по этому поводу? Может ли Zend_Translate обрабатывать изменения в исходной строке? Существуют ли другие системы перевода, которые могут справиться с этим вариантом использования?
1 ответ
Это не может быть обработано автоматически. По крайней мере, не легко. (это может быть сделано с помощью анализа кода, генерации кода и т. д.). Мы использовали "заглушки" для перевода - $this->translate('please-register') // Please register.
Работает нормально, но добавляет больше работы для разработчиков - им нужно создавать переводческие файлы даже на родном языке.:)