Laravel&本地化国家+货币+语言+时区

时间:2018-04-02 18:25:48

标签: php laravel laravel-5 localization

我们目前的项目仅在瑞士,如

示例:yourfirm.com  - 主要语言;德语   - 第二语言:英语&土耳其   - 货币:瑞士法郎

当用户默认进入页面时,他会获得德语,瑞士法郎

我们想将其添加如下: 新国家: 土耳其,主要语言:土耳其语,货币:土耳其里拉 德国&奥地利,主要语言:德语,货币:欧元 欧洲其他地区:主要语言:英语,货币:欧元 世界其他地区:主要语言:英语,货币:美元

所以我们想为每个国家做一些事情: 当用户访问yourfirm.com时,我们可以通过他的IP确定正确的位置(国家,时区,语言,货币),我们可以为他的国家显示正确的页面。 我们也考虑过管理它:对于来自yourfirm.com的每个国家,例如德国(DE) - > yourfirm.com/de 语言:德语,货币:€

但是我们不知道如何解决它:我们做了一些研究但找不到合适的解决方案。 如果有人可以帮助我们并且也可能尝试给我们提供示例代码,那将会很棒。

1 个答案:

答案 0 :(得分:1)

您可以创建一个中间件来检测访问者IP地址的地理位置,建议整合的一个包是GeoIP for Laravel 5Documentation)。

应用/ HTTP /中间件/ DetectGeoLocation.php

public function handle($request, Closure $next, $guard = null)
{
    // check if already detect current session country
    if (!session('country')) {
        $location = geoip();
        session([
            'country' => $location->country,
            'currency' => $location->currency
        ]);
    }
}

然后将中间件安装到http kernel:

应用/ HTTP / Kernel.php

protected $middlewareGroups = [
    'web' => [
        ...
        \App\Http\Middleware\DetectGeoLocation,
        ...
    ]

现在,您可以在任何地方获取当前的会话国家/地区和货币:

$country = session('country');
$currency = session('currency');