Ada argumen kedua dalam __()
fungsi ini. Ini harus diatur ke domain yang Anda gunakan untuk plugin atau tema Anda. Dalam contoh di bawah ini saya gunakan 'text_domain'
. String domain Anda harus unik. Seharusnya tidak cocok dengan string domain lainnya. Tidak menggunakan argumen domain teks default ke 'default'
nama domain WordPress. Lihat tautan untuk detail lebih lanjut.
Selalu gunakan string ( 'text_domain'
). Jangan pernah menggunakan variabel, fungsi atau konstanta dengan string di dalamnya. Sebagian besar (semua?) Program terjemahan tidak akan melihatnya tanpa string di sana.
Kode Anda:
echo __( 'Hello ' . $first . ' you own me money.' );
Jangan sertakan variabel dalam string.
Cara yang lebih baik:
echo sprintf( __( 'Hello %s you own me money.', 'text_domain' ), $first );
Atau hanya:
printf( __( 'Hello %s you own me money.', 'text_domain' ), $first );
The %s
placeholder menceritakan penerjemah manusia yang string akan di sana. Gunakan %d
untuk angka. Ada juga placeholder lainnya .
(Kalimat ini secara tata bahasa Inggris salah. Gunakan salah satu 'Hello %s, you owe me money.'
atau 'Hello %s, you own my money.'
tergantung pada maksud Anda.)
Kode Anda:
$html = '<div><p>Top: ' . $t_margin . '</p>' . <p>Bottom: ' . $b_margin . '</p></div>';
Jangan terjemahkan HTML. Itu sama dalam bahasa apa pun.
Cara yang lebih baik:
$html = sprintf( '<div><p>%s</p><p>%s</p></div>', __( 'Top: ', 'text_domain' ) . $t_margin, __( 'Bottom: ', 'text_domain' ) . $b_margin );
Atau pisahkan menjadi beberapa baris:
$html = sprintf(
'<div><p>%s</p><p>%s</p></div>',
__( 'Top: ', 'text_domain' ) . $t_margin,
__( 'Bottom: ', 'text_domain' ) . $b_margin
);
Jika tidak jelas apa Atas dan Bawah Anda dapat menggunakan _x()
untuk menjelaskan konteks istilah-istilah ini.
Anda dapat menemukan kasus terjemahan lain di sini: Internasionalisasi: Anda mungkin salah melakukannya
textdomain
harus berupa string literal, tidak boleh berupa variabel / konstan / properti.sprintf()
. Itu benar-benar cara untuk memiliki HTML dalam string yang dapat diterjemahkan.sprintf()
bantuan dengan cara apa pun selain mungkin terlihat lebih bersih. Jika Anda memiliki kalimat dengan HTML di dalamnya sepertiSome text with a <strong>strong</strong> word inside.
bagaimana mungkin menerjemahkan kalimat secara keseluruhan dan tidak menerjemahkanSome text with a
,strong
dan secaraword inside
individual (yang tidak masuk akal).Saya tidak akan membahas masalah variabel dalam string karena sudah dikatakan.
Anda ingin menjaga string Anda tetap statis, artinya konten tidak akan berubah. Anda juga ingin menghindari HTML yang tidak perlu.
Di atas akan mengambil dua baris di tabel Anda untuk apa yang pada dasarnya adalah teks yang sama. Mereka dapat ditulis ulang sebagai:
Mengurangi menjadi satu baris.
Terkadang HTML dalam teks tidak dapat dihindari. Ambil contoh:
Karena bahasa adalah tata bahasa, pemisahan teks akan menyebabkan masalah bagi siapa pun yang menerjemahkan.
Aturan praktis. Tag format teks HTML di tengah kalimat tidak masalah. Kalimat yang dimulai dan diakhiri dengan HTML hanya membuang-buang ruang.
sumber
"<b>$string</b>"
. Maka Anda bisa menggunakannya'You currently owe %s dollars'
. Tetapi mungkin perlu tetap jika Anda menggunakannya dengan_n()
fungsi yang membutuhkan%d
pengganti.%s
agar lebih jelas.