Blokları yerelleştirme

Blockly, kullanıcının diline göre yerelleştirilebilen blok tanımlarını destekler. Dize tabloları kullanılarak, JSON blok tanımındaki mesaj dizeleri girişleri, alanları ve etiketleri dilin sözlüğünü yansıtacak şekilde uyarlayabilir, kelime sıralaması ve yönü.

İngilizce "list_repeat" bloku İspanyolca "Listeler_repeat" bloğu Korece listeleriniz_repeat bloğu sağdan sola Arapça'da lists_repeat bloğu

Bu durumların tümü aynı JSON blok tanımını paylaşır:

// 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}"
}

Dize Tablosu

lists_repeat örneği, birkaç "%{BKY_...}" dizesi içerir. Her biri bunlar, Blockly.Msg dize tablosundaki bir dizeye başvurudur. blok örneklendirildiğinde, Blockly dizeyi değerle değiştirmeyi dener.

Örneğin, %{BKY_LISTS_REPEAT_TITLE}, Blockly.Msg['LISTS_REPEAT_TITLE'] (varsa). Değer mevcut değilse %{BKY_...} gösterimi yerinde bırakılır ve Blockly uyarı gönderir eksik olan çeviri için.

Örnekte gösterildiği gibi, notasyon birkaç yerde çalışır. Mesajlar ve ipuçları, kullanıcının görebildiği dizelerin değiştirilmesine olanak tanır. Benzer şekilde, alanları, öğe metni için de gösterim kullanabilir. Yardım URL'si şu şekilde yerelleştirilebilir: Kullanıcının benzer şekilde yerelleştirilmiş bir sayfaya yönlendirilmesini sağlar. Son olarak da colour değeri, blok paletini merkezileştirmeye yardımcı olması için gösterimi kullanabilir.

JavaScript uygulaması kullanıyorsanız ve yardımcı oluyorsa doğrudan referans kullanmak daha kolay olabilir. Örneğin, örnek, Blockly.Msg['LISTS_REPEAT_TITLE'] veya Blockly.Msg.LISTS_REPEAT_TITLE'.

Dize tabloları, dile özgü .js dosyalarından herhangi biri aracılığıyla yüklenir. msg/js uygun dosyayı web sayfanıza ekleyerek doğru blok çevirisini yükleyin.

JSON Mesaj İnterpolasyonu

message0 özelliği (ve message1, message2 vb.) girişleri belirtir. alanları ve etrafındaki etiket metnini gösterir. LISTS_REPEAT_TITLE için lists_repeat bloku için, İngilizce değeri şöyle olur:

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

%1 ve %2 olmak üzere iki interpolasyon işaretçisi, iki girişin konumlarını işaretler. args0 dizisinde daha ayrıntılı bilgi verilmiştir. args1 şunlara karşılık gelir: message1 dizesi. Bkz. Özel yapı taşları oluşturma kılavuzu inceleyin.

İnterpolasyon işaretçileri arasındaki metin, adsız hale getirilir etiket alanlarını kullanın. Bu, blok sırası ve nasıl okunduğuyla ilgili olarak:

// 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 넣어, 리스트 생성";

Sağdan sola dillere çeviri yaparken ileti dizesi aynı olmalıdır ve Unicode yön komutlarını içermemelidir:

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

Dize tablolarını yeniden oluşturma

Dize tablosu .js dosyaları, build:langfiles komut dosyasının bir parçasıdır. İlgili içeriği oluşturmak için kullanılan komut dosyası, tanımlayıcı anahtarlarını ve İngilizce çevirileri msg/messages.js yeni bir en.json oluşturun. Ardından, diğer JSON dosyaları, yeniden oluşturacağından JavaScript dize tabloları yeni bir dil de dahil olmak üzere en.js.

İngilizce olmayan JSON dosyaları şuradaki iş ortaklarından gelir: TranslateWiki Bkz. üzerine notlar çeviri nasıl yardım edebileceğinizle ilgili ayrıntılar için.