1

同时在 Laravel 中,我需要在站点前端和后端(管理)中使用不同的语言/区域设置。前端需要 4 种语言(en,de,fr,it),后端需要 3 种语言(en,lt,es)。
示例:在浏览器中,我有两个打开的选项卡 - 1 个选项卡前端(语言:de),2 个选项卡后端(语言:en)。怎么做 ?与 setLocale?或者我需要不同的数组,例如后端?

4

2 回答 2

3

您可以轻松处理此问题的一种方法是BaseController为您的前端和后端控制器创建两个类。

然后,您可以使用方法从正确的BaseController构造函数为您的前端和后端设置不同的语言。App::setLocale

例子:

<?php

class FrontendBaseController extends Controller
{
    public function __construct()
    {
        App::setLocale(Session::get('frontend-locale'));
    }
}


class BackendBaseController extends Controller
{
    public function __construct()
    {
        App::setLocale(Session::get('backend-locale'));
    }
}

class HomeController extends FrontendBaseController
{
    public function __construct()
    {

    }
}

class BackendDashboardController extends BackendBaseController
{
    public function __construct()
    {

    }
}

在上面的示例中,我正在从会话中检索当前语言环境。您可以将语言文件放在app/lang文件夹中。我建议您为前端和后端语言文件设置单独的文件夹。

示例文件夹结构:

/app
    /lang
        /en
            backend/
                dashboard.php

            frontend/
                home.php

        /de
            backend/
                dashboard.php

            frontend/
                home.php

样本内容app/lang/en/backend/dashboard.php

<?php
return array(
    'welcome' => 'Welcome to Backend!'
);

您可以输出welcomekey 的值,例如使用 echo Lang::get('backend/dashboard.welcome');.

我希望你明白了。有关更多详细信息,请随时查看官方文档

于 2015-01-31T19:38:16.407 回答
0

与其在同一个浏览器中打开两个不同的选项卡,也许您应该考虑打开两个不同的浏览器会话,以避免具有不同语言设置的后端和前端会话相互覆盖。

于 2015-01-31T19:31:35.913 回答