2012-05-18 7 views
0

다 언어 스크립트를 사용하여 lanquage에서 변경하고 있습니다. 내가 example.com/fr/에있을 때는다국어 사이트 : 스위칭 언어

example.com (Main directory) 
example.com/fr/ 
example.com/es/ 

: 내가 좋아하는 사이트가 보이는

기본 언어 (영어)에있을 때 지금은 데 문제는 언어에서 변경 blabla/index와 example.com/es/blabla/index에 가면 잘 동작합니다.

하지만 example.com/blabla/index에있을 때 example.com/fr/blabla/index로 이동하고 싶습니다. 내가 사용하고

을 example.com/fr/index로 리디렉션 해요 : 그래서 어떤 디렉토리/ENG가 없기 때문에 나는 올바른 경로로 리디렉션 아니에요 논리가

<?php 
function switchLanguage($lang) { 
    $u = explode('/', $_SERVER['REQUEST_URI']); 
    $u[1] = $lang; 
    return implode('/', $u); 
} 

?> 

입니다.

나는 배열을 사용하여 URL을 다시 쓸 수 있다고 생각하고 있었습니까? 이 같은 뭔가 :

<?php 
function switchLanguage($lang) 
$array1 = array(' ', $_SERVER['REQUEST_URI']); 
$array2 = array('$lang', ' '); 
$newArray = array_combine($array1, $array2); 

foreach ($newArray as $key) { 
     echo "$key $value"; 
} 

?> 

그러나 나는 URL의 값을 얻을 수 있습니다 또는 어디 잘못된 건가 방법에 대해 설명합니다. 내가 제대로 문제를 이해하는 경우

는 옵션

+0

한 가지를 설명해주십시오 : example.com/fr/blabla/index로 이동하면 example.com/fr/index로 리디렉션됩니다. 그런 다음 "디렉토리/eng가 없습니다"라고 말합니다. 그 "eng"는 어디에서 왔는가? –

+0

스크립트가 여전히 리다이렉션하려는 경로에 내포하는 기본 언어입니까? –

+0

거의 거기에, 그것은 유망하게보고있다! 방문자는 페이지에 : 지금은 더 나은 희망을 설명 할 것이다 Example.com/sub1/index.php 을 그리고 그는 스페인어로 언어를 변경하고 싶습니다. 나는 리디렉션가 있음을 원하는 : Example.com/es/sub1/index.php 그러나 지금은 가고 (여전히)입니다 : Example.com/es/ index.php를 그래서 디렉토리 SUB1/es/ –

답변

1
function switchLanguage($lang, $defaultLang = "eng") { 
    if($lang == $defaultLang) { 
     $lang = ""; 
    } 
    $u = explode('/', $_SERVER['REQUEST_URI']); 
    $u[1] = $lang; 
    return implode('/', $u); 
} 

이 작동 할 수는없는 데이터베이스 또는 .INI와 GeoIP가 캐싱을 사용합니다.

+0

거의 다 왔어, 유망 해 보인다! 지금은 더 나은 희망을 설명 할 것 : 를 방문자가 페이지에 : Example.com/sub1/index.php 그리고 스페인어로 언어를 변경하고 싶습니다. 리디렉션 대상 : Example.com/es/sub1/index.PHP 그러나 지금은의가 (여전히)에가는 : Example.com/es/의 index.php 그래서/말이지 후에 와야 디렉토리 SUB1이/거의 다 –

1

$u[1] = $lang을 수행하여 첫 번째 디렉토리를 덮어 쓰고 있습니다. 당신은 아직없는 (예 : 디렉토리)가있을 수 있습니다 뭔가를 덮어 쓰기하여 적절한 장소에 언어를 밀어 배열을 재 구축 할 필요가

편집 : 사용 array_splice은 언어 부분에 추가합니다 :

<?php 
function switchLanguage($lang) { 
    $u = explode('/', $_SERVER['REQUEST_URI']); 
    $u = array_splice($u,1,0,$lang); 
    return implode('/', $u); 
} 

?> 
+0

은, 그것은 유망 찾고! 방문자는 페이지에 : 지금은 더 나은 희망을 설명 할 것이다 Example.com/sub1/index.php 을 그리고 그는 스페인어로 언어를 변경하고 싶습니다. 나는 리디렉션가 있음을 원하는 : Example.com/es/sub1/index.php 그러나 지금은 가고 (여전히)입니다 : Example.com/es/ index.php를 그래서 디렉토리 SUB1/es/ –

+0

그 뒤에 내 코드가 무엇을하는지 - 내가 설명한대로 – psynnott

+0

여기에서 테스트했습니다. www.addressq.com/test.php하지만 작동하지 않습니다. –