解决方案,我想出了依赖于特定的中间件.
Route::get('', function() {
return redirect()->route('index', ['language' => App::getLocale()]);
});
Route::group([
'prefix' => '{lang}',
'where' => ['lang' => '(fr|de|en)'],
'middleware' => 'locale'
], function() {
Route::get('', ['as' => 'index', 'uses' => 'HomeController@getIndex']);
// ...
}
和中间件.
namespace App\Http\Middleware;
use App;
use Closure;
use View;
class Localization {
public function handle($request, Closure $next) {
$language = $request->route()->parameter('lang');
App::setLocale($language);
// Not super necessary unless you really want to use
// number_format or even money_format.
if ($language == "en") {
setLocale(LC_ALL, "en_US.UTF-8");
} else {
setLocale(LC_ALL, $language."_CH.UTF-8");
}
View::share('lang', $language);
return $next($request);
}
}
正如您所猜测的,此代码适用于瑞士应用程序,因此_CH无处不在.