From 96584ed2da5204c55cceb60a57786611ab9481fd Mon Sep 17 00:00:00 2001 From: jykim Date: Tue, 24 May 2016 14:37:23 +0900 Subject: [PATCH 1/9] update new block --- app/bower.json | 3 +- app/css/developer.css | 2 +- app/entry_offline.html | 5 +- app/lang/code.js | 421 ++++++++++++++++++++- app/lang/en.js | 411 +++++++++++++++++++- app/lang/ko.js | 439 +++++++++++++++++++++- app/package.json | 5 +- app/src/block_converter.js | 216 +++++++++++ app/src/main.js | 50 +-- app/src/require.js | 3 +- app/src/workspace.js | 28 +- app/src/ws.js | 746 ++++++++++++++++++------------------- 12 files changed, 1890 insertions(+), 439 deletions(-) create mode 100644 app/src/block_converter.js diff --git a/app/bower.json b/app/bower.json index 0007a2634..9ebd86a0a 100644 --- a/app/bower.json +++ b/app/bower.json @@ -7,7 +7,7 @@ ], "dependencies": { "entryjs": "https://github.com/entrylabs/entryjs.git", - "entry-hw": "https://github.com/entrylabs/entry-hw.git#master", + "entry-hw": "https://github.com/entrylabs/entry-hw.git", "jquery": "~1.11.3", "jquery-ui": "~1.11.x", "underscore": "~1.8.x", @@ -15,6 +15,7 @@ "EaselJS": "https://github.com/boolgom/EaselJS.git", "SoundJS": "0.6.0", "webfontloader": "1.5.18", + "velocity": "~1.2.3", "angular": "angularjs#~1.4.7", "angular-cookies": "~1.4.3", "angular-filters": "~1.1.2", diff --git a/app/css/developer.css b/app/css/developer.css index 93237bf33..c68ca1954 100644 --- a/app/css/developer.css +++ b/app/css/developer.css @@ -139,4 +139,4 @@ body { transform: scaleY(1.0); -webkit-transform: scaleY(1.0); } -} \ No newline at end of file +} diff --git a/app/entry_offline.html b/app/entry_offline.html index 26f666b44..fb3fcf731 100644 --- a/app/entry_offline.html +++ b/app/entry_offline.html @@ -34,6 +34,7 @@ + @@ -41,7 +42,9 @@ - + + + diff --git a/app/lang/code.js b/app/lang/code.js index ed4e18f4b..2ccb1fbc6 100644 --- a/app/lang/code.js +++ b/app/lang/code.js @@ -63,6 +63,26 @@ Lang.Blocks = { "CODEino_accelerometer_X": "X", "CODEino_accelerometer_Y": "Y", "CODEino_accelerometer_Z": "Z", + "dplay_switch": "스위치 ", + "dplay_light": "빛센서가 ", + "dplay_tilt": "기울기센서 상태가", + "dplay_string_1": "켜짐", + "dplay_string_2": "꺼짐", + "dplay_string_3": "밝음", + "dplay_string_4": "어두움", + "dplay_string_5": "눌림", + "dplay_string_6": "열림", + "dplay_num_pin_1": "LED 상태를", + "dplay_num_pin_2": "번 스위치가", + "dplay_num_pin_3": "아날로그", + "dplay_num_pin_4": "번 ", + "dplay_num_pin_5": "센서값", + "dplay_analog_number_0": "A0", + "dplay_analog_number_1": "A1", + "dplay_analog_number_2": "A2", + "dplay_analog_number_3": "A3", + "dplay_analog_number_4": "A4", + "dplay_analog_number_5": "A5", "ARDUINO_arduino_get_string_1": "신호", "ARDUINO_arduino_get_string_2": "의 글자 결과값", "ARDUINO_arduino_send_1": "신호", @@ -160,8 +180,8 @@ Lang.Blocks = { "FLOW_stop_object_2": ")", "FLOW_stop_object_all": "모두", "FLOW_stop_object_this_object": "this.", - "FLOW_stop_object_this_thread": "이 코드", - "FLOW_stop_object_other_thread": "자신의 다른 코드", + "FLOW_stop_object_this_thread": "이", + "FLOW_stop_object_other_thread": "자신의 다른", "FLOW_stop_repeat": "break", "FLOW_stop_run": "프로그램 끝내기", "FLOW_wait_second_1": "Entry.wait(", @@ -1750,8 +1770,9 @@ Lang.Menus = { "offline_required": "최소 요구사항", "offline_required_detail": "디스크 여유 공간 500MB 이상, windows XP SP2 혹은 MAC OS 10.8 이상", "offline_notice": "설치 전 참고사항", - "offline_notice_1": "1. 버전 1.0.5 에서는 하드웨어 연결 프로그램 통합 설치가 지원되지 않습니다.", + "offline_notice_1": "1. 버전 1.2.0 에서는 하드웨어 연결 프로그램 통합 설치가 지원되지 않습니다.", "offline_notice_2": "2. 별도의 웹브라우져가 필요하지 않습니다.", + "offline_notice_3": "버전 별 변경 사항 안내", "cparty_jr_result_2": "고마워~ 덕분에 책가방을 챙겨서 학교에 올 수 있었어~
다음 학교 가는 길도 함께 가자~ ", "cparty_jr_result_3": "우왓! 학교까지 왔어!
하지만 더 적은 블록을 사용해도 학교에 갈 수 있는데
다시 해볼래?", "cparty_jr_result_4": "우왓! 책가방을 얻었어!
하지만 더 적은 블록을 사용해도 책가방을 얻을 수 있는데
다시 해볼래? ", @@ -2281,7 +2302,7 @@ Lang.Workspace = { "file_save_as": "복사본으로 저장하기", "file_save_download": "내 컴퓨터에 저장하기", "func": "함수", - "function_create": "함수 추가", + "function_create": "함수 만들기", "interface": "인터페이스", "landscape": "배경", "list": "리스트", @@ -2292,7 +2313,7 @@ Lang.Workspace = { "list_add_fail_msg2": "리스트의 이름이 적절하지 않습니다.", "list_add_ok": "리스트 추가 완료", "list_add_ok_msg": "을(를) 추가하였습니다.", - "list_create": "리스트 추가", + "list_create": "리스트 만들기", "list_dup": "같은 이름의 리스트가 이미 존재합니다.", "list_newname": "새로운 이름", "list_remove": "리스트 삭제", @@ -2369,7 +2390,7 @@ Lang.Workspace = { "variable_add_fail_msg2": "변수의 이름이 적절하지 않습니다.", "variable_add_ok": "변수 추가 완료", "variable_add_ok_msg": "을(를) 추가하였습니다.", - "variable_create": "변수 추가", + "variable_create": "변수 만들기", "variable_dup": "같은 이름의 변수가 이미 존재합니다.", "variable_newname": "새로운 이름", "variable_remove": "변수 삭제", @@ -2671,7 +2692,7 @@ Lang.Helper = { "is_press_some_key": "선택한 키가 눌려져 있는 경우 ‘참’으로 판단합니다.", "reach_something": "해당 오브젝트가 선택한 항목과 닿은 경우 ‘참’으로 판단합니다.", "is_included_in_list": "선택한 리스트에 입력한 값을 가진 항목이 포함되어 있는지 확인합니다.", - "boolean_basic_operator": "&equals : 왼쪽에 위치한 값과 오른쪽에 위치한 값이 같으면 '참'으로 판단합니다.
>, : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 크면 '참'으로 판단합니다.
<, : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 작으면 '참'으로 판단합니다.
>&equals : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 크거나 같으면 '참'으로 판단합니다.
<&equals : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 작거나 같으면 '참'으로 판단합니다.", + "boolean_basic_operator": "= : 왼쪽에 위치한 값과 오른쪽에 위치한 값이 같으면 '참'으로 판단합니다.
> : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 크면 '참'으로 판단합니다.
< : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 작으면 '참'으로 판단합니다.
≥ : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 크거나 같으면 '참'으로 판단합니다.
≤ : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 작거나 같으면 '참'으로 판단합니다.", "function_create": "자주 쓰는 코드를 이 블록 아래에 조립하여 함수로 만듭니다. [함수 정의하기]의 오른쪽 빈칸에 [이름]을 조립하여 함수의 이름을 정할 수 있습니다. 함수를 실행하는 데 입력값이 필요한 경우 빈칸에 [문자/숫자값], [판단값]을 조립하여 매개변수로 사용합니다.", "function_field_label": "'함수 정의하기'의 빈칸 안에 조립하고, 이름을 입력하여 함수의 이름을 정해줍니다. ", "function_field_string": "해당 함수를 실행하는데 문자/숫자 값이 필요한 경우 빈칸 안에 조립하여 매개변수로 사용합니다. 이 블록 내부의[문자/숫자값]을 분리하여 함수의 코드 중 필요한 부분에 넣어 사용합니다.", @@ -2875,3 +2896,389 @@ Lang.Hw = { "": "", "buzzer": "부저" }; +Lang.template = { + "albert_hand_found": "Entry.Albert.isHandFound()", + "albert_value": "%1", + "albert_move_forward_for_secs": "Entry.Albert.moveForwardForSecs( %1 ) %2", + "albert_move_backward_for_secs": "Entry.Albert.moveBackwardForSecs( %1 ) %2", + "albert_turn_for_secs": "Entry.Albert.turnForSecs(' %1 ', %2 ) %3", + "albert_change_both_wheels_by": "Entry.Albert.changeWheelsBy( %1 , %2 ) %3", + "albert_set_both_wheels_to": "Entry.Albert.setWheelsTo( %1 , %2 ) %3", + "albert_change_wheel_by": "Entry.Albert.changeWheelBy(' %1 ', %2 ) %3", + "albert_set_wheel_to": "Entry.Albert.setWheelTo(' %1 ', %2 ) %3", + "albert_stop": "Entry.Albert.stop() %1", + "albert_set_pad_size_to": "Entry.Albert.setPadSizeTo( %1 , %2 ) %3", + "albert_set_eye_to": "Entry.Albert.setEyeTo(' %1 ',' %2 ') %3", + "albert_clear_eye": "Entry.Albert.clearEye(' %1 ') %2", + "albert_body_led": "%1 body led %2", + "albert_front_led": "%1 front led %2", + "albert_beep": "Entry.Albert.beep() %1", + "albert_change_buzzer_by": "Entry.Albert.changeBuzzerBy( %1 ) %2", + "albert_set_buzzer_to": "Entry.Albert.setBuzzerTo( %1 ) %2", + "albert_clear_buzzer": "Entry.Albert.clearBuzzer() %1", + "albert_play_note_for": "Entry.Albert.playNoteForBeats(' %1 ', %2 , %3 ) %4", + "albert_rest_for": "Entry.Albert.restForBeats( %1 ) %2", + "albert_change_tempo_by": "Entry.Albert.changeTempoBy( %1 ) %2", + "albert_set_tempo_to": "Entry.Albert.setTempoTo( %1 ) %2", + "albert_move_forward": "move forward %1", + "albert_move_backward": "move backward %1", + "albert_turn_around": "turn %1 %2", + "albert_set_led_to": "Entry.Hamster.setLedTo(' %1 %2 ') %3", + "albert_clear_led": "Entry.Hamster.clearLed(' %1 %2", + "albert_change_wheels_by": "%1 %2 %3", + "albert_set_wheels_to": "%1 %2 %3", + "arduino_text": "%1", + "arduino_send": "신호 %1 보내기", + "arduino_get_number": "신호 %1 의 숫자 결과값", + "arduino_get_string": "신호 %1 의 글자 결과값", + "arduino_get_sensor_number": "%1 ", + "arduino_get_port_number": "%1 ", + "arduino_get_pwm_port_number": "%1 ", + "arduino_get_number_sensor_value": "아날로그 %1 번 센서값 ", + "dplay_get_number_sensor_value": "아날로그 %1 번 센서값 ", + "nemoino_get_number_sensor_value": "아날로그 %1 번 센서값 ", + "sensorBoard_get_number_sensor_value": "아날로그 %1 번 센서값 ", + "CODEino_get_number_sensor_value": "아날로그 %1 번 센서값 ", + "arduino_get_digital_value": "디지털 %1 번 센서값 ", + "dplay_get_digital_value": "디지털 %1 번 센서값 ", + "nemoino_get_digital_value": "디지털 %1 번 센서값 ", + "sensorBoard_get_digital_value": "디지털 %1 번 센서값 ", + "CODEino_get_digital_value": "디지털 %1 번 센서값 ", + "arduino_toggle_led": "Digital %1 Pin %2 %3", + "dplay_toggle_led": "Digital %1 Pin %2 %3", + "nemoino_toggle_led": "Digital %1 Pin %2 %3", + "sensorBoard_toggle_led": "Digital %1 Pin %2 %3", + "CODEino_toggle_led": "Digital %1 Pin %2 %3", + "arduino_toggle_pwm": "Digital %1 Pin %2 %3", + "dplay_toggle_pwm": "Digital %1 Pin %2 %3", + "nemoino_toggle_pwm": "Digital %1 Pin %2 %3", + "sensorBoard_toggle_pwm": "Digital %1 Pin %2 %3", + "CODEino_toggle_pwm": "Digital %1 Pin %2 %3", + "arduino_convert_scale": "Map Value %1 %2 ~ %3 to %4 ~ %5 ", + "dplay_convert_scale": "Map Value %1 %2 ~ %3 to %4 ~ %5 ", + "nemoino_convert_scale": "Map Value %1 %2 ~ %3 to %4 ~ %5 ", + "sensorBoard_convert_scale": "Map Value %1 %2 ~ %3 to %4 ~ %5 ", + "CODEino_convert_scale": "Map Value %1 %2 ~ %3 to %4 ~ %5 ", + "sensorBoard_get_named_sensor_value": "%1 센서값", + "sensorBoard_is_button_pressed": "%1 버튼을 눌렀는가?", + "sensorBoard_led": "%1 LED %2 %3", + "arduino_download_connector": "%1", + "arduino_download_source": "%1", + "arduino_connected": "%1", + "arduino_reconnect": "%1", + "CODEino_get_sensor_number": "%1 ", + "CODEino_get_named_sensor_value": " %1 Sensor value ", + "CODEino_get_sound_status": "Sound is %1 ", + "CODEino_get_light_status": "Light is %1 ", + "CODEino_is_button_pressed": " Operation %1 ", + "CODEino_get_accelerometer_direction": " 3-AXIS Accelerometer %1 ", + "CODEino_get_accelerometer_value": " 3-AXIS Accelerometer %1 -axis value ", + "bitbrick_sensor_value": "%1 값", + "bitbrick_is_touch_pressed": "touch %1 이(가) 눌렸는가?", + "bitbrick_turn_off_color_led": "컬러 LED 끄기 %1", + "bitbrick_turn_on_color_led_by_rgb": "컬러 LED 켜기 R %1 G %2 B %3 %4", + "bitbrick_turn_on_color_led_by_picker": "컬러 LED 색 %1 로 정하기 %2", + "bitbrick_turn_on_color_led_by_value": "컬러 LED 켜기 색 %1 로 정하기 %2", + "bitbrick_buzzer": "버저음 %1 내기 %2", + "bitbrick_turn_off_all_motors": "모든 모터 끄기 %1", + "bitbrick_dc_speed": "DC 모터 %1 속도 %2 %3", + "bitbrick_dc_direction_speed": "DC 모터 %1 %2 방향 속력 %3 %4", + "bitbrick_servomotor_angle": "서보 모터 %1 각도 %2 %3", + "bitbrick_convert_scale": "변환 %1 값 %2 ~ %3 에서 %4 ~ %5", + "start_drawing": "this.startDraw() %1", + "stop_drawing": "this.stopDraw() %1", + "set_color": "this.brush.color = %1 %2", + "set_random_color": "this.brush.color = Entry.getRandomColor() %1", + "change_thickness": "this.brush.thickness += %1 %2", + "set_thickness": "this.brush.thickness = %1 %2", + "change_opacity": "this.brush.opacity += %1 %2", + "set_opacity": "this.brush.opacity = %1 %2", + "brush_erase_all": "this.brush.removeAll() %1", + "brush_stamp": "Stamp %1", + "change_brush_transparency": "this.brush.opacity -= %1 %2", + "set_brush_tranparency": "this.brush.opacity -= %1 %2", + "number": "%1", + "angle": "%1", + "get_x_coordinate": "%1", + "get_y_coordinate": "%1", + "get_angle": "%1", + "get_rotation_direction": "%1 ", + "distance_something": "%1 %2 %3", + "coordinate_mouse": "%1 %2 %3", + "coordinate_object": "%1 %2 %3 %4", + "calc_basic": "%1 %2 %3", + "calc_plus": "%1 %2 %3", + "calc_minus": "%1 %2 %3", + "calc_times": "%1 %2 %3", + "calc_divide": "%1 %2 %3", + "calc_mod": "%1 %2 %3 %4 %5", + "calc_share": "%1 %2 %3 %4 %5", + "calc_operation": "%1 %2 %3 %4 ", + "calc_rand": "%1 %2 %3 %4 %5", + "get_date": "%1 %2 %3", + "get_sound_duration": "%1 %2 %3", + "reset_project_timer": "%1", + "set_visible_project_timer": "%1 %2 %3 %4", + "timer_variable": "%1 %2", + "get_project_timer_value": "%1 %2", + "char_at": "%1 %2 %3 %4 %5", + "length_of_string": "%1 %2 %3", + "substring": "%1 %2 %3 %4 %5 %6 %7", + "replace_string": "%1 %2 %3 %4 %5 %6 %7", + "change_string_case": "%1 %2 %3 %4 %5", + "index_of_string": "%1 %2 %3 %4 %5", + "combine_something": "%1 %2 %3 %4 %5", + "get_sound_volume": "%1 %2", + "quotient_and_mod": "%1 %2 %3 %4 %5 %6", + "choose_project_timer_action": "%1 %2 %3 %4", + "wait_second": "Entry.wait( %1 ) %2", + "repeat_basic": "for ( i = 0 %1 ) %2", + "repeat_inf": "while(true) %1", + "stop_repeat": "break %1", + "wait_until_true": "while ( %1 != true) { } %2", + "_if": "if ( %1 ) %2", + "if_else": "if ( %1 ) %2 %3 else", + "create_clone": "Entry.createClone( %1 ) %2", + "delete_clone": "Entry.removeClone(this) %1", + "when_clone_start": "%1 Entry.addEventListener('clone_created')", + "stop_run": "프로그램 끝내기 %1", + "repeat_while_true": "Repeat %1 %2 %3", + "stop_object": "Entry.stop( %1 ) %2", + "restart_project": "Entry.restart() %1", + "remove_all_clones": "Entry.removeAllClone() %1", + "functionAddButton": "%1", + "function_field_label": "%1%2", + "function_field_string": "%1%2", + "function_field_boolean": "%1%2", + "function_param_string": "문자/숫자값", + "function_param_boolean": "판단값", + "function_create": "함수 정의하기 %1 %2", + "function_general": "function %1", + "hamster_hand_found": "Entry.Hamster.isHandFound()", + "hamster_value": "%1", + "hamster_move_forward_once": "Entry.Hamster.moveForwardOnceOnBoard() %1", + "hamster_turn_once": "Entry.Hamster.turnOnceOnBoard(' %1 ') %2", + "hamster_move_forward_for_secs": "move forward for %1 secs %2", + "hamster_move_backward_for_secs": "move backward %1 secs %2", + "hamster_turn_for_secs": "turn %1 for %2 secs %3", + "hamster_change_both_wheels_by": "change wheel by left: %1 right: %2 %3", + "hamster_set_both_wheels_to": "set wheel to left: %1 right: %2 ) %3", + "hamster_change_wheel_by": "Entry.Hamster.changeWheelBy(' %1 ', %2 ) %3", + "hamster_set_wheel_to": "Entry.Hamster.setWheelTo(' %1 ', %2 ) %3", + "hamster_follow_line_using": "Entry.Hamster.followLineUsingFloorSensor(' %1 ',' %2 ') %3", + "hamster_follow_line_until": "Entry.Hamster.followLineUntilIntersection(' %1 ',' %2 ') %3", + "hamster_set_following_speed_to": "Entry.Hamster.setFollowingSpeedTo( %1 ) %2", + "hamster_stop": "stop %1", + "hamster_set_led_to": "Entry.Hamster.setLedTo(' %1 ',' %2 ') %3", + "hamster_clear_led": "Entry.Hamster.clearLed(' %1 ') %2", + "hamster_beep": "Entry.Hamster.beep() %1", + "hamster_change_buzzer_by": "change buzzer by %1 %2", + "hamster_set_buzzer_to": "set buzzer to %1 %2", + "hamster_clear_buzzer": "clear buzzer %1", + "hamster_play_note_for": "Entry.Hamster.playNoteForBeats(' %1 ', %2 , %3 ) %4", + "hamster_rest_for": "Entry.Hamster.restForBeats( %1 ) %2", + "hamster_change_tempo_by": "Entry.Hamster.changeTempoBy( %1 ) %2", + "hamster_set_tempo_to": "Entry.Hamster.setTempoTo( %1 ) %2", + "hamster_set_port_to": "Entry.Hamster.setPortTo(' %1 ',' %2 ') %3", + "hamster_change_output_by": "Entry.Hamster.changeOutputBy(' %1 ', %2 ) %3", + "hamster_set_output_to": "Entry.Hamster.setOutputTo(' %1 ', %2 ) %3", + "is_clicked": "%1", + "is_press_some_key": "%1 %2", + "reach_something": "%1 %2 %3", + "boolean_comparison": "%1 %2 %3", + "boolean_equal": "%1 %2 %3", + "boolean_bigger": "%1 %2 %3", + "boolean_smaller": "%1 %2 %3", + "boolean_and_or": "%1 %2 %3", + "boolean_and": "%1 %2 %3", + "boolean_or": "%1 %2 %3", + "boolean_not": "%1 %2 %3", + "true_or_false": "%1", + "True": "%1 ", + "False": "%1 ", + "boolean_basic_operator": "%1 %2 %3", + "show": "this.show() %1", + "hide": "this.hide() %1", + "dialog_time": "this.setDialogByTime( %1 , %2 , %3 ) %4", + "dialog": "this.setDialog( %1 , %2 ) %3", + "remove_dialog": "this.removeDialog() %1", + "change_to_nth_shape": "this.setShape( %1 ) %2", + "change_to_next_shape": "this.setTo %1 Shape() %2", + "set_effect_volume": "this.addEffect( %1 , %2 ) %3", + "set_effect": "this.setEffect( %1 , %2 ) %3", + "erase_all_effects": "this.removeAllEffects() %1", + "change_scale_percent": "this.scale += %1 %2", + "set_scale_percent": "this.scale = %1 %2", + "change_scale_size": "this.scale += %1 %2", + "set_scale_size": "this.scale = %1 %2", + "flip_y": "this.flip('horizontal') %1", + "flip_x": "this.flip('vertical') %1", + "set_object_order": "Entry.setLayerOrder(this, %1 ) %2", + "get_pictures": "%1 ", + "change_to_some_shape": "this.setShape( %1 ) %2", + "add_effect_amount": "this.addEffect( %1 , %2 ) %3", + "change_effect_amount": "this.setEffect( %1 , %2 ) %3", + "set_effect_amount": "this.addEffect( %1 , %2 ) %3", + "set_entity_effect": "this.setEffect( %1 , %2 ) %3", + "change_object_index": "Entry.setLayerOrder(this, %1 ) %2", + "move_direction": "Entry.moveToDirection( %1 ) %2", + "move_x": "this.x += %1 %2", + "move_y": "this.y += %1 %2", + "locate_xy_time": "this.setXYbyTime( %1 , %2 , %3 ) %4", + "rotate_by_angle": "this.rotation += %1 %2", + "rotate_by_angle_dropdown": "%1 만큼 회전하기 %2", + "see_angle": "this.direction = %1 %2", + "see_direction": "%1 쪽 보기 %2", + "locate_xy": "this.setXY( %1 , %2 ) %3", + "locate_x": "this.x = %1 %2", + "locate_y": "this.y = %1 %2", + "locate": "this.locateAt( %1 ) %2", + "move_xy_time": "this.moveXYbyTime( %1 , %2 , %3 ) %4", + "rotate_by_angle_time": "this.rotateByTime( %1 , %2 ) %3", + "bounce_wall": "Entry.bounceWall(this) %1", + "flip_arrow_horizontal": "화살표 방향 좌우 뒤집기 %1", + "flip_arrow_vertical": "화살표 방향 상하 뒤집기 %1", + "see_angle_object": "this.setDirectionTo( %1 ) %2", + "see_angle_direction": "this.rotation = %1 %2", + "rotate_direction": "this.direction += %1 %2", + "locate_object_time": "%1 초 동안 %2 위치로 이동하기 %3", + "rotate_absolute": "this.rotation = %1 %2", + "rotate_relative": "this.rotation = %1 %2", + "direction_absolute": "this.direction = %1 %2", + "direction_relative": "this.direction += %1 %2", + "move_to_angle": "Entry.moveToDirection( %1 , %2 ) %3", + "rotate_by_time": "%1 , this.rotate( %2 ) %3", + "direction_relative_duration": "%1 %2 %3", + "neobot_sensor_value": "%1 값", + "neobot_turn_left": "왼쪽모터를 %1 %2 회전 %3", + "neobot_stop_left": "왼쪽모터 정지 %1", + "neobot_turn_right": "오른쪽모터를 %1 %2 회전 %3", + "neobot_stop_right": "오른쪽모터 정지 %1", + "neobot_run_motor": "%1 모터를 %2 초간 %3 %4 %5", + "neobot_servo_1": "SERVO1에 연결된 서보모터를 %1 속도로 %2 로 이동 %3", + "neobot_servo_2": "SERVO2에 연결된 서보모터를 %1 속도로 %2 로 이동 %3", + "neobot_play_note_for": "멜로디 %1 을(를) %2 옥타브로 %3 길이만큼 소리내기 %4", + "neobot_set_sensor_value": "%1 번 포트의 값을 %2 %3", + "robotis_openCM70_cm_custom_value": "직접입력 주소 ( %1 ) %2 값", + "robotis_openCM70_sensor_value": "제어기 %1 값", + "robotis_openCM70_aux_sensor_value": "%1 %2 값", + "robotis_openCM70_cm_buzzer_index": "제어기 음계값 %1 , %2 , 연주 %3", + "robotis_openCM70_cm_buzzer_melody": "제어기 멜로디 %1 번 연주 %2", + "robotis_openCM70_cm_sound_detected_clear": "최종소리감지횟수 초기화 %1", + "robotis_openCM70_cm_led": "제어기 %1 LED %2 %3", + "robotis_openCM70_cm_motion": "모션 %1 번 실행 %2", + "robotis_openCM70_aux_motor_speed": "%1 감속모터 속도를 %2 , 출력값을 %3 (으)로 정하기 %4", + "robotis_openCM70_aux_servo_mode": "%1 서보모터 모드를 %2 (으)로 정하기 %3", + "robotis_openCM70_aux_servo_speed": "%1 서보모터 속도를 %2 , 출력값을 %3 (으)로 정하기 %4", + "robotis_openCM70_aux_servo_position": "%1 서보모터 위치를 %2 (으)로 정하기 %3", + "robotis_openCM70_aux_led_module": "%1 LED 모듈을 %2 (으)로 정하기 %3", + "robotis_openCM70_aux_custom": "%1 사용자 장치를 %2 (으)로 정하기 %3", + "robotis_openCM70_cm_custom": "직접입력 주소 ( %1 ) (을)를 %2 (으)로 정하기 %3", + "robotis_carCont_sensor_value": "%1 값", + "robotis_carCont_cm_led": "4번 LED %1 , 1번 LED %2 %3", + "robotis_carCont_cm_sound_detected_clear": "최종소리감지횟수 초기화 %1", + "robotis_carCont_aux_motor_speed": "%1 감속모터 속도를 %2 , 출력값을 %3 (으)로 정하기 %4", + "robotis_carCont_cm_calibration": "%1 적외선 센서 캘리브레이션 값을 %2 (으)로 정하기 %3", + "when_scene_start": "%1 this.addEventListener('sceneStart')", + "start_scene": "Scene.changeScene( %1 ) %2", + "start_neighbor_scene": "Scene.changeScene( %1 ) %2", + "sound_something": "Entry.playSound( %1 ) %2", + "sound_something_second": "Entry.playSoundByTime( %1 , %2 ) %3", + "sound_something_wait": "Entry.playSoundAndWait( %1 ) %2", + "sound_something_second_wait": "Entry.playSoundAndWaitByTime( %1 , %2 ) %3", + "sound_volume_change": "Entry.volume += %1 %2", + "sound_volume_set": "Entry.volume = %1 %2", + "sound_silent_all": "Entry.silentAll() %1", + "get_sounds": "%1 ", + "sound_something_with_block": "Entry.playSound( %1 ) %2", + "sound_something_second_with_block": "Entry.playSoundByTime( %1 , %2 ) %3", + "sound_something_wait_with_block": "Entry.playSoundAndWait( %1 ) %2", + "sound_something_second_wait_with_block": "Entry.playSoundAndWaitByTime( %1 , %2 ) %3", + "sound_from_to": "%1 %2 %3 %4", + "sound_from_to_and_wait": "%1 %2 %3 %4", + "when_run_button_click": "%1 Entry.addEventListener('run')", + "press_some_key": "%1 Entry.addEventListener('keydown', key== %2 ) %3", + "when_some_key_pressed": "%1 Entry.addEventListener('keydown', key== %2 )", + "mouse_clicked": "%1 Entry.addEventListener('mousedown')", + "mouse_click_cancled": "%1 Entry.addEventListener('mouseup')", + "when_object_click": "%1 this.addEventListener('mousedown')", + "when_object_click_canceled": "%1 this.addEventListener('mouseup')", + "when_some_key_click": "%1 키를 눌렀을 때", + "when_message_cast": "%1 Entry.addEventListener( %2 )", + "message_cast": "Entry.dispatchEvent( %1 ) %2", + "message_cast_wait": "Entry.dispatchEventAndWait( %1 ) %2", + "text": "%1", + "text_write": "Entry.writeText( %1 )", + "text_append": "Entry.appendText( %1 )", + "text_prepend": "Entry.insertText( %1 )", + "text_flush": "Entry.clearText()", + "variableAddButton": "%1", + "listAddButton": "%1", + "change_variable": "Entry.addValueToVariable( %1 , %2 ) %3", + "set_variable": "Entry.setValueVariable( %1 , %2 ) %3", + "show_variable": "Entry.showVariable( %1 ) %2", + "hide_variable": "Entry.hideVariable( %1 ) %2", + "get_variable": "Entry.getVariableValue( %1 )", + "ask_and_wait": "Entry.askAndWait( %1 ) %2", + "get_canvas_input_value": "%1 ", + "add_value_to_list": "Entry.pushValueToList( %1 , %2 ) %3", + "remove_value_from_list": "Entry.removeValueListAt( %1 , %2 ) %3", + "insert_value_to_list": "Entry.pushValueToListAt( %1 , %2 , %3 ) %4", + "change_value_list_index": "Entry.changeValueListAt( %1 , %2 , %3 ) %4", + "value_of_index_from_list": "%1 %2 %3 %4 %5", + "length_of_list": "%1 %2 %3", + "show_list": "Entry.showList( %1 ) %2", + "hide_list": "Entry.hideList( %1 ) %2", + "options_for_list": "%1 ", + "set_visible_answer": "Entry.getAnswer() %1 %2", + "is_included_in_list": "%1 %2 %3 %4 %5", + "xbot_digitalInput": "%1", + "xbot_analogValue": "%1", + "xbot_digitalOutput": "디지털 %1 핀, 출력 값 %2 %3", + "xbot_analogOutput": "아날로그 %1 %2 %3", + "xbot_servo": "서보 모터 %1 , 각도 %2 %3", + "xbot_oneWheel": "바퀴(DC) 모터 %1 , 속도 %2 %3", + "xbot_twoWheel": "바퀴(DC) 모터 오른쪽(2) 속도: %1 왼쪽(1) 속도: %2 %3", + "xbot_rgb": "RGB LED 켜기 R 값 %1 G 값 %2 B 값 %3 %4", + "xbot_rgb_picker": "RGB LED 색 %1 로 정하기 %2", + "xbot_buzzer": "Entry.Hamster.playNoteForBeats(' %1 %2 , %3 초 연주하기 %4", + "xbot_lcd": "LCD %1 번째 줄 , 출력 값 %2 %3", + "run": "", + "mutant": "test mutant block", + "jr_start": "%1", + "jr_repeat": "%1 %2 %3", + "jr_item": "꽃 모으기 %1", + "cparty_jr_item": "%1 %2", + "jr_north": "%1 %2", + "jr_east": "%1 %2", + "jr_south": "%1 %2", + "jr_west": "%1 %2", + "jr_start_basic": "%1 %2", + "jr_go_straight": "%1 %2", + "jr_turn_left": "%1 %2", + "jr_turn_right": "%1 %2", + "jr_go_slow": "%1 %2", + "jr_repeat_until_dest": "%1 %2 %3", + "jr_if_construction": "%1 %2 %3 %4", + "jr_if_speed": "만약 %1 앞에 있다면 %2", + "maze_step_start": "%1 시작하기를 클릭했을 때", + "maze_step_jump": "뛰어넘기%1", + "maze_step_for": "%1 번 반복하기%2", + "test": "%1 this is test block %2", + "maze_repeat_until_1": "%1 만날 때 까지 반복%2", + "maze_repeat_until_2": "모든 %1 만날 때 까지 반복%2", + "maze_step_if_1": "만약 앞에 %1 있다면%2", + "maze_step_if_2": "만약 앞에 %1 있다면%2", + "maze_call_function": "약속 불러오기%1", + "maze_define_function": "약속하기%1", + "maze_step_if_3": "만약 앞에 %1 있다면%2", + "maze_step_if_4": "만약 앞에 %1 있다면%2", + "maze_step_move_step": "앞으로 한 칸 이동%1", + "maze_step_rotate_left": "왼쪽으로 회전%1", + "maze_step_rotate_right": "오른쪽으로 회전%1", + "test_wrapper": "%1 this is test block %2", + "basic_button": "%1" +}; + +if (typeof exports == "object") + exports.Lang = Lang; \ No newline at end of file diff --git a/app/lang/en.js b/app/lang/en.js index e758abd7f..271b47059 100644 --- a/app/lang/en.js +++ b/app/lang/en.js @@ -63,6 +63,26 @@ Lang.Blocks = { "CODEino_accelerometer_X": "X", "CODEino_accelerometer_Y": "Y", "CODEino_accelerometer_Z": "Z", + "dplay_switch": "스위치 ", + "dplay_light": "빛센서가 ", + "dplay_tilt": "기울기센서 상태가", + "dplay_string_1": "켜짐", + "dplay_string_2": "꺼짐", + "dplay_string_3": "밝음", + "dplay_string_4": "어두움", + "dplay_string_5": "눌림", + "dplay_string_6": "열림", + "dplay_num_pin_1": "LED 상태를", + "dplay_num_pin_2": "번 스위치가", + "dplay_num_pin_3": "아날로그", + "dplay_num_pin_4": "번 ", + "dplay_num_pin_5": "센서값", + "dplay_analog_number_0": "A0", + "dplay_analog_number_1": "A1", + "dplay_analog_number_2": "A2", + "dplay_analog_number_3": "A3", + "dplay_analog_number_4": "A4", + "dplay_analog_number_5": "A5", "ARDUINO_arduino_get_string_1": "string result of signal", "ARDUINO_arduino_get_string_2": "", "ARDUINO_arduino_send_1": "Send signal", @@ -1750,8 +1770,9 @@ Lang.Menus = { "offline_required": "System Requirement", "offline_required_detail": "Minimum 500mb disk space is required, Windows XP SP2 and above or, Mac OS 10.8 and above", "offline_notice": "Side notes", - "offline_notice_1": "1. Version 1.0.5 does not support installation of all-in-one hardware connection program", + "offline_notice_1": "1. Version 1.2.0 does not support installation of all-in-one hardware connection program", "offline_notice_2": "2. Web browser is not needed.", + "offline_notice_3": "Release note", "cparty_jr_result_2": "Thank you! I had so much fun with you.
See you around!", "cparty_jr_result_3": "Great! I've arrived school! But we can make it with fewer blocks.
How about we try again? ", "cparty_jr_result_4": "", @@ -2671,7 +2692,7 @@ Lang.Helper = { "is_press_some_key": "Checks whether an assigned key is pressed.", "reach_something": "Checks whether the object reaches the selected point.", "is_included_in_list": "Checks whether select list contains the input value.", - "boolean_basic_operator": "&equals: Checks whether the value on the left is greater than the value on the right.
>, : Checks whether the value on the left is greater than the value on the right.
<, : Checks whether the value on the left is less than the value on the right.
>&equals : Checks whether the value on the left is the same as or greater than the value on the right.
<&equals : Checks whether the value on the left is the same as or less than the value on the right.", + "boolean_basic_operator": "=: Checks whether the value on the left is greater than the value on the right.
> : Checks whether the value on the left is greater than the value on the right.
< : Checks whether the value on the left is less than the value on the right.
≥ : Checks whether the value on the left is the same as or greater than the value on the right.
≤ : Checks whether the value on the left is the same as or less than the value on the right.", "function_create": "Define a function by placing frequently used sets of blocks under this block. Place [name] next to [Define function] to give function a name. Pass on number of text values by placing [numeric/text value] block. Pass on boolean value of true or false by placing the [boolean value] block.", "function_field_label": "Place next to [Define function] to give function a name.", "function_field_string": "Pass on numeric/text value by placing this block next to [Define function] block. Grab/copy the [numeric/text value] block in the [Define function] block and use its value in function.", @@ -2875,3 +2896,389 @@ Lang.Hw = { "": "", "buzzer": "buzzer" }; +Lang.template = { + "albert_hand_found": "hand found?", + "albert_value": "%1", + "albert_move_forward_for_secs": "move forward for %1 secs %2", + "albert_move_backward_for_secs": "move backward for %1 secs %2", + "albert_turn_for_secs": "turn %1 for %2 secs %3", + "albert_change_both_wheels_by": "change wheels by left: %1 right: %2 %3", + "albert_set_both_wheels_to": "set wheels to left: %1 right: %2 %3", + "albert_change_wheel_by": "change %1 wheel by %2 %3", + "albert_set_wheel_to": "set %1 wheel to %2 %3", + "albert_stop": "stop %1", + "albert_set_pad_size_to": "set pad size to width: %1 height: %2 %3", + "albert_set_eye_to": "set %1 eye to %2 %3", + "albert_clear_eye": "clear %1 eye %2", + "albert_body_led": "%1 body led %2", + "albert_front_led": "%1 front led %2", + "albert_beep": "beep %1", + "albert_change_buzzer_by": "change buzzer by %1 ) %2", + "albert_set_buzzer_to": "set buzzer to %1 ) %2", + "albert_clear_buzzer": "clear buzzer %1", + "albert_play_note_for": "play note %1 ', %2 for %3 beats %4", + "albert_rest_for": "rest for %1 beats %2", + "albert_change_tempo_by": "change tempo by %1 ) %2", + "albert_set_tempo_to": "set tempo to %1 bpm %2", + "albert_move_forward": "move forward %1", + "albert_move_backward": "move backward %1", + "albert_turn_around": "turn %1 %2", + "albert_set_led_to": "set %1 %2 %3", + "albert_clear_led": "clear %1 %2", + "albert_change_wheels_by": "%1 %2 %3", + "albert_set_wheels_to": "%1 %2 %3", + "arduino_text": "%1", + "arduino_send": "Send signal %1", + "arduino_get_number": "number result of signal %1", + "arduino_get_string": "string result of signal %1", + "arduino_get_sensor_number": "%1 ", + "arduino_get_port_number": "%1 ", + "arduino_get_pwm_port_number": "%1 ", + "arduino_get_number_sensor_value": "Analog %1 Sensor value ", + "dplay_get_number_sensor_value": "Analog %1 Sensor value ", + "nemoino_get_number_sensor_value": "Analog %1 Sensor value ", + "sensorBoard_get_number_sensor_value": "Analog %1 Sensor value ", + "CODEino_get_number_sensor_value": "Analog %1 Sensor value ", + "arduino_get_digital_value": "Digital %1 Sensor value ", + "dplay_get_digital_value": "Digital %1 Sensor value ", + "nemoino_get_digital_value": "Digital %1 Sensor value ", + "sensorBoard_get_digital_value": "Digital %1 Sensor value ", + "CODEino_get_digital_value": "Digital %1 Sensor value ", + "arduino_toggle_led": "Digital %1 Pin %2 %3", + "dplay_toggle_led": "Digital %1 Pin %2 %3", + "nemoino_toggle_led": "Digital %1 Pin %2 %3", + "sensorBoard_toggle_led": "Digital %1 Pin %2 %3", + "CODEino_toggle_led": "Digital %1 Pin %2 %3", + "arduino_toggle_pwm": "Digital %1 Pin %2 %3", + "dplay_toggle_pwm": "Digital %1 Pin %2 %3", + "nemoino_toggle_pwm": "Digital %1 Pin %2 %3", + "sensorBoard_toggle_pwm": "Digital %1 Pin %2 %3", + "CODEino_toggle_pwm": "Digital %1 Pin %2 %3", + "arduino_convert_scale": "Map Value %1 %2 ~ %3 to %4 ~ %5 ", + "dplay_convert_scale": "Map Value %1 %2 ~ %3 to %4 ~ %5 ", + "nemoino_convert_scale": "Map Value %1 %2 ~ %3 to %4 ~ %5 ", + "sensorBoard_convert_scale": "Map Value %1 %2 ~ %3 to %4 ~ %5 ", + "CODEino_convert_scale": "Map Value %1 %2 ~ %3 to %4 ~ %5 ", + "sensorBoard_get_named_sensor_value": "%1 센서값", + "sensorBoard_is_button_pressed": "%1 버튼을 눌렀는가?", + "sensorBoard_led": "%1 LED %2 %3", + "arduino_download_connector": "%1", + "arduino_download_source": "%1", + "arduino_connected": "%1", + "arduino_reconnect": "%1", + "CODEino_get_sensor_number": "%1 ", + "CODEino_get_named_sensor_value": " %1 Sensor value ", + "CODEino_get_sound_status": "Sound is %1 ", + "CODEino_get_light_status": "Light is %1 ", + "CODEino_is_button_pressed": " Operation %1 ", + "CODEino_get_accelerometer_direction": " 3-AXIS Accelerometer %1 ", + "CODEino_get_accelerometer_value": " 3-AXIS Accelerometer %1 -axis value ", + "bitbrick_sensor_value": "%1 값", + "bitbrick_is_touch_pressed": "touch %1 이(가) 눌렸는가?", + "bitbrick_turn_off_color_led": "컬러 LED 끄기 %1", + "bitbrick_turn_on_color_led_by_rgb": "컬러 LED 켜기 R %1 G %2 B %3 %4", + "bitbrick_turn_on_color_led_by_picker": "컬러 LED 색 %1 로 정하기 %2", + "bitbrick_turn_on_color_led_by_value": "컬러 LED 켜기 색 %1 로 정하기 %2", + "bitbrick_buzzer": "버저음 %1 내기 %2", + "bitbrick_turn_off_all_motors": "모든 모터 끄기 %1", + "bitbrick_dc_speed": "DC 모터 %1 속도 %2 %3", + "bitbrick_dc_direction_speed": "DC 모터 %1 %2 방향 속력 %3 %4", + "bitbrick_servomotor_angle": "서보 모터 %1 각도 %2 %3", + "bitbrick_convert_scale": "변환 %1 값 %2 ~ %3 에서 %4 ~ %5", + "start_drawing": "Start drawing %1", + "stop_drawing": "Stop drawing %1", + "set_color": "Set brush color to %1 %2", + "set_random_color": "Set brush color to random %1", + "change_thickness": "Change thickness by %1 %2", + "set_thickness": "Set thickness to %1 %2", + "change_opacity": "Change opacity by %1 % %2", + "set_opacity": "Set opacity to %1 % %2", + "brush_erase_all": "Erase all brush %1", + "brush_stamp": "Stamp %1", + "change_brush_transparency": "Change transparency by %1 % %2", + "set_brush_tranparency": "Set transparency to %1 % %2", + "number": "%1", + "angle": "%1", + "get_x_coordinate": "%1", + "get_y_coordinate": "%1", + "get_angle": "%1", + "get_rotation_direction": "%1 ", + "distance_something": "%1 %2 %3", + "coordinate_mouse": "%1 %2 %3", + "coordinate_object": "%1 %2 %3 %4", + "calc_basic": "%1 %2 %3", + "calc_plus": "%1 %2 %3", + "calc_minus": "%1 %2 %3", + "calc_times": "%1 %2 %3", + "calc_divide": "%1 %2 %3", + "calc_mod": "%1 %2 %3", + "calc_share": "%1 %2 %3", + "calc_operation": "%1 %2 %3 %4", + "calc_rand": "%1 %2 %3 %4 %5", + "get_date": "%1 %2 %3", + "get_sound_duration": "%1 %2 %3", + "reset_project_timer": "%1", + "set_visible_project_timer": "%1 %2 %3 %4", + "timer_variable": "%1 %2", + "get_project_timer_value": "%1 %2", + "char_at": "%1 %2 %3 %4 %5", + "length_of_string": "%1 %2 %3", + "substring": "%1 %2 %3 %4 %5 %6 %7", + "replace_string": "%1 %2 %3 %4 %5 %6 %7", + "change_string_case": "%1 %2 %3 %4 %5", + "index_of_string": "%1 %2 %3 %4 %5", + "combine_something": "%1 %2 %3 %4 %5", + "get_sound_volume": "%1 %2", + "quotient_and_mod": " %1 %6 %3 %2 %5 %4", + "choose_project_timer_action": "%1 %2 %3 %4", + "wait_second": "Wait %1 seconds %2", + "repeat_basic": "Repeat %1 times %2", + "repeat_inf": "Repeat infinitely %1", + "stop_repeat": "Stop repeat %1", + "wait_until_true": "Wait until %1 %2", + "_if": "If %1 then %2", + "if_else": "If %1 then %2 %3 else", + "create_clone": "Create %1 's clone %2", + "delete_clone": "Remove this clone %1", + "when_clone_start": "%1 When clone is created", + "stop_run": "Exit program %1", + "repeat_while_true": "Repeat %2 %1 %3", + "stop_object": "Stop %1 %2", + "restart_project": "Restart Project %1", + "remove_all_clones": "Remove all clone %1", + "functionAddButton": "%1", + "function_field_label": "%1%2", + "function_field_string": "%1%2", + "function_field_boolean": "%1%2", + "function_param_string": "문자/숫자값", + "function_param_boolean": "판단값", + "function_create": "함수 정의하기 %1 %2", + "function_general": "function %1", + "hamster_hand_found": "hand found?", + "hamster_value": "%1", + "hamster_move_forward_once": "move forward once on board %1", + "hamster_turn_once": "turn %1 once on board %2", + "hamster_move_forward_for_secs": "move forward for %1 secs %2", + "hamster_move_backward_for_secs": "move backward %1 secs %2", + "hamster_turn_for_secs": "turn %1 for %2 secs %3", + "hamster_change_both_wheels_by": "change wheel by left: %1 right: %2 %3", + "hamster_set_both_wheels_to": "set wheel to left: %1 right: %2 %3", + "hamster_change_wheel_by": "change %1 wheel by %2 %3", + "hamster_set_wheel_to": "set %1 wheel to %2 %3", + "hamster_follow_line_using": "follow %1 line using %2 floor sensor %3", + "hamster_follow_line_until": "follow %1 line until %2 intersection %3", + "hamster_set_following_speed_to": "set following speed to %1 %2", + "hamster_stop": "stop %1", + "hamster_set_led_to": "set %1 led to %2 %3", + "hamster_clear_led": "clear %1 led %2", + "hamster_beep": "beep %1", + "hamster_change_buzzer_by": "change buzzer by %1 %2", + "hamster_set_buzzer_to": "set buzzer to %1 %2", + "hamster_clear_buzzer": "clear buzzer %1", + "hamster_play_note_for": "play note %1 %2 for %3 beats %4", + "hamster_rest_for": "rest for %1 beats %2", + "hamster_change_tempo_by": "change tempo by %1 %2", + "hamster_set_tempo_to": "set tempo to %1 bpm %2", + "hamster_set_port_to": "set port %1 to %2 %3", + "hamster_change_output_by": "change output %1 by %2 %3", + "hamster_set_output_to": "set output %1 to %2 %3", + "is_clicked": "%1", + "is_press_some_key": "%1 %2", + "reach_something": "%1 %2 %3", + "boolean_comparison": "%1 %2 %3", + "boolean_equal": "%1 %2 %3", + "boolean_bigger": "%1 %2 %3", + "boolean_smaller": "%1 %2 %3", + "boolean_and_or": "%1 %2 %3", + "boolean_and": "%1 %2 %3", + "boolean_or": "%1 %2 %3", + "boolean_not": "%1 %2 %3", + "true_or_false": "%1", + "True": "%1 ", + "False": "%1 ", + "boolean_basic_operator": "%1 %2 %3", + "show": "show %1", + "hide": "hide %1", + "dialog_time": "Say %1 for %2 secs %3 %4", + "dialog": "Say %1 %2 %3", + "remove_dialog": "Remove speech %1", + "change_to_nth_shape": "Change shape to %1 %2", + "change_to_next_shape": "Change to %1 shape %2", + "set_effect_volume": "Change %1 effect by %2 %3", + "set_effect": "Set %1 effect to %2 %3", + "erase_all_effects": "Erase all effects %1", + "change_scale_percent": "Change scale by %1 %2", + "set_scale_percent": "Set scale to %1 %2", + "change_scale_size": "Change scale by %1 %2", + "set_scale_size": "Set scale to %1 %2", + "flip_y": "Flip horizontally %1", + "flip_x": "Flip vertically %1", + "set_object_order": "go to %1 th layer %2", + "get_pictures": "%1 ", + "change_to_some_shape": "Change shape to %1 %2", + "add_effect_amount": "Change %1 effect by %2 %3", + "change_effect_amount": "Set %1 effect to %2 %3", + "set_effect_amount": "Change %1 effect by %2 %3", + "set_entity_effect": "Set %1 effect to %2 %3", + "change_object_index": "bring to %1 %2", + "move_direction": "Move %1 forward %2", + "move_x": "Change X by %1 %2", + "move_y": "Change Y by %1 %2", + "locate_xy_time": "Moving while %1 seconds to x: %2 y: %3 %4", + "rotate_by_angle": "Rotate by %1 degree %2", + "rotate_by_angle_dropdown": "Rotate by %1 degree %2", + "see_angle": "Set direction to %1 %2", + "see_direction": "Rotate to the %1 %2", + "locate_xy": "Move to the X: %1 Y: %2 %3", + "locate_x": "Move to the X: %1 %2", + "locate_y": "Move to the Y: %1 %2", + "locate": "Move to %1 %2", + "move_xy_time": "For %1 secs move to X: %2 Y: %3 %4", + "rotate_by_angle_time": "Rotate while %1 seconds by %2 degree %3", + "bounce_wall": "if on edge, bounce %1", + "flip_arrow_horizontal": "Flip horizontally by arrow direction %1", + "flip_arrow_vertical": "Flip vertically by arrow direction %1", + "see_angle_object": "Turn towards %1 %2", + "see_angle_direction": "See angle to %1 degree %2", + "rotate_direction": "Change direction by %1 %2", + "locate_object_time": "factorial value %1 seconds to the %2 %3", + "rotate_absolute": "Set rotation to %1 %2", + "rotate_relative": "Rotate %1 %2", + "direction_absolute": "Set direction to %1 %2", + "direction_relative": "Change direction by %1 %2", + "move_to_angle": "Rotate %1 and move %2 %3", + "rotate_by_time": "For %1 secs rotate %2 %3", + "direction_relative_duration": "For %1 secs set direction to %2 %3", + "neobot_sensor_value": "%1 값", + "neobot_turn_left": "왼쪽모터를 %1 %2 회전 %3", + "neobot_stop_left": "왼쪽모터 정지 %1", + "neobot_turn_right": "오른쪽모터를 %1 %2 회전 %3", + "neobot_stop_right": "오른쪽모터 정지 %1", + "neobot_run_motor": "%1 모터를 %2 초간 %3 %4 %5", + "neobot_servo_1": "SERVO1에 연결된 서보모터를 %1 속도로 %2 로 이동 %3", + "neobot_servo_2": "SERVO2에 연결된 서보모터를 %1 속도로 %2 로 이동 %3", + "neobot_play_note_for": "멜로디 %1 을(를) %2 옥타브로 %3 길이만큼 소리내기 %4", + "neobot_set_sensor_value": "%1 번 포트의 값을 %2 %3", + "robotis_openCM70_cm_custom_value": "직접입력 주소 ( %1 ) %2 값", + "robotis_openCM70_sensor_value": "제어기 %1 값", + "robotis_openCM70_aux_sensor_value": "%1 %2 값", + "robotis_openCM70_cm_buzzer_index": "제어기 음계값 %1 for %2 secs 연주 %3", + "robotis_openCM70_cm_buzzer_melody": "제어기 멜로디 %1 번 연주 %2", + "robotis_openCM70_cm_sound_detected_clear": "최종소리감지횟수 초기화 %1", + "robotis_openCM70_cm_led": "제어기 %1 LED %2 %3", + "robotis_openCM70_cm_motion": "모션 %1 번 실행 %2", + "robotis_openCM70_aux_motor_speed": "%1 감속모터 속도를 %2 , 출력값을 %3 (으)로 정하기 %4", + "robotis_openCM70_aux_servo_mode": "%1 서보모터 모드를 %2 (으)로 정하기 %3", + "robotis_openCM70_aux_servo_speed": "%1 서보모터 속도를 %2 , 출력값을 %3 (으)로 정하기 %4", + "robotis_openCM70_aux_servo_position": "%1 서보모터 위치를 %2 (으)로 정하기 %3", + "robotis_openCM70_aux_led_module": "%1 LED 모듈을 %2 (으)로 정하기 %3", + "robotis_openCM70_aux_custom": "%1 사용자 장치를 %2 (으)로 정하기 %3", + "robotis_openCM70_cm_custom": "직접입력 주소 ( %1 ) (을)를 %2 (으)로 정하기 %3", + "robotis_carCont_sensor_value": "%1 값", + "robotis_carCont_cm_led": "4번 LED %1 , 1번 LED %2 %3", + "robotis_carCont_cm_sound_detected_clear": "최종소리감지횟수 초기화 %1", + "robotis_carCont_aux_motor_speed": "%1 감속모터 속도를 %2 , 출력값을 %3 (으)로 정하기 %4", + "robotis_carCont_cm_calibration": "%1 적외선 센서 캘리브레이션 값을 %2 (으)로 정하기 %3", + "when_scene_start": "%1 When scene started", + "start_scene": "Start %1 scene %2", + "start_neighbor_scene": "Start %1 scene %2", + "sound_something": "Play %1 Sound %2", + "sound_something_second": "Play %1 sound for %2 secs %3", + "sound_something_wait": "Play %1 Sound and wait %2", + "sound_something_second_wait": "Play %1 Sound for %2 secs and wait %3", + "sound_volume_change": "Change volume by %1 % %2", + "sound_volume_set": "Set volume to %1 % %2", + "sound_silent_all": "Stop all sounds %1", + "get_sounds": "%1 ", + "sound_something_with_block": "Play %1 Sound %2", + "sound_something_second_with_block": "Play %1 sound for %2 secs %3", + "sound_something_wait_with_block": "Play %1 Sound and wait %2", + "sound_something_second_wait_with_block": "Play %1 Sound for %2 secs and wait %3", + "sound_from_to": "Play %1 sound from %2 to %3 secs %4", + "sound_from_to_and_wait": "Play %1 sound from %2 to %3 secs and wait %4", + "when_run_button_click": "%1 When run", + "press_some_key": "%1 When key %2 pressed %3", + "when_some_key_pressed": "%1 When key %2 pressed", + "mouse_clicked": "%1 When mouse clicked", + "mouse_click_cancled": "%1 When mouse click released", + "when_object_click": "%1 When object clicked", + "when_object_click_canceled": "%1 When object click released", + "when_some_key_click": "%1 When press some key", + "when_message_cast": "%1 When %2 message received", + "message_cast": "Send %1 message %2", + "message_cast_wait": "Send %1 message and wait %2", + "text": "%1", + "text_write": "Writing that %1", + "text_append": "After writing that %1", + "text_prepend": "Add %1 in front of that", + "text_flush": "Remove all text", + "variableAddButton": "%1", + "listAddButton": "%1", + "change_variable": "Plus to %1 by %2 %3", + "set_variable": "Set %1 to %2 %3", + "show_variable": "Show variable %1 value %2", + "hide_variable": "Hide variable %1 value %2", + "get_variable": "%2 %1", + "ask_and_wait": "Ask %1 and wait %2", + "get_canvas_input_value": "%1 ", + "add_value_to_list": "add %1 to the list %2 %3", + "remove_value_from_list": "remove %1 th element from %2 %3", + "insert_value_to_list": "insert %1 to %2 %3 th position %4", + "change_value_list_index": "change %1 %2 th element to %3 %4", + "value_of_index_from_list": "%1 %2 %3 %4 %5", + "length_of_list": "%1 %2 %3", + "show_list": "Show list %1 %2", + "hide_list": "Hide list %1 %2", + "options_for_list": "%1 ", + "set_visible_answer": "response %1 %2", + "is_included_in_list": "%1 %2 %3 %4 %5", + "xbot_digitalInput": "%1", + "xbot_analogValue": "%1", + "xbot_digitalOutput": "Digital %1 PIN, Ouput Value %2 %3", + "xbot_analogOutput": "Analog %1 %2 %3", + "xbot_servo": "Servo Motor %1 , Angle %2 %3", + "xbot_oneWheel": "Wheel(DC) Motor %1 , Speed %2 %3", + "xbot_twoWheel": "Wheel(DC) Motor Right(2) Speed: %1 Left(1) Speed: %2 %3", + "xbot_rgb": "RGB LED Color from Red %1 Green %2 Blue %3 %4", + "xbot_rgb_picker": "RGB LED Color from %1 %2", + "xbot_buzzer": "play note %1 %2 for %3 sec of Melody Playing %4", + "xbot_lcd": "LCD %1 th Line , Text %2 %3", + "run": "", + "mutant": "test mutant block", + "jr_start": "%1", + "jr_repeat": "%1 %2 %3", + "jr_item": "꽃 모으기 %1", + "cparty_jr_item": "%1 %2", + "jr_north": "%1 %2", + "jr_east": "%1 %2", + "jr_south": "%1 %2", + "jr_west": "%1 %2", + "jr_start_basic": "%1 %2", + "jr_go_straight": "%1 %2", + "jr_turn_left": "%1 %2", + "jr_turn_right": "%1 %2", + "jr_go_slow": "%1 %2", + "jr_repeat_until_dest": "%1 %2 %3", + "jr_if_construction": "%1 %2 %3 %4", + "jr_if_speed": "if %1 in front %2", + "maze_step_start": "%1 시작하기를 클릭했을 때", + "maze_step_jump": "뛰어넘기%1", + "maze_step_for": "%1 번 반복하기%2", + "test": "%1 this is test block %2", + "maze_repeat_until_1": "%1 만날 때 까지 반복%2", + "maze_repeat_until_2": "모든 %1 만날 때 까지 반복%2", + "maze_step_if_1": "만약 앞에 %1 있다면%2", + "maze_step_if_2": "만약 앞에 %1 있다면%2", + "maze_call_function": "약속 불러오기%1", + "maze_define_function": "약속하기%1", + "maze_step_if_3": "만약 앞에 %1 있다면%2", + "maze_step_if_4": "만약 앞에 %1 있다면%2", + "maze_step_move_step": "앞으로 한 칸 이동%1", + "maze_step_rotate_left": "왼쪽으로 회전%1", + "maze_step_rotate_right": "오른쪽으로 회전%1", + "test_wrapper": "%1 this is test block %2", + "basic_button": "%1" +}; + +if (typeof exports == "object") + exports.Lang = Lang; \ No newline at end of file diff --git a/app/lang/ko.js b/app/lang/ko.js index 4cb49ed2b..b8537d3b0 100644 --- a/app/lang/ko.js +++ b/app/lang/ko.js @@ -63,6 +63,26 @@ Lang.Blocks = { "CODEino_accelerometer_X": "X", "CODEino_accelerometer_Y": "Y", "CODEino_accelerometer_Z": "Z", + "dplay_switch": "스위치 ", + "dplay_light": "빛센서가 ", + "dplay_tilt": "기울기센서 상태가", + "dplay_string_1": "켜짐", + "dplay_string_2": "꺼짐", + "dplay_string_3": "밝음", + "dplay_string_4": "어두움", + "dplay_string_5": "눌림", + "dplay_string_6": "열림", + "dplay_num_pin_1": "LED 상태를", + "dplay_num_pin_2": "번 스위치가", + "dplay_num_pin_3": "아날로그", + "dplay_num_pin_4": "번 ", + "dplay_num_pin_5": "센서값", + "dplay_analog_number_0": "A0", + "dplay_analog_number_1": "A1", + "dplay_analog_number_2": "A2", + "dplay_analog_number_3": "A3", + "dplay_analog_number_4": "A4", + "dplay_analog_number_5": "A5", "ARDUINO_arduino_get_string_1": "신호", "ARDUINO_arduino_get_string_2": "의 글자 결과값", "ARDUINO_arduino_send_1": "신호", @@ -122,7 +142,7 @@ Lang.Blocks = { "CALC_distance_something_1": "", "CALC_distance_something_2": "까지의 거리", "CALC_get_angle": "각도값", - "CALC_get_date_1": "현재", + "CALC_get_date_1": " 현재", "CALC_get_date_2": "", "CALC_get_date_day": "일", "CALC_get_date_hour": "시각(시)", @@ -132,7 +152,7 @@ Lang.Blocks = { "CALC_get_date_year": "연도", "CALC_get_sound_duration_1": "", "CALC_get_sound_duration_2": "소리의 길이", - "CALC_get_timer_value": "초시계 값", + "CALC_get_timer_value": " 초시계 값", "CALC_get_x_coordinate": "X 좌푯값", "CALC_get_y_coordinate": "Y 좌푯값", "CALC_timer_reset": "초시계 초기화", @@ -158,10 +178,10 @@ Lang.Blocks = { "FLOW_restart": "처음부터 다시 실행하기", "FLOW_stop_object_1": "", "FLOW_stop_object_2": "멈추기", - "FLOW_stop_object_all": "모든 코드", - "FLOW_stop_object_this_object": "자신의 코드", - "FLOW_stop_object_this_thread": "이 코드", - "FLOW_stop_object_other_thread": "자신의 다른 코드", + "FLOW_stop_object_all": "모든", + "FLOW_stop_object_this_object": "자신의", + "FLOW_stop_object_this_thread": "이", + "FLOW_stop_object_other_thread": "자신의 다른", "FLOW_stop_repeat": "반복 중단하기", "FLOW_stop_run": "프로그램 끝내기", "FLOW_wait_second_1": "", @@ -175,13 +195,13 @@ Lang.Blocks = { "JUDGEMENT_boolean_not_1": "", "JUDGEMENT_boolean_not_2": "(이)가 아니다", "JUDGEMENT_boolean_or": "또는", - "JUDGEMENT_false": "거짓", + "JUDGEMENT_false": " 거짓 ", "JUDGEMENT_is_clicked": "마우스를 클릭했는가?", "JUDGEMENT_is_press_some_key_1": "", "JUDGEMENT_is_press_some_key_2": "키가 눌러져 있는가?", "JUDGEMENT_reach_something_1": "", "JUDGEMENT_reach_something_2": "에 닿았는가?", - "JUDGEMENT_true": "참", + "JUDGEMENT_true": " 참 ", "LOOKS": "생김새", "LOOKS_change_scale_percent_1": "크기를", "LOOKS_change_scale_percent_2": "만큼 바꾸기", @@ -352,9 +372,9 @@ Lang.Blocks = { "VARIABLE_combine_something_1": "", "VARIABLE_combine_something_2": "과(와)", "VARIABLE_combine_something_3": "를 합치기", - "VARIABLE_get_canvas_input_value": "대답", + "VARIABLE_get_canvas_input_value": " 대답 ", "VARIABLE_get_variable": "변수", - "VARIABLE_get_variable_1": "", + "VARIABLE_get_variable_1": "값", "VARIABLE_get_variable_2": "값", "VARIABLE_get_y": "Y 좌푯값", "VARIABLE_hide_list": "리스트 숨기기", @@ -758,7 +778,7 @@ Lang.Blocks = { "MOVING_direction_relative_duration_1": "", "MOVING_direction_relative_duration_2": "초 동안 이동 방향", "MOVING_direction_relative_duration_3": "만큼 회전하기", - "CALC_get_sound_volume": "소릿값", + "CALC_get_sound_volume": " 소릿값", "SOUND_sound_from_to_1": "소리", "SOUND_sound_from_to_2": "", "SOUND_sound_from_to_3": "초 부터", @@ -1750,8 +1770,9 @@ Lang.Menus = { "offline_required": "최소 요구사항", "offline_required_detail": "디스크 여유 공간 500MB 이상, windows XP SP2 혹은 MAC OS 10.8 이상", "offline_notice": "설치 전 참고사항", - "offline_notice_1": "1. 버전 1.0.5 에서는 하드웨어 연결 프로그램 통합 설치가 지원되지 않습니다.", + "offline_notice_1": "1. 버전 1.2.0 에서는 하드웨어 연결 프로그램 통합 설치가 지원되지 않습니다.", "offline_notice_2": "2. 별도의 웹브라우져가 필요하지 않습니다.", + "offline_notice_3": "버전 별 변경 사항 안내", "cparty_jr_result_2": "고마워~ 덕분에 책가방을 챙겨서 학교에 올 수 있었어~
다음 학교 가는 길도 함께 가자~ ", "cparty_jr_result_3": "우왓! 학교까지 왔어!
하지만 더 적은 블록을 사용해도 학교에 갈 수 있는데
다시 해볼래?", "cparty_jr_result_4": "우왓! 책가방을 얻었어!
하지만 더 적은 블록을 사용해도 책가방을 얻을 수 있는데
다시 해볼래? ", @@ -2281,7 +2302,7 @@ Lang.Workspace = { "file_save_as": "복사본으로 저장하기", "file_save_download": "내 컴퓨터에 저장하기", "func": "함수", - "function_create": "함수 추가", + "function_create": "함수 만들기", "interface": "인터페이스", "landscape": "배경", "list": "리스트", @@ -2292,7 +2313,7 @@ Lang.Workspace = { "list_add_fail_msg2": "리스트의 이름이 적절하지 않습니다.", "list_add_ok": "리스트 추가 완료", "list_add_ok_msg": "을(를) 추가하였습니다.", - "list_create": "리스트 추가", + "list_create": "리스트 만들기", "list_dup": "같은 이름의 리스트가 이미 존재합니다.", "list_newname": "새로운 이름", "list_remove": "리스트 삭제", @@ -2369,7 +2390,7 @@ Lang.Workspace = { "variable_add_fail_msg2": "변수의 이름이 적절하지 않습니다.", "variable_add_ok": "변수 추가 완료", "variable_add_ok_msg": "을(를) 추가하였습니다.", - "variable_create": "변수 추가", + "variable_create": "변수 만들기", "variable_dup": "같은 이름의 변수가 이미 존재합니다.", "variable_newname": "새로운 이름", "variable_remove": "변수 삭제", @@ -2671,7 +2692,7 @@ Lang.Helper = { "is_press_some_key": "선택한 키가 눌려져 있는 경우 ‘참’으로 판단합니다.", "reach_something": "해당 오브젝트가 선택한 항목과 닿은 경우 ‘참’으로 판단합니다.", "is_included_in_list": "선택한 리스트에 입력한 값을 가진 항목이 포함되어 있는지 확인합니다.", - "boolean_basic_operator": "&equals : 왼쪽에 위치한 값과 오른쪽에 위치한 값이 같으면 '참'으로 판단합니다.
>, : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 크면 '참'으로 판단합니다.
<, : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 작으면 '참'으로 판단합니다.
>&equals : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 크거나 같으면 '참'으로 판단합니다.
<&equals : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 작거나 같으면 '참'으로 판단합니다.", + "boolean_basic_operator": "= : 왼쪽에 위치한 값과 오른쪽에 위치한 값이 같으면 '참'으로 판단합니다.
> : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 크면 '참'으로 판단합니다.
< : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 작으면 '참'으로 판단합니다.
≥ : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 크거나 같으면 '참'으로 판단합니다.
≤ : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 작거나 같으면 '참'으로 판단합니다.", "function_create": "자주 쓰는 코드를 이 블록 아래에 조립하여 함수로 만듭니다. [함수 정의하기]의 오른쪽 빈칸에 [이름]을 조립하여 함수의 이름을 정할 수 있습니다. 함수를 실행하는 데 입력값이 필요한 경우 빈칸에 [문자/숫자값], [판단값]을 조립하여 매개변수로 사용합니다.", "function_field_label": "'함수 정의하기'의 빈칸 안에 조립하고, 이름을 입력하여 함수의 이름을 정해줍니다. ", "function_field_string": "해당 함수를 실행하는데 문자/숫자 값이 필요한 경우 빈칸 안에 조립하여 매개변수로 사용합니다. 이 블록 내부의[문자/숫자값]을 분리하여 함수의 코드 중 필요한 부분에 넣어 사용합니다.", @@ -2875,3 +2896,389 @@ Lang.Hw = { "": "", "buzzer": "부저" }; +Lang.template = { + "albert_hand_found": "손 찾음?", + "albert_value": "%1", + "albert_move_forward_for_secs": "앞으로 %1 초 이동하기 %2", + "albert_move_backward_for_secs": "뒤로 %1 초 이동하기 %2", + "albert_turn_for_secs": "%1 으로 %2 초 돌기 %3", + "albert_change_both_wheels_by": "왼쪽 바퀴 %1 오른쪽 바퀴 %2 만큼 바꾸기 %3", + "albert_set_both_wheels_to": "왼쪽 바퀴 %1 오른쪽 바퀴 %2 (으)로 정하기 %3", + "albert_change_wheel_by": "%1 바퀴 %2 만큼 바꾸기 %3", + "albert_set_wheel_to": "%1 바퀴 %2 (으)로 정하기 %3", + "albert_stop": "정지하기 %1", + "albert_set_pad_size_to": "패드 크기를 폭 %1 높이 %2 (으)로 정하기 %3", + "albert_set_eye_to": "%1 눈을 %2 으로 정하기 %3", + "albert_clear_eye": "%1 눈 끄기 %2", + "albert_body_led": "몸통 LED %1 %2", + "albert_front_led": "앞쪽 LED %1 %2", + "albert_beep": "삐 소리내기 %1", + "albert_change_buzzer_by": "버저 음을 %1 만큼 바꾸기 %2", + "albert_set_buzzer_to": "버저 음을 %1 (으)로 정하기 %2", + "albert_clear_buzzer": "버저 끄기 %1", + "albert_play_note_for": "%1 %2 음을 %3 박자 연주하기 %4", + "albert_rest_for": "%1 박자 쉬기 %2", + "albert_change_tempo_by": "연주 속도를 %1 만큼 바꾸기 %2", + "albert_set_tempo_to": "연주 속도를 %1 BPM으로 정하기 %2", + "albert_move_forward": "앞으로 이동하기 %1", + "albert_move_backward": "뒤로 이동하기 %1", + "albert_turn_around": "%1 으로 돌기 %2", + "albert_set_led_to": "%1 %2 으로 정하기 %3", + "albert_clear_led": "%1 %2", + "albert_change_wheels_by": "%1 %2 %3", + "albert_set_wheels_to": "%1 %2 %3", + "arduino_text": "%1", + "arduino_send": "신호 %1 보내기", + "arduino_get_number": "신호 %1 의 숫자 결과값", + "arduino_get_string": "신호 %1 의 글자 결과값", + "arduino_get_sensor_number": "%1 ", + "arduino_get_port_number": "%1 ", + "arduino_get_pwm_port_number": "%1 ", + "arduino_get_number_sensor_value": "아날로그 %1 번 센서값 ", + "dplay_get_number_sensor_value": "아날로그 %1 번 센서값 ", + "nemoino_get_number_sensor_value": "아날로그 %1 번 센서값 ", + "sensorBoard_get_number_sensor_value": "아날로그 %1 번 센서값 ", + "CODEino_get_number_sensor_value": "아날로그 %1 번 센서값 ", + "arduino_get_digital_value": "디지털 %1 번 센서값 ", + "dplay_get_digital_value": "디지털 %1 번 센서값 ", + "nemoino_get_digital_value": "디지털 %1 번 센서값 ", + "sensorBoard_get_digital_value": "디지털 %1 번 센서값 ", + "CODEino_get_digital_value": "디지털 %1 번 센서값 ", + "arduino_toggle_led": "디지털 %1 번 핀 %2 %3", + "dplay_toggle_led": "디지털 %1 번 핀 %2 %3", + "nemoino_toggle_led": "디지털 %1 번 핀 %2 %3", + "sensorBoard_toggle_led": "디지털 %1 번 핀 %2 %3", + "CODEino_toggle_led": "디지털 %1 번 핀 %2 %3", + "arduino_toggle_pwm": "디지털 %1 번 핀을 %2 (으)로 정하기 %3", + "dplay_toggle_pwm": "디지털 %1 번 핀을 %2 (으)로 정하기 %3", + "nemoino_toggle_pwm": "디지털 %1 번 핀을 %2 (으)로 정하기 %3", + "sensorBoard_toggle_pwm": "디지털 %1 번 핀을 %2 (으)로 정하기 %3", + "CODEino_toggle_pwm": "디지털 %1 번 핀을 %2 (으)로 정하기 %3", + "arduino_convert_scale": "%1 값의 범위를 %2 ~ %3 에서 %4 ~ %5 (으)로 바꾼값 ", + "dplay_convert_scale": "%1 값의 범위를 %2 ~ %3 에서 %4 ~ %5 (으)로 바꾼값 ", + "nemoino_convert_scale": "%1 값의 범위를 %2 ~ %3 에서 %4 ~ %5 (으)로 바꾼값 ", + "sensorBoard_convert_scale": "%1 값의 범위를 %2 ~ %3 에서 %4 ~ %5 (으)로 바꾼값 ", + "CODEino_convert_scale": "%1 값의 범위를 %2 ~ %3 에서 %4 ~ %5 (으)로 바꾼값 ", + "sensorBoard_get_named_sensor_value": "%1 센서값", + "sensorBoard_is_button_pressed": "%1 버튼을 눌렀는가?", + "sensorBoard_led": "%1 LED %2 %3", + "arduino_download_connector": "%1", + "arduino_download_source": "%1", + "arduino_connected": "%1", + "arduino_reconnect": "%1", + "CODEino_get_sensor_number": "%1 ", + "CODEino_get_named_sensor_value": " %1 센서값 ", + "CODEino_get_sound_status": "소리센서 %1 ", + "CODEino_get_light_status": "빛센서 %1 ", + "CODEino_is_button_pressed": " 보드의 %1 ", + "CODEino_get_accelerometer_direction": " 3축 가속도센서 %1 ", + "CODEino_get_accelerometer_value": " 3축 가속도센서 %1 축의 센서값 ", + "bitbrick_sensor_value": "%1 값", + "bitbrick_is_touch_pressed": "버튼 %1 이(가) 눌렸는가?", + "bitbrick_turn_off_color_led": "컬러 LED 끄기 %1", + "bitbrick_turn_on_color_led_by_rgb": "컬러 LED 켜기 R %1 G %2 B %3 %4", + "bitbrick_turn_on_color_led_by_picker": "컬러 LED 색 %1 로 정하기 %2", + "bitbrick_turn_on_color_led_by_value": "컬러 LED 켜기 색 %1 로 정하기 %2", + "bitbrick_buzzer": "버저음 %1 내기 %2", + "bitbrick_turn_off_all_motors": "모든 모터 끄기 %1", + "bitbrick_dc_speed": "DC 모터 %1 속도 %2 %3", + "bitbrick_dc_direction_speed": "DC 모터 %1 %2 방향 속력 %3 %4", + "bitbrick_servomotor_angle": "서보 모터 %1 각도 %2 %3", + "bitbrick_convert_scale": "변환 %1 값 %2 ~ %3 에서 %4 ~ %5", + "start_drawing": "그리기 시작하기 %1", + "stop_drawing": "그리기 멈추기 %1", + "set_color": "붓의 색을 %1 (으)로 정하기 %2", + "set_random_color": "붓의 색을 무작위로 정하기 %1", + "change_thickness": "붓의 굵기를 %1 만큼 바꾸기 %2", + "set_thickness": "붓의 굵기를 %1 (으)로 정하기 %2", + "change_opacity": "붓의 불투명도를 %1 % 만큼 바꾸기 %2", + "set_opacity": "붓의 불투명도를 %1 % 로 정하기 %2", + "brush_erase_all": "모든 붓 지우기 %1", + "brush_stamp": "도장찍기 %1", + "change_brush_transparency": "붓의 투명도를 %1 % 만큼 바꾸기 %2", + "set_brush_tranparency": "붓의 투명도를 %1 % 로 정하기 %2", + "number": "%1", + "angle": "%1", + "get_x_coordinate": "%1", + "get_y_coordinate": "%1", + "get_angle": "%1", + "get_rotation_direction": "%1 ", + "distance_something": "%1 %2 %3", + "coordinate_mouse": "%1 %2 %3", + "coordinate_object": "%1 %2 %3 %4", + "calc_basic": "%1 %2 %3", + "calc_plus": "%1 %2 %3", + "calc_minus": "%1 %2 %3", + "calc_times": "%1 %2 %3", + "calc_divide": "%1 %2 %3", + "calc_mod": "%1 %2 %3 %4", + "calc_share": "%1 %2 %3 %4", + "calc_operation": "%1 %2 %3 %4", + "calc_rand": "%1 %2 %3 %4 %5", + "get_date": "%1 %2 %3", + "get_sound_duration": "%1 %2 %3", + "reset_project_timer": "%1", + "set_visible_project_timer": "%1 %2 %3 %4", + "timer_variable": "%1 %2", + "get_project_timer_value": "%1 %2", + "char_at": "%1 %2 %3 %4 %5", + "length_of_string": "%1 %2 %3", + "substring": "%1 %2 %3 %4 %5 %6 %7", + "replace_string": "%1 %2 %3 %4 %5 %6 %7", + "change_string_case": "%1 %2 %3 %4 %5", + "index_of_string": "%1 %2 %3 %4 %5", + "combine_something": "%1 %2 %3 %4 %5", + "get_sound_volume": "%1 %2", + "quotient_and_mod": "%1 %2 %3 %4 %5 %6", + "choose_project_timer_action": "%1 %2 %3 %4", + "wait_second": "%1 초 기다리기 %2", + "repeat_basic": "%1 번 반복하기 %2", + "repeat_inf": "계속 반복하기 %1", + "stop_repeat": "반복 중단하기 %1", + "wait_until_true": "%1 이(가) 될 때까지 기다리기 %2", + "_if": "만일 %1 이라면 %2", + "if_else": "만일 %1 이라면 %2 %3 아니면", + "create_clone": "%1 의 복제본 만들기 %2", + "delete_clone": "이 복제본 삭제하기 %1", + "when_clone_start": "%1 복제본이 처음 생성되었을때", + "stop_run": "프로그램 끝내기 %1", + "repeat_while_true": "%1 %2 반복하기 %3", + "stop_object": "%1 코드 멈추기 %2", + "restart_project": "처음부터 다시 실행하기 %1", + "remove_all_clones": "모든 복제본 삭제하기 %1", + "functionAddButton": "%1", + "function_field_label": "%1%2", + "function_field_string": "%1%2", + "function_field_boolean": "%1%2", + "function_param_string": "문자/숫자값", + "function_param_boolean": "판단값", + "function_create": "함수 정의하기 %1 %2", + "function_general": "함수 %1", + "hamster_hand_found": "손 찾음?", + "hamster_value": "%1", + "hamster_move_forward_once": "말판 앞으로 한 칸 이동하기 %1", + "hamster_turn_once": "말판 %1 으로 한 번 돌기 %2", + "hamster_move_forward_for_secs": "앞으로 %1 초 이동하기 %2", + "hamster_move_backward_for_secs": "뒤로 %1 초 이동하기 %2", + "hamster_turn_for_secs": "%1 으로 %2 초 돌기 %3", + "hamster_change_both_wheels_by": "왼쪽 바퀴 %1 오른쪽 바퀴 %2 만큼 바꾸기 %3", + "hamster_set_both_wheels_to": "왼쪽 바퀴 %1 오른쪽 바퀴 %2 (으)로 정하기 %3", + "hamster_change_wheel_by": "%1 바퀴 %2 만큼 바꾸기 %3", + "hamster_set_wheel_to": "%1 바퀴 %2 (으)로 정하기 %3", + "hamster_follow_line_using": "%1 선을 %2 바닥 센서로 따라가기 %3", + "hamster_follow_line_until": "%1 선을 따라 %2 교차로까지 이동하기 %3", + "hamster_set_following_speed_to": "선 따라가기 속도를 %1 (으)로 정하기 %2", + "hamster_stop": "정지하기 %1", + "hamster_set_led_to": "%1 LED를 %2 으로 정하기 %3", + "hamster_clear_led": "%1 LED 끄기 %2", + "hamster_beep": "삐 소리내기 %1", + "hamster_change_buzzer_by": "버저 음을 %1 만큼 바꾸기 %2", + "hamster_set_buzzer_to": "버저 음을 %1 (으)로 정하기 %2", + "hamster_clear_buzzer": "버저 끄기 %1", + "hamster_play_note_for": "%1 %2 음을 %3 박자 연주하기 %4", + "hamster_rest_for": "%1 박자 쉬기 %2", + "hamster_change_tempo_by": "연주 속도를 %1 만큼 바꾸기 %2", + "hamster_set_tempo_to": "연주 속도를 %1 BPM으로 정하기 %2", + "hamster_set_port_to": "포트 %1 를 %2 으로 정하기 %3", + "hamster_change_output_by": "출력 %1 를 %2 만큼 바꾸기 %3", + "hamster_set_output_to": "출력 %1 를 %2 (으)로 정하기 %3", + "is_clicked": "%1", + "is_press_some_key": "%1 %2", + "reach_something": "%1 %2 %3", + "boolean_comparison": "%1 %2 %3", + "boolean_equal": "%1 %2 %3", + "boolean_bigger": "%1 %2 %3", + "boolean_smaller": "%1 %2 %3", + "boolean_and_or": "%1 %2 %3", + "boolean_and": "%1 %2 %3", + "boolean_or": "%1 %2 %3", + "boolean_not": "%1 %2 %3", + "true_or_false": "%1", + "True": "%1 ", + "False": "%1 ", + "boolean_basic_operator": "%1 %2 %3", + "show": "모양 보이기 %1", + "hide": "모양 숨기기 %1", + "dialog_time": "%1 을(를) %2 초 동안 %3 %4", + "dialog": "%1 을(를) %2 %3", + "remove_dialog": "말하기 지우기 %1", + "change_to_nth_shape": "%1 모양으로 바꾸기 %2", + "change_to_next_shape": "%1 모양으로 바꾸기 %2", + "set_effect_volume": "%1 효과를 %2 만큼 주기 %3", + "set_effect": "%1 효과를 %2 (으)로 정하기 %3", + "erase_all_effects": "효과 모두 지우기 %1", + "change_scale_percent": "크기를 %1 만큼 바꾸기 %2", + "set_scale_percent": "크기를 %1 (으)로 정하기 %2", + "change_scale_size": "크기를 %1 만큼 바꾸기 %2", + "set_scale_size": "크기를 %1 (으)로 정하기 %2", + "flip_y": "좌우 모양 뒤집기 %1", + "flip_x": "상하 모양 뒤집기 %1", + "set_object_order": "%1 번째로 올라오기 %2", + "get_pictures": "%1 ", + "change_to_some_shape": "%1 모양으로 바꾸기 %2", + "add_effect_amount": "%1 효과를 %2 만큼 주기 %3", + "change_effect_amount": "%1 효과를 %2 (으)로 정하기 %3", + "set_effect_amount": "%1 효과를 %2 만큼 주기 %3", + "set_entity_effect": "%1 효과를 %2 (으)로 정하기 %3", + "change_object_index": "%1 보내기 %2", + "move_direction": "이동 방향으로 %1 만큼 움직이기 %2", + "move_x": "x 좌표를 %1 만큼 바꾸기 %2", + "move_y": "y 좌표를 %1 만큼 바꾸기 %2", + "locate_xy_time": "%1 초 동안 x: %2 y: %3 위치로 이동하기 %4", + "rotate_by_angle": "오브젝트를 %1 만큼 회전하기 %2", + "rotate_by_angle_dropdown": "%1 만큼 회전하기 %2", + "see_angle": "이동 방향을 %1 (으)로 정하기 %2", + "see_direction": "%1 쪽 보기 %2", + "locate_xy": "x: %1 y: %2 위치로 이동하기 %3", + "locate_x": "x: %1 위치로 이동하기 %2", + "locate_y": "y: %1 위치로 이동하기 %2", + "locate": "%1 위치로 이동하기 %2", + "move_xy_time": "%1 초 동안 x: %2 y: %3 만큼 움직이기 %4", + "rotate_by_angle_time": "오브젝트를 %1 초 동안 %2 만큼 회전하기 %3", + "bounce_wall": "화면 끝에 닿으면 튕기기 %1", + "flip_arrow_horizontal": "화살표 방향 좌우 뒤집기 %1", + "flip_arrow_vertical": "화살표 방향 상하 뒤집기 %1", + "see_angle_object": "%1 쪽 바라보기 %2", + "see_angle_direction": "오브젝트를 %1 (으)로 정하기 %2", + "rotate_direction": "이동 방향을 %1 만큼 회전하기 %2", + "locate_object_time": "%1 초 동안 %2 위치로 이동하기 %3", + "rotate_absolute": "방향을 %1 (으)로 정하기 %2", + "rotate_relative": "방향을 %1 만큼 회전하기 %2", + "direction_absolute": "이동 방향을 %1 (으)로 정하기 %2", + "direction_relative": "이동 방향을 %1 만큼 회전하기 %2", + "move_to_angle": "%1 방향으로 %2 만큼 움직이기 %3", + "rotate_by_time": "%1 초 동안 방향을 %2 만큼 회전하기 %3", + "direction_relative_duration": "%1 초 동안 이동 방향 %2 만큼 회전하기 %3", + "neobot_sensor_value": "%1 값", + "neobot_turn_left": "왼쪽모터를 %1 %2 회전 %3", + "neobot_stop_left": "왼쪽모터 정지 %1", + "neobot_turn_right": "오른쪽모터를 %1 %2 회전 %3", + "neobot_stop_right": "오른쪽모터 정지 %1", + "neobot_run_motor": "%1 모터를 %2 초간 %3 %4 %5", + "neobot_servo_1": "SERVO1에 연결된 서보모터를 %1 속도로 %2 로 이동 %3", + "neobot_servo_2": "SERVO2에 연결된 서보모터를 %1 속도로 %2 로 이동 %3", + "neobot_play_note_for": "멜로디 %1 을(를) %2 옥타브로 %3 길이만큼 소리내기 %4", + "neobot_set_sensor_value": "%1 번 포트의 값을 %2 %3", + "robotis_openCM70_cm_custom_value": "직접입력 주소 ( %1 ) %2 값", + "robotis_openCM70_sensor_value": "제어기 %1 값", + "robotis_openCM70_aux_sensor_value": "%1 %2 값", + "robotis_openCM70_cm_buzzer_index": "제어기 음계값 %1 을(를) %2 초 동안 연주 %3", + "robotis_openCM70_cm_buzzer_melody": "제어기 멜로디 %1 번 연주 %2", + "robotis_openCM70_cm_sound_detected_clear": "최종소리감지횟수 초기화 %1", + "robotis_openCM70_cm_led": "제어기 %1 LED %2 %3", + "robotis_openCM70_cm_motion": "모션 %1 번 실행 %2", + "robotis_openCM70_aux_motor_speed": "%1 감속모터 속도를 %2 , 출력값을 %3 (으)로 정하기 %4", + "robotis_openCM70_aux_servo_mode": "%1 서보모터 모드를 %2 (으)로 정하기 %3", + "robotis_openCM70_aux_servo_speed": "%1 서보모터 속도를 %2 , 출력값을 %3 (으)로 정하기 %4", + "robotis_openCM70_aux_servo_position": "%1 서보모터 위치를 %2 (으)로 정하기 %3", + "robotis_openCM70_aux_led_module": "%1 LED 모듈을 %2 (으)로 정하기 %3", + "robotis_openCM70_aux_custom": "%1 사용자 장치를 %2 (으)로 정하기 %3", + "robotis_openCM70_cm_custom": "직접입력 주소 ( %1 ) (을)를 %2 (으)로 정하기 %3", + "robotis_carCont_sensor_value": "%1 값", + "robotis_carCont_cm_led": "4번 LED %1 , 1번 LED %2 %3", + "robotis_carCont_cm_sound_detected_clear": "최종소리감지횟수 초기화 %1", + "robotis_carCont_aux_motor_speed": "%1 감속모터 속도를 %2 , 출력값을 %3 (으)로 정하기 %4", + "robotis_carCont_cm_calibration": "%1 적외선 센서 캘리브레이션 값을 %2 (으)로 정하기 %3", + "when_scene_start": "%1 장면이 시작되었을때", + "start_scene": "%1 시작하기 %2", + "start_neighbor_scene": "%1 장면 시작하기 %2", + "sound_something": "소리 %1 재생하기 %2", + "sound_something_second": "소리 %1 %2 초 재생하기 %3", + "sound_something_wait": "소리 %1 재생하고 기다리기 %2", + "sound_something_second_wait": "소리 %1 %2 초 재생하고 기다리기 %3", + "sound_volume_change": "소리 크기를 %1 % 만큼 바꾸기 %2", + "sound_volume_set": "소리 크기를 %1 % 로 정하기 %2", + "sound_silent_all": "모든 소리 멈추기 %1", + "get_sounds": "%1 ", + "sound_something_with_block": "소리 %1 재생하기 %2", + "sound_something_second_with_block": "소리 %1 %2 초 재생하기 %3", + "sound_something_wait_with_block": "소리 %1 재생하고 기다리기 %2", + "sound_something_second_wait_with_block": "소리 %1 %2 초 재생하고 기다리기 %3", + "sound_from_to": "소리 %1 %2 초 부터 %3 초까지 재생하기 %4", + "sound_from_to_and_wait": "소리 %1 %2 초 부터 %3 초까지 재생하고 기다리기 %4", + "when_run_button_click": "%1 시작하기 버튼을 클릭했을 때", + "press_some_key": "%1 %2 키를 눌렀을 때 %3", + "when_some_key_pressed": "%1 %2 키를 눌렀을 때", + "mouse_clicked": "%1 마우스를 클릭했을 때", + "mouse_click_cancled": "%1 마우스 클릭을 해제했을 때", + "when_object_click": "%1 오브젝트를 클릭했을 때", + "when_object_click_canceled": "%1 오브젝트 클릭을 해제했을 때", + "when_some_key_click": "%1 키를 눌렀을 때", + "when_message_cast": "%1 %2 신호를 받았을 때", + "message_cast": "%1 신호 보내기 %2", + "message_cast_wait": "%1 신호 보내고 기다리기 %2", + "text": "%1", + "text_write": "%1 라고 글쓰기", + "text_append": "%1 라고 뒤에 이어쓰기", + "text_prepend": "%1 라고 앞에 추가하기", + "text_flush": "텍스트 모두 지우기", + "variableAddButton": "%1", + "listAddButton": "%1", + "change_variable": "%1 에 %2 만큼 더하기 %3", + "set_variable": "%1 를 %2 로 정하기 %3", + "show_variable": "변수 %1 보이기 %2", + "hide_variable": "변수 %1 숨기기 %2", + "get_variable": "%1 %2", + "ask_and_wait": "%1 을(를) 묻고 대답 기다리기 %2", + "get_canvas_input_value": "%1 ", + "add_value_to_list": "%1 항목을 %2 에 추가하기 %3", + "remove_value_from_list": "%1 번째 항목을 %2 에서 삭제하기 %3", + "insert_value_to_list": "%1 을(를) %2 의 %3 번째에 넣기 %4", + "change_value_list_index": "%1 %2 번째 항목을 %3 (으)로 바꾸기 %4", + "value_of_index_from_list": "%1 %2 %3 %4 %5", + "length_of_list": "%1 %2 %3", + "show_list": "리스트 %1 보이기 %2", + "hide_list": "리스트 %1 숨기기 %2", + "options_for_list": "%1 ", + "set_visible_answer": "대답 %1 %2", + "is_included_in_list": "%1 %2 %3 %4 %5", + "xbot_digitalInput": "%1", + "xbot_analogValue": "%1", + "xbot_digitalOutput": "디지털 %1 핀, 출력 값 %2 %3", + "xbot_analogOutput": "아날로그 %1 %2 %3", + "xbot_servo": "서보 모터 %1 , 각도 %2 %3", + "xbot_oneWheel": "바퀴(DC) 모터 %1 , 속도 %2 %3", + "xbot_twoWheel": "바퀴(DC) 모터 오른쪽(2) 속도: %1 왼쪽(1) 속도: %2 %3", + "xbot_rgb": "RGB LED 켜기 R 값 %1 G 값 %2 B 값 %3 %4", + "xbot_rgb_picker": "RGB LED 색 %1 로 정하기 %2", + "xbot_buzzer": "%1 %2 음을 %3 초 연주하기 %4", + "xbot_lcd": "LCD %1 번째 줄 , 출력 값 %2 %3", + "run": "", + "mutant": "test mutant block", + "jr_start": "%1", + "jr_repeat": "%1 %2 %3", + "jr_item": "꽃 모으기 %1", + "cparty_jr_item": "%1 %2", + "jr_north": "%1 %2", + "jr_east": "%1 %2", + "jr_south": "%1 %2", + "jr_west": "%1 %2", + "jr_start_basic": "%1 %2", + "jr_go_straight": "%1 %2", + "jr_turn_left": "%1 %2", + "jr_turn_right": "%1 %2", + "jr_go_slow": "%1 %2", + "jr_repeat_until_dest": "%1 %2 %3", + "jr_if_construction": "%1 %2 %3 %4", + "jr_if_speed": "만약 %1 앞에 있다면 %2", + "maze_step_start": "%1 시작하기를 클릭했을 때", + "maze_step_jump": "뛰어넘기%1", + "maze_step_for": "%1 번 반복하기%2", + "test": "%1 this is test block %2", + "maze_repeat_until_1": "%1 만날 때 까지 반복%2", + "maze_repeat_until_2": "모든 %1 만날 때 까지 반복%2", + "maze_step_if_1": "만약 앞에 %1 있다면%2", + "maze_step_if_2": "만약 앞에 %1 있다면%2", + "maze_call_function": "약속 불러오기%1", + "maze_define_function": "약속하기%1", + "maze_step_if_3": "만약 앞에 %1 있다면%2", + "maze_step_if_4": "만약 앞에 %1 있다면%2", + "maze_step_move_step": "앞으로 한 칸 이동%1", + "maze_step_rotate_left": "왼쪽으로 회전%1", + "maze_step_rotate_right": "오른쪽으로 회전%1", + "test_wrapper": "%1 this is test block %2", + "basic_button": "%1" +}; + +if (typeof exports == "object") + exports.Lang = Lang; \ No newline at end of file diff --git a/app/package.json b/app/package.json index e0b791ea9..68ee4b974 100644 --- a/app/package.json +++ b/app/package.json @@ -7,6 +7,7 @@ "socket.io": "^1.4.5", "tar": "^2.2.1", "typedarray-to-buffer": "^3.1.2", + "xml2js": "^0.4.16", "yaeti": "0.0.5" }, "description": "entry-offline version", @@ -18,10 +19,10 @@ "type": "git", "url": "git+https://kimorkim@github.com/entrylabs/entry-offline.git" }, - "version": "1.2.1", + "version": "1.3.0", "chromium-args": "--disable-web-security --allow-file-access-from-files --enable-decoder=aac,h264,mp3 --enable-demuxer=mp3,mov --enable-parser=aac,h264,mpegaudio", "nodejs": "true", "webkit": { "plugin": true } -} \ No newline at end of file +} diff --git a/app/src/block_converter.js b/app/src/block_converter.js new file mode 100644 index 000000000..ecadeaedd --- /dev/null +++ b/app/src/block_converter.js @@ -0,0 +1,216 @@ +'use strict'; + +var parseString = require('xml2js').parseString, + _ = require('lodash'), + entry = require('../bower_components/entryjs/src/workspace/block_entry.js'); + +function processCode (xml) { + var code = []; + var topBlocks = xml.xml.block; + if (topBlocks) + code = topBlocks.map(processThread); + + var locationsX = []; + var locationsY = []; + code.forEach(function(thread){ + var block = thread[0]; + locationsX.push(block.x); + locationsY.push(block.y); + }); + + var dX = 40 - Math.min.apply(null, locationsX); + var dY = 50 - Math.min.apply(null, locationsY); + + code.forEach(function(thread){ + var block = thread[0]; + block.x += dX; + block.y += dY; + }); + + return code; +}; + +function processThread (block) { + var thread = []; + processBlock(block, thread) + return thread; +}; + +function processFunctionGeneral (block, thread) { + var parsedBlock = block.$; + + parsedBlock.x ? parsedBlock.x = Number(parsedBlock.x) : 0; + parsedBlock.y ? parsedBlock.y = Number(parsedBlock.y) : 0; + + var mutation = block.mutation[0]; + + parsedBlock.type = "func_" + mutation.$.hashid; + + parsedBlock.params = []; + var values = block.value; + if (values) { + for (var i in values) { + var fieldBlock = values[i].block[0]; + var fieldThread = []; + processBlock(fieldBlock, fieldThread); + parsedBlock.params.push(fieldThread[0]); + } + } + + thread.push(parsedBlock); + if (block.next) + processBlock(block.next[0].block[0], thread); +} + +function processFunctionCreate (block, thread) { + var parsedBlock = block.$; + + parsedBlock.x ? parsedBlock.x = Number(parsedBlock.x) : 0; + parsedBlock.y ? parsedBlock.y = Number(parsedBlock.y) : 0; + + thread.push(parsedBlock); + if (block.next) + processBlock(block.next[0].block[0], thread); +} + +function processMutationField (block, thread) { + var parsedBlock = block.$; + + parsedBlock.x ? parsedBlock.x = Number(parsedBlock.x) : 0; + parsedBlock.y ? parsedBlock.y = Number(parsedBlock.y) : 0; + + switch(parsedBlock.type.substr(15, 25)) { + case "label": + parsedBlock.params = [block.field[0]._] + break; + case "string": + var paramBlock = block.value.shift().block[0]; + parsedBlock.params = [] + processMutationParam(paramBlock, parsedBlock.params); + break; + case "boolean": + var paramBlock = block.value.shift().block[0]; + parsedBlock.params = [] + processMutationParam(paramBlock, parsedBlock.params); + break; + } + + if (block.value && block.value.length) + processMutationField(block.value[0].block[0], parsedBlock.params); + thread.push(parsedBlock); +} + +function processMutationParam (block, thread) { + var parsedBlock = block.$; + + parsedBlock.x ? parsedBlock.x = Number(parsedBlock.x) : 0; + parsedBlock.y ? parsedBlock.y = Number(parsedBlock.y) : 0; + + switch(parsedBlock.type.substr(15, 25)) { + case "string": + parsedBlock.type = "stringParam_" + block.mutation[0].$.hashid; + break; + case "boolean": + parsedBlock.type = "booleanParam_" + block.mutation[0].$.hashid; + break; + } + + thread.push(parsedBlock); +} + +function processBlock (block, thread) { + if (!block) return; + var parsedBlock = block.$; + + if (parsedBlock.type === "function_general") + return processFunctionGeneral(block, thread); + else if (parsedBlock.type.indexOf("function_field") == 0) + return processMutationField(block, thread); + else if (parsedBlock.type.indexOf("function_param") == 0) + return processMutationParam(block, thread); + + parsedBlock.x ? parsedBlock.x = Number(parsedBlock.x) : 0; + parsedBlock.y ? parsedBlock.y = Number(parsedBlock.y) : 0; + + var keyMap = entry.block[parsedBlock.type].paramsKeyMap; + + var blockValues = []; + var fields = block.field; + if (fields) { + fields = fields.map(function(f) { + var val = f._; + var pType = parsedBlock.type; + if ((pType === "number" || pType === 'text') && val === undefined) + val = ''; + blockValues[keyMap[f.$.name]] = val; + }); + } + + var values = block.value; + if (values) { + values = values.map(function(v) { + var fieldBlock = v.block[0]; + var fieldThread = []; + processBlock(fieldBlock, fieldThread); + var index = keyMap[v.$.name]; + if (blockValues.type === "rotate_by_angle_time") + index = 0; + blockValues[index] = fieldThread[0]; + }); + } + + if (blockValues.length) { + parsedBlock.params = blockValues; + } + + var statements = block.statement; + if (statements) { + statements = statements.map(function(s) { + if (s.block) { + var topBlock = s.block[0]; + return processThread(topBlock); + } else return []; + }); + parsedBlock.statements = statements; + } + + if (parsedBlock.type) + thread.push(parsedBlock); + if (block.next) + processBlock(block.next[0].block[0], thread); +} + +module.exports = { + convert: function(project, cb) { + var objects = project.objects; + var functions = project.functions; + + var done = _.after(functions.length, function() { + done = _.after(objects.length, function() { + cb(project); + }); + + if (!objects.length) + done(); + + for (var i = 0; i < objects.length; i++) { + var object = objects[i]; + parseString(object.script, function(err, xml) { + object.script = JSON.stringify(processCode(xml)); + done(); + }); + } + }); + + if (!functions.length) + done(); + + for (var i = 0; i < functions.length; i++) { + var func = functions[i]; + parseString(func.content, function(err, xml) { + func.content = JSON.stringify(processCode(xml)); + done(); + }); + } + } +}; diff --git a/app/src/main.js b/app/src/main.js index e1f3483f0..4925dbace 100644 --- a/app/src/main.js +++ b/app/src/main.js @@ -34,7 +34,7 @@ /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "./builds/"; +/******/ __webpack_require__.p = "/builds/"; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); @@ -45,21 +45,21 @@ /***/ 0: /***/ function(module, exports, __webpack_require__) { - __webpack_require__(724); - __webpack_require__(47); + __webpack_require__(719); + __webpack_require__(42); /***/ }, -/***/ 47: +/***/ 42: /***/ function(module, exports, __webpack_require__) { // style-loader: Adds some css to the DOM by adding a