В этом блоге, пожалуй, не принято говорить правду о недостатках плохо о ModX поэтому скажу не вдаваясь в подробности: да, этот подход тянет за собой воз и маленькую тележку проблем.
Вам, как технарю, думаю будет интересно узнать, что всё представление (view) ModX хранит в базе данных. Так было в прошлых версиях, в этой не знаю, но что-то мне подсказывает, что этот принцип «кода в базе данных» сохранен.
Я хранил содержимое полей в БД в формате XML. То есть, запрашивая, скажем, название чего-либо из БД получал ответ в виде XML-документа, элементы которого содержали аттрибут с кодом языка по ISO и переводом в теле. XPath помогал быстро добраться до нужного языка, а кэшированный результат запроса позволял быстро получать перевод на другой язык.
Из плюсов — легкость добавления новой локали, причем абсолютно любой без изменения структуры БД, моделей и прочего. Также легко наращивать функционал системы: хотит добавить ID переводчика, местные наречия, склонения — чуть изменить XML Schema и добавить новый аттрибут.
Из минусов — этот способ годится лишь для небольших текстов, большой объем данных существенно снизит скорость обработки. Объем данных, скорость выборки в этом случае также отходят на второй план.
P.S. Рад, что вам понравилось, я старался.
правду о недостаткахплохо о ModX поэтому скажу не вдаваясь в подробности: да, этот подход тянет за собой воз и маленькую тележку проблем.Из плюсов — легкость добавления новой локали, причем абсолютно любой без изменения структуры БД, моделей и прочего. Также легко наращивать функционал системы: хотит добавить ID переводчика, местные наречия, склонения — чуть изменить XML Schema и добавить новый аттрибут.
Из минусов — этот способ годится лишь для небольших текстов, большой объем данных существенно снизит скорость обработки. Объем данных, скорость выборки в этом случае также отходят на второй план.