Lokalisasi / Terjemahan untuk JavaScript
Gambaran Umum
Video ini membahas cara membuat teks dalam JavaScript/JSX bisa diterjemahkan ke bahasa lain — sama seperti PHP menggunakan __(), tapi kali ini menggunakan wp.i18n.__(), wp_set_script_translations(), dan Loco Translate plugin.
Langkah 1: Setup PHP untuk Mendukung Terjemahan
Text Domain & Domain Path di Plugin Header
php
<?php
/*
Plugin Name: Featured Professor Block Type
Text Domain: featured-prof
Domain Path: /languages
*/Buat Folder languages
featured-professor/
├── languages/ ← Folder kosong baru
├── src/
├── inc/
└── featured-professor.phpLoad Text Domain di onInit()
php
function onInit() {
load_plugin_textdomain('featured-professor', false,
dirname(plugin_basename(__FILE__)) . '/languages'
);
// ... register_meta, register_script, dll ...
}Parameter:
'featured-professor'→ text domain (harus match dengan header)false→ parameter deprecated, cukupfalse- Path ke folder
languages/relatif dari plugin directory
Langkah 2: Gunakan __() di JavaScript
Buat Shortcut dari Global Scope
jsx
const __ = wp.i18n.__;Mengapa tidak import?
import { __ } from '@wordpress/i18n'seharusnya bekerja, tapi Loco Translate plugin kadang tidak mendeteksi teks dengan benar jika di-import. Mengambil langsung dari global scope lebih reliable.
Gunakan di JSX
jsx
<select onChange={e => props.setAttributes({ profId: e.target.value })}>
<option>{__('Select a professor', 'featured-professor')}</option>
{allProfs.map(prof => (
<option value={prof.id} selected={props.attributes.profId == prof.id}>
{prof.title.rendered}
</option>
))}
</select>Syntax __():
jsx
__('Original text', 'text-domain')- Arg 1: Teks asli (default language)
- Arg 2: Text domain plugin kita
- Bisa digunakan di mana saja di JavaScript, tidak hanya di JSX curly brackets
Langkah 3: Hubungkan JavaScript dengan Translation System
wp_set_script_translations() di onInit()
php
function onInit() {
load_plugin_textdomain('featured-professor', false,
dirname(plugin_basename(__FILE__)) . '/languages'
);
wp_register_script('featuredProfessorScript', ...);
wp_register_style('featuredProfessorStyle', ...);
// PENTING: Taruh SETELAH register script
wp_set_script_translations('featuredProfessorScript', 'featured-professor',
plugin_dir_path(__FILE__) . '/languages'
);
register_meta(...);
register_block_type(...);
}Parameter wp_set_script_translations():
'featuredProfessorScript'→ Handle name script yang didaftarkan'featured-professor'→ Text domain- Path absolut ke folder
languages/
Kunci: Fungsi ini menghubungkan file JavaScript spesifik dengan sistem terjemahan WordPress.
Langkah 4: Membuat Terjemahan dengan Loco Translate
Setting Loco Translate untuk JavaScript
- Buka Loco Translate → Settings
- Di field "Scan JavaScript files with extensions" → ketik
js - Save Settings
Secara default, Loco Translate tidak scan file JavaScript. Harus diaktifkan manual.
Membuat Template
- Buka Loco Translate → Klik plugin Featured Professor Block Type
- Klik "Create Template"
- Loco Translate akan scan semua file termasuk JS dan menemukan string yang bisa diterjemahkan
Membuat Terjemahan Baru
- Klik "New Language"
- Pilih bahasa (contoh: Español de México)
- Pilih lokasi: Plugin languages folder ← penting!
- Klik "Start Translating"
- Pilih string yang ingin diterjemahkan (contoh: "Select a professor")
- Masukkan terjemahan → Save
Testing
- Buka Settings → General
- Ubah Site Language ke bahasa yang diterjemahkan
- Pergi ke editor post → insert block Featured Professor
- Teks "Select a professor" sekarang tampil dalam bahasa yang dipilih
Ringkasan Alur Kerja Terjemahan JavaScript
1. Plugin Header: Text Domain + Domain Path
↓
2. PHP: load_plugin_textdomain()
↓
3. PHP: wp_set_script_translations() → hubungkan script handle dengan translation
↓
4. JS: const __ = wp.i18n.__
↓
5. JS: __('text', 'domain') → di mana saja dalam kode
↓
6. Loco Translate: Settings → Scan JS files → Create Template → New Language
↓
7. WordPress: Settings → Site Language → Terjemahan aktif!