ホームページ >PHPフレームワーク >Laravel >Laravelでロケールを動的に変更する方法

Laravelでロケールを動的に変更する方法

PHPz
PHPzオリジナル
2023-04-11 15:06:20888ブラウズ

Laravel アプリケーションでは、さまざまな言語や地域でのテキスト コンテンツの処理は非常に重要な機能です。デフォルトでは、Laravel は config/app.php 設定ファイルの locale オプションを使用してアプリケーションのデフォルトのロケールを指定します。ただし、場合によっては、実行時にアプリケーションのロケールを動的に変更する必要がある場合があります。この記事では、Laravel でアプリケーションのロケールを動的に変更する方法を説明します。

ステップ 1: ロケール ルーティングを設定する

まず、ロケールの変更を処理するルートを作成する必要があります。 Laravel では、次のルーティング コード ブロックを使用してこれを実現できます。

Route::get('language/{locale}', function ($locale) {
    session(['locale' => $locale]);
    return redirect()->back();
});

上記のコード ブロックは、「locale」という名前のパラメータを含む「 language 」という名前のルートを作成します。ルートが一致すると、ユーザーが選択したロケールがセッションに保存され、ユーザーは前のページにリダイレクトされます。

ステップ 2: ロケール ミドルウェアを作成する

次に、アプリケーションがさまざまなロケールで正しく実行されることを確認するためのミドルウェアを作成する必要があります。 Laravel では、次のコード ブロックを使用して、「LocaleMiddleware」というミドルウェアを作成できます。

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;

class LocaleMiddleware
{
    public function handle($request, Closure $next)
    {
        $locale = Session::get(&#39;locale&#39;, config(&#39;app.locale&#39;));

        App::setLocale($locale);

        return $next($request);
    }
}

上記のコード ブロックでは、ロケールが選択されていない場合は、セッション ファサードを使用してユーザーが選択したロケールを取得します。 session に設定すると、 config/app.php 設定ファイル内のデフォルトのロケールが使用されます。ロケールを決定したら、アプリケーションに現在のロケールを動的に設定します。

ステップ 3: アプリケーションにミドルウェアを追加する

次に、ミドルウェアがリクエスト パイプラインで適切に使用されるように、Laravel アプリケーションにミドルウェアを追加する必要があります。次の手順を使用して、Laravel アプリケーションにミドルウェアを追加できます:

  1. app/Http/Kernel.php ファイルで、$routeMiddleware 配列に次の行を追加します:
&#39;locale&#39; => \App\Http\Middleware\LocaleMiddleware::class,
  1. アプリケーション ルート ファイルで、ロケールを考慮する必要があるルートに「ロケール」ミドルウェアを追加します。例:
Route::get('/', function () {
    return view('welcome');
})->middleware(['locale']);

これにより、このルートでは、実行時にロケールを設定するためにミドルウェアが使用されるようになります。

ステップ 4: アプリケーションをテストする

これで、ロケールの変更を処理するためのルートと、アプリケーション全体で正しいロケールが使用されることを確認するミドルウェアが設定されました。次に、応用?

  1. まず、Web サイトを開いてアプリで言語を選択します。
  2. 次に、アプリケーション内の他のルートまたはページにアクセスして、選択したロケールを反映するようにテキスト コンテンツが更新されていることを確認します。
  3. 最後に、「/ language/[locale]」ルートに移動することで、URL パラメーターを介してアプリケーションのロケールを変更でき、ロケール変更後のテキスト コンテンツが正しく更新されるようになります。

結論

この記事では、Laravel でアプリケーションのロケールを動的に変更する方法について説明しました。ロケールの変更を処理するルーティングとミドルウェアを設定することにより、選択したロケールがアプリケーション全体で正しく使用されるようになります。これは、特定のユーザー設定に基づいてサイトのローカリゼーションを自動化し、ユーザー エクスペリエンスを向上させるのに役立つ非常に便利な機能です。

以上がLaravelでロケールを動的に変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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