Cara Menginternasionalkan Situs WordPress Anda

Diterbitkan: 2022-03-10
Ringkasan cepat WordPress saat ini sepenuhnya dilokalkan untuk lebih dari 65 bahasa dan menawarkan terjemahan sebagian untuk 95 lokal tambahan. Jika Anda belum menginternasionalkan situs WordPress Anda, mungkin inilah saatnya untuk melakukannya.

Pada tanggal 30 September 2017, komunitas WordPress internasional bersatu selama 24 jam untuk menerjemahkan ekosistem WordPress. Untuk ketiga kalinya, #WPTranslationDay menggabungkan maraton penerjemahan sepanjang hari dengan acara digital dan hari kontributor yang dirancang untuk mempromosikan nilai menciptakan pengalaman yang dapat diakses bagi pengguna global, yang lebih dikenal sebagai "lokalisasi".

Sebagai komunitas sumber terbuka, kita semua harus berusaha untuk melokalkan kontribusi sumber terbuka kita. Sebelum Anda dapat menyalin aset digital Anda, Anda harus menginternasionalkan basis kode Anda.

Istilah "internasionalisasi" dan "lokalisasi" sering digunakan secara bergantian, meskipun secara teknis keduanya mewakili dua aspek yang berbeda dari proses penerjemahan.

  • Internasionalisasi (I18N) adalah proses menginternasionalkan atau mengadaptasi tema atau plugin Anda untuk menerjemahkannya ke dalam bahasa apa pun di dunia.
  • Lokalisasi (L10N) adalah proses selanjutnya untuk melokalkan, atau menerjemahkan alat internasional Anda ke dalam bahasa tertentu.

WordPress saat ini sepenuhnya dilokalkan untuk lebih dari 65 bahasa dan menawarkan terjemahan sebagian untuk 95 lokal tambahan. Penggunaan internasional terus meningkat karena lebih banyak lokalisasi diperkenalkan.

Statistik dari WordPress.org
Statistik dari WordPress.org (Pratinjau besar)
Lebih banyak setelah melompat! Lanjutkan membaca di bawah ini

Pengguna WordPress yang tidak berbahasa Inggris melampaui pengguna yang berbahasa Inggris pada tahun 2014, dan mereka secara tidak sengaja terus mengurangi persentase kue pengguna bahasa Inggris pada tahun 2017 seiring dengan berkembangnya upaya seperti #WPTranslateDay.

Seiring WordPress menjadi semakin mudah diakses secara bahasa, pengetahuan tentang I18N & L10N sangat penting bagi pengembang plugin dan tema untuk berkembang dalam ekonomi WordPress global. Untuk meningkatkan bisnis, keterampilan pengembangan ini dapat membuka pintu ke pasar luar negeri. Aksesibilitas web, termasuk aksesibilitas bahasa, bagus untuk bisnis, dan lebih baik untuk orang.

Sebagai kelanjutan dari #WPTranslationDay , berikut adalah panduan terbaru untuk menginternasionalkan plugin dan tema WordPress Anda.

Berikut adalah gambaran singkat tentang proses yang akan kita jelajahi hari ini.

  • Penemuan
    • Mengenal File Terjemahan
      • File POT
      • Berkas PO
      • File MO
    • GlotPress & Paket Bahasa
    • Cadangkan & Siapkan Lingkungan Anda
  • Plugin I18N
    • Tajuk Plugin
    • Muat Domain Teks
    • Audit String
    • Hasilkan File POT
  • Tema I18N
    • Judul Tema
    • Muat Domain Teks
    • Audit String
    • Hasilkan File POT
  • JavaScript I18N
  • Sumber daya tambahan

Penemuan

Mengenal File Terjemahan

WordPress menggunakan perpustakaan gettext GNU untuk memfasilitasi I18N.

Pertama, mari kita mengenal file terjemahan gettext yang dihasilkan selama proses berlangsung.

File Template Objek Portabel (POT)

Selama proses I18N, kami akan menggunakan alat untuk menemukan string internasional dan menghasilkan file POT yang berisi semua teks yang dapat diterjemahkan di plugin dan tema Anda.

File Objek Portabel (PO)

Secara tampilan, tidak ada perbedaan mencolok antara file POT dan file PO . Mereka secara sintaksis sama dan hanya dibedakan oleh tujuan yang dimaksudkan.

Setelah membuat file POT, string teks harus ditafsirkan oleh penerjemah ke dalam bahasa pilihan Anda. File PO pada akhirnya akan berisi string teks dalam bahasa asli Anda, serta terjemahan yang sesuai.

File Objek Mesin (MO)

Akhirnya, file PO diubah menjadi dokumen yang dapat dibaca mesin atau file Objek Mesin. File ini akan tinggal di direktori tema atau plugin Anda untuk dipanggil oleh WordPress ketika saatnya untuk menyajikan versi terjemahan.

Cadangkan Dan Siapkan Lingkungan Anda

Sebelum memodifikasi markup apa pun, buat cadangan plugin, tema, atau seluruh situs Anda (apa pun yang Anda internasionalisasikan!) dan atur lingkungan pengembangan Anda.

Pastikan untuk melakukan audit plugin cepat jika Anda berencana untuk melokalkan situs web Anda. Hapus atau nonaktifkan plugin apa pun yang tidak lagi Anda gunakan secara aktif. Audit cepat ini akan menghemat waktu Anda dalam jangka panjang.

Internasionalisasikan Plugin Anda

KEPALA PLUGIN

Pertama, kami akan memperbarui header plugin. Secara khusus, domain teks dan jalur domain .

Contoh Header Plugin

 /* Plugin Name: My Rad Plugin Plugin URI: https://myradplugin.com Description: Custom Plugin That Makes My Site Rad Author: Rad Plugin Creator Version: 1.0 Author URI: https://radplugincreator.com Text Domain: rad-plugin Domain Path: /languages/ */

Domain Teks

Domain teks adalah pengidentifikasi unik untuk WordPress untuk mengenali semua teks milik plugin dan harus cocok dengan slug plugin .

Ini sangat penting jika plugin Anda dihosting di WordPress.org; ini harus cocok agar GlotPress dapat mengimpor terjemahan dengan benar untuk plugin Anda.

Dalam contoh kita, file plugin bernama rad-plugin.php dan domain teksnya adalah rad-plugin

Anda mungkin sudah memiliki kumpulan domain teks. Jika tidak, ingatlah untuk menggunakan tanda hubung, bukan garis bawah.

Jalur Domain

Jalur domain adalah folder tempat file terjemahan yang telah diselesaikan akan tinggal. Anda harus membuat folder baru di dalam direktori plugin, seperti /languages/ , dan memperbarui jalur domain, sehingga WordPress tahu persis di mana harus mencari file terjemahan.

BUAT DOMAIN TEKS

Selanjutnya, kita akan memuat domain teks dengan menambahkan fungsi berikut ke kode kita.

load_plugin_textdomain()

 load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path );

Jika file terjemahan tersedia untuk bahasa pengguna, fungsi domain teks muat akan memberi tahu WordPress untuk mengirimkannya.

Parameter

  • $domain — domain teks (wajib)
  • $abs_rel_path — false (opsional, tidak digunakan lagi)
  • $plugin_rel_path — /languages/ (opsional, ini adalah jalur relatif ke direktori yang berisi file terjemahan Anda. Dalam contoh kita, /languages/. Mulai 4.6, WordPress akan mencari file-file ini di direktori /languages/ plugin, jika ini tidak ditentukan.)

Contoh Plugin Rad

Untuk memuat domain teks, kita akan menghubungkan ke tindakan 'plugins_loaded'.

 add_action( 'plugins_loaded', 'rad_plugin_load_text_domain' ); function rad_plugin_load_text_domain() { load_plugin_textdomain( 'rad-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); }

AUDIT STRING

Langkah selanjutnya adalah membungkus semua string teks plugin dalam fungsi terjemahan.

Fungsi terjemahan yang paling umum adalah __() untuk mengembalikan string yang diterjemahkan dan _e() untuk menggemakan string yang diterjemahkan.

Contoh Plugin Rad

 __() $text = __( 'Super Rad!', 'rad-plugin' );

Fungsi ini akan bekerja untuk terjemahan sederhana. Ini memperhitungkan dua parameter; string teks dan domain teks .

 _e( 'Super Rad!', 'rad-plugin' );

Fungsi ini hanya menggemakan nilainya. Jika tidak, ia bekerja persis seperti fungsi sebelumnya.

Ada banyak fungsi terjemahan tambahan yang juga harus digunakan bila perlu.

Fungsi Dasar Lainnya

 __() _e() _x() _ex() _n() _nx() _n_noop() _nx_noop() translate_nooped_plural()

Fungsi Tanggal & Angka

 number_format_i18n() date_i18n()

Fungsi melarikan diri

Jangan lupa untuk menghindari data apa pun yang sedang dikeluarkan menggunakan fungsi escape berikut.

 esc_html__() esc_html__() esc_html_x() esc_attr__() esc_attr_e() esc_attr_x()

Dalam contoh Rad kami, kami mungkin memiliki baris kode plugin yang terlihat seperti ini:

 function create_section() { esc_html_e( 'Below are your settings for Rad Plugin', 'rad-plugin' ); }

BUAT FILE POT

Langkah terakhir adalah membuat file POT. Ada beberapa alat berbeda yang tersedia untuk menghasilkan jenis file ini, tetapi untuk tutorial ini, kami akan tetap menggunakan rekomendasi dari codex WordPress dan menggunakan Poedit, GUI yang mudah digunakan untuk mengelola terjemahan.

Catatan : Jika plugin atau tema Anda sudah ada di repositori WordPress.org, Anda dapat melewati proses ini dan membuat file POT dari halaman admin. Dalam hal ini, tidak perlu membuat file .po untuk setiap bahasa. Pengenalan GlotPress dan paket bahasa pada tahun 2015 menyederhanakan proses penerjemahan; semua yang diperlukan untuk GlotPress adalah file .pot, yang akan diimpor oleh WordPress.org dan disajikan kepada penerjemah melalui dasbor translate.wordpress.org. Kolaborator dari seluruh dunia akan menggunakan dasbor ini untuk memberikan terjemahan pada #WPTranslateDay.

Unduh Poedit

Mengonfigurasi Poedit

Properti Terjemahan

Mulailah dengan membuka File > New . Kemudian pilih bahasa asli plugin Anda dan tekan OK .

Pratinjau besar

Selanjutnya, pilih Katalog > Baru . Masukkan nama proyek, versi, kontak, dan bahasa.

Pratinjau besar

jalan

Pilih tab Sources Paths selanjutnya. Jika ini adalah file baru, Anda harus menyimpan file terlebih dahulu.

Mengikuti contoh kami, kami akan memilih File > Save As untuk menyimpan sebagai file .po ke direktori /languages/ di dalam rad-plugin. Sekali lagi, nama file harus cocok dengan slug plugin Anda.

 rad-plugin.po

Setelah menyimpan, lalu masukkan jalur relatif ke direktori tempat file terjemahan Anda akan disimpan. Dalam skenario ini, bahasa .

Pratinjau besar

Kata kunci

Pilih tab Kata Kunci Sumber . Klik ikon + untuk menambahkan nama fungsi yang sesuai.

Pratinjau besar

Contekan

 __ _e _x _ex _n _nx _n_noop _nx_noop translate_nooped_plural number_format_i18n date_i18n esc_html__ esc_html__ esc_html_x esc_attr__ esc_attr_e esc_attr_x

Setelah itu, Anda dapat mengklik OK dan kemudian File > Save .

Poedit akan menyimpan file .mo dan .po. Anda dapat membuat file .pot dengan menyalin file .po dan menambahkan ekstensi .pot. Pengguna internasional dapat menggunakan file .pot template untuk menerjemahkan string ke dalam bahasa mereka.

Internasionalisasikan Tema Anda

Proses internasionalisasi tema Anda secara praktis identik dengan I18N untuk plugin. Kita akan mulai dengan memeriksa header tema dan mengakhiri dengan membuat file POT lainnya.

KEPALA TEMA

Periksa kembali tajuk tema Anda untuk memastikan domain teks dan jalur domain Anda telah disetel.

Contoh Judul Tema

 /* Theme Name: Rad Theme Author: Rad Theme Author Text Domain: rad-theme Domain Path: /languages/ */

BUAT DOMAIN TEKS

Langkah selanjutnya adalah memuat domain teks di file functions.php tema Anda kali ini.

load_theme_textdomain()

 load_theme_textdomain( 'radtheme', get_template_directory() . '/languages' );

Agar file-file ini dapat dimuat, Anda harus mendaftarkannya dengan tindakan after_setup_theme.

 add_action( 'after_setup_theme', 'rad_theme_setup' ); function rad_theme_setup() { load_theme_textdomain( 'radtheme', get_template_directory() . '/languages' ); }

AUDIT STRING

Saatnya untuk audit string lainnya! Anda harus terbiasa dengan fungsi terjemahan dasar pada saat ini.

Mari kita lihat beberapa terjemahan yang lebih rumit.

Placeholder

Variabel PHP seperti contoh di bawah ini tidak akan diterjemahkan dengan baik tanpa menggunakan placeholder.

 echo "We added $count rad points.";

printf() & sprintf()

Fungsi-fungsi ini menggunakan placeholder seperti %s , atau %d untuk bilangan bulat, untuk menginterpolasi string teks dengan konten dinamis.

Contoh Tema Rad

 /* Translators: %d is the number of rad points added */ printf( esc_html__( 'We added %d rad points.', 'rad-plugin' ), $count );

jamak

Fungsi _n() dapat menangani terjemahan string yang lebih kompleks seperti bentuk jamak, tetapi tidak disarankan karena keterbatasannya dalam perangkat lunak terjemahan. Sebagai gantinya, Anda dapat menulis pernyataan if sederhana untuk membedakan antara kata tunggal dan jamak.

Contoh Plugin Rad

 If ( 1 === $rad_points_found ) { $message = __( '1 rad point', 'rad-plugin' ); } else { /* Translators: %s is the number of rad points found */ $message = sprintf( __( '%s rad points' , 'rad-plugin' ) , $rad_points_found ); }

HASILKAN FILE POT

Proses untuk menghasilkan file POT tema sama dengan menghasilkan file POT plugin. Jelajahi beberapa metode di bawah ini.

Garis komando

Dengan WordPress Trunk dan paket gettext GNU terinstal, Anda dapat melewati langkah ini dengan menjalankan skrip makepot.php di baris perintah.

Buka baris perintah dan navigasikan ke direktori alat I18N.

 cd wpdev/tools/i18n/

Script akan terlihat seperti ini:

 php path/to/makepot.php wp-theme path/to/rad-theme rad-theme.pot

Script akan melakukan tugasnya dan file yang sudah selesai, rad-theme.pot , akan berakhir di direktori saat ini.

Tugas kasar

Metode lain untuk membuat file POT adalah dengan menjalankan tugas Grunt menggunakan grunt-wp-i18n atau grunt-pot. Pelari tugas seperti Grunt dapat mengotomatiskan banyak tugas yang membosankan, seperti menghasilkan file POT.

Untuk membuat file POT Anda, pastikan Anda telah menginstal node.js terlebih dahulu. Kemudian, instal Grunt di direktori bahasa Anda melalui baris perintah, dan pergilah. Sekarang, Anda dapat dengan cepat menjalankan perintah I18N ini dan membuat file terjemahan Anda tanpa meninggalkan kenyamanan baris perintah.

JavaScript I18N

Jika Anda seorang pengembang tema atau plugin modern, kemungkinan Anda menggunakan JavaScript untuk menangani beberapa komponen proyek Anda. wp_localize_script adalah fungsi yang efektif untuk mengekstrak data PHP untuk diberikan ke skrip Anda, dan itu satu-satunya cara untuk menerjemahkan JavaScript di dalam WordPress.

WP_LOCALIZE_SCRIPT()

Fungsi ini akan memungkinkan kita untuk melokalkan string sisi server di PHP dan menyediakan string teks sebagai objek JavaScript ke skrip.

 wp_localize_script( $handle, $name, $data );

PARAMETER

  • $handle — script handle yang datanya harus tersedia (wajib — harus cocok dengan handle script tempat data ini digunakan, lihat contoh di bawah)
  • $name — nama objek yang berisi data (wajib — harus unik)
  • $data — larik data untuk diteruskan ke skrip (wajib) .

CONTOH PLUGIN RAD

 add_action( 'wp_enqueue_scripts', 'rad_theme_scripts' ); function rad_theme_scripts() { wp_enqueue_script( 'rad-theme-script', get_template_directory_url() . '/js/rad-theme-script.js' ); wp_localize_script( 'rad-theme-script', 'rad-I18n', array( 'message' => __( 'Super Rad!', 'rad-theme' ), ) ); }

AKSES DATA DI JAVASCRIPT

Cuplikan kode sederhana di bawah ini adalah contoh cara mengakses data ini di file JavaScript Anda.

 alert( rad-I18n.message );

Sumber daya tambahan

  • I18N untuk Pengembang WordPress
  • Buku Pegangan Tema WordPress: Internasionalisasi
  • Buku Pegangan Plugin WordPress: Internasionalisasi
  • WordPress.tv: I18N

Membungkusnya

Selamat! Anda baru saja menginternasionalkan tema dan/atau plugin Anda, membuatnya dapat diakses oleh orang-orang dari semua bahasa asli untuk mendapatkan manfaat. Apakah proyek Anda didistribusikan melalui repositori WordPress, atau dikembangkan khusus untuk situs web organisasi Anda, hanya ada satu keuntungan untuk menginternasionalkan file Anda dari awal.

  • Jadikan kontribusi sumber terbuka Anda dapat diakses secara global.
  • Buat percakapan dengan pelanggan baru di pasar luar negeri.
  • Hemat waktu dan kurangi pembaruan yang melelahkan di masa mendatang.

Selalu internasionalisasi.