jLanguage javascript tweaks
Jul 27 2009Намедни камрад tridento изволил хвалить мой маленький блог-заповедник, намекая на то, что не мешало бы прикрутить рюшечку, чтобы у постов поштучно менять язык. Бессонница берёт своё, так что я взялся за такой непосильный труд. Сразу стоит признаться, сделал я не единственно правильным способом, у которого есть свои недостатки. Сразу скажу, что это только неполностью реализованный концепт :)
Собственно, штука в том, чтобы не лезть каждый раз при смене языка поста на сервер, нещадно тягая и без того несчастную базу. При загрузке страницы пользователь получает все возможные языки для каждой записи и переключает по мере необходимости. Более-менее серьёзных обоснований для этого я не вижу, ну да ладно, пользователь нынче пошёл искушённый.
Техническая сторона. В каждом посте в div-контейнере есть несколько дочерних для каждого языка. При отдаче страницы сразу решается, какой div будет виден, остальные скрываются, дабы не портить картину. Переключение происходит при нажатии на пиктограммки флагов стран в начале поста. Переключаем красиво, используя зачем-то подключенный до меня к теме js scriptaculous. Код, выполняющийся по нажатию выглядит примерно следующим образом:
<img onClick="Hide('post-611-belarusian');Hide('post-611-russian'); Show('post-611-belarusian')" alt="belarusian" src="http://bobrik.name/blog/wp-content/plugins/jLanguage/icons/be.png" />
Javascript:
function $(id)
{
return document.getElementById(id);
}
function Hide(id)
{
if ($(id).style.display != 'none')
{
// чудное получение и установка минимальной высоты, чтобы не было «прыжков» сильных
$(id).parentNode.style.minHeight = $(id).parentNode.offsetHeight+"px";
}
$(id).style.display='none';
}
function Show(id)
{
Effect.toggle($(id), 'appear'); // script.aculo.us эффект
$(id).parentNode.style.height = '';
}
В полной мере избавиться от «прыжков» текста записи не удалось, но всё поправимо всё тем же JS фреймворком, просто делаем плавное изменение высоты. Я сделаю как-нибудь на досуге, а вы тоже потренируйтесь, домашнее задание, так сказать.
Рюшечки и напильнички: в RSS ленту должен отправляться один единственный текст на одном языке, не зря несколько лент существует. Наверное стоит ещё убирать флажки, ведь кого они волнуют, если человек запрашивает конкретную ленту? Ещё добавил в меню ссылки для изменения языка глобально, после чего пришлось перелопатить скрипт, изменяющий все внутренние ссылки на странице на ссылки с указанием предпочитаемого языка.
P.s.: опыта работы с js у меня ноль, но в ходе ковыряния очень понравились некоторые крутые мета-штуки, надо бы ознакомиться плотнее
P.p.s.: вся многоязычность на многократно хакнутом jLanguage
P.p.p.s.: ох и разучился я писать нормальные тексты с этим твиттером
Обновления программ – весьма актуальная для Windows тема
Бесплатные программы – тоже будет полезно
Buy viagra online – прямо как в детстве, правда? :)




Мультиязычный блог — это пиздец. Прошу прощения, если что.
Никак не могу понять необходимости. Что заставляет людей этим заниматься?
ps. Мое мыло не влазит в отведенное для него поле. Обидно как-то.
Я вот тоже так считаю, если что. Поле для e-mail как-нибудь растяну, пока уж терпеть придётся
Видел на одном буржуйском рекламном сайте-одностраничнике прилеплено вверху выпадающее меню от онлайнового переводчика. Неплохое решение проблемы, если клиент может быть из любой страны. Вот как это замутить…
куча плагинов есть для такого. перевод, конечно, будет мутноват и забавен, но если уж припёрло, то почему бы и нет