【问题标题】:How to fetch current locale in view in Laravel 5.3如何在 Laravel 5.3 中获取当前的语言环境
【发布时间】:2017-05-21 05:43:15
【问题描述】:

我正在制作一个双语应用程序。我对每种语言都使用相同的路线,但我对两种语言都使用不同的视图。每当我想重定向到我想通过{{ route('test.route', 'en') }} 的路线时。在我传递en 的地方,我想从视图中获取当前的语言环境值,然后将其传递给路由。请帮忙。

【问题讨论】:

  • 您必须获取“en”的值(为什么不考虑会话变量),然后您可以执行以下操作:code {{ route('test.route', [ 'route'=>$variable_holding_route_value]) }}

标签: laravel laravel-5.3 blade laravel-blade


【解决方案1】:

首先创建一个区域设置路由和控制器:

Route::get('/locale/{lang}', 'LocaleController@setLocale')->name('locale');

class LocaleController extends Controller
{
    public function setLocale($locale)
    {
        if (array_key_exists($locale, Config::get('languages'))) 
        {
            Session::put('app_locale', $locale);
        }
        return redirect()->back();
    }
}

现在您可以轻松检查每个页面:

  $locale = app()->getLocale();
  $version = $locale == 'en' ? $locale . 'English' : 'Bangla';

【讨论】:

    【解决方案2】:

    试试这个。它将提供您的应用程序中设置的语言环境

    Config::get('app.locale')
    

    编辑:

    要在刀片中使用它,请使用如下所示,以在刀片中回显您当前的语言环境。

    {{ Config::get('app.locale') }}
    

    如果你想在它周围的刀片中做一个 if 条件,它会变成,

       @if ( Config::get('app.locale') == 'en')
    
       {{ 'Current Language is English' }}
    
       @elseif ( Config::get('app.locale') == 'ru' )
    
       {{ 'Current Language is Russian' }}
    
       @endif
    

    要获取当前语言环境,

    app()->getLocale()
    

    【讨论】:

    • 在刀片中?我可以像@if (Config::get('app.locale'))一样使用它吗?
    • 在你的刀片模板中你可以像这样使用它{{ Config::get('app.locale') }}
    • @FahadIqbalAhmadKhan app.locale 将始终设置为 something 所以@if 不会很有用。永远都是真的。
    • 这将获取可能与当前语言环境不同的配置语言环境。要获取当前语言环境,您应该使用App::getLocale()App::isLocale('...')Localization。您还可以使用 app()->getLocale(),在 Blade 中为 {{ app()->getLocale() }}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    相关资源
    最近更新 更多