2012-01-08 2 views
0

Основываясь на статье ниже, я был в состоянии интернационализации моего CakePHP приложения в определенную степень -CakePHP: Интернационализация Web Application

http://puskin.in/blog/2010/08/cakephp-manage-multiple-language-in-application/

Я хочу расширить эту функциональность и обеспечивает возможность где пользователь может сохранить предпочитаемый язык в его профиле пользователя. И каждый раз, когда пользователь входит в систему, я хочу использовать предпочтительный язык и отображать содержимое сайта на этом языке. Ex - настройка языка Facebook. Как только вы меняете язык, статический контент на веб-сайте изменяется на этот язык.

Кроме того, у меня есть некоторые статические данные, такие как информация о поиске для выпадающих списков. Как должен быть мой дизайн таблицы для поддержки i18n.

Любые фрагменты кода или идеи?

ответ

1

Наличие настроек предпочтений пользователя является тривиальным. Просто добавьте в таблицу пользователя поле language и дайте пользователю возможность установить для него значение. В вашем приложении, вы установить язык по умолчанию в core.php с помощью Configure::write('Config.language', 'eng') и переопределить его в другом месте, лучше всего в AppController::beforeFilter:

public function beforeFilter() { 
    if ($this->Auth->user('language')) { 
     Configure::write('Config.language', $this->Auth->user('language')); 
    } 
} 

Теперь все функциональные возможности l10n торта будет содержимое вывода на выбранном пользователем языке.

Если вам нужна дополнительная языковая логика, которая не распространяется на Cake, вам, возможно, придется ее реализовать самостоятельно. Я предлагаю вам открыть новый конкретный вопрос о конкретных проблемах, которые у вас есть. Как правило, вы будете основывать любую пользовательскую языковую логику на значение в Configure::read('Config.language'). Если у вас есть, скажем, продукты с описаниями на нескольких языках, вы можете иметь отношение Product hasMany Description, где каждый Description имеет атрибут language, который вы фильтруете.

+0

Это именно то, что я искал. И приходя к вашему продукту hasMany Descriptions ... вы могли бы предоставить пример о том, как получить языковой контент на основе предпочитаемого вами языка? Или я мог бы открыть новый вопрос! – jagamot

+0

Да, пожалуйста, откройте новый вопрос после того, как вы достаточно задумаетесь о проблеме, не придя к своему собственному выводу. :) – deceze

+0

Хорошо. Вот мой новый вопрос: http://stackoverflow.com/questions/8775649/cakephp-internationalizing-a-web-application-design-and-examples – jagamot