环境感知的语言版本链接

大多数双语网站上都有一个固定的指向另一语言版本的链接。不管你在网站一个语言版本的什么位置,点击语言版本链接,打开的总是另一语言版本的首页。而我希望我的访问者打开的是他正在查看的页面的另一语言版本。

例如:如果用户访问了:

http://dallascao.com/cn/the-context-sensitive-language-versions-link/

点击底部的 “English” 链接,用户打开的是:

http://dallascao.com/en/the-context-sensitive-language-versions-link/

也就是这里涉及到是将当前页面 URL 中的 “/cn/” 换成 “/en/”。

以下 php 代码无法给出正确的结果:

<?php $url_old = "http://".$_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF']; ?>
<?php $url_new=str_replace("cn","en",$url_old); ?>   
<a href=<?php echo $url_new; ?>English</a>

不管您在访问哪个页面, $url_old 返回的总是首页链接 “/en/index.php”。这是因为我使用了“固定链接”功能,URL 被重写了。在服务器端,URL 重写发生于 PHP 代码执行之后,因此 php 字符串 “$url_old” 无法得到后来被重写的实际 URL。以下的 javascript 代码就可以,这是因为java script 是在客户端运行的,可以准确得到客户端使用的 URL:

<script>
var s=window.location.href
r=s.replace (/cn/, "en");
document.write ("<li><a title='English verion of this page' href="+r+">English</a></li>")
</script>

更多信息:

java replace () 方法

One thought on “环境感知的语言版本链接

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">