如何在 Laravel 5.3 中获取当前的语言环境

Posted

技术标签:

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

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

【问题讨论】:

您必须获取“en”的值(为什么不考虑会话变量),然后您可以执行以下操作:code route('test.route', [ 'route'=>$variable_holding_route_value]) 【参考方案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()

以上是关于如何在 Laravel 5.3 中获取当前的语言环境的主要内容,如果未能解决你的问题,请参考以下文章

如何使用获取参数将 laravel (5.3) 路由重定向到其他路由

如何在 laravel 5.3 中解码 base64

在 Laravel 5.3 中从 SQL Server 获取多个结果集

任何想法如何使用 vue js 和 vue 路由器在 laravel 5.3 中进行基于会话的身份验证

Laravel 5.3 查询从通过外键连接的 4 个表中获取结果

如何在 Laravel 5.3 中执行授权策略?