if (isset($request->server['HTTP_ACCEPT_LANGUAGE']) && $request->server['HTTP_ACCEPT_LANGUAGE']) {
$browser_languages = explode(',', $request->server['HTTP_ACCEPT_LANGUAGE']);
foreach ($browser_languages as $browser_language) {
foreach ($languages as $key => $value) {
if ($value['status']) {
$locale = explode(',', $value['locale']);
if (in_array($browser_language, $locale)) {
$detect = $key;
}
}
}
}
}
По идее OC так и должен делать
Вот моя строка
ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
вот чужая
ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,uk;q=0.2
т.е. Если разбить на элементы массива, то получим, например
ru-RU,
ru;q=0.8
en-US;q=0.6
en;q=0.4
uk;q=0.2
И никак не получаем
true в строке
if (in_array($browser_language, $locale)) {
потому что, имеем например следующую строку в локале
ru_RU.UTF-8,ru_RU,russian
поэтому нужно или в поле кодировки добавить, например ru-RU
Хорош ли этот способ для SEO сложно сказать, потому что нужно смотреть и заголовки от роботов
Не имея языкового префикса - автоматическое переключение может быть вредным.