Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Проблема с L10N - язык всегда определяется автоматически

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
bunyan

цитировать



Зарегистрирован: 15 Ноя 2007 14:57:37
Сообщения: 17

СообщениеДобавлено: 16 Ноя 2007 07:31:33    Заголовок сообщения: Проблема с L10N - язык всегда определяется автоматически Ответить с цитатой

В beforeFilter (AppController) определяю язык из url, записываю в конфиг:

Configure::write('Config.language', $urlLang);

В \app\locale\ есть два файла с локализацией :

\eng\LC_MESSAGES\default.po
\rus\LC_MESSAGES\default.po

Проблема в том, что даже если в url передается язык "ru", страницы все равно отображаются с английскими строками, точнее, они на том языке, который указан в браузере, т.е. срабатывает автоопределение. Если поставить в браузере русский, то страницы будут на русском (то есть файлы с локализацией читаются), но нажатие на ссылку изменения языка (English) ни к чему не приведет.

Получается, что изменение Config.language, которое должно иметь более высокий приоритет, чем автоопределение, ничего не дает.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
SkieDr

цитировать



Зарегистрирован: 13 Ноя 2007 12:13:38
Сообщения: 16

СообщениеДобавлено: 16 Ноя 2007 08:42:00    Заголовок сообщения: Ответить с цитатой

Вызывай из beforeFilter что то вроде
function setL10nLocale($language) {
$I18n =& I18n::getInstance();
$I18n->l10n->get($language);
$I18n->locale=$language;
}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение MSN Messenger
bunyan

цитировать



Зарегистрирован: 15 Ноя 2007 14:57:37
Сообщения: 17

СообщениеДобавлено: 16 Ноя 2007 09:25:48    Заголовок сообщения: Ответить с цитатой

SkieDr, огромное спасибо!

Заработало, строку

$I18n->locale=$language;

заменил на

$I18n->l10n->locale=$I18n->l10n->__l10nCatalog[$language]['locale'];

Интересно, а почему только так? Везде ведь пишут, что нужно просто сохранять Config.language?
_________________
Блог о CakePHP
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru