我是laravel的新手,并使用此控制器切换我的语言
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Http\Requests;
use Config;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;
class LanguageController extends Controller {
public function switchLang($lang)
{
if (array_key_exists($lang, Config::get('languages'))) {
Session::set('applocale', $lang);
}
return Redirect::back();
}
}
这是我的路线:
Route::get('lang/{lang}', ['as'=>'lang.switch', 'uses'=>'LanguageController@switchLang']);
在app.blade,我用过这个:
{{ Config::get('languages')[App::getLocale()] }}
<a><span id="country-lang"><i class="fa fa-angle-down"></i></span></a>
<ul id="lang-style" class="dropdown-menu list-unstyled">
@foreach (Config::get('languages') as $lang => $language)
@if ($lang != App::getLocale())
<li>
<a class="text-center" href="{{ route('lang.switch', $lang) }}">
<img alt="England" src="{{asset('website/images/icons/flags/')}}{{$language}}.jpg" />
</a>
</li>
@endif
@endforeach
</ul>
它已在本地服务器上完美地工作并切换语言,但是在线服务它不是,你可以查看这里的网站
premiumcaregold.com
答案 0 :(得分:0)
您只将语言变量设置为会话,而不是应用程序外观。你应该像这样对应用程序:
App::setLocale($locale);
这只会设置当前请求的区域设置。下一个请求将加载应用程序的默认语言环境。要在整个用户会话中保留所选语言,您需要创建一个区域设置中间件并包装所有需要转换的路由。
在中间件中,您从会话中获取语言并将其设置为当前请求。
public function handle($request, Closure $next) {
$locale = 'en';
if ( Session::has('applocale') {
$locale = Session::get('applocale');
}
App::setlocale($locale);
}