Menambahkan token pelokalan baru ke inti Blockly

Jika Anda menambahkan fitur ke inti Blockly yang memerlukan string baru yang dapat dilihat pengguna, Anda harus menambahkan string tersebut ke Blockly.Msg agar dapat diterjemahkan oleh Translatewiki. (Untuk informasi tentang cara menambahkan token pelokalan untuk aplikasi Anda sendiri, lihat Pelokalan.)

  1. Tambahkan string baru Anda dengan nama dan deskripsi yang sesuai ke file msg/messages.js.
  2. Jalankan npm run messages untuk menambahkan terjemahan Anda secara otomatis ke file msg/json/qqq.json dan msg/json/en.js. Langkah ini juga dapat mengubah msg/json/constants.js atau msg/json/synonyms.js dalam beberapa kasus.
  3. Periksa kebenaran file yang dibuat secara otomatis. Perhatikan bahwa skrip dapat menghapus bagian @metadata di awal qqq.json. Jika hal ini terjadi, Anda harus mengurungkan perubahan tersebut dengan cermat sehingga string baru ditambahkan, tetapi @metadata tidak dihapus.
  4. Dalam kode fitur, referensikan string baru dengan Blockly.Msg['MY_NEW_MESSAGE'].
  5. Lakukan commit semua perubahan pada file msg bersama dengan kode fitur Anda.

Misalnya, jika Anda menambahkan kode ini ke msg/messages.js:

/** @type {string} */
/// This is a hint to translators about the context for the message.
Blockly.Msg.MY_NEW_MESSAGE = 'This is a string that users will see!';

Kemudian, jalankan npm run messages, Anda akan melihat perubahan berikut di msg/en.json:

// ...
    "MY_NEW_MESSAGE": "This is a message that users will see!",
// ...

dan di msg/qqq.json:

// ...
    "MY_NEW_MESSAGE": "This is a hint to translators about the context for the message.",
// ...

Kemudian, Anda dapat mereferensikan string ini dalam kode dengan Blockly.Msg['MY_NEW_MESSAGE'].

Petunjuk terjemahan

Komentar tiga garis miring di msg/messages.js ditampilkan kepada pengguna TranslateWiki sebagai informasi tambahan saat menerjemahkan. Berikan konteks tentang tempat pesan akan ditampilkan kepada pengguna. Jika pesan menyertakan parameter (misalnya, %1), jelaskan arti parameter tersebut.

Berikut adalah contoh petunjuk terjemahan yang baik yang menjelaskan parameter dan menyediakan link ke informasi selengkapnya.

/** @type {string} */
/// block text - Repeatedly counts a variable (%1)
/// starting with a (usually lower) number in a range (%2),
/// ending with a (usually higher) number in a range (%3), and counting the
/// iterations by a number of steps (%4).  As in
/// [https://github.com/google/blockly/wiki/Loops#count-with
/// https://github.com/google/blockly/wiki/Loops#count-with].
Blockly.Msg.CONTROLS_FOR_TITLE = 'count with %1 from %2 to %3 by %4';

Jenis konteks

Banyak saran menggunakan awalan untuk menjelaskan konteks pesan. Awalan umum mencakup:

  • blokir teks
  • teks tombol
  • menu konteks
  • dropdown
  • math
  • notifikasi toast
  • tooltip

Jika pesan Anda muncul dalam salah satu konteks ini, gunakan awalan yang sesuai.

Sinonim

Terkadang kunci pesan perlu diubah, tetapi terjemahannya tidak. Dalam hal ini, Anda dapat menetapkan pesan lama sebagai sinonim pesan baru, seperti berikut:

/** @type {string} */
Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;

Pesan opsional

Beberapa string pesan kemungkinan tidak perlu diterjemahkan, kecuali dalam keadaan tertentu, misalnya, kata benda atau simbol yang tepat. Di Blockly, URL bantuan sering kali ditandai sebagai opsional.

Bahasa hanya dikirim ke repositori Blockly jika sudah minimal 25% selesai. Oleh karena itu, menandai pesan yang kemungkinan tidak perlu diterjemahkan sebagai opsional akan membantu bahasa tersebut memenuhi nilai minimum tanpa perlu menyelesaikan terjemahan opsional.


/** @type {string} */
/// {{Optional}} math - The symbol for the binary operation addition.
Blockly.Msg.MATH_ADDITION_SYMBOL = '+';

Item yang tidak diterjemahkan

Warna yang digunakan untuk kategori blok default ditandai {{notranslate}}. Warna ini tidak dimaksudkan untuk dilokalkan, tetapi ada dalam sistem pelokalan sehingga developer dapat dengan mudah mengubah warna blok dalam kategori default. Jika Anda menambahkan kategori pemblokiran baru, gunakan direktif {{notranslate}}. Jika Anda menambahkan jenis pesan lain yang menurut Anda tidak boleh diterjemahkan, pertimbangkan apakah sistem pelokalan adalah tempat yang tepat untuk string tersebut.


/** @type {string} */
/// {{Notranslate}} Hue value for all logic blocks.
Blockly.Msg.LOGIC_HUE = '210';