Magento 2 cho phép bạn bản địa hóa cửa hàng của mình bằng cách sử dụng các file .csv để dịch ngôn ngữ của cửa hàng sang các ngôn ngữ khác nhau. Trong bài viết này tôi sẽ hướng dẫn các bạn tìm hiểu về translate trong Magento 2.
Contents
Tạo file .csv
Phần này khá là đơn giản, bạn chỉ cần tạo một file .csv nằm trong thư mục i18n và khai báo các chuỗi bạn muốn dịch là xong. Điều các bạn cần chú ý ở đây là tên của file .csv chính là ngôn ngữ hiện tại của Magento.
VendorName/ModuleName/i18n/<locale_code>.csv
Muốn biết locale_code của các ngôn ngữ hiện tại bạn có thể vào Stores > Configuration > General > Locale Options. Sau đó nhấn chuột phải vào input select Locale và chọn Inspect. Bạn sẽ thấy mã HTML các options có value bằng local code như bên dưới:

Ví dụ cửa hàng Magento của tôi ngôn ngữ đang là tiếng anh, và tôi muốn dịch chúng sang tiếng việt thì tôi sẽ tạo file en_US.csv trong module của tôi:
ViMagento/HelloWorld/i18n/en_US.csv
1
2
3
|
‘Translate’, ‘Dịch’
‘Hello ViMagento’, ‘Xin chào ViMagento’
‘Language’, ‘Ngôn ngữ’
|
Sử dụng Translate trong Magento 2
Để dịch được các chuỗi mà bạn sử dụng trong module của mình thì bắt buộc bạn phải sử dụng hàm dịch. Ví dụ trong file template của tôi có một vài chuỗi như sau:
1
2
3
|
<p><?= __(‘Translate’) ?></p>
<p><?= __(‘Hello ViMagento’); ?></p>
<p><?= ‘Language’ ?></p>
|
Và kết quả hiển thị trên trình duyệt sẽ là:

Như bạn có thể thấy trong file template tôi đã sử dụng __() để dịch các chuỗi từ tiếng anh sang tiếng việt. Chuỗi Language không được sử dụng hàm __() nên sẽ không được dịch.
Translate làm việc như thế nào?
Khi gọi hàm __(‘Translate string’) Magento sẽ tìm bản dịch cho chuỗi Translate string bằng ngôn ngữ hiện tại. Ví dụ ngôn ngữ hiện tại đang là tiếng anh thì Magento sẽ tìm trong các file en_US.csv . Magento sẽ tìm bản dịch trong file .csv theo thứ tự sau:
- Bảng translation trong cơ sở dữ liệu
- Trong theme ( app/code/design/<Package>/<theme>/i18n/<locale_code>.csv)
- Trong module (app/code/<Vendor>/<Module>/i18n/<locale_code>.csv)
Khi một chuỗi phù hợp được tìm thấy thì Magento sẽ không tìm kiếm các chuỗi phù hợp khác nữa. Ngược lại nếu không tìm thấy chuỗi phù hợp nó sẽ lấy ngôn ngữ hiện tại. Chức năng translate đã được Magento làm rất tốt. Hàm __() là một hàm toàn cục và bạn có thể gọi nó ở bất cứ đâu mà không cần phải nhờ đến một class nào trợ giúp.
Kết luận
Trong bài viết tôi đã hướng dẫn các bạn sử dụng chức năng translate trong Magento 2. Phần này thì đơn giản nên các bạn chỉ cần thực hành là sẽ hiểu ngay. Cám ơn các bạn đã đọc bài.