在 Laravel 中创建多语言翻译路由
本指南提供了在 Laravel 中创建多语言翻译路由的全面解决方案,确保当前语言是仅由 URL 确定,而不依赖于 cookie 或会话。
实现:
1.翻译文件:
在 app/lang/[LANGUAGE]/routes.php 目录中为所需路由创建翻译文件。例如,对于波兰语 (pl)、英语 (en) 和法语 (fr):
app/lang/pl/routes.php:
return array( 'contact' => 'kontakt', 'about' => 'o-nas' );
app/lang/en/routes.php:
return array( 'contact' => 'contact', 'about' => 'about-us' );
2.配置:
更新 app/config/app.php:
设置默认语言(例如波兰语):
'locale' => 'pl',
列出替代语言(英语和法语):
'alt_langs' => array ('en', 'fr'),
定义语言环境前缀:
'locale_prefix' => '', // Will be dynamically updated at runtime
3。路由:
编辑 app/routes.php:
... // Set locale and locale_prefix if an alternative language is selected if (in_array(Request::segment(1), Config::get('app.alt_langs'))) { App::setLocale(Request::segment(1)); Config::set('app.locale_prefix', Request::segment(1)); } // Set route patterns based on the translated routes foreach(Lang::get('routes') as $k => $v) { Route::pattern($k, $v); } Route::group(array('prefix' => Config::get('app.locale_prefix')), function() { Route::get( '/', function () { return "main page - ".App::getLocale(); } ); Route::get( '/{contact}/', function () { return "contact page ".App::getLocale(); } ); Route::get( '/{about}/', function () { return "about page ".App::getLocale(); } ); }); ...
此配置根据第一个 URL 段动态更新区域设置和区域设置前缀(如果它与替代语言匹配)并根据翻译后的路线设置路线模式。
4.重定向(可选):
对于未知 URL,重定向到当前语言前缀(例如 /en)而不是默认语言 (/):
// app/start/global.php App::missing(function() { return Redirect::to(Config::get('app.locale_prefix'),301); });
以上是如何在 Laravel 中创建多语言、翻译的路线而不依赖 cookie 或会话?的详细内容。更多信息请关注PHP中文网其他相关文章!