Веб разработка

Мысли на полях планшета

Смешарики

Не знаю куда это писать, или им в саппорт, или в юмор. Вот кажеться работаешь ты, получаешь бабло, продаёшь свою хрень, или не хрень, тут жеж имхо всё. Ну так вот оптимально схема получается такое покупатель -> деньги -> продукт -> улучшение продукта -> ещё больше покупателей -> ещё больше денег. Но иногда получается по другому.

 

Подробнее

QTranslate – пособие по установке и настройке

Созданием многоязычного контента в блогах на движке Вордпресса пожалуй уже никого не удивить, и весьма актуальным это является в первую очередь для байнета (беларусская + русская версия) и региональных проектов например рунета (русская версия + версия на национальном языке). А вообще последнее время замечаю хорошую тенденцию на у exUSSR блоггеров: ведение блога на родном языке с версия на русском и английском языках.

Для таких блогов уже нормой стало наличие установленного плагина QTranslate о котором дальше я и хочу рассказать.

Основной принцип которым руководствовался Цинь Цянь (Qian Qin) звучит как «Writing multilingual content is already hard enough, why make the plugin even more complicated?»в переводе «Создание мультиязыкового контента и так весьма тяжело, так зачем делать плагин сложным ?». Мне нравится его подход и результата его работы.

Для начала пару слов об основных возможностях плагина

  • One-Click-переключение между языками – сменить язык так же просто, как переключиться между Visual и HTML режимами в редакторе
  • Привлечение большего количества посетителей. Вы же заботитесь о них, и пишите на их родном языке
  • Больше не надо как-то хитрить для создания многоязыкового сайта – QTranslate делает всё автоматически
  • Нет необходимости лесть в код плагина, удобная установка нового языка прямо из админки wordpress
  • Удобный формат даты и времени для пользователей. Пусть англоязычные пользователи и дальше тащатся от AMPM, а остальные видят дату и время в удобном и привычном для них формате
  • Удобный url вашего блога для разных языков
  • И много других вкусностей…

Итак, сейчас я расскажу про QTranslate, про его установку, настройку и плюсы от его использования.

  1. Скачиваем плагин из вордпресс хранилища или с сайта плагина
  2. Закачиваем его на сервер в папку wp-content/plugins
  3. Докачиваем при необходимости языковые пакеты
  4. Активируем
  5. Настраиваем мультиязычность указывая используемые локализации
  6. Получаем многоязычие на блоге

Вот собственно и всё, но я пожалуй дальше рассмотрю всё на личном примере. Пункты 1-2 пожалуй можно пропустить, тут рассказывать нечего.

Про дополнительные языковые пакеты могу только подсказать где что найти их не составляет труда, например на сайте вордпресса в разделе «Wordpress in Your Language». mo файлы закачиваем в папку lang нашего планига.

Активация плагина происходит стандартным путём через админку Плагины -> Установленные. Находим в списке QTranslate и активируем его. После активации видим кнопку Параметры (Setting или Options).

Сейчас разберём основные блоки окна настройки

Основные настройки QTranslate

Основные настройки QTranslate

Данное окно заключает в себе основные настройки плагина:

  • Указание основного языка блога (Default Language / Order), язык выберается из списка уже настроенных языков
  • Возможность прятать посты, если они не переведены на другой язык (Hide Untranslated Content)
  • Возможность автоматического определения языка пользователя (Detect Browser Language)

Мне кажется нечего тут пояснять, если есть вопросы – в комменты.

Следующий блок даёт возможность управления установленными и уже настроенными локализациями.

Управление уже настроенными и установленными локализациями

Управление уже настроенными и установленными локализациями

Что такое флаг(Flag) и название локализации (Name) я думаю обьяснять не надо.

Action: Enable – включить языковую версию блога

Disable – отключить.

Если вы используете все установленные локализации у вас везде должен быть статус Disable, то есть возможность отключить язык. В моём случаи Enable, возможность включения, стоит около литовского языка. Я просто его больше не использую.

Edit – перейти к настройкам языка.

Delete – удалить одну из языковых версий блога. Язык установленный по умолчанию удалить нельзя. Если его всё-таки надо удалить в первом блоке надо указать основным другой язык.

Последний блок это блок для добавления языка (Add Language).

Language Code - двухбуквенный код языка, около поля приведена ссылка по которой можно узнать код для вашего языка. У беларусского это be, русский ru, украинский uk. Да, меня тоже всегда улыбало что домен be это Бельгия, а совсем не Беларусь, а uk это Великобритания, а не Украина. Ну а рушка везде рушкой остаётся.

Flag - обычный выбор картинки флага для языка. Используемый у меня флаг не является официальным, хоть и родной, флагом Беларуси. Да и пишу я не на наркомовке, а на тарашкевитцы – так что всё нормально. Кстати если хотите заменить флаг то они хранятся в папке flags нашего плагина QTranslate.

Name – название языка которое будет отображено в блоге. Полёт мысли, никаких стандартов.

Locale – тут требуется указать имя файла локализации. Для беларуского это be_BY.

Date Format – формат вывода даты согласно правилам php. Ссылка приведена рядом, если нужна помощь пишите в комменты.

– тоже самое, но уже для вывода времени.

Not Available Message – сообщение показываемое посетителю при отсутствии перевода поста на какой-либо из языков.

Вот так выглядит моя админка после установки QTranslateА вот так выгладит мой мультиязыковой блог.

Думаю статья поможет начинающим мультиблогерам, если есть вопросы – вэлком в комментарии.

Подробнее

Ошибка Internal Server Error

Закачивал сегодня на сервак новую версию True-CMS, как всегда появилась ошибка Internal Server Error и как это обычно бывает и в этот раз я забыл как решить эту проблему.

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


Ошибка

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.

На этот раз данная проблема возникла из-за неправильно указанного RewriteBase. Что же такое Rewrite Base ? RewriteBase отвечает за базовый url для преобразований в контексте каталога.

Изменение RewriteBase /cms/ в локальном htaccess на RewriteBase / отлично помогло решить проблему.

Подробнее

Обновление qtranslate для вордпресс 2.8.5

После выхода wordpress 2.8.5 плагин qtranslate у всех высыпался с ошибкой совместимости. Как всегда есть два пути решения проблемы: правка ручками и ожидание новой версии от разработчика плагина.

Подробнее

Шпаргалка HTML5 тегов

html5cheatsheetДовольно известный сайт woork выпустил свой вариант таблицы тегов HTML5 с неплохим описанием атрибутов. Дизайн таблицы весьма приятен, и выполнен в формате A3. Файл можно распечатать и повесить над рабочим местом, ведь внешний вид плаката хорош.

Подробнее

Тестирование выносливости cms

В воскресение будем гонять студийную cms`ку на нагрузку средствами WAPT, рассчитываю на выносливость в 100k юзеров в сутки, хотя думаю сразу столько не возмём, надо систему кеширования доводить до ума. Ах да, ещё и из-за ойки нагрузка больше должна получится. Эх, жду не дождусь результатов.

Подробнее

Заметка о ночной работе

Сижу, смотрю на написанный ночью код и пытаюсь понять почему оно работает и где моя логика. Задачи которые решал ночью написанный код полностью решает, но не могу понять свою же логику и почему оно работает именно так как надо. Наткнулся на непонятный кусок кода - удалил, продолжает работать, удалил ещё пару блоков кода, всё ровно работает. Сделал ещё пару чисток - получил красивый, достаточно оптимизированный код. Сижу удивлённый, пью кофе и решаю толи ждать очередной ночи, толи поработать вечером.
Подробнее

Сонные мысли о работе

Разобрался с tinymce и ойкой, всё, можно идти спать. Админ панель принимает всё более законченный вид. Радует.

Подробнее

Хітрая заглушка на сайце, атрыманне выгады ад недаступнасці сэрвісу

Сайт на плановом ремонте. Но это временно.[/caption] Вось прадстаўце, ёсць у вас невялікі такі, хатні інтэрнэт-бізнэс. Прадаеце сабе спакойна праз інэт-вітрыну футболкі якія-небудзь, або іншую дробязь, зараз гэта не важна. І вось у адзін дзень трэба вам зачыніць сваю крамачку напрыклад на дзень, для прафілактыкі там, альбо абнаўленні вялікага. І што ж атрымоўваецца, а атрымоўваецца што крама для прыкладу цэлыя суткі будзе не даступная, кліенты якія знаходзіць вас праз пошуковыя сістэмы убачаць якую-небудзь стандартную заглушку, пакрыўдзяцца і сыдуць да канкурэнтаў, а раптам ім там спадабацца і яны не вернуцца. Жах! І вось тут выкарыстаем сваю кемлівасць і абарочваем ўсё гэта сабе ў выгаду. Вот представим, есть у небольшой такой, домашний интернет-бизнес. Продаёте себе спокойно через инет-витрину футболки какие-нибудь, или другую мелочь, сейчас это не важно. И вот в один прекрасный день надо вам закрыть свой магазинчик скажем на день, для профилактики там, или обновления большого. И что же выходит, а выходит что магазин для примера целые сутки будет не доступен, клиенты приходящие через поиск увидят какую-нибудь стандартную заглушку, обидятся и уйдут к конкурентам, а вдруг им там понравиться и они не вернутся. Ужас! И вот тут добавляем мы немного смекалки (не люблю слово креатив) и оборачиваем всё это себе в выгоду. Заглушка. Заглушкі бываюць трох відаў: * Стандартная * Са зваротнай сувяззю * Апошні довад каралёў Пры стандартнай заглушцы мы ўбачым звычайны тэкст пасярод экрана які паведамляе нам аб тым што сайт часова зачынены. Кліент зачыняе браўзэр, сыходзіць ад нас. Пры заглушцы з зваротнай сувяззю мы просім яго ўвесці якую-небудзь кантактную інфармацыю, будзь то email або нумар icq. З плюсаў можна вылучыць тое, што мы атрымліваем кантакт кліента, і акрамя таго што мы яму паведамім калі аднавім працу, мы можам яшчэ і рассылаць рэкламныя прапановы. Добрым тонам лічыцца пытаць у патэнцыйнага кліента жаданне на атрыманне рэкламных прапаноў, у адваротным выпадку ліст будзем пазначана як спам, а крама атрымае дрэнную рэпутацыю. Але тут ёсць адзін вялікі мінус. Калі карыстач аб нас не ведае, і паслугамі нашай крамы не карыстаўся, ён у большасці выпадкаў не пакіне свой кантакт, пазбягаючы магчымасці патрапіць ў спам базу. Апошні довад каралёў. Вось я і дайшоў да апошняга доваду каралёў, не, не войны - грошай. Любы пакупнік кахае свае грошы, і мае жаданне растацца з найменшай іх колькасцю. Дык вось, апошні выгляд заглушкі сумяшчае ў сабе акрамя стандартнай заглушкі з зваротнай сувяззю яшчэ і прапанову на атрыманне зніжкі пасля адкрыцця. Што мы робім ? Вешаем заглушку з абяцаннем даслаць на дадзеныя кліентам кантакты прома код па якім ён пасля адкрыцця атрымае не вялікую зніжку. Але ў нас усё яшчэ застаецца боязь кліента патрапіць у спам базу, а абяцанне зніжкі ад крамы, якую кліент бачыць першы раз у жыцці ўжо вельмі моцна падобна на жаданне спамераў займець email. Але тут думка ізноў ідзе не зусім стандартная. Мы прапаноўваем патэнцыйнаму кліенту прома код проста так, без указання кантактнай інфармацыі, а пры ўказанні кантактаў абяцаем яшчэ больш смачны бонус. Выснова. За той час што наша інтэрнэт-крама не працуе таксама можна атрымаць выгаду. Варта забыцца аб стандартных заглушках. Наша заглушка, арыентаваная на атрыманне прыбытку і кліенцкай базы нават калі мы не працуем павінна ўключаць у сябе:
  • Паведамленне аб часавай недаступнасці
  • Прапанова невялікай (хай будзе 5%) зніжкі без указання кантактнай інфармацыі
  • Прапанова значнейшай (хай будзе 7%) зніжкі пры атрыманні прома кода на адзін з дадзеных кантактаў
  • Форма, якая дае магчымасць паведаміць аб зніжцы сябрам і знаёмым
У мяне пры прыблізна за 20 гадзін недаступнасці крамы заказчыка атрымалася наступнае:
  • па статыстыцы google analytics наведванне выраслі амаль у 2 разы
  • колькасць новых наведванняў у адсоткавых суадносінах склала 36%
  • агульны прома код, які выдаваўся без указання кантактаў, выкарыстоўваўся амаль 2 тысячы разоў
  • у базе ~800 паштовых і icq кантактаў кліентаў
  • з іх было выкарыстана амаль 600 унікальных кодаў, што дало магчымасць стварэння звязка "кантакты + набытыя тавары = інтэрасы кліента"
  • невялікае інфармацыйнае эха па блогах
  • страта грошай на зніжцы кампенсаваная павелічэннем абароту
  • атрымаў прэмію -)
Мне эксперымент спадабаўся. Данная статья «Грамотная заглушка для интернет магазина» доступна также на русском языке Заглушка. Заглушки бывают трёх видов:
  • Стандартная
  • С обратной связью
  • Последний довод королей
При стандартной заглушке мы увидим обычный текст посреди экрана сообщающий нам о том что сайт временно закрыт. Клиент закрывает браузер, заказ уходит. При заглушке с обратной связью мы просим его ввести какую-нибудь контактную информацию, будь то email или номер icq. Из плюсов можно выделить то, что мы получаем контакт клиента, и кроме того что мы ему сообщим когда восстановим работу, мы можем ещё и рассылать рекламные предложения. Хорошим тонам считается спрашивать у потенциального клиента желание на получение рекламных предложений, в противном случае письмо будем помечено как спам, а магазин получит плохую репутацию. Но тут есть один большой минус. Если пользователь о нас не знает, и услугами нашего магазина не пользовался, он в большинстве случаев не оставит свой контакт, избегая попадания в спам базы. Последний довод королей. Вот я и дошел до последнего довода королей, нет, не войны - денег. Любой покупатель любит свои деньги, и имеет желание расстаться с наименьшим их количеством. Так вот, последний вид заглушки совмещает в себе кроме стандартной заглушки с обратной связью ещё и предложение на получение скидки после открытия. Что мы делаем ? Вешаем заглушку с обещанием прислать на указанные клиентом контакты промо код по которому он после открытия получит незначительную скидку. Но у нас всё ещё остаётся боязнь клиента попасть в спам базу, а обещание скидки от магазина который клиент видит первый раз в жизни уж очень сильно похоже на желание спамеров заполучить email. Но тут мысль опять идёт не совсем стандартно. Мы предлагаем потенциальному клиенту промо код просто так, без указания контактной информации, а при указании контактов обещаем ещё более вкусный бонус. Вывод. За то время что наш интернет-магазин не работает тоже можно получить выгоду. Следует забыть о стандартный заглушках. Наша заглушка, ориентированная на получения прибыли и клиентской базы даже когда мы не работаем должна включать в себя:
  • Сообщение о временной недоступности
  • Предложение небольшой (пусть будет 5%) скидки без указания контактной информации
  • Предложение более значительной (пусть будет 7%) скидки при получении промо кода на один из указанных контактов
  • Форма дающая возможность сообщить о скидке друзьям и знакомым
У меня при приблизительно 20 часовой недоступности магазина заказчика получилось следующее:
  • по статистике google analytics посещение выросли почти в 2 раза
  • количество новых посещений в процентном соотношении составило 36%
  • общий промо код, который без выдавался без указания контактов, использовался почти 2 тысячи раз
  • в базе ~800 почтовых и icq контактов клиентов
  • из них было использовано почти 600 уникальных кодов, что дало возможность создания связки "контакты + приобретённые товары = интересы клиента"
  • небольшое эхо по блогам
  • потеря денег на скидке компенсирована увеличением оборота
  • дали премию -)
Мне эксперимент понравился.
Подробнее

Защита файлов от "невключенной" загрузки

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

define(MAIN,true);

а в файле невключенную загрузку которого мы должны запретить юзаем этот код if (!defined("MAIN")) { echo ("Ошибка инициализация ядра матрицы"); exit; } Вот пожалуй и всё. Правда может быть кто-то знает более элегантный способ ?
Подробнее