这是我正在尝试做的:
无论客户打开脚本是什么页面,都会将他重定向到他的首选语言,从$_SERVER["HTTP_ACCEPT_LANGUAGE"];
例:客户浏览器设置为西班牙语。如果他打开第 http://example.com/script-name.php?param1=aa¶m2=bb
页
比脚本会将他重定向到http://example.com/es/script-name.php?param1=aa¶m2=bb
有脚本为我提供已排序的浏览器$lang=substr(Get_Client_Prefered_Language(),0,2);
的语言
比我有读取地址的脚本
$location = '';
parse_str(html_entity_decode($_SERVER['QUERY_STRING']),$query_string);
if(isset($query_string['language'])) {$query_string['language'] = null;}
$new_query_string = !empty($query_string) ? http_build_query($query_string) : '';
if($new_query_string != ''){$location .= '?'.$new_query_string;}
这为我提供了新的地址:
$location="https://macrohosting.co.uk/".$lang.$_SERVER["SCRIPT_NAME"].$location;
比我能用header('location: '.$location);
一切都很好,但是我已经重写了一些页面。
并且不确定如何调整上面的脚本,以便当客户访问http://example.com/page1.htm
时,例如将被重定向到http://example.com/es/page1.htm
如果没有该修改,客户将被重定向到http://example.com/es/page_example.php?param=aa¶m=bb
为每个请求重定向用户。 这是处理这个问题的有价值的方法。
您可以在前端控制器(例如索引.php文件)中获取用户浏览器语言,然后相应地生成链接。
您正在尝试为每个请求访问您的 Web 服务器 2 次?? 这不是一个选项。
如果您使用的是PHP框架,那么应该有更好的方法来处理该问题。
<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
$link_to_about_us_page = "http:://domain.com/$lang/about";
请记住,每个请求中域后的第一个参数是语言,根据该语言,您应该从存储中获取内容并显示数据。(这部分应该由你的路由器处理)
如果未提供语言,则将用户重定向到默认语言。例如
http://domain.com/contact
自
http://domain.com/en/contact
这就是Drupal处理多语言的方式。 有多种因素会影响内容语言(用户浏览器| URL | 用户IP | ...)
您可以安排优先级。