单击导航链接时更改页面语言

时间:2019-06-17 06:43:38

标签: laravel localization

我想用两种语言开发我的网站,并想在单击导航链接时更改语言。

控制器

SET @sql =
'SELECT UserId, (CONVERT([varchar](50), DECRYPTBYKEY(FirstName)) + '' '' + CONVERT([varchar](50), DECRYPTBYKEY(LastName))) AS [Userfullname]  from [user] WHERE  FkSupervisor in ('
+ @selectedSupervisorIds
+ ') AND IsActive = 1'

EXECUTE Sp_executesql
  @sql 

路线

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Input;
use App;
use Lang;


class LanguageController extends Controller
{
    public function setLocale($locale='en')
    {
        if (!in_array($locale, ['en', 'ja'])) {
            $locale = 'en';
        }

        Session::put('locale', $locale);
        redirect()->back();
    }
}

中间件

Route::get('locale/{locale?}', array('as'=>'set-locale', 
            'uses'=>'LanguageController@setLocale'));

观看次数

<?php

namespace App\Http\Middleware;
use Closure;
use Session;
use Config;
use App;

class Locale
{

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $locale=Session::get('locale', Config::get('app.locale'));
        App()->setLocale($locale);

        return $next($request);
    }
}

这就是我使用语言键的方式

<li class="nav-item">
    <a class="nav-link" href="{{ url('/locale/en') }}">English</a>
</li>
<li class="nav-item">
    <a class="nav-link" href="{{ url('/locale/ja') }}">Japanese</a>
</li>

我在lang中的{{trans('home.Services')}} home.php中创建了两个ja,并在其中设置了语言

当我单击导航链接时,页面将转到en。我不知道我在哪里犯错。我还将内核中间件设置为localhost/../locale/ja ,。谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

kernel.php > routeMiddleware上添加它。

protected $routeMiddleware = [
//... other lines of code.    
    'locale' => \App\Http\Middleware\Locale::class,
];

并将视图更改为

<li class="nav-item">
    <a class="nav-link" href="{{ route('set-locale', 'en') }}">English</a>
</li>
<li class="nav-item">
    <a class="nav-link" href="{{ route('set-locale', 'ja') }}">Japanese</a>
</li>

我不确定,这是否有问题,请将路由更改为,[只需添加'/'。]

Route::get('/locale/{locale?}', array('as'=>'set-locale', 
            'uses'=>'LanguageController@setLocale'));
相关问题