2012-04-11 3 views
0

Я создаю приложение для двух языков в CakePHP 2.1.x из-за отличных отзывов о «встроенных» функциях локализации Cake. Тем не менее, я борюсь с тем, чтобы эта мощная функция работала.Интернационализация и локализация в CakePHP 2.1

Я знаю, что эта тема была решена для предыдущих версий Cake (here, here, here и here), но она не была решена для торта 2.x. Я также ссылки на эти статьи в поваренной книге (да, я читал ручной):

Пара вещей - я не хочу, чтобы сделать отдельные поддомены для каждого языка. Вместо этого я предпочитаю коммутацию на основе 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");?

ответ

0

Просто введите код в AppController :: beforeFilter() и установите значения на основе того, как вы извлекаете язык, из почтового запроса или части URL.

+0

Спасибо, 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

+0

Пока что это не влияет на сайт. Вот URL: puzzle.leadingedgecommunications.net. Кроме того, я хочу, чтобы языковой стандарт изменился одним нажатием кнопки. Как мне это сделать? – deewilcox

+0

Проблема была в моих файлах .po. Я также не нуждался в setlocale(). – deewilcox

Смежные вопросы