Bài viết Câu hỏi About RongvangIT
profile Pic
0
0

Đăng ngày:

  67 Lượt xem

Hướng dẫn Tạo Website Đa Ngôn Ngữ trong Laravel

Laravel

Xin chào các bạn.

Bài viết này sẽ cung cấp ví dụ về cách tạo một trang web đa ngôn ngữ trong Laravel. Bạn sẽ hiểu về khái niệm của ví dụ trang web đa ngôn ngữ trong Laravel. Ở đây, bạn sẽ học cách thêm nhiều ngôn ngữ trong Laravel. Đây là một ví dụ đơn giản về đa ngôn ngữ Laravel với dropdown lựa chọn ngôn ngữ.

Trong ví dụ này, chúng ta sẽ đơn giản sử dụng laravel default trans để sử dụng nhiều ngôn ngữ trong Laravel. Chúng ta sẽ tạo ba ngôn ngữ khác nhau là tiếng Anh, tiếng Pháp và tiếng Tây Ban Nha. Sau đó, chúng ta sẽ quản lý nó thông qua một dropdown và middleware.

Vì vậy, hãy làm theo vài bước để thêm hỗ trợ đa ngôn ngữ trong Laravel.

Bước 1: Cài Đặt Laravel

Trong bước này, nếu bạn chưa thiết lập ứng dụng Laravel, bạn cần nhận một ứng dụng Laravel mới. Chạy lệnh sau để nhận ứng dụng Laravel mới:

composer create-project --prefer-dist laravel/laravel blog

Bước 2: Tạo Tệp Ngôn Ngữ

Trong bước này, chúng ta chỉ cần tạo các thư mục và tệp sau để ngôn ngữ tiếng Anh, tiếng Pháp và tiếng Tây Ban Nha trong thư mục lang.

Hãy tạo các tệp như sau:

resources/lang/en/messages.php

<?php

return [
    'title' => 'Đây là Tiêu đề Tiếng Anh.',
];

resources/lang/fr/messages.php

<?php

return [
    'title' => 'Ceci est le titre en français.',
];

resources/lang/sp/messages.php

<?php

return [
    'title' => "Este es el título en español.",
];

Bước 3: Tạo Routes

Trong bước này, chúng ta sẽ tạo hai routes, một cho hiển thị trang bảng điều khiển với dropdown ngôn ngữ và một cho logic thay đổi ngôn ngữ.

Thêm các routes sau:

routes/web.php

Route::get('lang/home', 'LangController@index');
Route::get('lang/change', 'LangController@change')->name('changeLang');

Bước 4: Tạo Controller LangController

Ở điểm này, chúng ta nên tạo một controller mới là LangController. Controller này sẽ quản lý bố cục và logic thay đổi ngôn ngữ động, vì vậy đặt nội dung sau vào tệp controller:

app/Http/Controllers/LangController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App;

class LangController extends Controller
{
    public function index()
    {
        return view('lang');
    }

    public function change(Request $request)
    {
        App::setLocale($request->lang);
        session()->put('locale', $request->lang);

        return redirect()->back();
    }
}

Bước 5: Tạo View

Trong bước cuối cùng, hãy tạo lang.blade.php (resources/views/lang.blade.php) để làm bố cục và viết mã thiết kế ở đây, và đặt mã sau:

resources/views/lang.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>How to Create Multi Language Website in Laravel - rongvangit.com</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 - rongvangit.com</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>
</body>

<script type="text/javascript">
    var url = "{{

 route('changeLang') }}";

    $(".changeLang").change(function(){
        window.location.href = url + "?lang="+ $(this).val();
    });
</script>
</html>

Bước 6: Tạo Middleware

Trong tệp này, chúng ta cần tạo một middleware để quản lý ngôn ngữ động mà chúng ta chọn trên dropdown. Hãy tạo middleware như sau:

php artisan make:middleware LanguageManager

Bây giờ bạn cần cập nhật tệp middleware như sau:

app/Http/Middleware/LanguageManager.php

<?php

namespace App\Http\Middleware;

use Closure;
use App;

class LanguageManager
{
    public function handle($request, Closure $next)
    {
        if (session()->has('locale')) {
            App::setLocale(session()->get('locale'));
        }

        return $next($request);
    }
}

Bây giờ chúng ta cần đăng ký nó vào tệp kernel. Hãy thêm nó như sau:

app/Http/Kernel.php

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    ...

    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,
        ],
    ];

Bây giờ chúng ta đã sẵn sàng chạy ví dụ của chúng ta, vì vậy chạy lệnh sau để nhanh chóng chạy:

php artisan serve

Bây giờ bạn có thể mở đường dẫn sau trên trình duyệt của bạn:

http://localhost:8000/lang/home

Tiếng Anh:

multi1.png

Tiếng Pháp:

multi2.png

Tiếng Tây Ban Nha:

multi3.png

Tôi hy vọng nó có thể giúp bạn…

Bài viết cùng chuyên đề [ Laravel Tutorial ]

Bình luận

Bài viết chưa có bình luận. Hãy trở thành người bình luận đầu tiên!
Sign up for free and join this conversation.
Sign Up
If you already have a RongvangIT account Login
Danh sách thư mục
Bắt đầu ngay với RồngVàngIT - nền tảng chia sẻ kiến thức lập trình tuyệt vời cho kỹ sư Việt Nam!

Hãy đăng nhập để sử dụng hàng loạt các chức năng tuyệt vời của RồngVàngIT !

  1. 1. Bạn sẽ nhận được các bài viết phù hợp bằng chức năng theo dõi tag và người dùng.
  2. 2. Bạn có thể đọc lại các thông tin hữu ích bằng chức năng lưu trữ nội dung.
  3. 3. Chia sẻ kiến thức, đặt câu hỏi và ghi lại quá trình trưởng thành của mình cùng RồngVàngIT !
Tạo tài khoản Đăng nhập
profile Pic