Khi bạn làm web đa ngôn ngữ, bạn sẽ cần đến plugin hỗ trợ dịch đa ngôn ngữ, trong số đó dễ dùng nhất có lẽ là Polylang. Tuy nhiên, trong quá trình làm web, chắc chắn bạn sẽ có không ít lần viết thêm text vào bên trong code của theme, kiểu như thêm những đoạn text ghi chú hoặc khối html có text bất kỳ.
Vấn đề đặt ra là khi dùng plugin Polylang hỗ trợ dịch String nó chỉ liệt kê những từ hoặc cụm từ bên trong plugin hoặc theme, chứ không hỗ trợ dịch những đoạn text tùy ý do chúng ta nhập vào. Hôm nay cùng giải quyết vấn đề này nhé!
Bài viết thực hiện trên theme Flatsome, bạn nào sử dụng theme Flatsome có thể làm theo y nguyên:
Chỉ với 2 bước khá đơn giản là chúng ta có thể làm được thôi:
Bước 1: Thêm mã đánh dấu string
Với trường hợp bạn dùng plugin Advance Custom Fields Pro (ACF) thì bạn hãy xem thêm bài viết Polylang with ACF: //polylang.pro/doc/working-with-acf-pro/
Bình thường trong code bạn có thể viết text “Tôi là Giuse”, nhưng nếu bạn muốn dịch cụm từ đó, bạn buộc phải thêm pll_e(‘string’). Đầy đủ sẽ là: <?php pll_e(‘Tôi là Giuse’);?>
Bước 2: Thêm yêu cầu dịch String vào Function.php
Tiếp đến bạn cần thêm “String translation” vào functions.php của bạn. Giao diện – Theme file Editor – Function.php, sau đó paste đoạn code dưới đây vào:
1 2 3 | add_action('init', function() { pll_register_string('flatsome', ''); }); |
Với flatsome là domain name template cần thay đổi nó tùy vào giao diện bạn sử dụng để phù hợp.
***Cách tìm domain template: vào style.css của theme tìm mục Template: flatsome trong đoạn /* */
1 2 3 4 5 6 7 | /* Theme Name: Flatsome Child Description: This is a child theme for Flatsome Theme Author: UX Themes Template: flatsome Version: 3.0 */ |
Bước 3: Lưu lại và filter string
Sau khi thêm code ở template và functions.php bạn cần lưu lại cả hai và tiến hành Filter trong mục Translations của Polylang.
Kết luận
Như vậy chúng ta đã giải quyết được vấn đề dịch ký tự bất kỳ (custom text) và có thể dịch tại admin dashboard.
Ngoài ra, có thể xem thêm tài liệu từ Polylang: //polylang.pro/doc/function-reference/#pll_register_string để có thể xử lý dữ các vấn đề khác.
Chúc bạn xử lý thành công!
Chia sẻ bài viết: