Псевдо-мультиязычность в MaxSite CMS

Просмотров: 4350Комментарии: 7
CMS

Понадобилось мне проанглоязычить интерфейс блога. Хотя бы даже не навигацию и виджеты, а всякую служебную информацию типа подсказок и прочая. В общем, по возможности воспользоваться уже имеющимся англоязычным вариантом перевода интерфейса системы. Как лучше всего это сделать?

Я насчитал несколько путей:

  1. Самый честный и он же самый тернистый. Прописываем язык интерфейса в URL (GET или сегмент), а в коде его парсим и выводим соответствующую страницу. Основная сложность тут, как мне кажется, в изменении ссылок на страницах так, чтобы они указывали на свою же "зону".
  2. Достаточно легкий способ изменить ссылки "на лету" (как это показалось моему извращенному изощренному разуму) -- переписать их с помощью JavaScript. Время, конечно, отнимет, но зато все культурно и просто.
  3. Но есть способ и попроще (именно так я и сделал). URL остается прежним, а вся языковая информация хранитя в куках. При загрузке в файле конфига (application/maxsite/mso_config.php) проверяются куки (ветвь elseif оставлена "на будущее") и загружается нужный конфиг. А выставляет куки JavaScript в шаблоне страницы (у меня это application/maxsite/templates/clouds/main-start.php) по клику на ссылку, после чего страница перезагружается.
Участок кода в конфиге:
$ck = mso_get_cookie('lang',NULL);
if ($ck == 'en')
{
    $MSO->language = 'en';
} elseif ($ck == 'ru'){
    $MSO->language = 'ru';
} else {
    $MSO->language = 'ru';
}

Участок кода в шаблоне:

<div id="lang" align="right">
    <a href="#" onclick="document.cookie='lang=en; path=/;'; location.reload();">English</a> | <a href="#" onclick="document.cookie='lang=ru; path=/;'; location.reload();">Русский</a>
</div>

Сделал. Работает. Только мне стало казаться, что при такой системе возможна проблема с кэшем (например, увеличивается количество SQL-запросов). Кэш в CodeIgniter я, признаться, подзабыл. Разберусь, конечно, попозже (счас времени нет). Но может кто из моих читателей может навскидку подсказать, чем сие чревато и как проще всего устранить последствия?

Комментариев: 7 RSS

1 Satisfaction 26-09-2009 11:25

Здравствуйте уважаемый Александр. Могли бы вы рассказать про плагин "Kohana for Wordpress", подключение, практическое применение.

2 Александр Купреев 28-09-2009 13:53

Расскажу. Хотя я не гуру WordPress, этот плагин мне интересен.

3 Валентин 12-05-2013 04:39

А если для каждого языка - свой шаблон? И по-другому никак...

4 Александр Купреев 12-05-2013 16:09

А если для каждого языка - свой шаблон? И по-другому никак...

Придется глубже перекапывать код.

Оставьте комментарий!


Используйте нормальные имена.

     

  

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

MaxSiteAuth. Войти через loginza

(обязательно)