首頁  >  文章  >  後端開發  >  如何在 Laravel 中建立多語言、翻譯的路線而不依賴 cookie 或會話?

如何在 Laravel 中建立多語言、翻譯的路線而不依賴 cookie 或會話?

Patricia Arquette
Patricia Arquette原創
2024-11-03 15:24:30585瀏覽

How can I create multilingual, translated routes in Laravel without relying on cookies or sessions?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn