Laravel は、複数の言語をサポートするミドルウェアなど、多くの便利な機能とツールを提供する、広く使用されている PHP フレームワークです。この記事では、ミドルウェアを使用してLaravelの多言語サポートを実装する方法を詳しく説明し、いくつかの具体的なコード例を示します。
まず、複数の言語をサポートできるように Laravel の言語パッケージを構成する必要があります。 Laravel では、言語パッケージは通常、resources/lang ディレクトリに配置され、各言語には対応するサブディレクトリがあります。たとえば、英語とフランス語をサポートしたい場合は、resources/lang ディレクトリに en と fr の 2 つのサブディレクトリを作成する必要があります。
次に、各サブディレクトリに、翻訳するすべての文字列を含むmessages.php ファイルを作成する必要があります。たとえば、次のように en ディレクトリにmessages.php ファイルを作成します。
return [ 'welcome' => 'Welcome to my website!', 'about' => 'About us', 'contact' => 'Contact us', ];
次に、次のように fr ディレクトリにmessages.php ファイルを作成します。
return [ 'welcome' => 'Bienvenue sur mon site web!', 'about' => 'À propos de nous', 'contact' => 'Contactez-nous', ];
このようにして、言語パッケージを構成しました。次に、多言語サポートを実装するためのミドルウェアを作成する必要があります。
Laravel では、ミドルウェアを使用してリクエストを処理できます。したがって、ユーザーの言語設定を確認し、その設定に基づいて適切な言語パックをロードするミドルウェアを作成できます。以下は簡単なミドルウェアの例です:
<?php namespace AppHttpMiddleware; use Closure; use IlluminateHttpRequest; class SetLanguage { public function handle(Request $request, Closure $next) { // 检查请求中是否设置了语言参数 $language = $request->input('lang', 'en'); // 检查语言包是否存在 if (!in_array($language, ['en', 'fr'])) { abort(400, 'Invalid language'); } // 设置当前语言 app()->setLocale($language); // 继续处理请求 return $next($request); } }
このミドルウェアはリクエスト内の lang パラメータを読み取り、その値に基づいて現在の言語を設定します。リクエストに lang パラメータがない場合、デフォルトで英語になります。リクエストで無効な言語が指定されている場合、HTTP 400 エラーが返されます。
このミドルウェアを app/Http/Kernel.php ファイルに次のように登録できます:
protected $middlewareGroups = [ 'web' => [ AppHttpMiddlewareSetLanguage::class, // ... ], // ... ];
このようにして、各リクエストはこのミドルウェアを通過し、現在の言語を設定します。
言語パックとミドルウェアを構成したので、コード内で多言語文字列を使用できます。 Laravel は、現在の言語に応じて対応する文字列を選択できる翻訳関数 trans() を提供します。たとえば、ビューで使用できます:
<h1>{{ trans('messages.welcome') }}</h1>
この例では、trans() 関数は、現在の言語に基づいて、対応する「ようこそ」文字列を選択します。現在の言語が英語の場合は、 「私の Web サイトへ「ようこそ」を返してください!」、フランス語の場合は「Bienvenue sur mon site web!」が返されます。
ビューに加えて、コントローラ、フォームバリデータ、電子メールテンプレートなどのどこでも trans() 関数を使用できます。
概要
この記事では、Laravel のミドルウェアを使用して多言語サポートを実現する方法を紹介し、いくつかの具体的なコード例を示しました。このアプローチを使用すると、アプリケーションに多言語機能を簡単に追加できます。
以上がLaravelで多言語サポートのためのミドルウェアを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。