第一步:
转到
app/lang目录并在此处为每种语言的路线创建翻译。您需要创建3个
routes.php文件-每个文件都位于单独的语言目录(pl / en /
fr)中,因为您要使用3种语言
波兰语:
<?php// app/lang/pl/routes.phpreturn array( 'contact' => 'kontakt', 'about' => 'o-nas');
对于英语:
<?php// app/lang/en/routes.phpreturn array( 'contact' => 'contact', 'about' => 'about-us');
对于法语:
<?php// app/lang/fr/routes.phpreturn array( 'contact' => 'contact-fr', 'about' => 'about-fr');
第二步:
转到
app/config/app.php文件。
您应该找到以下行:
'locale' => 'en',
并将其更改为应该是您的主要站点语言的语言(在您的情况下为波兰语):
'locale' => 'pl',
您还需要将以下行放入此文件:
'alt_langs' => array ('en', 'fr'),'locale_prefix' => '',在
alt_langs配置设置可选的语言(在你的情况
en和
fr) -他们应该是一样的,从第一步骤中你的翻译创建的文件的文件名。
并且
locale_prefix是您的语言环境的前缀。您不需要默认语言环境的前缀,因此将其设置为空字符串。如果选择默认语言以外的其他语言,则会在运行时修改此配置。
第三步
转到您的
app/routes.php文件并放入其内容(即
app/routes.php文件的全部内容):
<?php// app/routes.phpif (in_array(Request::segment(1), Config::get('app.alt_langs'))) { App::setLocale(Request::segment(1)); Config::set('app.locale_prefix', Request::segment(1));}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的第一段是否与您的语言名称匹配-如果是,则更改语言环境和当前语言前缀。
然后在小循环中,设置所有路由名称的要求(您提到了要拥有的名称
about并
contact转换为URL),因此在此处将其设置为与
routes.php文件中为当前语言定义的名称相同。
最后,您创建将有前缀相同的语言(默认语言它将是空的),你只需创建路径,但这些参数内组路由组
about和
contact你当作
variables让你用
{about}和{contact}语法他们。您需要记住,在这种情况下
{contact},将检查所有路径是否与您在第一步中为当前语言定义的路径相同。如果你不想要这个效果,并希望使用手动设置路线每条路线的,有替代approutes.php不循环,您可以设置文件
contact和
about各条路线分别:
<?php// app/routes.phpif (in_array(Request::segment(1), Config::get('app.alt_langs'))) { App::setLocale(Request::segment(1)); Config::set('app.locale_prefix', Request::segment(1));}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(); } )->where('contact', Lang::get('routes.contact')); Route::get( '/{about}/', function () { return "about page ".App::getLocale(); } )->where('about', Lang::get('routes.about'));});第四步:
您没有提到它,但是您可以考虑另外一件事。如果有人
/en/something在
something不正确的路由处使用url
,我认为是进行重定向的最佳解决方案。但是,您不应该重定向到,
/因为它是默认语言,而是重定向到
/en。
因此,现在您可以打开
app/start/global.php文件并在此处为未知网址创建301重定向:
// app/start/global.phpApp::missing(function(){ return Redirect::to(Config::get('app.locale_prefix'),301);});


