나는 영어/스페인어의 언어를 변경하기 위해 "? lang = en"또는 "? lang = es"를 추가해야하므로 내 사이트를 설정했습니다.PHP 또는 htaccess가 Accept-Language로 URL을 다시 쓰시겠습니까?
예 : "http://domain.com/something/something_else?lang=es"으로 사이트에 들어가면 해당 언어로 사이트를 계속 탐색 할 수 있도록 쿠키가 설정됩니다.
브라우저의 "Accept-Language"값으로 내 사용자를 리디렉션하고 싶지만 원하는 경우 다른 언어로 계속 사이트를 탐색 할 수 있습니다.
가장 좋은 방법은 무엇입니까? .htaccess는 언어 선택시 설정된 쿠키와 함께 작동합니까?
편집 :
EDIT2 : 아, 난 그냥 "EN"이 있고 "ES"언어 여기에 바울의 대답은 내 업데이트 된 코드입니다./
if (isset($_GET["lang"]))
$this->setLanguage($_GET["lang"]);
elseif (isset($_COOKIE["language"]))
$this->setLanguage($_COOKIE["language"]);
elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
// Parse the Accept-Language according to:
// http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4
preg_match_all(
'/([a-z]{1,8})' . // First part of language e.g en
'(-[a-z]{1,8})*\s*' . // other parts of language e.g -us
// Optional quality factor
'(;\s*q\s*=\s*((1(\.0{0,3}))|(0(\.[0-9]{0,3}))))?/i',
$_SERVER['HTTP_ACCEPT_LANGUAGE'],
$langParse);
$langs = $langParse[1];
$quals = $langParse[4];
$numLanguages = count($langs);
$langArr = array();
for ($num = 0; $num < $numLanguages; $num++)
{
$newLang = strtoupper($langs[$num]);
$newQual = isset($quals[$num]) ?
(empty($quals[$num]) ? 1.0 : floatval($quals[$num])) : 0.0;
// Choose whether to upgrade or set the quality factor for the
// primary language.
$langArr[$newLang] = (isset($langArr[$newLang])) ?
max($langArr[$newLang], $newQual) : $newQual;
}
// sort list based on value
arsort($langArr, SORT_NUMERIC);
$acceptedLanguages = array_keys($langArr);
$preferredLanguage = reset($acceptedLanguages);
$this->setLanguage($preferredLanguage);
}
else
$this->setLanguage("en");
고마워 폴 .. 내 질문을 코드로 업데이트했지만 사용 방법이 확실하지 않습니다. 나는 PHP 코딩에서 꽤 새로운데, 내가 뭘 잘못하고 있는지 확인할 수 있니? 어떤 경우에도 코드를 공유해 주셔서 감사합니다! – Santiago
Language-Accept 헤더를 구문 분석하는 관련 PHP 함수 여기에 더 긴 대답을 넣어 두었습니다. [301 홈 페이지의 서체 및 탐정 브라우저 언어에 대한 더 나은 방법은 무엇입니까?] (http : // stackoverflow.co.kr/questions/8091296/301-home-page/8091897 # 8091897에 대한 현서 및 검색 브라우저 언어에 대한 더 나은 방법 – hakre