以下是我要做的事情:
无论客户打开的脚本是什么页面都会将他重定向到他的首选语言,请阅读$_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
答案 0 :(得分:0)
您无需为每个请求重定向用户。这是解决问题的有效方法。
您可以在前端控制器中获取用户浏览器语言(例如index.php文件),然后相应地生成链接。
您是否尝试针对每个请求点击您的网络服务器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 | user ip | ...)
你可以安排优先事项。