WPML

Tìm hiểu cách đăng ký các văn bản do người dùng nhập vào từ plugin và giao diện để dịch. Sau khi đăng ký, bạn có thể dịch chúng bằng Dịch chuỗi.

Cách đăng ký văn bản do người dùng nhập vào

Khi người dùng tạo các chuỗi mới hoặc cập nhật các chuỗi hiện có, chúng cần được đăng ký trong bảng chuỗi của WPML.

Bạn có thể thực hiện lệnh gọi này bằng action hook wpml_register_single_string:

do_action( 'wpml_register_single_string', string $context, string $name, string $value )
  • $context – Tên của plugin hoặc giao diện, ở định dạng con người có thể đọc được.
  • $name – Tên của chuỗi, giúp người dịch hiểu được nội dung đang được dịch.
  • $value – Chuỗi cần được dịch.

Hãy xem xét ví dụ về widget tùy chỉnh này, bao gồm một tiêu đề, trường input một dòng và một textarea. Để đăng ký các trường này cho việc dịch khi các tùy chọn của widget được lưu hoặc cập nhật, chúng ta sử dụng hàm cập nhật:

Sử dụng action hook wpml_register_single_string
function update($new_instance, $old_instance){
    $instance = $old_instance;
    $instance['title']      = strip_tags($new_instance['title']);
    $instance['custom_input']   = strip_tags($new_instance['custom_input']);
    $instance['custom_textarea']    = $new_instance['custom_textarea'];
 
    //WPML
    /**
     * register strings for translation
     */
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );
    //WPML
 
    return $instance;
}

Trong ví dụ này, chúng ta cho WPML biết rằng nó cần dịch các văn bản do người dùng nhập vào cho trường input textarea. Các văn bản này sẽ được đăng ký trong ngữ cảnh chuỗi Widgets với tên lần lượt là Custom Widgetinput fieldCustom Widget – textarea field.

Sau khi đăng ký văn bản, bạn có thể sử dụng action hook wpml_translate_single_string để hiển thị các bản dịch trên giao diện người dùng.

Cách tích hợp Dịch chuỗi với plugin và giao diện

Khi tích hợp Dịch chuỗi với plugin hoặc giao diện, điều quan trọng là phải đảm bảo các lệnh gọi có tồn tại.

Triển khai các lệnh gọi có điều kiện

Gói các lệnh gọi của bạn trong câu lệnh if_function_exists() để nếu WPML được kích hoạt, nó sẽ được gọi và nếu không, hoạt động bình thường vẫn được giữ nguyên.

Xử lý việc kích hoạt WPML muộn

Là một nhà phát triển giao diện hoặc plugin, bạn cũng nên xem xét trường hợp WPML được kích hoạt rất lâu sau khi người dùng bắt đầu sử dụng giao diện hoặc plugin của bạn.

Trong những trường hợp này, các chuỗi sẽ không được dịch vì lệnh gọi đến wpml_register_single_string không được thực hiện khi chúng được tạo. Để khắc phục điều này, bạn nên đăng ký tất cả các chuỗi của người dùng mỗi khi màn hình quản trị cho plugin được tải.

Mặc dù điều này làm tăng thêm một khoảng thời gian thực thi không đáng kể, nhưng nó đảm bảo các chuỗi luôn được gửi đi dịch và được cập nhật.

Trước tiên, mã phải kiểm tra xem hàm wpml_register_single_string có tồn tại hay không. Nếu có, hàm sẽ được gọi để đăng ký tất cả các văn bản do người dùng nhập vào. Dưới đây là cách hoạt động:

  • Nếu hàm được gọi với giá trị trống hoặc NULL, WPML sẽ bỏ qua các lệnh gọi này.
  • Nếu một chuỗi đã tồn tại và không bị sửa đổi, WPML sẽ bỏ qua lệnh gọi.
  • Hàm chỉ thực hiện hành động nếu các chuỗi mới hoặc đã sửa đổi được đăng ký.

Toàn bộ bảng dịch được lưu trong bộ nhớ cache, do đó việc gọi nó liên tục tiêu tốn rất ít sức mạnh xử lý.

Tài nguyên bổ sung

Để đăng ký các văn bản được mã hóa cứng từ giao diện và plugin để dịch, hãy xem bài viết của chúng tôi về cách tìm các chuỗi không xuất hiện trên trang Dịch chuỗi.

Để đăng ký các tùy chọn giao diện hoặc plugin để dịch, hãy xem hướng dẫn của chúng tôi về cách sử dụng tệp cấu hình ngôn ngữ.

Để dịch các thành phần giao diện hoặc plugin theo nhóm, hãy xem phần Dịch gói chuỗi của chúng tôi.

Được viết bởi Amir · Cập nhật lần cuối vào 7 tháng 6 năm 2024