WPML

Tìm hiểu cách sử dụng các hàm gettext để làm cho các văn bản trong giao diện và plugin có thể dịch được trong WPML.

Để đảm bảo các văn bản trong giao diện và plugin có thể dịch được và hiển thị chính xác trên trang web của bạn, bạn cần đáp ứng hai điều kiện:

  • Bọc các văn bản trong một hàm gettext
  • Bao gồm một đối số text domain

Cơ bản về gettext

Hãy xem xét chuỗi văn bản sau, “Thank you!”, thuộc về domain “my-plugin-domain”:

__( 'Thank you!', 'my-plugin-domain' );

Để xuất chuỗi văn bản ra trình duyệt, hãy sử dụng hàm _e() :

_e( 'Thank you!', 'my-plugin-domain' );

Khi sử dụng HTML, hãy bọc nó trong các thẻ HTML:

<h2><?php _e( 'Thank you!', 'my-plugin-domain' ); ?></h2>

Nếu bạn có một liên kết tách biệt với văn bản xung quanh, hãy sử dụng hàm esc_html_e():

<a href="http://wpml.org/" ><?php esc_html_e( 'Translated with WPML', 'my-domain' ); ?></a>

Các phương pháp hay nhất về gettext

1. Không bao giờ bọc một biến hoặc hằng số trong hàm gettext

Điều này sẽ làm cho các chuỗi văn bản không thể quét được và do đó không thể dịch được.

Không chính xác

<?php
if ( $morning ) {
   define( 'GREETING', 'Good morning' );
} else {
   define( 'GREETING', 'Good afternoon' );
}
 
_e( GREETING, 'my-domain' );
?>

Chính xác

<?php
if ( $morning ) {
   _e( 'Good morning', 'my-domain' );
} else {
   _e( 'Good afternoon', 'my-domain' );
}
?>

2. Escape dữ liệu đầu ra để bảo mật

Nếu một chuỗi văn bản được hiển thị ngay lập tức ở đầu ra, hãy sử dụng các hàm escape, như esc_html_esc_attr_ để bảo vệ khỏi các cuộc tấn công XSS.

echo '<div>' . esc_html__( 'Back to homepage', 'my-domain' ) . '</div>';

3. Thêm chú thích cho người dịch

Điều này giúp người dịch hiểu được ngữ cảnh mà các văn bản hoặc biến xuất hiện.

/* translators: %1$s is status label (e.g. "active" and  %2$s is quantity of bits/s (e.g. 12 Gbit/s) */

printf(
esc_html__( 'State of your network is %1$s. Maximum download speed is %2$s.', 'my-plugin-domain' ),
$state, $speed
);

Tài nguyên bổ sung

Để tìm hiểu thêm về gettext, hãy xem WordPress codex chính thức.

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