2013-09-27 3 views
0

나는 PHP & mysql을 사용하여 다국어 웹을 코딩했습니다. 이제 언어 선택기가 쿠키을 기반으로하기 때문에 (주로 로봇, 서재 및 검색 엔진) 문제가 발생했습니다. 지금 작동하는 방법다국어 웹 : php + mysql + cookies

: 사용자 =>의 index.php :

function cookies() { 
if (!isset($_COOKIE["lang"])){ 
setcookie('lang','ukr', time()+(60*60*24*31)); 
header('Location: index.php'); 
}}; 

하고 기능과 함께하기 위해 필요한 모든 장소에 선택한 언어를 출력 :

function catSet($source, $link, $item){ 
$item .= '_'. $_COOKIE['lang']; 
global $connection; 
$link = mysqli_real_escape_string($connection, $link); 
$result = mysqli_query($connection, "SELECT * FROM $source WHERE link_item = '". $link ."'"); 
if (!$result) { die("DB Query failed: " . mysql_error()); } 
while ($row = mysqli_fetch_array ($result)) { 
echo $row[$item]; }} 

은 내가 지금 원하는 것은 로봇 및 검색 엔진에서 읽을 수있는 사용자 선택에 따라 $item .= '_'. $_COOKIE['lang'];상수으로 바꿔야하므로 쿠키이 아니어야합니다.

을 사용하고 싶지 않습니다. 세션이 만료 될 때마다 사용자가 언어를 다시 선택해야하기 때문입니다.

AFAIK 브라우저 언어를 감지하여 기본값으로 설정할 방법이 없습니다.

변수 대신 [GET] 변수를 사용하여 다른 페이지로 전달할 때마다 다음에 시간이 돌아 오면이 [GET] 데이터를 저장하는 방법 (세션과 동일한 문제)을 전달하는 방법을 참조하십시오.

나는 어떤 아이디어와 당신은 여전히 ​​사용자의 결정을 저장하기 위해 쿠키를 사용할 수 있습니다 :

답변

1

솔루션을 감사하겠습니다. 사용자가 언어가없는 웹 사이트 (URL : GET)를 방문했지만 선택한 언어로 된 쿠키가 있으면 선택하여 URL로 리디렉션합니다.

특정 언어로 주소를 사용할 수 있으며 사용자가 현재 URL을 복사하거나 지나갈 수 있으므로 항상 자신의 언어 버전으로 연결됩니다.

+0

이렇게하면 나는/다른 경우에'(! isset ($ _ COOKIE [ "lang"])))'를 확인해야합니다. 사용자가 처음으로 페이지를 볼 때, 기본 lang = 'eng'라고 말하며, 사용자가 lang을 변경하면 다음에 쿠키를 읽고 선택한 lang을 제공합니다. 그러나! 로봇은 쿠키를 사용하지 않습니다. 즉, 항상 기본 lang 만 보입니다. – A1exandr

+0

@ A1exandr 내가 말했듯이 get 값이 설정되면 사용자를 리디렉션하고 쿠키를 무시합니다. 또한 변수를 얻는 웹 페이지 사용의 모든 링크에서. 예 : 들어오는 링크에 lang = en이 있으면 웹 사이트의 모든 링크에 lang = en이 추가됩니다. –

+0

당신을 이해합니다. 그러나 get의 값이 default로 설정되면 어떨까요? 로봇이 다른 언어를 통해 기어 다니겠습니까?! – A1exandr

0

현지화를 위해 PHP의 gettext 확장자를 사용할 수 있습니다.이 파일은 .po 및 .mo 파일 형식을 사용하여 내용을 번역합니다. 이것은뿐만 아니라 SEO의 문제를 해결할 것입니다. 모든 내용은 서버 형태로 메모리에로드되고 요청 된 언어에 따라 브라우저에 표시됩니다. 자세한 내용은 read here

+0

'gettext'는 다음 단계 일 수 있지만 모든 SEO 문제를 해결할 수는 없습니다. –

+0

괜찮 았어.하지만 웹 관리 패널에서 mysql을 편집 할 수있다. PO 파일을 편집하는 것이 그렇게 쉬운 지 확신 할 수 없다. – A1exandr

+0

@ 엘론 탄 - 확실히 SEO는 완전히 다른 질문이지만, 제 경우에는 처음에는 모든 언어를 볼 수있는 로봇이 필요합니다. – A1exandr