PHP多语言GET参数

时间:2011-03-29 09:40:56

标签: php multilingual getparameter

我正在为PHP页面构建多语言支持。 假设我有一个页面网址:

http://mypage.php?user=eric&city=newyork

这是在get参数 lang = en lang = es 之间切换的常用解决方案,同时保持url中的get参数?

感谢 卢卡

5 个答案:

答案 0 :(得分:3)

一个有用的脚本,它返回当前页面的相对URL以及当前的“GET数据”。

<?php 
function getCurrentURL() { 
    $currentURL = basename($_SERVER["PHP_SELF"]); 
    $i = 0; 
    foreach($_GET as $key => $value) { 
        $i++; 
        if($i == 1) { $currentURL .= "?"; } 
        else { $currentURL .= "&amp;"; } 
        $currentURL .= $key."=".$value; 
    } 
    return $currentURL; 
} 
?> 

修改它并相应地连接您的语言参数

答案 1 :(得分:2)

您不会始终将GET参数保留在网址中,只有在您设置语言时,您才会使用会话记住当前客户使用的语言。

在你的php中创建以下函数

function getCurrentLanguage()
{
    if(isset($_REQUEST['lang']))
    {
         //Validate that $_REQUEST['lang'] is valid
         return $_SESSION['lang'] = $_REQUEST['lang'];
    }

    if(isset($_SESSION['lang']))
    {
        return $_SESSION['lang'];
    }

    return 'en'; //Default
}

现在,当用户访问该网站时,默认语言为英语,但如果他导航到index.php?lang=es,则语言将设置为es,因此当他在没有{{1}的情况下浏览网站时然后它会显示西班牙语版本。

答案 2 :(得分:0)

最好使用cookie或session / id数据来存储此类信息。 我携带的东西少了。

答案 3 :(得分:0)

如果我正确理解了这个问题,您需要一种方法来向URL添加参数,或者将其值替换为新值(如果已经存在)。

这是一个以各种方式安全地执行此操作的函数:

function url_with_parameter($url, $name, $value) {
    if(strpos($url, '?') === false) {
        if (strpos($url, '#') === false) {
            // No query and no fragment -- append a new query to the url
            $newurl = $url.'?'.$name.'='.$value;
        }
        else {
            // No query with fragment -- insert query before existing fragment
            $newurl = str_replace('#', '?'.$name.'='.$value.'#', $url);
        }
    }
    else {
        if (strpos($url, $name.'=') === false) {
            // With query, param does not exist -- insert at beginning of query
            $newurl = str_replace('?', '?'.$name.'='.$value.'&', $url);
        }
        else {
            // With query, param exists -- replace it
            $parsed = parse_url($url, PHP_URL_QUERY);
            parse_str($parsed, $vars);
            $newurl = str_replace($name.'='.$vars[$name], $name.'='.$value, $url);
        }
    }

    return $newurl;
}

在使用此功能的输出进行链接之前,请记得致电urlencode

答案 4 :(得分:0)

您可以使用我喜欢的语言PHP Multi Language Class - LangQuery

这是我见过的最容易的。

您可以将语言数据保存到.ini文件,而不仅仅是通过

调用它
include("LangQuery.php");

$L=new LangQuery();

// Write Hello World
echo($L('hello_world'));

// Write Hello World Easier - In-line Echo Feature
// You don't have to write echo. Just add '>'
$L('>hello_world');

// Use in Strings
echo("Hello Universe. {$L('hello_world')} Hello Europe");

// Write my age with parameter
$L(">my_age",25);

// Write my name and age with parameters
$L(">my_name_age","Recep",25);