Lập trình Web: Python: Django: Xây dựng cửa hàng trực tuyến với Oscar-Paypal, phần 7

17. Ngôn ngữ giao diện và dịch ngôn ngữ

Ngôn ngữ giao diện tiếng Việt còn thiếu và có chỗ sai. Chúng ta quan sát menu “Content” trong Dashboard như dưới đây


Và khi ngôn ngữ được chuyển sang tiếng Việt:


Trong hạng mục menu thứ nhất, “Content blocks” được dịch thành “Khóa nội dung”. “Khóa nội dung” là gì vậy? Đây là dịch sai. Có thể do người dịch không phải là người Việt hoặc không hiểu kỹ thuật. Kết quả dịch đúng phải là “Khối nội dung” hoặc “Các khối nội dung”.

Ngôn ngữ giao diện được cung cấp bởi các tệp thông điệp django.po và django.mo. Các tệp .po và .mo là các tệp xử lý ngôn ngữ dùng chung cho nhiều nền tảng khác, như WordPress. Tệp .po là một tệp văn bản dùng làm nguồn và tệp .mo là tệp nhị phân dùng cho hàm gettext().
Để xử lý ngôn ngữ tiếng Việt trong dự án, chúng ta tạo hai thư mục locale và i18n rồi tạo một symlink tới Oscar

mkdir locale i18n
ln -sfvn ~/python-env/myshop/lib/python3.6/site-packages/oscar i18n/oscar

Sau đó sử dụng lệnh makemessages để tạo hoặc cập nhật các tệp django.po

python manage.py makemessages --locale=vi --symlinks

Lệnh makemessages thu lượm các thông điệp cần dịch vào các tệp django.po trong dự án. Nó tạo tệp locale/vi/LC_MESSAGES/django.po và cập nhật tệp ~/python-env/myshop/lib/python3.6/site-packages/oscar/locale/vi/LC_MESSAGES/django.po.
Trong các tệp django.po, các cặp thông điệp được tạo ra có dạng ví dụ như sau:

#: templates/checkout/payment_details.html:10
msgid "Pay with PayPal"
msgstr ""

Dòng thứ nhất là chú thích, chỉ ra vị trí của thông điệp được lấy ra. msgid đi với thông điệp cần dịch và msgstr mặc định được gán với một xâu rỗng để bạn định nghĩa văn bản dịch vào đó.
Tệp django.po của Oscar cũng cần được cập nhật thủ công, ví dụ

msgid "Apple"
msgstr "Táo"

Sau khi đã hoàn tất các tệp .po, bạn chạy lệnh dưới đây để tạo các tệp .mo tại thư mục của chúng:

msgfmt -o django.mo django.po

Bây giờ cửa hàng của chúng ta đã có tiếng Việt đầy đủ

Người nước ngoài thì chọn ngôn ngữ của họ, chỉ một nhấp chuột

Bình luận về bài viết này