Я создаю приложение для двух языков в CakePHP 2.1.x из-за отличных отзывов о «встроенных» функциях локализации Cake. Тем не менее, я борюсь с тем, чтобы эта мощная функция работала.Интернационализация и локализация в CakePHP 2.1
Я знаю, что эта тема была решена для предыдущих версий Cake (here, here, here и here), но она не была решена для торта 2.x. Я также ссылки на эти статьи в поваренной книге (да, я читал ручной):
- http://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html
- http://book.cakephp.org/2.0/en/core-libraries/behaviors/translate.html
Пара вещей - я не хочу, чтобы сделать отдельные поддомены для каждого языка. Вместо этого я предпочитаю коммутацию на основе URL с нажатием кнопки (в этом случае значок значка). Сайт будет активно поддерживаться, поэтому контент должен обновляться динамически. Просить клиента о сохранении двух отдельных сайтов/баз данных не может быть и речи.
У меня есть поведение, настроенное для моего PostModel, но я не могу сказать, работает ли он. Я также инициализировал I18n, запустив в консоли I18n
, подтвердил наличие таблиц базы данных, настроил мои файлы .po и обернул весь мой контент в __()
. Однако, когда я меняю язык по умолчанию в своем браузере на французский, сайт остается на английском.
Я пробовал компонент P28n, но я думаю, что он устарел для Cake 2.x. Я также попытался перевести язык на основе URL-адресов на основе этого nuts-and-bolts-of-cakephp article, но, по-видимому, он несовместим с новым CakePHP API.
Может ли кто-нибудь указать мне в сторону учебника или инструкций, которые работают с CakePHP 2.x? Здесь еще не упоминается?
Обновление: Я нашел эту статью: http://www.localizingjapan.com/blog/2011/11/10/localizing-a-cakephp-application/comment-page-1/#comment-7467. Кто-нибудь знает, где вы размещаете код для CakeSession::write('Config.language', 'fre');
и setlocale("LC_ALL", "fr_FR.utf8");
?
Спасибо, burzum! Вот мой 'beforeFilter()' в AppController: 'public function beforeFilter() { \t parent :: beforeFilter(); \t CakeSession :: write ('Config.language', 'fre'); \t setlocale ("LC_ALL", "fr_FR.utf8"); \t $ this-> Auth-> allow ('index', 'view', 'home', 'display', 'logout'); } ' – deewilcox
Пока что это не влияет на сайт. Вот URL: puzzle.leadingedgecommunications.net. Кроме того, я хочу, чтобы языковой стандарт изменился одним нажатием кнопки. Как мне это сделать? – deewilcox
Проблема была в моих файлах .po. Я также не нуждался в setlocale(). – deewilcox