[ZF2] Đa ngôn ngữ trong module – Phần 4

Nếu bạn đang làm cho một dự án cho nhiều người sử dụng từ nhiều quốc gia khác nhau và sử dụng nhiều ngôn ngữ, thì công việc xây dựng một dự án hỗ trợ đa ngôn ngữ là một phần thiết yếu không thể bỏ qua. Một module trong Zend Framework 2 khi được hiển thị ra trình duyệt thông qua các view của các controller – action, nó cũng chứa những từ khóa ngôn ngữ cần phải dịch hoặc chuyển đổi để thân thiện và thuận tiện hơn cho người sử dụng. Bộ thư viện Zend Framework cung cấp namespace Zend\I18n chứa những lớp chức năng giúp hỗ trợ dịch/chuyển đổi cho tất cả các loại ngôn ngữ trên thế giới đang hiện hành. Chúng ta sẽ đặt các tập tin ngôn ngữ gốc *.po trong thư mục module/Application/language và bạn cần sử dụng phần mềm Poedit để có thể dịch/ chuyển đổi toàn bộ các từ khóa ngôn ngữ gốc một cách dễ dàng – thuận tiện.

Sử dụng Poedit với Zend Framework 2

Trước tiên, bạn phải khai báo cấu hình sau trong một trong những tập tin module.config.php của một module bất kỳ. Ở đây, chúng ta đang sử dụng module Application mặc định và nó đã được khai báo trong tập tin module\Application\config\module.config.php và chúng ta có thể sử dụng nó cho các module khác.

Để module Album có thể hiển thị ngôn ngữ Tiếng Việt thông qua bộ dịch, chúng ta phải đặt ‘locale’ => ‘vi_VN’ để xác định tập tin ngôn ngữ được sử dụng. Những tập tin ngôn ngữ gốc (*.po) được đặt trong thư mục module\Application\language với rất nhiều ngôn ngữ như en_US(Tiếng Anh), fr_FR(Tiếng Pháp)… Bạn hãy tạo một bản sao chép của tập tin en_US.po và lưu với tên vi_VN.po ở cùng thư mục.

language

Bước tiếp theo, chúng ta sẽ mở tập tin vi_VN.po với phầm mềm Poedit để tạo ra tập tin ngôn ngữ vi_VN.mo đã được biên dịch. Bạn hãy tiến hành dịch các cụm từ khóa tiếng anh bên cột Sources Text thành các cụm từ tiếng việt bên cột Tranlation. Sau khi dịch xong bạn tiến hành biên dịch tập tin vi_VN.mo bằng cách Save lại những thay đổi. Những từ khóa đã được dịch sẽ được hiển thị xuống dưới và những từ chưa được dịch sẽ được đẩy lên trên.

vi_VN

Lưu ý: Bạn phải khai báo extension *.phtml cho parsers PHP của Poedit để có thể quét các cụm từ khóa ngôn ngữ có trong các tập tin hiện thị view script như index.phtml, add.phtml,edit.phtml, deleted.phtml.Bạn vào File > Preferences… > Tab Parsers để có thể quản lý các parsers.

parser-setup

Thêm cụm từ khóa ngôn ngữ mới trong module

Ngoài những cụm từ khóa ngôn ngữ gốc đã được tạo sẵn trong tập tin ngôn ngữ vi_VN.po, bạn có thể cập nhập thêm những cụm từ mới bằng chức năng Update mà Poedit cung cấp.

Do tập tin vi_VN.po của chúng ta được đặt trong thư mục module/Application/language, nên nếu chúng ta sử dụng Poedit tiến hành Update các cụm từ khóa ngôn ngữ mới thì sẽ không tìm thấy cụm từ “Hello World”. Để có thể sử dụng cập nhật được tập tin vi_VN.po cho nhiều module  chúng ta sẽ phải thay đổi đường Sources Path trong Poedit.

sources-pathGhi chú:

  • Base path: là thư mục hiện tại của tập tin (*.po), mặc định là “.”
  • Paths: là chứa những tập tin source code sẽ được quét để lấy ra các cum từ khóa ngôn ngữ. Ở đây, tôi gán một đường paths ‘../..’ mục đích giúp Poedit có thể quét toàn bộ thư mục module với các tập tin có đuôi mở rộng là ‘*.phtml’

keyworks

Bạn có thể thêm các keyword để giúp Poedit xác định các chuỗi cần biên dịch, trong zend framework 2 sử dụng keywork translate đây là một view helper hỗ trợ xử lý đa ngôn ngữ trong các tập tin view script (*.phtml).

update

Sau khi bạn đã hoàn thành quá trình dịch ngôn ngữ thì hãy Save lại để lưu những thiết lập mới, để có thể sử dụng vào những lần biên dịch tiếp theo.

Hoàn thành quá trình

Bạn sẽ xóa bỏ những thông tin mặc định dưới footer của bộ khung ZendSkeletonApplication cung cấp.

Và kết quả sẽ hiển thị trên trình duyệt như sau:

user-guide.styling-and-translations.translated-image