Tiếp theo, thêm tệp resources/lang/fr.json.
Như bạn có thể thấy, chúng ta đang liên tục tham chiếu thông điệp mặc định từ tệp welcome.blade.php ({{ __(‘Welcome to Linguise website!’) }}). Không cần tạo tệp en.json, vì Laravel tự động nhận ra rằng các thông điệp mặc định là tiếng Anh.
Thiết lập trình chuyển đổi ngôn ngữ trong ứng dụng đa ngôn ngữ Laravel
Hơn nữa, Laravel chưa được thiết lập để ghi đè ngôn ngữ cục bộ, vì vậy hiện tại, chúng ta sẽ xử lý bản dịch trực tiếp trong route. Sửa đổi route welcome mặc định bên trong tệp routes/web.php như thế này.
Trong trường hợp này, chúng tôi đang nắm bắt một tham số GET locale tùy chọn và đặt locale hiện tại dựa trên nó (nếu locale được yêu cầu được hỗ trợ).
Bây giờ, bạn có thể truy cập trang web của mình và thêm bất kỳ ngôn ngữ được hỗ trợ nào làm phân đoạn đầu tiên trong URL. Ví dụ: truy cập localhost/it hoặc localhost/fr sẽ hiển thị nội dung được bản địa hóa. Nếu bạn không chỉ định locale hoặc chọn một locale không được hỗ trợ, Laravel sẽ mặc định là tiếng Anh (en).
Middleware bản địa hóa cho Laravel
Việc bao gồm locale trong mọi URL có thể không lý tưởng và có thể làm gián đoạn tính thẩm mỹ của trang web. Để giải quyết vấn đề này, chúng ta sẽ thiết lập một trình chuyển đổi ngôn ngữ và sử dụng phiên người dùng để hiển thị nội dung đã dịch. Bạn có thể tạo middleware mới trong tệp app/Http/Middleware/Localization.php hoặc tạo nó bằng cách chạy lệnh artisan make:middleware Localization.
Sau đó, thêm đoạn mã sau vào bên trong.
Middleware này sẽ hướng dẫn Laravel sử dụng vị trí do người dùng chọn nếu tùy chọn này có trong phiên.
Vì chúng ta cần thao tác này chạy trên mọi yêu cầu, hãy thêm nó vào ngăn xếp middleware mặc định trong app/Http/Kernel.php cho nhóm middleware web.
Sửa đổi các tuyến đường
Tiếp theo, định nghĩa một route để thay đổi locale trong file routes/web.php. Ở đây chúng ta đang sử dụng closure route, nhưng bạn có thể đặt cùng đoạn code đó bên trong một controller nếu muốn.
Ngoài ra, hãy xóa tính năng chuyển đổi ngôn ngữ đã được thêm trước đó vào tuyến đường chào mừng mặc định. Tuyến đường gốc của bạn bây giờ sẽ trông như thế này.
Sau khi hoàn tất, người dùng chỉ có thể chuyển đổi ngôn ngữ đang hoạt động bằng cách truy cập localhost/language/{locale}. Ngôn ngữ đã chọn sẽ được lưu trong phiên và người dùng sẽ được chuyển hướng trở lại trang trước đó (như được xử lý bởi middleware Localization).
Để kiểm tra, hãy truy cập localhost/language/it (giả sử cookie phiên đang hoạt động trong trình duyệt của bạn), và bạn sẽ thấy nội dung đã được dịch. Bạn có thể điều hướng trang web hoặc làm mới trang, và ngôn ngữ đã chọn sẽ vẫn có hiệu lực.
Triển khai tính năng chuyển đổi ngôn ngữ
Bây giờ, chúng ta cần cung cấp cho người dùng một tùy chọn có thể nhấp để thay đổi trình chuyển đổi ngôn ngữ Laravel web thay vì yêu cầu họ nhập mã ngôn ngữ vào URL theo cách thủ công. Để đạt được điều này, hãy tạo một trình chuyển đổi ngôn ngữ đơn giản. Thêm một tệp mới tại resources/views/partials/language_switcher.blade.php và chèn đoạn mã sau.
Để bao gồm công cụ chuyển đổi ngôn ngữ mới được tạo trong chế độ xem “welcome”, chỉ cần thêm dòng sau vào tệp welcome.blade.php của bạn tại vị trí bạn muốn công cụ chuyển đổi xuất hiện.
Mở tệp app/Providers/AppServiceProvider.php và thêm mã sau vào phương thức boot() để chia sẻ ngôn ngữ hiện tại với tất cả các chế độ xem khi công cụ chuyển đổi ngôn ngữ được sử dụng
Các tính năng dịch thuật nâng cao trong Laravel PHP
Trong phần thảo luận này, chúng ta sẽ xử lý các thành phần bản địa hóa khác, cụ thể là ngày, số và tiền tệ. Dưới đây là các bước.
Ngày tháng được bản địa hóa trong Laravel