Php 使用href切换语言
我有三种语言在我的网站上运行,并希望有工作按钮切换语言在我的页面底部。问题是,主页(index.php)需要后缀Php 使用href切换语言,php,html,url,Php,Html,Url,我有三种语言在我的网站上运行,并希望有工作按钮切换语言在我的页面底部。问题是,主页(index.php)需要后缀?lang=X,而其他页面(index.php?contact,index.php?about等)需要URL中的后缀&lang=X 我的a href设置如下: <?php if((isSet($_GET['about']) == true && empty($_GET['about']) == true) || (isSet($_GET['contact']) =
?lang=X
,而其他页面(index.php?contact,index.php?about等)需要URL中的后缀&lang=X
我的a href设置如下:
<?php if((isSet($_GET['about']) == true && empty($_GET['about']) == true) || (isSet($_GET['contact']) == true && empty($_GET['contact']) == true)) { ?>
<a href="&lang=en"><img src="img/en.gif" alt="English" /> English</a> | <a href="&lang=fr"><img src="img/fr.gif" alt="français" /> français</a> | <a href="&lang=nl"><img src="img/nl.gif" alt="Nederlands" /> Nederlands</a></p>
<?php } else { ?>
<a href="?lang=en"><img src="img/en.gif" alt="English" /> English</a> | <a href="?lang=fr"><img src="img/fr.gif" alt="français" /> français</a> | <a href="?lang=nl"><img src="img/nl.gif" alt="Nederlands" /> Nederlands</a></p>
<?php } ?>
||
||
它修复了“?”或“&”的问题,但每当我单击主页以外的页面上的语言更改按钮时,它会将我带到主页,而不是停留在当前页面上,尽管语言切换确实起作用。我想这是由我的.htaccess文件引起的,它将主页改写为void,将联系人和关于页面改写为“/contact”和“/about”
关于如何解决这个问题有什么建议吗?或者如何更轻松地进行语言切换?您可以读取当前URL中的参数并将新参数附加到其中,如下所示:
$params = array_merge($_GET, array("lang" => "X"));
$new_query_string = http_build_query($params);
但是当从一个页面移动到另一个页面时,使用cookie将有助于不“松动”语言参数。并留下一个更干净的URL
与cookies:
在网站页面的顶部
if ($_GET['lang'])
{
setcookie("lang", $_GET['lang'], time() + 3600);
}
在您的语言面板集中:
<a href="?lang=X" title="X language">X</a>
<a href="?lang=Y" title="Y language">Y</a>
<a href="?lang=Z" title="Z language">Z</a>
因为OP只需要解决导航问题。这是我要做的 我只需要将当前页面的url
$Url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
然后用导航键点击concat
<a href="<?php echo $Url ?>?lang=en">Home</a>
因此,代码将是
<?php
$Url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
?>
<a href="<?php echo $Url ?>?lang=en">Home</a>
注意:
我使用
en
作为静态,您可以根据需要动态更改它。我更喜欢使用烹饪,即,当您单击语言选项时,我将在浏览器中设置cookie。除非用户更改页面,否则它不会被更改,所以我也会得到干净的url。你想让我帮忙吗?它会将所选语言作为cookie存储30天,我如何使用实现这一点,因此实际的语言切换不是问题,一旦选择了一种语言,它将保持这种方式30天,或者直到选择了另一种语言。出现故障的是切换语言的url。啊,您只能从$\u-GET
调用,如果Cookie存在,为什么不通过调用呢?我上面代码中的$\u-GET
用于分页,而不是语言设置。但是我想我可以使用javascript让href
在被点击时设置cookie?当设置语言时,它将存储cookie 30天。因此,如果你能找到一种方法,让href
设置一个cookie,而不是附加到URL,那将是非常感激的。如果这是你正在寻找的答案,请将答案标记为已解决此代码将完全停止链接的工作。由于我的.htaccess文件,例如“contact”页面从/index.php?contact
更改为/contact
。因此,当将?lang=X
附加到URL时,它不起作用。除了主页本身之外,它需要在所有页面上使用“&”。你的意思是,你也可以在你的url中使用“&”
?url显示正确,但当我尝试单击它时,什么也没有发生。你的意思是这样的/index.php?contact&lang=en
?是的,我更改了它以便添加一个&,url显示的是localhost/contact&lang=en
,但由于某些原因,我无法单击它。复制链接并将其粘贴到url栏时,它确实起作用。