我需要使用laravel构建一个Web应用程序,该应用程序将以不同的语言使用。处理多种语言不是问题,因为系统消息等将由本地化功能中内置的laravel处理。内容将通过外部内容平台(例如prismic或contentful)进行维护。
但是我在考虑如何处理多语言路线。例如。德国的路线:
Route::prefix('de')->group(function(){
Route::get('profil', 'UserController@profile');
Route::get('anmelden', 'Auth\LoginController@showLoginForm');
Route::prefix('produkte')->group(function(){
Route::get('{marke}', 'BrandController@showBrandDetails');
Route::get('{marke}/{kategorie}', 'BrandController@showBrandCategories');
// and more ...
});
// and more ...
});
如您所见,URL是特定于语言的。在英语中,“个人资料”将是“个人资料”,“ anmelden”将是“登录”。当然,我可以通过包装功能来处理语言,但是所有内部路线仍然是德语。因此,我将不得不为应用程序支持的每种语言创建这些路由组。
另一种方法是在包装的路由组中包括适当的路由:
Route::prefix('{language}')->group(function($language){
if($app::languageExists($language)){
Route::group(__DIR__ . "routes_" . $language . ".php");
} else {
Route::group(__DIR__ . "routes_" . $app::defaultLanguage . ".php");
}
});
这样,路线会结构得更好一些。但是,我必须维护应用程序支持的尽可能多的特定于语言的路由文件,这对于许多种语言来说似乎有些混乱。
有没有一种方法可以很好且易于维护/扩展的方式处理此问题?
每种语言对应的控制器和方法都相同。