Языковой таргетинг при входе в IPB в зависимости от страны с помощью mod_GeoIP ../images/2thTitles/TFreeCat.jpg 583
Языковой таргетинг при входе в IPB в зависимости от страны с помощью mod_GeoIP
Часто необходимо чтобы пользователи, заходящие из разных стран, в режиме Гостя(Guest) могли читать форум на родном(или хотя бы понятном) языке. Чтобы проверить - работает ли он или нет, пишем небольшой файл: <?php $country_code = apache_note("GEOIP_COUNTRY_CODE"); echo "Код страны: " . $country_code . "\n"; ?>Затем сохраняем его на сервер, под именем, скажем 1.php - и вызываем в строке браузера. Если код страны показывается правильно(для России, например, это будет RU), то всё отлично. Если нет - то просим провайдера настроить Apache(или настраиваем сами - если провайдерсвуете самостоятельно). Теперь переходим к реализации таргетинга. Сначала смотрим какие языковые шаблоны у вас есть на IPB и какие у них имена. Для этого заходим с каталог lang и смотрим какие там имеются подкаталоги. В форуме, на котором будет осуществляться таргетинг, допустим, имеются 2 каталога: en для английского языка и ru для русского. Теперь открываем файл index.php . Ищем там такую конструкцию: if ($ibforums->vars['default_language'] == "")и удаляем его и 3 последующих строки, например в данном форуме это были такие: if ($ibforums->vars['default_language'] == "") { $ibforums->vars['default_language'] = 'ru'; }Вместо них мы поместим код, выбирающий язык в зависимости от страны. Допустим для стран, входящих в бывший СССР это будет русский, а для остальных - английский. Тогда код будет такой: $RUS_countries = array('AM','AZ','BY','EE','GE','KG','KZ','LT','LV','MD','RU','TJ','TM','UA','UZ'); $country_code = apache_note("GEOIP_COUNTRY_CODE"); if (in_array($country_code, $RUS_countries)) { $ibforums->vars['default_language'] = 'ru'; } else { $ibforums->vars['default_language'] = 'en'; }Данный метод был использован на IPB 1.3.1, но можно применить и на IPB 2.x.x - поскольку в различных подверсиях IPB 2 конструкция кода для выбора языка либо такая же - либо очень похожа. |