的解決方案,我想出了依賴於特定的中間件。
<?php
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' => '[email protected]']);
// ...
}
和中間件。
<?php
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
無處不在。
那些國家不會有不同的語言嗎? –
@ dan-klasson它更多的是一個通用的問題,但我們可以假設他們會。 – greut
那麼爲什麼不直接使用Laravel Localization呢? –