Как узнать язык браузера php
Определение языка пользователя на PHP
Сайты, которые рассчитаны на множество стран мира, как правило, имеют несколько языков. Безусловно, на всех страницах сайта там можно переключиться с одного языка на другой. Однако, Вы, наверняка, замечали, что в большинстве случаев сайты каким-то образом определяют Ваш язык и устанавливают сразу для Вас наиболее подходяющий. Вот о том, как определяется язык пользователя на PHP, я и расскажу в данной статье.
В основе лежит константа $_SERVER[«HTTP_ACCEPT_LANGUAGE»], которая как раз и содержит сведения о предпочитаемых языках пользователя. Выглядит она примерно так: «ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3«. Здесь перечисляются языки и регионы, а также приоритет q. Чем больше q, тем больше пользователь предпочитает данный язык. Если q нет, значит, оно равно 1. Например, у ru-RU нет q, значит, оно равно 1, и данный язык наиболее подходящий.
Чтобы определить язык пользователя на PHP, надо воспользоваться следующим кодом:
Получив язык по умолчанию, мы можем сразу же установить его и на сайте, тем самым, выводя контент для пользователя на том языке, который он предпочитает.
Таким образом определяется язык пользователя на PHP, что очень пригодится мультиязычным сайтам.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 7 ):
Это полученное значение нужно предавать в движок Вашего сайта, чтобы он знал на каком языке все шаблоны выводить.
В вашем коде 2 ошибки. Поправьте
А вы проверяли,работает или нет,о великий гуру?)
может,перепутали чего?)или забыли? синтаксических ошибок точно нет.
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.
Как определить язык пользователя средствами PHP?
В наше время считается нормальной практикой делать сайт с интерфейсом на нескольких языках. Вы, наверное, уже замечали, что зайдя, например, на facebook.com сайт автоматически определяет Ваш язык и пишет уже на русском. Как это происходит? Поскольку изначально тот же facebook был написан на php, то и пример в разделе php-статей приведу на этом языке.
Данный элемент передаёт серверу информацию о языке посетителя. Он возвращает нам, например, либо en, либо ru и тд. Сама информация выглядит примерно следующим образом:
ru-RU,ru;q=0.8,
en-US;q=0.5,
en;q=0.3
Сначала язык (ru), потом регион (RU), а после уже приоритет (q=0.8). Чем больше приоритет (q), тем больше пользователь предпочитает данный язык. Если q нет, значит, оно равно 1. Например, у ru-RU нет q, значит, оно равно 1, и данный язык наиболее подходящий.
Теперь воспользуемся следующим кодом для определения языка:
Код PHP
В результате получаем язык пользователя по умолчанию. После его можно установить на сайте, а посетители увидят интерфейс уже с нужным ему языком, причём для этого ему не нужно будет совершать каких-либо действий! Всё это будет незаменимо для сайтов, которые подразумевают работу с мультиязычной аудиторией и контентом.
И другой способ определения языка пользователя PHP
Как автоматически переслать посетителя нужную языковую версию сайта PHP?
Как узнать язык браузера php
В этом разделе помещены уроки по PHP скриптам, которые Вы сможете использовать на своих ресурсах.
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Совет: активация отображения всех ошибок в PHP
При поднятии PHP проекта на новом рабочем окружении могут возникнуть ошибки отображение которых изначально скрыто базовыми настройками. Это можно исправить, прописав несколько команд.
Агент
PHP парсер юзер агента с поддержкой Laravel, работающий на базе библиотеки Mobile Detect.
Грамотное определение языка пользователя
Сейчас работаю над сайтом, который претендует на глобальность, естественно и с мультыязычностью у него должно быть все в порядке.
О том как отображать информацию на разных языках тут речи идти не будет. Разговор пойдет о том как определить язык пользователя, и выбрать из доступных на сайте языковых версий наиболее подходящую.
Кому лень читать — посмотрите скринкаст он правда не очень получился, поэтому тут не выкладываю.
Эта строка содержит языки пользователя, которые он предпочитает, и их приоритеты выражаются через q, ели q для языка не задано, то предполагается, что оно будет равно 1. Если постараться отобразить ее в более менее читаемом виде то она выглядит так:
Отсюда видно что я предпочитаю русский язык, а на втором месте у меня английский.
Языки написаны в двух форматах главный код языка это «ru» и «en» в моем случае, который относится к языкоывм стандартам ISO 639
И главный код языка — расширенный код языка в моем случае это «ru-ru» и «en-us» тут расширенный код языка указывает на регион использования языка у меня это United States.
Временами возникает недопонимание с тем как пометить языки, когда списки кодов ISO содержат как двухбуквенные так и трехбуквенные коды (иногда несколько трехбуквенных кодов). Сейчас все действительные коды перечислены в одном IANA реестре, который для языка принимает только одно значение из списков ISO. Если доступен двухбуквенный код ISO, то он будет один в реестре. Иначе реестр будет содержать один трехбуквенный код. Это упростит вещи.
С теорией разобрались переходим к практике:
Напишем конструктор контроллера класса:
Отсортированный по убыванию приоритета языка(значение q)
Далее создаем метод находящую наиболее подходящий язык.
Первым пареметром в нее передается язык используемый по умолчанию, вторым массив ключами которого будут языки которые есть на сайте, а значениями ссылки на него с других языков выглядит массив примерно так:
Как определить язык браузера в PHP
Я использую следующий PHP-скрипт в качестве индекса для моего сайта. Этот скрипт должен включать определенную страницу в зависимости от языка браузера (определяется автоматически). Этот скрипт не работает хорошо со всеми браузерами, поэтому он всегда включает index_en.php для любого обнаруженного языка (причина проблемы, скорее всего, в том, что какой-то заголовок Accept-Language не учитывается). Не могли бы вы предложить мне более надежное решение?
// views: 1 = first visit; >1 = second visit
// Определить язык по агенту пользователя браузера
// определение HTTP_ACCEPT_LANGUAGE & HTTP_USER_AGENT.
// Попытка определить основной язык, если принято несколько языков.
// Попытка обнаружить любой язык, если он еще не обнаружен.
//if(preg_match(«/[[( ]<$K>[;,_-)]/»,$_UA)) // сопоставление различных букв (создать ошибку для seo spyder)
// Вернуть язык по умолчанию, если язык еще не определен.
// Определите язык по умолчанию.
// Определите все доступные языки.
// ПРЕДУПРЕЖДЕНИЕ: не комментировать все доступные языки
// Перенаправление на нужное место.
// Пример реализации aff var lang для имени файла
echo ‘ Обнаружен язык: ‘.lixlpixel_detect_lang(); // Для демонстрации
$lang_var = lixlpixel_detect_lang();//вставьте систему lang var в новую переменную для условного оператора
// Вставьте нужную страницу в соответствии с языком в браузере
include(«index_fr.php»);//включить проверку сеанса DE
include(«index_en.php»);//включите EN во всех остальных случаях обнаружения разных lang
Ответ 1
Например, такой способ:
$lang = substr($_SERVER[‘HTTP_ACCEPT_LANGUAGE’], 0, 2);
$acceptLang = [‘fr’, ‘it’, ‘en’];
Ответ 2
// разбирает список языковых тегов, разделенных запятыми, и сортирует его по величине приемлемости
$languageRanges = explode(‘,’, trim($languageList));
$match[2] = (string) floatval($match[2]);
// сравнить два разобранных массива языковых тегов и найти совпадения
if ($acceptedQuality === 0.0) continue;
if ($availableQuality === 0.0) continue;
if ($matchingGrade > 0) <
// сравнить два языковых тега и различить степень совпадения
$available = parseLanguageList(‘en, fr, it’);
Если findMatches возвращает пустой массив, то совпадений не найдено, и вы можете использовать язык по умолчанию.
Ответ 3
Существующие отве ты сл ишком многословны, поэтому я создал эту уменьшенную версию с автоматическим подбором.
И пример использования:
// языки, которые мы поддерживаем
$available_languages = array(«en», «zh-cn», «es»);
Ответ 4
Это очень простое решение, которое работает лучше всего. Браузеры возвращают языки в порядке предпочтения, поэтому это упрощает проблему. Хотя обозначение языка может состоять более чем из двух символов (например, «EN-US»), обычно достаточно первых двух. В следующем примере кода я ищу совпадение из списка известных языков, о которых знает моя программа.
$lang = substr($lang, 0, 2);
Я надеюсь, что вы найдете это быстрое и простое решение, которое вы сможете легко использовать в своем коде. Я использую это решение в производстве уже довольно долгое время.
Ответ 5
Следующий сценарий представляет собой версию кода, который возвращается к языковым настройкам по умолчанию, если ни один язык не соответствует поддерживаемым, ил и е сли соответствие найдено, он заменяет языковые настройки по умолчанию на новые в соответствии с приоритетом языка. В данном сценарии браузер пользователя установлен в порядке приоритета на испанский, голландский, и английский языки, а приложение поддерживает только английский и голландский языки без региональных вариаций, и английский является языком по умолчанию. Порядок значений в строке «HTTP_ACCEPT_LANGUAGE» не важен, если по какой-то причине браузер не упорядочивает значения правильно.
var_dump($supported_languages); // array(2) < ["en"]=>int(0) [«nl»]=> int(1) >