Mysql адаптер для Zend_Translate - PullRequest
5 голосов
/ 08 июня 2010

В настоящее время я нахожусь на стадии планирования довольно крупного проекта, который я буду разрабатывать в Zend Framework. Одна из проблем, с которыми я сталкиваюсь, заключается в том, что клиенты захотят переводить не только контент, но и интерфейс. В настоящее время я использую gettext и poedit для управления моими языковыми файлами, но это не вариант для клиента, так как у него, например, не будет доступа по FTP к сайту.

Следовательно, я думаю о mysql back-end с интерфейсом в front-end, чтобы клиент мог управлять своими собственными переводами интерфейса. Однако для Zend_Translate до сих пор нет адаптера mysql.

Итак, есть ли сейчас кто-нибудь из скриптов-адаптеров для Zend_Translate, чтобы он мог работать с таблицей mysql? Или какие-либо аргументы против использования mysql и возможных других решений этой проблемы?

Ответы [ 3 ]

7 голосов
/ 08 июня 2010

Вы можете решить эту проблему по-разному:

Расширьте Zend_Translate_Adapter, чтобы создать свой собственный. Все новые адаптеры отвечают только за получение переводов из источника. То есть вам нужно будет только получить переводы из базы данных. Посмотрите на другие адаптеры и посмотрите, как они реализованы.

Получить данные из базы данных и передать их Zend_Translate_Adapter_Array

Используйте Zend_Translate_Adapter_Csv или Ini. Поскольку было бы больше чтения записи о переводах, это решение сократило бы количество запросов к базе данных. Когда клиент добавляет новый язык или изменяет существующий, просто запишите его в файл, а не в базу данных.

Если вы решите использовать адаптер базы данных, возможно, вы могли бы как-то «пометить» переводы, чтобы на домашней странице вы получали только переводы для домашней страницы, на странице контактов - только переводы для страницы контактов ...

НТН!

3 голосов
/ 08 июня 2010

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

Вместо сохранения данных перевода в базе данных, вы можете напрямую работать с файлами перевода (например, по шаблонам po). Это будет лучшим выбором, если вам просто нужно добавить (добавить в файл) новые строки перевода.

Вы можете использовать опцию Zend_Translate для записи непереведенных сообщений (в файл или любой адаптер журнала, включая базу данных), а затем обработайте журналы или даже создайте прослушиватель, переводящий сохраненные строки.

0 голосов
/ 20 ноября 2010
...