diff --git a/build/entryx64.nsi b/build/entryx64.nsi
index 564b44876..e7acdde98 100644
--- a/build/entryx64.nsi
+++ b/build/entryx64.nsi
@@ -13,7 +13,7 @@
!define MUI_UNICON "icon.ico"
!define PRODUCT_NAME "Entry"
!define APP_NAME "Entry.exe"
-!define PRODUCT_VERSION "2.1.7"
+!define PRODUCT_VERSION "2.1.8"
!define PRODUCT_PUBLISHER "EntryLabs"
!define PRODUCT_WEB_SITE "http://www.playentry.org/"
diff --git a/build/entryx86.nsi b/build/entryx86.nsi
index 33688d60a..81478a6cb 100644
--- a/build/entryx86.nsi
+++ b/build/entryx86.nsi
@@ -13,7 +13,7 @@
!define MUI_UNICON "icon.ico"
!define PRODUCT_NAME "Entry"
!define APP_NAME "Entry.exe"
-!define PRODUCT_VERSION "2.1.7"
+!define PRODUCT_VERSION "2.1.8"
!define PRODUCT_PUBLISHER "EntryLabs"
!define PRODUCT_WEB_SITE "http://www.playentry.org/"
diff --git a/package.json b/package.json
index 9cec183f1..853c7a03f 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"private": true,
"productName": "Entry",
"name": "entry",
- "version": "2.1.7",
+ "version": "2.1.8",
"description": "Entry for offline",
"main": "src/main_build/main.bundle.js",
"scripts": {
@@ -36,9 +36,9 @@
"async-csv": "^2.1.3",
"axios": "^0.19.2",
"cross-spawn": "^7.0.3",
- "entry-hw": "git+https://github.com/entrylabs/entry-hw.git#dist/v1.9.45",
- "entry-js": "git+https://github.com/entrylabs/entryjs.git#dist/offline_v2.1.7.2",
- "entry-tool": "git+https://github.com/entrylabs/entry-tool.git#dist/20221024",
+ "entry-hw": "git+https://github.com/entrylabs/entry-hw.git#dist/v1.9.46",
+ "entry-js": "git+https://github.com/entrylabs/entryjs.git#dist/offline_v2.1.8",
+ "entry-tool": "git+https://github.com/entrylabs/entry-tool.git#dist/20231026",
"excel4node": "^1.7.0",
"fs-extra": "^8.1.0",
"image-size": "^0.8.3",
diff --git a/src/preload/preload.ts b/src/preload/preload.ts
index d0e70d126..1ad007124 100644
--- a/src/preload/preload.ts
+++ b/src/preload/preload.ts
@@ -22,7 +22,7 @@ ipcRenderer.on(
const { x, y, width, height } = dimension || {};
const imageElement = width && height ? new Image(width, height) : new Image();
- imageElement.onload = function () {
+ imageElement.onload = function() {
canvas.width = imageElement.width;
canvas.height = imageElement.height;
@@ -66,7 +66,7 @@ window.ipcInvoke = (channel: string, ...args: any[]) => {
window.ipcSend = (channel: string, ...args: any[]) => {
ipcRenderer.send(channel, ...args);
-}
+};
window.openEntryWebPage = () => {
shell.openExternal('https://playentry.org/download/offline');
@@ -83,10 +83,16 @@ window.weightsPath = () => {
: path.resolve(remote.app.getAppPath(), 'node_modules', 'entry-js', 'weights');
};
+window.getEntryjsPath = () => {
+ return process.env.NODE_ENV === 'production'
+ ? path.resolve(process.resourcesPath, 'app.asar.unpacked', 'node_modules', 'entry-js')
+ : path.resolve(remote.app.getAppPath(), 'node_modules', 'entry-js');
+};
+
window.getAppPathWithParams = (...params: string[]) => {
console.log(process.env.NODE_ENV);
return path.resolve(remote.app.getAppPath(), ...params);
-}
+};
/**
* external file => loadProjectFromMain event => loadProject => callback(project)
diff --git a/src/renderer/resources/lang/en.json b/src/renderer/resources/lang/en.json
index 1c6104988..95c8fa90b 100644
--- a/src/renderer/resources/lang/en.json
+++ b/src/renderer/resources/lang/en.json
@@ -1508,6 +1508,24 @@
"export_object": "Export Object",
"this_project": "this project",
"this_object": "this object",
+ "right_hand": "Right hand",
+ "left_hand": "Left hand",
+ "thumb": "thumb",
+ "index_finger": "index finger",
+ "middle_finger": "middle finger",
+ "ring_finger": "ring finger",
+ "little_finger": "little finger",
+ "wrist": "wrist",
+ "tip": "TIP",
+ "dip": "DIP",
+ "pip": "PIP",
+ "none": "NONE",
+ "media_pipe_title_text": "Video Detection",
+ "pose_landmarker_title_text": "Human Detection",
+ "face_landmarker_title_text": "Face Detection",
+ "object_detector_title_text": "Object Detection",
+ "hand_detection_title_text": "Hand Detection",
+ "unknown": "Unknown",
"Clear_all_blocks": "remove all codes",
"add_comment": "add a memo",
"copy_paste_comment": "copy & paste the memo",
@@ -1905,9 +1923,9 @@
"video_emotion": "emotion",
"video_motion_onself": "itself",
"video_motion_onscreen": "screen",
- "video_motion_scale": "motion",
- "video_motion_direction_horizontal": "x direction",
- "video_motion_direction_vertical": "y direction",
+ "video_motion_scale": "Motion",
+ "video_motion_direction_horizontal": "X direction",
+ "video_motion_direction_vertical": "Y direction",
"table_row": "row",
"table_col": "column",
"table_sum": "sum",
@@ -3553,15 +3571,15 @@
"ROBOID_led_right_tail": "right tail"
},
"video_body_coord_params": {
- "left_eye": "Left Eye",
- "right_eye": "Right Eye",
- "nose": "Nose",
- "left_mouth": "Left Mouth",
- "right_mouth": "Right Mouth",
- "upper_lip": "Upper Lip",
- "lower_lip": "Lower Lip",
- "face": "Face",
- "neck": "Neck",
+ "left_eye": "left eye",
+ "right_eye": "right eye",
+ "nose": "nose",
+ "left_mouth": "left corner of lips",
+ "right_mouth": "right corner of lips",
+ "upper_lip": "upper lip",
+ "lower_lip": "lower lip",
+ "face": "face",
+ "neck": "neck",
"left_ear": "left ear",
"right_ear": "right ear",
"left_shoulder": "left shoulder",
@@ -3585,89 +3603,92 @@
"happy": "Happiness",
"neutral": "Neutral",
"sad": "Sadness",
- "surprised": "Surprised"
+ "surprised": "Surprised",
+ "disgust": "Disgust",
+ "fear": "Fearful",
+ "surprise": "Surprised"
},
"video_object_params": {
- "person": "person",
- "bicycle": "bicycle",
- "car": "car",
- "motorcycle": "motorcycle",
- "airplane": "airplane",
- "bus": "bus",
- "train": "train",
- "truck": "truck",
- "boat": "boat",
- "traffic light": "traffic light",
- "fire hydrant": "fire hydrant",
- "stop sign": "stop sign",
- "parking meter": "parking meter",
- "bench": "bench",
- "bird": "bird",
- "cat": "cat",
- "dog": "dog",
- "horse": "horse",
- "sheep": "sheep",
- "cow": "cow",
- "elephant": "elephant",
- "bear": "bear",
- "zebra": "zebra",
- "giraffe": "giraffe",
- "backpack": "backpack",
- "umbrella": "umbrella",
- "handbag": "handbag",
- "tie": "tie",
- "suitcase": "suitcase",
- "frisbee": "frisbee",
- "skis": "skis",
- "snowboard": "snowboard",
- "sports ball": "sports ball",
- "kite": "kite",
- "baseball bat": "baseball bat",
- "baseball glove": "baseball glove",
- "skateboard": "skateboard",
- "surfboard": "surfboard",
- "tennis racket": "tennis racket",
- "bottle": "bottle",
- "wine glass": "wine glass",
- "cup": "cup",
- "fork": "fork",
- "knife": "knife",
- "spoon": "spoon",
- "bowl": "bowl",
- "banana": "banana",
- "apple": "apple",
- "sandwich": "sandwich",
- "orange": "orange",
- "broccoli": "broccoli",
- "carrot": "carrot",
- "hot dog": "hot dog",
- "pizza": "pizza",
- "donut": "donut",
- "cake": "cake",
- "chair": "chair",
- "couch": "couch",
- "potted plant": "potted plant",
- "bed": "bed",
- "dining table": "dining table",
- "toilet": "toilet",
- "tv": "tv",
- "laptop": "laptop",
- "mouse": "mouse",
- "remote": "remote",
- "keyboard": "keyboard",
- "cell phone": "cell phone",
- "microwave": "microwave",
- "oven": "oven",
- "toaster": "toaster",
- "sink": "sink",
- "refrigerator": "refrigerator",
- "book": "book",
- "clock": "clock",
- "vase": "vase",
- "scissors": "scissors",
- "teddy bear": "teddy bear",
- "hair drier": "hair dryer",
- "toothbrush": "toothbrush"
+ "person": "Person",
+ "bicycle": "Bicycle",
+ "car": "Car",
+ "motorcycle": "Motorcycle",
+ "airplane": "Airplane",
+ "bus": "Bus",
+ "train": "Train",
+ "truck": "Truck",
+ "boat": "Boat",
+ "traffic light": "Traffic light",
+ "fire hydrant": "Fire hydrant",
+ "stop sign": "Stop sign",
+ "parking meter": "Parking meter",
+ "bench": "Bench",
+ "bird": "Bird",
+ "cat": "Cat",
+ "dog": "Dog",
+ "horse": "Horse",
+ "sheep": "Sheep",
+ "cow": "Cow",
+ "elephant": "Elephant",
+ "bear": "Bear",
+ "zebra": "Zebra",
+ "giraffe": "Giraffe",
+ "backpack": "Backpack",
+ "umbrella": "Umbrella",
+ "handbag": "Handbag",
+ "tie": "Tie",
+ "suitcase": "Suitcase",
+ "frisbee": "Frisbee",
+ "skis": "Skis",
+ "snowboard": "Snowboard",
+ "sports ball": "Sports ball",
+ "kite": "Kite",
+ "baseball bat": "Baseball bat",
+ "baseball glove": "Baseball glove",
+ "skateboard": "Skateboard",
+ "surfboard": "Surfboard",
+ "tennis racket": "Tennis racket",
+ "bottle": "Bottle",
+ "wine glass": "Wine glass",
+ "cup": "Cup",
+ "fork": "Fork",
+ "knife": "Knife",
+ "spoon": "Spoon",
+ "bowl": "Bowl",
+ "banana": "Banana",
+ "apple": "Apple",
+ "sandwich": "Sandwich",
+ "orange": "Orange",
+ "broccoli": "Broccoli",
+ "carrot": "Carrot",
+ "hot dog": "Hot dog",
+ "pizza": "Pizza",
+ "donut": "Donut",
+ "cake": "Cake",
+ "chair": "Chair",
+ "couch": "Couch",
+ "potted plant": "Potted plant",
+ "bed": "Bed",
+ "dining table": "Dining table",
+ "toilet": "Toilet",
+ "tv": "Tv",
+ "laptop": "Laptop",
+ "mouse": "Mouse",
+ "remote": "Remote",
+ "keyboard": "Keyboard",
+ "cell phone": "Cell phone",
+ "microwave": "Microwave",
+ "oven": "Oven",
+ "toaster": "Toaster",
+ "sink": "Sink",
+ "refrigerator": "Refrigerator",
+ "book": "Book",
+ "clock": "Clock",
+ "vase": "Vase",
+ "scissors": "Scissors",
+ "teddy bear": "Teddy bear",
+ "hair drier": "Hair dryer",
+ "toothbrush": "Toothbrush"
},
"Buttons": {
"share_policy": "Share Guide",
@@ -6453,8 +6474,12 @@
"cannot_delete_function": "Function already in use.\nTo change the return value setting,\nthere must be no object with a function block.",
"local_variable_deletion_warning": "If you have a local variable in use,\nthe associated block may be deleted.\nDo you really want to change it?",
"warning_function_aleady_being_edited": "To add a new function,\nclick 'Save' or 'Cancel' to exit\nthe Add function screen.",
- "ai_utilize_audio_description": "It is a collection of blocks related to speech to text functionalities.",
+ "ai_utilize_audio_description": "It is a collection of blocks that recognize speech using microphone.",
"ai_utilize_video_description": "It is a collection of blocks that can recognize movement, direction and object to be shot by using camera. (IE / iOS Not Supported)",
+ "ai_utilize_pose_landmarker_description": "It is a collection of blocks that detect human bodies using camera.",
+ "ai_utilize_face_landmarker_description": "It is a collection of blocks that detect human faces using camera.",
+ "ai_utilize_object_detector_description": "It is a collection of blocks that detect objects using camera.",
+ "ai_utilize_gesture_recognition_description": "It is a collection of blocks that detect human hands using camera.",
"lecture_header_restart_msg": "Do you want to restart from the beginning?",
"ai_utilize_train_pop_error": "The model applied to the project has been deactivated or deleted."
},
@@ -6606,6 +6631,10 @@
"use_block_function": "Assembled inside the function.",
"use_block_project": "Block : {0}",
"use_blocks_project": "Blocks : {0}",
+ "pose_landmarker_title_text": "Human detection",
+ "face_landmarker_title_text": "Face Detection",
+ "object_detector_title_text": "Object detection",
+ "gesture_recognition_title_text": "Hand detection",
"no_message_to_remove": "There is no message to remove.",
"no_use": "Not assembled on object.",
"no_variable_to_rename": "There is no varibale to remove",
@@ -7383,10 +7412,10 @@
"read_text": "Read the entered text in setted voice.",
"set_tts_property": "Set the selected voice to selected speed and selected pitch. \n The selected voice will be set up to selected speed and selected pitch.",
"read_text_wait_with_block": "Read the entered text in setted voice then the next block runs after the reading finished.",
- "check_microphone": "Check whether microphone is connected with the computer.",
- "speech_to_text_convert": "Converts voice input into the microphone into text.",
- "get_microphone_volume": "Reports the volume of sound input to the microphone.",
- "speech_to_text_get_value": "Reports the value that converted speech to text. If no voice is input or an error occurs during voice recognition, it will have 0 value.",
+ "check_microphone": "Connected to microphone?",
+ "speech_to_text_convert": "Converts person's speech input through microphone into text.",
+ "speech_to_text_get_value": "Reports the value of the person's speech to text. If no speech is input or an error occurs during recognition, it will report null values.",
+ "get_microphone_volume": "Reports the volume of sound input through microphone.",
"video_draw_webcam": "Show or hide the video screen. (IE / iOS Not Supported)",
"video_check_webcam": "Check whether video is connected with the computer. (IE / iOS Not Supported)",
"video_change_cam": "Switch the camera that input video.",
@@ -7903,7 +7932,51 @@
"zerone_play_note_for": "It sounds the selected tone and octave as much as the beat you entered.",
"zerone_rest_for": "Rests as much as the beat you entered.",
"zerone_change_tempo_by": "Adds the entered value to the current BPM (beats per minute) of the playing or resting speed.",
- "zerone_set_tempo_to": "Sets the playing or resting speed to the entered BPM (beats per minute)."
+ "zerone_set_tempo_to": "Sets the playing or resting speed to the entered BPM (beats per minute).",
+ "media_pipe_video_screen": "Shows or hides the video screen.",
+ "media_pipe_switch_camera": "Switches the camera that films the video.",
+ "check_connected_camera": "Checks whether camera is conncected with the computer. If the camera is connected to the computer, it is judged as 'True'.",
+ "media_pipe_flip_camera": "Flips the video screen horizontally or vertically.",
+ "media_pipe_set_opacity_camera": "Sets the transparency effect of video screen to the input value. It can be set in the range from 0 to 100.\n(The default value is 50. Values under 0 is treated as 0 and over 100 is treated as 100.)",
+ "media_pipe_motion_value": "Reports the motion or direction value detected on the selected object or screen.\n- Motion: The larger and faster the movement, the larger the value.\n- Direction: Positive when moving right or up, and negative when moving left or down",
+ "when_pose_landmarker": "When human detected, the connected blocks below will run.",
+ "pose_landmarker": "Start or stop the human detection model.\n- Human Detection: Detects a human and determines where each body parts are located.",
+ "draw_detected_pose": "Shows or hides the location and order of the detected humans on the screen.",
+ "check_detected_pose": "If the human is detected, it is judged as 'True'.",
+ "count_detected_pose": "Reports the number of the humans detected on the video screen.",
+ "locate_to_pose": "Moves the object to the position of the selected body part.",
+ "locate_time_to_pose": "Moves the object to the position of the selected body part for the input seconds.",
+ "axis_detected_pose": "Reports the location value of the selected body part of the human in the order entered.\n(Body parts: face, neck, left eye, right eye, left ear, right ear, left shoulder, right shoulder, left elbow, right elbow, left wirst, right wrist, left hip, right hip, left knee, right knee, left ankle, right ankle)",
+ "when_face_landmarker": "When face detected, the connected blocks below will run.",
+ "face_landmarker": "Start or stop the face detection model.\n- Face Detection: Detects a human's face and determines where the eyes, nose, mouth, and ear are located.",
+ "draw_detected_face": "Shows or hides the location and order of the detected faces on the screen.",
+ "check_detected_face": "If the face is detected, it is judged as 'True'.",
+ "count_detected_face": "Reports the number of the faces detected on the video screen.",
+ "locate_to_face": "Moves the object to the position of the selected face part.",
+ "locate_time_to_face": "Moves the object to the position of the selected body part for the input seconds.",
+ "check_detected_gender": "If the selected face is the selected gender, it is judged as 'True'.",
+ "check_compare_age": "If the age of the selected face matches the formula, it is judged as 'True'.",
+ "check_detected_emotion": "If the selected face is the selected emotion, it is judged as 'True'.",
+ "axis_detected_face": "Reports the location value of the selected face area of the face in the order entered. (Face area: left eye, right eye, nose, left corner of lips, right corner of lips, upper lip, lower lip)",
+ "get_detected_face_value": "Reports the estimated value of the gender/age/emotion of the face in the order entered. If it is not detected, it returns 0.",
+ "when_object_detector": "When object detected, the connected blocks below will run.",
+ "object_detector": "Start or stop the object detection model.\n- Object Detection: Detects the type of object.",
+ "draw_detected_object": "Shows or hides the location and order of the detected object on the screen.",
+ "check_detected_object": "If the object is detected, it is judged as 'True'.",
+ "count_detected_object": "Reports the number of the objects detected on the video screen.",
+ "is_detected_among_objects": "If the selected object is detected, it is judged as 'True'.",
+ "when_hand_detection": "When hand detected, the connected blocks below will run.",
+ "hand_detection": "Start or stop hand detection model.\n- Hand Detection: Detects a human’s hand and determines where each hand parts are located.",
+ "draw_detected_hand": "Shows or hides the location of the hand on the screen.",
+ "check_detected_hand": "If the hand is detected, it is judged as 'True'.",
+ "count_detected_hand": "Reports the number of hand detected on the video screen.",
+ "locate_to_hand": "Moves the object to the position of the selected part of the hand.",
+ "locate_time_to_hand": "Moves the object to the position of the selected part of the hand for the input seconds.",
+ "axis_detected_hand": "Reports the location value of the selected part of the hand in the order entered.",
+ "is_which_hand": "If the hand in the order you entered is the selected hand, it is judged as 'True'.",
+ "get_which_hand": "Reports the value of the hand in the order you entered.",
+ "is_which_gesture": "If the hand in the order you entered is the gesture you selected, it is judged as 'True'.",
+ "get_which_gesture": "Reports the gesture of the hand in the order you entered."
},
"Category": {
"entrybot_friends": "Entrybot friends",
@@ -8308,6 +8381,55 @@
"function_field_string": "%1%2",
"function_field_boolean": "%1%2",
"get_block_count": "The number of blocks in %1",
+ "media_pipe_video_screen": "%1 video screen %2",
+ "media_pipe_title": "%1",
+ "media_pipe_switch_camera": "Switch to %1 camera %2",
+ "check_connected_camera": "Connected to camera?",
+ "media_pipe_flip_camera": "Flip video screen %1 %2",
+ "media_pipe_set_opacity_camera": "Set video transparency effect to %1 %2",
+ "media_pipe_motion_value": "%2 value detected on %1",
+ "pose_landmarker_title": "%1",
+ "when_pose_landmarker": "%1 When human detected",
+ "pose_landmarker": "%1 human detection %2",
+ "draw_detected_pose": "%1 detected human %2",
+ "check_detected_pose": "Detected human?",
+ "count_detected_pose": "Number of detected human",
+ "locate_to_pose": "Go to %2 of %1 th human %3",
+ "locate_time_to_pose": "For %1 secs go to %3 of %2 th human %4",
+ "axis_detected_pose": "%3 coordinate of %1 th human's %2",
+ "face_landmarker_title": "%1",
+ "when_face_landmarker": "%1 When face detected",
+ "face_landmarker": "%1 face detection %2",
+ "draw_detected_face": "%1 detected face %2",
+ "check_detected_face": "Detected face?",
+ "count_detected_face": "Number of detected face",
+ "locate_to_face": "Go to %2 of %1 th face %3",
+ "locate_time_to_face": "For %1 secs go to %3 of %2 th face %4",
+ "check_detected_gender": "Is the gender of %1 th face %2?",
+ "check_compare_age": "Is the age of %1 th face %2 %3?",
+ "check_detected_emotion": "Is the emotion of %1 th face %2?",
+ "axis_detected_face": "%3 coordinate of %1 the face`s %2",
+ "get_detected_face_value": "%2 of %1 th face",
+ "object_detector_title": "%1",
+ "when_object_detector": "%1 When object detected",
+ "object_detector": "%1 object detection %2",
+ "draw_detected_object": "%1 detected object %2",
+ "check_detected_object": "Detected object?",
+ "count_detected_object": "Number of detected object",
+ "is_detected_among_objects": "%1 detected among the objects?",
+ "hand_detection_title": "%1",
+ "when_hand_detection": "%1 When hand detected",
+ "hand_detection": "%1 hand detection %2",
+ "draw_detected_hand": "%1 detected hand %2",
+ "check_detected_hand": "Detected hand?",
+ "count_detected_hand": "Number of detected hand",
+ "locate_to_hand": "Go to %3 of %2 of in %1 th hand %4",
+ "locate_time_to_hand": "For %1 secs go to %4 of %3 of in %2 th hand %5",
+ "axis_detected_hand": "%4 coordinate of %3 of %2 in %1 th hand",
+ "is_which_hand": "Is %1 th hand %2?",
+ "is_which_gesture": "Is the gesture of %1 th hand %2 ?",
+ "get_which_hand": "%1 th hand",
+ "get_which_gesture": "The gesture of %1 th hand",
"function_param_string": "Character/Number",
"function_param_boolean": "Judgement",
"function_create": "define function %1 %2",
@@ -8392,10 +8514,11 @@
"is_number_learning_group_2": "Is the classification result of %1 %2 %3 %4 %5?",
"is_number_learning_group_3": "Is the classification result of %1 %2 %3 %4 %5 %6 %7?",
"audio_title_text": "Audio Sensing",
- "check_microphone": "Connected with microphone?",
- "get_microphone_volume": "Microphone volume",
+ "voice_title_text": "Speech recognition",
+ "check_microphone": "If the microphone is connected to the computer, it is judged as 'True'.",
"speech_to_text_convert": "Recognize the voice %1",
- "speech_to_text_get_value": "Text Value Converted from Speech",
+ "speech_to_text_get_value": "Speech-to-text value",
+ "get_microphone_volume": "Microphone volume value",
"video_title_text": "Video Detection",
"video_draw_webcam": "%1 the video screen",
"video_check_webcam": "connected with video?",
@@ -11897,5 +12020,51 @@
"train_param_validationRate": "Test data rate",
"chart_title": "Model chart"
},
+ "pose_list": {
+ "nose": "nose",
+ "left_eye_inner": "left eye (inner)",
+ "left_eye": "left eye",
+ "left_eye_outer": "left eye (outer)",
+ "right_eye_inner": "right eye (inner)",
+ "right_eye": "right eye",
+ "right_eye_outer": "right eye (outer)",
+ "left_ear": "left ear",
+ "right_ear": "right ear",
+ "mouth_left": "mouth (left)",
+ "mouth_right": "mouth (right)",
+ "left_shoulder": "left shoulder",
+ "right_shoulder": "right shoulder",
+ "left_elbow": "left elbow",
+ "right_elbow": "right elbow",
+ "left_wrist": "left wrist",
+ "right_wrist": "right wrist",
+ "left_pinky": "left pinky",
+ "right_pinky": "right pinky",
+ "left_index": "left index",
+ "right_index": "right index",
+ "left_thumb": "left thumb",
+ "right_thumb": "right thumb",
+ "left_hip": "left hip",
+ "right_hip": "right hip",
+ "left_knee": "left knee",
+ "right_knee": "right knee",
+ "left_ankle": "left ankle",
+ "right_ankle": "right ankle",
+ "left_heel": "left heel",
+ "right_heel": "right heel",
+ "left_foot_index": "left foot index",
+ "right_foot_index": "right foot index"
+ },
+
+ "gesture_list": {
+ "closed_fist": "Closed Fist",
+ "open_palm": "Open Palm",
+ "pointing_up": "Pointing Up",
+ "thumb_down": "Thumb Down",
+ "thumb_up": "Thumb Up",
+ "victory": "Victory",
+ "iloveyou": "I Love You",
+ "none": "Unknown"
+ },
"SharePolicy": { "title": "Entry Project/Post share Guide" }
}
diff --git a/src/renderer/resources/lang/ko.json b/src/renderer/resources/lang/ko.json
index be461c912..70e62c835 100644
--- a/src/renderer/resources/lang/ko.json
+++ b/src/renderer/resources/lang/ko.json
@@ -263,7 +263,8 @@
"location_daejeon_yuseong_gu": "유성구",
"location_daejeon_daedeok_gu": "대덕구",
"learn_popup_title": "데이터 입력",
- "arduino_noti_text": "모바일 기기는 추후 지원 합니다.",
+ "arduino_noti_text": "하드웨어 연결은 PC에서만 지원됩니다.\n브라우저로 연결할 때는\n연결 프로그램이 필요하지 않습니다.",
+ "arduino_lite_alert": "하드웨어를 찾을 수 없습니다.\n하드웨어에 펌웨어가 설치되었는지,\nPC와 하드웨어가 연결되어 있는지 \n다시 확인해 주세요.",
"location_busan": "부산",
"location_busan_jung_gu": "중구",
"ARDUINO_download_connector": "• 연결 프로그램 다운로드",
@@ -275,9 +276,13 @@
"ARDUINO_connected": "하드웨어가 연결되었습니다. ",
"location_busan_busanjin_gu": "부산진구",
"ARDUINO_connect": "* 하드웨어를 연결하세요.",
- "arduino_lite_connect": "하드웨어 웹 연결",
- "arduino_lite_disconnect": "하드웨어 연결 해제",
- "arduino_lite_add_button": "하드웨어 선택",
+ "arduino_lite_reconnect": "하드웨어 다시 연결",
+ "arduino_lite_download_firmware": "펌웨어 다운로드",
+ "arduino_lite_download_driver": "드라이버 다운로드",
+ "arduino_lite_connect": "브라우저로 연결하기",
+ "arduino_lite_disconnect": "하드웨어 선택 취소",
+ "arduino_lite_guide": "• 아두이노 연결 가이드",
+ "arduino_lite_connected_noti": "하드웨어를 선택한 상태에서\n작품을 저장해 주세요.",
"location_busan_dongnae_gu": "동래구",
"ARDUINO_reconnect": "하드웨어 연결하기",
"location_busan_nam_gu": "남구",
@@ -367,6 +372,7 @@
"FLOW_stop_object_other_objects": "다른 오브젝트의",
"speak": "말하기",
"think": "생각하기",
+ "yell": "외치기",
"block_hi": "안녕!",
"LOOKS_change_shape_next": "다음",
"LOOKS_change_shape_prev": "이전",
@@ -382,10 +388,12 @@
"JUDGEMENT_reach_something_2": "에 닿았는가?",
"JUDGEMENT_is_type_1": "(이)가",
"JUDGEMENT_is_type_2": "인가?",
- "JUDGEMENT_is_boost_mode": "부스트모드가 켜져 있는가?",
- "is_type_number": "숫자",
"JUDGEMENT_boolean_not_1": "",
"JUDGEMENT_boolean_not_2": "(이)가 아니다",
+ "JUDGEMENT_is_boost_mode": "부스트모드가 켜져 있는가?",
+ "is_type_number": "숫자",
+ "is_type_en": "영문",
+ "is_type_ko": "한글",
"CALC_calc_rand_1": "",
"CALC_calc_rand_2": "부터",
"CALC_calc_rand_3": "사이의 무작위 수",
@@ -492,6 +500,7 @@
"table_min": "최소",
"table_avg": "평균",
"table_stdev": "표준편차",
+ "table_median": "중앙값",
"date_yesterday": "어제",
"date_today": "오늘",
"date_tomorrow": "내일",
@@ -505,6 +514,10 @@
"tts_echo": "울리는",
"tts_mischievous": "장난스러운",
"tts_dainty": "앙증맞은",
+ "tts_sabina": "마녀",
+ "tts_mammon": "악마",
+ "tts_kitty": "야옹이",
+ "tts_doggy": "멍멍이",
"tts_veryslow": "매우 느린",
"tts_slow": "느린",
"tts_normal": "보통",
@@ -517,6 +530,9 @@
"korean": "한국어",
"english": "영어",
"japan": "일본어",
+ "korean_s": "한국어",
+ "english_s": "영어",
+ "japan_s": "일본어",
"chinese_simplified": "중국어간체",
"chinese_traditional": "중국어번체",
"spanish": "스페인어",
@@ -544,7 +560,7 @@
"video_age": "나이",
"video_emotion": "감정",
"video_motion_onself": "자신",
- "video_motion_onscreen": "실행화면",
+ "video_motion_onscreen": "실행 화면",
"video_motion_scale": "움직임",
"video_motion_direction_horizontal": "좌우방향",
"video_motion_direction_vertical": "상하방향",
@@ -704,7 +720,6 @@
"ANALYSIS": "데이터분석",
"EXPANSION": "확장",
"ARDUINO": "하드웨어",
- "ARDUINO_LITE": "하드웨어 라이트",
"ROBOID_sound_march": "행진",
"ROBOID_sound_birthday": "생일",
"no_target": "대상 없음",
@@ -769,11 +784,60 @@
"behaviorConduct01001001": "태풍이 오기 전",
"behaviorConduct01001002": "태풍이 왔을 때",
"behaviorConduct01001003": "태풍이 지나간 후",
+ "behaviorConduct01002002": "홍수가 오기 전",
+ "behaviorConduct01002003": "홍수가 났을 때",
+ "behaviorConduct01002004": "홍수가 지나간 후",
+ "behaviorConduct01003002": "큰 비가 오기 전",
+ "behaviorConduct01003003": "큰 비가 내릴 때",
+ "behaviorConduct01003004": "큰 비가 그친 후",
+ "behaviorConduct01004001": "강풍이 오기 전",
+ "behaviorConduct01004002": "강풍 발생 시",
+ "behaviorConduct01005002": "대설이 오기 전",
+ "behaviorConduct01005003": "대설 내릴 때",
+ "behaviorConduct01005004": "눈이 그친 후",
+ "behaviorConduct01006001": "한파가 오기 전",
+ "behaviorConduct01006002": "한파 왔을 때",
+ "behaviorConduct01007001": "풍랑이 험할 때",
+ "behaviorConduct01007002": "풍랑이 오기 전",
+ "behaviorConduct01008001": "황사가 오기 전",
+ "behaviorConduct01008002": "황사가 왔을 때",
+ "behaviorConduct01008003": "황사가 지나간 후",
+ "behaviorConduct01009001": "폭염이 오기 전",
+ "behaviorConduct01009002": "폭염이 왔을 때",
+ "behaviorConduct01010001": "가뭄이 왔을 때",
+ "behaviorConduct01011009": "지진이 오기 전",
+ "behaviorConduct01011010": "지진이 왔을 때",
+ "behaviorConduct01011012": "지진 대피 후",
+ "behaviorConduct01013002": "해일이 오기 전",
+ "behaviorConduct01013003": "해일이 왔을 때",
+ "behaviorConduct01014001": "산사태가 오기 전",
"behaviorConduct03002002": "화상 처치",
"behaviorConduct03002003": "고열 예방",
"behaviorConduct03002004": "뱀에 물렸을 때 처치",
"behaviorConduct03002005": "벌에 쏘였을 때 처치",
"behaviorConduct03002006": "과호흡증후군 응급처치",
+ "behaviorConduct03003001": "성인 심폐소생술",
+ "behaviorConduct03003002": "영유아 심폐소생술",
+ "behaviorConduct03003003": "자동제세동기 사용",
+ "behaviorConduct03004001": "분말소화기 사용",
+ "behaviorConduct03016001": "옥내소화전 사용",
+ "behaviorConduct03005001": "식중독 대처",
+ "behaviorConduct03006004": "산행 중 유의사항",
+ "behaviorConduct03006005": "산에서 안전한 캠핑",
+ "behaviorConduct03006002": "구조요청시 알리는",
+ "behaviorConduct03006003": "산행사고시 응급조치",
+ "behaviorConduct03008001": "실종유괴 예방",
+ "behaviorConduct03009001": "성폭력 예방",
+ "behaviorConduct03010001": "학교 폭력 예방",
+ "behaviorConduct03011001": "가정 폭력 예방",
+ "behaviorConduct03012001": "억류 및 납치 시 대처",
+ "behaviorConduct03013002": "교통사고 발생 시 대처",
+ "behaviorConduct03013005": "차량에서의 구조",
+ "behaviorConduct03014001": "승강기 안전 이용",
+ "behaviorConduct03014003": "승강기 고장시 대처",
+ "behaviorConduct03014004": "에스컬레이터 안전 이용",
+ "behaviorConduct03015007": "미세먼지 많은 날 생활",
+ "behaviorConduct03015003": "부문별 생활",
"chocopi_touch_event_touch": "만질 때",
"chocopi_touch_event_untouch": "뗄 때",
"chocopi_control_event_pressed": "누를 때",
@@ -1090,14 +1154,50 @@
"rokoboard_sensor_name_5": "저항-C",
"rokoboard_sensor_name_6": "저항-D",
"rokoboard_string_1": "버튼을 눌렀는가?",
+ "VARIABLE_get_variable": "변수",
"VARIABLE_change_variable": "변수 더하기",
+ "VARIABLE_set_variable": "변수 정하기",
+ "VARIABLE_show_variable": "변수값 보이기",
+ "VARIABLE_hide_variable": "변수값 숨기기",
+ "VARIABLE_value_of_index_from_list": "리스트 항목의 값",
+ "VARIABLE_add_value_to_list": "항목을 리스트에 추가하기",
+ "VARIABLE_remove_value_from_list": "항목을 삭제하기",
+ "VARIABLE_insert_value_to_list": "항목을 넣기",
+ "VARIABLE_change_value_list_index": "항목을 바꾸기",
+ "VARIABLE_length_of_list": "리스트의 길이",
+ "VARIABLE_is_included_in_list": "리스트에 포함되어 있는가?",
+ "VARIABLE_show_list": "리스트 보이기",
+ "VARIABLE_hide_list": "리스트 숨기기",
+ "START_when_message_cast": "신호를 받았을 때",
+ "START_message_cast": "신호 보내기",
+ "START_message_cast_wait": "신호 보내고 기다리기",
"Duplication_option": "코드 복사 & 붙여넣기",
"CONTEXT_COPY_option": "코드 복사",
"Delete_Blocks": "코드 삭제",
"add_my_storage": "나의 보관함에 추가하기",
- "export_object": "오브젝트 내보내기",
+ "export_object": "오브젝트 파일로 내보내기",
"this_project": "모든",
- "this_object": "자신"
+ "this_object": "자신",
+ "right_hand": "오른손",
+ "left_hand": "왼손",
+ "thumb": "엄지",
+ "index_finger": "검지",
+ "middle_finger": "중지",
+ "ring_finger": "약지",
+ "little_finger": "소지",
+ "wrist": "손목",
+ "tip": "끝",
+ "dip": "첫째 마디",
+ "pip": "둘째 마디",
+ "none": "없음",
+ "media_pipe_title_text": "비디오 감지",
+ "pose_landmarker_title_text": "사람 인식",
+ "face_landmarker_title_text": "얼굴 인식",
+ "object_detector_title_text": "사물 인식",
+ "hand_detection_title_text": "손 인식",
+ "unknown": "알 수 없음",
+ "arduino_lite_add_button": "하드웨어 선택",
+ "ARDUINO_LITE": "하드웨어 라이트"
},
"video_body_coord_params": {
"left_eye": "왼쪽 눈",
@@ -1132,7 +1232,10 @@
"happy": "행복",
"neutral": "무표정",
"sad": "슬픔",
- "surprised": "놀람"
+ "surprised": "놀람",
+ "disgust": "혐오",
+ "fear": "두려움",
+ "surprise": "놀람"
},
"video_object_params": {
"person": "사람",
@@ -1197,7 +1300,7 @@
"bed": "침대",
"dining table": "식탁",
"toilet": "변기",
- "tv": "텔레비젼",
+ "tv": "TV",
"laptop": "노트북",
"mouse": "마우스",
"remote": "리모컨",
@@ -1417,12 +1520,14 @@
"Msgs": {
"hw_connection_success": "하드웨어 연결 성공",
"hw_connection_success_desc": "하드웨어 아이콘을 더블클릭하면, 센서값만 확인할 수 있습니다.",
- "hw_connection_success_desc2": "하드웨어와 정상적으로 연결되었습니다.",
- "parameter_can_not_space": "값 블록은 빈 칸이 될 수 없습니다.",
+ "hw_connection_success_desc2": "작품에서 하드웨어를 사용할 수 있습니다.",
"hw_connection_termination_title": "하드웨어 연결 해제",
"hw_connection_termination_desc": "하드웨어와 연결이 해제되었습니다.",
"hw_connection_failed_title": "하드웨어 연결 실패",
"hw_connection_failed_desc": "작품에서 사용된 하드웨어가\n연결되어 있는지 확인해 주세요.",
+ "hw_module_load_fail_title": "모듈 로드 실패",
+ "hw_module_load_fail_desc": "로드에 실패했습니다. 관리자에게 문의하세요.",
+ "parameter_can_not_space": "값 블록은 빈 칸이 될 수 없습니다.",
"ai_utilize_train_pop_error": "작품에 적용된 모델이 비활성화 또는 삭제되었습니다.",
"list_can_not_space": "리스트의 이름은 빈 칸이 될 수 없습니다.",
"sign_can_not_space": "신호의 이름은 빈 칸이 될 수 없습니다.",
@@ -1434,8 +1539,9 @@
"loading_plz_wait": "로딩 중입니다. 잠시만 기다려주세요.",
"ai_utilize_video_loading": "비디오 감지 블록을 로딩 중입니다.
최대 1분까지 걸릴 수 있어요.",
"ai_utilize_audio_listening": "듣고 있어요",
- "ai_utilize_audio_description": "마이크를 이용하여 소리와 음성을 감지할 수 있는 블록 모음입니다. (IE/Safari 브라우저 미지원)",
- "ai_utilize_tts_description": "nVoice 음성합성 기술로 다양한 목소리로 문장을 읽는 블록모음 입니다. ",
+ "ai_utilize_audio_progress": "인식하고 있어요",
+ "ai_utilize_audio_description": "마이크를 이용하여 음성을 인식하는 블록들의 모음입니다.",
+ "ai_utilize_tts_description": "nVoice 음성합성 기술로 다양한 목소리로 문장을 읽는 블록모음 입니다. (한국어 엔진 지원)",
"expansion_translate_description": "파파고를 이용하여 다른 언어로 번역할 수 있는 블록 모음입니다.",
"ai_utilize_video_description": "카메라를 이용하여 사람(신체), 얼굴, 사물 등을 인식하는 블록들의 모음입니다. (IE 및 iOS 미지원)",
"expansion_weather_description": "기온, 강수량, 미세먼지 농도 등 한국의 날씨와 관련된 블록 모음입니다. [웨더아이 제공]",
@@ -1449,10 +1555,14 @@
"hw_download_text4": "최신 버전의 연결 프로그램을 설치해 주세요.",
"hw_download_btn": "연결 프로그램 다운로드",
"runtime_error": "실행 오류",
- "hardware_need_update_content": "보안 업데이트로 엔트리 웹버전은\r\n하드웨어 1.9.26 버전 이상만 지원합니다.\r\n이하 버전일 경우 프로그램을 업데이트 하세요.\r\n* 업데이트 후 블록이 보이지 않을 경우,\r\n웹브라우저의 캐시를 지워 주세요.",
+ "hardware_need_update_content": "보안 업데이트로 엔트리 웹버전은\r\n하드웨어 1.9.39 버전 이상만 지원합니다.\r\n하위 버전일 경우 프로그램을 업데이트하세요.\r\n* 업데이트 후 블록이 보이지 않을 경우,\r\n웹브라우저의 캐시를 지워 주세요.",
"cannot_delete_function": "이미 사용 중인 함수입니다.\n결과값 설정을 바꾸려면 함수 블록이\n사용된 오브젝트가 없어야 합니다.",
"local_variable_deletion_warning": "사용 중인 지역변수가 있다면\n관련 블록이 삭제될 수 있습니다.\n정말로 변경할까요?",
"warning_function_aleady_being_edited": "새로운 함수를 추가하려면\n먼저 '저장' 또는 '취소'를 눌러\n기존의 함수 만들기 화면에서\n빠져나와야 합니다.",
+ "ai_utilize_pose_landmarker_description": "카메라를 이용하여 사람의 신체를 인식하는 블록들의 모음입니다.",
+ "ai_utilize_face_landmarker_description": "카메라를 이용하여 얼굴을 인식하는 블록들의 모음입니다.",
+ "ai_utilize_object_detector_description": "카메라를 이용하여 사물을 인식하는 블록들의 모음입니다.",
+ "ai_utilize_gesture_recognition_description": "카메라를 이용하여 손을 인식하는 블록들의 모음입니다.",
"version_update_msg1": "엔트리 오프라인 새 버전(%1)을\n사용하실 수 있습니다.",
"version_update_msg2": "엔트리 하드웨어 새 버전(%1)을\n사용하실 수 있습니다.",
"version_update_msg3": "지금 업데이트 하시겠습니까?",
@@ -1524,6 +1634,10 @@
"use_block_function": "함수에 조립되어 있어요.",
"use_block_project": "블록 {0} 개",
"use_blocks_project": "블록 {0} 개",
+ "pose_landmarker_title_text": "사람 인식",
+ "face_landmarker_title_text": "얼굴 인식",
+ "object_detector_title_text": "사물 인식",
+ "gesture_recognition_title_text": "손 인식",
"SelectShape": "이동",
"SelectCut": "자르기",
"Pencil": "펜",
@@ -2089,7 +2203,7 @@
"hide": "오브젝트를 실행화면에 보이지 않게 합니다.",
"dialog_time": "오브젝트가 입력한 내용을 입력한 시간 동안 말풍선으로 말한 후 다음 블록을 실행합니다.",
"dialog": "오브젝트가 입력한 내용을 말풍선으로 말하는 동시에 다음 블록을 실행합니다.",
- "remove_dialog": "오브젝트가 말하고 있는 말풍선을 지웁니다.",
+ "remove_dialog": "오브젝트가 말하고 생각하고 있는 말풍선을 지웁니다.",
"change_to_some_shape": "오브젝트를 선택한 모양으로 바꿉니다. (내부 블록을 분리하고 모양의 번호를 입력하여 모양을 바꿀 수 있습니다.)",
"change_to_next_shape": "오브젝트의 모양을 이전 또는 다음 모양으로 바꿉니다.",
"add_effect_amount": "오브젝트에 선택한 효과를 입력한 값만큼 줍니다.",
@@ -2103,8 +2217,11 @@
"brush_stamp": "오브젝트의 모양을 도장처럼 실행화면 위에 찍습니다.",
"start_drawing": "오브젝트가 이동하는 경로를 따라 선이 그리기 시작합니다. (오브젝트의 중심점이 기준이 됩니다.)",
"stop_drawing": "오브젝트가 선 그리는 것을 멈춥니다.",
+ "start_fill": "오브젝트가 이동하는 경로를 따라 선을 그리고 내부를 채우기 시작합니다. (오브젝트의 중심점이 기준이 됩니다.)",
+ "stop_fill": "오브젝트가 채우는 것을 멈춥니다.",
"set_color": "오브젝트가 그리는 선의 색을 선택한 색으로 정합니다.",
- "set_random_color": "오브젝트가 그리는 선의 색을 무작위로 정합니다. ",
+ "set_random_color": "오브젝트가 그리는 선의 색을 무작위로 정합니다.",
+ "set_fill_color": "오브젝트가 채우는 색을 선택한 색으로 정합니다.",
"change_thickness": "오브젝트가 그리는 선의 굵기를 입력한 값만큼 바꿉니다.",
"set_thickness": "오브젝트가 그리는 선의 굵기를 입력한 값으로 정합니다. 1~무한의 범위로 설정할 수 있습니다. (1 이하는 1로 처리합니다.)",
"change_brush_transparency": "해당 오브젝트가 그리는 붓의 투명도를 입력한 값만큼 바꿉니다.",
@@ -2119,23 +2236,26 @@
"text_change_font_color": "글상자를 선택한 글씨색으로 변경합니다.",
"text_change_bg_color": "글상자를 선택한 배경색으로 변경합니다.",
"text_flush": "글상자의 내용을 모두 지웁니다.",
- "sound_something_with_block": "해당 오브젝트가 선택한 소리를 재생하는 동시에 다음 블록을 실행합니다.",
- "sound_something_second_with_block": "해당 오브젝트가 선택한 소리를 입력한 시간 만큼 재생하는 동시에 다음 블록을 실행합니다.",
- "sound_from_to": "해당 오브젝트가 선택한 소리를 입력한 구간을 재생하는 동시에 다음 블록을 실행합니다.",
- "sound_something_wait_with_block": "해당 오브젝트가 선택한 소리를 재생한 후 다음 블록을 실행합니다.",
- "sound_something_second_wait_with_block": "해당 오브젝트가 선택한 소리를 입력한 시간 만큼 재생한 후 다음 블록을 실행합니다.",
- "sound_from_to_and_wait": "해당 오브젝트가 선택한 소리를 입력한 구간을 재생한 후 다음 블록을 실행합니다.",
- "sound_volume_change": "작품에서 재생되는 모든 소리의 크기를 입력한 값만큼 바꿉니다.",
- "sound_volume_set": "작품에서 재생되는 모든 소리의 크기를 입력한 값으로 정합니다.",
- "sound_silent_all": "재생 중인 모든 소리를 멈춥니다.",
+ "sound_something_with_block": "오브젝트가 선택한 소리를 재생하는 동시에 다음 블록을 실행합니다.",
+ "sound_something_second_with_block": "오브젝트가 선택한 소리를 입력한 시간 만큼 재생하는 동시에 다음 블록을 실행합니다.",
+ "sound_from_to": "오브젝트가 선택한 소리의 입력한 구간을 재생하는 동시에 다음 블록을 실행합니다.",
+ "sound_something_wait_with_block": "오브젝트가 선택한 소리를 재생한 후 다음 블록을 실행합니다.",
+ "sound_something_second_wait_with_block": "오브젝트가 선택한 소리를 입력한 시간만큼 재생한 후 다음 블록을 실행합니다.",
+ "sound_from_to_and_wait": "오브젝트가 선택한 소리의 입력한 구간을 재생한 후 다음 블록을 실행합니다.",
+ "sound_volume_change": "작품에서 재생하는 모든 소리의 크기를 입력한 값만큼 바꿉니다.",
+ "sound_volume_set": "작품에서 재생하는 모든 소리의 크기를 입력한 값(%)으로 정합니다.",
+ "sound_speed_change": "작품에서 재생하는 모든 소리의 빠르기를 입력한 값만큼 바꿉니다.",
+ "sound_speed_set": "작품에서 재생하는 모든 소리의 빠르기를 입력한 값(배수)으로 정합니다.",
+ "sound_silent_all": "재생하는 소리 중 선택한 소리를 멈춥니다.",
"is_clicked": "마우스를 클릭한 경우 ‘참’으로 판단합니다.",
"is_object_clicked": "오브젝트를 클릭한 경우 ‘참’으로 판단합니다.",
"is_press_some_key": "선택한 키가 눌려져 있는 경우 ‘참’으로 판단합니다.",
"reach_something": "해당 오브젝트가 선택한 항목과 닿은 경우 ‘참’으로 판단합니다.",
- "is_type": "입력한 값이 숫자라면 ‘참’으로 판단합니다.",
+ "is_type": "입력한 값이 선택한 문자로 이루어져 있다면 ‘참’으로 판단합니다.",
"boolean_basic_operator": "입력한 두 값을 비교합니다.\n= : 왼쪽에 위치한 값과 오른쪽에 위치한 값이 같은 경우 '참'으로 판단합니다.\n!= : 왼쪽에 위치한 값과 오른쪽에 위치한 값이 같지 않은 경우 '참'으로 판단합니다.\n> : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 큰 경우 같로 판단합니다.\n< : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 작은 경우 '참'으로 판단합니다.\n≥ : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 크거나 같은 경우 '참'으로 판단합니다.\n≤ : 왼쪽에 위치한 값이 오른쪽에 위치한 값보다 작거나 같은 경우 '참'으로 판단합니다.",
"boolean_and_or": "그리고 : 두 판단이 모두 참인 경우 ‘참’으로 판단합니다.\n또는 : 두 판단 중 하나라도 참이 있는 경우 ‘참’으로 판단합니다.",
"boolean_not": "해당 판단이 참이면 거짓, 거짓이면 참으로 만듭니다.",
+ "is_boost_mode": "부스트모드가 켜져 있으면 ‘참’으로 판단합니다.",
"calc_basic": "입력한 두 수의 사칙연산 값입니다.\n+ : 입력한 두 수를 더한 값입니다.\n- : 입력한 두 수를 뺀 값입니다.\n* : 입력한 두 수를 곱한 값입니다.\n/ : 입력한 두 수를 나눈 값입니다.",
"calc_rand": "입력한 두 수 사이에서 선택된 무작위 수 값입니다. (두 수 모두 정수를 입력한 경우 정수가, 두 수 중 하나라도 소수를 입력한 경우 소숫점 둘째 자리의 소수 값이 선택됩니다.)",
"coordinate_mouse": "마우스 포인터의 x 또는 y 좌푯값입니다.",
@@ -2149,7 +2269,7 @@
"get_date": "현재 연도, 월, 일, 요일, 시각과 같이 시간에 대한 값입니다.",
"distance_something": "해당 오브젝트와 선택한 오브젝트 또는 마우스 포인터 간의 거릿값입니다.",
"get_sound_duration": "선택한 소리의 길이(초) 값입니다.",
- "get_user_name": "작품을 실행하고 있는 사용자의 아이디 값입니다.",
+ "get_user_name": "작품을 실행하고 있는 사용자의 아이디 값입니다.\n값은 개인정보 보호를 위해 마스킹 처리되어 있습니다.",
"get_nickname": "작품을 실행하고 있는 사용자의 닉네임 값입니다.",
"length_of_string": "입력한 값의 공백을 포함한 글자 수입니다.",
"combine_something": "입력한 두 값을 결합한 값입니다.",
@@ -2181,21 +2301,20 @@
"insert_row_to_table": "선택한 테이블의 입력한 순서에 행(열)을 추가합니다. 추가된 행(열)의 모든 셀 값은 0입니다. 추가된 행(열) 뒤에 있는 행(열)들은 순서가 하나씩 밀립니다.",
"delete_row_from_table": "선택한 테이블의 입력한 순서에 있는 행(열)을 삭제합니다.",
"set_value_from_table": "선택한 테이블에서 입력한 행의 속성을 입력한 값으로 바꿉니다.",
- "save_current_table": "테이블을 현재 상태로 남깁니다. 작품을 정지해도 테이블에서 변경된 내용이 유지됩니다.",
"get_table_count": "선택한 테이블의 행(열) 개수입니다.",
"get_value_from_table": "선택한 테이블에서 입력한 행의 속성 값입니다. 속성 값 블록 대신 (행을 의미하는) 값 블록을 결합해 사용할 수도 있습니다.",
"get_value_from_last_row": "선택한 테이블에서 마지막 행의 선택한 속성 값입니다. 속성 값 블록 대신 (행을 의미하는) 값 블록을 결합해 사용할 수도 있습니다.",
"calc_values_from_table": "선택한 테이블에서 선택한 속성들에 대한 요약통계량입니다. (합, 최댓값, 최솟값, 평균값, 표준편차)",
"open_table_chart": "선택한 테이블의 차트창을 엽니다.",
- "open_table": "선택한 테이블의 테이블 창을 엽니다.",
- "open_table_wait": "입력한 시간 동안 선택한 테이블의 테이블 창을 엽니다.",
"close_table_chart": "열려있는 테이블 차트 창을 닫습니다.",
+ "get_coefficient": "선택한 테이블에서 두 속성 사이의 상관계수입니다. 상관계수가 1(-1)에 가까울 수록 강한 양(음)의 선형 상관관계를 갖습니다.",
"insert_data_for_test": "데이터를 입력하고 학습한 모델로 인식합니다.",
"video_capture_for_image_test": "카메라를 통해 촬영된 이미지 데이터를 학습한 모델로 분류하거나 중지합니다.",
"insert_text_block_for_test": "데이터를 입력하고 학습한 모델로 인식합니다.",
"test_result": "입력한 데이터를 모델에서 인식한 결과 값입니다. 값은 모델의 클래스 이름(텍스트)으로 표현됩니다.",
"accuracy_of_result": "입력한 데이터의 선택한 클래스에 대한 신뢰도 값입니다. 값은 확률(숫자)로 표현됩니다.",
"is_group": "입력한 데이터의 인식 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
+ "retrain_model": "모델을 다시 학습합니다. 모델 설정을 변경하거나, 입력 데이터가 되는 테이블의 내용을 수정했다면, 변경된 내용을 바탕으로 모델을 다시 학습합니다.",
"model_is_trained": "모델이 학습되었다면 '참'을, 학습 중이거나 학습되지 않았다면 '거짓'으로 판단합니다.",
"set_train_visible": "모델의 상태를 표시하는 창을 실행 화면에 보이게 하거나 숨깁니다.",
"set_train_chart": "입력한 데이터와 학습한 모델의 군집을 2차원 좌표평면에 나타낸 차트 창을 열거나 닫습니다. ",
@@ -2203,7 +2322,40 @@
"get_regression_predict_1": "입력한 핵심 속성으로 모델이 예측한 값을 반환합니다.",
"get_regression_predict_2": "입력한 핵심 속성으로 모델이 예측한 값을 반환합니다.",
"get_regression_predict_3": "입력한 핵심 속성으로 모델이 예측한 값을 반환합니다.",
+ "get_regression_predict_4": "입력한 핵심 속성으로 모델이 예측한 값을 반환합니다.",
+ "get_regression_predict_5": "입력한 핵심 속성으로 모델이 예측한 값을 반환합니다.",
+ "get_regression_predict_6": "입력한 핵심 속성으로 모델이 예측한 값을 반환합니다.",
"get_regression_accuracy": "모델의 결정계수를 값으로 반환합니다.",
+ "set_logistic_regression_option": "모델의 학습 조건을 변경합니다. 변경한 학습 조건은 '모델 다시 학습하기' 블록으로 모델을 다시 학습할 때부터 적용됩니다.",
+ "set_logistic_regression_optimizer": "모델의 최적화 알고리즘을 변경합니다. 변경한 최적화 알고리즘은 '모델 다시 학습하기' 블록으로 모델을 다시 학습할 때부터 적용됩니다.",
+ "get_logistic_regression_probability_1": "입력한 데이터의 선택한 클래스에 대한 확률 값입니다. 값은 숫자로 표현됩니다.",
+ "get_logistic_regression_probability_2": "입력한 데이터의 선택한 클래스에 대한 확률 값입니다. 값은 숫자로 표현됩니다.",
+ "get_logistic_regression_probability_3": "입력한 데이터의 선택한 클래스에 대한 확률 값입니다. 값은 숫자로 표현됩니다.",
+ "get_logistic_regression_probability_4": "입력한 데이터의 선택한 클래스에 대한 확률 값입니다. 값은 숫자로 표현됩니다.",
+ "get_logistic_regression_probability_5": "입력한 데이터의 선택한 클래스에 대한 확률 값입니다. 값은 숫자로 표현됩니다.",
+ "get_logistic_regression_probability_6": "입력한 데이터의 선택한 클래스에 대한 확률 값입니다. 값은 숫자로 표현됩니다.",
+ "set_decisiontree_option": "모델의 학습 조건을 변경합니다. 변경한 학습 조건은 '모델 다시 학습하기' 블록으로 모델을 다시 학습할 때부터 적용됩니다.",
+ "set_decisiontree_tree": "학습한 결정 트리를 나타낸 창을 열거나 닫습니다.",
+ "set_svm_option": "모델의 학습 조건을 변경합니다. 변경한 학습 조건은 '모델 다시 학습하기' 블록으로 모델을 다시 학습할 때부터 적용됩니다.",
+ "set_kernel_linear": "학습 조건 중 커널을 선형으로 변경합니다. 변경한 학습 조건은 '모델 다시 학습하기' 블록으로 모델을 다시 학습할 때부터 적용됩니다.",
+ "set_kernel_option": "학습 조건 중 커널을 다항식 또는 RBF로 변경합니다. 변경한 학습 조건은 '모델 다시 학습하기' 블록으로 모델을 다시 학습할 때부터 적용됩니다.",
+ "train_param_kernel_polynomial": "",
+ "train_param_kernel_rbf": "",
+ "train_param_degree": "",
+ "train_param_gamma": "",
+ "is_result_1": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
+ "is_result_2": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
+ "is_result_3": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
+ "is_result_4": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
+ "is_result_5": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
+ "is_result_6": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
+ "get_predict_1": "입력한 데이터를 모델에서 분류한 값입니다. 값은 클래스 이름(텍스트)으로 표현됩니다.",
+ "get_predict_2": "입력한 데이터를 모델에서 분류한 값입니다. 값은 클래스 이름(텍스트)으로 표현됩니다.",
+ "get_predict_3": "입력한 데이터를 모델에서 분류한 값입니다. 값은 클래스 이름(텍스트)으로 표현됩니다.",
+ "get_predict_4": "입력한 데이터를 모델에서 분류한 값입니다. 값은 클래스 이름(텍스트)으로 표현됩니다.",
+ "get_predict_5": "입력한 데이터를 모델에서 분류한 값입니다. 값은 클래스 이름(텍스트)으로 표현됩니다.",
+ "get_predict_6": "입력한 데이터를 모델에서 분류한 값입니다. 값은 클래스 이름(텍스트)으로 표현됩니다.",
+ "get_result_info": "모델의 성능 평가 지표를 값으로 반환합니다.",
"set_cluster_option_k": "군집의 개수를 입력한 값으로 바꾸어 설정합니다. 변경한 군집 개수는 '모델 다시 학습하기' 블록으로 모델을 다시 학습할 때부터 적용됩니다.",
"set_cluster_option_centroids": "군집의 최초 중심점 기준을 선택한 기준으로 바꿉니다. 변경한 중심점 기준은 '모델 다시 학습하기' 블록으로 모델을 다시 학습할 때부터 적용됩니다.",
"get_cluster_centriod_count": "모델의 군집 개수를 값으로 반환합니다. ",
@@ -2211,20 +2363,34 @@
"get_cluster_centriod_index_1": "입력한 핵심 속성이 모델이 묶은 군집 중에 어느 군집에 속하는지를 반환합니다. 값은 텍스트(군집 이름)로 표현됩니다.",
"get_cluster_centriod_index_2": "입력한 핵심 속성이 모델이 묶은 군집 중에 어느 군집에 속하는지를 반환합니다. 값은 텍스트(군집 이름)로 표현됩니다.",
"get_cluster_centriod_index_3": "입력한 핵심 속성이 모델이 묶은 군집 중에 어느 군집에 속하는지를 반환합니다. 값은 텍스트(군집 이름)로 표현됩니다.",
+ "get_cluster_centriod_index_4": "입력한 핵심 속성이 모델이 묶은 군집 중에 어느 군집에 속하는지를 반환합니다. 값은 텍스트(군집 이름)로 표현됩니다.",
+ "get_cluster_centriod_index_5": "입력한 핵심 속성이 모델이 묶은 군집 중에 어느 군집에 속하는지를 반환합니다. 값은 텍스트(군집 이름)로 표현됩니다.",
+ "get_cluster_centriod_index_6": "입력한 핵심 속성이 모델이 묶은 군집 중에 어느 군집에 속하는지를 반환합니다. 값은 텍스트(군집 이름)로 표현됩니다.",
"set_number_learning_option_k": "이웃 개수를 입력한 값으로 바꾸어 설정합니다. 변경한 이웃 개수는 '모델 다시 학습하기' 블록으로 모델을 다시 학습할 때부터 적용됩니다.",
"get_number_learning_predict_1": "입력한 데이터를 모델에서 분류한 값입니다. 값은 모델의 클래스 이름(텍스트)으로 표현됩니다.",
"get_number_learning_predict_2": "입력한 데이터를 모델에서 분류한 값입니다. 값은 모델의 클래스 이름(텍스트)으로 표현됩니다.",
"get_number_learning_predict_3": "입력한 데이터를 모델에서 분류한 값입니다. 값은 모델의 클래스 이름(텍스트)으로 표현됩니다.",
+ "get_number_learning_predict_4": "입력한 데이터를 모델에서 분류한 값입니다. 값은 모델의 클래스 이름(텍스트)으로 표현됩니다.",
+ "get_number_learning_predict_5": "입력한 데이터를 모델에서 분류한 값입니다. 값은 모델의 클래스 이름(텍스트)으로 표현됩니다.",
+ "get_number_learning_predict_6": "입력한 데이터를 모델에서 분류한 값입니다. 값은 모델의 클래스 이름(텍스트)으로 표현됩니다.",
"get_number_learning_predict_param_1": "입력한 데이터의 선택한 클래스에 대한 분류 신뢰도 값입니다. 값은 숫자로 표현됩니다.",
"get_number_learning_predict_param_2": "입력한 데이터의 선택한 클래스에 대한 분류 신뢰도 값입니다. 값은 숫자로 표현됩니다.",
"get_number_learning_predict_param_3": "입력한 데이터의 선택한 클래스에 대한 분류 신뢰도 값입니다. 값은 숫자로 표현됩니다.",
+ "get_number_learning_predict_param_4": "입력한 데이터의 선택한 클래스에 대한 분류 신뢰도 값입니다. 값은 숫자로 표현됩니다.",
+ "get_number_learning_predict_param_5": "입력한 데이터의 선택한 클래스에 대한 분류 신뢰도 값입니다. 값은 숫자로 표현됩니다.",
+ "get_number_learning_predict_param_6": "입력한 데이터의 선택한 클래스에 대한 분류 신뢰도 값입니다. 값은 숫자로 표현됩니다.",
"is_number_learning_group_1": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
"is_number_learning_group_2": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
"is_number_learning_group_3": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
- "check_microphone": "컴퓨터에 마이크가 연결되어 있는 경우 '참'으로 판단합니다. (IE/Safari 브라우저 지원하지 않음)",
- "speech_to_text_convert": "마이크에 입력되는 사람의 목소리를 텍스트로 변환합니다. (IE/Safari 브라우저 지원하지 않음)",
- "speech_to_text_get_value": "사람의 목소리를 문자로 바꾼 값입니다. 목소리가 입력되지 않거나, 음성인식 도중 오류가 발생한 경우 무조건 0 값을 갖습니다. (IE/Safari 브라우저 지원하지 않음)",
- "get_microphone_volume": "마이크에 입력되는 소리의 크기 값입니다. (IE/Safari 브라우저 지원하지 않음)",
+ "is_number_learning_group_4": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
+ "is_number_learning_group_5": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
+ "is_number_learning_group_6": "입력한 데이터의 분류 결과가 선택한 클래스인 경우 '참'으로 판단합니다.",
+ "check_microphone": "컴퓨터에 마이크가 연결되어 있는 경우 '참'으로 판단합니다.",
+ "speech_to_text_convert": "마이크를 통해 녹음된 음성을 인식합니다.",
+ "timed_speech_to_text_convert": "입력한 시간 동안 마이크를 통해 녹음된 음성을 선택한 언어로 인식합니다.",
+ "set_visible_speech_to_text": "인식한 음성을 실행 화면에 보이게 하거나 숨깁니다.",
+ "speech_to_text_get_value": "사람의 목소리를 문자로 변환한 값입니다. 목소리가 입력되지 않거나, 음성 인식 도중 오류가 발생한 경우 null 값을 반환합니다.",
+ "get_microphone_volume": "마이크에 입력되는 소리의 크기 값입니다.",
"read_text": "입력한 문자값을 설정된 목소리로 읽습니다.\n입력은 2500자까지 가능합니다.\n인터넷에 연결되어 있지 않거나 인터넷 환경이 불안할 경우, 해당 블록이 실행되지 않고 다음 블록으로 넘어갈 수 있습니다.",
"read_text_wait_with_block": "입력한 문자값을 읽어준 후 다음 블록을 실행합니다.",
"set_tts_property": "선택한 목소리가 선택한 속도와 선택한 음높이로 설정됩니다.",
@@ -2268,7 +2434,56 @@
"function_field_boolean": "함수 정의하기' 블록 안에 조립하며, 참 또는 거짓의 판단값에 따라 함수의 실행 결과가 달라집니다. 이 블록을 분리하여 함수의 코드 중 필요한 부분에 넣어 사용합니다.",
"target_project": "목표 작품 확인하기",
"study_goal": "학습 목표 확인하기",
- "show_hint": "힌트보기"
+ "show_hint": "힌트보기",
+ "save_current_table": "테이블을 현재 상태로 남깁니다. 작품을 정지해도 테이블에서 변경된 내용이 유지됩니다.",
+ "open_table": "선택한 테이블의 테이블 창을 엽니다.",
+ "open_table_wait": "입력한 시간 동안 선택한 테이블의 테이블 창을 엽니다.",
+ "change_rgb_to_hex": "입력한 빨강(R), 초록(G), 파랑(B) 값을 HEX 값으로 변환한 값입니다.",
+ "change_hex_to_rgb": "입력한 HEX 값을 빨강(R), 초록(G), 파랑(B) 중 하나로 변환한 값입니다.",
+ "media_pipe_video_screen": "연결된 카메라가 촬영하는 것을 실행 화면에서 보이게 하거나 숨깁니다.\n(기본값으로 50%의 투명도가 적용되어 있습니다.)",
+ "media_pipe_switch_camera": "촬영하는 카메라를 변경합니다.",
+ "check_connected_camera": "컴퓨터에 카메라가 연결되어 있는 경우 '참'으로 판단합니다.",
+ "media_pipe_flip_camera": "촬영되는 화면을 좌우 혹은 상하로 뒤집습니다.",
+ "media_pipe_set_opacity_camera": "촬영되는 화면의 투명도 효과를 입력한 값으로 정합니다. 0~100 사이의 범위로 설정할 수 있습니다.\n(기본값은 50이며, 0 이하는 0으로 100 이상은 100으로 처리됩니다.)",
+ "media_pipe_motion_value": "선택한 오브젝트 혹은 실행 화면 위에서 감지되는 움직임 혹은 방향 값입니다.\n- 움직임: 움직임이 크고 빠를 수록 값이 커집니다.\n- 방향: 오른쪽 혹은 위쪽으로 움직일 때 양수, 왼쪽 혹은 아래쪽으로 움직일때 음수가 됩니다",
+ "when_pose_landmarker": "사람을 인식하면 아래에 연결된 블록들을 실행합니다.",
+ "pose_landmarker": "사람 인식을 시작하거나 중지합니다.\n- 사람 인식: 사람의 몸을 인식하여 각 신체 부위의 위치 등을 좌표로 반환할 수 있습니다.",
+ "draw_detected_pose": "인식한 사람의 형태를 실행 화면에 보이게 하거나 숨깁니다.",
+ "check_detected_pose": "사람이 인식된 경우 '참'으로 판단합니다.",
+ "count_detected_pose": "인식한 사람의 수입니다.",
+ "locate_to_pose": "오브젝트가 선택한 사람의 신체 부위로 이동합니다.\n(오브젝트의 중심점이 기준이 됩니다.)",
+ "locate_time_to_pose": "오브젝트가 입력한 시간에 걸쳐 선택한 사람의 신체 부위로 이동합니다.\n(오브젝트의 중심점이 기준이 됩니다.)",
+ "axis_detected_pose": "입력한 순서의 사람의 선택한 신체 부위의 위치값입니다. 인식이 되지 않은 경우 0을 반환합니다.\n(신체 부위: 코, 왼쪽 눈 안쪽, 왼쪽 눈, 왼쪽 눈 바깥쪽, 오른쪽 눈 안쪽, 오른쪽 눈, 오른쪽 눈 바깥쪽, 왼쪽 귀, 오른쪽 귀, 왼쪽 입꼬리, 오른쪽 입꼬리, 왼쪽 어깨, 오른쪽 어깨, 왼쪽 팔꿈치, 오른쪽 팔꿈치, 왼쪽 손목, 오른쪽 손목, 왼쪽 소지, 오른쪽 소지, 왼쪽 검지, 오른쪽 검지, 왼쪽 엄지, 오른쪽 엄지, 왼쪽 엉덩이, 오른쪽 엉덩이, 왼쪽 무릎, 오른쪽 무릎, 왼쪽 발목, 오른쪽 발목, 왼쪽 발꿈치, 오른쪽 발꿈치, 왼쪽 발끝, 오른쪽 발끝)",
+ "when_face_landmarker": "얼굴을 인식하면 아래에 연결된 블록들을 실행합니다.",
+ "face_landmarker": "얼굴 인식을 시작하거나 중지합니다.\n- 얼굴 인식: 사람의 얼굴을 인식하여 눈, 코, 입, 귀의 위치나 예상되는 성별, 나이, 감정을 알 수 있습니다.",
+ "draw_detected_face": "인식한 얼굴의 형태를 실행 화면에 보이게 하거나 숨깁니다.",
+ "check_detected_face": "얼굴이 인식된 경우 '참'으로 판단합니다.",
+ "count_detected_face": "인식한 얼굴의 수입니다.",
+ "locate_to_face": "오브젝트가 선택한 얼굴의 부위로 이동합니다.\n(오브젝트의 중심점이 기준이 됩니다.)",
+ "locate_time_to_face": "오브젝트가 입력한 시간에 걸쳐 선택한 얼굴의 부위로 이동합니다.\n(오브젝트의 중심점이 기준이 됩니다.)",
+ "check_detected_gender": "선택한 얼굴이 선택한 성별이면 '참'으로 판단합니다.",
+ "check_compare_age": "선택한 얼굴의 나이가 입력한 수식에 해당한다면 '참'으로 판단합니다.",
+ "check_detected_emotion": "선택한 얼굴이 선택한 감정이면 '참'으로 판단합니다.",
+ "axis_detected_face": "입력한 순서의 얼굴 중 선택된 얼굴 부위의 위치값입니다. 인식이 잘 되지 않은 경우 무조건 0으로 출력됩니다. (얼굴 부위: 왼쪽 눈, 오른쪽 눈, 코, 왼쪽 입꼬리, 오른쪽 입꼬리, 윗 입술, 아랫 입술)",
+ "get_detected_face_value": "입력한 순서의 얼굴의 성별/나이/감정의 추정값입니다. 인식이 잘 되지 않은 경우 null을 반환합니다.",
+ "when_object_detector": "사물을 인식하면 아래에 연결된 블록들을 실행합니다.",
+ "object_detector": "사물 인식을 시작하거나 중지합니다.\n- 사물 인식: 인식한 사물의 종류를 알 수 있습니다.",
+ "draw_detected_object": "인식한 사물의 위치와 순서를 실행 화면에 보이게 하거나 숨깁니다.",
+ "check_detected_object": "사물이 인식된 경우 '참'으로 판단합니다.",
+ "count_detected_object": "인식한 사물의 수입니다.",
+ "is_detected_among_objects": "선택한 사물이 인식된 경우 '참'으로 판단합니다.",
+ "when_hand_detection": "손을 인식하면 아래에 연결된 블록들을 실행합니다.",
+ "hand_detection": "손 인식을 시작하거나 중지합니다.\n- 손 인식: 사람의 손을 인식하여 오른손인지 왼손인지 또는 어떤 동작인지를 구분하거나, 각 부위를 인식해 좌표로 반환할 수 있습니다.",
+ "draw_detected_hand": "인식한 손의 형태를 실행 화면에 보이게 하거나 숨깁니다.",
+ "check_detected_hand": "손을 인식한 경우 '참'으로 판단합니다.",
+ "count_detected_hand": "인식한 손의 개수입니다.",
+ "locate_to_hand": "오브젝트가 선택한 손의 부위로 이동합니다.\n(오브젝트의 중심점이 기준이 됩니다.)\n\n가장 먼저 인식된 손이 1번째가 되며, 2개의 손이 한 번에 인식되면 왼쪽부터 1번째가 됩니다.",
+ "locate_time_to_hand": "오브젝트가 입력한 시간에 걸쳐 선택한 손의 부위로 이동합니다.\n(오브젝트의 중심점이 기준이 됩니다.)\n\n가장 먼저 인식된 손이 1번째가 되며, 2개의 손이 한 번에 인식되면 왼쪽부터 1번째가 됩니다.",
+ "axis_detected_hand": "입력한 순서의 손에서 선택한 부위의 위치 값입니다. 인식이 되지 않은 경우 0을 반환합니다.\n\n가장 먼저 인식된 손이 1번째가 되며, 2개의 손이 한 번에 인식되면 왼쪽부터 1번째가 됩니다.",
+ "is_which_hand": "입력한 순서의 손이 선택한 손이라면 '참'으로 판단합니다.",
+ "get_which_hand": "입력한 순서의 손이 오른손인지, 왼손인지를 반환합니다.",
+ "is_which_gesture": "입력한 순서의 손이 선택한 모양이라면 '참'으로 판단합니다.",
+ "get_which_gesture": "입력한 순서의 손이 어떤 모양인지를 반환합니다."
},
"Category": {
"entrybot_friends": "엔트리봇 친구들",
@@ -2450,9 +2665,9 @@
"hw_module_terminaltion_desc": "하드웨어 연결이 끊어져있습니다."
},
"template": {
- "hardware_lite_descriptions": "하드웨어 라이트는 인터넷이 연결되어 있어야 정상적으로 동작합니다.",
"expansion_block_descriptions": "확장 블록은 인터넷이 연결되어 있어야 정상적으로 동작합니다.",
- "aiUtilize_block_descriptions": "AI 활용블록은 인터넷이 연결되어 있어야 정상적으로 동작합니다.",
+ "aiUtilize_block_descriptions": "불러올 인공지능 블록을 선택해 주세요.",
+ "hardware_lite_descriptions": "하드웨어 연결/작동 시 예기치 못한 문제가 발생할 수 있습니다.\r\n 하드웨어 웹 연결 중 문제 발생 시 엔트리 고객센터 또는 해당 하드웨어 업체의 고객센터에 연락해 주세요.",
"load_ai_utilize_train_block": "인공지능 모델 학습하기",
"load_ai_utilize_block": "인공지능 블록 불러오기",
"load_expansion_block": "확장 블록 불러오기",
@@ -2465,10 +2680,13 @@
"function_create": "함수 정의하기 %1 %2",
"function_create_value": "함수 정의하기 %1 %2 %3 결과값을 %4 (으)로 정하기",
"learning_title_image_str": "분류: 이미지 모델",
- "learning_title_speech_str": "분류: 음성 모델",
+ "learning_title_speech_str": "분류: 소리 모델",
"learning_title_text_str": "분류: 텍스트 모델",
- "learning_title_number_str": "분류: 숫자 모델",
+ "learning_title_number_str": "분류: 숫자 (kNN) 모델",
"learning_title_regression_str": "예측: 숫자 모델",
+ "learning_title_logistic_regression_str": "분류: 숫자 (로지스틱 회귀) 모델",
+ "learning_title_decisiontree_str": "분류: 숫자 (결정 트리) 모델",
+ "learning_title_svm_str": "분류: 숫자 (SVM) 모델",
"learning_title_cluster_str": "군집: 숫자 모델",
"weather_title_text": "날씨",
"translate_title_text": "번역",
@@ -2490,6 +2708,7 @@
"behaviorConductDisaster_title_text": "자연재난 국민행동요령",
"behaviorConductLifeSafety_title_text": "생활안전 국민행동요령",
"audio_title_text": "오디오 감지",
+ "voice_title_text": "음성 인식",
"tts_title_text": "읽어주기",
"run": "",
"blacksmith_get_analog_value": "아날로그 %1 번 핀 센서 값",
@@ -2560,7 +2779,7 @@
"hide": "모양 숨기기 %1",
"dialog_time": "%1 을(를) %2 초 동안 %3 %4",
"dialog": "%1 을(를) %2 %3",
- "remove_dialog": "말하기 지우기 %1",
+ "remove_dialog": "말풍선 지우기 %1",
"change_to_some_shape": "%1 모양으로 바꾸기 %2",
"get_pictures": "%1 ",
"change_to_next_shape": "%1 모양으로 바꾸기 %2",
@@ -2575,10 +2794,13 @@
"brush_stamp": "도장 찍기 %1",
"start_drawing": "그리기 시작하기 %1",
"stop_drawing": "그리기 멈추기 %1",
- "set_color": "붓의 색을 %1 (으)로 정하기 %2",
+ "start_fill": "채우기 시작하기 %1",
+ "stop_fill": "채우기 멈추기 %1",
+ "set_color": "그리기 색을 %1 (으)로 정하기 %2",
"set_random_color": "붓의 색을 무작위로 정하기 %1",
- "change_thickness": "붓의 굵기를 %1 만큼 바꾸기 %2",
- "set_thickness": "붓의 굵기를 %1 (으)로 정하기 %2",
+ "set_fill_color": "채우기 색을 %1 (으)로 정하기 %2",
+ "change_thickness": "그리기 굵기를 %1 만큼 바꾸기 %2",
+ "set_thickness": "그리기 굵기를 %1 (으)로 정하기 %2",
"change_brush_transparency": "붓의 투명도를 %1 % 만큼 바꾸기 %2",
"set_brush_tranparency": "붓의 투명도를 %1 % 로 정하기 %2",
"brush_erase_all": "모든 붓 지우기 %1",
@@ -2593,14 +2815,16 @@
"text_flush": "텍스트 모두 지우기 %1",
"sound_something_with_block": "소리 %1 재생하기 %2",
"get_sounds": "%1 ",
- "sound_something_second_with_block": "소리 %1 %2 초 재생하기 %3",
+ "sound_something_second_with_block": "소리 %1 %2 초 재생하기 %3",
"sound_from_to": "소리 %1 %2 초 부터 %3 초까지 재생하기 %4",
- "sound_something_wait_with_block": "소리 %1 재생하고 기다리기 %2",
- "sound_something_second_wait_with_block": "소리 %1 %2 초 재생하고 기다리기 %3",
+ "sound_something_wait_with_block": "소리 %1 재생하고 기다리기 %2",
+ "sound_something_second_wait_with_block": "소리 %1 %2 초 재생하고 기다리기 %3",
"sound_from_to_and_wait": "소리 %1 %2 초 부터 %3 초까지 재생하고 기다리기 %4",
- "sound_volume_change": "소리 크기를 %1 % 만큼 바꾸기 %2",
+ "sound_volume_change": "소리 크기를 %1 만큼 바꾸기 %2",
"sound_volume_set": "소리 크기를 %1 % 로 정하기 %2",
- "sound_silent_all": "모든 소리 멈추기 %1",
+ "sound_speed_change": "소리 빠르기를 %1 만큼 바꾸기 %2",
+ "sound_speed_set": "소리 빠르기를 %1 배로 정하기 %2",
+ "sound_silent_all": "%1 소리 멈추기 %2",
"is_clicked": "%1",
"is_object_clicked": "%1",
"is_press_some_key": "%1 %2",
@@ -2669,6 +2893,7 @@
"open_table_wait": "테이블 %1 창을 %2 초 동안 열기 %3",
"open_table_chart": "테이블 %1의 %2 차트 창 열기 %3",
"close_table_chart": "테이블 차트 창 닫기 %1",
+ "get_coefficient": "테이블 %1 %2과(와) %3의 상관계수",
"aiUtilizeBlockAddButton": "%1",
"aiUtilizeModelTrainButton": "%1",
"learning_title_image": "%1",
@@ -2677,8 +2902,11 @@
"learning_title_number": "%1",
"learning_title_regression": "%1",
"learning_title_cluster": "%1",
+ "learning_title_logistic_regression": "%1",
+ "learning_title_decisiontree": "%1",
+ "learning_title_svm": "%1",
"insert_data_for_test": "학습한 모델로 분류하기 %1",
- "video_capture_for_image_test": "카메라 화면을 학습한 모델로 분류 %1 %2",
+ "video_capture_for_image_test": "비디오 화면을 학습한 모델로 분류 %1 %2",
"insert_text_block_for_test": "%1 을(를) 학습한 모델로 분류하기 %2",
"test_result": "분류 결과",
"accuracy_of_result": "%1에 대한 신뢰도",
@@ -2691,7 +2919,36 @@
"get_regression_predict_1": "%1 %2 의 예측 값",
"get_regression_predict_2": "%1 %2 %3 %4 의 예측 값",
"get_regression_predict_3": "%1 %2 %3 %4 %5 %6 의 예측 값",
+ "get_regression_predict_4": "%1 %2 %3 %4 %5 %6 %7 %8 의 예측 값",
+ "get_regression_predict_5": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 의 예측 값",
+ "get_regression_predict_6": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 의 예측 값",
"get_regression_accuracy": "결정계수",
+ "set_logistic_regression_option": "학습 조건 %1 을(를) %2 (으)로 바꾸기 %3",
+ "set_logistic_regression_optimizer": "최적화 알고리즘을 %1 (으)로 바꾸기 %2",
+ "get_logistic_regression_probability_1": "%1 %2 의 %3 에 대한 확률",
+ "get_logistic_regression_probability_2": "%1 %2 %3 %4 의 %5 에 대한 확률",
+ "get_logistic_regression_probability_3": "%1 %2 %3 %4 %5 %6 의 %7 에 대한 확률",
+ "get_logistic_regression_probability_4": "%1 %2 %3 %4 %5 %6 %7 %8 의 %9 에 대한 확률",
+ "get_logistic_regression_probability_5": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 의 %11 에 대한 확률",
+ "get_logistic_regression_probability_6": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 의 %13 에 대한 확률",
+ "set_decisiontree_option": "학습 조건 %1 을 %2 으로 바꾸기 %3",
+ "set_decisiontree_tree": "학습한 트리 %1 %2",
+ "set_svm_option": "학습 조건 %1 을 %2 으로 바꾸기 %3",
+ "set_kernel_linear": "커널을 선형으로 바꾸기 %1",
+ "set_kernel_option": "커널을 %1 (으)로 바꾸고 %2 를 %3 (으)로 정하기 %4",
+ "is_result_1": "%1 %2 의 분류 결과가 %3 인가?",
+ "is_result_2": "%1 %2 %3 %4 의 분류 결과가 %5 인가?",
+ "is_result_3": "%1 %2 %3 %4 %5 %6 의 분류 결과가 %7 인가?",
+ "is_result_4": "%1 %2 %3 %4 %5 %6 %7 %8 의 분류 결과가 %9 인가?",
+ "is_result_5": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 의 분류 결과가 %11 인가?",
+ "is_result_6": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 의 분류 결과가 %13 인가?",
+ "get_predict_1": "%1 %2 의 분류 결과",
+ "get_predict_2": "%1 %2 %3 %4 의 분류 결과",
+ "get_predict_3": "%1 %2 %3 %4 %5 %6 의 분류 결과",
+ "get_predict_4": "%1 %2 %3 %4 %5 %6 %7 %8 의 분류 결과",
+ "get_predict_5": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 의 분류 결과",
+ "get_predict_6": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 의 분류 결과",
+ "get_result_info": "모델의 %1",
"set_cluster_option_k": "군집을 %1 개로 바꾸기 %2",
"set_cluster_option_centroids": "중심점 기준을 %1 로 바꾸기 %2",
"get_cluster_centriod_count": "군집 개수",
@@ -2699,21 +2956,36 @@
"get_cluster_centriod_index_1": "%1 %2의 군집",
"get_cluster_centriod_index_2": "%1 %2 %3 %4의 군집",
"get_cluster_centriod_index_3": "%1 %2 %3 %4 %5 %6의 군집",
+ "get_cluster_centriod_index_4": "%1 %2 %3 %4 %5 %6 %7 %8의 군집",
+ "get_cluster_centriod_index_5": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10의 군집",
+ "get_cluster_centriod_index_6": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12의 군집",
"set_number_learning_option_k": "이웃을 %1 개로 바꾸기 %2",
"get_number_learning_predict_1": "%1 %2 의 분류 결과",
"get_number_learning_predict_2": "%1 %2 %3 %4의 분류 결과",
"get_number_learning_predict_3": "%1 %2 %3 %4 %5 %6 의 분류 결과",
+ "get_number_learning_predict_4": "%1 %2 %3 %4 %5 %6 %7 %8 의 분류 결과",
+ "get_number_learning_predict_5": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 의 분류 결과",
+ "get_number_learning_predict_6": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 의 분류 결과",
"get_number_learning_predict_param_1": "%1 %2 의 %3 에 대한 %4",
"get_number_learning_predict_param_2": "%1 %2 %3 %4 의 %5 에 대한 %6",
"get_number_learning_predict_param_3": "%1 %2 %3 %4 %5 %6 의 %7 에 대한 %8",
+ "get_number_learning_predict_param_4": "%1 %2 %3 %4 %5 %6 %7 %8 의 %9 에 대한 %10",
+ "get_number_learning_predict_param_5": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 의 %11 에 대한 %12",
+ "get_number_learning_predict_param_6": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 의 %13 에 대한 %14",
"is_number_learning_group_1": "%1 %2 의 분류 결과가 %3 인가?",
"is_number_learning_group_2": "%1 %2 %3 %4 의 분류 결과가 %5 인가?",
"is_number_learning_group_3": "%1 %2 %3 %4 %5 %6 의 분류 결과가 %7 인가?",
+ "is_number_learning_group_4": "%1 %2 %3 %4 %5 %6 %7 %8 의 분류 결과가 %9 인가?",
+ "is_number_learning_group_5": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 의 분류 결과가 %11 인가?",
+ "is_number_learning_group_6": "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 의 분류 결과가 %13 인가?",
"audio_title": "%1",
"check_microphone": "마이크가 연결되었는가?",
- "speech_to_text_convert": "음성 인식하기 %1",
+ "get_microphone_volume": "마이크 소리 크기",
+ "speech_to_text_title": "%1",
+ "speech_to_text_convert": "%1 음성 인식하기 %2",
+ "timed_speech_to_text_convert": "%1 초 동안 %2 음성 인식하기 %3",
+ "set_visible_speech_to_text": "인식한 음성 %1 %2",
"speech_to_text_get_value": "음성을 문자로 바꾼 값",
- "get_microphone_volume": "마이크 소리크기",
"tts_title": "%1",
"read_text": "%1 읽어주기 %2",
"read_text_wait_with_block": "%1 읽어주고 기다리기 %2",
@@ -2780,7 +3052,58 @@
"function_field_label": "%1%2",
"function_field_string": "%1%2",
"function_field_boolean": "%1%2",
- "get_block_count": "%1 의 블록 수"
+ "get_block_count": "%1 의 블록 수",
+ "change_rgb_to_hex": "R:%1G:%2B:%3의 HEX 값",
+ "change_hex_to_rgb": "HEX%1의 %2값",
+ "media_pipe_title": "%1",
+ "media_pipe_video_screen": "비디오 화면 %1 %2",
+ "media_pipe_switch_camera": "%1 카메라로 바꾸기 %2",
+ "check_connected_camera": "카메라가 연결되었는가?",
+ "media_pipe_flip_camera": "비디오 화면 %1 뒤집기 %2",
+ "media_pipe_set_opacity_camera": "비디오 투명도 효과를 %1 으로 정하기 %2",
+ "media_pipe_motion_value": "%1 에서 감지한 %2 값",
+ "pose_landmarker_title": "%1",
+ "when_pose_landmarker": "%1 사람을 인식했을 때",
+ "pose_landmarker": "사람 인식 %1 %2",
+ "draw_detected_pose": "인식한 사람 %1 %2",
+ "check_detected_pose": "사람을 인식했는가?",
+ "count_detected_pose": "인식한 사람의 수",
+ "locate_to_pose": "%1 번째의 사람의 %2 (으)로 이동하기 %3",
+ "locate_time_to_pose": "%1 초 동안 %2 번째의 사람의 %3 (으)로 이동하기 %4",
+ "axis_detected_pose": "%1 번째 사람의 %2 의 %3 좌표",
+ "face_landmarker_title": "%1",
+ "when_face_landmarker": "%1 얼굴을 인식했을 때",
+ "face_landmarker": "얼굴 인식 %1 %2",
+ "draw_detected_face": "인식한 얼굴 %1 %2",
+ "check_detected_face": "얼굴을 인식했는가?",
+ "count_detected_face": "인식한 얼굴의 수",
+ "locate_to_face": "%1 번째의 얼굴의 %2 (으)로 이동하기 %3",
+ "locate_time_to_face": "%1 초 동안 %2 번째의 얼굴의 %3 (으)로 이동하기 %4",
+ "check_detected_gender": "%1 번째 얼굴의 성별이 %2 인가?",
+ "check_compare_age": "%1 번째 얼굴의 나이 %2 %3 인가?",
+ "check_detected_emotion": "%1 번째 얼굴의 감정이 %2 인가?",
+ "axis_detected_face": "%1 번째 얼굴의 %2 의 %3 좌표",
+ "get_detected_face_value": "%1 번째 얼굴의 %2",
+ "object_detector_title": "%1",
+ "when_object_detector": "%1 사물을 인식했을 때",
+ "object_detector": "사물 인식 %1 %2",
+ "draw_detected_object": "인식한 사물 %1 %2",
+ "check_detected_object": "사물을 인식했는가?",
+ "count_detected_object": "인식한 사물의 수",
+ "is_detected_among_objects": "사물 중 %1 을(를) 인식했는가?",
+ "hand_detection_title": "%1",
+ "when_hand_detection": "%1 손을 인식했을 때",
+ "hand_detection": "손 인식 %1 %2",
+ "draw_detected_hand": "인식한 손 %1 %2",
+ "check_detected_hand": "손을 인식했는가?",
+ "count_detected_hand": "인식한 손의 수",
+ "locate_to_hand": "%1 번째 손의 %2 %3 (으)로 이동하기 %4",
+ "locate_time_to_hand": "%1 초 동안 %2 번째 손의 %3 %4 (으)로 이동하기 %5",
+ "axis_detected_hand": "%1 번째 손의 %2 %3 의 %4 좌표",
+ "is_which_hand": "%1 번째 손이 %2 인가?",
+ "is_which_gesture": "%1 번째 손의 모양이 %2 인가?",
+ "get_which_hand": "%1 번째 손",
+ "get_which_gesture": "%1 번째 손의 모양"
},
"TextCoding": {
"block_name": "블록명",
@@ -3556,5 +3879,51 @@
"trained_table_postfix": "학습완료",
"train_param_error": "테이블 열 정보가 변경된 경우에는 재 학습이 불가능 합니다."
},
+ "pose_list": {
+ "nose": "코",
+ "left_eye_inner": "왼쪽 눈 안쪽",
+ "left_eye": "왼쪽 눈",
+ "left_eye_outer": "왼쪽 눈 바깥쪽",
+ "right_eye_inner": "오른쪽 눈 안쪽",
+ "right_eye": "오른쪽 눈",
+ "right_eye_outer": "오른쪽 눈 바깥쪽",
+ "left_ear": "왼쪽 귀",
+ "right_ear": "오른쪽 귀",
+ "mouth_left": "왼쪽 입꼬리",
+ "mouth_right": "오른쪽 입꼬리",
+ "left_shoulder": "왼쪽 어깨",
+ "right_shoulder": "오른쪽 어깨",
+ "left_elbow": "왼쪽 팔꿈치",
+ "right_elbow": "오른쪽 팔꿈치",
+ "left_wrist": "왼쪽 손목",
+ "right_wrist": "오른쪽 손목",
+ "left_pinky": "왼쪽 소지",
+ "right_pinky": "오른쪽 소지",
+ "left_index": "왼쪽 검지",
+ "right_index": "오른쪽 검지",
+ "left_thumb": "왼쪽 엄지",
+ "right_thumb": "오른쪽 엄지",
+ "left_hip": "왼쪽 엉덩이",
+ "right_hip": "오른쪽 엉덩이",
+ "left_knee": "왼쪽 무릎",
+ "right_knee": "오른쪽 무릎",
+ "left_ankle": "왼쪽 발목",
+ "right_ankle": "오른쪽 발목",
+ "left_heel": "왼쪽 발꿈치",
+ "right_heel": "오른쪽 발꿈치",
+ "left_foot_index": "왼쪽 발끝 ",
+ "right_foot_index": "오른쪽 발끝"
+ },
+
+ "gesture_list": {
+ "closed_fist": "쥔 손",
+ "open_palm": "편 손",
+ "pointing_up": "가리킨 손",
+ "thumb_down": "엄지 아래로",
+ "thumb_up": "엄지 위로",
+ "victory": "브이 사인",
+ "iloveyou": "사랑해",
+ "none": "알 수 없음"
+ },
"SharePolicy": { "title": "엔트리 작품/게시물 공유 가이드" }
}
diff --git a/types/window.d.ts b/types/window.d.ts
index ae7910976..ce8d012cb 100644
--- a/types/window.d.ts
+++ b/types/window.d.ts
@@ -26,6 +26,7 @@ declare interface Preload {
openHardwarePage(): void;
checkPermission(type: 'microphone' | 'camera'): Promise;
weightsPath: () => string;
+ getEntryjsPath: () => string;
getAppPathWithParams: (...params: string[]) => string;
}
diff --git a/yarn.lock b/yarn.lock
index 13f36d596..409819abe 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3393,9 +3393,9 @@ enquirer@^2.3.5:
dependencies:
crypto-js "^4.0.0"
-"entry-hw@git+https://github.com/entrylabs/entry-hw.git#dist/v1.9.45":
- version "1.9.45"
- resolved "git+https://github.com/entrylabs/entry-hw.git#25249580cb82121e737ca917e8bdfd0cddca5e61"
+"entry-hw@git+https://github.com/entrylabs/entry-hw.git#dist/v1.9.46":
+ version "1.9.46"
+ resolved "git+https://github.com/entrylabs/entry-hw.git#3463e52f5392f465d29c9daf2e74d118b6b04897"
dependencies:
cross-spawn "^7.0.0"
fs-extra "^8.1.0"
@@ -3410,13 +3410,13 @@ enquirer@^2.3.5:
winston "^3.2.1"
winston-daily-rotate-file "^4.4.2"
-"entry-js@git+https://github.com/entrylabs/entryjs.git#dist/offline_v2.1.7.2":
+"entry-js@git+https://github.com/entrylabs/entryjs.git#dist/offline_v2.1.8":
version "0.0.0"
- resolved "git+https://github.com/entrylabs/entryjs.git#9192609c16877c46b9ce39514b38748bf7e2a658"
+ resolved "git+https://github.com/entrylabs/entryjs.git#e376ef4b3bc41a8518163bed4f3d9e70ceb490df"
-"entry-tool@git+https://github.com/entrylabs/entry-tool.git#dist/20221024":
+"entry-tool@git+https://github.com/entrylabs/entry-tool.git#dist/20231026":
version "0.0.0"
- resolved "git+https://github.com/entrylabs/entry-tool.git#ef7562657be5941036c4e3acd824883be3688745"
+ resolved "git+https://github.com/entrylabs/entry-tool.git#9a90d89b87671115a75472d7b1c0865c8bcc6351"
env-paths@^2.2.0:
version "2.2.1"