Rumah > Tutorial CMS > WordTekan > WordPress i18n: Buat terjemahan plugin anda siap

WordPress i18n: Buat terjemahan plugin anda siap

Jennifer Aniston
Lepaskan: 2025-02-19 12:37:11
asal
306 orang telah melayarinya

WordPress i18n: Buat terjemahan plugin anda siap

Dalam jawatan terdahulu, saya meliputi asas -asas pengantarabangsaan WordPress (disingkat sebagai I18N); Cara Memasang Versi Lokal WordPress dan bagaimana laman WordPress yang sedia ada dapat dengan mudah ditukar kepada versi setempat.

Dalam artikel ini, saya akan membimbing anda melalui proses mengantarabsankan plugin WordPress. Proses ini tidak sukar dan apabila pengetahuan diperoleh, anda boleh mempunyai plugin WordPress anda dengan mudah diterjemahkan ke bahasa lain.

Takeaways Key

    Pengantarabangsaan (I18N) adalah proses membangunkan plugin untuk diterjemahkan dengan mudah ke dalam bahasa lain, manakala penyetempatan (L10N) adalah proses berikutnya untuk menterjemahkan plugin antarabangsa ke bahasa baru.
  • Membuat Plugin WordPress Plugin-Ready adalah penting untuk mencapai khalayak global, meningkatkan pengalaman pengguna, dan meningkatkan pangkalan pengguna dengan menjadikannya dapat diakses oleh pengguna yang berbahasa yang berbeza.
  • Proses membuat plugin siap untuk terjemahan melibatkan penetapan tajuk terjemahan (domain teks dan laluan domain), memuatkan domain teks, dan mengantarabsanisasi pelbagai elemen seperti rentetan, ruang letak, HTML, plural, konteks, dan rentetan terjemahan yang melarikan diri.
  • WordPress I18N menggunakan Rangka Kerja Lokalisasi GNU Gettext, yang menyediakan alat untuk menterjemahkan teks. Ini melibatkan membungkus semua rentetan teks dalam fungsi __ () atau _e () dan membuat fail .pot (template objek mudah alih) yang mengandungi semua rentetan yang boleh diterjemahkan dari plugin.
  • perbezaan antara pengantarabangsaan dan penyetempatan

Selama bertahun -tahun, pemaju cenderung menyalahgunakan makna istilah ini - pengantarabangsaan dan penyetempatan.

Pengantarabangsaan adalah proses membangunkan plugin anda supaya dapat diterjemahkan ke dalam bahasa lain dengan mudah. ​​
  • Penyetempatan menerangkan proses seterusnya menterjemahkan plugin antarabangsa ke bahasa baru.
  • patut diperhatikan bahawa pengantarabangsaan sering disingkat sebagai i18n (kerana terdapat 18 huruf antara 'i' dan 'n') dan penyetempatan disingkat sebagai l10n (kerana terdapat 10 huruf antara 'l' dan 'n'.)

mengapa mengantarabangsakan?

Jawapannya mudah; WordPress digunakan di seluruh dunia dalam banyak bahasa yang berbeza. Apabila plugin diasingkan, mereka menarik penonton yang lebih besar dari bahagian lain di dunia yang jelas akan mendapat manfaat dengan menggunakan plugin dalam bahasa mereka sendiri.

Sebagai pemaju, anda mungkin tidak mempunyai masa untuk menyediakan versi tempatan plugin anda kerana anda tidak bercakap bahasa lain. Walau bagaimanapun, apabila anda mengantarabsikasikan plugin anda, anda meninggalkan pintu terbuka untuk orang lain untuk membuat lokalisasi tanpa perlu mengubah kod sumber.

Pengantarabangsaan plugin

Sekarang kita sudah biasa dengan konsep pengantarabangsaan dan penyetempatan plugin, mari kita menyelam ke dalam proses membuat plugin siap untuk terjemahan.

Tetapkan tajuk terjemahan

Langkah pertama untuk membuat plugin diterjemahkan adalah memasukkan tajuk terjemahan di kalangan tajuk plugin.

tajuk terjemahan adalah domain teks dan laluan domain.

Domain teks digunakan untuk menandakan semua teks milik plugin. Ia adalah pengenal unik yang memastikan WordPress dapat membezakan antara semua terjemahan yang dimuatkan. Ini meningkatkan kebolehgunaan dan bermain lebih baik dengan alat WordPress yang sudah ada.

Domain teks mesti sepadan dengan slug plugin. Sebagai contoh, jika plugin anda adalah satu fail yang dipanggil Sample-Plugin.php atau ia terkandung dalam folder yang dipanggil Sample-Plugin Domain harus menjadi sampel-plugin.

nota pada domain teks

Nama domain teks mesti menggunakan sengkang dan tidak menggariskan.

ingat saya katakan domain teks mesti sepadan dengan slug plugin? Itu mungkin tidak benar selepas semua. Saya menjalankan percubaan cepat dengan salah satu plugin saya, bukannya slug plugin, saya menggunakan teks yang unik dan ia berfungsi tanpa sebarang masalah.

Moral: Pastikan domain teks adalah unik sehingga ia tidak bertembung dengan plugin lain.

Laluan domain adalah folder WordPress akan mencari fail terjemahan.

Secara lalai, WordPress mencari direktori plugin untuk fail terjemahan untuk digunakan. Mempunyai fail terjemahan di folder root plugin anda boleh tidak teratur struktur plugin anda.

Jika anda ingin menyimpan fail terjemahan dalam folder, sebagai contoh; /Bahasa, anda perlu memaklumkan WordPress tentangnya menggunakan tajuk Laluan Domain.

di bawah adalah tajuk biasa plugin WordPress termasuk terjemahan.

<span><span><?php
</span></span><span><span>/*
</span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget
</span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/
</span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget
</span></span><span><span> Author: Agbonghama Collins
</span></span><span><span> Version: 1.2
</span></span><span><span> Author URI: http://w3guy.com
</span></span><span><span> Text Domain: espw-plugin
</span></span><span><span> Domain Path: /languages/
</span></span><span><span> */</span></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Muatkan domain teks

Sekarang, kami akan menggunakan fungsi LOAD_PLUGIN_TEXTDOMAIN () untuk memberitahu WordPress untuk memuatkan fail terjemahan jika ia wujud untuk bahasa pengguna.

di bawah adalah sinopsis fungsi.

<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Parameter pertama $ domain harus menjadi domain teks; $ ABS_REL_PATH telah ditetapkan dan harus ditetapkan kepada palsu; Akhirnya, $ plugin_rel_path adalah laluan relatif untuk fail terjemahan.

Jika fail mo terjemahan berada dalam direktori plugin sendiri, gunakan seperti berikut:

<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jika fail MO terjemahan dalam subdirektori bahasa plugin. Gunakan seperti berikut:

<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );</span>
Salin selepas log masuk
Salin selepas log masuk

Anda tidak hanya memanggil fungsi load_plugin_textdomain, ia harus dipanggil dalam plugin anda seawal tindakan plugins_loaded seperti ini:

<span>function load_plugin_textdomain() {
</span>  <span>load_plugin_textdomain( 'espw-plugin', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' );
</span><span>}
</span>
<span>add_action( 'plugins_loaded', 'load_plugin_textdomain' );</span>
Salin selepas log masuk
Salin selepas log masuk

menyelam dalam ke plugin i18n

Sekarang bahawa domain teks dan header laluan domain ditetapkan, sudah tiba masanya untuk mempelajari cara mengantarabangsakan plugin.

Segmen tutorial ini akan dibahagikan kepada yang berikut:

  1. terjemahan string
  2. menggunakan ruang letak
  3. terjemahan html
  4. berurusan dengan plural
  5. disambiguasi oleh konteks
  6. Escaping Strings Translation

Sila ambil perhatian: rentetan ESPW-PLUGIN akan digunakan sebagai domain teks dalam tutorial ini.

1. String Translation

Untuk membuat rentetan diterjemahkan dalam plugin anda, bungkus rentetan asal dalam panggilan fungsi __ () seperti berikut:

<span><span><?php
</span></span><span><span>/*
</span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget
</span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/
</span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget
</span></span><span><span> Author: Agbonghama Collins
</span></span><span><span> Version: 1.2
</span></span><span><span> Author URI: http://w3guy.com
</span></span><span><span> Text Domain: espw-plugin
</span></span><span><span> Domain Path: /languages/
</span></span><span><span> */</span></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jika anda ingin echo rentetan ke penyemak imbas, bukannya bahasa echo membina, gunakan fungsi _e:

<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

2. Menggunakan tempat letak

Sebagai pemaju PHP dan WordPress, saya mengandaikan anda tahu apa yang menjadi tempat letak. Anda boleh dengan cepat melalui dokumentasi PHP Sprintf dan Printf () untuk maklumat lanjut.

Jika anda menggunakan pembolehubah dalam rentetan seperti contoh di bawah, anda harus menggunakan ruang letak.

<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

cara yang betul adalah menggunakan fungsi printf () seperti berikut:

<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );</span>
Salin selepas log masuk
Salin selepas log masuk

melalui kod beberapa plugin yang dihoskan di repositori plugin WordPress, saya melihat perkara seperti ini:

<span>function load_plugin_textdomain() {
</span>  <span>load_plugin_textdomain( 'espw-plugin', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' );
</span><span>}
</span>
<span>add_action( 'plugins_loaded', 'load_plugin_textdomain' );</span>
Salin selepas log masuk
Salin selepas log masuk
<span>$text =  __( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>
Salin selepas log masuk

Walaupun rentetan kini diterjemahkan, pembolehubah PHP $ bandar juga menjadi diterjemahkan.

Ini adalah amalan yang buruk kerana penterjemah boleh tersilap mengubah pembolehubah atau menyuntik kod jahat ke dalam pangkalan kod plugin, dan ini akhirnya akan membuat kerosakan plugin.

Fungsi Sprintf adalah serupa dengan printf kerana mereka memformat rentetan menggunakan ruang letak manakala printf mengeluarkan rentetan yang diformat, sprintf mengembalikan rentetan.

Contoh: Kod berikut menetapkan rentetan diformat ke teks $ Variable.

<span>_e( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>
Salin selepas log masuk

3. HTML Translation

termasuk HTML dalam rentetan yang diterjemahkan bergantung pada konteks.

Contohnya adalah pautan (dipisahkan dari teks di sekelilingnya):

<span>echo 'Your city is $city.'</span>
Salin selepas log masuk
Contoh lain ialah pautan dalam perenggan (tidak dipisahkan dari teks di sekelilingnya):
<span>printf(
</span>    <span>__( 'Your city is %s.', 'espw-plugin' ),
</span>    <span>$city
</span><span>);</span>
Salin selepas log masuk

4. Berurusan dengan Plurals

rentetan yang berubah apabila bilangan perubahan item dapat diinternalan menggunakan fungsi _n ().

Fungsi ini menerima 4 argumen, iaitu:

  • tunggal - bentuk tunggal rentetan
  • jamak - bentuk jamak rentetan
  • kiraan - bilangan objek, yang akan menentukan sama ada bentuk tunggal atau jamak harus dikembalikan
  • domain teks - domain teks plugin

mari kita lihat beberapa contoh untuk memahami bagaimana fungsi _n () berfungsi.

Dalam bahasa Inggeris anda mempunyai "satu komen" dan "dua komen". Dalam bahasa lain, anda boleh mempunyai pelbagai bentuk jamak.

Kod di bawah menunjukkan cara mengendalikan senario tersebut menggunakan fungsi _n ().

<span>echo __('Your city is $city', 'espw-plugin');</span>
Salin selepas log masuk

Penjelasan kod Kod di atas terdiri daripada ketiga -tiga fungsi ini - printf, _n dan number_format_i18n.

Untuk asimilasi mudah, kod fungsi akan dibedah dengan setiap komponen fungsi dijelaskan.

<span><span><?php
</span></span><span><span>/*
</span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget
</span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/
</span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget
</span></span><span><span> Author: Agbonghama Collins
</span></span><span><span> Version: 1.2
</span></span><span><span> Author URI: http://w3guy.com
</span></span><span><span> Text Domain: espw-plugin
</span></span><span><span> Domain Path: /languages/
</span></span><span><span> */</span></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

hujah pertama yang diserahkan kepada fungsi _n adalah teks yang akan dipaparkan apabila bilangan komen adalah tunggal.

yang kedua ialah teks yang dipaparkan apabila bilangan komen lebih besar daripada satu.

Placeholder %s akan mengandungi nilai number_format_i18n (get_comments_number ()) yang akan dijelaskan tidak lama lagi.

argumen ketiga get_comments_number () dianggap sebagai fungsi yang mengembalikan kiraan komen.

Jika ia kembali 1, hujah pertama satu komen mendapat output oleh printf jika tidak, hujah kedua %s komen dikembalikan jika lebih besar daripada 1.

Sila ambil perhatian: Pemegang tempat %s digantikan oleh integer yang dikembalikan oleh number_format_i18n (get_comments_number ()) yang merupakan hujah kedua yang diserahkan kepada fungsi printf.

Akhirnya, hujah keempat adalah terjemahan domain teks .

Fungsi Number_Format_I18n () menukarkan kiraan komen ke format berdasarkan locale. Lihat dokumentasi untuk maklumat lanjut.

Sama dengan nombor_format_i18n () adalah date_i18n yang mengambil tarikh dalam format setempat, berdasarkan timestamp.

masih dalam fungsi _n (), di bawah adalah satu lagi demonstrasi bagaimana fungsi berfungsi.

<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jika pembolehubah $ kiraan kembali 1, teks yang kami hapus satu mesej spam akan dipaparkan; Tetapi jika ia lebih besar daripada 1, kami memadamkan mesej spam %d %akan dipaparkan dengan tempat letak %d digantikan oleh nilai integer $ Count.

5. Disambiguasi oleh konteks

kadang -kadang satu istilah digunakan dalam beberapa konteks, walaupun ia adalah satu dan perkataan yang sama dalam bahasa Inggeris ia harus diterjemahkan secara berbeza dalam bahasa lain.

Contohnya, siaran perkataan boleh digunakan sebagai kata kerja seperti dalam "Klik di sini untuk menyiarkan komen anda" dan sebagai kata nama "edit siaran ini".

dalam kes sedemikian fungsi _x atau _ex harus digunakan.

ia sama dengan __ () dan _e (), tetapi ia mempunyai hujah tambahan - $ konteks.

<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Menggunakan kaedah ini dalam kedua -dua kes kita akan mendapat komen rentetan untuk versi asal, tetapi penterjemah akan melihat dua rentetan komen untuk terjemahan, masing -masing dalam konteks yang berbeza.

Apabila rentetan yang dibuat diterjemahkan oleh fungsi _x () dihuraikan oleh alat terjemahan seperti poedit, argumen konteks memberikan petunjuk kepada penterjemah pada konteks rentetan/teks digunakan.

Dalam bahasa Jerman, jawatan sebagai kata nama adalah beitrag sementara sebagai kata kerja adalah verbuchen.

di bawah adalah tangkapan skrin poedit yang menerjemahkan pos rentetan ke Jerman dengan konteks kuasa dua.

WordPress i18n: Buat terjemahan plugin anda siap

manakala _x () mengambil rentetan terjemahan, _ex () memaparkannya.

6. Melepaskan String Translation

WordPress mempunyai beberapa fungsi untuk mengesahkan dan membersihkan data.

antara senarai adalah fungsi untuk melarikan diri teks terjemahan - ESC_HTML (), ESC_HTML_E (), ESC_HTML_X (), ESC_ATTR (), ESC_ATTR_E () dan ESC_ATTR_X (). Anda boleh mendapatkan lebih banyak maklumat mengenai setiap fungsi ini di WordPress Codex.

Saya tidak perlu menjelaskan setiap perkara ini, tetapi apa yang mereka lakukan pada dasarnya melarikan diri teks yang boleh diterjemahkan.

Bungkus

Salah satu matlamat WordPress adalah untuk memudahkan pengguna di seluruh dunia untuk menerbitkan kandungan. Sebagai pemaju plugin, anda boleh membantu untuk memudahkan proses penerbitan untuk pengguna apabila anda mengantarabsikasikan plugin anda.

bahagian pertama tutorial ini pada dasarnya adalah mengenai semua yang anda perlu ketahui mengenai plugin i18n.

Bahagian akhir akan menjadi berjalan kaki pada cara membuat terjemahan plugin siap serta belajar bagaimana untuk melokalkan plugin ke bahasa baru.

Saya harap anda telah mempelajari sesuatu yang baru dari tutorial ini.

Happy Coding!

Soalan Lazim (Soalan Lazim) Mengenai WordPress I18n dan Plugin Translation

Apakah kepentingan membuat terjemahan plugin WordPress-siap? Tidak semua pengguna WordPress adalah penceramah bahasa Inggeris. Dengan mengantarabangsakan plugin anda, anda menjadikannya mudah diakses oleh pengguna yang bercakap bahasa yang berbeza, dengan itu meningkatkan pangkalan pengguna anda. Ia juga meningkatkan pengalaman pengguna kerana pengguna boleh berinteraksi dengan plugin anda dalam bahasa ibunda mereka, menjadikannya lebih mesra pengguna. menjadikan rentetan teks plugin anda diterjemahkan ke dalam bahasa lain. Ini dicapai dengan membungkus rentetan teks ini dalam fungsi khas yang membolehkan mereka diterjemahkan. WordPress menggunakan rangka kerja lokalisasi GNU Gettext untuk tujuan ini, yang menyediakan satu set alat untuk menterjemahkan teks. Plugin Translation-Ready melibatkan beberapa langkah. Mula -mula, anda perlu mengantarabangsakan plugin anda dengan membungkus semua rentetan teks dalam fungsi __ () atau _e (). Seterusnya, anda perlu membuat fail .pot (templat objek mudah alih) yang mengandungi semua rentetan yang diterjemahkan dari plugin anda. Fail ini digunakan sebagai templat untuk membuat fail .po (objek mudah alih) dan .mo (objek mesin), yang mengandungi rentetan yang diterjemahkan. WordPress i18n?

Fungsi __ () dan _e () kedua -duanya digunakan dalam WordPress i18n untuk membuat rentetan teks diterjemahkan. Perbezaan utama di antara mereka ialah __ () mengembalikan rentetan yang diterjemahkan, manakala _e () bergema atau mengeluarkan rentetan yang diterjemahkan secara langsung. Oleh itu, anda akan menggunakan __ () apabila anda ingin menyimpan rentetan yang diterjemahkan dalam pembolehubah, dan _e () apabila anda ingin memaparkan rentetan yang diterjemahkan kepada pengguna.

Bagaimana saya boleh menterjemahkan plugin WordPress saya ke dalam bahasa yang berbeza?

Untuk menterjemahkan plugin WordPress anda ke dalam bahasa yang berbeza, anda perlu membuat fail .po dan .mo untuk setiap bahasa. Fail-fail ini mengandungi rentetan yang diterjemahkan dan dinamakan mengikut kod bahasa ISO-639 (mis., En_us untuk Bahasa Inggeris, FR_FR untuk Perancis). Anda boleh menggunakan alat seperti PoEdit atau Loco Terjemahan untuk membuat dan mengurus fail terjemahan ini. PoEdit dan Loco Translate adalah alat popular untuk membuat dan menguruskan fail terjemahan. GlotPress, alat terjemahan berasaskan web, juga digunakan oleh komuniti WordPress untuk menterjemahkan teras WordPress, plugin, dan tema. Boleh menguji plugin WordPress anda untuk kesediaan terjemahan dengan menukar bahasa dalam tetapan WordPress anda dan menyemak jika rentetan teks plugin diterjemahkan dengan betul. Anda juga boleh menggunakan alat seperti plugin WordPress I18n Checker, yang memeriksa plugin anda untuk kesilapan biasa i18n.

Bagaimana saya boleh menyumbang kepada terjemahan plugin WordPress? Melalui pasukan WordPress Polyglots. Mereka bertanggungjawab untuk melokalisasi WordPress ke dalam bahasa yang berbeza. Anda boleh menyertai pasukan dan mula menterjemahkan plugin dan tema ke dalam bahasa ibunda anda.

Apakah peranan .pot, .po, dan .mo fail dalam WordPress i18n? .po, dan .mo fail memainkan peranan penting dalam WordPress I18n. Fail .pot adalah templat yang mengandungi semua rentetan yang diterjemahkan dari plugin anda. Fail .po adalah fail yang boleh dibaca manusia yang mengandungi rentetan yang diterjemahkan, dan fail .mo adalah fail yang boleh dibaca mesin yang digunakan oleh WordPress untuk memaparkan rentetan yang diterjemahkan. Tema Terjemahan-siap?

Membuat Tema Tema WordPress-siap melibatkan proses yang sama dengan plugin. Anda perlu mengantarabangsakan tema anda dengan membungkus semua rentetan teks dalam fungsi __ () atau _e (). Kemudian, anda perlu membuat fail .pot dan gunakannya sebagai templat untuk membuat fail .po dan .mo untuk setiap bahasa.

Atas ialah kandungan terperinci WordPress i18n: Buat terjemahan plugin anda siap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan