gpt4 book ai didi

php - 如何在 laravel 4 中检测客户所在国家/地区和地区

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:54:57 25 4
gpt4 key购买 nike

我想检测他们打开网站或获取浏览器推荐语言的我的客户国家或地区。

例如,如果您在日本打开浏览器,它会给我国家代码或当前用户打开的国家名称,如“en-jp”或“japan”。

经过搜索,我发现“Zend Framework”在Zend_locale 中具有检测用户/环境的功能。 .

所以我想知道我是否可以在 laravel 4 中做同样的事情,或者如果不能的话,您在任何方法(php、javascript、检查 ip 等)中建议什么解决方案?

先谢谢你。

最佳答案

好的,我知道我的问题的答案如下:

  1. 如何检测客户国家?

    据我所知,我们需要使用 geoIP 服务来检测客户端 IP,它可以告诉客户端从哪里使用(例如 maxmind)

    但这不是检测和更改我的网站语言的解决方案,如果您在 laravel 4 中寻找此解决方案,我将在下一个问题中向您展示

  2. 如何查看客户要使用的语言? (laravel4 中的语言环境)

    总而言之,我发现了一些可以通过以下方式获得客户想要使用的语言的方法:

    1. $_SERVER['HTTP_ACCEPT_LANGUAGE'] 中的 HTTP header (HTTP_ACCEPT_LANGUAGE)等于Request::server('HTTP_ACCEPT_LANGUAGE')在 laravel4.这些 header 告诉我们当前客户端浏览器要使用的语言。

    2. 直接请求 - 在这种情况下,我们将从客户那里获得他们想要使用的语言的直接请求。举个简单的例子,比如我们给他们

      <select>
      <option val="en">English</option>
      <option val="th">Thailand</option>
      </select>

      然后他们从中选择通过 url Ex 发送到服务器:www.Test.com/en

    3. Cookies(可选)- 我们可以从我们提供当前用户最后使用的语言的浏览器中获取 cookies。这是我们必须在他们第一次访问该网站后发送 cookie。

在我使用它之前,我通过以下方式将支持语言数组存储在 app/config/app.php 中:

'languages' => array('en','th','jp'),

所有这些我都修改了 app/filter.php 中的代码,以通过以下方式获取所有上述数据并使用我的应用程序进行处理:

    App::before(function($request){

// 1. get the request langugage
$url_lang = Request::segment(1);

// 2. get Cookie langugage
$cookie_lang = Cookie::get('language');

// 3. Get the Browser Request language
$browser_lang = substr(Request::server('HTTP_ACCEPT_LANGUAGE'), 0, 2);

// 4. Start Checking the request language
// Check that Language tha request is support or not?
if(!empty($url_lang) AND in_array($url_lang, Config::get('app.languages')))
{
// Check whether the request url lang not same as remember in cookies
if($url_lang != $cookie_lang)
{
// Cookie::forever('language',$url_lang);
Session::put('language', $url_lang);
}
// Set the App Locale
App::setLocale($url_lang);
}
// Check that has Language in Forever Cookie and is it support or not?
else if(!empty($cookie_lang) AND in_array($cookie_lang, Config::get('app.languages')))
{
// Set App Locale
App::setLocale($cookie_lang);
}
// Check the browser request langugae is support in app?
else if(!empty($browser_lang) AND in_array($browser_lang, Config::get('app.languages')))
{
// Check whether the request url lang not same as remember in cookies
if($browser_lang != $cookie_lang)
{
// Cookie::forever('language',$browser_lang);
Session::put('language', $browser_lang);
}

// Set Browser Lang
App::setLocale($browser_lang);
}
else
{
// Default Application Setting Language
App::setLocale(Config::get('app.locale'));

}});

应用程序事件如下:

App::after(function($request, $response){
$lang = Session::get('language');
if(!empty($lang))
{
// Send The language Cookies
$response->withCookie(Cookie::forever('language',$lang));
}
});

希望这对您有所帮助。

关于php - 如何在 laravel 4 中检测客户所在国家/地区和地区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21654411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com