Язык браузера как посмотреть

Обновлено: 08.07.2024

У меня есть веб-сайт (Flash), локализованный на дюжину языков, и я хочу автоматически определить значение по умолчанию в зависимости от настроек браузера пользователя, чтобы минимизировать шаги для доступа к контенту.

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

вопросы:

каков был бы лучший способ "угадать" пользователя локаль?

существуют ли какие-либо существующие простые классы/функции, которые могли бы мне помочь (без сложных пакетов локализации)? Специально, чтобы разбить все возможные языки на меньшее число (переводы, которые у меня есть) на умный способ.

в какой момент я могу доверять такому решению?

любые другие обходные пути или предложения?

к сожалению, этот заголовок недоступен для чтения внутри JavaScript; все, что вы получаете, это navigator.language , который сообщает вам, какая локализованная версия веб-браузера была установлена. Это не обязательно то же самое, что и предпочтительный язык(ы) пользователя. На IE вы вместо get systemLanguage (язык установленной ОС), browserLanguage (как и language ) и userLanguage (пользователь настроил область ОС), которые все одинаково бесполезны.

если бы мне пришлось выбирать между этими свойствами, я бы принюхиваться userLanguage во-первых, возвращаясь к language и только после этого (если они не соответствуют любому доступному языку), глядя на browserLanguage и наконец systemLanguage .

если вы можете поместить сценарий на стороне сервера где-то еще в сети, который просто читает заголовок Accept-Language и выплевывает его обратно как файл JavaScript со значением заголовка в строке, например.:

затем вы можете включить

в Chrome и Firefox 32+, навигатор.языки содержат массив локалей в порядке предпочтений пользователя и являются более точными, чем navigator.язык, однако, чтобы сделать его обратно совместимым (протестированный Chrome / IE / Firefox / Safari), используйте следующее:

Узнать информацию о вашем браузере онлайн

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

  1. Название и версию браузера.
  2. Включены ли coolie и javascript.
  3. Наличие и версию Flash плеера.
  4. Язык браузера.
  5. Текущий размер окна браузера.
  6. Строку User-agent.
  7. Список установленных плагинов.

Узнать версию браузера.

Популярные браузеры

В первую очередь на этой странице можно узнать, какой браузер у вас установлен. Название и версия браузера определяется в первую очередь. В самом верху списка отображается иконка обозревателя, его версия и релиз. Сервис способен определять и анализировать информацию о следующих браузерах: Google Chrome, Mozilla Firefox, Opera, Opera Mini, Yandex browser, Internet Explorer, Safari, Netscape, Konqueror, SeaMonkey, Minefield, Maxthon, K-Meleon, Iceweasel, Camino, а также целый ряд менее известных браузеров, многочисленные варианты сборок и модификаций.

Определить включены ли cookie и javascript.

Частенько, особенно при установке нового браузера, возникает проблема с работой какого-либо сайта или приложения. В качестве одной из причин некорректного отображения час то выступают неправильный настройки браузера, в частности кук и поддежки javascript. На этой странице, в числе прочего, вы можете проверить включены ли cookie и включен ли javascript. Проверка cookie происходит с помощью двойной переадресации страницы на саму себя, поэтому ваш антивирус может сообщить об этом. Не переживайте, все нормально :)

Узнать версию флеш плеера.

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

Определить язык браузера онлайн.

С помощью нашего сервиса можно также определить язык браузера. Данная опция не является самой востребованной, но может пригодиться при локализации и переводе различных онлайн продуктов, во время которых часто приходится переключать язык браузера туда и обратно. Чтобы не возникало путаницы, вы можете всегда посмотреть язык вашего обозревателя на этой странице.

Текущий размер окна браузера и строка User-agent.

Дополнительно определитель выводит информацию о размере окна браузера и строчку User-agent. Эти показатели помогут верстальщикам, программистам и веб мастерам при отладке сайтов и приложений. Во-первых, при верстке нужно смотреть отображение сайта на разных устройствах. А поскольку не всегда есть возможность протестировать верстку непосредственно на девайсе, то можно просто подобрать размер окна браузера один в один с размером экрана гаджета. Строчка User-agent, в свою очередь, содержит огромное количество информации о браузере клиента. Эту информацию полезно изучать при написании различных php и javascript кроссбраузерных скриптов.

Список плагинов, установленных в вашем браузере.

В числе прочего, вы можете определить и узнать полный список плагинов вашего браузера. Они выводятся в самом низу и представляют собой список, в котором имя каждого плагина находится на новой строке. Рядом с именем в скобках указывается название .dll файла плагина. Следует отметить, что в этом списке отображаются только включенные (активные) плагины и расширения.

Я использую следующий PHP-скрипт в качестве индекса для моего сайта. Этот скрипт должен включать определенную страницу в зависимости от языка браузера (определяется автоматически). Этот скрипт не работает хорошо со всеми браузерами, поэтому он всегда включает index_en.php для любого обнаруженного языка (причина проблемы, скорее всего, в том, что какой-то заголовок Accept-Language не учитывается). Не могли бы вы предложить мне более надежное решение?

<?php

// открыть сессию

session_start();

// views: 1 = first visit; >1 = second visit

// Определить язык по агенту пользователя браузера

function lixlpixel_get_env_var($Var)

if(empty($GLOBALS[$Var]))

$GLOBALS[$Var]=(!empty($GLOBALS['_SERVER'][$Var]))?

$GLOBALS['_SERVER'][$Var] : (!empty($GLOBALS['HTTP_SERVER_VARS'][$Var])) ? $GLOBALS['HTTP_SERVER_VARS'][$Var]:'';

>

>

function lixlpixel_detect_lang()

// определение HTTP_ACCEPT_LANGUAGE & HTTP_USER_AGENT.

lixlpixel_get_env_var('HTTP_ACCEPT_LANGUAGE');

lixlpixel_get_env_var('HTTP_USER_AGENT');

$_AL=strtolower($GLOBALS['HTTP_ACCEPT_LANGUAGE']);

$_UA=strtolower($GLOBALS['HTTP_USER_AGENT']);

// Попытка определить основной язык, если принято несколько языков.

foreach($GLOBALS['_LANG'] as $K)

if(strpos($_AL, $K)===0)

return $K;

>

// Попытка обнаружить любой язык, если он еще не обнаружен.

foreach($GLOBALS['_LANG'] as $K)

if(strpos($_AL, $K)!==false)

return $K;

>

foreach($GLOBALS['_LANG'] as $K)

//if(preg_match("/[[( ][;,_-)]/",$_UA)) // сопоставление различных букв (создать ошибку для seo spyder)

return $K;

>

// Вернуть язык по умолчанию, если язык еще не определен.

return $GLOBALS['_DLANG'];

>

// Определите язык по умолчанию.

$GLOBALS['_DLANG']='en';

// Определите все доступные языки.

// ПРЕДУПРЕЖДЕНИЕ: не комментировать все доступные языки

$GLOBALS['_LANG'] = array(

'af', // afrikaans.

'ar', // arabic.

'bg', // bulgarian.

'ca', // catalan.

'cs', // czech.

'da', // danish.

'de', // german.

'el', // greek.

'en', // english.

'es', // spanish.

'et', // estonian.

'fi', // finnish.

'fr', // french.

'gl', // galician.

'he', // hebrew.

'hi', // hindi.

'hr', // croatian.

'hu', // hungarian.

'id', // indonesian.

'it', // italian.

'ja', // japanese.

'ko', // korean.

'ka', // georgian.

'lt', // lithuanian.

'lv', // latvian.

'ms', // malay.

'nl', // dutch.

'no', // norwegian.

'pl', // polish.

'pt', // portuguese.

'ro', // romanian.

'ru', // russian.

'sk', // slovak.

'sl', // slovenian.

'sq', // albanian.

'sr', // serbian.

'sv', // swedish.

'th', // thai.

'tr', // turkish.

'uk', // ukrainian.

'zh' // chinese.

);

// Перенаправление на нужное место.

// Пример реализации aff var lang для имени файла

/*

echo ' Обнаружен язык: '.lixlpixel_detect_lang(); // Для демонстрации

echo "<br />";

*/

$lang_var = lixlpixel_detect_lang();//вставьте систему lang var в новую переменную для условного оператора

/*

echo "<br />";

echo $lang_var; // выведите var для отслеживания

echo "<br />";

*/

// Вставьте нужную страницу в соответствии с языком в браузере

switch ($lang_var)

case "fr":

//echo "PAGE DE";

include("index_fr.php");//включить проверку сеанса DE

break;

case "it":

//echo "PAGE IT";

include("index_it.php");

break;

case "en":

//echo "PAGE EN";

include("index_en.php");

break;

default:

//echo "PAGE EN - Setting Default";

include("index_en.php");//включите EN во всех остальных случаях обнаружения разных lang

break;

>

?>

Ответ 1

Например, такой способ:

<?php

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

$acceptLang = ['fr', 'it', 'en'];

$lang = in_array($lang, $acceptLang) ? $lang : 'en';

require_once "index_.php";

?>

Ответ 2

Ответ 3

', strtolower($http_accept_language), $matches, PREG_SET_ORDER);

foreach($matches as $match)

list($a, $b) = explode('-', $match[1]) + array('', '');

$value = isset($match[2]) ? (float) $match[2] : 1.0;

if(isset($available_languages[$match[1]]))

$langs[$match[1]] = $value;

continue;

>

if(isset($available_languages[$a]))

$langs[$a] = $value - 0.1;

>

>

arsort($langs);

return $langs;

>

И пример использования:

//$_SERVER["HTTP_ACCEPT_LANGUAGE"] = 'en-us,en;q=0.8,es-cl;q=0.5,zh-cn;q=0.3';

// языки, которые мы поддерживаем

$available_languages = array("en", "zh-cn", "es");

$langs = prefered_language($available_languages, $_SERVER["HTTP_ACCEPT_LANGUAGE"]);

/* результат

Array (

[en] => 0.8

[es] => 0.4

[zh-cn] => 0.3

)*/

Ответ 4

Это очень простое решение, которое работает лучше всего. Браузеры возвращают языки в порядке предпочтения, поэтому это упрощает проблему. Хотя обозначение языка может состоять более чем из двух символов (например, "EN-US"), обычно достаточно первых двух. В следующем примере кода я ищу совпадение из списка известных языков, о которых знает моя программа.

$known_langs = array('en','fr','de','es');

$user_pref_langs = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);

foreach($user_pref_langs as $idx => $lang)

$lang = substr($lang, 0, 2);

if (in_array($lang, $known_langs))

echo " Предпочитаемый язык - $lang ";

break;

>

>

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

Ответ 5

Следующий сценарий представляет собой версию кода, который возвращается к языковым настройкам по умолчанию, если ни один язык не соответствует поддерживаемым, ил и е сли соответствие найдено, он заменяет языковые настройки по умолчанию на новые в соответствии с приоритетом языка. В данном сценарии браузер пользователя установлен в порядке приоритета на испанский, голландский, и английский языки, а приложение поддерживает только английский и голландский языки без региональных вариаций, и английский является языком по умолчанию. Порядок значений в строке "HTTP_ACCEPT_LANGUAGE" не важен, если по какой-то причине браузер не упорядочивает значения правильно.

$supported_languages = array("en","nl");

$supported_languages = array_flip($supported_languages);

var_dump($supported_languages); // array(2)

$http_accept_language = $_SERVER["HTTP_ACCEPT_LANGUAGE"]; // es,nl;q=0.8,en-us;q=0.5,en;q=0.3

preg_match_all('

', strtolower($http_accept_language), $matches, PREG_SET_ORDER);

$available_languages = array();

foreach ($matches as $match)

list($language_code,$language_region) = explode('-', $match[1]) + array('', '');

$priority = isset($match[2]) ? (float) $match[2] : 1.0;

$available_languages[][$language_code] = $priority;

>

var_dump($available_languages);

/*

array(4)

[0]=> array(1)

["es"]=>

float(1)

>

[1]=> array(1)

["nl"]=>

float(0.8)

>

[2]=> array(1)

["en"]=>

float(0.5)

>

[3]=> array(1)

["en"]=>

float(0.3)

>

>

*/

$default_priority = (float) 0;

$default_language_code = 'en';

foreach ($available_languages as $key => $value)

$language_code = key($value);

$priority = $value[$language_code];

if ($priority > $default_priority && array_key_exists($language_code,$supported_languages))

$default_priority = $priority;

$default_language_code = $language_code;

var_dump($default_priority); // float(0.8)

var_dump($default_language_code); // string(2) "nl"

>

>

var_dump($default_language_code); // string(2) "nl"

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

В поле&nbsp; Язык интерфейса выберите язык из списка.

Если в списке нет нужного языка, в блоке&nbsp; Язык отображения страниц нажмите&nbsp; Добавить язык и выберите его из полного списка.

Вы можете изменить язык интерфейса в настройках системы только для всех приложений одновременно:

В блоке&nbsp; Предпочитаемые языки перетащите нужный язык на самый верх списка. Если нужного языка нет, добавьте его в список, нажав&nbsp;.

","lang":>,"extra_meta":[>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>],"title":"Язык интерфейса - Яндекс.Браузер. Справка","canonical":"https://browser.yandex.ru/help/personalization/add-new.html","productName":"Яндекс.Браузер","extra_js":[[,"mods":,"__func137":true,"tag":"script","bem":false,"attrs":,"__func67":true>],[,"mods":,"__func137":true,"tag":"script","bem":false,"attrs":,"__func67":true>],[,"mods":,"__func137":true,"tag":"script","bem":false,"attrs":,"__func67":true>]],"extra_css":[[],[,"mods":,"__func69":true,"__func68":true,"bem":false,"tag":"link","attrs":>],[,"mods":,"__func69":true,"__func68":true,"bem":false,"tag":"link","attrs":>]],"csp":<"script-src":[]>,"lang":"ru">>>'>


Нажмите → Настройки → Системные .

Если в списке нет нужного языка, в блоке Язык отображения страниц нажмите Добавить язык и выберите его из полного списка.

Вы можете изменить язык интерфейса в настройках системы только для всех приложений одновременно:


Нажмите → Системные настройки .


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

Читайте также: