首頁 >後端開發 >php教程 >如何在 Laravel 中創建多語言翻譯路線?

如何在 Laravel 中創建多語言翻譯路線?

Barbara Streisand
Barbara Streisand原創
2024-11-04 03:01:30211瀏覽

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