Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Theme Development
Code

Menerjemahkan Tema Anda

by
Difficulty:BeginnerLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Sangat mudah untuk menutup mata terhadap bahasa lain saat mengembangkan tema WordPress Anda, tapi ini adalah kebiasaan yang sangat buruk dan segera mematikan keseluruhan pasar pengguna WordPress dan berpotensi menghilangkan penghasilan ribuan dolar. Dari 10 negara teratas yang mencari Google untuk "WordPress themes", hanya satu yang berbahasa Inggris asli (Amerika Serikat) dan itu berada pada urutan ke 9. Saat menulis ini, hanya ada 269 tema dalam database tema WordPress yang ditandai sebagai siap-terjemahan dari lebih dari 1.500 tema. Itu hanya 18% dari tema-temanya. Saya akan menunjukkan cara membuat Anda menjadi salah satu dari mereka.


Bagaimana Cara Kerjanya

Saat Anda biasanya membuat tema, Anda hanya akan mengetikkan teks tema apa pun seperti pesan kesalahan 404 di file 404.php, atau label seperti "comments:" atau "author:". Jika pengguna WordPress adalah orang Jerman misalnya, cuplikan teks ini akan tetap ditampilkan dalam bahasa Inggris. Solusi untuk ini adalah mengembalikan atau meng-echo pernyataan-pernyataan ini menggunakan salah satu dari empat fungsi WordPress yang dirancang untuk merujuk file bahasa untuk teks yang benar. Begitu Anda memiliki teks yang dibungkus dalam fungsi-fungsi ini, Anda dapat membuat file yang berisi semua terjemahan yang dirujuk setiap kali tema dimuat. Ada tiga file terjemahan yang kita gunakan:

  • .pot (Portable Object Template) – Ini adalah file template yang berisi referensi untuk setiap string teks dalam tema Anda yang perlu diterjemahkan. File ini tidak mengandung terjemahan apapun. Ini adalah file teks biasa.
  • .po (Portable Object) – Terbuat dari file .pot, .po berisi semua referensi string Anda dan juga terjemahannya ke satu bahasa tertentu. Ini juga merupakan file teks biasa yang bisa diedit.
  • .mo (Machine Object) – Versi biner dari file .po. Dengan menggunakan kode mesin, file tersebut bisa digunakan lebih cepat dari pada alternatif teks biasanya.

Langkah 1 Keempat Fungsi

Masing-masing dari keempat fungsi tersebut membutuhkan setidaknya satu argumen, yaitu teks yang akan diterjemahkan. Fungsi-fungsinya adalah:

  • __()(dua garis bawah) Fungsi dasar yang akan Anda gunakan pada sebagian besar waktu. Ini mengembalikan teks dalam bahasa yang benar.
  • _e() – Sama seperti __() kecuali itu meng-echo teks dan bukan mengembalikannya.
  • _n() – Digunakan saat teks berpotensi menjadi jamak, jadi misalnya jika Anda ingin menampilkan berapa banyak komentar telah dibuat, Anda mungkin ingin mengeluarkan "X comments" atau "X comment" bergantung pada berapa banyak komentar yang Anda miliki.
  • _x() – Berguna bila terjemahan kata bergantung pada konteksnya. "Post" bisa berarti "sebuah pos (kata benda)" atau "memposting (kata kerja)" bergantung pada konteksnya. Penting bagi penerjemah untuk mengetahui maksud Anda saat menerjemahkan menjadi akurat. _x() terutama digunakan di mana kata-kata tunggal digunakan.

__() & _e()

Ini adalah fungsi terjemahan yang paling sederhana yang ditawarkan WordPress. Mari kita lihat contoh masing-masing:

Kedua fungsi ini melakukan hal yang persis sama di sini. Pernyataan "this is a post" sedang diperiksa terhadap file .mo jika ada, dan mengembalikan hasilnya. __() dan _e() hanya membutuhkan satu argumen untuk disampaikan kepada mereka, yang merupakan teks yang ingin kita terjemahkan. Argumen opsional kedua tersedia dan kami akan membahasnya nanti. Satu-satunya perbedaan antara keduanya adalah bahwa __() membutuhkan pernyataan echo di sini. Mari kita lihat sebuah contoh dimana __() bekerja lebih baik dari pada _e():

Alih-alih mengirimkan string ke fungsi the_content(), kita telah menggunakan __() sehingga teks dapat diterjemahkan. Jika kita telah menggunakan _e() di sini sebagai gantinya, Anda akan memiliki terjemahan "Click here to read more" di-echo pada dokumen alih-alih diteruskan ke the_content() yang akan menyebabkan segala macam masalah yang tidak membantu.

_n()

Bagaimana jika Anda memiliki situasi di mana teks yang Anda hasilkan berpotensi menjadi bentuk jamak atau tunggal seperti contoh "X comments" di atas? Alih-alih memberi dua string teks yang berbeda untuk penerjemah, Anda dapat mengatakan bahwa Anda memiliki satu bagian teks yang memerlukan terjemahan tunggal dan jamak. Dua contoh berikut menghasilkan hasil yang sama kepada pengguna:

_n() membutuhkan tiga argumen. Yang pertama adalah versi singular dari teks, yang kedua adalah jamak, dan yang ketiga adalah nomor referensinya. Dalam kasus ini, get_comments_number() menemukan berapa banyak komentar yang ada di posting dan kemudian _n() memilih teks yang sesuai untuk digunakan.

_x() & _ex()

Misalnya Anda menerjemahkan file .pot, dan Anda menemukan entri "scroll". Apakah Anda akan menafsirkannya sebagai "sepotong kertas gulung" atau "gulir ke atas atau ke bawah situs web-nya"? Anda benar-benar bisa melakukan beberapa konteks untuk menggambarkan apa yang Anda perlukan untuk menerjemahkannya. Fungsi ini memberi Anda kemampuan itu, dengan memiliki atribut kedua yang meminta deskripsi singkat untuk menggambarkan frasa atau kata. Periksa contoh di bawah ini:

Contohnya menunjukkan perbedaan antara _x() dan _ex(). Ini adalah e yang sama, seperti pada _e, untuk membuat fungsi tersebut meng-echo output alih-alih mengembalikannya. Untuk keduanya, parameter pertama kami adalah teks kami yang perlu diterjemahkan, dan yang kedua adalah komentar atau catatan tentang teks terjemahan untuk memperjelas apa yang dimaksud.

Teknik Lanjutan

Katakanlah Anda memiliki situasi di mana teks yang ingin Anda hasilkan terdiri dari string teks dengan hasil fungsi atau nilai variabel yang diletakkan di suatu tempat di dalamnya. Anda mungkin tergoda untuk melakukan sesuatu seperti ini:

Ketika datang untuk membuat file .pot Anda, POEdit akan mengabaikan ini karena tidak ingin menggunakan variabel di tengah kalimat. Alasannya adalah bahwa ia akan mengirimkan string yang telah Anda pilih tema $color ke file .pot, tapi ketika harus mencari terjemahan saat skrip dijalankan, ia akan mencari string yang telah Anda pilih tema biru yang tidak akan ditemukannya. Jadi bagaimana jika kita melakukan ini sebagai gantinya:

Skrip sekarang akan bisa mengambil terjemahannya, tapi sekarang ini menjadi terlalu sulit untuk diterjemahkan karena kalimatnya telah dipecah. Kalimat ini mungkin bahkan tidak dapat diterjemahkan dalam beberapa bahasa yang memiliki sintaks yang sangat berbeda, seperti di Jerman di mana kata mereka untuk "chosen" akan muncul di akhir kalimat. Anda perlu melalui kesulitan untuk menjelaskan bahwa kedua string teks terpisah ini adalah bagian dari satu, dan "theme" itu mungkin tidak akan diterjemahkan menjadi "theme" sama sekali.

Solusinya adalah menggunakan satu teks string yang memiliki sintaks single-quotation-friendly. Di sinilah fungsi printf() atau sprintf() menjadi berguna. Mari kita lihat apa yang dibutuhkan kode kita agar terlihat seperti:

Hal ini tidak hanya menyelesaikan semua masalah kami sebelumnya, tapi lebih ketat dan hanya menggunakan satu baris kode. Argumen pertama printf() atau sprintf() adalah string yang akan ditampilkan yang berisi setidaknya satu placeholder, dalam hal ini %s (yang berarti "string"), dan argumen lainnya adalah variabel yang akan ditempatkan di dalam string awal. Ada banyak placeholder berbeda yang dapat Anda gunakan di dalam string Anda dan Anda dapat menemukan daftar lengkap di bawah sprintf di manual PHP. Perhatikan bahwa perbedaan antara printf() dan sprintf() sama dengan _e() dan __() masing-masing.


Langkah 2 Memperkenalkan POEdit

Sekarang setelah Anda berhasil menandai semua teks keluaran Anda pada tema Anda, sekarang Anda perlu mengumpulkan informasi ini ke file .pot. POEdit adalah program fantastis yang memberi Anda kemampuan untuk membuat file .pot Anda, dan juga menyediakan GUI yang mudah digunakan yang dapat digunakan untuk membuat file .po dan, yang lebih penting, file .mo Anda juga.

Pertama, Anda perlu mengunduh POEdit, yang dapat Anda temukan di sini untuk Windows, Mac dan Linux:
http://www.poedit.net/download.php

Setelah POEdit terinstal, Anda dapat membuat file .pot Anda. Untuk melakukan ini, buka File > New Catalog. Anda akan dipersembahkan dengan kotak dialog dimana Anda perlu memasukkan beberapa informasi dasar. Yang penting di tab "Project Info" adalah nama proyek dan bahasa/negara Anda. Anda juga harus memasukkan yang berikut ini di kotak "Plural Forms":

Plural Forms: nplurals=2; plural=n != 1;

POEdit project info

Pada tab "paths", masukkan path dimana file dapat ditemukan yang relatif terhadap tujuan penyimpanan dari file .pot ini. Misalnya, jika Anda meletakkan file .pot di folder root tema, masukkan . (tanda titik tunggal). Jika Anda ingin menempatkan file .pot di folder "language" di dalam root tema, masukkan .. (dua tanda titik).

POEdit path

Selanjutnya, Anda perlu memberi tahu POEdit kata kunci mana yang akan dicari saat memindai file kita. Masukkan berikut:

  • __
  • _e
  • _n:1,2
  • _x:1,2c
  • _ex:1,2c

Ekstensi :1,2 memberitahu POEdit bahwa kata kunci ini memiliki dua bagian untuk mereka. Secara default, argumen kedua adalah jamak kecuali jika Anda menyertakan huruf c yang berarti argumen kedua adalah sebuah komentar.

POEdit keywords

Anda baik untuk pergi Klik "OK" dan pilih tempat untuk menyimpan file .pot Anda. Ingat bahwa itu harus berhubungan dengan path yang telah Anda tentukan sebelumnya. POEdit sekarang akan memindai file Anda dan menemukan semua kejadian fungsi terjemahan Anda dan menyimpannya tanpa terjemahan ke file .pot Anda. Jika Anda hanya ingin memberikan dukungan minimum untuk terjemahan internasional, Anda dapat mengirim file .pot Anda dengan tema Anda dan berhenti di sini, namun jika Anda dapat menerjemahkan tema Anda ke dalam bahasa lain, Anda dapat mengirimkan tema Anda dengan terjemahan pra-dibuat seperti yang dijelaskan pada langkah 3.


Langkah 3 Menerjemahkan dan Membuat File .po Anda

POEdit translating singular
  1. Daftar semua string teks yang akan diterjemahkan
  2. String saat ini diterjemahkan
  3. Terjemahan string Anda
POEdit translating plural
  1. Tunggal dan jamak dari string saat ini
  2. Tab untuk beralih antara singular dan jamak dari terjemahan Anda
  3. Terjemahan Anda

Setelah Anda menerjemahkan semua string ke dalam file .pot, Anda dapat menyimpannya sebagai file .po Anda. Setiap string yang belum Anda sediakan terjemahannya akan ditampilkan dalam bahasa aslinya saat seseorang melihat tema Anda.

Nama file .po Anda sangat penting. Gettext menggunakan standar ISO 639 untuk singkatan bahasa dan ISO 3166 untuk lokal. Jika terjemahan Anda ditulis dalam bahasa Inggris Amerika misalnya, nama file Anda akan terlihat seperti en-US.po. Kapitalisasi juga penting disini. Untuk daftar lengkap kode bahasa dan negara, lihat dua tautan berikut:

Setelah Anda menyimpan, POEdit secara default membuat file .mo secara otomatis di samping file .po Anda. Sebaiknya sertakan ketiga file terjemahan Anda dengan tema Anda sehingga orang dapat membuat terjemahan mereka sendiri dan mengedit terjemahan Anda yang ada dengan mudah.


Langkah 4 Menyiapkan WordPress

Mari kita rekap apa yang telah Anda lakukan sejauh ini. Anda telah memberi tahu WordPress semua teks yang ingin diterjemahkan, lalu Anda menggunakan POEdit untuk mengumpulkan setiap string dan menempatkannya ke file .pot yang dapat diterjemahkan ke file .po dan .mo. File-file ini kemudian disertakan dalam file-file tema. Langkah terakhir adalah mengarsipkan tema Anda, menginstalnya dan membiarkan WordPress mengetahui file .mo bahasa mana yang Anda inginkan. Ini adalah prosedur yang sangat sederhana di mana Anda mengakses file wp-config.php Anda yang terdapat di folder root WordPress Anda.

File Anda seharusnya sudah berisi define('WPLANG', ''); tapi jika tidak, Anda bisa menambahkannya. Anda hanya perlu menambahkan bahasa dan kode lokal ke dalam define. Jika Anda menerjemahkan tema Anda ke bahasa Jerman, Anda akan memiliki ini:

Internasionalisasi Anda sudah selesai! Ingatlah untuk menyertakan file .pot Anda dengan tema Anda, dan jika Anda dapat menerjemahkan tema Anda ke bahasa lain, sertakan file .po dan .mo juga.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.