Показ английской версии форума для "буржуев"

grisha2217

Проверенные
Сообщения
913
Решения
6
Реакции
1,389
Баллы
5,715
Занялся доработкой своего форума под англоязычную аудиторию, она маленькая, но присутствует, к тому же, мы заметили, имеет в карманах более крупные деньги. Пробую я зайти на свой сайт с дедика, и он открывается на русском языке... Причиной этому русский язык по дефолту в настройках (всё-таки 90+ процентов аудитории - русскоязычные), при этом у посетителя нет удобной кнопки сменить язык. Придумал решение определить язык пользователя исходя из полученных данных о его браузере. Как мы знаем, Xenforo использует фрейморк Zend, в нём есть готовый класс для определения "локали" посетителя - Zend_Locale.
Вот так можно получить язык посетителя:
$locale = new Zend_Locale();
PHP:
$locale = new Zend_Locale();
$language = $locale->getLanguage();

Результатом может быть ru, ua, de и так далее...

Язык посетителя устанавливается в методе setVisitorLanguage() класса XenForo_Visitor, я немного переписал эту функцию, и вот, что получилось:

PHP:
public function setVisitorLanguage($languageId)
    {
        $languages = (XenForo_Application::isRegistered('languages')
            ? XenForo_Application::get('languages')
            : XenForo_Model::create('XenForo_Model_Language')->getAllLanguagesForCache()
        );

        if ($languageId && !empty($languages[$languageId]))
        {
            $language = $languages[$languageId];
        }
        else
        {
            $locale = new Zend_Locale();

            if (in_array($locale->getLanguage(), ['ru', 'ua', 'kz', 'by']))
            {
                $defaultLanguageId = XenForo_Application::get('options')->defaultLanguageId;
            }
            else
            {
                $defaultLanguageId = 1;
            }

            if (!empty($languages[$defaultLanguageId]))
            {
                $language = $languages[$defaultLanguageId];
            }
            else
            {
                $language = reset($languages);
            }

        }

        if (!$language)
        {
            return; // this probably shouldn't happen
        }
        if (empty($language['phrase_cache']))
        {
            $language['phrase_cache'] = array();
        }

        $this->_language = $language;

        XenForo_Phrase::setLanguageId($language['language_id']);
        XenForo_Phrase::setPhrases($language['phrase_cache']);

        XenForo_Locale::setDefaultLanguage($language);
    }

Тут мы проверяем, принадлежит ли пользователь группе "СНГ", если да, то ставим язык по дефолту (в моём случае это русский), в противном случае, ставим английский (у него ID 1):
PHP:
if (in_array($locale->getLanguage(), ['ru', 'ua', 'kz', 'by']))
{
    $defaultLanguageId = XenForo_Application::get('options')->defaultLanguageId;
}
else
{
    $defaultLanguageId = 1;
}


Плагин мне было писать лень, если кому-то интересно, то напишите сами =)
В итоге: если на форум зайдет англоговорящий посетитель, ему откроется английская версия форума.
 
Название тем и сообщения то на русском все равно будут, а так то их не останавливает, что по умолчанию русский язык :)
 
Skaiman, всё-таки английская версия форума получше будет в плане перевода (его сами разработчики писали), чем гугл тренслейт

Название тем и сообщения то на русском все равно будут,
От этого никуда не денешься((
 
grisha2217, я вот так рассуждаю, ведь не один буржуйский сайт не подстраивается под вьетнамцев, индийцев и французов с немцами, как и немцы с французами под других. Хочешь будь на форуме, не хочешь не будь, но как форум русскоязычный и все пусть принимают это как должное.
 
Skaiman, если первоначальная цель заработать на форуме то как было сказано
мы заметили, имеет в карманах более крупные деньги.
Заточить маркет под бурж не сложно, а чтоб они общались не обязательно. Кому же можно разделить категории на бурж не бурж и каждый будет видеть свой набор категорий, два форума в одном)

Я тут подумал, может быть гемор с индексацией наверно. Гуглобот ходит со своего пула адресов, ему будет показываться ресурс с Английским интерфейсом и с обсуждениями на Русском, что возможно, я не уверен, будет не очень хорошо сказываться на его позициях. Я не уверен, нужно пробовать)
 
Последнее редактирование модератором:
Лучше сделать 2 отдельных форума: 1 на русском, 1 на англ. яз.
 
Глупо начинать с нуля если уже есть ресурс у которого уже есть аудитория.
 
Нашу аудиторию мешать с европейцами/американцами не рекомендую. Разный менталитет, разное понимание что приемлемо, а что нет.

Русский сайт: На видном месте вешается объявление на англ. яз., что есть отдельный англ. сайт
Английский сайт: На видном месте вешается объявление на русском яз., что есть отдельный русский сайт.

И они сами рассортируются
 
Личный опыт или теория? Если личный можно пример реализации?
 
Личный опыт, скинул в личку примеры реализации
 
SuchMuch, и как это работает?) Устанавливать каждый плагин, стиль, настройку на 2 форума?
 
Ну я попробовал. Гугл начал видеть интерфейс на Английском. В структурированные данные так-же попадает Home, Forums и т.д. для гугла, но на позициях и трафике пока это не сказалось. Яндексу пофигу. Ещё понаблюдаю.
 
Сорри за ап старой темы.
Ну я попробовал. Гугл начал видеть интерфейс на Английском. В структурированные данные так-же попадает Home, Forums и т.д. для гугла, но на позициях и трафике пока это не сказалось. Яндексу пофигу. Ещё понаблюдаю.
Пробовали модификацию от ТС или два форума с разным языками?
Если форума - по одному адресу или по разным директориям?
От примеров в лс не отказался бы.
 
Qua, Эх, как давно это было. На первой ветке бросил эту затею, так как помимо того что толку не было, у некоторых юзеров была мешанина из русского контента и английского интерфейса. На второй ветке подошёл более основательно и сделал аддон для отображения англоязычных разделов если выбран соответствующий язык интерфейса, думаю так будет толк, но пока не раскрыл его потенциал, некогда)
 
Qua, Эх, как давно это было. На первой ветке бросил эту затею, так как помимо того что толку не было, у некоторых юзеров была мешанина из русского контента и английского интерфейса. На второй ветке подошёл более основательно и сделал аддон для отображения англоязычных разделов если выбран соответствующий язык интерфейса, думаю так будет толк, но пока не раскрыл его потенциал, некогда)
У меня этот плагин тоже стоит, мб твой и качал.
Думал сделать мультиязычный форум, но в итоге понимаю, что элементарно с поисковиками это будет сложно
 
У меня этот плагин тоже стоит, мб твой и качал.
Думал сделать мультиязычный форум, но в итоге понимаю, что элементарно с поисковиками это будет сложно
Я для поисковиков отключил автодетект языка и все поисковики видят форум только на русском языке.
 
Я для поисковиков отключил автодетект языка и все поисковики видят форум только на русском языке.
А какой в этом смысл? Я считал что профит как раз в том чтобы проиндексировались обе версии и был получен буржуйский трафф
 
  • Мне нравится
Реакции: Qua
Я для поисковиков отключил автодетект языка и все поисковики видят форум только на русском языке.
Выше верно подмечено, одной из локализаций в любом случае приходится жертвовать
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу