Laravel局在化による簡単なLocaleルーティング
ローカライズ(L 10 N)と国際化(I 18 N)は、あなたのウェブサイトが世界的に際立っていて、来て、あなたのウェブサイトでより長くとどまるためにより多くのユーザーを引きつけたいならば、重要です.しかし、ウェブサイトをローカライズすることは、ウェブ上でテキストを翻訳するのと同じくらい単純でありえませんでした.受け入れられた言語/ロケールをフィルタリングするようないくつかの考慮事項があります.そして、現在使われているロケールを使用するために既存のURLをリダイレクトします.
私たちはララヴィルで地面からそれを構築することができますが、それを使用して実装を容易にしようlaravel-localization パッケージ.
コードの必須条件
準備独自の既存または新しい準備されたLaravelアプリを準備する.
インストールとセットアップ
作曲家を使ってインストールしてください.
局在化のためのルートのグループ化
さて、我々は具体的には、アプリケーション内のこれらの既存のルートを持っているとしましょう
今、あなたは翻訳を開始し、このパッケージを探索することができます、楽しみがある.
使用されるバージョン
私たちはララヴィルで地面からそれを構築することができますが、それを使用して実装を容易にしようlaravel-localization パッケージ.
コードの必須条件
準備独自の既存または新しい準備されたLaravelアプリを準備する.
インストールとセットアップ
作曲家を使ってインストールしてください.
composer require mcamara/laravel-localization
このコマンドでこのパッケージの設定ファイルを生成します.php artisan vendor:publish --provider="Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider"
そして、パッケージのミドルウェアをapp\Http\Kernel.php
:protected $routeMiddleware = [
...
/**** OTHER MIDDLEWARE ****/
'localize' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRoutes::class,
'localizationRedirect' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter::class,
'localeSessionRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect::class,
'localeCookieRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleCookieRedirect::class,
'localeViewPath' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationViewPath::class
...
];
局在化のためのルートのグループ化
さて、我々は具体的には、アプリケーション内のこれらの既存のルートを持っているとしましょう
routes\web.php
ファイルAuth::routes();
Route::prefix('products')->name('products.')->middleware('auth')->group(function () {
Route::get('/', [ProductController::class, 'index'])->name('index');
Route::post('/', [ProductController::class, 'store'])->name('store');
Route::get('/create', [ProductController::class, 'create'])->name('create');
Route::prefix('{product}')->middleware('product_owner')->group(function () {
Route::get('/', [ProductController::class, 'show'])->name('show');
Route::patch('/', [ProductController::class, 'update'])->name('update');
Route::delete('/', [ProductController::class, 'delete'])->name('delete');
Route::get('/edit', [ProductController::class, 'edit'])->name('edit');
});
});
新しいルートグループにラップして、プリフィックスを追加する必要があります.Route::prefix(LaravelLocalization::setLocale())->middleware(['localeSessionRedirect', 'localizationRedirect'])->group(function () {
Auth::routes();
Route::prefix('products')->name('products.')->middleware('auth')->group(function () {
Route::get('/', [ProductController::class, 'index'])->name('index');
Route::post('/', [ProductController::class, 'store'])->name('store');
Route::get('/create', [ProductController::class, 'create'])->name('create');
Route::prefix('{product}')->middleware('product_owner')->group(function () {
Route::get('/', [ProductController::class, 'show'])->name('show');
Route::patch('/', [ProductController::class, 'update'])->name('update');
Route::delete('/', [ProductController::class, 'delete'])->name('delete');
Route::get('/edit', [ProductController::class, 'edit'])->name('edit');
});
});
});
そしてそれです.それが動作するように、ちょうどロケール接頭語でどんな定義されたルートURLにでもアクセスするhttp://your-app.test/en/products
魔法のようにあなたのアプリケーション上のすべてのルートは、ロケールの前置でリダイレクトされます.我々はlocaleSessionRedirect
and localizationRedirect
ミドルウェアは、任意のルートをリダイレクトしてパッケージの著者に推奨されるロケールを事前にpackage page .今、あなたは翻訳を開始し、このパッケージを探索することができます、楽しみがある.
使用されるバージョン
Laravel Framework 8.12.3
mcamara/laravel-localization 1.6.1
Reference
この問題について(Laravel局在化による簡単なLocaleルーティング), 我々は、より多くの情報をここで見つけました https://dev.to/dendihandian/easy-locale-routing-with-laravel-localization-godテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol