lazy-load-blockly

This commit is contained in:
unknown
2024-12-12 15:06:45 +08:00
parent c5f8ef25bb
commit 7021b5bd05
15 changed files with 1604 additions and 5786 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,783 +0,0 @@
Blockly.JavaScript.GET=function(block) {
var url = Blockly.JavaScript.valueToCode(this, 'url', Blockly.JavaScript.ORDER_ATOMIC);
var statement_code=Blockly.JavaScript.statementToCode(block, "DO0" );
var code_piece=[];
code_piece=statement_code.split("\n");
for(var i=0;i<code_piece.length;i++){
if((code_piece[i].indexOf(" ") >= 0)){
code_piece[i]=code_piece[i].replace(" "," ");
}
}
statement_code=""
for(var i=0;i<code_piece.length;i++){
statement_code+=code_piece[i]+'\n'
}
var code="$.get("+url+", function(data, status){\n\t"+statement_code+"\n"+"})\n"
return code;
};
Blockly.JavaScript.POST=function(block) {
var url = Blockly.JavaScript.valueToCode(this, 'url', Blockly.JavaScript.ORDER_ATOMIC);
var data = Blockly.JavaScript.valueToCode(this, 'data', Blockly.JavaScript.ORDER_ATOMIC);
var statement_code=Blockly.JavaScript.statementToCode(block, "DO0" );
var code_piece=[];
code_piece=statement_code.split("\n");
for(var i=0;i<code_piece.length;i++){
if((code_piece[i].indexOf(" ") >= 0)){
code_piece[i]=code_piece[i].replace(" "," ");
}
}
statement_code=""
for(var i=0;i<code_piece.length;i++){
statement_code+=code_piece[i]+'\n'
}
var code="$.post("+url+", " + data + ", function(data, status){\n\t"+statement_code+"\n"+"})\n"
return code;
};
Blockly.JavaScript.GETJSON=function(block) {
var url = Blockly.JavaScript.valueToCode(this, 'url', Blockly.JavaScript.ORDER_ATOMIC);
var statement_code=Blockly.JavaScript.statementToCode(block, "DO0" );
var code_piece=[];
code_piece=statement_code.split("\n");
for(var i=0;i<code_piece.length;i++){
if((code_piece[i].indexOf(" ") >= 0)){
code_piece[i]=code_piece[i].replace(" "," ");
}
}
statement_code=""
for(var i=0;i<code_piece.length;i++){
statement_code+=code_piece[i]+'\n'
}
var code="$.getJSON("+url+", function(data, status){\n\t"+statement_code+"\n"+"})\n"
return code;
};
Blockly.JavaScript.recieve_any_message=function(block) {
var code="MixIO.onMessage(function(topic,message){\n"+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.recieve_topic_message=function(block) {
var topic = Blockly.JavaScript.valueToCode(this, 'topic', Blockly.JavaScript.ORDER_ATOMIC);
var statement_code=Blockly.JavaScript.statementToCode(block, "DO0" );
var code_piece=[];
code_piece=statement_code.split("\n");
for(var i=0;i<code_piece.length;i++){
if((code_piece[i].indexOf(" ") >= 0)){
code_piece[i]=code_piece[i].replace(" "," ");
}
}
statement_code=""
for(var i=0;i<code_piece.length;i++){
statement_code+=code_piece[i]+'\n'
}
var code="MixIO.onMessage(function(topic,message){\n\t"+"if(topic === "+topic+"){\n"+statement_code+"\n"+"}})\n"
return code;
};
Blockly.JavaScript.alert=function(block) {
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.alert("+message+")\n"
return code;
};
Blockly.JavaScript.publish_message=function(block) {
var topic = Blockly.JavaScript.valueToCode(this, 'topic', Blockly.JavaScript.ORDER_ATOMIC);
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.publish("+topic+","+message+")\n"
return code;
};
Blockly.JavaScript.publish_project_message=function(block) {
var project = Blockly.JavaScript.valueToCode(this, 'project', Blockly.JavaScript.ORDER_ATOMIC);
var topic = Blockly.JavaScript.valueToCode(this, 'topic', Blockly.JavaScript.ORDER_ATOMIC);
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
var code="propublish("+project+","+topic+","+message+")\n"
return code;
};
Blockly.JavaScript.button_down=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BUTTON)\n"+".bind(MixIO.eventTags.BUTTON_PRESSED, function(){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.button_up=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BUTTON)\n"+".bind(MixIO.eventTags.BUTTON_LOOSED, function(){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.button_recieve_message=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BUTTON)\n"+".bind(MixIO.eventTags.BUTTON_CHANGED, function(event,message){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.button_switch=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var state = this.getFieldValue('state');
var code="MixIO.getInstance("+name+",MixIO.typeTags.BUTTON)\n"+".trigger(MixIO.actionTags.BUTTON_SWITCH,"+state+")\n";
return code;
};
Blockly.JavaScript.get_button_state=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BUTTON).isOn()";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.drag_slider=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.SLIDER)\n"+".bind(MixIO.eventTags.SLIDER_SLIDED, function(event,message){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.slider_recieve_message=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.SLIDER)\n"+".bind(MixIO.eventTags.SLIDER_CHANGED, function(event,message){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.change_slider=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var value = Blockly.JavaScript.valueToCode(this, 'value', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.SLIDER)\n"+".trigger(MixIO.actionTags.SLIDER_SEND,"+value+")\n"
return code;
};
Blockly.JavaScript.get_slider_num=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.SLIDER).getValue()";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.when_textinput_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.KEYBOARD)\n"+".bind(MixIO.eventTags.KEYBOARD_SENT, function(event,message){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.through_textinput_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.KEYBOARD)\n"+".trigger(MixIO.actionTags.KEYBOARD_SEND,"+message+")"
return code;
};
Blockly.JavaScript.when_joystick_dragged=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.JOYSTICK)\n"+".bind(MixIO.eventTags.JOYSTICK_CHANGED, function(event,x,y){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.get_keyboard_input=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.KEYBOARD).getText()";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.through_joystick_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var x = Blockly.JavaScript.valueToCode(this, 'x', Blockly.JavaScript.ORDER_ATOMIC);
var y = Blockly.JavaScript.valueToCode(this, 'y', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.JOYSTICK)\n"+".trigger(MixIO.actionTags.JOYSTICK_SEND,["+x+","+y+"])\n"
return code;
};
Blockly.JavaScript.get_joystick_x=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.JOYSTICK).getX()";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.get_joystick_y=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.JOYSTICK).getY()";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.RGB_selected=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.RGB_PICKER)\n"+".bind(MixIO.eventTags.RGB_PICKER_PICKED, function(event,R,G,B){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.RGB_recieved=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.RGB_PICKER)\n"+".bind(MixIO.eventTags.RGB_PICKER_CHANGED, function(event,R,G,B){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.through_RGB_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var R = Blockly.JavaScript.valueToCode(this, 'R', Blockly.JavaScript.ORDER_ATOMIC);
var G = Blockly.JavaScript.valueToCode(this, 'G', Blockly.JavaScript.ORDER_ATOMIC);
var B = Blockly.JavaScript.valueToCode(this, 'B', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.RGB_PICKER)\n"+".trigger(MixIO.actionTags.RGB_PICKER_SEND,["+R+","+G+","+B+"])\n"
return code;
};
Blockly.JavaScript.get_RGB_color=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.RGB_PICKER).getColor()";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.bulb_recieved=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BULB)\n"+".bind(MixIO.eventTags.BULB_CHANGED, function(event,message){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.bulb_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var message = this.getFieldValue('message');
var code="MixIO.getInstance("+name+",MixIO.typeTags.BULB)\n"+".trigger(MixIO.actionTags.BULB_CHANGE,"+message+")\n"
return code;
};
Blockly.JavaScript.get_bulb_state=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BULB).getStatus()";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.textLED_recieved=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.TEXT_SCREEN)\n"+".bind(MixIO.eventTags.TEXT_SCREEN_CHANGED, function(event,message){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.textLED_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.TEXT_SCREEN)\n"+".trigger(MixIO.actionTags.TEXT_SCREEN_CHANGE,"+message+")\n"
return code;
};
Blockly.JavaScript.get_textLED=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.TEXT_SCREEN).getText()";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.lineChart_recieved=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.LINE_CHART)\n"+".bind(MixIO.eventTags.LINE_CHART_CHANGED, function(event,time,value){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.lineChart_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.LINE_CHART)\n"+".trigger(MixIO.actionTags.LINE_CHART_CHANGE,"+message+")\n"
return code;
};
Blockly.JavaScript.clear_lineChart=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.LINE_CHART)\n"+".trigger(MixIO.actionTags.LINE_CHART_CLEAR)\n"
return code;
};
Blockly.JavaScript.get_all_messages=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.LINE_CHART).getAllMessages()"
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.get_N_messages=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var num = Blockly.JavaScript.valueToCode(this, 'num', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.LINE_CHART).getLatestMessages("+num+")"
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.get_latest_message=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.LINE_CHART).getLatestMessage()"
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.barChart_recieved=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BAR_CHART)\n"+".bind(MixIO.eventTags.BAR_CHART_CHANGED, function(event,message){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.barChart_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BAR_CHART)\n"+".trigger(MixIO.actionTags.BAR_CHART_CHANGE,"+message+")\n"
return code;
};
Blockly.JavaScript.clear_barChart=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BAR_CHART)\n"+".trigger(MixIO.actionTags.BAR_CHART_CLEAR)\n"
return code;
};
Blockly.JavaScript.get_now_messages=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BAR_CHART).getData()"
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.datasheet_recieved=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.DATA_TABLE)\n"+".bind(MixIO.eventTags.DATA_TABLE_CHANGED, function(event,message){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.datasheet_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var message=Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
message = '['+message+']';
var code="MixIO.getInstance("+name+",MixIO.typeTags.DATA_TABLE)\n"+".trigger(MixIO.actionTags.DATA_TABLE_CHANGE,"+message+")\n"
return code;
};
Blockly.JavaScript.clear_datasheet=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.DATA_TABLE)\n"+".trigger(MixIO.actionTags.DATA_TABLE_CLEAR)\n"
return code;
};
Blockly.JavaScript.get_datasheet_all_messages=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.DATA_TABLE).getData()"
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.dashboard_recieved=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.DASHBOARD)\n"+".bind(MixIO.eventTags.DASHBOARD_CHANGED, function(event,message){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.dashboard_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.DASHBOARD)\n"+".trigger(MixIO.actionTags.DASHBOARD_CHANGE,"+message+")\n"
return code;
};
Blockly.JavaScript.get_dashboard_now_messages=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.DASHBOARD).getValue()"
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.datamap_recieved=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.DATA_MAP)\n"+".bind(MixIO.eventTags.DATA_MAP_CHANGED, function(event,clientid,long,lat,message){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.datamap_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var long = Blockly.JavaScript.valueToCode(this, 'long', Blockly.JavaScript.ORDER_ATOMIC);
var lat = Blockly.JavaScript.valueToCode(this, 'lat', Blockly.JavaScript.ORDER_ATOMIC);
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.DATA_MAP)\n"+".trigger(MixIO.actionTags.DATA_MAP_CHANGE,{\n"
+"\tclientid:MixIO.getClientid(),\n"+"\tlong:"+long+",\n"+"\tlat:"+lat+",\n"+"\tmessage:"+message+"\n})\n"
return code;
};
Blockly.JavaScript.clear_datamap=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.DATA_MAP)\n"+".trigger(MixIO.actionTags.DATA_MAP_CLEAR)\n"
return code;
};
Blockly.JavaScript.ws_updated=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.WEATHER)\n"+".bind(MixIO.eventTags.WEATHER_SYNCED, function(event,district,weather_type,temperature,humidity,wind_dir,wind_class){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.ws_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.WEATHER)\n"+".bind(MixIO.eventTags.WEATHER_SENT, function(event,district,weather_type,temperature,humidity,wind_dir,wind_class){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.let_ws_update=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.WEATHER)\n"+".trigger(MixIO.actionTags.WEATHER_SYNC)\n"
return code;
};
Blockly.JavaScript.let_ws_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.WEATHER)\n"+".trigger(MixIO.actionTags.WEATHER_SEND)\n"
return code;
};
Blockly.JavaScript.get_ws_para=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var message = this.getFieldValue('message');
var code="MixIO.getInstance("+name+",MixIO.typeTags.WEATHER)"+".getData("+message+")"
return [code,Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.dicts_create_with = function() {
// Create a list with any number of elements of any type.
//var dropdown_type = this.getFieldValue('TYPE');
var varName = Blockly.JavaScript.variableDB_.getName(this.getFieldValue('VAR'),
Blockly.Variables.NAME_TYPE);
//var size=window.parseFloat(this.getFieldValue('SIZE'));
var code = new Array(this.itemCount_);
var default_value = '0';
for (var n = 0; n < this.itemCount_; n++) {
var keyName = this.getFieldValue('KEY' + n);
code[n] = keyName+":"+(Blockly.JavaScript.valueToCode(this, 'ADD' + n, Blockly.JavaScript.ORDER_NONE) || default_value);
}
var code = "var "+varName+'= '+ '{' + code.join(', ') + '}\n';
//var code =''+varName+'['+size+"]"+'='+ '{' + code.join(', ') + '};\n';
//Blockly.JavaScript.setups_['setup_lists'+varName] = code;
return code;
};
Blockly.JavaScript.dicts_keys = function() {
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var code='Object.keys('+varName+')';
return [code,Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.dicts_get = function() {
var dropdown_type = this.getFieldValue('TYPE');
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
//var size=window.parseFloat(this.getFieldValue('SIZE'));
var text = Blockly.JavaScript.valueToCode(this, 'KEY', Blockly.JavaScript.ORDER_ASSIGNMENT);
// var text=this.getFieldValue('KEY');
var code = varName+"[" + text + "]";
return [code,Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.dicts_get_default = function() {
var dropdown_type = this.getFieldValue('TYPE');
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
//var size=window.parseFloat(this.getFieldValue('SIZE'));
var text = Blockly.JavaScript.valueToCode(this, 'KEY', Blockly.JavaScript.ORDER_ASSIGNMENT);
var argument = Blockly.JavaScript.valueToCode(this, 'VAR', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
// var text=this.getFieldValue('KEY');
var code = varName+".get(" + text + ',' + argument + ")";
return [code,Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.dicts_add_or_change = function(){
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || 'mydict';
var text = Blockly.JavaScript.valueToCode(this, 'KEY', Blockly.JavaScript.ORDER_ASSIGNMENT);
// var text=this.getFieldValue('KEY');
var argument = Blockly.JavaScript.valueToCode(this, 'VAR', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var code=varName + "[" + text + "] = " + argument+'\n';
return code;
};
Blockly.JavaScript.dicts_delete = function() {
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || 'mydict';
var text = Blockly.JavaScript.valueToCode(this, 'KEY', Blockly.JavaScript.ORDER_ASSIGNMENT);
// var text=this.getFieldValue('KEY');
var code= "delete "+ varName+"[" + text + "]\n";
return code;
};
Blockly.JavaScript.dicts_update = function() {
var varName2 = Blockly.JavaScript.valueToCode(this, 'DICT2', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var code=varName+'.update(' + varName2 +')\n';
return code;
};
Blockly.JavaScript.dicts_clear = function() {
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var code=varName+' = {}\n';
return code;
};
Blockly.JavaScript.dicts_items = function() {
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var code=varName+'.items()';
return [code,Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.dicts_values = function() {
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var code='Object.values('+varName+')';
return [code,Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.dicts_length = function() {
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var code=varName + '.length';
return [code,Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.dicts_deldict = function() {
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var code='delete ' + varName + '\n';
return code;
};
Blockly.JavaScript.dicts_add_change_del = function(block){
var dict = Blockly.JavaScript.valueToCode(block, 'DICT',
Blockly.JavaScript.ORDER_MEMBER) || '[]';
var mode = block.getFieldValue('WHERE');
var where = block.getFieldValue('OP');
var KEY = Blockly.JavaScript.valueToCode(this, 'KEY', Blockly.JavaScript.ORDER_ASSIGNMENT);
// var text=this.getFieldValue('KEY');
switch (mode) {
case 'INSERT':
//var at2 = block.getFieldValue('AT2');
var at2 = Blockly.JavaScript.valueToCode(this, 'AT2', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var code = dict + "[" + KEY + "] = " + at2 + '\n'
break;
case 'DELETE':
var code = 'del ' + dict + "[" + KEY + "]\n"
break;
default:
throw 'Unhandled option (lists_setIndex2)';
}
return code;
};
Blockly.JavaScript.dicts_pop = function(){
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var text = Blockly.JavaScript.valueToCode(this, 'KEY', Blockly.JavaScript.ORDER_ASSIGNMENT);
// var text=this.getFieldValue('KEY');
var code=varName + ".pop(" + text + ")";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
}
Blockly.JavaScript.dicts_setdefault = function() {
var varName = Blockly.JavaScript.valueToCode(this, 'DICT', Blockly.JavaScript.ORDER_ASSIGNMENT) || 'mydict';
var text = Blockly.JavaScript.valueToCode(this, 'KEY', Blockly.JavaScript.ORDER_ASSIGNMENT);
// var text=this.getFieldValue('KEY');
var argument = Blockly.JavaScript.valueToCode(this, 'VAR', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var code= varName + ".setdefault"+ "(" + text + "," + argument + ")\n";
return code;
};
Blockly.JavaScript.dicts_create_with_noreturn = function() {
// Create a list with any number of elements of any type.
// var varName = Blockly.JavaScript.variableDB_.getName(this.getFieldValue('VAR'),
// Blockly.Variables.NAME_TYPE);
//var size=window.parseFloat(this.getFieldValue('SIZE'));
var code = new Array(this.itemCount_);
var default_value = '0';
for (var n = 0; n < this.itemCount_; n++) {
var keyName = this.getFieldValue('KEY' + n);
code[n] = keyName+":"+(Blockly.JavaScript.valueToCode(this, 'ADD' + n, Blockly.JavaScript.ORDER_NONE) || default_value);
}
// if (this.itemCount_!=1){
// Blockly.JavaScript.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ')\n';}
// else {
// Blockly.JavaScript.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ',)\n';}
if (this.itemCount_!=1){
var code = '{' + code.join(', ') + '}';}
else {
var code = '{' + code.join(', ') + ',}';}
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.dicts_todict = function() {
var str = Blockly.JavaScript.valueToCode(this, 'VAR', Blockly.JavaScript.ORDER_ATOMIC) || '0'
return ['dict('+str+')', Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.log_message=function(block) {
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.log("+message+")\n";
return code;
};
Blockly.JavaScript.setInterval=function(block) {
var time = Blockly.JavaScript.valueToCode(this, 'time', Blockly.JavaScript.ORDER_ATOMIC);
var statement_code=Blockly.JavaScript.statementToCode(block, "DO0" );
var code="MixIO.setInterval(function(){\n"+statement_code+"},"+time+")\n";
return code;
};
Blockly.JavaScript.setTimeout=function(block) {
var time = Blockly.JavaScript.valueToCode(this, 'time', Blockly.JavaScript.ORDER_ATOMIC);
var statement_code=Blockly.JavaScript.statementToCode(block, "DO0" );
var code="MixIO.setTimeout(function(){\n"+statement_code+"},"+time+")\n";
return code;
};
Blockly.JavaScript.current_time=function(block) {
var code="Date.now()"
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.current_time_string=function(block) {
var code="Date().toLocaleString()"
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.math_parse_int=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="parseInt("+name+")";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.math_parse_float=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="parseFloat("+name+")";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.get_long=function(block) {
var code="MixIO.getLong()";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.get_lati=function(block) {
var code="MixIO.getLati()";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.json2text=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="JSON.stringify("+name+")";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.text2json=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="JSON.parse("+name+")";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.get_accessToken = function(block) {
MixIO.get_accessToken = function(client_id,client_secret){
var accessToken = undefined;
$.ajax({
type: 'POST',
url: 'proxy',
async: false,
data: {
'url': 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+client_id+'&client_secret='+client_secret+'',
'data':{
}
},
success: function(data) {
accessToken = data.access_token;
},
error: function(xhr, type) {
MixIO.log(xhr);
}
});
return accessToken;
}
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var name2 = Blockly.JavaScript.valueToCode(this, 'name2', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.get_accessToken("+name+","+name2+")";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.translate = function(block) {
MixIO.translate = function(access_token, query, to, func){
var result = undefined;
$.ajax({
type: 'POST',
url: 'proxy',
data: {
'url': 'https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token='+access_token+'',
'data':{
"from":"auto",
"to":to,
"q":query
}
},
success: function(data) {
func(data)
},
error: function(xhr, type) {
MixIO.log(xhr);
}
});
}
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var name2 = Blockly.JavaScript.valueToCode(this, 'name2', Blockly.JavaScript.ORDER_ATOMIC);
var name3 = Blockly.JavaScript.valueToCode(this, 'name3', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.translate("+name+","+name2+","+name3+")";
var code="MixIO.translate("+name+","+name2+","+name3+",function(result){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.chat = function(block) {
MixIO.chat = function(access_token, message, history, func){
var result = undefined;
var allMessages = history;
allMessages.push({
"role": "user",
"content": message
})
$.ajax({
type: 'POST',
url: 'proxy',
data: {
'url': 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token='+access_token+'',
'data':{
"messages":allMessages
}
},
success: function(data) {
func(data)
},
error: function(xhr, type) {
MixIO.log(xhr);
}
});
}
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var name2 = Blockly.JavaScript.valueToCode(this, 'name2', Blockly.JavaScript.ORDER_ATOMIC);
var name3 = "[]";
var code="MixIO.chat("+name+","+name2+","+name3+")";
var code="MixIO.chat("+name+","+name2+","+name3+",function(result){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};

View File

@@ -1,423 +0,0 @@
// This file was automatically generated. Do not modify.
'use strict';
Blockly.Msg["ADD_COMMENT"] = "Add Comment";
Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'";
Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:";
Blockly.Msg["CLEAN_UP"] = "Clean up Blocks";
Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated
Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks";
Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block";
Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1";
Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2";
Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated
Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio";
Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend";
Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0).";
Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Colour";
Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette.";
Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated
Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour";
Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random.";
Blockly.Msg["COLOUR_RGB_BLUE"] = "blue";
Blockly.Msg["COLOUR_RGB_GREEN"] = "green";
Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated
Blockly.Msg["COLOUR_RGB_RED"] = "red";
Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with";
Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop.";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration.";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop.";
Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated
Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2";
Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements.";
Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated
Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4";
Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.";
Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block.";
Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block.";
Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated
Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block.";
Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else";
Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if";
Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if";
Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements.";
Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";
Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";
Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";
Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop";
Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do";
Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times";
Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times.";
Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until";
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while";
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements.";
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements.";
Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?";
Blockly.Msg["DELETE_BLOCK"] = "Delete Block";
Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable";
Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?";
Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks";
Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated
Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated
Blockly.Msg["DISABLE_BLOCK"] = "Disable Block";
Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate";
Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated
Blockly.Msg["ENABLE_BLOCK"] = "Enable Block";
Blockly.Msg["EXPAND_ALL"] = "Expand Blocks";
Blockly.Msg["EXPAND_BLOCK"] = "Expand Block";
Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs";
Blockly.Msg["HELP"] = "Help";
Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs";
Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated
Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated
Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated
Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated
Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated
Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated
Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated
Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated
Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated
Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated
Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated
Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated
Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated
Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated
Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated
Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated
Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated
Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated
Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated
Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated
Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated
Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated
Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated
Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated
Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated
Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated
Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated
Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated
Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated
Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated
Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated
Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated
Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated
Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated
Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated
Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated
Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente";
Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated
Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated
Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated
Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated
Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated
Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated
Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated
Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated
Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated
Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated
Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated
Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false";
Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated
Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false.";
Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true";
Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other.";
Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated
Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1";
Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true.";
Blockly.Msg["LOGIC_NULL"] = "null";
Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated
Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null.";
Blockly.Msg["LOGIC_OPERATION_AND"] = "and";
Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated
Blockly.Msg["LOGIC_OPERATION_OR"] = "or";
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true.";
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true.";
Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test";
Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated
Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false";
Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true";
Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";
Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated
Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number.";
Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated
Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated
Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated
Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";
Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2";
Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'.";
Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant";
Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";
Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated
Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3";
Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive).";
Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated
Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by";
Blockly.Msg["MATH_IS_EVEN"] = "is even";
Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative";
Blockly.Msg["MATH_IS_ODD"] = "is odd";
Blockly.Msg["MATH_IS_POSITIVE"] = "is positive";
Blockly.Msg["MATH_IS_PRIME"] = "is prime";
Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";
Blockly.Msg["MATH_IS_WHOLE"] = "is whole";
Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation";
Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2";
Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers.";
Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated
Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number";
Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number.";
Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated
Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list";
Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list.";
Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated
Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation";
Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction";
Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";
Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation";
Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2";
Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive.";
Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up";
Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down.";
Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root";
Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute";
Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number.";
Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated
Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated
Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated
Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated
Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated
Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions";
Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated
Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated
Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number.";
Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number.";
Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number.";
Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian).";
Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian).";
Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian).";
Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated
Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated
Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated
Blockly.Msg["NEW_VARIABLE"] = "Create variable...";
Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:";
Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated
Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated
Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated
Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated
Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated
Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated
Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated
Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated
Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated
Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated
Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated
Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated
Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated
Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated
Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated
Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated
Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated
Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated
Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated
Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated
Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated
Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated
Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated
Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated
Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated
Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated
Blockly.Msg["REDO"] = "Redo";
Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment";
Blockly.Msg["RENAME_VARIABLE"] = "Rename variable...";
Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:";
Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2";
Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'.";
Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE";
Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case.";
Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter";
Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end";
Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #";
Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated
Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter";
Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter";
Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated
Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2";
Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position.";
Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated
Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated
Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text.";
Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join";
Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block.";
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end";
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #";
Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter";
Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #";
Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text.";
Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated
Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text";
Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text";
Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3";
Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.";
Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated
Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty";
Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty.";
Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated
Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with";
Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items.";
Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1";
Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text.";
Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated
Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated
Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated
Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated
Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated
Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated
Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated
Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated
Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated
Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated
Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated
Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated
Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated
Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated
Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)";
Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text.";
Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated
Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated
Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated
Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated
Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends.";
Blockly.Msg["TODAY"] = "Today";
Blockly.Msg["UNDO"] = "Undo";
Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated
Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item";
Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated
Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated
Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated
Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated
Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated
Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists.";
Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'.";
Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated
Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated
Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"];
Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"];
Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"];
Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"];
Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"];
Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"];
Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"];
Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["MATH_HUE"] = "230";
Blockly.Msg["LOOPS_HUE"] = "120";
Blockly.Msg["LISTS_HUE"] = "260";
Blockly.Msg["LOGIC_HUE"] = "210";
Blockly.Msg["VARIABLES_HUE"] = "330";
Blockly.Msg["TEXTS_HUE"] = "160";
Blockly.Msg["PROCEDURES_HUE"] = "290";
Blockly.Msg["COLOUR_HUE"] = "20";
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";

View File

@@ -1,428 +0,0 @@
// This file was automatically generated. Do not modify.
'use strict';
Blockly.Msg["ADD_COMMENT"] = "Add Comment";
Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'";
Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:";
Blockly.Msg["CLEAN_UP"] = "Clean up Blocks";
Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings.";
Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks";
Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block";
Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1";
Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2";
Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp";
Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio";
Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend";
Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0).";
Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color";
Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette.";
Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com";
Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour";
Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random.";
Blockly.Msg["COLOUR_RGB_BLUE"] = "blue";
Blockly.Msg["COLOUR_RGB_GREEN"] = "green";
Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html";
Blockly.Msg["COLOUR_RGB_RED"] = "red";
Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with";
Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop.";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration.";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop.";
Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each";
Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2";
Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements.";
Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with";
Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4";
Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.";
Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block.";
Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block.";
Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse";
Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block.";
Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else";
Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if";
Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if";
Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements.";
Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";
Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";
Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";
Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop";
Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do";
Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times";
Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times.";
Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat";
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until";
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while";
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements.";
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements.";
Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?";
Blockly.Msg["DELETE_BLOCK"] = "Delete Block";
Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable";
Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?";
Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks";
Blockly.Msg["DIALOG_CANCEL"] = "Cancel";
Blockly.Msg["DIALOG_OK"] = "OK";
Blockly.Msg["DISABLE_BLOCK"] = "Disable Block";
Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate";
Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment";
Blockly.Msg["ENABLE_BLOCK"] = "Enable Block";
Blockly.Msg["EXPAND_ALL"] = "Expand Blocks";
Blockly.Msg["EXPAND_BLOCK"] = "Expand Block";
Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs";
Blockly.Msg["HELP"] = "Help";
Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs";
Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list";
Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records";
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list";
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block.";
Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with";
Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with";
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list.";
Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items.";
Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first";
Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end";
Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#";
Blockly.Msg["LISTS_GET_INDEX_GET"] = "get";
Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove";
Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last";
Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random";
Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove";
Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list.";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list.";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list.";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list.";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list.";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list.";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list.";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list.";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list.";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list.";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list.";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list.";
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end";
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #";
Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last";
Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";
Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first";
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end";
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #";
Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "";
Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list.";
Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item.";
Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item.";
Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item";
Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";
Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item";
Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.";
Blockly.Msg["LISTS_INLIST"] = "in list";
Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty";
Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty";
Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty.";
Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of";
Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1";
Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list.";
Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with";
Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times";
Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times.";
Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list";
Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1";
Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list.";
Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set";
Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as";
Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at";
Blockly.Msg["LISTS_SET_INDEX_SET"] = "set";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list.";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list.";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list.";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list.";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list.";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list.";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list.";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list.";
Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending";
Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending";
Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3";
Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list.";
Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case";
Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric";
Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic";
Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";
Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text";
Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list";
Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter.";
Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter.";
Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter";
Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false";
Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values";
Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false.";
Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true";
Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other.";
Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not";
Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1";
Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true.";
Blockly.Msg["LOGIC_NULL"] = "null";
Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type";
Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null.";
Blockly.Msg["LOGIC_OPERATION_AND"] = "and";
Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations";
Blockly.Msg["LOGIC_OPERATION_OR"] = "or";
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true.";
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true.";
Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test";
Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:";
Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false";
Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true";
Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";
Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+";
Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number.";
Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2";
Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2";
Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180.";
Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";
Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2";
Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'.";
Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant";
Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";
Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)";
Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3";
Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive).";
Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷";
Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by";
Blockly.Msg["MATH_IS_EVEN"] = "is even";
Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative";
Blockly.Msg["MATH_IS_ODD"] = "is odd";
Blockly.Msg["MATH_IS_POSITIVE"] = "is positive";
Blockly.Msg["MATH_IS_PRIME"] = "is prime";
Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";
Blockly.Msg["MATH_IS_WHOLE"] = "is whole";
Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation";
Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2";
Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers.";
Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×";
Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number";
Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number.";
Blockly.Msg["MATH_ONLIST_HELPURL"] = "";
Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list";
Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list.";
Blockly.Msg["MATH_POWER_SYMBOL"] = "^";
Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation";
Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction";
Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";
Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation";
Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2";
Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive.";
Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up";
Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down.";
Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root";
Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute";
Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number.";
Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-";
Blockly.Msg["MATH_TRIG_ACOS"] = "acos";
Blockly.Msg["MATH_TRIG_ASIN"] = "asin";
Blockly.Msg["MATH_TRIG_ATAN"] = "atan";
Blockly.Msg["MATH_TRIG_COS"] = "cos";
Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions";
Blockly.Msg["MATH_TRIG_SIN"] = "sin";
Blockly.Msg["MATH_TRIG_TAN"] = "tan";
Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number.";
Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number.";
Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number.";
Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian).";
Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian).";
Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian).";
Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable...";
Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable...";
Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable...";
Blockly.Msg["NEW_VARIABLE"] = "Create variable...";
Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:";
Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:";
Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "";
Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements";
Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:";
Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine";
Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'.";
Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine";
Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output.";
Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:";
Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'";
Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function...";
Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = "";
Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine";
Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something";
Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to";
Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output.";
Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine";
Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return";
Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output.";
Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters.";
Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition";
Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause";
Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value.";
Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition.";
Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:";
Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function.";
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs";
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function.";
Blockly.Msg["REDO"] = "Redo";
Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment";
Blockly.Msg["RENAME_VARIABLE"] = "Rename variable...";
Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:";
Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";
Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2";
Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'.";
Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE";
Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case.";
Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter";
Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end";
Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #";
Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text";
Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter";
Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter";
Blockly.Msg["TEXT_CHARAT_TAIL"] = "";
Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2";
Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position.";
Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings";
Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2";
Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text.";
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text.";
Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join";
Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block.";
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end";
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #";
Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter";
Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";
Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #";
Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "";
Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text.";
Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text";
Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text";
Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text";
Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3";
Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.";
Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";
Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty";
Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty.";
Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation";
Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with";
Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items.";
Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";
Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1";
Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text.";
Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text";
Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1";
Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value.";
Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";
Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number.";
Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text.";
Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message";
Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message";
Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings";
Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3";
Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text.";
Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text";
Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1";
Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text.";
Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)";
Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text.";
Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";
Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of";
Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of";
Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of";
Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends.";
Blockly.Msg["TODAY"] = "Today";
Blockly.Msg["UNDO"] = "Undo";
Blockly.Msg["UNNAMED_KEY"] = "unnamed";
Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item";
Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'";
Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get";
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable.";
Blockly.Msg["VARIABLES_SET"] = "set %1 to %2";
Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'";
Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set";
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input.";
Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists.";
Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'.";
Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace";
Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something...";
Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"];
Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"];
Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"];
Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"];
Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"];
Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"];
Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"];
Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["MATH_HUE"] = "230";
Blockly.Msg["LOOPS_HUE"] = "120";
Blockly.Msg["LISTS_HUE"] = "260";
Blockly.Msg["LOGIC_HUE"] = "210";
Blockly.Msg["VARIABLES_HUE"] = "330";
Blockly.Msg["TEXTS_HUE"] = "160";
Blockly.Msg["PROCEDURES_HUE"] = "290";
Blockly.Msg["COLOUR_HUE"] = "20";
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
Blockly.PARSE_INT = "parse int";
Blockly.PARSE_FLOAT = "parse float";
Blockly.GET_LONG = "get current longitude";
Blockly.GET_LATI = "get current latitude";

View File

@@ -1,568 +0,0 @@
// This file was automatically generated. Do not modify.
'use strict';
Blockly.Msg["ALERT_MESSAGE"] = "通知发布";
Blockly.Msg["ADD_COMMENT"] = "添加注释";
Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "不能删除变量“%1”因为它是函数“%2”定义的一部分";
Blockly.Msg["CHANGE_VALUE_TITLE"] = "更改值:";
Blockly.Msg["CLEAN_UP"] = "整理块";
Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "已收起的信息块内包含警告。";
Blockly.Msg["COLLAPSE_ALL"] = "折叠块";
Blockly.Msg["COLLAPSE_BLOCK"] = "折叠块";
Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "颜色1";
Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "颜色2";
Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated
Blockly.Msg["COLOUR_BLEND_RATIO"] = "比例";
Blockly.Msg["COLOUR_BLEND_TITLE"] = "混合";
Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "把两种颜色以一个给定的比例(0.0-1.0)进行混合。";
Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/颜色";
Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "从调色板中选择一种颜色。";
Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated
Blockly.Msg["COLOUR_RANDOM_TITLE"] = "随机颜色";
Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "随机选择一种颜色。";
Blockly.Msg["COLOUR_RGB_BLUE"] = "蓝色";
Blockly.Msg["COLOUR_RGB_GREEN"] = "绿色";
Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated
Blockly.Msg["COLOUR_RGB_RED"] = "红色";
Blockly.Msg["COLOUR_RGB_TITLE"] = "颜色";
Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须在0和100之间。";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "跳出循环";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "继续下一轮循环";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "跳出包含它的循环。";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "跳过本轮循环的剩余部分,并继进行续下一轮循环。";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "警告:这个块只能在循环内使用。";
Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated
Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "遍历列表 %2 里的每一项 %1";
Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "遍历列表中的每一项,将变量“%1”设为所选项并执行一些语句。";
Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated
Blockly.Msg["CONTROLS_FOR_TITLE"] = "变量 %1 从 %2 数到 %3 每次增加 %4";
Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "用变量%1记录从开始数值到终止数值之间的数值数值按指定间隔增加并执行指定的块。";
Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "在这个if语句块中增加一个条件。";
Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "在这个if语句块中添加一个最终的包括所有其余情况的条件。";
Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated
Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "增加、删除或重新排列各节来重新配置这个if语句块。";
Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "否则";
Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "否则如果";
Blockly.Msg["CONTROLS_IF_MSG_IF"] = "如果";
Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "如果值为真,执行一些语句。";
Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "如果值为真,则执行第一块语句。否则,则执行第二块语句。";
Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。";
Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。";
Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/For循环";
Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "执行";
Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "重复 %1 次";
Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "多次执行一些语句。";
Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "重复直到条件满足";
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "当条件满足时重复";
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "只要值为假,就一直循环执行一些语句。";
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "只要值为真,就一直循环执行一些语句。";
Blockly.Msg["DELETE_ALL_BLOCKS"] = "删除所有 %1 个块吗?";
Blockly.Msg["DELETE_BLOCK"] = "删除块";
Blockly.Msg["DELETE_VARIABLE"] = "删除变量“%1”";
Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "要删除对变量“%2”的%1个引用吗";
Blockly.Msg["DELETE_X_BLOCKS"] = "删除 %1 个块";
Blockly.Msg["DIALOG_CANCEL"] = "取消";
Blockly.Msg["DIALOG_OK"] = "确认";
Blockly.Msg["DISABLE_BLOCK"] = "禁用块";
Blockly.Msg["DUPLICATE_BLOCK"] = "复制";
Blockly.Msg["DUPLICATE_COMMENT"] = "复制注释";
Blockly.Msg["ENABLE_BLOCK"] = "启用块";
Blockly.Msg["EXPAND_ALL"] = "展开块";
Blockly.Msg["EXPAND_BLOCK"] = "展开块";
Blockly.Msg["EXTERNAL_INPUTS"] = "外部输入";
Blockly.Msg["HELP"] = "帮助";
Blockly.Msg["INLINE_INPUTS"] = "单行输入";
Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "创建空列表";
Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "返回一个列表,长度为 0不包含任何数据记录";
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "列表";
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "增加、删除或重新排列各部分以此重新配置这个列表块。";
Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with";
Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "创建列表,内容:";
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "将一个项添加到列表中。";
Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "建立一个具有任意数量项目的列表。";
Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "第一项";
Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "倒数第#项";
Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#";
Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得";
Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得并移除";
Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最后一项";
Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "随机的一项";
Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "移除";
Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "-";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "返回列表中的第一项。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "返回在列表中的指定位置的项。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "返回列表中的最后一项。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "返回列表中的随机一项。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "移除并返回列表中的第一项。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "移除并返回列表中的指定位置的项。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "移除并返回列表中的最后一项。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "移除并返回列表中的随机一项。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "移除列表中的第一项";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "移除在列表中的指定位置的项。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "移除列表中的最后一项";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "删除列表中的随机一项。";
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "到倒数第#项";
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "到第#项";
Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "到最后一项";
Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "获取子列表,从第一项";
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "获取子列表,从倒数第#项";
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "获取子列表,从第#项";
Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "-";
Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "复制列表中指定的部分。";
Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1是最后一项。";
Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1是第一项。";
Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "寻找第一次出现的项";
Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated
Blockly.Msg["LISTS_INDEX_OF_LAST"] = "寻找最后一次出现的项";
Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。";
Blockly.Msg["LISTS_INLIST"] = "在列表中";
Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated
Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1是空的";
Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "如果改列表为空,则返回真。";
Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated
Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1的长度";
Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "返回列表的长度。";
Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
Blockly.Msg["LISTS_REPEAT_TITLE"] = "建立列表使用项 %1 重复 %2 次";
Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "建立包含指定重复次数的值的列表。";
Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list";
Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "倒转%1";
Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "倒转一个列表,返回副本。";
Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated
Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "值为";
Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "插入在";
Blockly.Msg["LISTS_SET_INDEX_SET"] = "设置";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "在列表的起始处添加该项。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "在列表中指定位置插入项。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "在列表的末尾处添加该项。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "在列表的随机位置插入该项。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "设置列表中的第一项。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "设置在列表中指定位置的项。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "设置列表中的最后一项。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "设置列表中的随机一项。";
Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "升序";
Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降序";
Blockly.Msg["LISTS_SORT_TITLE"] = "排序%1 %2 %3";
Blockly.Msg["LISTS_SORT_TOOLTIP"] = "排序一个列表,返回副本。";
Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "按字母(忽略大小写)";
Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "按数字";
Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "按字母";
Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";
Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "从文本制作列表";
Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "将列表合并为文本";
Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "加入文本列表至一个文本,由分隔符分隔。";
Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "将文本按指定的分隔符拆分为文本组成的列表。";
Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "分隔符:";
Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "假";
Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated
Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "返回真或假。";
Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "真";
Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/不等";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "如果两个输入结果相等,则返回真。";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "如果第一个输入结果比第二个大,则返回真。";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "如果第一个输入结果大于或等于第二个输入结果,则返回真。";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "如果第一个输入结果比第二个小,则返回真。";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "如果第一个输入结果小于或等于第二个输入结果,则返回真。";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "如果两个输入结果不相等,则返回真。";
Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not";
Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1不成立";
Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "如果输入结果为假,则返回真;如果输入结果为真,则返回假。";
Blockly.Msg["LOGIC_NULL"] = "空";
Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated
Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "返回空值。";
Blockly.Msg["LOGIC_OPERATION_AND"] = "并且";
Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated
Blockly.Msg["LOGIC_OPERATION_OR"] = "或";
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "如果两个输入结果都为真,则返回真。";
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "如果至少有一个输入结果为真,则返回真。";
Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "断言";
Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://zh.wikipedia.org/wiki/条件运算符";
Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "如果为假";
Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "如果为真";
Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "检查“断言”里的条件语句。如果条件为真,则返回“如果为真”的值,否则,则返回“如果为假”的值。";
Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated
Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/算术";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "返回两个数值的和。";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "返回两个数值的商。";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "返回两个数值的差。";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "返回两个数值的乘积。";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "返回以第一个数值为底数,以第二个数值为幂的结果。";
Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://zh.wikipedia.org/wiki/反正切2";
Blockly.Msg["MATH_ATAN2_TITLE"] = "点(x:%1,y:%2)的方位角";
Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "返回点XY的反正切值范围为-180到180度。";
Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法";
Blockly.Msg["MATH_CHANGE_TITLE"] = "将 %1 增加 %2";
Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "为变量“%1”增加一个数值。";
Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/数学常数";
Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "返回一个常见常量:π (3.141…)、e (2.718…)、φ (1.618…)、根号2 (1.414…)、根号二分之一 (0.707…)或∞ (无穷大)。";
Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated
Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "将 %1 限制在 最低 %2 到最高 %3 之间";
Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "将一个数值限制在两个指定的数值范围(含边界)之间。";
Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated
Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "可被整除";
Blockly.Msg["MATH_IS_EVEN"] = "是偶数";
Blockly.Msg["MATH_IS_NEGATIVE"] = "是负数";
Blockly.Msg["MATH_IS_ODD"] = "是奇数";
Blockly.Msg["MATH_IS_POSITIVE"] = "是正数";
Blockly.Msg["MATH_IS_PRIME"] = "是质数";
Blockly.Msg["MATH_IS_TOOLTIP"] = "检查一个数值是否是偶数、奇数、质数、自然数、正数、负数或者是否能被某数整除。返回真或假。";
Blockly.Msg["MATH_IS_WHOLE"] = "是整数";
Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/模除";
Blockly.Msg["MATH_MODULO_TITLE"] = "取 %1 ÷ %2 的余数";
Blockly.Msg["MATH_MODULO_TOOLTIP"] = "返回这两个数字相除后的余数。";
Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated
Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/数";
Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "一个数值。";
Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated
Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "列表平均值";
Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "列表最大值";
Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "列表中位数";
Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "列表最小值";
Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "列表中的众数";
Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "列表中的随机一项";
Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "列表的标准差";
Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "列表中数值的和";
Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "返回列表中的数值的平均值。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "返回列表中最大值。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "返回列表中数值的中位数。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "返回列表中最小值。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "返回列表中的出现次数最多的项的列表。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "从列表中返回一个随机的元素。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回列表的标准差。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回列表中的所有数值的和。";
Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated
Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/随机数生成器";
Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "随机小数";
Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "返回一个从0.0到1.0(不含)之间的随机数。";
Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://zh.wikipedia.org/wiki/随机数生成器";
Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "从 %1 到 %2 范围内的随机整数";
Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "返回一个限制在两个指定数值的范围(含边界)之间的随机整数。";
Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/数值修约";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四舍五入";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "向下舍入";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "向上舍入";
Blockly.Msg["MATH_ROUND_TOOLTIP"] = "数字向上或向下舍入。";
Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根";
Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "绝对值";
Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "平方根";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回一个数值的绝对值。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回一个数值的e次幂。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "返回一个数值的自然对数。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "返回一个数值的以10为底的对数。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "返回一个数值的相反数。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "返回一个数值的10次幂。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回一个数的平方根。";
Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated
Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated
Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated
Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated
Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated
Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函数";
Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated
Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated
Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "返回一个数值的反余弦值。";
Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "返回一个数值的反正弦值。";
Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回一个数值的反正切值。";
Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回指定角度的余弦值(非弧度)。";
Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回指定角度的正弦值(非弧度)。";
Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回指定角度的正切值(非弧度)。";
Blockly.Msg["NEW_COLOUR_VARIABLE"] = "创建颜色变量...";
Blockly.Msg["NEW_NUMBER_VARIABLE"] = "创建数字变量...";
Blockly.Msg["NEW_STRING_VARIABLE"] = "创建字符串变量...";
Blockly.Msg["NEW_VARIABLE"] = "创建变量...";
Blockly.Msg["NEW_VARIABLE_TITLE"] = "新变量的名称:";
Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新变量的类型:";
Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "-";
Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允许声明";
Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "参数:";
Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序";
Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "运行用户定义的函数“%1”。";
Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序";
Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "运行用户定义的函数“%1”并使用它的输出值。";
Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "参数:";
Blockly.Msg["PROCEDURES_CREATE_DO"] = "创建“%1”";
Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "描述该功能...";
Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = "-";
Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序";
Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "函数名";
Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "";
Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "创建一个不带输出值的函数。";
Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序";
Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返回";
Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "创建一个有输出值的函数。";
Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告:此函数具有重复参数。";
Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "突出显示函数定义";
Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause";
Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "如果值为真,则返回第二个值。";
Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告:这个块只能在函数内部使用。";
Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "输入名称:";
Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "添加函数输入。";
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "输入";
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、移除或重新排此函数的输入。";
Blockly.Msg["REDO"] = "重做";
Blockly.Msg["REMOVE_COMMENT"] = "删除注释";
Blockly.Msg["RENAME_VARIABLE"] = "重命名变量...";
Blockly.Msg["RENAME_VARIABLE_TITLE"] = "将所有“%1”变量重命名为:";
Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
Blockly.Msg["TEXT_APPEND_TITLE"] = "在%1之后加上文本%2";
Blockly.Msg["TEXT_APPEND_TO"] = "向";
Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "将一些文本追加到变量“%1”里。";
Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "转为小写";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "转为首字母大写";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "转为大写";
Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "用不同的大小写模式复制并返回这段文字。";
Blockly.Msg["TEXT_CHARAT_FIRST"] = "获取第一个字符";
Blockly.Msg["TEXT_CHARAT_FROM_END"] = "获取倒数第#个字符";
Blockly.Msg["TEXT_CHARAT_FROM_START"] = "获取第#个字符";
Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated
Blockly.Msg["TEXT_CHARAT_LAST"] = "获取最后一个字符";
Blockly.Msg["TEXT_CHARAT_RANDOM"] = "获取随机一个字符";
Blockly.Msg["TEXT_CHARAT_TAIL"] = "-";
Blockly.Msg["TEXT_CHARAT_TITLE"] = "在文本%1 里 %2";
Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "返回位于指定位置的字符。";
Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings";
Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "计算%1在%2里出现的次数";
Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "计算在一段文本中,某个部分文本重复出现了多少次。";
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "将一个项添加到文本中。";
Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "拼接";
Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、移除或重新排列各节来重新配置这个文本块。";
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到倒数第#个字符";
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到第#个字符";
Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到最后一个字符";
Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "从文本";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "获取子串,从第一个字符";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "获取子串,从倒数第#个字符";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "获取子串,从第#个字符";
Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "-";
Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "返回文本中指定的一部分。";
Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated
Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "寻找第一次出现的文本";
Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "寻找最后一次出现的文本";
Blockly.Msg["TEXT_INDEXOF_TITLE"] = "在文本 %1 里 %2 %3";
Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "返回第一个文本段在第二个文本段中的第一/最后一个匹配项的起始位置。如果未找到,则返回%1。";
Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated
Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1是空的";
Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "如果给定的文本为空,则返回真。";
Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated
Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "创建文本,内容:";
Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "通过串起任意数量的项以建立一段文本。";
Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1的长度";
Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "返回给定文本的字母数(包括空格)。";
Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated
Blockly.Msg["TEXT_PRINT_TITLE"] = "输出%1";
Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "输出指定的文字、数字或其他值。";
Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated
Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "要求用户输入数字。";
Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "要求用户输入一些文本。";
Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "要求输入数字,并显示提示消息";
Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "要求输入文本,并显示提示消息";
Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings";
Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "把%3中的%1替换为%2";
Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "在一段文本中,将出现过的某部分文本都替换掉。";
Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text";
Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "倒转文本%1";
Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "将文本中各个字符的顺序倒转。";
Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://zh.wikipedia.org/wiki/字符串";
Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "一个字、词语或一行文本。";
Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated
Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "消除其两侧的空白";
Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "消除其左侧的空白";
Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "消除其右侧的空白";
Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "从某一端或同时从两端删除多余的空白,并返回这段文字的一个副本。";
Blockly.Msg["TODAY"] = "今天";
Blockly.Msg["UNDO"] = "撤销";
Blockly.Msg["UNNAMED_KEY"] = "未命名";
Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "项目";
Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "创建“设定%1”";
Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "返回此变量的值。";
Blockly.Msg["VARIABLES_SET"] = "赋值 %1 为 %2";
Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "创建“获得%1”";
Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "设置此变量,以使它和输入值相等。";
Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "名字叫“%1”的变量已经存在了。";
Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "名字叫“%1”的变量已经有了另一个类型“%2”。";
Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作区";
Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "说点什么...";
Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"];
Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"];
Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"];
Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"];
Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"];
Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"];
Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"];
Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["MATH_HUE"] = "230";
Blockly.Msg["LOOPS_HUE"] = "120";
Blockly.Msg["LISTS_HUE"] = "260";
Blockly.Msg["LOGIC_HUE"] = "210";
Blockly.Msg["VARIABLES_HUE"] = "330";
Blockly.Msg["TEXTS_HUE"] = "160";
Blockly.Msg["PROCEDURES_HUE"] = "290";
Blockly.Msg["COLOUR_HUE"] = "20";
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
Blockly.MESSAGE="消息"
Blockly.RECEIVE="当收到";
Blockly.ANY_MESSAGE="任意消息时";
Blockly.TOPIC_MESSAGE="主题消息时";
Blockly.PUBLISH_MESSAGE="主题发布";
Blockly.GETREQ="GET请求";
Blockly.POSTREQ="POST请求";
Blockly.USEDATA="使用数据";
Blockly.WAITREQ="并等待响应";
Blockly.WAITJSONREQ="并等待JSON响应";
Blockly.BUTTON_DOWN="按键被按下时";
Blockly.BUTTON_UP="按键/开关被松开时";
Blockly.BUTTON_RECIEVE_MESSAGE="开关收到消息时";
Blockly.BUTTON_SWITCH="切换";
Blockly.BUTTON_SWITCH_STATE="开关的状态";
Blockly.DRAG_SLIDER="滑杆被拖动时";
Blockly.SLIDER_RECIEVE_MESSAGE="滑杆收到消息时";
Blockly.SLIDER_NUM_IS="滑杆数值为";
Blockly.SLIDER_NUM="滑杆的数值";
Blockly.WHEN_TEXTINPUT_SEND="文本输入发送消息时";
Blockly.THROUGH="通过";
Blockly.TEXTINPUT_SEND="文本输入发送消息";
Blockly.JOYSTICK_DRAGGED="摇杆被拖动时";
Blockly.JOYSTICK_SENDXY="摇杆发送位置消息";
Blockly.JOYSTICK_X="摇杆的横坐标";
Blockly.JOYSTICK_Y="摇杆的纵坐标";
Blockly.RGB_COLOR_SELECTED="RGB色盘被选色时";
Blockly.RGB_MESSAGE_RECIEVED="RGB色盘收到消息时";
Blockly.RGB_SEND="RGB色盘发送消息";
Blockly.RGB_NOW_COLOR="RGB色盘的当前颜色";
Blockly.BULB_RECIEVED_MESSAGE="指示灯收到消息时";
Blockly.TO="向";
Blockly.SEND_MESSAGE="指示灯发送消息";
Blockly.BULB_NOW_STATE="指示灯的当前状态";
Blockly.LED_RECIEVED_MESSAGE="文本显示屏收到消息时";
Blockly.TEXTLED_SEND_MESSAGE="文本显示屏发送消息";
Blockly.TEXTLED_NOW="文本显示屏的当前显示";
Blockly.LINECHART_RECIEVED="折线图表收到消息时";
Blockly.LINECHART_SEND_MESSAGE="折线图表发送消息";
Blockly.LET="令";
Blockly.CLEAR_LINECHART="折线图表清空";
Blockly.LINECHART_ALL_MESSAGE="折线图表的全部历史消息";
Blockly.LINECHART_N_MESSAGE="折线图表的至多前";
Blockly.LINECHART_MESSAGE="条消息";
Blockly.LINECHART_LATEST_MESSAGE="折线图表的最新一条消息";
Blockly.BARCHART_RECIEVED="柱状图收到消息时";
Blockly.BARCHART_SEND_MESSAGE="柱状图发送消息";
Blockly.CLEAR_BARCHART="柱状图表清空";
Blockly.BARCHART_NOW_MESSAGE="柱状图表的当前数据";
Blockly.DATASHEET_RECIEVED="数据表格收到消息时";
Blockly.DATASHEET_SEND_MESSAGE="数据表格发送消息";
Blockly.CLEAR_DATASHEET="数据表格清空";
Blockly.DATASHEET_ALL_MESSAGE="数据表格的全部数据";
Blockly.DASHBOARD_RECIEVED="仪表盘收到消息时";
Blockly.DASHBOARD_SEND_MESSAGE="仪表盘发送消息";
Blockly.DASHBOARD_NOW_MESSAGE="仪表盘的当前值";
Blockly.DATAMAP_RECIEVED="数据地图收到消息时";
Blockly.DATAMAP="数据地图";
Blockly.DATAMAP_LONG="经度";
Blockly.DATAMAP_LAT="纬度";
Blockly.DATAMAP_SEND_MESSAGE="发送消息列表";
Blockly.CLEAR_DATAMAP="数据地图清空";
Blockly.WS_UPDATED="气象仪更新数据时";
Blockly.WS_SEND="气象仪发送数据时";
Blockly.LET_WS_UPDATE="气象仪更新数据";
Blockly.LET_WS_SEND="气象仪下发数据";
Blockly.WS_PARA="气象仪的";
Blockly.WS_INFO="信息";
Blockly.MIXLY_MICROPYTHON_SOCKET_TO="至";
Blockly.MIXLY_MICROBIT_JS_CURRENT = "当";
Blockly.MIXLY_MICROBIT_PY_STORAGE_GET = "获取";
Blockly.MIXLY_LENGTH = "的长度"
Blockly.Msg.DICTS_CREATE_EMPTY_TITLE = "初始化为空字典";
Blockly.Msg.DICTS_CREATE_EMPTY_TOOLTIP = "返回一个空字典,长度为 0不包含任何数据记录";
Blockly.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP = "增加、删除或重新排列各部分以此重新配置这个字典块。";
Blockly.Msg.DICTS_CREATE_WITH_INPUT_WITH = "初始化字典为";
Blockly.Msg.DICTS_CREATE_WITH_ITEM_TITLE = "条目"
Blockly.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP = "将一个项添加到字典中。";
Blockly.Msg.DICTS_CREATE_WITH_TOOLTIP = "建立一个具有任意数量项目的字典。";
Blockly.Msg.DICTS_CREATE_WITH_ITEM_KEY = "key"
Blockly.Msg.DICT_KEYS = "获取所有键";
Blockly.Msg.DICTS_KEYS_TOOLTIP = "返回一个列表,包括一个字典所有的键";
Blockly.Msg.DICTS_GET_FROM_DICTS = "从字典";
Blockly.Msg.DICTS_GET_IN = "获取键";
Blockly.Msg.DICTS_GET_TOOLTIP = "获取字典中某个键的对应值若键名称不存在则触发KeyError";
Blockly.Msg.DICTS_GET_DEFAULT_TOOLTIP = "获取字典中某个键的对应值,若键名称不存在则返回默认值";
Blockly.Msg.DICTS_ADD_in_DICT = "在字典";
Blockly.Msg.DICTS_ADD = "中添加或修改条目 键";
Blockly.Msg.DICTS_ADD_VALUE = "对应值";
Blockly.Msg.DICTS_ADD_OR_CHANGE_TOOLTIP = "在字典中添加或删除条目";
Blockly.Msg.DICTS_DELETE_IN = "中删除条目 键";
Blockly.Msg.DICTS_DELETE_VALUE = "及对应值";
Blockly.Msg.DICTS_DELETE_TOOLTIP = "删除字典中某个条目";
Blockly.Msg.DICT_CLEAR = "清空字典中所有条目";
Blockly.Msg.DICT_ITEMS = "字典转化为列表";
Blockly.Msg.DICTS_ITEMS_TOOLTIP = "返回一个列表,包括一个字典可遍历的所有键和对应值";
Blockly.Msg.DICT_VALUES = "获取所有键对应的值";
Blockly.Msg.DICTS_VALUES_TOOLTIP = "返回一个列表,包括一个字典所有键的对应值";
Blockly.Msg.DICTS_LENGTH_TOOLTIP = "返回字典的长度,即键的个数";
Blockly.Msg.DICT_DELDICT = "删除字典";
Blockly.Msg.PRINT_MESSAGE="输出打印";
Blockly.Msg.EVERY="每隔";
Blockly.Msg.MILLISECOND="毫秒";
Blockly.Msg.AFTER="后";
Blockly.Msg.CURRENT_TIME="获取当前时间";
Blockly.MIXLY_CHANGE = "改变"
Blockly.PARSE_INT = "转为整数";
Blockly.PARSE_FLOAT = "转为浮点数";
Blockly.GET_LONG = "获取当前经度";
Blockly.GET_LATI = "获取当前纬度";
Blockly.GET_KEYBOARD_INPUT="文本输入的文本";
Blockly.JSON2TEXT = "字典转文本";
Blockly.TEXT2JSON = "文本转字典";
Blockly.USEAPIKEY = "使用百度API Key";
Blockly.USESECRETKEY = "和Secret Key";
Blockly.GETTOKEN = "获取的Access Token";
Blockly.TRANSORIGIN = "使用Access Token";
Blockly.USETEXT = "将文本";
Blockly.USETEXT2 = "使用文本";
Blockly.BOT = "与文心一言对话";
Blockly.TOLANG = "翻译为";
Blockly.PARA1 = ",参数: result";

View File

@@ -1,430 +0,0 @@
// This file was automatically generated. Do not modify.
'use strict';
Blockly.Msg["ADD_COMMENT"] = "加入註解";
Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "無法刪除變數「%1」因為這是功能「%2」定義的一部份內容";
Blockly.Msg["CHANGE_VALUE_TITLE"] = "修改值:";
Blockly.Msg["CLEAN_UP"] = "整理積木";
Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "收合含有警告的區塊。";
Blockly.Msg["COLLAPSE_ALL"] = "收合積木";
Blockly.Msg["COLLAPSE_BLOCK"] = "收合區塊";
Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "顏色 1";
Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "顏色 2";
Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated
Blockly.Msg["COLOUR_BLEND_RATIO"] = "比例";
Blockly.Msg["COLOUR_BLEND_TITLE"] = "混合";
Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "用一個給定的比率0.0-1.0)混合兩種顏色。";
Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/顏色";
Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "從調色板中選擇一種顏色。";
Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated
Blockly.Msg["COLOUR_RANDOM_TITLE"] = "隨機顏色";
Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "隨機選擇一種顏色。";
Blockly.Msg["COLOUR_RGB_BLUE"] = "藍";
Blockly.Msg["COLOUR_RGB_GREEN"] = "綠";
Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated
Blockly.Msg["COLOUR_RGB_RED"] = "紅";
Blockly.Msg["COLOUR_RGB_TITLE"] = "顏色";
Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "透過指定紅、綠、 藍色的值來建立一種顏色。所有的值必須介於 0 和 100 之間。";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "中斷循環";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "繼續下一個循環";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "中斷當前的循環。";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "跳過這個循環的其餘步驟,並繼續下一次的循環。";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "警告:此區塊僅可用於循環內。";
Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated
Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "為列表 %2 裡的每一項 %1";
Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "遍歷每個清單中的項目,將變數「%1」設定到該項目中然後執行某些陳述式。";
Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated
Blockly.Msg["CONTROLS_FOR_TITLE"] = "循環計數 %1 從 %2 到 %3 每次增加 %4";
Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "從起始數到結尾數中取出變數「%1」的值按指定的時間間隔執行指定的區塊。";
Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "添加條件到「如果」積木。";
Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "加入一個最終、所有條件都執行的部份到「如果」區塊中。";
Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated
Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個「如果」區塊。";
Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "否則";
Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "否則,如果";
Blockly.Msg["CONTROLS_IF_MSG_IF"] = "如果";
Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "當值為 true 時,執行一些陳述式。";
Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "當值為 true 時,執行第一個陳述式。否則,執行第二個陳述式。";
Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "如果第一個值為 true則執行第一個陳述式。否則當第二個值為 true 時,則執行第二個陳述式。";
Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "如果第一個值為 true則執行第一個陳述式。否則當第二個值為 true 時,則執行第二個陳述式。如果前幾個敘述都不為 ture則執行最後一個陳述式。";
Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/For迴圈";
Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "執行";
Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "重複%1次";
Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "重複執行指定的陳述式多次。";
Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "重複直到";
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "重複,當";
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "當值為 false 時,執行一些陳述式。";
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "當值為 true 時,執行一些陳述式。";
Blockly.Msg["DELETE_ALL_BLOCKS"] = "刪除全部 %1 個區塊?";
Blockly.Msg["DELETE_BLOCK"] = "刪除區塊";
Blockly.Msg["DELETE_VARIABLE"] = "刪除變數「%1」";
Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "刪除使用%1次的「%2」變數";
Blockly.Msg["DELETE_X_BLOCKS"] = "刪除%1個積木";
Blockly.Msg["DIALOG_CANCEL"] = "取消";
Blockly.Msg["DIALOG_OK"] = "確定";
Blockly.Msg["DISABLE_BLOCK"] = "停用區塊";
Blockly.Msg["DUPLICATE_BLOCK"] = "複製";
Blockly.Msg["DUPLICATE_COMMENT"] = "複製註解";
Blockly.Msg["ENABLE_BLOCK"] = "啟用積木";
Blockly.Msg["EXPAND_ALL"] = "展開積木";
Blockly.Msg["EXPAND_BLOCK"] = "展開區塊";
Blockly.Msg["EXTERNAL_INPUTS"] = "外部輸入";
Blockly.Msg["HELP"] = "說明";
Blockly.Msg["INLINE_INPUTS"] = "單行輸入";
Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated
Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "建立空的清單";
Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "返回一個長度(項目數量)為 0 的清單,不包含任何資料記錄";
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "清單";
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個清單區塊。";
Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "使用這些值建立清單";
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "添加一個項目到清單裡。";
Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "建立一個具備任意數量項目的清單。";
Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "第一筆";
Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "倒數第 # 筆";
Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated
Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得";
Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得並移除";
Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最後一筆";
Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "隨機";
Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "移除";
Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "返回清單中的第一個項目。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "返回在清單中指定位置的項目。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "返回清單中的最後一個項目。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "返回清單中隨機一個項目。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "移除並返回清單中的第一個項目。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "移除並返回清單中的指定位置的項目。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "移除並返回清單中的最後一個項目。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "移除並返回清單中的隨機項目。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "移除清單中的第一個項目。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "移除在清單中指定位置的項目。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "移除清單中的最後一個項目。";
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "移除清單中隨機一個項目。";
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "到 # 倒數";
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "到 #";
Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "到 最後面";
Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "取得子清單 從 最前面";
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "取得子清單 從 # 倒數";
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "取得子清單 從 #";
Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "複製清單中指定的部分。";
Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 是最後一個項目。";
Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 是第一個項目。";
Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "從 最前面 索引項目";
Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated
Blockly.Msg["LISTS_INDEX_OF_LAST"] = "從 最後面 索引項目";
Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "在清單中檢索是否有包含項目,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。";
Blockly.Msg["LISTS_INLIST"] = "自清單";
Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated
Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 值為空";
Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "如果該清單為空,則返回 true。";
Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated
Blockly.Msg["LISTS_LENGTH_TITLE"] = "長度 %1";
Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "返回清單的長度(項目數)。";
Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
Blockly.Msg["LISTS_REPEAT_TITLE"] = "建立清單使用項目 %1 重複 %2 次";
Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "建立一個清單,項目中包含指定重複次數的值。";
Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list";
Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "反轉%1";
Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "反轉清單的複製內容。";
Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated
Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "為";
Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "添加";
Blockly.Msg["LISTS_SET_INDEX_SET"] = "設定";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "添加一個項目到清單中的第一個位置。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "添加一個項目到清單中的指定位置。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "添加一個項目到清單中的最後一個位置。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "添加一個項目到清單中的隨機位置。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "設定清單中的第一個項目。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "設定清單中指定位置的項目。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "設定清單中的最後一個項目。";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "設定清單中隨機一個項目。";
Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "升序";
Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降序";
Blockly.Msg["LISTS_SORT_TITLE"] = "排列 %1 %2 %3";
Blockly.Msg["LISTS_SORT_TOOLTIP"] = "排序清單的複製內容。";
Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "依字母排序,忽略大小寫";
Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "依數字";
Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "依字母";
Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated
Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "從文本製作清單";
Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "從清單拆出文本";
Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "串起清單項目成一個文本,並用分隔符號分開。";
Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "將文本變成清單項目,按分隔符號拆分。";
Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "用分隔符";
Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "假";
Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated
Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "返回真或假。";
Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "真";
Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/不等";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "如果這兩個輸入區塊的結果相等,返回 true。";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "如果第一個輸入結果大於第二個,返回 true。";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "如果第一個輸入結果大於或等於第二個,返回 true。";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "如果第一個輸入結果比第二個小,返回 true。";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "如果第一個輸入結果小於或等於第二個,返回 true。";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "如果這兩個輸入區塊的結果不相等,返回 true。";
Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated
Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 不成立";
Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "如果輸入結果是 false則返回 true。如果輸入結果是 true則返回 false。";
Blockly.Msg["LOGIC_NULL"] = "空";
Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated
Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "返回空值。";
Blockly.Msg["LOGIC_OPERATION_AND"] = "和";
Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated
Blockly.Msg["LOGIC_OPERATION_OR"] = "或";
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "如果兩個輸入結果都為 true則返回 true。";
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "如果至少一個輸入結果為 true返回 true。";
Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "測試";
Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://zh.wikipedia.org/wiki/條件運算符";
Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "如果為假";
Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "如果為真";
Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "檢查「測試」中的條件。如果條件為真,將返回「如果為真」的值;否則,返回「如果為假」的值。";
Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated
Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/算術";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "返回兩個數字的總和。";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "返回兩個數字的商。";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "返回兩個數字的差。";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "返回兩個數字的乘積。";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "返回第二個數字的指數的第一個數字。";
Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://zh.wikipedia.org/wiki/Atan2";
Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 的 Atan2";
Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "回傳點XY從 -180 至 180 度的反正切值。";
Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法";
Blockly.Msg["MATH_CHANGE_TITLE"] = "修改 %1 自 %2";
Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "將數字加到變數「%1」。";
Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/數學常數";
Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "返回一個的常見常量: π (3.141......)e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。";
Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated
Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "限制數字 %1 介於(低)%2 到(高)%3";
Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "限制數字介於兩個指定的數字之間(包含)。";
Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated
Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "可被整除";
Blockly.Msg["MATH_IS_EVEN"] = "是偶數";
Blockly.Msg["MATH_IS_NEGATIVE"] = "是負數";
Blockly.Msg["MATH_IS_ODD"] = "是奇數";
Blockly.Msg["MATH_IS_POSITIVE"] = "是正值";
Blockly.Msg["MATH_IS_PRIME"] = "是質數";
Blockly.Msg["MATH_IS_TOOLTIP"] = "如果數字是偶數,奇數,非負整數,正數、 負數,或如果它是可被某數字整除,則返回 true 或 false。";
Blockly.Msg["MATH_IS_WHOLE"] = "是整數";
Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/模除";
Blockly.Msg["MATH_MODULO_TITLE"] = "%1 除以 %2 的餘數";
Blockly.Msg["MATH_MODULO_TOOLTIP"] = "回傳兩個數字相除的餘數。";
Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated
Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/數";
Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "一個數字。";
Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated
Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "平均數 自清單";
Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "最大值 自清單";
Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "中位數 自清單";
Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "最小值 自清單";
Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "比較眾數 自清單";
Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "隨機抽取 自清單";
Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "標準差 自清單";
Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "數字總和 自清單";
Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "返回清單中數值的平均值(算術平均值)。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "返回清單項目中最大的數字。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "返回清單中數值的中位數。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "返回清單項目中最小的數字。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "返回一個清單中的最常見的項目。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "從清單中返回一個隨機的項目。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回清單中數字的標準差。";
Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回清單中的所有數字的總和。";
Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated
Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器";
Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "隨機取分數";
Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "在 0.0(包含)和 1.0(不包含)之間隨機取一個數。";
Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器";
Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "隨機取數 %1 到 %2";
Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "在指定二個數之間隨機取一個數(包含)。";
Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/數值簡化";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四捨五入";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "無條件捨去";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "無條件進位";
Blockly.Msg["MATH_ROUND_TOOLTIP"] = "將數字無條件進位或無條件捨去。";
Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根";
Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "絕對值";
Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "開根號";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回指定數字的絕對值。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回指定數字指數的e的冪次。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "返回指定數字的自然對數。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "返回指定數字的對數。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "返回指定數字的相反數。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "返回指定數字指數的10的冪次。";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回指定數字的平方根。";
Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated
Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated
Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated
Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated
Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated
Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函數";
Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated
Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated
Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "返回指定角度的反餘弦值(非弧度)。";
Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "返回指定角度的反正弦值(非弧度)。";
Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回指定角度的反正切值。";
Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回指定角度的餘弦值(非弧度)。";
Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回指定角度的正弦值(非弧度)。";
Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回指定角度的正切值(非弧度)。";
Blockly.Msg["NEW_COLOUR_VARIABLE"] = "建立顏色變數…";
Blockly.Msg["NEW_NUMBER_VARIABLE"] = "建立數值變數……";
Blockly.Msg["NEW_STRING_VARIABLE"] = "建立字串變數……";
Blockly.Msg["NEW_VARIABLE"] = "建立變數…";
Blockly.Msg["NEW_VARIABLE_TITLE"] = "新變數名稱:";
Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新變數類型:";
Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated
Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允許陳述式";
Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "與:";
Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式";
Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "執行使用者定義的函式「%1」。";
Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/%E5%AD%90%E7%A8%8B%E5%BA%8F";
Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "執行使用者定義的函式「%1」並使用它的回傳值。";
Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "與:";
Blockly.Msg["PROCEDURES_CREATE_DO"] = "建立「%1」";
Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "描述此函式...";
Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated
Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式";
Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "做些什麼";
Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "到";
Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "創建一個無回傳值的函式。";
Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式";
Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返回";
Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "創建一個有回傳值的的函式。";
Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告: 此函式中有重複的參數。";
Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "反白顯示函式定義";
Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated
Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "如果值為 true則返回第二個值。";
Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告:這個區塊只可以在定義函式時使用。";
Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "輸入名稱:";
Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "添加一個輸入區塊到函式。";
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "輸入";
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、刪除或重新排列此函式的輸入。";
Blockly.Msg["REDO"] = "重做";
Blockly.Msg["REMOVE_COMMENT"] = "移除註解";
Blockly.Msg["RENAME_VARIABLE"] = "重新命名變數...";
Blockly.Msg["RENAME_VARIABLE_TITLE"] = "將所有「%1」變數重新命名為";
Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
Blockly.Msg["TEXT_APPEND_TITLE"] = "至 %1 套用文字 %2";
Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "添加一些文字到變數「%1」之後。";
Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "轉成英文小寫";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "轉成英文首字大寫";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "轉成英文大寫";
Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "使用不同的大小寫複製這段文字。";
Blockly.Msg["TEXT_CHARAT_FIRST"] = "取得 第一個字元";
Blockly.Msg["TEXT_CHARAT_FROM_END"] = "取得 倒數第 # 個字元";
Blockly.Msg["TEXT_CHARAT_FROM_START"] = "取得 字元 #";
Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated
Blockly.Msg["TEXT_CHARAT_LAST"] = "取得 最後一個字元";
Blockly.Msg["TEXT_CHARAT_RANDOM"] = "取得 任意字元";
Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated
Blockly.Msg["TEXT_CHARAT_TITLE"] = "在文字 %1 %2";
Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "返回位於指定位置的字元。";
Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings";
Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "在%2計算%1";
Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "計算某些文字在內容裡的出現次數。";
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "添加一個項目到字串中。";
Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "加入";
Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個文字區塊。";
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到 倒數第 # 個字元";
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到 字元 #";
Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到最後一個字元";
Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "在字串";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "取得 第一個字元";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "取得 倒數第 # 個字元";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "取得 字元 #";
Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "返回指定的部分文字。";
Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated
Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "從 最前面 索引字串";
Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "從 最後面 索引字串";
Blockly.Msg["TEXT_INDEXOF_TITLE"] = "在文字 %1 %2 %3";
Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "在字串1中檢索是否有包含字串2如果有返回從頭/倒數算起的索引值。如果沒有則返回 %1。";
Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated
Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 為空";
Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "如果提供的字串為空,則返回 true。";
Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated
Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "字串組合";
Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "通過連接任意數量的項目來建立一串文字。";
Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
Blockly.Msg["TEXT_LENGTH_TITLE"] = "長度 %1";
Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "返回這串文字的字元數(包含空格)。";
Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated
Blockly.Msg["TEXT_PRINT_TITLE"] = "輸出 %1";
Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "輸出指定的文字、 數字或其他值。";
Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated
Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "輸入數字";
Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "輸入文字";
Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "輸入 數字 並顯示提示訊息";
Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "輸入 文字 並顯示提示訊息";
Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings";
Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "在%3以%2取代%1";
Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "取代在內容裡的全部某些文字。";
Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text";
Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "反轉%1";
Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "反轉排序在文字裡的字元。";
Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://zh.wikipedia.org/wiki/字串";
Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "一個字元、一個單詞,或一串文字。";
Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated
Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "消除兩側空格";
Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "消除左側空格";
Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "消除右側空格";
Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "複製這段文字,同時刪除兩端多餘的空格。";
Blockly.Msg["TODAY"] = "今天";
Blockly.Msg["UNDO"] = "還原";
Blockly.Msg["UNNAMED_KEY"] = "未命名";
Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "項目";
Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "建立「賦值 %1」";
Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "返回此變數的值。";
Blockly.Msg["VARIABLES_SET"] = "賦值 %1 成 %2";
Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "建立「取得 %1」";
Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "設定此變數,好和輸入結果相等。";
Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "已存在變數「%1」。";
Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "已存在名為「%1」且用於其它類型「%2」的變數。";
Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作區";
Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "來說些事情...";
Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"];
Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"];
Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"];
Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"];
Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"];
Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"];
Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"];
Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["MATH_HUE"] = "230";
Blockly.Msg["LOOPS_HUE"] = "120";
Blockly.Msg["LISTS_HUE"] = "260";
Blockly.Msg["LOGIC_HUE"] = "210";
Blockly.Msg["VARIABLES_HUE"] = "330";
Blockly.Msg["TEXTS_HUE"] = "160";
Blockly.Msg["PROCEDURES_HUE"] = "290";
Blockly.Msg["COLOUR_HUE"] = "20";
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
Blockly.PARSE_INT ="轉為整數";
Blockly.PARSE_FLOAT ="轉為浮點數";
Blockly.GET_LONG ="獲取當前經度";
Blockly.GET_LATI ="獲取當前緯度";
Blockly.GET_KEYBOARD_INPUT="文字輸入的文字";

View File

@@ -1,225 +0,0 @@
{
"@metadata": {
"authors": [
"Aefgh39622",
"Andibing",
"Bjh21",
"Codynguyen1116",
"Shirayuki"
]
},
"VARIABLES_DEFAULT_NAME": "item",
"TODAY": "Today",
"DUPLICATE_BLOCK": "Duplicate",
"ADD_COMMENT": "Add Comment",
"REMOVE_COMMENT": "Remove Comment",
"EXTERNAL_INPUTS": "External Inputs",
"INLINE_INPUTS": "Inline Inputs",
"DELETE_BLOCK": "Delete Block",
"DELETE_X_BLOCKS": "Delete %1 Blocks",
"DELETE_ALL_BLOCKS": "Delete all %1 blocks?",
"CLEAN_UP": "Clean up Blocks",
"COLLAPSE_BLOCK": "Collapse Block",
"COLLAPSE_ALL": "Collapse Blocks",
"EXPAND_BLOCK": "Expand Block",
"EXPAND_ALL": "Expand Blocks",
"DISABLE_BLOCK": "Disable Block",
"ENABLE_BLOCK": "Enable Block",
"HELP": "Help",
"UNDO": "Undo",
"REDO": "Redo",
"CHANGE_VALUE_TITLE": "Change value:",
"RENAME_VARIABLE": "Rename variable...",
"RENAME_VARIABLE_TITLE": "Rename all '%1' variables to:",
"NEW_VARIABLE": "Create variable...",
"NEW_VARIABLE_TITLE": "New variable name:",
"VARIABLE_ALREADY_EXISTS": "A variable named '%1' already exists.",
"VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "A variable named '%1' already exists for another type: '%2'.",
"DELETE_VARIABLE_CONFIRMATION": "Delete %1 uses of the '%2' variable?",
"CANNOT_DELETE_VARIABLE_PROCEDURE": "Can't delete the variable '%1' because it's part of the definition of the function '%2'",
"DELETE_VARIABLE": "Delete the '%1' variable",
"COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Colour",
"COLOUR_PICKER_TOOLTIP": "Choose a colour from the palette.",
"COLOUR_RANDOM_TITLE": "random colour",
"COLOUR_RANDOM_TOOLTIP": "Choose a colour at random.",
"COLOUR_RGB_TITLE": "colour with",
"COLOUR_RGB_RED": "red",
"COLOUR_RGB_GREEN": "green",
"COLOUR_RGB_BLUE": "blue",
"COLOUR_RGB_TOOLTIP": "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.",
"COLOUR_BLEND_TITLE": "blend",
"COLOUR_BLEND_COLOUR1": "colour 1",
"COLOUR_BLEND_COLOUR2": "colour 2",
"COLOUR_BLEND_RATIO": "ratio",
"COLOUR_BLEND_TOOLTIP": "Blends two colours together with a given ratio (0.0 - 1.0).",
"CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop",
"CONTROLS_REPEAT_TITLE": "repeat %1 times",
"CONTROLS_REPEAT_INPUT_DO": "do",
"CONTROLS_REPEAT_TOOLTIP": "Do some statements several times.",
"CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repeat while",
"CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repeat until",
"CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "While a value is true, then do some statements.",
"CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "While a value is false, then do some statements.",
"CONTROLS_FOR_TOOLTIP": "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.",
"CONTROLS_FOR_TITLE": "count with %1 from %2 to %3 by %4",
"CONTROLS_FOREACH_TITLE": "for each item %1 in list %2",
"CONTROLS_FOREACH_TOOLTIP": "For each item in a list, set the variable '%1' to the item, and then do some statements.",
"CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "break out of loop",
"CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continue with next iteration of loop",
"CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Break out of the containing loop.",
"CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Skip the rest of this loop, and continue with the next iteration.",
"CONTROLS_FLOW_STATEMENTS_WARNING": "Warning: This block may only be used within a loop.",
"CONTROLS_IF_TOOLTIP_1": "If a value is true, then do some statements.",
"CONTROLS_IF_TOOLTIP_2": "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.",
"CONTROLS_IF_TOOLTIP_3": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.",
"CONTROLS_IF_TOOLTIP_4": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.",
"CONTROLS_IF_MSG_IF": "if",
"CONTROLS_IF_MSG_ELSEIF": "else if",
"CONTROLS_IF_MSG_ELSE": "else",
"CONTROLS_IF_IF_TOOLTIP": "Add, remove, or reorder sections to reconfigure this if block.",
"CONTROLS_IF_ELSEIF_TOOLTIP": "Add a condition to the if block.",
"CONTROLS_IF_ELSE_TOOLTIP": "Add a final, catch-all condition to the if block.",
"IOS_OK": "OK",
"IOS_CANCEL": "Cancel",
"IOS_ERROR": "Error",
"IOS_PROCEDURES_INPUTS": "INPUTS",
"IOS_PROCEDURES_ADD_INPUT": "+ Add Input",
"IOS_PROCEDURES_ALLOW_STATEMENTS": "Allow statements",
"IOS_PROCEDURES_DUPLICATE_INPUTS_ERROR": "This function has duplicate inputs.",
"IOS_VARIABLES_ADD_VARIABLE": "+ Add Variable",
"IOS_VARIABLES_ADD_BUTTON": "Add",
"IOS_VARIABLES_RENAME_BUTTON": "Rename",
"IOS_VARIABLES_DELETE_BUTTON": "Delete",
"IOS_VARIABLES_VARIABLE_NAME": "Variable name",
"IOS_VARIABLES_EMPTY_NAME_ERROR": "You can't use an empty variable name.",
"LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)",
"LOGIC_COMPARE_TOOLTIP_EQ": "Return true if both inputs equal each other.",
"LOGIC_COMPARE_TOOLTIP_NEQ": "Return true if both inputs are not equal to each other.",
"LOGIC_COMPARE_TOOLTIP_LT": "Return true if the first input is smaller than the second input.",
"LOGIC_COMPARE_TOOLTIP_LTE": "Return true if the first input is smaller than or equal to the second input.",
"LOGIC_COMPARE_TOOLTIP_GT": "Return true if the first input is greater than the second input.",
"LOGIC_COMPARE_TOOLTIP_GTE": "Return true if the first input is greater than or equal to the second input.",
"LOGIC_OPERATION_TOOLTIP_AND": "Return true if both inputs are true.",
"LOGIC_OPERATION_AND": "and",
"LOGIC_OPERATION_TOOLTIP_OR": "Return true if at least one of the inputs is true.",
"LOGIC_OPERATION_OR": "or",
"LOGIC_NEGATE_TITLE": "not %1",
"LOGIC_NEGATE_TOOLTIP": "Returns true if the input is false. Returns false if the input is true.",
"LOGIC_BOOLEAN_TRUE": "true",
"LOGIC_BOOLEAN_FALSE": "false",
"LOGIC_BOOLEAN_TOOLTIP": "Returns either true or false.",
"LOGIC_NULL": "null",
"LOGIC_NULL_TOOLTIP": "Returns null.",
"LOGIC_TERNARY_CONDITION": "test",
"LOGIC_TERNARY_IF_TRUE": "if true",
"LOGIC_TERNARY_IF_FALSE": "if false",
"LOGIC_TERNARY_TOOLTIP": "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.",
"MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number",
"MATH_NUMBER_TOOLTIP": "A number.",
"MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic",
"MATH_ARITHMETIC_TOOLTIP_ADD": "Return the sum of the two numbers.",
"MATH_ARITHMETIC_TOOLTIP_MINUS": "Return the difference of the two numbers.",
"MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Return the product of the two numbers.",
"MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Return the quotient of the two numbers.",
"MATH_ARITHMETIC_TOOLTIP_POWER": "Return the first number raised to the power of the second number.",
"MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root",
"MATH_SINGLE_OP_ROOT": "square root",
"MATH_SINGLE_TOOLTIP_ROOT": "Return the square root of a number.",
"MATH_SINGLE_OP_ABSOLUTE": "absolute",
"MATH_SINGLE_TOOLTIP_ABS": "Return the absolute value of a number.",
"MATH_SINGLE_TOOLTIP_NEG": "Return the negation of a number.",
"MATH_SINGLE_TOOLTIP_LN": "Return the natural logarithm of a number.",
"MATH_SINGLE_TOOLTIP_LOG10": "Return the base 10 logarithm of a number.",
"MATH_SINGLE_TOOLTIP_EXP": "Return e to the power of a number.",
"MATH_SINGLE_TOOLTIP_POW10": "Return 10 to the power of a number.",
"MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions",
"MATH_TRIG_TOOLTIP_SIN": "Return the sine of a degree (not radian).",
"MATH_TRIG_TOOLTIP_COS": "Return the cosine of a degree (not radian).",
"MATH_TRIG_TOOLTIP_TAN": "Return the tangent of a degree (not radian).",
"MATH_TRIG_TOOLTIP_ASIN": "Return the arcsine of a number.",
"MATH_TRIG_TOOLTIP_ACOS": "Return the arccosine of a number.",
"MATH_TRIG_TOOLTIP_ATAN": "Return the arctangent of a number.",
"MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant",
"MATH_CONSTANT_TOOLTIP": "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).",
"MATH_IS_EVEN": "is even",
"MATH_IS_ODD": "is odd",
"MATH_IS_PRIME": "is prime",
"MATH_IS_WHOLE": "is whole",
"MATH_IS_POSITIVE": "is positive",
"MATH_IS_NEGATIVE": "is negative",
"MATH_IS_DIVISIBLE_BY": "is divisible by",
"MATH_IS_TOOLTIP": "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.",
"MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter",
"MATH_CHANGE_TITLE": "change %1 by %2",
"MATH_CHANGE_TOOLTIP": "Add a number to variable '%1'.",
"MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding",
"MATH_ROUND_TOOLTIP": "Round a number up or down.",
"MATH_ROUND_OPERATOR_ROUND": "round",
"MATH_ROUND_OPERATOR_ROUNDUP": "round up",
"MATH_ROUND_OPERATOR_ROUNDDOWN": "round down",
"MATH_ONLIST_OPERATOR_SUM": "sum of list",
"MATH_ONLIST_TOOLTIP_SUM": "Return the sum of all the numbers in the list.",
"MATH_ONLIST_OPERATOR_MIN": "min of list",
"MATH_ONLIST_TOOLTIP_MIN": "Return the smallest number in the list.",
"MATH_ONLIST_OPERATOR_MAX": "max of list",
"MATH_ONLIST_TOOLTIP_MAX": "Return the largest number in the list.",
"MATH_ONLIST_OPERATOR_AVERAGE": "average of list",
"MATH_ONLIST_TOOLTIP_AVERAGE": "Return the average (arithmetic mean) of the numeric values in the list.",
"MATH_ONLIST_OPERATOR_MEDIAN": "median of list",
"MATH_ONLIST_TOOLTIP_MEDIAN": "Return the median number in the list.",
"MATH_ONLIST_OPERATOR_MODE": "modes of list",
"MATH_ONLIST_TOOLTIP_MODE": "Return a list of the most common item(s) in the list.",
"MATH_ONLIST_OPERATOR_STD_DEV": "standard deviation of list",
"MATH_ONLIST_TOOLTIP_STD_DEV": "Return the standard deviation of the list.",
"MATH_ONLIST_OPERATOR_RANDOM": "random item of list",
"MATH_ONLIST_TOOLTIP_RANDOM": "Return a random element from the list.",
"MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation",
"MATH_MODULO_TITLE": "remainder of %1 ÷ %2",
"MATH_MODULO_TOOLTIP": "Return the remainder from dividing the two numbers.",
"MATH_CONSTRAIN_TITLE": "constrain %1 low %2 high %3",
"MATH_CONSTRAIN_TOOLTIP": "Constrain a number to be between the specified limits (inclusive).",
"MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation",
"MATH_RANDOM_INT_TITLE": "random integer from %1 to %2",
"MATH_RANDOM_INT_TOOLTIP": "Return a random integer between the two specified limits, inclusive.",
"MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation",
"MATH_RANDOM_FLOAT_TITLE_RANDOM": "random fraction",
"MATH_RANDOM_FLOAT_TOOLTIP": "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).",
"TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)",
"TEXT_TEXT_TOOLTIP": "A letter, word, or line of text.",
"TEXT_JOIN_TITLE_CREATEWITH": "create text with",
"TEXT_JOIN_TOOLTIP": "Create a piece of text by joining together any number of items.",
"TEXT_CREATE_JOIN_TITLE_JOIN": "join",
"TEXT_CREATE_JOIN_TOOLTIP": "Add, remove, or reorder sections to reconfigure this text block.",
"TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Add an item to the text.",
"TEXT_APPEND_TITLE": "to %1 append text %2",
"TEXT_APPEND_TOOLTIP": "Append some text to variable '%1'.",
"TEXT_LENGTH_TITLE": "length of %1",
"TEXT_LENGTH_TOOLTIP": "Returns the number of letters (including spaces) in the provided text.",
"TEXT_ISEMPTY_TITLE": "%1 is empty",
"TEXT_ISEMPTY_TOOLTIP": "Returns true if the provided text is empty.",
"TEXT_INDEXOF_TOOLTIP": "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.",
"TEXT_INDEXOF_TITLE": "in text %1 %2 %3",
"TEXT_INDEXOF_OPERATOR_FIRST": "find first occurrence of text",
"TEXT_INDEXOF_OPERATOR_LAST": "find last occurrence of text",
"TEXT_CHARAT_TITLE": "in text %1 %2",
"TEXT_CHARAT_FROM_START": "get letter #",
"TEXT_CHARAT_FROM_END": "get letter # from end",
"TEXT_CHARAT_FIRST": "get first letter",
"TEXT_CHARAT_LAST": "get last letter",
"TEXT_CHARAT_RANDOM": "get random letter",
"TEXT_CHARAT_TOOLTIP": "Returns the letter at the specified position.",
"TEXT_GET_SUBSTRING_TOOLTIP": "Returns a specified portion of the text.",
"TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in text",
"TEXT_GET_SUBSTRING_START_FROM_START": "get substring from letter #",
"TEXT_GET_SUBSTRING_START_FROM_END": "get substring from letter # from end",
"TEXT_GET_SUBSTRING_START_FIRST": "get substring from first letter",
"TEXT_GET_SUBSTRING_END_FROM_START": "to letter #",
"TEXT_GET_SUBSTRING_END_FROM_END": "to letter # from end",
"TEXT_GET_SUBSTRING_END_LAST": "to last letter",
"TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.",
"TEXT_CHANGECASE_OPERATOR_UPPERCASE": "to UPPER CASE",
"TEXT_CHANGECASE_OPERATOR_LOWERCASE": "to lower case",
"TEXT_CHANGECASE_OPERATOR_TITLECASE": "to Title Case",
"TEXT_TRIM_TOOLTIP": "Return a copy of the text with spaces removed from one or both ends.",
"LISTS_SORT_ORDER_DESCENDING": "descendente"
}

View File

@@ -1,397 +0,0 @@
{
"@metadata": {
"author": "Ellen Spertus <ellen.spertus@gmail.com>",
"lastupdated": "2021-07-01 14:44:40.033432",
"locale": "en",
"messagedocumentation" : "qqq"
},
"VARIABLES_DEFAULT_NAME": "item",
"UNNAMED_KEY": "unnamed",
"TODAY": "Today",
"DUPLICATE_BLOCK": "Duplicate",
"ADD_COMMENT": "Add Comment",
"REMOVE_COMMENT": "Remove Comment",
"DUPLICATE_COMMENT": "Duplicate Comment",
"EXTERNAL_INPUTS": "External Inputs",
"INLINE_INPUTS": "Inline Inputs",
"DELETE_BLOCK": "Delete Block",
"DELETE_X_BLOCKS": "Delete %1 Blocks",
"DELETE_ALL_BLOCKS": "Delete all %1 blocks?",
"CLEAN_UP": "Clean up Blocks",
"COLLAPSE_BLOCK": "Collapse Block",
"COLLAPSE_ALL": "Collapse Blocks",
"EXPAND_BLOCK": "Expand Block",
"EXPAND_ALL": "Expand Blocks",
"DISABLE_BLOCK": "Disable Block",
"ENABLE_BLOCK": "Enable Block",
"HELP": "Help",
"UNDO": "Undo",
"REDO": "Redo",
"CHANGE_VALUE_TITLE": "Change value:",
"RENAME_VARIABLE": "Rename variable...",
"RENAME_VARIABLE_TITLE": "Rename all '%1' variables to:",
"NEW_VARIABLE": "Create variable...",
"NEW_STRING_VARIABLE": "Create string variable...",
"NEW_NUMBER_VARIABLE": "Create number variable...",
"NEW_COLOUR_VARIABLE": "Create colour variable...",
"NEW_VARIABLE_TYPE_TITLE": "New variable type:",
"NEW_VARIABLE_TITLE": "New variable name:",
"VARIABLE_ALREADY_EXISTS": "A variable named '%1' already exists.",
"VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "A variable named '%1' already exists for another type: '%2'.",
"DELETE_VARIABLE_CONFIRMATION": "Delete %1 uses of the '%2' variable?",
"CANNOT_DELETE_VARIABLE_PROCEDURE": "Can't delete the variable '%1' because it's part of the definition of the function '%2'",
"DELETE_VARIABLE": "Delete the '%1' variable",
"COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color",
"COLOUR_PICKER_TOOLTIP": "Choose a colour from the palette.",
"COLOUR_RANDOM_HELPURL": "http://randomcolour.com",
"COLOUR_RANDOM_TITLE": "random colour",
"COLOUR_RANDOM_TOOLTIP": "Choose a colour at random.",
"COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html",
"COLOUR_RGB_TITLE": "colour with",
"COLOUR_RGB_RED": "red",
"COLOUR_RGB_GREEN": "green",
"COLOUR_RGB_BLUE": "blue",
"COLOUR_RGB_TOOLTIP": "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.",
"COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp",
"COLOUR_BLEND_TITLE": "blend",
"COLOUR_BLEND_COLOUR1": "colour 1",
"COLOUR_BLEND_COLOUR2": "colour 2",
"COLOUR_BLEND_RATIO": "ratio",
"COLOUR_BLEND_TOOLTIP": "Blends two colours together with a given ratio (0.0 - 1.0).",
"CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop",
"CONTROLS_REPEAT_TITLE": "repeat %1 times",
"CONTROLS_REPEAT_INPUT_DO": "do",
"CONTROLS_REPEAT_TOOLTIP": "Do some statements several times.",
"CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat",
"CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repeat while",
"CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repeat until",
"CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "While a value is true, then do some statements.",
"CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "While a value is false, then do some statements.",
"CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with",
"CONTROLS_FOR_TOOLTIP": "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.",
"CONTROLS_FOR_TITLE": "count with %1 from %2 to %3 by %4",
"CONTROLS_FOREACH_HELPURL": "https://github.com/google/blockly/wiki/Loops#for-each",
"CONTROLS_FOREACH_TITLE": "for each item %1 in list %2",
"CONTROLS_FOREACH_TOOLTIP": "For each item in a list, set the variable '%1' to the item, and then do some statements.",
"CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks",
"CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "break out of loop",
"CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continue with next iteration of loop",
"CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Break out of the containing loop.",
"CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Skip the rest of this loop, and continue with the next iteration.",
"CONTROLS_FLOW_STATEMENTS_WARNING": "Warning: This block may only be used within a loop.",
"CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse",
"CONTROLS_IF_TOOLTIP_1": "If a value is true, then do some statements.",
"CONTROLS_IF_TOOLTIP_2": "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.",
"CONTROLS_IF_TOOLTIP_3": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.",
"CONTROLS_IF_TOOLTIP_4": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.",
"CONTROLS_IF_MSG_IF": "if",
"CONTROLS_IF_MSG_ELSEIF": "else if",
"CONTROLS_IF_MSG_ELSE": "else",
"CONTROLS_IF_IF_TOOLTIP": "Add, remove, or reorder sections to reconfigure this if block.",
"CONTROLS_IF_ELSEIF_TOOLTIP": "Add a condition to the if block.",
"CONTROLS_IF_ELSE_TOOLTIP": "Add a final, catch-all condition to the if block.",
"LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)",
"LOGIC_COMPARE_TOOLTIP_EQ": "Return true if both inputs equal each other.",
"LOGIC_COMPARE_TOOLTIP_NEQ": "Return true if both inputs are not equal to each other.",
"LOGIC_COMPARE_TOOLTIP_LT": "Return true if the first input is smaller than the second input.",
"LOGIC_COMPARE_TOOLTIP_LTE": "Return true if the first input is smaller than or equal to the second input.",
"LOGIC_COMPARE_TOOLTIP_GT": "Return true if the first input is greater than the second input.",
"LOGIC_COMPARE_TOOLTIP_GTE": "Return true if the first input is greater than or equal to the second input.",
"LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations",
"LOGIC_OPERATION_TOOLTIP_AND": "Return true if both inputs are true.",
"LOGIC_OPERATION_AND": "and",
"LOGIC_OPERATION_TOOLTIP_OR": "Return true if at least one of the inputs is true.",
"LOGIC_OPERATION_OR": "or",
"LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not",
"LOGIC_NEGATE_TITLE": "not %1",
"LOGIC_NEGATE_TOOLTIP": "Returns true if the input is false. Returns false if the input is true.",
"LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values",
"LOGIC_BOOLEAN_TRUE": "true",
"LOGIC_BOOLEAN_FALSE": "false",
"LOGIC_BOOLEAN_TOOLTIP": "Returns either true or false.",
"LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type",
"LOGIC_NULL": "null",
"LOGIC_NULL_TOOLTIP": "Returns null.",
"LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:",
"LOGIC_TERNARY_CONDITION": "test",
"LOGIC_TERNARY_IF_TRUE": "if true",
"LOGIC_TERNARY_IF_FALSE": "if false",
"LOGIC_TERNARY_TOOLTIP": "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.",
"MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number",
"MATH_NUMBER_TOOLTIP": "A number.",
"MATH_ADDITION_SYMBOL": "+",
"MATH_SUBTRACTION_SYMBOL": "-",
"MATH_DIVISION_SYMBOL": "÷",
"MATH_MULTIPLICATION_SYMBOL": "×",
"MATH_POWER_SYMBOL": "^",
"MATH_TRIG_SIN": "sin",
"MATH_TRIG_COS": "cos",
"MATH_TRIG_TAN": "tan",
"MATH_TRIG_ASIN": "asin",
"MATH_TRIG_ACOS": "acos",
"MATH_TRIG_ATAN": "atan",
"MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic",
"MATH_ARITHMETIC_TOOLTIP_ADD": "Return the sum of the two numbers.",
"MATH_ARITHMETIC_TOOLTIP_MINUS": "Return the difference of the two numbers.",
"MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Return the product of the two numbers.",
"MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Return the quotient of the two numbers.",
"MATH_ARITHMETIC_TOOLTIP_POWER": "Return the first number raised to the power of the second number.",
"MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root",
"MATH_SINGLE_OP_ROOT": "square root",
"MATH_SINGLE_TOOLTIP_ROOT": "Return the square root of a number.",
"MATH_SINGLE_OP_ABSOLUTE": "absolute",
"MATH_SINGLE_TOOLTIP_ABS": "Return the absolute value of a number.",
"MATH_SINGLE_TOOLTIP_NEG": "Return the negation of a number.",
"MATH_SINGLE_TOOLTIP_LN": "Return the natural logarithm of a number.",
"MATH_SINGLE_TOOLTIP_LOG10": "Return the base 10 logarithm of a number.",
"MATH_SINGLE_TOOLTIP_EXP": "Return e to the power of a number.",
"MATH_SINGLE_TOOLTIP_POW10": "Return 10 to the power of a number.",
"MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions",
"MATH_TRIG_TOOLTIP_SIN": "Return the sine of a degree (not radian).",
"MATH_TRIG_TOOLTIP_COS": "Return the cosine of a degree (not radian).",
"MATH_TRIG_TOOLTIP_TAN": "Return the tangent of a degree (not radian).",
"MATH_TRIG_TOOLTIP_ASIN": "Return the arcsine of a number.",
"MATH_TRIG_TOOLTIP_ACOS": "Return the arccosine of a number.",
"MATH_TRIG_TOOLTIP_ATAN": "Return the arctangent of a number.",
"MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant",
"MATH_CONSTANT_TOOLTIP": "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).",
"MATH_IS_EVEN": "is even",
"MATH_IS_ODD": "is odd",
"MATH_IS_PRIME": "is prime",
"MATH_IS_WHOLE": "is whole",
"MATH_IS_POSITIVE": "is positive",
"MATH_IS_NEGATIVE": "is negative",
"MATH_IS_DIVISIBLE_BY": "is divisible by",
"MATH_IS_TOOLTIP": "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.",
"MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter",
"MATH_CHANGE_TITLE": "change %1 by %2",
"MATH_CHANGE_TOOLTIP": "Add a number to variable '%1'.",
"MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding",
"MATH_ROUND_TOOLTIP": "Round a number up or down.",
"MATH_ROUND_OPERATOR_ROUND": "round",
"MATH_ROUND_OPERATOR_ROUNDUP": "round up",
"MATH_ROUND_OPERATOR_ROUNDDOWN": "round down",
"MATH_ONLIST_HELPURL": "",
"MATH_ONLIST_OPERATOR_SUM": "sum of list",
"MATH_ONLIST_TOOLTIP_SUM": "Return the sum of all the numbers in the list.",
"MATH_ONLIST_OPERATOR_MIN": "min of list",
"MATH_ONLIST_TOOLTIP_MIN": "Return the smallest number in the list.",
"MATH_ONLIST_OPERATOR_MAX": "max of list",
"MATH_ONLIST_TOOLTIP_MAX": "Return the largest number in the list.",
"MATH_ONLIST_OPERATOR_AVERAGE": "average of list",
"MATH_ONLIST_TOOLTIP_AVERAGE": "Return the average (arithmetic mean) of the numeric values in the list.",
"MATH_ONLIST_OPERATOR_MEDIAN": "median of list",
"MATH_ONLIST_TOOLTIP_MEDIAN": "Return the median number in the list.",
"MATH_ONLIST_OPERATOR_MODE": "modes of list",
"MATH_ONLIST_TOOLTIP_MODE": "Return a list of the most common item(s) in the list.",
"MATH_ONLIST_OPERATOR_STD_DEV": "standard deviation of list",
"MATH_ONLIST_TOOLTIP_STD_DEV": "Return the standard deviation of the list.",
"MATH_ONLIST_OPERATOR_RANDOM": "random item of list",
"MATH_ONLIST_TOOLTIP_RANDOM": "Return a random element from the list.",
"MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation",
"MATH_MODULO_TITLE": "remainder of %1 ÷ %2",
"MATH_MODULO_TOOLTIP": "Return the remainder from dividing the two numbers.",
"MATH_CONSTRAIN_HELPURL": "https://en.wikipedia.org/wiki/Clamping_(graphics)",
"MATH_CONSTRAIN_TITLE": "constrain %1 low %2 high %3",
"MATH_CONSTRAIN_TOOLTIP": "Constrain a number to be between the specified limits (inclusive).",
"MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation",
"MATH_RANDOM_INT_TITLE": "random integer from %1 to %2",
"MATH_RANDOM_INT_TOOLTIP": "Return a random integer between the two specified limits, inclusive.",
"MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation",
"MATH_RANDOM_FLOAT_TITLE_RANDOM": "random fraction",
"MATH_RANDOM_FLOAT_TOOLTIP": "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).",
"MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2",
"MATH_ATAN2_TITLE": "atan2 of X:%1 Y:%2",
"MATH_ATAN2_TOOLTIP": "Return the arctangent of point (X, Y) in degrees from -180 to 180.",
"TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)",
"TEXT_TEXT_TOOLTIP": "A letter, word, or line of text.",
"TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation",
"TEXT_JOIN_TITLE_CREATEWITH": "create text with",
"TEXT_JOIN_TOOLTIP": "Create a piece of text by joining together any number of items.",
"TEXT_CREATE_JOIN_TITLE_JOIN": "join",
"TEXT_CREATE_JOIN_TOOLTIP": "Add, remove, or reorder sections to reconfigure this text block.",
"TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Add an item to the text.",
"TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification",
"TEXT_APPEND_TITLE": "to %1 append text %2",
"TEXT_APPEND_TOOLTIP": "Append some text to variable '%1'.",
"TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification",
"TEXT_LENGTH_TITLE": "length of %1",
"TEXT_LENGTH_TOOLTIP": "Returns the number of letters (including spaces) in the provided text.",
"TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text",
"TEXT_ISEMPTY_TITLE": "%1 is empty",
"TEXT_ISEMPTY_TOOLTIP": "Returns true if the provided text is empty.",
"TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text",
"TEXT_INDEXOF_TOOLTIP": "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.",
"TEXT_INDEXOF_TITLE": "in text %1 %2 %3",
"TEXT_INDEXOF_OPERATOR_FIRST": "find first occurrence of text",
"TEXT_INDEXOF_OPERATOR_LAST": "find last occurrence of text",
"TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text",
"TEXT_CHARAT_TITLE": "in text %1 %2",
"TEXT_CHARAT_FROM_START": "get letter #",
"TEXT_CHARAT_FROM_END": "get letter # from end",
"TEXT_CHARAT_FIRST": "get first letter",
"TEXT_CHARAT_LAST": "get last letter",
"TEXT_CHARAT_RANDOM": "get random letter",
"TEXT_CHARAT_TAIL": "",
"TEXT_CHARAT_TOOLTIP": "Returns the letter at the specified position.",
"TEXT_GET_SUBSTRING_TOOLTIP": "Returns a specified portion of the text.",
"TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text",
"TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in text",
"TEXT_GET_SUBSTRING_START_FROM_START": "get substring from letter #",
"TEXT_GET_SUBSTRING_START_FROM_END": "get substring from letter # from end",
"TEXT_GET_SUBSTRING_START_FIRST": "get substring from first letter",
"TEXT_GET_SUBSTRING_END_FROM_START": "to letter #",
"TEXT_GET_SUBSTRING_END_FROM_END": "to letter # from end",
"TEXT_GET_SUBSTRING_END_LAST": "to last letter",
"TEXT_GET_SUBSTRING_TAIL": "",
"TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case",
"TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.",
"TEXT_CHANGECASE_OPERATOR_UPPERCASE": "to UPPER CASE",
"TEXT_CHANGECASE_OPERATOR_LOWERCASE": "to lower case",
"TEXT_CHANGECASE_OPERATOR_TITLECASE": "to Title Case",
"TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces",
"TEXT_TRIM_TOOLTIP": "Return a copy of the text with spaces removed from one or both ends.",
"TEXT_TRIM_OPERATOR_BOTH": "trim spaces from both sides of",
"TEXT_TRIM_OPERATOR_LEFT": "trim spaces from left side of",
"TEXT_TRIM_OPERATOR_RIGHT": "trim spaces from right side of",
"TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text",
"TEXT_PRINT_TITLE": "print %1",
"TEXT_PRINT_TOOLTIP": "Print the specified text, number or other value.",
"TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user",
"TEXT_PROMPT_TYPE_TEXT": "prompt for text with message",
"TEXT_PROMPT_TYPE_NUMBER": "prompt for number with message",
"TEXT_PROMPT_TOOLTIP_NUMBER": "Prompt for user for a number.",
"TEXT_PROMPT_TOOLTIP_TEXT": "Prompt for user for some text.",
"TEXT_COUNT_MESSAGE0": "count %1 in %2",
"TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings",
"TEXT_COUNT_TOOLTIP": "Count how many times some text occurs within some other text.",
"TEXT_REPLACE_MESSAGE0": "replace %1 with %2 in %3",
"TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings",
"TEXT_REPLACE_TOOLTIP": "Replace all occurances of some text within some other text.",
"TEXT_REVERSE_MESSAGE0": "reverse %1",
"TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text",
"TEXT_REVERSE_TOOLTIP": "Reverses the order of the characters in the text.",
"LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list",
"LISTS_CREATE_EMPTY_TITLE": "create empty list",
"LISTS_CREATE_EMPTY_TOOLTIP": "Returns a list, of length 0, containing no data records",
"LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with",
"LISTS_CREATE_WITH_TOOLTIP": "Create a list with any number of items.",
"LISTS_CREATE_WITH_INPUT_WITH": "create list with",
"LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "list",
"LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Add, remove, or reorder sections to reconfigure this list block.",
"LISTS_CREATE_WITH_ITEM_TOOLTIP": "Add an item to the list.",
"LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with",
"LISTS_REPEAT_TOOLTIP": "Creates a list consisting of the given value repeated the specified number of times.",
"LISTS_REPEAT_TITLE": "create list with item %1 repeated %2 times",
"LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of",
"LISTS_LENGTH_TITLE": "length of %1",
"LISTS_LENGTH_TOOLTIP": "Returns the length of a list.",
"LISTS_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#is-empty",
"LISTS_ISEMPTY_TITLE": "%1 is empty",
"LISTS_ISEMPTY_TOOLTIP": "Returns true if the list is empty.",
"LISTS_INLIST": "in list",
"LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list",
"LISTS_INDEX_OF_FIRST": "find first occurrence of item",
"LISTS_INDEX_OF_LAST": "find last occurrence of item",
"LISTS_INDEX_OF_TOOLTIP": "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.",
"LISTS_GET_INDEX_GET": "get",
"LISTS_GET_INDEX_GET_REMOVE": "get and remove",
"LISTS_GET_INDEX_REMOVE": "remove",
"LISTS_GET_INDEX_FROM_START": "#",
"LISTS_GET_INDEX_FROM_END": "# from end",
"LISTS_GET_INDEX_FIRST": "first",
"LISTS_GET_INDEX_LAST": "last",
"LISTS_GET_INDEX_RANDOM": "random",
"LISTS_GET_INDEX_TAIL": "",
"LISTS_INDEX_FROM_START_TOOLTIP": "%1 is the first item.",
"LISTS_INDEX_FROM_END_TOOLTIP": "%1 is the last item.",
"LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Returns the item at the specified position in a list.",
"LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Returns the first item in a list.",
"LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Returns the last item in a list.",
"LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Returns a random item in a list.",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Removes and returns the item at the specified position in a list.",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Removes and returns the first item in a list.",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Removes and returns the last item in a list.",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Removes and returns a random item in a list.",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Removes the item at the specified position in a list.",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Removes the first item in a list.",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Removes the last item in a list.",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Removes a random item in a list.",
"LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set",
"LISTS_SET_INDEX_SET": "set",
"LISTS_SET_INDEX_INSERT": "insert at",
"LISTS_SET_INDEX_INPUT_TO": "as",
"LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Sets the item at the specified position in a list.",
"LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Sets the first item in a list.",
"LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Sets the last item in a list.",
"LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Sets a random item in a list.",
"LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Inserts the item at the specified position in a list.",
"LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Inserts the item at the start of a list.",
"LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Append the item to the end of a list.",
"LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Inserts the item randomly in a list.",
"LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist",
"LISTS_GET_SUBLIST_START_FROM_START": "get sub-list from #",
"LISTS_GET_SUBLIST_START_FROM_END": "get sub-list from # from end",
"LISTS_GET_SUBLIST_START_FIRST": "get sub-list from first",
"LISTS_GET_SUBLIST_END_FROM_START": "to #",
"LISTS_GET_SUBLIST_END_FROM_END": "to # from end",
"LISTS_GET_SUBLIST_END_LAST": "to last",
"LISTS_GET_SUBLIST_TAIL": "",
"LISTS_GET_SUBLIST_TOOLTIP": "Creates a copy of the specified portion of a list.",
"LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list",
"LISTS_SORT_TITLE": "sort %1 %2 %3",
"LISTS_SORT_TOOLTIP": "Sort a copy of a list.",
"LISTS_SORT_ORDER_ASCENDING": "ascending",
"LISTS_SORT_ORDER_DESCENDING": "descending",
"LISTS_SORT_TYPE_NUMERIC": "numeric",
"LISTS_SORT_TYPE_TEXT": "alphabetic",
"LISTS_SORT_TYPE_IGNORECASE": "alphabetic, ignore case",
"LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists",
"LISTS_SPLIT_LIST_FROM_TEXT": "make list from text",
"LISTS_SPLIT_TEXT_FROM_LIST": "make text from list",
"LISTS_SPLIT_WITH_DELIMITER": "with delimiter",
"LISTS_SPLIT_TOOLTIP_SPLIT": "Split text into a list of texts, breaking at each delimiter.",
"LISTS_SPLIT_TOOLTIP_JOIN": "Join a list of texts into one text, separated by a delimiter.",
"LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list",
"LISTS_REVERSE_MESSAGE0": "reverse %1",
"LISTS_REVERSE_TOOLTIP": "Reverse a copy of a list.",
"ORDINAL_NUMBER_SUFFIX": "",
"VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get",
"VARIABLES_GET_TOOLTIP": "Returns the value of this variable.",
"VARIABLES_GET_CREATE_SET": "Create 'set %1'",
"VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set",
"VARIABLES_SET": "set %1 to %2",
"VARIABLES_SET_TOOLTIP": "Sets this variable to be equal to the input.",
"VARIABLES_SET_CREATE_GET": "Create 'get %1'",
"PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine",
"PROCEDURES_DEFNORETURN_TITLE": "to",
"PROCEDURES_DEFNORETURN_PROCEDURE": "do something",
"PROCEDURES_BEFORE_PARAMS": "with:",
"PROCEDURES_CALL_BEFORE_PARAMS": "with:",
"PROCEDURES_DEFNORETURN_DO": "",
"PROCEDURES_DEFNORETURN_TOOLTIP": "Creates a function with no output.",
"PROCEDURES_DEFNORETURN_COMMENT": "Describe this function...",
"PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine",
"PROCEDURES_DEFRETURN_RETURN": "return",
"PROCEDURES_DEFRETURN_TOOLTIP": "Creates a function with an output.",
"PROCEDURES_ALLOW_STATEMENTS": "allow statements",
"PROCEDURES_DEF_DUPLICATE_WARNING": "Warning: This function has duplicate parameters.",
"PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine",
"PROCEDURES_CALLNORETURN_TOOLTIP": "Run the user-defined function '%1'.",
"PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine",
"PROCEDURES_CALLRETURN_TOOLTIP": "Run the user-defined function '%1' and use its output.",
"PROCEDURES_MUTATORCONTAINER_TITLE": "inputs",
"PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Add, remove, or reorder inputs to this function.",
"PROCEDURES_MUTATORARG_TITLE": "input name:",
"PROCEDURES_MUTATORARG_TOOLTIP": "Add an input to the function.",
"PROCEDURES_HIGHLIGHT_DEF": "Highlight function definition",
"PROCEDURES_CREATE_DO": "Create '%1'",
"PROCEDURES_IFRETURN_TOOLTIP": "If a value is true, then return a second value.",
"PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause",
"PROCEDURES_IFRETURN_WARNING": "Warning: This block may be used only within a function definition.",
"WORKSPACE_COMMENT_DEFAULT_TEXT": "Say something...",
"WORKSPACE_ARIA_LABEL": "Blockly Workspace",
"COLLAPSED_WARNINGS_WARNING": "Collapsed blocks contain warnings.",
"DIALOG_OK": "OK",
"DIALOG_CANCEL": "Cancel"
}

View File

@@ -1,387 +0,0 @@
{
"@metadata": {
"authors": [
")8",
"A Chinese Wikipedian",
"Ambeta",
"DGCK81LNN",
"Deathkon",
"Duzc2",
"Espertus",
"Htq110219891",
"Hudafu",
"Liuxinyu970226",
"Luotiancheng",
"Muhaoying",
"Qiyue2001",
"Shatteredwind",
"Shimamura Sakura",
"Tonylianlong",
"WindWood",
"Xiaomingyan",
"Yfdyh000",
"佛壁灯",
"沈澄心",
"아라"
]
},
"VARIABLES_DEFAULT_NAME": "项目",
"UNNAMED_KEY": "未命名",
"TODAY": "今天",
"DUPLICATE_BLOCK": "复制",
"ADD_COMMENT": "添加注释",
"REMOVE_COMMENT": "删除注释",
"DUPLICATE_COMMENT": "复制注释",
"EXTERNAL_INPUTS": "外部输入",
"INLINE_INPUTS": "单行输入",
"DELETE_BLOCK": "删除块",
"DELETE_X_BLOCKS": "删除 %1 个块",
"DELETE_ALL_BLOCKS": "删除所有 %1 个块吗?",
"CLEAN_UP": "整理块",
"COLLAPSE_BLOCK": "折叠块",
"COLLAPSE_ALL": "折叠块",
"EXPAND_BLOCK": "展开块",
"EXPAND_ALL": "展开块",
"DISABLE_BLOCK": "禁用块",
"ENABLE_BLOCK": "启用块",
"HELP": "帮助",
"UNDO": "撤销",
"REDO": "重做",
"CHANGE_VALUE_TITLE": "更改值:",
"RENAME_VARIABLE": "重命名变量...",
"RENAME_VARIABLE_TITLE": "将所有“%1”变量重命名为:",
"NEW_VARIABLE": "创建变量...",
"NEW_STRING_VARIABLE": "创建字符串变量...",
"NEW_NUMBER_VARIABLE": "创建数字变量...",
"NEW_COLOUR_VARIABLE": "创建颜色变量...",
"NEW_VARIABLE_TYPE_TITLE": "新变量的类型:",
"NEW_VARIABLE_TITLE": "新变量的名称:",
"VARIABLE_ALREADY_EXISTS": "名字叫“%1”的变量已经存在了。",
"VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "名字叫“%1”的变量已经有了另一个类型“%2”。",
"DELETE_VARIABLE_CONFIRMATION": "要删除对变量“%2”的%1个引用吗",
"CANNOT_DELETE_VARIABLE_PROCEDURE": "不能删除变量“%1”因为它是函数“%2”定义的一部分",
"DELETE_VARIABLE": "删除变量“%1”",
"COLOUR_PICKER_HELPURL": "https://zh.wikipedia.org/wiki/颜色",
"COLOUR_PICKER_TOOLTIP": "从调色板中选择一种颜色。",
"COLOUR_RANDOM_TITLE": "随机颜色",
"COLOUR_RANDOM_TOOLTIP": "随机选择一种颜色。",
"COLOUR_RGB_TITLE": "颜色",
"COLOUR_RGB_RED": "红色",
"COLOUR_RGB_GREEN": "绿色",
"COLOUR_RGB_BLUE": "蓝色",
"COLOUR_RGB_TOOLTIP": "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须在0和100之间。",
"COLOUR_BLEND_TITLE": "混合",
"COLOUR_BLEND_COLOUR1": "颜色1",
"COLOUR_BLEND_COLOUR2": "颜色2",
"COLOUR_BLEND_RATIO": "比例",
"COLOUR_BLEND_TOOLTIP": "把两种颜色以一个给定的比例(0.0-1.0)进行混合。",
"CONTROLS_REPEAT_HELPURL": "https://zh.wikipedia.org/wiki/For循环",
"CONTROLS_REPEAT_TITLE": "重复 %1 次",
"CONTROLS_REPEAT_INPUT_DO": "执行",
"CONTROLS_REPEAT_TOOLTIP": "多次执行一些语句。",
"CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "当条件满足时重复",
"CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "重复直到条件满足",
"CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "只要值为真,就一直循环执行一些语句。",
"CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "只要值为假,就一直循环执行一些语句。",
"CONTROLS_FOR_TOOLTIP": "用变量%1记录从开始数值到终止数值之间的数值数值按指定间隔增加并执行指定的块。",
"CONTROLS_FOR_TITLE": "变量 %1 从 %2 数到 %3 每次增加 %4",
"CONTROLS_FOREACH_TITLE": "遍历列表 %2 里的每一项 %1",
"CONTROLS_FOREACH_TOOLTIP": "遍历列表中的每一项,将变量“%1”设为所选项并执行一些语句。",
"CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "跳出循环",
"CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "继续下一轮循环",
"CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "跳出包含它的循环。",
"CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "跳过本轮循环的剩余部分,并继进行续下一轮循环。",
"CONTROLS_FLOW_STATEMENTS_WARNING": "警告:这个块只能在循环内使用。",
"CONTROLS_IF_TOOLTIP_1": "如果值为真,执行一些语句。",
"CONTROLS_IF_TOOLTIP_2": "如果值为真,则执行第一块语句。否则,则执行第二块语句。",
"CONTROLS_IF_TOOLTIP_3": "如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。",
"CONTROLS_IF_TOOLTIP_4": "如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。",
"CONTROLS_IF_MSG_IF": "如果",
"CONTROLS_IF_MSG_ELSEIF": "否则如果",
"CONTROLS_IF_MSG_ELSE": "否则",
"CONTROLS_IF_IF_TOOLTIP": "增加、删除或重新排列各节来重新配置这个if语句块。",
"CONTROLS_IF_ELSEIF_TOOLTIP": "在这个if语句块中增加一个条件。",
"CONTROLS_IF_ELSE_TOOLTIP": "在这个if语句块中添加一个最终的包括所有其余情况的条件。",
"IOS_OK": "确定",
"IOS_CANCEL": "取消",
"IOS_ERROR": "错误",
"IOS_PROCEDURES_INPUTS": "输入",
"IOS_PROCEDURES_ADD_INPUT": "+ 添加输入",
"IOS_PROCEDURES_ALLOW_STATEMENTS": "允许的语句",
"IOS_PROCEDURES_DUPLICATE_INPUTS_ERROR": "这个函数有多个输入。",
"IOS_VARIABLES_ADD_VARIABLE": "+ 添加变量",
"IOS_VARIABLES_ADD_BUTTON": "添加",
"IOS_VARIABLES_RENAME_BUTTON": "重命名",
"IOS_VARIABLES_DELETE_BUTTON": "删除",
"IOS_VARIABLES_VARIABLE_NAME": "变量名",
"IOS_VARIABLES_EMPTY_NAME_ERROR": "你不能使用空白的变量名。",
"LOGIC_COMPARE_HELPURL": "https://zh.wikipedia.org/wiki/不等",
"LOGIC_COMPARE_TOOLTIP_EQ": "如果两个输入结果相等,则返回真。",
"LOGIC_COMPARE_TOOLTIP_NEQ": "如果两个输入结果不相等,则返回真。",
"LOGIC_COMPARE_TOOLTIP_LT": "如果第一个输入结果比第二个小,则返回真。",
"LOGIC_COMPARE_TOOLTIP_LTE": "如果第一个输入结果小于或等于第二个输入结果,则返回真。",
"LOGIC_COMPARE_TOOLTIP_GT": "如果第一个输入结果比第二个大,则返回真。",
"LOGIC_COMPARE_TOOLTIP_GTE": "如果第一个输入结果大于或等于第二个输入结果,则返回真。",
"LOGIC_OPERATION_TOOLTIP_AND": "如果两个输入结果都为真,则返回真。",
"LOGIC_OPERATION_AND": "并且",
"LOGIC_OPERATION_TOOLTIP_OR": "如果至少有一个输入结果为真,则返回真。",
"LOGIC_OPERATION_OR": "或",
"LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not",
"LOGIC_NEGATE_TITLE": "%1不成立",
"LOGIC_NEGATE_TOOLTIP": "如果输入结果为假,则返回真;如果输入结果为真,则返回假。",
"LOGIC_BOOLEAN_TRUE": "真",
"LOGIC_BOOLEAN_FALSE": "假",
"LOGIC_BOOLEAN_TOOLTIP": "返回真或假。",
"LOGIC_NULL": "空",
"LOGIC_NULL_TOOLTIP": "返回空值。",
"LOGIC_TERNARY_HELPURL": "https://zh.wikipedia.org/wiki/条件运算符",
"LOGIC_TERNARY_CONDITION": "断言",
"LOGIC_TERNARY_IF_TRUE": "如果为真",
"LOGIC_TERNARY_IF_FALSE": "如果为假",
"LOGIC_TERNARY_TOOLTIP": "检查“断言”里的条件语句。如果条件为真,则返回“如果为真”的值,否则,则返回“如果为假”的值。",
"MATH_NUMBER_HELPURL": "https://zh.wikipedia.org/wiki/数",
"MATH_NUMBER_TOOLTIP": "一个数值。",
"MATH_ARITHMETIC_HELPURL": "https://zh.wikipedia.org/wiki/算术",
"MATH_ARITHMETIC_TOOLTIP_ADD": "返回两个数值的和。",
"MATH_ARITHMETIC_TOOLTIP_MINUS": "返回两个数值的差。",
"MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "返回两个数值的乘积。",
"MATH_ARITHMETIC_TOOLTIP_DIVIDE": "返回两个数值的商。",
"MATH_ARITHMETIC_TOOLTIP_POWER": "返回以第一个数值为底数,以第二个数值为幂的结果。",
"MATH_SINGLE_HELPURL": "https://zh.wikipedia.org/wiki/平方根",
"MATH_SINGLE_OP_ROOT": "平方根",
"MATH_SINGLE_TOOLTIP_ROOT": "返回一个数的平方根。",
"MATH_SINGLE_OP_ABSOLUTE": "绝对值",
"MATH_SINGLE_TOOLTIP_ABS": "返回一个数值的绝对值。",
"MATH_SINGLE_TOOLTIP_NEG": "返回一个数值的相反数。",
"MATH_SINGLE_TOOLTIP_LN": "返回一个数值的自然对数。",
"MATH_SINGLE_TOOLTIP_LOG10": "返回一个数值的以10为底的对数。",
"MATH_SINGLE_TOOLTIP_EXP": "返回一个数值的e次幂。",
"MATH_SINGLE_TOOLTIP_POW10": "返回一个数值的10次幂。",
"MATH_TRIG_HELPURL": "https://zh.wikipedia.org/wiki/三角函数",
"MATH_TRIG_TOOLTIP_SIN": "返回指定角度的正弦值(非弧度)。",
"MATH_TRIG_TOOLTIP_COS": "返回指定角度的余弦值(非弧度)。",
"MATH_TRIG_TOOLTIP_TAN": "返回指定角度的正切值(非弧度)。",
"MATH_TRIG_TOOLTIP_ASIN": "返回一个数值的反正弦值。",
"MATH_TRIG_TOOLTIP_ACOS": "返回一个数值的反余弦值。",
"MATH_TRIG_TOOLTIP_ATAN": "返回一个数值的反正切值。",
"MATH_CONSTANT_HELPURL": "https://zh.wikipedia.org/wiki/数学常数",
"MATH_CONSTANT_TOOLTIP": "返回一个常见常量:π (3.141…)、e (2.718…)、φ (1.618…)、根号2 (1.414…)、根号二分之一 (0.707…)或∞ (无穷大)。",
"MATH_IS_EVEN": "是偶数",
"MATH_IS_ODD": "是奇数",
"MATH_IS_PRIME": "是质数",
"MATH_IS_WHOLE": "是整数",
"MATH_IS_POSITIVE": "是正数",
"MATH_IS_NEGATIVE": "是负数",
"MATH_IS_DIVISIBLE_BY": "可被整除",
"MATH_IS_TOOLTIP": "检查一个数值是否是偶数、奇数、质数、自然数、正数、负数或者是否能被某数整除。返回真或假。",
"MATH_CHANGE_HELPURL": "https://zh.wikipedia.org/wiki/加法",
"MATH_CHANGE_TITLE": "将 %1 增加 %2",
"MATH_CHANGE_TOOLTIP": "为变量“%1”增加一个数值。",
"MATH_ROUND_HELPURL": "https://zh.wikipedia.org/wiki/数值修约",
"MATH_ROUND_TOOLTIP": "数字向上或向下舍入。",
"MATH_ROUND_OPERATOR_ROUND": "四舍五入",
"MATH_ROUND_OPERATOR_ROUNDUP": "向上舍入",
"MATH_ROUND_OPERATOR_ROUNDDOWN": "向下舍入",
"MATH_ONLIST_OPERATOR_SUM": "列表中数值的和",
"MATH_ONLIST_TOOLTIP_SUM": "返回列表中的所有数值的和。",
"MATH_ONLIST_OPERATOR_MIN": "列表最小值",
"MATH_ONLIST_TOOLTIP_MIN": "返回列表中最小值。",
"MATH_ONLIST_OPERATOR_MAX": "列表最大值",
"MATH_ONLIST_TOOLTIP_MAX": "返回列表中最大值。",
"MATH_ONLIST_OPERATOR_AVERAGE": "列表平均值",
"MATH_ONLIST_TOOLTIP_AVERAGE": "返回列表中的数值的平均值。",
"MATH_ONLIST_OPERATOR_MEDIAN": "列表中位数",
"MATH_ONLIST_TOOLTIP_MEDIAN": "返回列表中数值的中位数。",
"MATH_ONLIST_OPERATOR_MODE": "列表中的众数",
"MATH_ONLIST_TOOLTIP_MODE": "返回列表中的出现次数最多的项的列表。",
"MATH_ONLIST_OPERATOR_STD_DEV": "列表的标准差",
"MATH_ONLIST_TOOLTIP_STD_DEV": "返回列表的标准差。",
"MATH_ONLIST_OPERATOR_RANDOM": "列表中的随机一项",
"MATH_ONLIST_TOOLTIP_RANDOM": "从列表中返回一个随机的元素。",
"MATH_MODULO_HELPURL": "https://zh.wikipedia.org/wiki/模除",
"MATH_MODULO_TITLE": "取 %1 ÷ %2 的余数",
"MATH_MODULO_TOOLTIP": "返回这两个数字相除后的余数。",
"MATH_CONSTRAIN_TITLE": "将 %1 限制在 最低 %2 到最高 %3 之间",
"MATH_CONSTRAIN_TOOLTIP": "将一个数值限制在两个指定的数值范围(含边界)之间。",
"MATH_RANDOM_INT_HELPURL": "https://zh.wikipedia.org/wiki/随机数生成器",
"MATH_RANDOM_INT_TITLE": "从 %1 到 %2 范围内的随机整数",
"MATH_RANDOM_INT_TOOLTIP": "返回一个限制在两个指定数值的范围(含边界)之间的随机整数。",
"MATH_RANDOM_FLOAT_HELPURL": "https://zh.wikipedia.org/wiki/随机数生成器",
"MATH_RANDOM_FLOAT_TITLE_RANDOM": "随机小数",
"MATH_RANDOM_FLOAT_TOOLTIP": "返回一个从0.0到1.0(不含)之间的随机数。",
"MATH_ATAN2_HELPURL": "https://zh.wikipedia.org/wiki/反正切2",
"MATH_ATAN2_TITLE": "点(x:%1,y:%2)的方位角",
"MATH_ATAN2_TOOLTIP": "返回点XY的反正切值范围为-180到180度。",
"TEXT_TEXT_HELPURL": "https://zh.wikipedia.org/wiki/字符串",
"TEXT_TEXT_TOOLTIP": "一个字、词语或一行文本。",
"TEXT_JOIN_TITLE_CREATEWITH": "创建文本,内容:",
"TEXT_JOIN_TOOLTIP": "通过串起任意数量的项以建立一段文本。",
"TEXT_CREATE_JOIN_TITLE_JOIN": "拼接",
"TEXT_CREATE_JOIN_TOOLTIP": "添加、移除或重新排列各节来重新配置这个文本块。",
"TEXT_CREATE_JOIN_ITEM_TOOLTIP": "将一个项添加到文本中。",
"TEXT_APPEND_TITLE": "在%1之后加上文本%2",
"TEXT_APPEND_TOOLTIP": "将一些文本追加到变量“%1”里。",
"TEXT_LENGTH_TITLE": "%1的长度",
"TEXT_LENGTH_TOOLTIP": "返回给定文本的字母数(包括空格)。",
"TEXT_ISEMPTY_TITLE": "%1是空的",
"TEXT_ISEMPTY_TOOLTIP": "如果给定的文本为空,则返回真。",
"TEXT_INDEXOF_TOOLTIP": "返回第一个文本段在第二个文本段中的第一/最后一个匹配项的起始位置。如果未找到,则返回%1。",
"TEXT_INDEXOF_TITLE": "在文本 %1 里 %2 %3",
"TEXT_INDEXOF_OPERATOR_FIRST": "寻找第一次出现的文本",
"TEXT_INDEXOF_OPERATOR_LAST": "寻找最后一次出现的文本",
"TEXT_CHARAT_TITLE": "在文本%1 里 %2",
"TEXT_CHARAT_FROM_START": "获取第#个字符",
"TEXT_CHARAT_FROM_END": "获取倒数第#个字符",
"TEXT_CHARAT_FIRST": "获取第一个字符",
"TEXT_CHARAT_LAST": "获取最后一个字符",
"TEXT_CHARAT_RANDOM": "获取随机一个字符",
"TEXT_CHARAT_TAIL": "-",
"TEXT_CHARAT_TOOLTIP": "返回位于指定位置的字符。",
"TEXT_GET_SUBSTRING_TOOLTIP": "返回文本中指定的一部分。",
"TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "从文本",
"TEXT_GET_SUBSTRING_START_FROM_START": "获取子串,从第#个字符",
"TEXT_GET_SUBSTRING_START_FROM_END": "获取子串,从倒数第#个字符",
"TEXT_GET_SUBSTRING_START_FIRST": "获取子串,从第一个字符",
"TEXT_GET_SUBSTRING_END_FROM_START": "到第#个字符",
"TEXT_GET_SUBSTRING_END_FROM_END": "到倒数第#个字符",
"TEXT_GET_SUBSTRING_END_LAST": "到最后一个字符",
"TEXT_GET_SUBSTRING_TAIL": "-",
"TEXT_CHANGECASE_TOOLTIP": "用不同的大小写模式复制并返回这段文字。",
"TEXT_CHANGECASE_OPERATOR_UPPERCASE": "转为大写",
"TEXT_CHANGECASE_OPERATOR_LOWERCASE": "转为小写",
"TEXT_CHANGECASE_OPERATOR_TITLECASE": "转为首字母大写",
"TEXT_TRIM_TOOLTIP": "从某一端或同时从两端删除多余的空白,并返回这段文字的一个副本。",
"TEXT_TRIM_OPERATOR_BOTH": "消除其两侧的空白",
"TEXT_TRIM_OPERATOR_LEFT": "消除其左侧的空白",
"TEXT_TRIM_OPERATOR_RIGHT": "消除其右侧的空白",
"TEXT_PRINT_TITLE": "输出%1",
"TEXT_PRINT_TOOLTIP": "输出指定的文字、数字或其他值。",
"TEXT_PROMPT_TYPE_TEXT": "要求输入文本,并显示提示消息",
"TEXT_PROMPT_TYPE_NUMBER": "要求输入数字,并显示提示消息",
"TEXT_PROMPT_TOOLTIP_NUMBER": "要求用户输入数字。",
"TEXT_PROMPT_TOOLTIP_TEXT": "要求用户输入一些文本。",
"TEXT_COUNT_MESSAGE0": "计算%1在%2里出现的次数",
"TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings",
"TEXT_COUNT_TOOLTIP": "计算在一段文本中,某个部分文本重复出现了多少次。",
"TEXT_REPLACE_MESSAGE0": "把%3中的%1替换为%2",
"TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings",
"TEXT_REPLACE_TOOLTIP": "在一段文本中,将出现过的某部分文本都替换掉。",
"TEXT_REVERSE_MESSAGE0": "倒转文本%1",
"TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text",
"TEXT_REVERSE_TOOLTIP": "将文本中各个字符的顺序倒转。",
"LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list",
"LISTS_CREATE_EMPTY_TITLE": "创建空列表",
"LISTS_CREATE_EMPTY_TOOLTIP": "返回一个列表,长度为 0不包含任何数据记录",
"LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with",
"LISTS_CREATE_WITH_TOOLTIP": "建立一个具有任意数量项目的列表。",
"LISTS_CREATE_WITH_INPUT_WITH": "创建列表,内容:",
"LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "列表",
"LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "增加、删除或重新排列各部分以此重新配置这个列表块。",
"LISTS_CREATE_WITH_ITEM_TOOLTIP": "将一个项添加到列表中。",
"LISTS_REPEAT_TOOLTIP": "建立包含指定重复次数的值的列表。",
"LISTS_REPEAT_TITLE": "建立列表使用项 %1 重复 %2 次",
"LISTS_LENGTH_TITLE": "%1的长度",
"LISTS_LENGTH_TOOLTIP": "返回列表的长度。",
"LISTS_ISEMPTY_TITLE": "%1是空的",
"LISTS_ISEMPTY_TOOLTIP": "如果改列表为空,则返回真。",
"LISTS_INLIST": "在列表中",
"LISTS_INDEX_OF_FIRST": "寻找第一次出现的项",
"LISTS_INDEX_OF_LAST": "寻找最后一次出现的项",
"LISTS_INDEX_OF_TOOLTIP": "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。",
"LISTS_GET_INDEX_GET": "取得",
"LISTS_GET_INDEX_GET_REMOVE": "取得并移除",
"LISTS_GET_INDEX_REMOVE": "移除",
"LISTS_GET_INDEX_FROM_START": "#",
"LISTS_GET_INDEX_FROM_END": "倒数第#项",
"LISTS_GET_INDEX_FIRST": "第一项",
"LISTS_GET_INDEX_LAST": "最后一项",
"LISTS_GET_INDEX_RANDOM": "随机的一项",
"LISTS_GET_INDEX_TAIL": "-",
"LISTS_INDEX_FROM_START_TOOLTIP": "%1是第一项。",
"LISTS_INDEX_FROM_END_TOOLTIP": "%1是最后一项。",
"LISTS_GET_INDEX_TOOLTIP_GET_FROM": "返回在列表中的指定位置的项。",
"LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "返回列表中的第一项。",
"LISTS_GET_INDEX_TOOLTIP_GET_LAST": "返回列表中的最后一项。",
"LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "返回列表中的随机一项。",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "移除并返回列表中的指定位置的项。",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "移除并返回列表中的第一项。",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "移除并返回列表中的最后一项。",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "移除并返回列表中的随机一项。",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "移除在列表中的指定位置的项。",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "移除列表中的第一项",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "移除列表中的最后一项",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "删除列表中的随机一项。",
"LISTS_SET_INDEX_SET": "设置",
"LISTS_SET_INDEX_INSERT": "插入在",
"LISTS_SET_INDEX_INPUT_TO": "值为",
"LISTS_SET_INDEX_TOOLTIP_SET_FROM": "设置在列表中指定位置的项。",
"LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "设置列表中的第一项。",
"LISTS_SET_INDEX_TOOLTIP_SET_LAST": "设置列表中的最后一项。",
"LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "设置列表中的随机一项。",
"LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "在列表中指定位置插入项。",
"LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "在列表的起始处添加该项。",
"LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "在列表的末尾处添加该项。",
"LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "在列表的随机位置插入该项。",
"LISTS_GET_SUBLIST_START_FROM_START": "获取子列表,从第#项",
"LISTS_GET_SUBLIST_START_FROM_END": "获取子列表,从倒数第#项",
"LISTS_GET_SUBLIST_START_FIRST": "获取子列表,从第一项",
"LISTS_GET_SUBLIST_END_FROM_START": "到第#项",
"LISTS_GET_SUBLIST_END_FROM_END": "到倒数第#项",
"LISTS_GET_SUBLIST_END_LAST": "到最后一项",
"LISTS_GET_SUBLIST_TAIL": "-",
"LISTS_GET_SUBLIST_TOOLTIP": "复制列表中指定的部分。",
"LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list",
"LISTS_SORT_TITLE": "排序%1 %2 %3",
"LISTS_SORT_TOOLTIP": "排序一个列表,返回副本。",
"LISTS_SORT_ORDER_ASCENDING": "升序",
"LISTS_SORT_ORDER_DESCENDING": "降序",
"LISTS_SORT_TYPE_NUMERIC": "按数字",
"LISTS_SORT_TYPE_TEXT": "按字母",
"LISTS_SORT_TYPE_IGNORECASE": "按字母(忽略大小写)",
"LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists",
"LISTS_SPLIT_LIST_FROM_TEXT": "从文本制作列表",
"LISTS_SPLIT_TEXT_FROM_LIST": "将列表合并为文本",
"LISTS_SPLIT_WITH_DELIMITER": "分隔符:",
"LISTS_SPLIT_TOOLTIP_SPLIT": "将文本按指定的分隔符拆分为文本组成的列表。",
"LISTS_SPLIT_TOOLTIP_JOIN": "加入文本列表至一个文本,由分隔符分隔。",
"LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list",
"LISTS_REVERSE_MESSAGE0": "倒转%1",
"LISTS_REVERSE_TOOLTIP": "倒转一个列表,返回副本。",
"ORDINAL_NUMBER_SUFFIX": "-",
"VARIABLES_GET_TOOLTIP": "返回此变量的值。",
"VARIABLES_GET_CREATE_SET": "创建“设定%1”",
"VARIABLES_SET": "赋值 %1 为 %2",
"VARIABLES_SET_TOOLTIP": "设置此变量,以使它和输入值相等。",
"VARIABLES_SET_CREATE_GET": "创建“获得%1”",
"PROCEDURES_DEFNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序",
"PROCEDURES_DEFNORETURN_TITLE": "至",
"PROCEDURES_DEFNORETURN_PROCEDURE": "做点什么",
"PROCEDURES_BEFORE_PARAMS": "与:",
"PROCEDURES_CALL_BEFORE_PARAMS": "与:",
"PROCEDURES_DEFNORETURN_DO": "-",
"PROCEDURES_DEFNORETURN_TOOLTIP": "创建一个不带输出值的函数。",
"PROCEDURES_DEFNORETURN_COMMENT": "描述该功能...",
"PROCEDURES_DEFRETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序",
"PROCEDURES_DEFRETURN_RETURN": "返回",
"PROCEDURES_DEFRETURN_TOOLTIP": "创建一个有输出值的函数。",
"PROCEDURES_ALLOW_STATEMENTS": "允许声明",
"PROCEDURES_DEF_DUPLICATE_WARNING": "警告:此函数具有重复参数。",
"PROCEDURES_CALLNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序",
"PROCEDURES_CALLNORETURN_TOOLTIP": "运行用户定义的函数“%1”。",
"PROCEDURES_CALLRETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序",
"PROCEDURES_CALLRETURN_TOOLTIP": "运行用户定义的函数“%1”并使用它的输出值。",
"PROCEDURES_MUTATORCONTAINER_TITLE": "输入",
"PROCEDURES_MUTATORCONTAINER_TOOLTIP": "添加、移除或重新排此函数的输入。",
"PROCEDURES_MUTATORARG_TITLE": "输入名称:",
"PROCEDURES_MUTATORARG_TOOLTIP": "添加函数输入。",
"PROCEDURES_HIGHLIGHT_DEF": "突出显示函数定义",
"PROCEDURES_CREATE_DO": "创建“%1”",
"PROCEDURES_IFRETURN_TOOLTIP": "如果值为真,则返回第二个值。",
"PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause",
"PROCEDURES_IFRETURN_WARNING": "警告:这个块只能在函数内部使用。",
"WORKSPACE_COMMENT_DEFAULT_TEXT": "说点什么...",
"WORKSPACE_ARIA_LABEL": "Blockly工作区",
"COLLAPSED_WARNINGS_WARNING": "已收起的信息块内包含警告。",
"DIALOG_OK": "确认",
"DIALOG_CANCEL": "取消"
}

View File

@@ -1,365 +0,0 @@
{
"@metadata": {
"authors": [
"Cwlin0416",
"Dnow",
"Dnowba",
"Gasolin",
"Jessica1213",
"Kasimtan",
"Kly",
"LNDDYL",
"Liuxinyu970226",
"Wehwei",
"和平至上",
"沈澄心"
]
},
"VARIABLES_DEFAULT_NAME": "項目",
"UNNAMED_KEY": "未命名",
"TODAY": "今天",
"DUPLICATE_BLOCK": "複製",
"ADD_COMMENT": "加入註解",
"REMOVE_COMMENT": "移除註解",
"DUPLICATE_COMMENT": "複製註解",
"EXTERNAL_INPUTS": "外部輸入",
"INLINE_INPUTS": "單行輸入",
"DELETE_BLOCK": "刪除區塊",
"DELETE_X_BLOCKS": "刪除%1個積木",
"DELETE_ALL_BLOCKS": "刪除全部 %1 個區塊?",
"CLEAN_UP": "整理積木",
"COLLAPSE_BLOCK": "收合區塊",
"COLLAPSE_ALL": "收合積木",
"EXPAND_BLOCK": "展開區塊",
"EXPAND_ALL": "展開積木",
"DISABLE_BLOCK": "停用區塊",
"ENABLE_BLOCK": "啟用積木",
"HELP": "說明",
"UNDO": "還原",
"REDO": "重做",
"CHANGE_VALUE_TITLE": "修改值:",
"RENAME_VARIABLE": "重新命名變數...",
"RENAME_VARIABLE_TITLE": "將所有「%1」變數重新命名為",
"NEW_VARIABLE": "建立變數…",
"NEW_STRING_VARIABLE": "建立字串變數……",
"NEW_NUMBER_VARIABLE": "建立數值變數……",
"NEW_COLOUR_VARIABLE": "建立顏色變數…",
"NEW_VARIABLE_TYPE_TITLE": "新變數類型:",
"NEW_VARIABLE_TITLE": "新變數名稱:",
"VARIABLE_ALREADY_EXISTS": "已存在變數「%1」。",
"VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "已存在名為「%1」且用於其它類型「%2」的變數。",
"DELETE_VARIABLE_CONFIRMATION": "刪除使用%1次的「%2」變數",
"CANNOT_DELETE_VARIABLE_PROCEDURE": "無法刪除變數「%1」因為這是功能「%2」定義的一部份內容",
"DELETE_VARIABLE": "刪除變數「%1」",
"COLOUR_PICKER_HELPURL": "https://zh.wikipedia.org/wiki/顏色",
"COLOUR_PICKER_TOOLTIP": "從調色板中選擇一種顏色。",
"COLOUR_RANDOM_TITLE": "隨機顏色",
"COLOUR_RANDOM_TOOLTIP": "隨機選擇一種顏色。",
"COLOUR_RGB_TITLE": "顏色",
"COLOUR_RGB_RED": "紅",
"COLOUR_RGB_GREEN": "綠",
"COLOUR_RGB_BLUE": "藍",
"COLOUR_RGB_TOOLTIP": "透過指定紅、綠、 藍色的值來建立一種顏色。所有的值必須介於 0 和 100 之間。",
"COLOUR_BLEND_TITLE": "混合",
"COLOUR_BLEND_COLOUR1": "顏色 1",
"COLOUR_BLEND_COLOUR2": "顏色 2",
"COLOUR_BLEND_RATIO": "比例",
"COLOUR_BLEND_TOOLTIP": "用一個給定的比率0.0-1.0)混合兩種顏色。",
"CONTROLS_REPEAT_HELPURL": "https://zh.wikipedia.org/wiki/For迴圈",
"CONTROLS_REPEAT_TITLE": "重複%1次",
"CONTROLS_REPEAT_INPUT_DO": "執行",
"CONTROLS_REPEAT_TOOLTIP": "重複執行指定的陳述式多次。",
"CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "重複,當",
"CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "重複直到",
"CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "當值為 true 時,執行一些陳述式。",
"CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "當值為 false 時,執行一些陳述式。",
"CONTROLS_FOR_TOOLTIP": "從起始數到結尾數中取出變數「%1」的值按指定的時間間隔執行指定的區塊。",
"CONTROLS_FOR_TITLE": "循環計數 %1 從 %2 到 %3 每次增加 %4",
"CONTROLS_FOREACH_TITLE": "為列表 %2 裡的每一項 %1",
"CONTROLS_FOREACH_TOOLTIP": "遍歷每個清單中的項目,將變數「%1」設定到該項目中然後執行某些陳述式。",
"CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "中斷循環",
"CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "繼續下一個循環",
"CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "中斷當前的循環。",
"CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "跳過這個循環的其餘步驟,並繼續下一次的循環。",
"CONTROLS_FLOW_STATEMENTS_WARNING": "警告:此區塊僅可用於循環內。",
"CONTROLS_IF_TOOLTIP_1": "當值為 true 時,執行一些陳述式。",
"CONTROLS_IF_TOOLTIP_2": "當值為 true 時,執行第一個陳述式。否則,執行第二個陳述式。",
"CONTROLS_IF_TOOLTIP_3": "如果第一個值為 true則執行第一個陳述式。否則當第二個值為 true 時,則執行第二個陳述式。",
"CONTROLS_IF_TOOLTIP_4": "如果第一個值為 true則執行第一個陳述式。否則當第二個值為 true 時,則執行第二個陳述式。如果前幾個敘述都不為 ture則執行最後一個陳述式。",
"CONTROLS_IF_MSG_IF": "如果",
"CONTROLS_IF_MSG_ELSEIF": "否則,如果",
"CONTROLS_IF_MSG_ELSE": "否則",
"CONTROLS_IF_IF_TOOLTIP": "添加、刪除或重新排列各部份以重新配置這個「如果」區塊。",
"CONTROLS_IF_ELSEIF_TOOLTIP": "添加條件到「如果」積木。",
"CONTROLS_IF_ELSE_TOOLTIP": "加入一個最終、所有條件都執行的部份到「如果」區塊中。",
"IOS_OK": "確定",
"IOS_CANCEL": "取消",
"IOS_ERROR": "錯誤",
"IOS_PROCEDURES_INPUTS": "輸入",
"IOS_PROCEDURES_ADD_INPUT": "+ 添加輸入",
"IOS_PROCEDURES_ALLOW_STATEMENTS": "允許加入陳述式",
"IOS_PROCEDURES_DUPLICATE_INPUTS_ERROR": "此功能有多個輸入內容。",
"IOS_VARIABLES_ADD_VARIABLE": "+ 添加變數",
"IOS_VARIABLES_ADD_BUTTON": "添加",
"IOS_VARIABLES_RENAME_BUTTON": "重新命名",
"IOS_VARIABLES_DELETE_BUTTON": "刪除",
"IOS_VARIABLES_VARIABLE_NAME": "變數名稱",
"IOS_VARIABLES_EMPTY_NAME_ERROR": "您不能使用空的變數名稱。",
"LOGIC_COMPARE_HELPURL": "https://zh.wikipedia.org/wiki/不等",
"LOGIC_COMPARE_TOOLTIP_EQ": "如果這兩個輸入區塊的結果相等,返回 true。",
"LOGIC_COMPARE_TOOLTIP_NEQ": "如果這兩個輸入區塊的結果不相等,返回 true。",
"LOGIC_COMPARE_TOOLTIP_LT": "如果第一個輸入結果比第二個小,返回 true。",
"LOGIC_COMPARE_TOOLTIP_LTE": "如果第一個輸入結果小於或等於第二個,返回 true。",
"LOGIC_COMPARE_TOOLTIP_GT": "如果第一個輸入結果大於第二個,返回 true。",
"LOGIC_COMPARE_TOOLTIP_GTE": "如果第一個輸入結果大於或等於第二個,返回 true。",
"LOGIC_OPERATION_TOOLTIP_AND": "如果兩個輸入結果都為 true則返回 true。",
"LOGIC_OPERATION_AND": "和",
"LOGIC_OPERATION_TOOLTIP_OR": "如果至少一個輸入結果為 true返回 true。",
"LOGIC_OPERATION_OR": "或",
"LOGIC_NEGATE_TITLE": "%1 不成立",
"LOGIC_NEGATE_TOOLTIP": "如果輸入結果是 false則返回 true。如果輸入結果是 true則返回 false。",
"LOGIC_BOOLEAN_TRUE": "真",
"LOGIC_BOOLEAN_FALSE": "假",
"LOGIC_BOOLEAN_TOOLTIP": "返回真或假。",
"LOGIC_NULL": "空",
"LOGIC_NULL_TOOLTIP": "返回空值。",
"LOGIC_TERNARY_HELPURL": "https://zh.wikipedia.org/wiki/條件運算符",
"LOGIC_TERNARY_CONDITION": "測試",
"LOGIC_TERNARY_IF_TRUE": "如果為真",
"LOGIC_TERNARY_IF_FALSE": "如果為假",
"LOGIC_TERNARY_TOOLTIP": "檢查「測試」中的條件。如果條件為真,將返回「如果為真」的值;否則,返回「如果為假」的值。",
"MATH_NUMBER_HELPURL": "https://zh.wikipedia.org/wiki/數",
"MATH_NUMBER_TOOLTIP": "一個數字。",
"MATH_ARITHMETIC_HELPURL": "https://zh.wikipedia.org/wiki/算術",
"MATH_ARITHMETIC_TOOLTIP_ADD": "返回兩個數字的總和。",
"MATH_ARITHMETIC_TOOLTIP_MINUS": "返回兩個數字的差。",
"MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "返回兩個數字的乘積。",
"MATH_ARITHMETIC_TOOLTIP_DIVIDE": "返回兩個數字的商。",
"MATH_ARITHMETIC_TOOLTIP_POWER": "返回第二個數字的指數的第一個數字。",
"MATH_SINGLE_HELPURL": "https://zh.wikipedia.org/wiki/平方根",
"MATH_SINGLE_OP_ROOT": "開根號",
"MATH_SINGLE_TOOLTIP_ROOT": "返回指定數字的平方根。",
"MATH_SINGLE_OP_ABSOLUTE": "絕對值",
"MATH_SINGLE_TOOLTIP_ABS": "返回指定數字的絕對值。",
"MATH_SINGLE_TOOLTIP_NEG": "返回指定數字的相反數。",
"MATH_SINGLE_TOOLTIP_LN": "返回指定數字的自然對數。",
"MATH_SINGLE_TOOLTIP_LOG10": "返回指定數字的對數。",
"MATH_SINGLE_TOOLTIP_EXP": "返回指定數字指數的e的冪次。",
"MATH_SINGLE_TOOLTIP_POW10": "返回指定數字指數的10的冪次。",
"MATH_TRIG_HELPURL": "https://zh.wikipedia.org/wiki/三角函數",
"MATH_TRIG_TOOLTIP_SIN": "返回指定角度的正弦值(非弧度)。",
"MATH_TRIG_TOOLTIP_COS": "返回指定角度的餘弦值(非弧度)。",
"MATH_TRIG_TOOLTIP_TAN": "返回指定角度的正切值(非弧度)。",
"MATH_TRIG_TOOLTIP_ASIN": "返回指定角度的反正弦值(非弧度)。",
"MATH_TRIG_TOOLTIP_ACOS": "返回指定角度的反餘弦值(非弧度)。",
"MATH_TRIG_TOOLTIP_ATAN": "返回指定角度的反正切值。",
"MATH_CONSTANT_HELPURL": "https://zh.wikipedia.org/wiki/數學常數",
"MATH_CONSTANT_TOOLTIP": "返回一個的常見常量: π (3.141......)e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。",
"MATH_IS_EVEN": "是偶數",
"MATH_IS_ODD": "是奇數",
"MATH_IS_PRIME": "是質數",
"MATH_IS_WHOLE": "是整數",
"MATH_IS_POSITIVE": "是正值",
"MATH_IS_NEGATIVE": "是負數",
"MATH_IS_DIVISIBLE_BY": "可被整除",
"MATH_IS_TOOLTIP": "如果數字是偶數,奇數,非負整數,正數、 負數,或如果它是可被某數字整除,則返回 true 或 false。",
"MATH_CHANGE_HELPURL": "https://zh.wikipedia.org/wiki/加法",
"MATH_CHANGE_TITLE": "修改 %1 自 %2",
"MATH_CHANGE_TOOLTIP": "將數字加到變數「%1」。",
"MATH_ROUND_HELPURL": "https://zh.wikipedia.org/wiki/數值簡化",
"MATH_ROUND_TOOLTIP": "將數字無條件進位或無條件捨去。",
"MATH_ROUND_OPERATOR_ROUND": "四捨五入",
"MATH_ROUND_OPERATOR_ROUNDUP": "無條件進位",
"MATH_ROUND_OPERATOR_ROUNDDOWN": "無條件捨去",
"MATH_ONLIST_OPERATOR_SUM": "數字總和 自清單",
"MATH_ONLIST_TOOLTIP_SUM": "返回清單中的所有數字的總和。",
"MATH_ONLIST_OPERATOR_MIN": "最小值 自清單",
"MATH_ONLIST_TOOLTIP_MIN": "返回清單項目中最小的數字。",
"MATH_ONLIST_OPERATOR_MAX": "最大值 自清單",
"MATH_ONLIST_TOOLTIP_MAX": "返回清單項目中最大的數字。",
"MATH_ONLIST_OPERATOR_AVERAGE": "平均數 自清單",
"MATH_ONLIST_TOOLTIP_AVERAGE": "返回清單中數值的平均值(算術平均值)。",
"MATH_ONLIST_OPERATOR_MEDIAN": "中位數 自清單",
"MATH_ONLIST_TOOLTIP_MEDIAN": "返回清單中數值的中位數。",
"MATH_ONLIST_OPERATOR_MODE": "比較眾數 自清單",
"MATH_ONLIST_TOOLTIP_MODE": "返回一個清單中的最常見的項目。",
"MATH_ONLIST_OPERATOR_STD_DEV": "標準差 自清單",
"MATH_ONLIST_TOOLTIP_STD_DEV": "返回清單中數字的標準差。",
"MATH_ONLIST_OPERATOR_RANDOM": "隨機抽取 自清單",
"MATH_ONLIST_TOOLTIP_RANDOM": "從清單中返回一個隨機的項目。",
"MATH_MODULO_HELPURL": "https://zh.wikipedia.org/wiki/模除",
"MATH_MODULO_TITLE": "%1 除以 %2 的餘數",
"MATH_MODULO_TOOLTIP": "回傳兩個數字相除的餘數。",
"MATH_CONSTRAIN_TITLE": "限制數字 %1 介於(低)%2 到(高)%3",
"MATH_CONSTRAIN_TOOLTIP": "限制數字介於兩個指定的數字之間(包含)。",
"MATH_RANDOM_INT_HELPURL": "https://zh.wikipedia.org/wiki/隨機數生成器",
"MATH_RANDOM_INT_TITLE": "隨機取數 %1 到 %2",
"MATH_RANDOM_INT_TOOLTIP": "在指定二個數之間隨機取一個數(包含)。",
"MATH_RANDOM_FLOAT_HELPURL": "https://zh.wikipedia.org/wiki/隨機數生成器",
"MATH_RANDOM_FLOAT_TITLE_RANDOM": "隨機取分數",
"MATH_RANDOM_FLOAT_TOOLTIP": "在 0.0(包含)和 1.0(不包含)之間隨機取一個數。",
"MATH_ATAN2_HELPURL": "https://zh.wikipedia.org/wiki/Atan2",
"MATH_ATAN2_TITLE": "X:%1 Y:%2 的 Atan2",
"MATH_ATAN2_TOOLTIP": "回傳點XY從 -180 至 180 度的反正切值。",
"TEXT_TEXT_HELPURL": "https://zh.wikipedia.org/wiki/字串",
"TEXT_TEXT_TOOLTIP": "一個字元、一個單詞,或一串文字。",
"TEXT_JOIN_TITLE_CREATEWITH": "字串組合",
"TEXT_JOIN_TOOLTIP": "通過連接任意數量的項目來建立一串文字。",
"TEXT_CREATE_JOIN_TITLE_JOIN": "加入",
"TEXT_CREATE_JOIN_TOOLTIP": "添加、刪除或重新排列各部份以重新配置這個文字區塊。",
"TEXT_CREATE_JOIN_ITEM_TOOLTIP": "添加一個項目到字串中。",
"TEXT_APPEND_TITLE": "至 %1 套用文字 %2",
"TEXT_APPEND_TOOLTIP": "添加一些文字到變數「%1」之後。",
"TEXT_LENGTH_TITLE": "長度 %1",
"TEXT_LENGTH_TOOLTIP": "返回這串文字的字元數(包含空格)。",
"TEXT_ISEMPTY_TITLE": "%1 為空",
"TEXT_ISEMPTY_TOOLTIP": "如果提供的字串為空,則返回 true。",
"TEXT_INDEXOF_TOOLTIP": "在字串1中檢索是否有包含字串2如果有返回從頭/倒數算起的索引值。如果沒有則返回 %1。",
"TEXT_INDEXOF_TITLE": "在文字 %1 %2 %3",
"TEXT_INDEXOF_OPERATOR_FIRST": "從 最前面 索引字串",
"TEXT_INDEXOF_OPERATOR_LAST": "從 最後面 索引字串",
"TEXT_CHARAT_TITLE": "在文字 %1 %2",
"TEXT_CHARAT_FROM_START": "取得 字元 #",
"TEXT_CHARAT_FROM_END": "取得 倒數第 # 個字元",
"TEXT_CHARAT_FIRST": "取得 第一個字元",
"TEXT_CHARAT_LAST": "取得 最後一個字元",
"TEXT_CHARAT_RANDOM": "取得 任意字元",
"TEXT_CHARAT_TOOLTIP": "返回位於指定位置的字元。",
"TEXT_GET_SUBSTRING_TOOLTIP": "返回指定的部分文字。",
"TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "在字串",
"TEXT_GET_SUBSTRING_START_FROM_START": "取得 字元 #",
"TEXT_GET_SUBSTRING_START_FROM_END": "取得 倒數第 # 個字元",
"TEXT_GET_SUBSTRING_START_FIRST": "取得 第一個字元",
"TEXT_GET_SUBSTRING_END_FROM_START": "到 字元 #",
"TEXT_GET_SUBSTRING_END_FROM_END": "到 倒數第 # 個字元",
"TEXT_GET_SUBSTRING_END_LAST": "到最後一個字元",
"TEXT_CHANGECASE_TOOLTIP": "使用不同的大小寫複製這段文字。",
"TEXT_CHANGECASE_OPERATOR_UPPERCASE": "轉成英文大寫",
"TEXT_CHANGECASE_OPERATOR_LOWERCASE": "轉成英文小寫",
"TEXT_CHANGECASE_OPERATOR_TITLECASE": "轉成英文首字大寫",
"TEXT_TRIM_TOOLTIP": "複製這段文字,同時刪除兩端多餘的空格。",
"TEXT_TRIM_OPERATOR_BOTH": "消除兩側空格",
"TEXT_TRIM_OPERATOR_LEFT": "消除左側空格",
"TEXT_TRIM_OPERATOR_RIGHT": "消除右側空格",
"TEXT_PRINT_TITLE": "輸出 %1",
"TEXT_PRINT_TOOLTIP": "輸出指定的文字、 數字或其他值。",
"TEXT_PROMPT_TYPE_TEXT": "輸入 文字 並顯示提示訊息",
"TEXT_PROMPT_TYPE_NUMBER": "輸入 數字 並顯示提示訊息",
"TEXT_PROMPT_TOOLTIP_NUMBER": "輸入數字",
"TEXT_PROMPT_TOOLTIP_TEXT": "輸入文字",
"TEXT_COUNT_MESSAGE0": "在%2計算%1",
"TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings",
"TEXT_COUNT_TOOLTIP": "計算某些文字在內容裡的出現次數。",
"TEXT_REPLACE_MESSAGE0": "在%3以%2取代%1",
"TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings",
"TEXT_REPLACE_TOOLTIP": "取代在內容裡的全部某些文字。",
"TEXT_REVERSE_MESSAGE0": "反轉%1",
"TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text",
"TEXT_REVERSE_TOOLTIP": "反轉排序在文字裡的字元。",
"LISTS_CREATE_EMPTY_TITLE": "建立空的清單",
"LISTS_CREATE_EMPTY_TOOLTIP": "返回一個長度(項目數量)為 0 的清單,不包含任何資料記錄",
"LISTS_CREATE_WITH_TOOLTIP": "建立一個具備任意數量項目的清單。",
"LISTS_CREATE_WITH_INPUT_WITH": "使用這些值建立清單",
"LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "清單",
"LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "添加、刪除或重新排列各部份以重新配置這個清單區塊。",
"LISTS_CREATE_WITH_ITEM_TOOLTIP": "添加一個項目到清單裡。",
"LISTS_REPEAT_TOOLTIP": "建立一個清單,項目中包含指定重複次數的值。",
"LISTS_REPEAT_TITLE": "建立清單使用項目 %1 重複 %2 次",
"LISTS_LENGTH_TITLE": "長度 %1",
"LISTS_LENGTH_TOOLTIP": "返回清單的長度(項目數)。",
"LISTS_ISEMPTY_TITLE": "%1 值為空",
"LISTS_ISEMPTY_TOOLTIP": "如果該清單為空,則返回 true。",
"LISTS_INLIST": "自清單",
"LISTS_INDEX_OF_FIRST": "從 最前面 索引項目",
"LISTS_INDEX_OF_LAST": "從 最後面 索引項目",
"LISTS_INDEX_OF_TOOLTIP": "在清單中檢索是否有包含項目,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。",
"LISTS_GET_INDEX_GET": "取得",
"LISTS_GET_INDEX_GET_REMOVE": "取得並移除",
"LISTS_GET_INDEX_REMOVE": "移除",
"LISTS_GET_INDEX_FROM_END": "倒數第 # 筆",
"LISTS_GET_INDEX_FIRST": "第一筆",
"LISTS_GET_INDEX_LAST": "最後一筆",
"LISTS_GET_INDEX_RANDOM": "隨機",
"LISTS_INDEX_FROM_START_TOOLTIP": "%1 是第一個項目。",
"LISTS_INDEX_FROM_END_TOOLTIP": "%1 是最後一個項目。",
"LISTS_GET_INDEX_TOOLTIP_GET_FROM": "返回在清單中指定位置的項目。",
"LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "返回清單中的第一個項目。",
"LISTS_GET_INDEX_TOOLTIP_GET_LAST": "返回清單中的最後一個項目。",
"LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "返回清單中隨機一個項目。",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "移除並返回清單中的指定位置的項目。",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "移除並返回清單中的第一個項目。",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "移除並返回清單中的最後一個項目。",
"LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "移除並返回清單中的隨機項目。",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "移除在清單中指定位置的項目。",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "移除清單中的第一個項目。",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "移除清單中的最後一個項目。",
"LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "移除清單中隨機一個項目。",
"LISTS_SET_INDEX_SET": "設定",
"LISTS_SET_INDEX_INSERT": "添加",
"LISTS_SET_INDEX_INPUT_TO": "為",
"LISTS_SET_INDEX_TOOLTIP_SET_FROM": "設定清單中指定位置的項目。",
"LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "設定清單中的第一個項目。",
"LISTS_SET_INDEX_TOOLTIP_SET_LAST": "設定清單中的最後一個項目。",
"LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "設定清單中隨機一個項目。",
"LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "添加一個項目到清單中的指定位置。",
"LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "添加一個項目到清單中的第一個位置。",
"LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "添加一個項目到清單中的最後一個位置。",
"LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "添加一個項目到清單中的隨機位置。",
"LISTS_GET_SUBLIST_START_FROM_START": "取得子清單 從 #",
"LISTS_GET_SUBLIST_START_FROM_END": "取得子清單 從 # 倒數",
"LISTS_GET_SUBLIST_START_FIRST": "取得子清單 從 最前面",
"LISTS_GET_SUBLIST_END_FROM_START": "到 #",
"LISTS_GET_SUBLIST_END_FROM_END": "到 # 倒數",
"LISTS_GET_SUBLIST_END_LAST": "到 最後面",
"LISTS_GET_SUBLIST_TOOLTIP": "複製清單中指定的部分。",
"LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list",
"LISTS_SORT_TITLE": "排列 %1 %2 %3",
"LISTS_SORT_TOOLTIP": "排序清單的複製內容。",
"LISTS_SORT_ORDER_ASCENDING": "升序",
"LISTS_SORT_ORDER_DESCENDING": "降序",
"LISTS_SORT_TYPE_NUMERIC": "依數字",
"LISTS_SORT_TYPE_TEXT": "依字母",
"LISTS_SORT_TYPE_IGNORECASE": "依字母排序,忽略大小寫",
"LISTS_SPLIT_LIST_FROM_TEXT": "從文本製作清單",
"LISTS_SPLIT_TEXT_FROM_LIST": "從清單拆出文本",
"LISTS_SPLIT_WITH_DELIMITER": "用分隔符",
"LISTS_SPLIT_TOOLTIP_SPLIT": "將文本變成清單項目,按分隔符號拆分。",
"LISTS_SPLIT_TOOLTIP_JOIN": "串起清單項目成一個文本,並用分隔符號分開。",
"LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list",
"LISTS_REVERSE_MESSAGE0": "反轉%1",
"LISTS_REVERSE_TOOLTIP": "反轉清單的複製內容。",
"VARIABLES_GET_TOOLTIP": "返回此變數的值。",
"VARIABLES_GET_CREATE_SET": "建立「賦值 %1」",
"VARIABLES_SET": "賦值 %1 成 %2",
"VARIABLES_SET_TOOLTIP": "設定此變數,好和輸入結果相等。",
"VARIABLES_SET_CREATE_GET": "建立「取得 %1」",
"PROCEDURES_DEFNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程式",
"PROCEDURES_DEFNORETURN_TITLE": "到",
"PROCEDURES_DEFNORETURN_PROCEDURE": "做些什麼",
"PROCEDURES_BEFORE_PARAMS": "與:",
"PROCEDURES_CALL_BEFORE_PARAMS": "與:",
"PROCEDURES_DEFNORETURN_TOOLTIP": "創建一個無回傳值的函式。",
"PROCEDURES_DEFNORETURN_COMMENT": "描述此函式...",
"PROCEDURES_DEFRETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程式",
"PROCEDURES_DEFRETURN_RETURN": "返回",
"PROCEDURES_DEFRETURN_TOOLTIP": "創建一個有回傳值的的函式。",
"PROCEDURES_ALLOW_STATEMENTS": "允許陳述式",
"PROCEDURES_DEF_DUPLICATE_WARNING": "警告: 此函式中有重複的參數。",
"PROCEDURES_CALLNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程式",
"PROCEDURES_CALLNORETURN_TOOLTIP": "執行使用者定義的函式「%1」。",
"PROCEDURES_CALLRETURN_HELPURL": "https://zh.wikipedia.org/wiki/%E5%AD%90%E7%A8%8B%E5%BA%8F",
"PROCEDURES_CALLRETURN_TOOLTIP": "執行使用者定義的函式「%1」並使用它的回傳值。",
"PROCEDURES_MUTATORCONTAINER_TITLE": "輸入",
"PROCEDURES_MUTATORCONTAINER_TOOLTIP": "添加、刪除或重新排列此函式的輸入。",
"PROCEDURES_MUTATORARG_TITLE": "輸入名稱:",
"PROCEDURES_MUTATORARG_TOOLTIP": "添加一個輸入區塊到函式。",
"PROCEDURES_HIGHLIGHT_DEF": "反白顯示函式定義",
"PROCEDURES_CREATE_DO": "建立「%1」",
"PROCEDURES_IFRETURN_TOOLTIP": "如果值為 true則返回第二個值。",
"PROCEDURES_IFRETURN_WARNING": "警告:這個區塊只可以在定義函式時使用。",
"WORKSPACE_COMMENT_DEFAULT_TEXT": "來說些事情...",
"WORKSPACE_ARIA_LABEL": "Blockly工作區",
"COLLAPSED_WARNINGS_WARNING": "收合含有警告的區塊。",
"DIALOG_OK": "確定",
"DIALOG_CANCEL": "取消"
}

File diff suppressed because it is too large Load Diff

View File

@@ -9,13 +9,9 @@
<title>MixIO</title> <title>MixIO</title>
<link rel="shortcut icon" href="img/shortcut.png"/> <link rel="shortcut icon" href="img/shortcut.png"/>
<link rel="stylesheet" href="css/all.css"> <link rel="stylesheet" href="css/all.css">
<script src="js/codemirror.min.js"></script>
<script src="js/jquery.min.js"></script> <script src="js/jquery.min.js"></script>
<!-- script src="js/tf.min.js"></script -->
<!-- script src="js/faceapi.min.js"></script -->
<script src="js/lang.js?v=5"></script> <script src="js/lang.js?v=5"></script>
<script src="js/farbtastic.js"></script> <script src="js/farbtastic.js"></script>
<!-- script src="js/jsqr.js"></script -->
<script src="js/bootstrap.bundle.min.js"></script> <script src="js/bootstrap.bundle.min.js"></script>
<script src="js/jquery.easing.min.js"></script> <script src="js/jquery.easing.min.js"></script>
<script src="js/echarts.min.js"></script> <script src="js/echarts.min.js"></script>
@@ -30,12 +26,6 @@
<script src="js/jsgrid.min.js"></script> <script src="js/jsgrid.min.js"></script>
<script src="js/tools.js?v=14"></script> <script src="js/tools.js?v=14"></script>
<script src="js/widgets.js?v=73"></script> <script src="js/widgets.js?v=73"></script>
<script src="blockly/blockly_compressed.js"></script>
<script src="blockly/blocks_compressed.js"></script>
<script src="blockly/javascript_compressed.js"></script>
<script src="blockly/iot/IOT_Blocks.js?v=13"></script>
<script src="blockly/iot/IOT_Generate.js?v=13"></script>
<script src="blockly/msg/js/zh-hans.js?v=9"></script>
<script>var OFFLINE_MODE = <%=configs['OFFLINE_MODE']%></script> <script>var OFFLINE_MODE = <%=configs['OFFLINE_MODE']%></script>
<script>var MAX_PROJECT_NUM_PER_USER = <%=configs['MAX_PROJECT_NUM_PER_USER']%></script> <script>var MAX_PROJECT_NUM_PER_USER = <%=configs['MAX_PROJECT_NUM_PER_USER']%></script>

View File

@@ -4,9 +4,16 @@ var globalBLE = {}
function copy(obj) { function copy(obj) {
return JSON.parse(JSON.stringify(obj)) return JSON.parse(JSON.stringify(obj))
} }
globalGottenScripts = [];
(function () { (function () {
$.getScript = function(url, callback, cache) $.getScript = function(url, callback, cache)
{ {
if(globalGottenScripts.indexOf(url) != -1)
{
callback();
return;
}
globalGottenScripts.push(url);
$.ajax({ $.ajax({
type: "GET", type: "GET",
url: url, url: url,
@@ -283,14 +290,18 @@ function edit_project(prjName, prjType) {
d.showModal(); d.showModal();
} }
function run_project() { async function run_project() {
if ((typeof Notification) != "undefined") if ((typeof Notification) != "undefined")
Notification.requestPermission(); Notification.requestPermission();
isRunning = true isRunning = true
$(".facial").attr("hidden", "hidden") $(".facial").attr("hidden", "hidden")
try { try {
var logicFunction = Function(globalCode); var logicFunction = Function(globalCode);
logicFunction() if(globalCode!="")
{
await init_codemirror();
logicFunction()
}
} catch (e) { } catch (e) {
MixIO.log(e) MixIO.log(e)
showtext(JSLang[lang].logicError) showtext(JSLang[lang].logicError)
@@ -632,138 +643,160 @@ function workspaceToDom() {
function view_project(projectName, projectType) { function view_project(projectName, projectType) {
var init_codemirror = function() { init_codemirror = function() {
if (!grid3.children()[0]) { return new Promise(function(resolve, reject) {
customTheme() var modald = showmodaltext("<div style='text-align:center'><i class='fa fa-spin fa-cog' style='font-size:2rem;color:#4e73df'></i><p style='margin-top:6px;margin-bottom:0;color:#4e73df;font-size:1rem;font-weight:bold'>加载逻辑引擎...</p></div>")
var mainDiv = $("<div style='width:100%;height:100%;overflow:hidden;white-space:nowrap'></div>") $.getScript("js/codemirror.min.js", function(){
grid3.append(mainDiv) $.getScript("blockly/blockly_compressed.js", function() {
var leftDiv = $("<div id='block' style='height:100%;display:inline-block;border-right:3px dashed #4e73df'></div>") $.getScript("blockly/blocks_compressed.js", function() {
leftDiv.css("width", mainDiv.width() / 7 * 4 + "px") $.getScript("blockly/javascript_compressed.js", function() {
mainDiv.append(leftDiv) $.getScript("blockly/iot/IOT_Blocks.js?v=1", function() {
workspace = Blockly.inject('block', { var currentProjectType = globalProjectType
toolbox: document.getElementById('toolbox'), globalProjectType = LOGIC_MODE
media: 'blockly/media/', switch_mode()
zoom: {
controls: true, if (!grid3.children()[0]) {
wheel: true, Blockly.registry.register(
startScale: 0.75, Blockly.registry.Type.TOOLBOX_ITEM,
maxScale: 4, Blockly.ToolboxCategory.registrationName,
minScale: 0.25, CustomCategory, true);
scaleSpeed: 1.1 var mainDiv = $("<div style='width:100%;height:100%;overflow:hidden;white-space:nowrap'></div>")
}, grid3.append(mainDiv)
}); var leftDiv = $("<div id='block' style='height:100%;display:inline-block;border-right:3px dashed #4e73df'></div>")
//Blockly.Variables.createVariable_(workspace,null,"topic") leftDiv.css("width", mainDiv.width() / 7 * 4 + "px")
//Blockly.Variables.createVariable_(workspace,null,"message") mainDiv.append(leftDiv)
var toJS = function() { workspace = Blockly.inject('block', {
MixIO.triggersToPreCode() toolbox: document.getElementById('toolbox'),
MixIO.editor.setValue(MixIO.preCode + Blockly.JavaScript.workspaceToCode(workspace)) media: 'blockly/media/',
} zoom: {
controls: true,
wheel: true,
startScale: 0.75,
maxScale: 4,
minScale: 0.25,
scaleSpeed: 1.1
},
});
var toJS = function() {
MixIO.triggersToPreCode()
MixIO.editor.setValue(MixIO.preCode + Blockly.JavaScript.workspaceToCode(workspace))
}
function ast(event) { function ast(event) {
toJS() toJS()
workspaceToDom() workspaceToDom()
} }
workspace.addChangeListener(ast); workspace.addChangeListener(ast);
var rightDiv = $("<div style='height:100%;display:inline-block'></div>") var rightDiv = $("<div style='height:100%;display:inline-block'></div>")
rightDiv.css("width", mainDiv.width() / 7 * 3 + "px") rightDiv.css("width", mainDiv.width() / 7 * 3 + "px")
mainDiv.append(rightDiv) mainDiv.append(rightDiv)
leftDiv.resizable({ leftDiv.resizable({
handles: "w,e", handles: "w,e",
onResize: function() { onResize: function() {
MixIO.editor.setSize((mainDiv.width() - leftDiv.width()) + "px", '50%') MixIO.editor.setSize((mainDiv.width() - leftDiv.width()) + "px", '50%')
rightDiv.css("width", (mainDiv.width() - leftDiv.width()) + "px") rightDiv.css("width", (mainDiv.width() - leftDiv.width()) + "px")
Blockly.svgResize(workspace); Blockly.svgResize(workspace);
}, },
onStopResize: function() { onStopResize: function() {
MixIO.editor.setSize((mainDiv.width() - leftDiv.width()) + "px", '50%') MixIO.editor.setSize((mainDiv.width() - leftDiv.width()) + "px", '50%')
rightDiv.css("width", (mainDiv.width() - leftDiv.width()) + "px") rightDiv.css("width", (mainDiv.width() - leftDiv.width()) + "px")
} }
}) })
window.addEventListener('resize', function() { window.addEventListener('resize', function() {
MixIO.editor.setSize((mainDiv.width() - leftDiv.width()) + "px", '50%') MixIO.editor.setSize((mainDiv.width() - leftDiv.width()) + "px", '50%')
rightDiv.css("width", (mainDiv.width() - leftDiv.width()) + "px") rightDiv.css("width", (mainDiv.width() - leftDiv.width()) + "px")
Blockly.svgResize(workspace); Blockly.svgResize(workspace);
}) })
var jTa = $("<textarea style='height:50%'></textarea>") var jTa = $("<textarea style='height:50%'></textarea>")
rightDiv.append(jTa) rightDiv.append(jTa)
if (globalXML != "") { if (globalXML != "") {
Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(stringendecoder.decodeHtml(globalXML).replaceAll("&", "&amp;")), workspace); Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(stringendecoder.decodeHtml(globalXML).replaceAll("&", "&amp;")), workspace);
} }
MixIO.editor = CodeMirror.fromTextArea(jTa[0], { MixIO.editor = CodeMirror.fromTextArea(jTa[0], {
mode: "text/javascript", mode: "text/javascript",
lineNumbers: true, lineNumbers: true,
matchBrackets: true, matchBrackets: true,
hintOptions: { hintOptions: {
completeSingle: false completeSingle: false
} }
}); });
MixIO.editor.on("inputRead", function(instance, changeObj) { MixIO.editor.on("inputRead", function(instance, changeObj) {
if (isRunning) { if (isRunning) {
showtext(JSLang[lang].pauseBeforeModify) showtext(JSLang[lang].pauseBeforeModify)
} }
if (/^[a-zA-Z]/.test(changeObj.text[0])) { if (/^[a-zA-Z]/.test(changeObj.text[0])) {
var words = MixIO.editor.getValue() + ""; var words = MixIO.editor.getValue() + "";
words = words.replace(/[a-z]+[\-|\']+[a-z]+/ig, '').match(/([a-z]+)/ig); words = words.replace(/[a-z]+[\-|\']+[a-z]+/ig, '').match(/([a-z]+)/ig);
CodeMirror.ukeys = words; CodeMirror.ukeys = words;
MixIO.editor.showHint(); MixIO.editor.showHint();
} }
}); });
MixIO.editor.on('change', function() { MixIO.editor.on('change', function() {
globalCode = MixIO.editor.getValue() globalCode = MixIO.editor.getValue()
}) })
MixIO.editor.setSize('100%', '50%') MixIO.editor.setSize('100%', '50%')
MixIO.editor.setValue(globalCode) MixIO.editor.setValue(globalCode)
MixIO.editor.setCursor(MixIO.editor.lineCount(), 0); MixIO.editor.setCursor(MixIO.editor.lineCount(), 0);
var jTa2Div = $("<div style='font-family:monospace;height:50%;background-color:white'></div>") var jTa2Div = $("<div style='font-family:monospace;height:50%;background-color:white'></div>")
jTa2Div.append($('<div style="height:2rem;display:flex;align-items:center;background-image: linear-gradient(to right, #4e73df, #b6c5f2);padding-left:5px;font-size:1rem;color:white"><p style="margin:0;">' + JSLang[lang].console + '</p><i class="fa fa-unlock" style="margin-left:10px;cursor:pointer" id="console_icon"></i></div>')) jTa2Div.append($('<div style="height:2rem;display:flex;align-items:center;background-image: linear-gradient(to right, #4e73df, #b6c5f2);padding-left:5px;font-size:1rem;color:white"><p style="margin:0;">' + JSLang[lang].console + '</p><i class="fa fa-unlock" style="margin-left:10px;cursor:pointer" id="console_icon"></i></div>'))
var jTa2 = $("<div style='width:100%;overflow:auto;height:calc(100% - 2rem);padding:3px;color:black;border:none'></div>") var jTa2 = $("<div style='width:100%;overflow:auto;height:calc(100% - 2rem);padding:3px;color:black;border:none'></div>")
jTa2Div.append(jTa2) jTa2Div.append(jTa2)
rightDiv.append(jTa2Div) rightDiv.append(jTa2Div)
$("#console_icon").click(function() { $("#console_icon").click(function() {
if (typeof globalConsoleStyle == "undefined") { if (typeof globalConsoleStyle == "undefined") {
$("#console_icon").removeClass("fa-unlock") $("#console_icon").removeClass("fa-unlock")
$("#console_icon").addClass("fa-lock") $("#console_icon").addClass("fa-lock")
globalConsoleStyle = jTa2Div.attr("style") globalConsoleStyle = jTa2Div.attr("style")
$("body").append(jTa2Div) $("body").append(jTa2Div)
jTa2Div.css("z-index", 999) jTa2Div.css("z-index", 999)
jTa2Div.draggable({ jTa2Div.draggable({
disabled: false disabled: false
}) })
jTa2Div.resizable({ jTa2Div.resizable({
disabled: false disabled: false
}) })
jTa2Div.css("border", "solid black 1px") jTa2Div.css("border", "solid black 1px")
jTa2Div.css("position", "absolute") jTa2Div.css("position", "absolute")
jTa2Div.css("left", "20px") jTa2Div.css("left", "20px")
jTa2Div.css("top", "20px") jTa2Div.css("top", "20px")
MixIO.editor.setSize((mainDiv.width() - leftDiv.width()) + "px", '100%') MixIO.editor.setSize((mainDiv.width() - leftDiv.width()) + "px", '100%')
} else { } else {
jTa2Div.attr("style", globalConsoleStyle) jTa2Div.attr("style", globalConsoleStyle)
$("#console_icon").addClass("fa-unlock") $("#console_icon").addClass("fa-unlock")
$("#console_icon").removeClass("fa-lock") $("#console_icon").removeClass("fa-lock")
rightDiv.append(jTa2Div) rightDiv.append(jTa2Div)
jTa2Div.draggable({ jTa2Div.draggable({
disabled: true disabled: true
}) })
jTa2Div.resizable({ jTa2Div.resizable({
disabled: true disabled: true
}) })
MixIO.editor.setSize((mainDiv.width() - leftDiv.width()) + "px", '50%') MixIO.editor.setSize((mainDiv.width() - leftDiv.width()) + "px", '50%')
globalConsoleStyle = undefined globalConsoleStyle = undefined
} }
}) })
MixIO.log = function(text) { MixIO.log = function(text) {
if(typeof text == "object") if(typeof text == "object")
text = JSON.stringify(text) text = JSON.stringify(text)
if (jTa2.html()) if (jTa2.html())
jTa2.html(jTa2.html() + '<br>' + '[' + timeStamp2String().substring(11) + '] ' + text) jTa2.html(jTa2.html() + '<br>' + '[' + timeStamp2String().substring(11) + '] ' + text)
else else
jTa2.html(jTa2.html() + '[' + timeStamp2String().substring(11) + '] ' + text) jTa2.html(jTa2.html() + '[' + timeStamp2String().substring(11) + '] ' + text)
jTa2.scrollTop(jTa2[0].scrollHeight) jTa2.scrollTop(jTa2[0].scrollHeight)
} }
MixIO.log("Version: " + globalVer) MixIO.log("Version: " + globalVer)
MixIO.log("入门指南:<a target='_blank' href='devAPI'>dev-api</a>") MixIO.log("入门指南:<a target='_blank' href='devAPI'>dev-api</a>")
} }
globalProjectType = currentProjectType
switch_mode()
modald.close().remove()
resolve();
},true);
}, true);
}, true);
}, true);
}, true);
})
} }
var modald = showmodaltext("<div style='text-align:center'><i class='fa fa-spin fa-cog' style='font-size:2rem;color:#4e73df'></i><p style='margin-top:6px;margin-bottom:0;color:#4e73df;font-size:1rem;font-weight:bold'>" + JSLang[lang].downloading + "</p></div>") var modald = showmodaltext("<div style='text-align:center'><i class='fa fa-spin fa-cog' style='font-size:2rem;color:#4e73df'></i><p style='margin-top:6px;margin-bottom:0;color:#4e73df;font-size:1rem;font-weight:bold'>" + JSLang[lang].downloading + "</p></div>")
@@ -810,10 +843,11 @@ function view_project(projectName, projectType) {
$("#logicMode").click(function() { $("#logicMode").click(function() {
if (globalProjectType != LOGIC_MODE) { if (globalProjectType != LOGIC_MODE) {
globalProjectType = LOGIC_MODE globalProjectType = LOGIC_MODE
MixIO.triggersToPreCode()
MixIO.editor.setValue(MixIO.preCode + Blockly.JavaScript.workspaceToCode(workspace))
switch_mode() switch_mode()
init_codemirror() init_codemirror().then(function() {
MixIO.triggersToPreCode()
MixIO.editor.setValue(MixIO.preCode + Blockly.JavaScript.workspaceToCode(workspace))
})
} }
$(".blocklySvg").attr("height", "100%") $(".blocklySvg").attr("height", "100%")
$(".blocklyHtmlInput").removeAttr("hidden") $(".blocklyHtmlInput").removeAttr("hidden")
@@ -824,10 +858,7 @@ function view_project(projectName, projectType) {
globalCode = stringendecoder.decodeHtml(JSON.parse(prevLogic)['code']) globalCode = stringendecoder.decodeHtml(JSON.parse(prevLogic)['code'])
globalXML = stringendecoder.decodeHtml(JSON.parse(prevLogic)['module']) globalXML = stringendecoder.decodeHtml(JSON.parse(prevLogic)['module'])
} }
globalProjectType = LOGIC_MODE
globalProjectName = projectName globalProjectName = projectName
switch_mode()
init_codemirror()
globalProjectType = projectType globalProjectType = projectType
switch_mode() switch_mode()
connectStatusDia = dialog({ connectStatusDia = dialog({
@@ -3887,36 +3918,7 @@ var exit = function() {
save_layout(true) save_layout(true)
} }
class CustomCategory extends Blockly.ToolboxCategory {
// 自定义类别创造函数
// categoryDef: 类别定义的信息
// toolbox: 表示类别的父级toolbox
// opt_parent: 可选参数,表示其父类别
constructor(categoryDef, toolbox, opt_parent) {
super(categoryDef, toolbox, opt_parent);
}
addColourBorder_(colour) {
super.addColourBorder_(colour);
// this.rowDiv_.style.backgroundColor = 'unset';
this.iconDom_.style.color = colour;
}
setSelected(isSelected) {
super.setSelected(isSelected);
if (isSelected) {
// 设置icon的颜色和文本颜色相同
this.iconDom_.style.color = 'white'; // ====本次新增代码====
} else {
// 设置icon的颜色和文本颜色相同
this.iconDom_.style.color = this.colour_; // ====本次新增代码====
}
}
}
var customTheme = function() {
Blockly.registry.register(
Blockly.registry.Type.TOOLBOX_ITEM,
Blockly.ToolboxCategory.registrationName,
CustomCategory, true);
}
var uploadProjects = function() { var uploadProjects = function() {
var editForm = $('<div class="nnt" style="width:294px"/>') var editForm = $('<div class="nnt" style="width:294px"/>')

View File

@@ -2400,7 +2400,11 @@ function add_magic(user_title, user_topic, user_content, user_style, title_style
itemdiv.attr('style', user_style) itemdiv.attr('style', user_style)
} }
function add_timer(user_title, user_topic, user_content, user_style, title_style, isObserve) { async function add_timer(user_title, user_topic, user_content, user_style, title_style, isObserve) {
if(MixIO.editor == undefined)
{
await init_codemirror()
}
var isAlive = true var isAlive = true
var contents = [] var contents = []
var title = $("<h4 class='userTitle'>" + user_title + "</h4>") var title = $("<h4 class='userTitle'>" + user_title + "</h4>")
@@ -2616,7 +2620,11 @@ function add_timer(user_title, user_topic, user_content, user_style, title_style
itemdiv.attr('style', user_style) itemdiv.attr('style', user_style)
} }
function add_trigger(user_title, user_topic, user_content, user_style, title_style, isObserve) { async function add_trigger(user_title, user_topic, user_content, user_style, title_style, isObserve) {
if(MixIO.editor == undefined)
{
await init_codemirror()
}
var isAlive = true var isAlive = true
var contents = [] var contents = []
var title = $("<h4 class='userTitle'>" + user_title + "</h4>") var title = $("<h4 class='userTitle'>" + user_title + "</h4>")

View File

@@ -1861,6 +1861,50 @@ var mixioServer = function() {
} else } else
res.send('-1') res.send('-1')
}) })
app.get('/api/getWeather', function(req, res) {
if (req.query.city_code && !configs["OFFLINE_MODE"]) {
req.query.dsc_code = req.query.city_code.replace("CH","")
if(globalWeather[req.query.dsc_code] && globalWeather[req.query.dsc_code].time && (new Date().getTime() - globalWeather[req.query.dsc_code].time) < 600000) {
res.send(globalWeather[req.query.dsc_code].data)
} else {
http.get('http://api.map.baidu.com/weather/v1/?district_id=' + req.query.dsc_code + '&data_type=now&ak=' + configs["BAIDU_MAP_SERVER_AK"], function(req2, res2) {
var html = ''
req2.on('data', function(data) {
html += data;
});
req2.on('end', function() {
globalWeather[req.query.dsc_code] = {
time: new Date().getTime(),
data: html
}
res.send(html)
});
})
}
} else
res.send('-1')
})
app.get("/api/getCurrentTime", function(req, res){
var sysTime = new Date();
var year = sysTime.getFullYear();
var month = sysTime.getMonth() + 1; // getMonth() 返回的月份是从0开始的
var day = sysTime.getDate();
var hours = sysTime.getHours();
var minutes = sysTime.getMinutes();
var seconds = sysTime.getSeconds();
// 补零操作
month = month < 10 ? '0' + month : month;
day = day < 10 ? '0' + day : day;
hours = hours < 10 ? '0' + hours : hours;
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
sysTime = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
res.send(JSON.stringify({
"sysTime": sysTime
}));
});
app.post('/deleteProject', function(req, res) { app.post('/deleteProject', function(req, res) {
if (req.session.userName && req.body.projectName) { if (req.session.userName && req.body.projectName) {