Lokalkan Blok

Blockly mendukung definisi blok yang dapat dilokalkan ke bahasa pengguna. Melalui penggunaan tabel string, string pesan dalam definisi blok JSON dapat menyesuaikan {i>input<i}, {i>field<i}, dan label untuk mencerminkan kosakata bahasa, urutan kata, dan arah.

list_repeat blok dalam bahasa Inggris list_repeat blok dalam bahasa Spanyol list_repeat blok dalam bahasa Korea list_repeat blok dalam bahasa Arab kanan-ke-kiri

Semua kasus ini memiliki definisi blok JSON yang sama:

// Block for creating a list with one element repeated.
{
  "type": "lists_repeat",
  "message0": "%{BKY_LISTS_REPEAT_TITLE}",
  "args0": [
    {
      "type": "input_value",
      "name": "ITEM"
    },
    {
      "type": "input_value",
      "name": "NUM",
      "check": "Number"
    }
  ],
  "output": "Array",
  "colour": "%{BKY_LISTS_HUE}",
  "tooltip": "%{BKY_LISTS_REPEAT_TOOLTIP}",
  "helpUrl": "%{BKY_LISTS_REPEAT_HELPURL}"
}

Tabel String

Contoh lists_repeat menyertakan beberapa string "%{BKY_...}". Masing-masing ini adalah referensi ke string dalam tabel string Blockly.Msg. Jika dibuat instance, Blockly mencoba mengganti string dengan nilai.

Misalnya, %{BKY_LISTS_REPEAT_TITLE} diganti dengan nilai Blockly.Msg['LISTS_REPEAT_TITLE'], jika ada. Jika nilainya tidak ada, notasi %{BKY_...} dibiarkan, dan Blockly memberikan peringatan untuk terjemahan yang hilang.

Seperti ditunjukkan dalam contoh, notasi berfungsi di beberapa lokasi. Pesan dan tooltip memungkinkan string yang terlihat oleh pengguna diganti. Demikian pula, menu dropdown kolom juga dapat menggunakan notasi untuk teks item. URL bantuan dapat dilokalkan ke memastikan pengguna diarahkan ke halaman yang dilokalkan secara serupa. Terakhir, Nilai colour dapat menggunakan notasi untuk membantu memusatkan palet blok.

Jika Anda menggunakan implementasi JavaScript dan tidak berharap untuk mengubah bahasa pengguna saat runtime, akan lebih mudah jika Anda menggunakan referensi langsung. Sebagai contoh, Blockly.Msg['LISTS_REPEAT_TITLE'] atau Blockly.Msg.LISTS_REPEAT_TITLE'.

Tabel string dimuat melalui salah satu file .js khusus bahasa di msg/js. Muat file yang sesuai ke laman web untuk memuat blok terjemahan yang benar.

Interpolasi Pesan JSON

Atribut message0 (dan message1, message2, dll.) akan menentukan input, kolom, dan teks label di sekitarnya. Untuk LISTS_REPEAT_TITLE dalam lists_repeat, nilai bahasa Inggrisnya adalah:

Blockly.Msg.LISTS_REPEAT_TITLE = 'create list with item %1 repeated %2 times';

Dua penanda interpolasi, %1 dan %2, menandai lokasi kedua input tersebut. Detail lebih lanjut diberikan dalam array args0. args1 akan sesuai dengan string message1. Lihat Membuat elemen penyusun kustom untuk detail selengkapnya tentang cara menentukan input dan kolom blok.

Teks di antara penanda interpolasi dikonversi menjadi teks tanpa nama kolom label. Ini menciptakan kata urutan blok dan caranya membaca:

// In Spanish
Blockly.Msg.LISTS_REPEAT_TITLE = "crear lista con el elemento %1 repetido %2 veces";
// In Korean
Blockly.Msg.LISTS_REPEAT_TITLE = "%1 %2 넣어, 리스트 생성";

Saat menerjemahkan ke bahasa yang ditulis dari kanan ke kiri, string pesan ditulis dalam urutan visual, dan tidak boleh menyertakan perintah arah Unicode:

// In Arabic. Note how %2 is left of %1, since it read right to left.
Blockly.Msg.LISTS_REPEAT_TITLE = "إنشئ قائمة مع العنصر  %1 %2 مرات";

Membangun ulang tabel {i>string<i}

Membuat file .js tabel string adalah bagian dari skrip build:langfiles. Tujuan mengambil kunci pengidentifikasi dan terjemahan bahasa Inggris dari msg/messages.js untuk membuat en.json baru. Kemudian, dikombinasikan dengan terjemahan apa pun yang ditemukan dalam file JSON lainnya, model akan membuat ulang update Tabel string JavaScript untuk semua bahasa, termasuk versi en.js.

File JSON yang bukan berbahasa Inggris berasal dari partner di TranslateWiki. Lihat catatan aktif menerjemahkan untuk mengetahui detail tentang cara membantu Anda.