栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Laravel中创建多语言翻译的路线

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Laravel中创建多语言翻译的路线

第一步:

转到

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);});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号