ホームページ  >  記事  >  バックエンド開発  >  Cookie やセッションに依存せずに、Laravel で多言語の翻訳されたルートを作成するにはどうすればよいですか?

Cookie やセッションに依存せずに、Laravel で多言語の翻訳されたルートを作成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 15:24:30627ブラウズ

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

Laravel での多言語翻訳ルートの作成

このガイドは、Laravel で多言語翻訳ルートを作成するための包括的なソリューションを提供し、現在の言語がCookie やセッションに依存するのではなく、URL によってのみ決定されます。

実装:

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. Routes:

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

以上がCookie やセッションに依存せずに、Laravel で多言語の翻訳されたルートを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。