Laravel多语言设置 一、在~/config/app.php文件中加入应用支持的语言版本 'locales' => ['en' => 'English', 'zh-CN' => '简体中文', 'ja' => '日本語'], 'fallback_locale' => 'en', 二、先创建个LanguageController,用来处理设置语言种类的请求 php artisan make:controller LanguageController 代码如下: namespace App\Http\Controllers; use Illuminate\Http\Request; class LanguageController extends Controller { /** * Show the application dashboard. * * @return \Illuminate\Http\Response */ public function setLocale($lang){ if (array_key_exists($lang, config('app.locales'))) { session(['applocale' => $lang]); } return back()->withInput(); } } 三、改路由,在routes\web.php里面加个指向LanguageController@changeLanguage的路由, Route::get('lang/{locale}', ['as'=>'lang.change', 'uses'=>'LanguageController@setLocale']); 四、在前端页面里头放个选择语言的链接列表,如下 @foreach (Config::get('app.locales') as $lang => $language) @if ($lang != App::getLocale()) @endif @endforeach 五、做个Language的Middleware,截住请求,改当前Request的语言设定 php artisan make:middleware Language namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Session; class Language { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { return $next($request); } } 六、把Language这个中间件在Kernel.php里头注册好 protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \App\Http\Middleware\Language::class, // Alex Globel Language Settings 2017-03-17 \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; |