如何为一个指向两个不同域的Laravel应用程序设置不同的语言环境?

问题描述

在laravel应用程序中,我有两种语言,English and French

我的应用程序有两个域

test.site for French language
test.live for English language

现在,如果用户访问test.site,则需要以法语加载应用程序

但是,如果用户访问test.live,则需要以英语加载应用程序

我的应用程序的语言环境默认情况下设置为EN。

现在我的问题是

如何为不同的域设置不同的语言环境?或

如何使用相同的laravel应用程序为一个域加载英语,为另一个域加载法语

解决方法

您可以set a locale使用:App::setLocale($locale);

要获取域或主机,Laravel请求提供了一个getHost()方法,该方法应返回test.sitetest.live

如果您想对所有或大部分路线进行此操作,则最简单的方法是创建一个custom middleware并在全球范围内进行注册或对要应用的路线进行分组(有关详细信息,请参见文档注册)。

您的中间件可能看起来像这样:

public function handle($request,Closure $next)
{
    $locale = $request->getHost() == 'test.site' ? 'fr' : 'en';
    App::setLocale($locale);

    return $next($request);
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...