Как заново создать URL-адрес с Accept-Language, + сплита?
у меня есть код в PHP
созданный членом @Maia, он сообщает, язык браузера и возвращает перенаправления.
Код
<?php
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
header("Location: http://meusite.com/$lang" ) ;
?>
Он перенаправляет:
meusite.com/pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4
уверен, он будет перенаправлять meusite.com/pt-BR
, потому что мой веб-браузер с языка pt-BR
.
, Будет, что создавая split
решило бы?
член @Майя сделал так:
$lang = split(",", $_SERVER['HTTP_ACCEPT_LANGUAGE'])[0];
В случае, если URL-адрес будет только до первой запятой, таким образом оставляя только: meusite.com/pt-BR
.
Только что код, кажется, не так, не работает.
я Хотел бы сделать это с помощью URL-адреса, в результате чего до /pt-BR
, или даже оставить:
meusite.com/pt
член предположил, что я переключал индекс [0] для 1 оставив так:
$lang = split(",", $_SERVER['HTTP_ACCEPT_LANGUAGE'])[1];
Только, что не работает, так что я хотел бы некоторые образцы, как сделать перенаправление для /ru-ru или как перенаправить на /ru
1 answers
Именно быстрое решение 1:
<?php
$langs = array();
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
// Cá entre nós, usar regex pra isso é forçar a amizade, mas lá vai :)
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
//Aqui vamos ordenar por preferência do usuário
if (count($lang_parse[1])) {
$langs = array_combine($lang_parse[1], $lang_parse[4]);
foreach ($langs as $lang => $val) {
if ($val === '') $langs[$lang] = 1;
}
arsort($langs, SORT_NUMERIC);
}
}
// Aqui você põe apenas as linguagens que seu site REALMENTE tem:
foreach ($langs as $lang => $val) {
if ( strpos($lang, 'pt') === 0) {
header( "Location: http://meusite.com/pt/" ) ;
exit();
} else if (strpos($lang, 'en') === 0) {
header( "Location: http://meusite.com/en/" ) ;
exit();
}
}
// Se nao achar nenhuma:
header( "Location: http://meusite.com/pt/" ) ;
exit();
?>
Не нужно pt-BR
, ни en-US
, (если не хотите разделить, например pt-BR
, pt-PT
, и так далее.
1. поиск в Duck Duck Go, работает.
Fonte:http://www.thefutureoftheweb.com/blog/use-accept-language-header