Sejauh ini saya sudah menangani beberapa terjemahan di Wordpress dan mencoba membaca dokumentasi gettext resmi tetapi tidak akan mendapatkan satu hal yang mungkin sederhana: Apa perbedaan antara awal itu seperti __ (, _e (, dll.? Dan bahkan lebih lanjut: yang lainnya ada di samping? Terima kasih sebelumnya!
jujur
localization
Sirkus Sirkuit
sumber
sumber
Jawaban:
__
(garis bawah ganda) adalah fungsi terjemahan dasar. Ini menerjemahkan string dan mengembalikannya sebagai string._e
melakukan hal yang sama__
, tetapi gema hasilnya segera._x
adalah fungsi menerjemahkan kontekstual. Ini memiliki opsi kedua untuk memberikan konteks kepada orang yang melakukan terjemahan._ex
sama dengan_x
, tetapi gema hasilnya.Contoh menggunakan
_x
:Terkadang string yang sama dapat berbeda dalam bahasa lain. Memberikan konteks kepada penerjemah dapat membantu mereka memilih kata yang tepat.
Fungsi pintasan:
esc_attr__
: Setara dengan__
tetapi juga menjalankan hasilnyaesc_attr
.esc_html__
: Setara dengan__
tetapi juga menjalankan hasilnyaesc_html
.esc_attr_e
: Setara dengan_e
tetapi juga menjalankan hasilnyaesc_attr
.esc_html_e
: Setara dengan_e
tetapi juga menjalankan hasilnyaesc_html
.esc_attr_x
: Setara dengan_x
tetapi juga menjalankan hasilnyaesc_attr
.esc_html_x
: Setara dengan_x
tetapi juga menjalankan hasilnyaesc_html
._n
adalah penangan pluralisasi. Contoh:Dalam contoh itu, ada dua cara untuk mengatakan jumlah taco, tergantung pada apakah itu tunggal atau tidak. Penggunaan pertama dari $ number memberitahu
_n
fungsi versi mana yang digunakan. Penggunaan $ number yang kedua terjadi di sprintf, untuk mengganti% d dengan angka aktual dalam string.Tidak ada fungsi gema yang setara untuk
_n
, tetapi ada fungsi bernama_nx
. Ini kombinasi dari_n
dan_x
. Pluralisasi dan konteks._n_noop
adalah yang spesial. Ini digunakan untuk menerjemahkan string jamak, tetapi tidak benar-benar melakukan terjemahan segera. Ini berguna jika Anda ingin membuat string terpusat tetapi benar-benar melakukan pekerjaan di tempat lain. Fungsi yang sebenarnya melakukan pekerjaan di tempat lain adalahtranslate_nooped_plural
.Contoh:
Ini tidak banyak digunakan, tetapi bisa berguna untuk organisasi. Jika Anda meletakkan semua string Anda dalam satu file, misalnya, lalu referensi mereka di tempat lain, ini tidak akan mungkin dengan hanya
_n
, Anda perlu sesuatu seperti_n_noop
melakukan itu._nx_noop
sama dengan_n_noop
, tetapi juga dapat mengambil konteks untuk para penerjemah, sama seperti_x
.Perhatikan bahwa Anda dapat memasukkan domain ke panggilan fungsi noop, atau ke panggilan fungsi translate_nooped_plural. Mana yang lebih masuk akal untuk organisasi Anda. Jika keduanya memiliki domain, maka yang diteruskan ke panggilan telepon menang.
number_format_i18n
adalah setara dengan number_format bawaan PHP , tetapi menambahkan penanganan untuk hal-hal seperti desimal dan sebagainya, yang berbeda di lokal lain.date_i18n
adalah setara dengan PHP built-in tanggal , dengan semua terkait penanganan sana juga. Nama bulan, nama hari, dll.Juga, jangan pernah melanggar hukum . Hanya pengingat. :)
sumber
__ (), _e () dan _x (), _ex ()
__()
dan_e()
pada dasarnya keduanya pembungkustranslate()
(jangan gunakan langsung) dan hampir sama.Perbedaannya terletak pada yang
__()
mengembalikan string yang diterjemahkan dan_e()
menggemakannya. Keduanya perlu diberi string sebagai parameter yang diperlukan dan biasanya, meskipun opsional, juga merupakan textdomain.Secara analog, ada
_x()
dan_ex()
, yang memungkinkan Anda menentukan konteks yang dapat menggambarkan di mana string muncul. Jika proyek Anda menyertakan lebih dari beberapa puluh string yang dapat diterjemahkan, menggunakan konteks sangat masuk akal.Juga, perhatikan keberadaan
_n()
dan_nx()
untuk bentuk jamak.Contoh penggunaan umum
Parameter
Semua parameter
$number
adalah string. Semua kecuali$domain
diwajibkan.Fleksibilitas lebih lanjut dengan variabel dan sprintf ()
Jika string Anda akan berisi angka atau kata-kata variabel, gunakan
sprintf()
:Sumber daya tambahan
Beberapa sumber daya tambahan untuk WordPress I18n Ninja yang akan datang:
sumber
Saya bukan ahli terjemahan, tetapi Halaman Codex WordPress memiliki dokumentasi yang baik dan menjelaskan alasan untuk menggunakan setiap contoh.
Dari halaman codex:
__()
Digunakan ketika pesan dilewatkan sebagai argumen ke fungsi lain;
_e()
digunakan untuk menulis pesan langsung ke halaman. Lebih detail tentang dua fungsi ini:__('message')
Mencari modul lokalisasi untuk terjemahan 'pesan', dan meneruskan terjemahan ke pernyataan pengembalian PHP. Jika tidak ada terjemahan yang ditemukan untuk 'pesan', itu hanya mengembalikan 'pesan'.
_e('message')
Mencari modul lokalisasi untuk terjemahan 'pesan', dan meneruskan terjemahan ke pernyataan gema PHP. Jika tidak ada terjemahan yang ditemukan untuk 'pesan', itu hanya menggemakan 'pesan'.
Perhatikan bahwa jika Anda menginternasionalisasi Tema atau Plugin, Anda harus menggunakan a
"Text Domain"
.Kerangka gettext menangani sebagian besar WordPress. Namun, ada beberapa tempat di distribusi WordPress di mana gettext tidak dapat digunakan:
Tautan ke Halaman Codex
Info tambahan tentang kapan gettext tidak berfungsi
Semoga itu menjawab pertanyaan Anda, jika tidak beri tahu kami dan mungkin orang lain dapat membantu atau saya dapat melakukan riset lebih lanjut.
sumber