Laravel 9: Как создать многоязычный веб-сайт в приложениях Laravel 9
Создайте веб-сайт на нескольких языках в приложениях laravel 9; В этом руководстве мы узнаем, как создать многоязычный веб-сайт в приложениях laravel 9.
Laravel 9: Создание примера многоязычного веб-сайта. Учебное пособие
Выполните следующие шаги, чтобы создать многоязычный веб-сайт в приложениях laravel 9:
Шаг 1 - Установите Laravel
Выполните следующую команду в командной строке, чтобы установить приложение laravel в вашей системе:
composer create-project laravel/laravel example-app
Шаг 2 - Создайте Lang-файлы
Создайте следующие папки и файлы для файлов английского, французского и испанского языков в папке /lang/:
resources/lang/en/messages.php
<?php
return [
'title' => 'This title is in English',
];
resources/lang/fr/messages.php
<?php
return [
'title' => 'Ceci est le titre fr langue anglaise.',
];
resources/lang/sp/messages.php
<?php
return [
'title' => "Il s'agit du titre en langue espagnole.",
];
Шаг 3 - Создайте маршруты
Посетите каталог маршрутов и откройте web.php. Затем создайте два маршрута: один для отображения страницы панели инструментов с раскрывающимся списком языков, а другой — для изменения языковой логики:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\LangController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('lang/home', [LangController::class, 'index']);
Route::get('lang/change', [LangController::class, 'change'])->name('changeLang');
Шаг 4 - Создайте контроллер LangController
Выполните следующую команду в командной строке, чтобы создать файл LangController:
php artisan make:controller LangController
Затем перейдите в каталог app/http/controllers и откройте файл LangController.php. Затем добавьте в него следующий код:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App;
class LangController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('lang');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function change(Request $request)
{
App::setLocale($request->lang);
session()->put('locale', $request->lang);
return redirect()->back();
}
}
Шаг 5 - Создайте вид
Посетите каталог resources/views и создайте файл lang.blade.php. Затем, добавьте следующий код в файл lang.blade.php:
<!DOCTYPE html>
<html>
<head>
<title>How to Create Multi Language Website in Laravel</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<div class="container">
<h1>How to Create Multi Language Website in Laravel</h1>
<div class="row">
<div class="col-md-2 col-md-offset-6 text-right">
<strong>Select Language: </strong>
</div>
<div class="col-md-4">
<select class="form-control changeLang">
<option value="en" {{ session()->get('locale') == 'en' ? 'selected' : '' }}>English</option>
<option value="fr" {{ session()->get('locale') == 'fr' ? 'selected' : '' }}>France</option>
<option value="sp" {{ session()->get('locale') == 'sp' ? 'selected' : '' }}>Spanish</option>
</select>
</div>
</div>
<h1>{{ __('messages.title') }}</h1>
</div>
<script type="text/jаvascript">
var url = "{{ route('changeLang') }}";
$(".changeLang").change(function () {
window.location.href = url + "?lang=" + $(this).val();
});
</script>
</body>
</html>
Шаг 6 - Создайте Middleware (промежуточное ПО)
Выполните следующую команду в командной строке, чтобы создать одно промежуточное ПО, которое будет управлять динамическим языком, который мы выбрали в раскрывающемся списке; выглядит следующим образом:
php artisan make:middleware LanguageManager
Затем перейдите в каталог app/Http/Middleware/ и откройте файл LanguageManager.php. Добавьте в него следующий код:
<?php
namespace App\Http\Middleware;
use Closure;
use App;
class LanguageManager
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (session()->has('locale')) {
App::setLocale(session()->get('locale'));
}
return $next($request);
}
}
Затем перейдите в каталог app/Http/ и откройте файл Kernel.php. Зарегистрируйте промежуточное ПО:
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
....
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\LanguageManager::class,
],
'api' => [
'throttle:60,1',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
...
Шаг 7 - Запустите приложение Laravel
Выполните следующую команду в командной строке, чтобы запустить приложение laravel
php artisan serve
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.