вопрос мультиязычного скрипта php - PullRequest
0 голосов
/ 19 мая 2009

У меня есть этот скрипт PHP. Это единственный, который действительно работал для меня:

<?php
/*Check_if_user_has_changed_language: */
if(isset($lang)){/*If_so:*/
    setcookie("ling",$lang,time()-60*60*24*365,"/",".sayip.info",0);/*Wipe_previous_cookie*/
    setcookie("ling",$lang,time()+60*60*24*365,"/",".sayip.info",0);/*Whatever_the_means_lang_has_been_stored,_store_latest_lang_in_new_cookie:*/
    //echo "<script language=\"JavaScript\">alert('Selected language=$lang')</script>";/*UnComment_to_check*/
}else{/*If_user_has_NOT_changed_language:*/
    if(isset($_COOKIE['ling'])){/*Check_if_user-language_cookie_is_set._If_so:*/
        $lang=$_COOKIE['ling'];
        setcookie("ling",$lang,time()-60*60*24*365,"/",".sayip.info",0);/*Wipe_previous_cookie*/
        setcookie("ling",$lang,time()+60*60*24*365,"/",".sayip.info",0);
        //echo "<script language=\"JavaScript\">alert('Cookie language=$lang')</script>";/*UnComment_to_check*/
    }else{/*If_user-language_neither_selected_nor_in_cookie,_choose_browser_language:*/
        $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
        setcookie("ling",$lang,time()+60*60*24*365,"/",".sayip.info",0);
        //echo "<script language=\"JavaScript\">alert('Your browser language=$lang')</script>";/*UnComment_to_check*/
    }
}
?>

Сначала код определяет язык браузера пользователя. Это нормально.

Затем сохраняет информацию в куки. Это нормально.

Ну, в этом куске кода все нормально. Что мне действительно нужно, так это создать возможность для посетителей сменить язык. Я думал что-то вроде связанных изображений флагов, поэтому когда кто-то нажимает на флаг, он меняет язык.

Может кто-нибудь объяснить мне через пример или даже чистое, полное решение? Мои навыки в PHP слабые.

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 20 мая 2009

Более элегантным решением может быть проверка заголовков пользователя. Большинство браузеров позволяют пользователям устанавливать предпочтительный язык в настройках. Это в свою очередь отправляет HTTP-заголовок с запросом. Заголовок выглядит следующим образом.

Accept-Language: en-us, en; q = 0,8, arly, q = 0,5, id; q = 0,3

Значение представляет собой список допустимых языков, разделенных запятыми, упорядоченный по предпочтению (часть q = x является предпочтением). Таким образом, вы можете автоматически определять, какой язык пользователь выбрал для просмотра в Интернете, и отображать его, если он у вас есть.

0 голосов
/ 19 мая 2009

я бы поставил, если бы я знал, как это сделать ... Так как этот скрипт работал после тестирования более или менее 10 различных сценариев, я не люблю отступать, просто нужен пример того, как поставить флаги и когда кто-то нажимает на флаге это меняет значение куки ...

0 голосов
/ 20 мая 2009

Я не уверен, правильно ли я понял ваш вопрос

если вы хотите разместить ссылку для каждого языка на своей странице, сделайте ссылку примерно такой: http://www.example.com/?lang=jp

затем в коде php перед добавленным вами скриптом добавьте

if (isset($_GET['lang'])) $lang = $_GET['lang'];

это то, что вы думаете?

0 голосов
/ 19 мая 2009

Я бы поместил выбранный язык в URL, например, http://example.com/en/foo/bar. Это делает выбранный язык прозрачным и легким для изменения.

...