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.)
- Tambahkan string baru Anda dengan nama dan deskripsi yang sesuai ke file
msg/messages.js
. - Jalankan
npm run messages
untuk menambahkan terjemahan Anda secara otomatis ke filemsg/json/qqq.json
danmsg/json/en.js
. Langkah ini juga dapat mengubahmsg/json/constants.js
ataumsg/json/synonyms.js
dalam beberapa kasus. - Periksa kebenaran file yang dibuat secara otomatis. Perhatikan bahwa skrip dapat menghapus bagian
@metadata
di awalqqq.json
. Jika hal ini terjadi, Anda harus mengurungkan perubahan tersebut dengan cermat sehingga string baru ditambahkan, tetapi@metadata
tidak dihapus. - Dalam kode fitur, referensikan string baru dengan
Blockly.Msg['MY_NEW_MESSAGE']
. - 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';