Hướng dẫn i18n wordpress

Đầu tiên cho mình gửi lời cáo lỗi vì sự vắng mặt trong gần 2 tháng qua vì lý do về Việt Nam chơi, tưởng chừng về đó vẫn làm việc được bình thường nhưng do ham vui quá nên xin kiếu, bây giờ mình đã quay lại và tiếp tục cống hiến những kiến thức mình có được cho mọi người.

Như các bạn đã từng mổ xẻ các theme/plugin ra thì chắc hẳn sẽ thấy một số theme/plugin sẽ có khá nhiều file ngôn ngữ dạng .mo khác nhau. Mục đích là để chúng ta tiến hành sử dụng  nó bằng cách chỉnh sửa file wp-config.php như hướng dẫn này.

Hay nói một cách khác hơn, là những theme có nhiều file ngôn ngữ sẽ có thể cho phép người dùng tự dịch lại theo ý của mình thông qua plugin Codingstyling Localization hoặc phần mềm PoEdit, đây cũng là một yêu cầu bắt buộc nếu bạn muốn đưa sản phẩm của mình lên WordPress.org.

Bước 1. Viết code theo chuẩn I18n

I18n là viết tắt của cụm từ Internationalization [nghĩa là cụm từ này có 18 ký tự tính từ chữ I đến chữ n]. Để sản phẩm của bạn có thể được dịch sang nhiều ngôn ngữ khác nhau thì bạn phải viết code trong sản phẩm theo chuẩn riêng của nó.

Chuẩn I18n nghĩa là bạn sẽ đặt một cụm từ cho phép họ dịch trong một hàm e_[] __[]. Ví dụ:

Trong đó:

  • _e[] được dùng nếu bạn cho phép dịch một cụm từ đơn giản bằng text đơn thuần hoặc text bọc trong HTML.
  • __[] được dùng nếu bạn cho phép dịch một cụm từ mà cụm từ đó được xử lý bằng PHP [echo, print, printf,…]
  • thachpham nghĩa là Text Domain, bạn có thể đặt một tên bất kỳ [không dấu] nhưng bạn phải sử dụng một Text Domain duy nhất trong theme hoặc plugin.

Để mình giải thích thêm về cách sử dụng __[] nhé, chẳng hạn như trong PHP bạn sử dụng echo để in text ra như thế này:

Thì bạn sẽ viết lại là:

Còn một trường hợp nữa đó là bạn sử dụng biến trong đoạn echo.

Thì bạn phải dùng hàm printf để viết thành dạng:

Bước 2. Khai báo Text Domain cho theme/plugin

Như bạn thấy ở bước trên chúng ta có khai báo các cụm từ cho phép dịch kèm theo text domain tên thachpham ở tham số phía sau. Vậy làm thế nào để WordPress có thể hiểu được đó là Text Domain mà chúng ta sử dụng? Đơn giản là chúng ta sẽ thêm một hàm load_theme_textdomain[] [dành cho theme] và load_plugin_textdomain[] [dành cho plugin] vào file functions.php của theme hoặc plugin.

Đối với theme:

Lúc này nó sẽ tự tìm file ngôn ngữ có tên trùng với mã ngôn ngữ mà bạn khai báo trong file functions.php để thực thi [xem thêm phần dưới để rõ hơn về cách đặt tên file ngôn ngữ].

Nếu bạn muốn chỉ định một thư mục riêng để chứa file ngôn ngữ và nó chỉ thực thi các file ngôn ngữ nằm trong thư mục đó thì khai báo như sau:

Chủ Đề