我构建PHP页面的多语言支持。 比方说,我有一个网页,网址:PHP多语言GET参数
http://mypage.php?user=eric&city=newyork
至极是常见的解决方案,使参数之间进行切换郎= EN和lang = es编辑而在网址中已经保持GET参数?
感谢 卢卡
我构建PHP页面的多语言支持。 比方说,我有一个网页,网址:PHP多语言GET参数
http://mypage.php?user=eric&city=newyork
至极是常见的解决方案,使参数之间进行切换郎= EN和lang = es编辑而在网址中已经保持GET参数?
感谢 卢卡
,在当前“GET数据”返回当前页面的相对URL一个有用的脚本。
<?php
function getCurrentURL() {
$currentURL = basename($_SERVER["PHP_SELF"]);
$i = 0;
foreach($_GET as $key => $value) {
$i++;
if($i == 1) { $currentURL .= "?"; }
else { $currentURL .= "&"; }
$currentURL .= $key."=".$value;
}
return $currentURL;
}
?>
修改,并相应地串连你的语言参数
计划,如果你去要使用这种方法,那么在你调用函数之前,你可以执行'isset($ _ GET ['lang'])? $ _GET ['lang']:'en''当你调用函数时它会自动将它附加到URL。 – RobertPitt 2011-03-30 08:45:17
这是一个非常棒的功能,真的帮了我很大的忙。我在返回前添加了以下内容,所以我可以使用它,而不必担心是否获取参数:if($ i!= 0){$ currentURL。='&';} \t else {$ currentURL。= '?';} – 2011-07-08 10:37:12
你不会保持GET PARAMS在网址在任何时候,只有当你设定的语言,你会使用会话记住什么语言,目前客户正在使用。
在你的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,所以当他在没有?lang=es
的情况下浏览网站,然后显示西班牙语版本。
感谢罗伯特如果即时通讯在搜索中(我有一个在使用GET参数的页面中的搜索栏),我想切换语言,但仍然保持搜索creterea在url?=) – luca 2011-03-29 10:05:27
然后,您将在语言的表单中放置一个下拉框,例如'',然后语言将与搜索一起发送,如果上述功能是在你制作任何内容之前调用它会很好。 – RobertPitt 2011-03-29 10:09:04
'getCurrentLanguage()'将总是返回该用户的最后已知的设置语言,如果用户从未选择过默认为'en'的语言,则一旦通过了'lang = xx',就不需要它通过再次,它会记住该用户在网站上。另外,您可以使用cookie并将有效期设置为1年。 – RobertPitt 2011-03-29 10:11:50
最好使用cookie或session/id数据来存储这类信息。 我会有更少的东西随身携带。
如果我正确理解问题,则需要一种方法将参数添加到URL或使用新值替换其值(如果它已存在)。
下面是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
。
你可以用我喜欢的语言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);
以及调用它,我想是这样......如果不是llike'en.wikipedia.org'或工程 – 2011-03-29 09:42:46