Đa ngôn ngữ đơn giản trong Laravel

Bài viết được sự cho phép của tác giả Nguyễn Trần Chung

Nếu bạn muốn làm một dự án với nhiều ngôn ngữ khác nhau, thì bài viết sau sẽ giúp các bạn việc đó dể dàng hơn.

  Các Laravel route tips giúp bạn cải thiện routing
  Cách sử dụng Laravel với Socket.IO

Trong laravel đã hộ trợ sẵn các bạn các Retrieving Translation Strings . Ví dụ trong blade có thể viết 3 cách để viết

//Cách 1
{{ __('Ngôn ngữ') }}

//Cách 2
{{ trans('Ngôn ngữ') }}

//Cách 3
@lang('Ngôn ngữ')

Để xác định ngôn ngữ cho dự án của bạn thì bạn có thể sửa tại config/app.php và thay đổi các cài đặt sau

/**  
*Bạn sửa 'en' thành 'vn' để thay đổi ngôn ngữ sang Tiếng Việt hoặc khác, tùy bạn 
* 'en' hay 'vn' hay ký tự khác tùy vào thư mục mà bạn sẽ tạo phía sau  
*/

//Đây là ngôn ngữ thay đổi cho dự án
'locale' => 'en',  

//Ngôn ngữ dự phòng, phòng khi ngôn ngữ đang sử dụng bị lỗi
'fallback_locale' => 'en',

Trong Laravel có cách khác để thay đổi ngôn ngữ là sử dụng

App::setLocale($locale);

Với cách này bạn có thể lấy từ DB rồi đẩy vào $locale để các thành viên tự đổi ngôn ngữ theo ý riêng. Nhưng trong phạm vi bài này, mình sẽ hướng dẫn cách để viết đa ngôn ngữ như thế nào, còn việc thay đổi Options sẽ có một bài khác.

Ok, giờ vào phần chính, bạn vào /resources/lang bạn sẽ thấy một folder có sãn là ‘en’ đây là thư mục chưa file ngôn ngữ “Tiếng Anh” của dự án bạn trong đấy có file “validation.php” chứa các nội dung tiếng anh khi các bạn Validation trong dự án bạn nên Dịch hết theo cách bạn muốn.

Ngoài ra trong đó có các chuổi tên kiểu có hai chấm trước từ đó như :

:attribute
:date
:min
:max
:other
:digits
:value

thì các bạn nhớ chừa ra đừng có dịch. vì nó sẽ thay thế giá trị vào đó nha!

ok! Khoan hãy việt hóa nha, các bác phải tạo một folder khác ngang hàng với ‘en’ đã tạo tên trùng với tên các bạn đã config trong file app.php mình tạo folder tên là ‘vn’. Ok giờ các bạn copy hết các file trong thư mục ‘en’ vào thư mục ‘vn’ rồi việt hóa nó đi.

Xong! các bác đã việt hóa các thứ có thể việt hóa. Bây giờ đến phần các bạn tự tạo ra các text riêng để dịch đây.

Các bạn sẽ tạo một file có tên là ‘content.php’ hoặc khác tùy bạn nội dung như sau:

<?php

return [

//Nội dung các chuổi text được dịch ở đây

];

Nội dung thật ra là tương tự như 4 file đã có.

Tiếp theo, mình sẽ sử dụng các template auth có sẵn khi các bạn tạo đăng nhập sẵn mà laravel có để đỡ mất công tạo template khác. :D. Ví dụ template Login.balde.php

Đa ngôn ngữ đơn giản trong Laravel

Mình sẽ lấy chữ E-Mail Address làm ví dụ.

Đa ngôn ngữ đơn giản trong Laravel

bạn sửa {{ __(‘E-Mail Address’) }} lại thành{{ __(‘content.E-Mail Address’) }} chỗ content thêm vào chính là file content.php mà bạn đã tạo, bạn đặt tên file như nào thì thêm vào như vậy. Rồi trong file content.php

Đa ngôn ngữ đơn giản trong Laravel

Bạn viết như trên. Ta sẽ có thành quả như sau:

Đa ngôn ngữ đơn giản trong Laravel

Tương tự các bạn có thể làm với các từ khác các kiểu nhé. Hoặc chia file ra.

Ngoài cách có sãn bạn cũng có thể dùng 2 cách còn lại mà mình đã ghi ở phần đâu nha.

Bài viết gốc được đăng tải tại chungnguyen.xyz

Có thể bạn quan tâm:

Xem thêm các việc làm laravel Developer hấp dẫn tại TopDev