2009-11-19 3 views
3

나는이 코드를 구현하여 다양한 독일어, 스페인어 또는 영어 브라우저 언어를로드하기위한 파일을로드하려고합니다. 이 케이스는 나의 스페인어 IE와 함께 영어 파일을 받는다. PHP로 브라우저 언어 선택하기

<?php 
if (is_home()) { 
    if (preg_match('/de-DE/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) { 
    include(TEMPLATEPATH . '/german-navbar.php'); 
    } 
    elseif (preg_match('/es-ES/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) { 
    include(TEMPLATEPATH . '/spanish-navbar.php'); 
    } 
    else { 
    include(TEMPLATEPATH . '/english-navbar.php'); 
    } 
} 

나는 모두 HTTP_ACCEPT_LANGUAGEHTTP_USER_AGENT을 사용했다.

누군가가 브라우저에서 원하는 언어로 독일어 또는 스페인어로, 그것을 확인하고 싶었다 경우, 사이트의 테스트입니다 : http://paragraphe.org/janette/

나는 영어로 내 파이어 폭스가 좋은 노력하고 있습니다,하지만 난 스페인어와 독일어의 경우 코드가 작동하는지 확인할 수 없습니다.

스 니펫 in this SO thread을 찾았지만이 시점에서 조금 분실했습니다. 모든 입력에 대한 너무 많은

감사합니다,

편집 : 코드가 파이어 폭스 (하지만 IE)에서 작업을 수행합니다.

+1

은 무엇 다이 않는다 ($ _SERVER [ 'HTTP_ACCEPT_LANGUAGE']); 너 줄까? – dfilkovi

+0

페이지가 평상시와 같이로드됩니다.하지만 다른 기본 조건이 의미가없는 것처럼 영어 기본값을 사용하면 – Peanuts

답변

3

첫째, 당신은 가짜 useragents에 파이어 폭스의 User Agent Switcher 확장자를 사용하고 테스트 할 수 있습니다 (당신이 헤더뿐만 아니라 사용자 에이전트를 변경도 할 수 있습니다)에 Modify Headers 확장자 예를 들어 HTTP_ACCEPT_LANGUAGE에 대한 ESTS,

오, 그것은 독일어에서 작동하지 않습니다 :

Warning: include(/home/paragrap/public_html/janette/wp-content/themes/Janette/german-home.php) [function.include]: failed to open stream: No such file or directory in /home/paragrap/public_html/janette/wp-content/themes/Janette/home.php on line 4 

Warning: include() [function.include]: Failed opening '/home/paragrap/public_html/janette/wp-content/themes/Janette/german-home.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/paragrap/public_html/janette/wp-content/themes/Janette/home.php on line 4 
+0

와우는 훌륭하게 작동했습니다. 확인하고 코드가 작동 중입니다. 감사 ! – Peanuts

+0

내가 도와 줄 수있어서 다행이다. :) – Zenon

2

하여주십시오을 시도 :

그냥 배열 ('엉', '드', 'ES')로 $ availableLanguages을 제공

기능 get_client_language ($ availableLanguages, $ 기본 = 'EN') 당신이 가짜로 requ에의 헤더이있을 것이다하지만 {

if (isset($_SERVER['HTTP_ACCEPT_language'])) { 

    $langs=explode(',',$_SERVER['HTTP_ACCEPT_language']); 

    //start going through each one 
    foreach ($langs as $value){ 

     $choice=substr($value,0,2); 
     if(in_array($choice, $availableLanguages)){ 
      return $choice; 

     } 

    } 
} 
return $default; 

} 모든

관련 문제