首页  >  文章  >  后端开发  >  如何在 Laravel 中创建多语言翻译路线?

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

Barbara Streisand
Barbara Streisand原创
2024-11-04 03:01:30155浏览

How to Create Multilingual Translated Routes in Laravel?

在 Laravel 中创建多语言翻译路由

在 Laravel 应用程序中,您可以根据所选语言创建多语言路由,从而允许用户- 友好的导航体验。

第 1 步:配置语言目录和翻译

在 app/lang 下创建三个独立的语言目录(例如 pl、en、fr)。在每个目录中,创建一个名为routes.php的文件,其中包含翻译后的路由名称:

<code class="php">// app/lang/pl/routes.php
return array(
    'contact' => 'kontakt',
    'about' => 'o-nas'
);</code>
<code class="php">// app/lang/en/routes.php
return array(
    'contact' => 'contact',
    'about' => 'about-us'
);</code>
<code class="php">// app/lang/fr/routes.php
return array(
    'contact' => 'contact-fr',
    'about' => 'about-fr'
);</code>

第2步:配置语言设置

在 app/config/app.php 中:

  • 将“区域设置”设置为您的默认语言(例如“pl”)。
  • 在“alt_langs”中包含替代语言列表' (例如,['en', 'fr'])。
  • 将默认语言前缀的 'locale_prefix' 留空。
<code class="php">'locale' => 'pl',
'alt_langs' => ['en', 'fr'],
'locale_prefix' => '',</code>

第 3 步:定义路由模式和语言相关组

在app/routes.php中:

  • 如果URL的第一段与替代语言匹配,则更新区域设置和locale_prefix .
  • 根据当前语言翻译设置路由模式。
  • 创建应用了语言前缀的路由组。
<code class="php">if (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();
    });

});</code>

第 4 步:处理未知 URL

在 app/start/global.php 中:

  • 将任何未知 URL 重定向到正确的语言前缀并使用 301 状态代码:
<code class="php">App::missing(function() {
   return Redirect::to(Config::get('app.locale_prefix'), 301);
});</code>

通过实施这些步骤,您将创建适应所选语言的动态路线,确保跨多种语言的无缝用户体验。

以上是如何在 Laravel 中创建多语言翻译路线?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn