diff options
Diffstat (limited to 'editor')
30 files changed, 422 insertions, 324 deletions
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp index c5df947d64..b73a27214d 100644 --- a/editor/code_editor.cpp +++ b/editor/code_editor.cpp @@ -1541,7 +1541,7 @@ void CodeTextEditor::_toggle_scripts_pressed() { void CodeTextEditor::_error_pressed(const Ref<InputEvent> &p_event) { Ref<InputEventMouseButton> mb = p_event; if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { - emit_signal("error_pressed"); + goto_error(); } } @@ -1651,7 +1651,6 @@ void CodeTextEditor::_bind_methods() { ADD_SIGNAL(MethodInfo("validate_script")); ADD_SIGNAL(MethodInfo("load_theme_settings")); ADD_SIGNAL(MethodInfo("show_warnings_panel")); - ADD_SIGNAL(MethodInfo("error_pressed")); } void CodeTextEditor::set_code_complete_func(CodeTextEditorCodeCompleteFunc p_code_complete_func, void *p_ud) { diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index bb34a45938..f2f8805aaf 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -360,7 +360,7 @@ void EditorNode::_notification(int p_what) { bool dof_jitter = GLOBAL_GET("rendering/quality/depth_of_field/depth_of_field_use_jitter"); RS::get_singleton()->camera_effects_set_dof_blur_quality(dof_quality, dof_jitter); RS::get_singleton()->environment_set_ssao_quality(RS::EnvironmentSSAOQuality(int(GLOBAL_GET("rendering/quality/ssao/quality"))), GLOBAL_GET("rendering/quality/ssao/half_size")); - RS::get_singleton()->screen_space_roughness_limiter_set_active(GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter"), GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter_curve")); + RS::get_singleton()->screen_space_roughness_limiter_set_active(GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter_enable"), GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter_amount"), GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter_limit")); bool glow_bicubic = int(GLOBAL_GET("rendering/quality/glow/upscale_mode")) > 0; RS::get_singleton()->environment_glow_set_use_bicubic_upscale(glow_bicubic); RS::EnvironmentSSRRoughnessQuality ssr_roughness_quality = RS::EnvironmentSSRRoughnessQuality(int(GLOBAL_GET("rendering/quality/screen_space_reflection/roughness_quality"))); @@ -376,6 +376,12 @@ void EditorNode::_notification(int p_what) { RS::get_singleton()->directional_shadow_quality_set(directional_shadow_quality); float probe_update_speed = GLOBAL_GET("rendering/lightmapper/probe_capture_update_speed"); RS::get_singleton()->lightmap_set_probe_capture_update_speed(probe_update_speed); + RS::EnvironmentSDFGIFramesToConverge frames_to_converge = RS::EnvironmentSDFGIFramesToConverge(int(GLOBAL_GET("rendering/sdfgi/frames_to_converge"))); + RS::get_singleton()->environment_set_sdfgi_frames_to_converge(frames_to_converge); + RS::EnvironmentSDFGIRayCount ray_count = RS::EnvironmentSDFGIRayCount(int(GLOBAL_GET("rendering/sdfgi/probe_ray_count"))); + RS::get_singleton()->environment_set_sdfgi_ray_count(ray_count); + RS::GIProbeQuality gi_probe_quality = RS::GIProbeQuality(int(GLOBAL_GET("rendering/quality/gi_probes/quality"))); + RS::get_singleton()->gi_probe_set_quality(gi_probe_quality); } ResourceImporterTexture::get_singleton()->update_imports(); @@ -3637,22 +3643,14 @@ Ref<Texture2D> EditorNode::get_object_icon(const Object *p_object, const String Ref<Texture2D> EditorNode::get_class_icon(const String &p_class, const String &p_fallback) const { ERR_FAIL_COND_V_MSG(p_class.empty(), nullptr, "Class name cannot be empty."); - if (gui_base->has_theme_icon(p_class, "EditorIcons")) { - return gui_base->get_theme_icon(p_class, "EditorIcons"); - } - if (ScriptServer::is_global_class(p_class)) { - String icon_path = EditorNode::get_editor_data().script_class_get_icon_path(p_class); - Ref<ImageTexture> icon = _load_custom_class_icon(icon_path); - if (icon.is_valid()) { - return icon; - } - - Ref<Script> script = ResourceLoader::load(ScriptServer::get_global_class_path(p_class), "Script"); + Ref<ImageTexture> icon; + Ref<Script> script = EditorNode::get_editor_data().script_class_load_script(p_class); + StringName name = p_class; while (script.is_valid()) { - String current_icon_path; - script->get_language()->get_global_class_name(script->get_path(), nullptr, ¤t_icon_path); + name = EditorNode::get_editor_data().script_class_get_name(script->get_path()); + String current_icon_path = EditorNode::get_editor_data().script_class_get_icon_path(name); icon = _load_custom_class_icon(current_icon_path); if (icon.is_valid()) { return icon; @@ -3661,7 +3659,7 @@ Ref<Texture2D> EditorNode::get_class_icon(const String &p_class, const String &p } if (icon.is_null()) { - icon = gui_base->get_theme_icon(ScriptServer::get_global_class_base(p_class), "EditorIcons"); + icon = gui_base->get_theme_icon(ScriptServer::get_global_class_base(name), "EditorIcons"); } return icon; @@ -3679,6 +3677,10 @@ Ref<Texture2D> EditorNode::get_class_icon(const String &p_class, const String &p } } + if (gui_base->has_theme_icon(p_class, "EditorIcons")) { + return gui_base->get_theme_icon(p_class, "EditorIcons"); + } + if (p_fallback.length() && gui_base->has_theme_icon(p_fallback, "EditorIcons")) { return gui_base->get_theme_icon(p_fallback, "EditorIcons"); } @@ -4157,7 +4159,6 @@ void EditorNode::_update_dock_slots_visibility() { } right_hsplit->hide(); - bottom_panel->hide(); } else { for (int i = 0; i < DOCK_SLOT_MAX; i++) { int tabs_visible = 0; @@ -4187,7 +4188,6 @@ void EditorNode::_update_dock_slots_visibility() { dock_slot[i]->set_current_tab(0); } } - bottom_panel->show(); if (right_l_vsplit->is_visible() || right_r_vsplit->is_visible()) { right_hsplit->show(); @@ -6488,6 +6488,7 @@ EditorNode::EditorNode() { } resource_preview->add_preview_generator(Ref<EditorTexturePreviewPlugin>(memnew(EditorTexturePreviewPlugin))); + resource_preview->add_preview_generator(Ref<EditorImagePreviewPlugin>(memnew(EditorImagePreviewPlugin))); resource_preview->add_preview_generator(Ref<EditorPackedScenePreviewPlugin>(memnew(EditorPackedScenePreviewPlugin))); resource_preview->add_preview_generator(Ref<EditorMaterialPreviewPlugin>(memnew(EditorMaterialPreviewPlugin))); resource_preview->add_preview_generator(Ref<EditorScriptPreviewPlugin>(memnew(EditorScriptPreviewPlugin))); diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index 5f59e6e70a..a93763810b 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -570,17 +570,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("focus", "PopupMenu", style_menu); theme->set_stylebox("disabled", "PopupMenu", style_menu); - theme->set_stylebox("normal", "Button", style_menu); - theme->set_stylebox("hover", "Button", style_menu); - theme->set_stylebox("pressed", "Button", style_menu); - theme->set_stylebox("focus", "Button", style_menu); - theme->set_stylebox("disabled", "Button", style_menu); - theme->set_color("font_color", "MenuButton", font_color); theme->set_color("font_color_hover", "MenuButton", font_color_hl); - theme->set_color("font_color", "Button", font_color); - theme->set_color("font_color_hover", "Button", font_color_hl); - theme->set_color("font_color_pressed", "Button", accent_color); theme->set_stylebox("MenuHover", "EditorStyles", style_menu_hover_border); diff --git a/editor/plugins/abstract_polygon_2d_editor.cpp b/editor/plugins/abstract_polygon_2d_editor.cpp index e99ffe2b83..49e67f3605 100644 --- a/editor/plugins/abstract_polygon_2d_editor.cpp +++ b/editor/plugins/abstract_polygon_2d_editor.cpp @@ -369,7 +369,7 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) } else { const real_t grab_threshold = EDITOR_GET("editors/poly_editor/point_grab_radius"); - if (!_is_line() && wip.size() > 1 && xform.xform(wip[0]).distance_to(gpoint) < grab_threshold) { + if (!_is_line() && wip.size() > 1 && xform.xform(wip[0]).distance_to(xform.xform(cpoint)) < grab_threshold) { //wip closed _wip_close(); diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index bf698a5ceb..3af0b0d4e1 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -1326,6 +1326,18 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event, bo Ref<InputEventPanGesture> pan_gesture = p_event; if (pan_gesture.is_valid() && !p_already_accepted) { + // If control key pressed, then zoom instead of pan + if (pan_gesture->get_control()) { + const float factor = pan_gesture->get_delta().y; + float new_zoom = _get_next_zoom_value(-1); + + if (factor != 1.f) { + new_zoom = zoom * ((new_zoom / zoom - 1.f) * factor + 1.f); + } + _zoom_on_position(new_zoom, pan_gesture->get_position()); + return true; + } + // Pan gesture const Vector2 delta = (int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom) * pan_gesture->get_delta(); view_offset.x += delta.x; @@ -6137,6 +6149,11 @@ bool CanvasItemEditorViewport::_create_instance(Node *parent, String &path, cons Vector2 target_pos = canvas_item_editor->get_canvas_transform().affine_inverse().xform(p_point); target_pos = canvas_item_editor->snap_point(target_pos); target_pos = parent_ci->get_global_transform_with_canvas().affine_inverse().xform(target_pos); + // Preserve instance position of the original scene. + CanvasItem *instance_ci = Object::cast_to<CanvasItem>(instanced_scene); + if (instance_ci) { + target_pos += instance_ci->_edit_get_position(); + } editor_data->get_undo_redo().add_do_method(instanced_scene, "set_position", target_pos); } diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index 961ae10f46..b51ea9e1c6 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -487,6 +487,10 @@ ObjectID Node3DEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, b Vector3 pos = _get_ray_pos(p_pos); Vector2 shrinked_pos = p_pos / subviewport_container->get_stretch_shrink(); + if (viewport->get_debug_draw() == Viewport::DEBUG_DRAW_SDFGI_PROBES) { + RS::get_singleton()->sdfgi_set_debug_probe_select(pos, ray); + } + Vector<ObjectID> instances = RenderingServer::get_singleton()->instances_cull_ray(pos, ray, get_tree()->get_root()->get_world_3d()->get_scenario()); Set<Ref<EditorNode3DGizmo>> found_gizmos; @@ -2984,7 +2988,9 @@ void Node3DEditorViewport::_menu_option(int p_option) { case VIEW_DISPLAY_DEBUG_SSAO: case VIEW_DISPLAY_DEBUG_PSSM_SPLITS: case VIEW_DISPLAY_DEBUG_DECAL_ATLAS: - case VIEW_DISPLAY_DEBUG_ROUGHNESS_LIMITER: { + case VIEW_DISPLAY_DEBUG_SDFGI: + case VIEW_DISPLAY_DEBUG_SDFGI_PROBES: + case VIEW_DISPLAY_DEBUG_GI_BUFFER: { static const int display_options[] = { VIEW_DISPLAY_NORMAL, VIEW_DISPLAY_WIREFRAME, @@ -3000,9 +3006,11 @@ void Node3DEditorViewport::_menu_option(int p_option) { VIEW_DISPLAY_DEBUG_GIPROBE_EMISSION, VIEW_DISPLAY_DEBUG_SCENE_LUMINANCE, VIEW_DISPLAY_DEBUG_SSAO, - VIEW_DISPLAY_DEBUG_ROUGHNESS_LIMITER, + VIEW_DISPLAY_DEBUG_GI_BUFFER, VIEW_DISPLAY_DEBUG_PSSM_SPLITS, VIEW_DISPLAY_DEBUG_DECAL_ATLAS, + VIEW_DISPLAY_DEBUG_SDFGI, + VIEW_DISPLAY_DEBUG_SDFGI_PROBES, VIEW_MAX }; static const Viewport::DebugDraw debug_draw_modes[] = { @@ -3020,9 +3028,11 @@ void Node3DEditorViewport::_menu_option(int p_option) { Viewport::DEBUG_DRAW_GI_PROBE_EMISSION, Viewport::DEBUG_DRAW_SCENE_LUMINANCE, Viewport::DEBUG_DRAW_SSAO, - Viewport::DEBUG_DRAW_ROUGHNESS_LIMITER, + Viewport::DEBUG_DRAW_GI_BUFFER, Viewport::DEBUG_DRAW_PSSM_SPLITS, Viewport::DEBUG_DRAW_DECAL_ATLAS, + Viewport::DEBUG_DRAW_SDFGI, + Viewport::DEBUG_DRAW_SDFGI_PROBES, }; int idx = 0; @@ -3898,11 +3908,14 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, Edito display_submenu->add_radio_check_item(TTR("GIProbe Albedo"), VIEW_DISPLAY_DEBUG_GIPROBE_ALBEDO); display_submenu->add_radio_check_item(TTR("GIProbe Emission"), VIEW_DISPLAY_DEBUG_GIPROBE_EMISSION); display_submenu->add_separator(); + display_submenu->add_radio_check_item(TTR("SDFGI Cascades"), VIEW_DISPLAY_DEBUG_SDFGI); + display_submenu->add_radio_check_item(TTR("SDFGI Probes"), VIEW_DISPLAY_DEBUG_SDFGI_PROBES); + display_submenu->add_separator(); display_submenu->add_radio_check_item(TTR("Scene Luminance"), VIEW_DISPLAY_DEBUG_SCENE_LUMINANCE); display_submenu->add_separator(); display_submenu->add_radio_check_item(TTR("SSAO"), VIEW_DISPLAY_DEBUG_SSAO); display_submenu->add_separator(); - display_submenu->add_radio_check_item(TTR("Roughness Limiter"), VIEW_DISPLAY_DEBUG_ROUGHNESS_LIMITER); + display_submenu->add_radio_check_item(TTR("GI Buffer"), VIEW_DISPLAY_DEBUG_GI_BUFFER); display_submenu->set_name("display_advanced"); view_menu->get_popup()->add_submenu_item(TTR("Display Advanced..."), "display_advanced", VIEW_DISPLAY_ADVANCED); view_menu->get_popup()->add_separator(); @@ -4948,7 +4961,7 @@ void Node3DEditor::_menu_item_pressed(int p_option) { for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { Node3D *spatial = Object::cast_to<Node3D>(E->get()); - if (!spatial || !spatial->is_visible_in_tree()) { + if (!spatial || !spatial->is_inside_tree()) { continue; } @@ -4962,8 +4975,8 @@ void Node3DEditor::_menu_item_pressed(int p_option) { undo_redo->add_undo_method(this, "emit_signal", "item_lock_status_changed"); } - undo_redo->add_do_method(this, "_refresh_menu_icons", Variant()); - undo_redo->add_undo_method(this, "_refresh_menu_icons", Variant()); + undo_redo->add_do_method(this, "_refresh_menu_icons"); + undo_redo->add_undo_method(this, "_refresh_menu_icons"); undo_redo->commit_action(); } break; case MENU_UNLOCK_SELECTED: { @@ -4973,7 +4986,7 @@ void Node3DEditor::_menu_item_pressed(int p_option) { for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { Node3D *spatial = Object::cast_to<Node3D>(E->get()); - if (!spatial || !spatial->is_visible_in_tree()) { + if (!spatial || !spatial->is_inside_tree()) { continue; } @@ -4987,8 +5000,8 @@ void Node3DEditor::_menu_item_pressed(int p_option) { undo_redo->add_undo_method(this, "emit_signal", "item_lock_status_changed"); } - undo_redo->add_do_method(this, "_refresh_menu_icons", Variant()); - undo_redo->add_undo_method(this, "_refresh_menu_icons", Variant()); + undo_redo->add_do_method(this, "_refresh_menu_icons"); + undo_redo->add_undo_method(this, "_refresh_menu_icons"); undo_redo->commit_action(); } break; case MENU_GROUP_SELECTED: { @@ -4998,7 +5011,7 @@ void Node3DEditor::_menu_item_pressed(int p_option) { for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { Node3D *spatial = Object::cast_to<Node3D>(E->get()); - if (!spatial || !spatial->is_visible_in_tree()) { + if (!spatial || !spatial->is_inside_tree()) { continue; } @@ -5012,8 +5025,8 @@ void Node3DEditor::_menu_item_pressed(int p_option) { undo_redo->add_undo_method(this, "emit_signal", "item_group_status_changed"); } - undo_redo->add_do_method(this, "_refresh_menu_icons", Variant()); - undo_redo->add_undo_method(this, "_refresh_menu_icons", Variant()); + undo_redo->add_do_method(this, "_refresh_menu_icons"); + undo_redo->add_undo_method(this, "_refresh_menu_icons"); undo_redo->commit_action(); } break; case MENU_UNGROUP_SELECTED: { @@ -5022,7 +5035,7 @@ void Node3DEditor::_menu_item_pressed(int p_option) { for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { Node3D *spatial = Object::cast_to<Node3D>(E->get()); - if (!spatial || !spatial->is_visible_in_tree()) { + if (!spatial || !spatial->is_inside_tree()) { continue; } @@ -5036,8 +5049,8 @@ void Node3DEditor::_menu_item_pressed(int p_option) { undo_redo->add_undo_method(this, "emit_signal", "item_group_status_changed"); } - undo_redo->add_do_method(this, "_refresh_menu_icons", Variant()); - undo_redo->add_undo_method(this, "_refresh_menu_icons", Variant()); + undo_redo->add_do_method(this, "_refresh_menu_icons"); + undo_redo->add_undo_method(this, "_refresh_menu_icons"); undo_redo->commit_action(); } break; } @@ -5979,6 +5992,7 @@ void Node3DEditor::_bind_methods() { ClassDB::bind_method("_unhandled_key_input", &Node3DEditor::_unhandled_key_input); ClassDB::bind_method("_get_editor_data", &Node3DEditor::_get_editor_data); ClassDB::bind_method("_request_gizmo", &Node3DEditor::_request_gizmo); + ClassDB::bind_method("_refresh_menu_icons", &Node3DEditor::_refresh_menu_icons); ADD_SIGNAL(MethodInfo("transform_key_request")); ADD_SIGNAL(MethodInfo("item_lock_status_changed")); @@ -6086,24 +6100,28 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) { tool_button[TOOL_LOCK_SELECTED] = memnew(Button); hbc_menu->add_child(tool_button[TOOL_LOCK_SELECTED]); + tool_button[TOOL_LOCK_SELECTED]->set_flat(true); button_binds.write[0] = MENU_LOCK_SELECTED; tool_button[TOOL_LOCK_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds); tool_button[TOOL_LOCK_SELECTED]->set_tooltip(TTR("Lock the selected object in place (can't be moved).")); tool_button[TOOL_UNLOCK_SELECTED] = memnew(Button); hbc_menu->add_child(tool_button[TOOL_UNLOCK_SELECTED]); + tool_button[TOOL_UNLOCK_SELECTED]->set_flat(true); button_binds.write[0] = MENU_UNLOCK_SELECTED; tool_button[TOOL_UNLOCK_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds); tool_button[TOOL_UNLOCK_SELECTED]->set_tooltip(TTR("Unlock the selected object (can be moved).")); tool_button[TOOL_GROUP_SELECTED] = memnew(Button); hbc_menu->add_child(tool_button[TOOL_GROUP_SELECTED]); + tool_button[TOOL_GROUP_SELECTED]->set_flat(true); button_binds.write[0] = MENU_GROUP_SELECTED; tool_button[TOOL_GROUP_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds); tool_button[TOOL_GROUP_SELECTED]->set_tooltip(TTR("Makes sure the object's children are not selectable.")); tool_button[TOOL_UNGROUP_SELECTED] = memnew(Button); hbc_menu->add_child(tool_button[TOOL_UNGROUP_SELECTED]); + tool_button[TOOL_UNGROUP_SELECTED]->set_flat(true); button_binds.write[0] = MENU_UNGROUP_SELECTED; tool_button[TOOL_UNGROUP_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds); tool_button[TOOL_UNGROUP_SELECTED]->set_tooltip(TTR("Restores the object's children's ability to be selected.")); diff --git a/editor/plugins/node_3d_editor_plugin.h b/editor/plugins/node_3d_editor_plugin.h index 2fe1938f28..a40de78795 100644 --- a/editor/plugins/node_3d_editor_plugin.h +++ b/editor/plugins/node_3d_editor_plugin.h @@ -214,9 +214,11 @@ class Node3DEditorViewport : public Control { VIEW_DISPLAY_DEBUG_GIPROBE_EMISSION, VIEW_DISPLAY_DEBUG_SCENE_LUMINANCE, VIEW_DISPLAY_DEBUG_SSAO, - VIEW_DISPLAY_DEBUG_ROUGHNESS_LIMITER, VIEW_DISPLAY_DEBUG_PSSM_SPLITS, VIEW_DISPLAY_DEBUG_DECAL_ATLAS, + VIEW_DISPLAY_DEBUG_SDFGI, + VIEW_DISPLAY_DEBUG_SDFGI_PROBES, + VIEW_DISPLAY_DEBUG_GI_BUFFER, VIEW_LOCK_ROTATION, VIEW_CINEMATIC_PREVIEW, VIEW_AUTO_ORTHOGONAL, diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp index 1d273f74f0..633863041f 100644 --- a/editor/plugins/polygon_2d_editor_plugin.cpp +++ b/editor/plugins/polygon_2d_editor_plugin.cpp @@ -485,7 +485,8 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) { } else { Vector2 tuv = mtx.affine_inverse().xform(snap_point(Vector2(mb->get_position().x, mb->get_position().y))); - if (points_prev.size() > 2 && tuv.distance_to(points_prev[0]) < 8) { + // Close the polygon if selected point is near start. Threshold for closing scaled by zoom level + if (points_prev.size() > 2 && tuv.distance_to(points_prev[0]) < (8 / uv_draw_zoom)) { undo_redo->create_action(TTR("Create Polygon & UV")); undo_redo->add_do_method(node, "set_uv", node->get_uv()); undo_redo->add_undo_method(node, "set_uv", uv_create_uv_prev); diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 3f17bf57c4..96079d5418 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -3050,7 +3050,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { file_menu->get_popup()->add_separator(); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save", TTR("Save"), KEY_MASK_ALT | KEY_MASK_CMD | KEY_S), FILE_SAVE); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save_as", TTR("Save As...")), FILE_SAVE_AS); - file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save_all", TTR("Save All"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_MASK_ALT | KEY_S), FILE_SAVE_ALL); + file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save_all", TTR("Save All"), KEY_MASK_SHIFT | KEY_MASK_ALT | KEY_S), FILE_SAVE_ALL); file_menu->get_popup()->add_separator(); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/reload_script_soft", TTR("Soft Reload Script"), KEY_MASK_CMD | KEY_MASK_ALT | KEY_R), FILE_TOOL_RELOAD_SOFT); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/copy_path", TTR("Copy Script Path")), FILE_COPY_PATH); diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index 4b79d8c344..1c9dadc0dd 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -383,10 +383,6 @@ void ScriptTextEditor::_show_warnings_panel(bool p_show) { warnings_panel->set_visible(p_show); } -void ScriptTextEditor::_error_pressed() { - code_editor->goto_error(); -} - void ScriptTextEditor::_warning_clicked(Variant p_line) { if (p_line.get_type() == Variant::INT) { code_editor->get_text_edit()->cursor_set_line(p_line.operator int64_t()); @@ -1759,7 +1755,6 @@ ScriptTextEditor::ScriptTextEditor() { warnings_panel->set_focus_mode(FOCUS_CLICK); warnings_panel->hide(); - code_editor->connect("error_pressed", callable_mp(this, &ScriptTextEditor::_error_pressed)); code_editor->connect("show_warnings_panel", callable_mp(this, &ScriptTextEditor::_show_warnings_panel)); warnings_panel->connect("meta_clicked", callable_mp(this, &ScriptTextEditor::_warning_clicked)); diff --git a/editor/plugins/script_text_editor.h b/editor/plugins/script_text_editor.h index adcd0218bc..8fa380b64d 100644 --- a/editor/plugins/script_text_editor.h +++ b/editor/plugins/script_text_editor.h @@ -159,7 +159,6 @@ protected: void _load_theme_settings(); void _set_theme_for_script(); void _show_warnings_panel(bool p_show); - void _error_pressed(); void _warning_clicked(Variant p_line); void _notification(int p_what); diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp index 158f9e8587..307a8a9001 100644 --- a/editor/plugins/tile_map_editor_plugin.cpp +++ b/editor/plugins/tile_map_editor_plugin.cpp @@ -64,6 +64,8 @@ void TileMapEditor::_notification(int p_what) { } paint_button->set_icon(get_theme_icon("Edit", "EditorIcons")); + line_button->set_icon(get_theme_icon("CurveLinear", "EditorIcons")); + rectangle_button->set_icon(get_theme_icon("RectangleShape2D", "EditorIcons")); bucket_fill_button->set_icon(get_theme_icon("Bucket", "EditorIcons")); picker_button->set_icon(get_theme_icon("ColorPick", "EditorIcons")); select_button->set_icon(get_theme_icon("ActionCopy", "EditorIcons")); @@ -91,9 +93,10 @@ void TileMapEditor::_notification(int p_what) { } void TileMapEditor::_update_button_tool() { - Button *tb[4] = { paint_button, bucket_fill_button, picker_button, select_button }; + Button *tb[6] = { paint_button, line_button, rectangle_button, bucket_fill_button, picker_button, select_button }; + // Unpress all buttons - for (int i = 0; i < 4; i++) { + for (int i = 0; i < 6; i++) { tb[i]->set_pressed(false); } @@ -103,6 +106,12 @@ void TileMapEditor::_update_button_tool() { case TOOL_PAINTING: { paint_button->set_pressed(true); } break; + case TOOL_LINE_PAINT: { + line_button->set_pressed(true); + } break; + case TOOL_RECTANGLE_PAINT: { + rectangle_button->set_pressed(true); + } break; case TOOL_BUCKET: { bucket_fill_button->set_pressed(true); } break; @@ -993,19 +1002,8 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) { } if (tool == TOOL_NONE) { - if (mb->get_shift()) { - if (mb->get_command()) { - tool = TOOL_RECTANGLE_PAINT; - } else { - tool = TOOL_LINE_PAINT; - } - - selection_active = false; - rectangle_begin = over_tile; - - _update_button_tool(); - return true; - } + tool = TOOL_PAINTING; + _update_button_tool(); if (mb->get_command()) { tool = TOOL_PICKING; @@ -1014,12 +1012,14 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) { return true; } - - tool = TOOL_PAINTING; - _update_button_tool(); } - if (tool == TOOL_PAINTING) { + if (tool == TOOL_LINE_PAINT || tool == TOOL_RECTANGLE_PAINT) { + selection_active = false; + rectangle_begin = over_tile; + + mouse_down = true; + } else if (tool == TOOL_PAINTING) { Vector<int> ids = get_selected_tiles(); if (ids.size() > 0 && ids[0] != TileMap::INVALID_CELL) { @@ -1050,6 +1050,10 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) { paint_undo.clear(); } } else if (tool == TOOL_LINE_PAINT) { + if (!mouse_down) { + return true; + } + Vector<int> ids = get_selected_tiles(); if (ids.size() > 0 && ids[0] != TileMap::INVALID_CELL) { @@ -1062,8 +1066,17 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) { paint_undo.clear(); CanvasItemEditor::get_singleton()->update_viewport(); + + mouse_down = false; + return true; } + + mouse_down = false; } else if (tool == TOOL_RECTANGLE_PAINT) { + if (!mouse_down) { + return true; + } + Vector<int> ids = get_selected_tiles(); if (ids.size() > 0 && ids[0] != TileMap::INVALID_CELL) { @@ -1076,7 +1089,12 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) { _finish_undo(); CanvasItemEditor::get_singleton()->update_viewport(); + + mouse_down = false; + return true; } + + mouse_down = false; } else if (tool == TOOL_PASTING) { Point2 ofs = over_tile - rectangle.position; Vector<int> ids; @@ -1141,6 +1159,28 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) { if (tool == TOOL_PASTING) { tool = TOOL_NONE; + + CanvasItemEditor::get_singleton()->update_viewport(); + + _update_button_tool(); + return true; + } + + if (tool == TOOL_LINE_PAINT) { + tool = TOOL_LINE_ERASE; + mouse_down = true; + rectangle_begin = over_tile; + + CanvasItemEditor::get_singleton()->update_viewport(); + + _update_button_tool(); + return true; + } + + if (tool == TOOL_RECTANGLE_PAINT) { + tool = TOOL_RECTANGLE_ERASE; + mouse_down = true; + rectangle_begin = over_tile; copydata.clear(); CanvasItemEditor::get_singleton()->update_viewport(); @@ -1155,39 +1195,74 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) { Point2 local = node->world_to_map(xform_inv.xform(mb->get_position())); _start_undo(TTR("Erase TileMap")); + tool = TOOL_ERASING; + _set_cell(local, invalid_cell); - if (mb->get_shift()) { - if (mb->get_command()) { - tool = TOOL_RECTANGLE_ERASE; - } else { - tool = TOOL_LINE_ERASE; + _update_button_tool(); + return true; + } + + } else { + if (tool == TOOL_LINE_ERASE) { + if (!mouse_down) { + return true; + } + + tool = TOOL_LINE_PAINT; + _update_button_tool(); + + Vector<int> ids = get_selected_tiles(); + + if (ids.size() > 0 && ids[0] != TileMap::INVALID_CELL) { + _start_undo(TTR("Line Erase")); + for (Map<Point2i, CellOp>::Element *E = paint_undo.front(); E; E = E->next()) { + _set_cell(E->key(), invalid_cell, flip_h, flip_v, transpose); } + _finish_undo(); + paint_undo.clear(); - selection_active = false; - rectangle_begin = local; - } else { - tool = TOOL_ERASING; + CanvasItemEditor::get_singleton()->update_viewport(); - _set_cell(local, invalid_cell); + mouse_down = false; + return true; } + mouse_down = false; + } else if (tool == TOOL_RECTANGLE_ERASE) { + if (!mouse_down) { + return true; + } + + tool = TOOL_RECTANGLE_PAINT; _update_button_tool(); - return true; - } - } else { - if (tool == TOOL_ERASING || tool == TOOL_RECTANGLE_ERASE || tool == TOOL_LINE_ERASE) { - _finish_undo(); + Vector<int> ids = get_selected_tiles(); + + if (ids.size() > 0 && ids[0] != TileMap::INVALID_CELL) { + _start_undo(TTR("Rectangle Erase")); + for (int i = rectangle.position.y; i <= rectangle.position.y + rectangle.size.y; i++) { + for (int j = rectangle.position.x; j <= rectangle.position.x + rectangle.size.x; j++) { + _set_cell(Point2i(j, i), invalid_cell, flip_h, flip_v, transpose); + } + } + _finish_undo(); + paint_undo.clear(); - if (tool == TOOL_RECTANGLE_ERASE || tool == TOOL_LINE_ERASE) { CanvasItemEditor::get_singleton()->update_viewport(); + + mouse_down = false; + return true; } - tool = TOOL_NONE; + mouse_down = false; + tool = TOOL_RECTANGLE_PAINT; + } + if (tool == TOOL_ERASING) { + tool = TOOL_NONE; _update_button_tool(); - return true; + return true; } else if (tool == TOOL_BUCKET) { Vector<int> ids; ids.push_back(node->get_cell(over_tile.x, over_tile.y)); @@ -1278,6 +1353,10 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) { Vector<int> tmp_cell; bool erasing = (tool == TOOL_LINE_ERASE); + if (!mouse_down) { + return true; + } + tmp_cell.push_back(0); if (erasing && paint_undo.size()) { for (Map<Point2i, CellOp>::Element *E = paint_undo.front(); E; E = E->next()) { @@ -1308,7 +1387,20 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) { Vector<int> tmp_cell; tmp_cell.push_back(0); - _select(rectangle_begin, over_tile); + Point2i end_tile = over_tile; + + if (!mouse_down) { + return true; + } + + if (mm->get_shift()) { + int size = fmax(ABS(end_tile.x - rectangle_begin.x), ABS(end_tile.y - rectangle_begin.y)); + int xDirection = MAX(MIN(end_tile.x - rectangle_begin.x, 1), -1); + int yDirection = MAX(MIN(end_tile.y - rectangle_begin.y, 1), -1); + end_tile = rectangle_begin + Point2i(xDirection * size, yDirection * size); + } + + _select(rectangle_begin, end_tile); if (tool == TOOL_RECTANGLE_ERASE) { if (paint_undo.size()) { @@ -1379,6 +1471,20 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) { _update_button_tool(); return true; } + if (ED_IS_SHORTCUT("tile_map_editor/line_fill", p_event)) { + tool = TOOL_LINE_PAINT; + CanvasItemEditor::get_singleton()->update_viewport(); + + _update_button_tool(); + return true; + } + if (ED_IS_SHORTCUT("tile_map_editor/rectangle_fill", p_event)) { + tool = TOOL_RECTANGLE_PAINT; + CanvasItemEditor::get_singleton()->update_viewport(); + + _update_button_tool(); + return true; + } if (ED_IS_SHORTCUT("tile_map_editor/bucket_fill", p_event)) { tool = TOOL_BUCKET; CanvasItemEditor::get_singleton()->update_viewport(); @@ -1637,6 +1743,10 @@ void TileMapEditor::forward_canvas_draw_over_viewport(Control *p_overlay) { } if (tool == TOOL_LINE_PAINT) { + if (!mouse_down) { + return; + } + if (paint_undo.empty()) { return; } @@ -1652,6 +1762,10 @@ void TileMapEditor::forward_canvas_draw_over_viewport(Control *p_overlay) { } } else if (tool == TOOL_RECTANGLE_PAINT) { + if (!mouse_down) { + return; + } + Vector<int> ids = get_selected_tiles(); if (ids.size() == 1 && ids[0] == TileMap::INVALID_CELL) { @@ -1865,6 +1979,7 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { tool = TOOL_NONE; selection_active = false; mouse_over = false; + mouse_down = false; flip_h = false; flip_v = false; @@ -1962,11 +2077,27 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { paint_button = memnew(Button); paint_button->set_flat(true); paint_button->set_shortcut(ED_SHORTCUT("tile_map_editor/paint_tile", TTR("Paint Tile"), KEY_P)); - paint_button->set_tooltip(TTR("Shift+LMB: Line Draw\nShift+Ctrl+LMB: Rectangle Paint")); + paint_button->set_tooltip(TTR("RMB: Erase")); paint_button->connect("pressed", callable_mp(this, &TileMapEditor::_button_tool_select), make_binds(TOOL_NONE)); paint_button->set_toggle_mode(true); toolbar->add_child(paint_button); + line_button = memnew(Button); + line_button->set_flat(true); + line_button->set_shortcut(ED_SHORTCUT("tile_map_editor/line_fill", TTR("Line Fill"), KEY_L)); + line_button->set_tooltip(TTR("RMB: Erase")); + line_button->connect("pressed", callable_mp(this, &TileMapEditor::_button_tool_select), make_binds(TOOL_LINE_PAINT)); + line_button->set_toggle_mode(true); + toolbar->add_child(line_button); + + rectangle_button = memnew(Button); + rectangle_button->set_flat(true); + rectangle_button->set_shortcut(ED_SHORTCUT("tile_map_editor/rectangle_fill", TTR("Rectangle Fill"), KEY_O)); + rectangle_button->set_tooltip(TTR("Shift+LMB: Keep 1:1 proporsions\nRMB: Erase")); + rectangle_button->connect("pressed", callable_mp(this, &TileMapEditor::_button_tool_select), make_binds(TOOL_RECTANGLE_PAINT)); + rectangle_button->set_toggle_mode(true); + toolbar->add_child(rectangle_button); + bucket_fill_button = memnew(Button); bucket_fill_button->set_flat(true); bucket_fill_button->set_shortcut(ED_SHORTCUT("tile_map_editor/bucket_fill", TTR("Bucket Fill"), KEY_B)); diff --git a/editor/plugins/tile_map_editor_plugin.h b/editor/plugins/tile_map_editor_plugin.h index 1d2ecdb61f..135a9bd5a5 100644 --- a/editor/plugins/tile_map_editor_plugin.h +++ b/editor/plugins/tile_map_editor_plugin.h @@ -88,6 +88,8 @@ class TileMapEditor : public VBoxContainer { MenuButton *options; Button *paint_button; + Button *line_button; + Button *rectangle_button; Button *bucket_fill_button; Button *picker_button; Button *select_button; @@ -106,6 +108,7 @@ class TileMapEditor : public VBoxContainer { bool selection_active; bool mouse_over; + bool mouse_down; bool flip_h; bool flip_v; diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp index bcef29dfa6..4719fcaae4 100644 --- a/editor/quick_open.cpp +++ b/editor/quick_open.cpp @@ -32,21 +32,18 @@ #include "core/os/keyboard.h" -void EditorQuickOpen::popup_dialog(const StringName &p_base, bool p_enable_multi, bool p_add_dirs, bool p_dontclear) { - add_directories = p_add_dirs; - popup_centered_ratio(0.6); +void EditorQuickOpen::popup_dialog(const StringName &p_base, bool p_enable_multi, bool p_dontclear) { + base_type = p_base; + search_options->set_select_mode(p_enable_multi ? Tree::SELECT_MULTI : Tree::SELECT_SINGLE); + popup_centered_ratio(0.4); + if (p_dontclear) { search_box->select_all(); } else { search_box->clear(); } - if (p_enable_multi) { - search_options->set_select_mode(Tree::SELECT_MULTI); - } else { - search_options->set_select_mode(Tree::SELECT_SINGLE); - } + search_box->grab_focus(); - base_type = p_base; _update_search(); } @@ -101,7 +98,6 @@ void EditorQuickOpen::_sbox_input(const Ref<InputEvent> &p_ie) { } current->select(0); - } break; } } @@ -124,61 +120,25 @@ float EditorQuickOpen::_path_cmp(String search, String path) const { } void EditorQuickOpen::_parse_fs(EditorFileSystemDirectory *efsd, Vector<Pair<String, Ref<Texture2D>>> &list) { - if (!add_directories) { - for (int i = 0; i < efsd->get_subdir_count(); i++) { - _parse_fs(efsd->get_subdir(i), list); - } + for (int i = 0; i < efsd->get_subdir_count(); i++) { + _parse_fs(efsd->get_subdir(i), list); } String search_text = search_box->get_text(); - if (add_directories) { - String path = efsd->get_path(); - if (!path.ends_with("/")) { - path += "/"; - } - if (path != "res://") { - path = path.substr(6, path.length()); - if (search_text.is_subsequence_ofi(path)) { - Pair<String, Ref<Texture2D>> pair; - pair.first = path; - pair.second = search_options->get_theme_icon("folder", "FileDialog"); - - if (search_text != String() && list.size() > 0) { - float this_sim = _path_cmp(search_text, path); - float other_sim = _path_cmp(list[0].first, path); - int pos = 1; - - while (pos < list.size() && this_sim <= other_sim) { - other_sim = _path_cmp(list[pos++].first, path); - } - - pos = this_sim >= other_sim ? pos - 1 : pos; - list.insert(pos, pair); - - } else { - list.push_back(pair); - } - } - } - } for (int i = 0; i < efsd->get_file_count(); i++) { String file = efsd->get_file_path(i); file = file.substr(6, file.length()); - if (ClassDB::is_parent_class(efsd->get_file_type(i), base_type) && (search_text.is_subsequence_ofi(file))) { + StringName file_type = efsd->get_file_type(i); + if (ClassDB::is_parent_class(file_type, base_type) && search_text.is_subsequence_ofi(file)) { Pair<String, Ref<Texture2D>> pair; pair.first = file; - pair.second = search_options->get_theme_icon((search_options->has_theme_icon(efsd->get_file_type(i), ei) ? efsd->get_file_type(i) : ot), ei); + StringName icon_name = search_options->has_theme_icon(file_type, ei) ? file_type : ot; + pair.second = search_options->get_theme_icon(icon_name, ei); list.push_back(pair); } } - - if (add_directories) { - for (int i = 0; i < efsd->get_subdir_count(); i++) { - _parse_fs(efsd->get_subdir(i), list); - } - } } Vector<Pair<String, Ref<Texture2D>>> EditorQuickOpen::_sort_fs(Vector<Pair<String, Ref<Texture2D>>> &list) { @@ -250,7 +210,7 @@ void EditorQuickOpen::_confirmed() { } void EditorQuickOpen::_theme_changed() { - search_box->set_right_icon(search_options->get_theme_icon("Search", "EditorIcons")); + search_box->set_right_icon(search_options->get_theme_icon("Search", ei)); } void EditorQuickOpen::_notification(int p_what) { @@ -277,23 +237,25 @@ void EditorQuickOpen::_bind_methods() { EditorQuickOpen::EditorQuickOpen() { VBoxContainer *vbc = memnew(VBoxContainer); vbc->connect("theme_changed", callable_mp(this, &EditorQuickOpen::_theme_changed)); - add_child(vbc); + search_box = memnew(LineEdit); - vbc->add_margin_child(TTR("Search:"), search_box); search_box->connect("text_changed", callable_mp(this, &EditorQuickOpen::_text_changed)); search_box->connect("gui_input", callable_mp(this, &EditorQuickOpen::_sbox_input)); + vbc->add_margin_child(TTR("Search:"), search_box); + search_options = memnew(Tree); + search_options->connect("item_activated", callable_mp(this, &EditorQuickOpen::_confirmed)); + search_options->set_hide_root(true); + search_options->set_hide_folding(true); + search_options->add_theme_constant_override("draw_guides", 1); vbc->add_margin_child(TTR("Matches:"), search_options, true); + get_ok()->set_text(TTR("Open")); get_ok()->set_disabled(true); register_text_enter(search_box); set_hide_on_ok(false); - search_options->connect("item_activated", callable_mp(this, &EditorQuickOpen::_confirmed)); - search_options->set_hide_root(true); - search_options->set_hide_folding(true); - search_options->add_theme_constant_override("draw_guides", 1); + ei = "EditorIcons"; ot = "Object"; - add_directories = false; } diff --git a/editor/quick_open.h b/editor/quick_open.h index e446ed6823..8670bb1ade 100644 --- a/editor/quick_open.h +++ b/editor/quick_open.h @@ -35,6 +35,7 @@ #include "editor_file_system.h" #include "scene/gui/dialogs.h" #include "scene/gui/tree.h" + class EditorQuickOpen : public ConfirmationDialog { GDCLASS(EditorQuickOpen, ConfirmationDialog); @@ -43,7 +44,6 @@ class EditorQuickOpen : public ConfirmationDialog { StringName base_type; StringName ei; StringName ot; - bool add_directories; void _update_search(); @@ -67,7 +67,7 @@ public: String get_selected() const; Vector<String> get_selected_files() const; - void popup_dialog(const StringName &p_base, bool p_enable_multi = false, bool p_add_dirs = false, bool p_dontclear = false); + void popup_dialog(const StringName &p_base, bool p_enable_multi = false, bool p_dontclear = false); EditorQuickOpen(); }; diff --git a/editor/translations/ar.po b/editor/translations/ar.po index ffab95cc8b..5a0b6d1e17 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -45,8 +45,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-09 02:02+0000\n" -"Last-Translator: HeroFight dev <abdkafi2002@gmail.com>\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"Last-Translator: Airbus5717 <Abdussamadf350@gmail.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" "godot/ar/>\n" "Language: ar\n" @@ -55,7 +55,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -785,9 +785,8 @@ msgid "Method in target node must be specified." msgstr "يجب تحديد الدالة في العقدة المستهدفة." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "هذا الاسم ليس مُعرفاً مميزاً صالحاً:" +msgstr "اسم الدالة يجب أن تكون مميزاً و صالحاً." #: editor/connections_dialog.cpp msgid "" @@ -1482,7 +1481,7 @@ msgstr "اعادة ترتيب التحميلات التلقائية" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "" +msgstr "لا يمكن اضافة التحميل التلقائي" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -2431,15 +2430,16 @@ msgid "Can't reload a scene that was never saved." msgstr "لا يمكن إعادة تحميل مشهد لم يتم حفظه من قبل." #: editor/editor_node.cpp -#, fuzzy msgid "Reload Saved Scene" -msgstr "حفظ المشهد" +msgstr "إعادة تحميل المشهد المحفوظ" #: editor/editor_node.cpp msgid "" "The current scene has unsaved changes.\n" "Reload the saved scene anyway? This action cannot be undone." msgstr "" +"يحتوي المشهد الحالي على تغييرات غير محفوظة.\n" +"إعادة تحميل المشهد المحفوظ على أي حال؟ لا يمكن التراجع عن هذا الإجراء." #: editor/editor_node.cpp msgid "Quick Run Scene..." @@ -3366,11 +3366,9 @@ msgid "Did you forget the '_run' method?" msgstr "هل نسيت الطريقة '_run' ؟" #: editor/editor_spin_slider.cpp -#, fuzzy msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes." msgstr "" -"اضغط مطولاً على Ctrl لإسقاط جالب Getter. اضغط مطولاً على Shift لإسقاط توقيع " -"عام generic signature." +"امسك Ctrl للتدوير للأعداد الصحيحة. اضغط على Shift لإجراء تغييرات أكثر دقة." #: editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" @@ -3967,7 +3965,7 @@ msgstr "خطأ في تشغيل الكود الملصق- المستورد:" #: editor/import/resource_importer_scene.cpp msgid "Did you return a Node-derived object in the `post_import()` method?" -msgstr "" +msgstr "هل قمت بإرجاع كائن مشتق من العقدة في دالة`post_import ()`؟" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -4186,14 +4184,12 @@ msgid "Move Node Point" msgstr "تحريك نقطة العقدة" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Change BlendSpace1D Limits" -msgstr "تغيير وقت الدمج" +msgstr "تغيير حدود BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Change BlendSpace1D Labels" -msgstr "تغيير وقت الدمج" +msgstr "تغيير ملصقات BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4209,9 +4205,8 @@ msgstr "إضافة نقطة العقدة" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Animation Point" -msgstr "أضف حركة" +msgstr "أضف نقطة حركة" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Remove BlendSpace1D Point" @@ -4245,7 +4240,6 @@ msgstr "حدد وحرك النقاط، أنشئ النقاط باستخدام RM #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp -#, fuzzy msgid "Enable snap and show grid." msgstr "تمكين المحاذاة وإظهار الشبكة." @@ -4457,14 +4451,12 @@ msgid "Remove Animation" msgstr "مسح الحركة" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Invalid animation name!" -msgstr "خطأ: إسم حركة خاطئ!" +msgstr "خطأ: إسم الرسوم المتحركة خاطئ!" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Animation name already exists!" -msgstr "خطأ: إسم الحركة موجود بالفعل!" +msgstr "اسم الحركة موجود بالفعل!" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -4680,19 +4672,16 @@ msgid "Start and end nodes are needed for a sub-transition." msgstr "عُقد البداية والنهاية مطلوبة لأجل الانتقال الجزيئ sub-transition." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "No playback resource set at path: %s." -msgstr "ليس في مسار الموارد." +msgstr "لم يتم تعيين موارد التشغيل في المسار:٪ s." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Node Removed" -msgstr "مُسِح:" +msgstr "مُسِحت العقدة" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition Removed" -msgstr "عقدة التنقل" +msgstr "تمت إزالة النقل" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set Start Node (Autoplay)" @@ -4709,19 +4698,16 @@ msgstr "" "LMB + Shift (زر الفأرة الأيسر) لإنشاء الوصلات." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Create new nodes." -msgstr "إنشاء %s جديد" +msgstr "إنشاء عُقد جديدة." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Connect nodes." -msgstr "صلها بالعقدة:" +msgstr "توصيل عقد." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Remove selected node or transition." -msgstr "ازالة المسار المحدد." +msgstr "ازالة الكائن المحدد او الإنتقال المحدد." #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." @@ -4735,9 +4721,8 @@ msgstr "" "تحديد الرسومية المتحركة الخاصة بالنهاية. سيكون ذلك مفيداً للحركات الفرعية." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition: " -msgstr "تحول" +msgstr "التحريك " #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy diff --git a/editor/translations/cs.po b/editor/translations/cs.po index 809bc69149..722fa52d92 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -24,7 +24,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-22 06:40+0000\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" "Last-Translator: Zbyněk <zbynek.fiala@gmail.com>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" @@ -11018,9 +11018,8 @@ msgid "Copy Error" msgstr "Kopírovat chybu" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Video RAM" -msgstr "Video pamět" +msgstr "Video RAM" #: editor/script_editor_debugger.cpp #, fuzzy diff --git a/editor/translations/de.po b/editor/translations/de.po index 6fb1a29c12..eb533ff15e 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -56,7 +56,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-15 01:48+0000\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" "Last-Translator: So Wieso <sowieso@dukun.de>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" @@ -65,7 +65,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -806,9 +806,8 @@ msgid "Method in target node must be specified." msgstr "Methode des Ziel-Nodes muss angegeben werden." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Name ist kein gültiger Bezeichner:" +msgstr "Methodenname muss ein gültiger Bezeichner sein." #: editor/connections_dialog.cpp msgid "" diff --git a/editor/translations/el.po b/editor/translations/el.po index 3f04c4cf01..8ff5881a9e 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -7,13 +7,13 @@ # Overloaded <manoschool@yahoo.gr>, 2019. # Eternal Death <eternaldeath0001@gmail.com>, 2019. # Overloaded @ Orama Interactive http://orama-interactive.com/ <manoschool@yahoo.gr>, 2020. +# pandektis <pandektis@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-05-10 12:37+0000\n" -"Last-Translator: Overloaded @ Orama Interactive http://orama-interactive." -"com/ <manoschool@yahoo.gr>\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"Last-Translator: pandektis <pandektis@gmail.com>\n" "Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/" "el/>\n" "Language: el\n" @@ -21,7 +21,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -744,11 +744,11 @@ msgstr "Μεγέθυνση" #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp msgid "Zoom Out" -msgstr "Σμύκρινση" +msgstr "Σμίκρυνση" #: editor/code_editor.cpp msgid "Reset Zoom" -msgstr "Επαναφορά μεγέθυνσης" +msgstr "Επαναφορά μεγένθυνσης" #: editor/code_editor.cpp msgid "Warnings" @@ -763,9 +763,8 @@ msgid "Method in target node must be specified." msgstr "Πρέπει να οριστεί συνάρτηση στον στοχευμένο κόμβο." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Το όνομα δεν είναι έγκυρο αναγνωριστικό:" +msgstr "Το όνομα δεν είναι έγκυρο αναγνωριστικό." #: editor/connections_dialog.cpp msgid "" @@ -1466,7 +1465,7 @@ msgstr "Αναδιάταξη των AutoLoad" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "" +msgstr "Αδυναμία προσθήκης autoload:" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -2428,15 +2427,17 @@ msgstr "" "Δεν είναι δυνατό να φορτώσετε εκ νέου μια σκηνή που δεν αποθηκεύτηκε ποτέ." #: editor/editor_node.cpp -#, fuzzy msgid "Reload Saved Scene" -msgstr "Αποθηκεύσετε σκηνής" +msgstr "Ανανέωση Αποθηκευμένης Σκηνής" #: editor/editor_node.cpp msgid "" "The current scene has unsaved changes.\n" "Reload the saved scene anyway? This action cannot be undone." msgstr "" +"Η τρέχουσα σκηνή έχει μη αποθηκευμένες αλλαγές.\n" +"Επαναφόρτωση της αποθηκευμένης σκηνής; Αυτή η ενέργεια δεν μπορεί να " +"αναιρεθεί." #: editor/editor_node.cpp msgid "Quick Run Scene..." @@ -3383,11 +3384,10 @@ msgid "Did you forget the '_run' method?" msgstr "Μήπως ξεχάσατε τη μέθοδο '_run';" #: editor/editor_spin_slider.cpp -#, fuzzy msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes." msgstr "" -"Πατήστε παρατεταμένα το Ctrl για να προσθέσετε έναν Getter. Πατήστε " -"παρατεταμένα το Shift για να προσθέσετε μία γενική υπογραφή." +"Πατήστε παρατεταμένα το Ctrl για στρογγυλοποίηση ακεραίων και το Shift για " +"πιο ακριβείς αλλαγές." #: editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" diff --git a/editor/translations/es.po b/editor/translations/es.po index 15efa44f3d..a200653685 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -53,7 +53,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-22 06:40+0000\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" "Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" @@ -807,9 +807,8 @@ msgid "Method in target node must be specified." msgstr "Se debe establecer un método en el nodo destino." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "El nombre no es un identificador válido:" +msgstr "El nombre del método debe ser un identificador válido." #: editor/connections_dialog.cpp msgid "" @@ -3045,7 +3044,7 @@ msgstr "Reproducir Escena Personalizada" #: editor/editor_node.cpp msgid "Changing the video driver requires restarting the editor." -msgstr "Cambiar el driver de video requiere reiniciar el editor." +msgstr "Cambiar el driver de vídeo requiere reiniciar el editor." #: editor/editor_node.cpp editor/project_settings_editor.cpp #: editor/settings_config_dialog.cpp @@ -9564,11 +9563,11 @@ msgstr "Exportar todos los recursos del proyecto" #: editor/project_export.cpp msgid "Export selected scenes (and dependencies)" -msgstr "Exportar las escenas seleccionadas (incluyendo dependencias)" +msgstr "Exportar escenas seleccionadas (y dependencias)" #: editor/project_export.cpp msgid "Export selected resources (and dependencies)" -msgstr "Exportar los recursos seleccionado (incluyendo dependencias)" +msgstr "Exportar los recursos seleccionados (y dependencias)" #: editor/project_export.cpp msgid "Export Mode:" @@ -11112,7 +11111,7 @@ msgstr "Copiar Error" #: editor/script_editor_debugger.cpp msgid "Video RAM" -msgstr "Vídeo RAM" +msgstr "Memoria de Vídeo" #: editor/script_editor_debugger.cpp msgid "Skip Breakpoints" @@ -11156,7 +11155,7 @@ msgstr "Elige uno o más ítems de la lista para mostrar el gráfico." #: editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" -msgstr "Lista de uso de memoria de video por recurso:" +msgstr "Listado de la Memoria de Vídeo Utilizada por Recurso:" #: editor/script_editor_debugger.cpp msgid "Total:" @@ -12612,7 +12611,7 @@ msgid "" "GIProbes are not supported by the GLES2 video driver.\n" "Use a BakedLightmap instead." msgstr "" -"Las GIProbes no están soportadas por el controlador de video GLES2.\n" +"Las GIProbes no están soportadas por el controlador de vídeo GLES2.\n" "Usa un BakedLightmap en su lugar." #: scene/3d/light.cpp diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index 5cab610261..ca9f5a7a49 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-15 01:48+0000\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" "Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n" "Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/" "godot-engine/godot/es_AR/>\n" @@ -28,7 +28,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -770,9 +770,8 @@ msgid "Method in target node must be specified." msgstr "El método en el nodo objetivo debe ser especificado." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "El nombre no es un identificador válido:" +msgstr "El nombre del método debe ser un identificador válido." #: editor/connections_dialog.cpp msgid "" diff --git a/editor/translations/fi.po b/editor/translations/fi.po index 125656ed67..8ea9a940f0 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-15 01:48+0000\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" "Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/" "godot/fi/>\n" @@ -24,7 +24,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -757,9 +757,8 @@ msgid "Method in target node must be specified." msgstr "Kohdesolmun metodi täytyy määrittää." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Nimi ei ole kelvollinen tunniste:" +msgstr "Metodin nimen täytyy olla kelvollinen tunniste." #: editor/connections_dialog.cpp msgid "" diff --git a/editor/translations/fr.po b/editor/translations/fr.po index 46d3adb070..9dd9b3e166 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -79,7 +79,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-15 01:48+0000\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" "Last-Translator: Nathan <bonnemainsnathan@gmail.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" @@ -88,7 +88,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -7070,7 +7070,7 @@ msgstr "" #: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" -msgstr "Symbole de recherche" +msgstr "Rechercher un symbole" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" @@ -8598,7 +8598,7 @@ msgstr "Détecter de nouveaux changements" #: editor/plugins/version_control_editor_plugin.cpp msgid "Changes" -msgstr "Changements" +msgstr "Modifications" #: editor/plugins/version_control_editor_plugin.cpp msgid "Modified" @@ -9612,15 +9612,15 @@ msgstr "Ressources" #: editor/project_export.cpp msgid "Export all resources in the project" -msgstr "Exporter toutes les ressources dans le projet" +msgstr "Exporter toutes les ressources du projet" #: editor/project_export.cpp msgid "Export selected scenes (and dependencies)" -msgstr "Exporter les scènes sélectionnées (y compris les dépendences)" +msgstr "Exporter les scènes sélectionnées (y compris les dépendances)" #: editor/project_export.cpp msgid "Export selected resources (and dependencies)" -msgstr "Exporter les ressources sélectionnées (y compris les dépendences)" +msgstr "Exporter les ressources sélectionnées (y compris les dépendances)" #: editor/project_export.cpp msgid "Export Mode:" diff --git a/editor/translations/it.po b/editor/translations/it.po index bb53d26fa4..7c929b7779 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -51,12 +51,13 @@ # Andrea Terenziani <andrea.terenziani.at@gmail.com>, 2020. # Anonymous <noreply@weblate.org>, 2020. # riccardo boffelli <riccardo.boffelli.96@gmail.com>, 2020. +# Lorenzo Asolan <brixiumx@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-22 06:40+0000\n" -"Last-Translator: riccardo boffelli <riccardo.boffelli.96@gmail.com>\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"Last-Translator: Lorenzo Asolan <brixiumx@gmail.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" "Language: it\n" @@ -805,7 +806,7 @@ msgstr "Il metodo del nodo designato deve essere specificato." #: editor/connections_dialog.cpp #, fuzzy msgid "Method name must be a valid identifier." -msgstr "Il nome non è un identificatore valido:" +msgstr "Il nome del metodo dev'essere un identificatore valido." #: editor/connections_dialog.cpp msgid "" @@ -12055,7 +12056,8 @@ msgstr "" #, fuzzy msgid "Release keystore incorrectly configured in the export preset." msgstr "" -"Debug keystore non configurato nelle Impostazioni dell'Editor né nel preset." +"Debug keystore non configurato correttamente nelle Impostazioni dell'Editor " +"né nel preset." #: platform/android/export/export.cpp msgid "Custom build requires a valid Android SDK path in Editor Settings." @@ -12092,7 +12094,7 @@ msgid "" "project setting (changed in Godot 3.2.2).\n" msgstr "" "Modulo \"GodotPaymentV3\" non valido incluso nell'impostazione del progetto " -"\" android/moduli\" (modificato in Godot 3.2.2).\n" +"\"android/moduli\" (modificato in Godot 3.2.2).\n" #: platform/android/export/export.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." diff --git a/editor/translations/ja.po b/editor/translations/ja.po index fc8444d6bc..35e590d629 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -36,8 +36,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-03 20:09+0000\n" -"Last-Translator: BinotaLIU <me@binota.org>\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"Last-Translator: Wataru Onuki <bettawat@yahoo.co.jp>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/" "godot/ja/>\n" "Language: ja\n" @@ -45,7 +45,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -786,9 +786,8 @@ msgid "Method in target node must be specified." msgstr "対象ノードのメソッドを指定してください。" #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "この名前は無効な識別子です:" +msgstr "メソッド名は有効な識別子である必要があります。" #: editor/connections_dialog.cpp msgid "" @@ -1600,8 +1599,9 @@ msgid "" "Enabled'." msgstr "" "対象プラットフォームではGLES2へフォールバックするために'ETC'テクスチャ圧縮が" -"必要です。プロジェクト設定より 'Import Etc' をオンにするか、'Fallback To " -"Gles 2' をオフにしてください。" +"必要です。\n" +"プロジェクト設定より 'Import Etc' をオンにするか、'Fallback To Gles 2' をオフ" +"にしてください。" #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -2441,9 +2441,8 @@ msgid "Can't reload a scene that was never saved." msgstr "保存されていないシーンを読み込むことはできません。" #: editor/editor_node.cpp -#, fuzzy msgid "Reload Saved Scene" -msgstr "シーンを保存" +msgstr "保存済みのシーンをリロード" #: editor/editor_node.cpp msgid "" @@ -3383,11 +3382,8 @@ msgid "Did you forget the '_run' method?" msgstr "'_run' メソッドを忘れていませんか?" #: editor/editor_spin_slider.cpp -#, fuzzy msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes." -msgstr "" -"Ctrlを押したままGetterを(ドラッグ&)ドロップする。Shiftを押したまま汎用シグネ" -"チャを(ドラッグ&)ドロップする." +msgstr "Ctrlを押したままで整数値に丸める。Shiftを押したままで精密調整。" #: editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" @@ -3523,8 +3519,8 @@ msgid "" "Templates installation failed.\n" "The problematic templates archives can be found at '%s'." msgstr "" -"テンプレートのインストールに失敗しました。 問題のテンプレートのアーカイブは " -"'%s' にあります。" +"テンプレートのインストールに失敗しました。\n" +"問題のテンプレートのアーカイブは '%s' にあります。" #: editor/export_template_manager.cpp msgid "Error requesting URL:" @@ -6929,9 +6925,8 @@ msgstr "" "ド'%s'へのシグナル用です。" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "[Ignore]" -msgstr "(無視)" +msgstr "[無視]" #: editor/plugins/script_text_editor.cpp msgid "Line" @@ -9456,8 +9451,9 @@ msgid "" "Only one preset per platform may be marked as runnable." msgstr "" "チェックを入れると、1クリック・デプロイでもこのプリセットが使われるようにな" -"ります。ひとつのプラットフォームに対し、ひとつのプリセットのみが実行可能とし" -"てマークできます。" +"ります。\n" +"ひとつのプラットフォームに対し、ひとつのプリセットのみが実行可能としてマーク" +"できます。" #: editor/project_export.cpp msgid "Export Path" @@ -10498,9 +10494,8 @@ msgid "Instance Child Scene" msgstr "子シーンをインスタンス化" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Detach Script" -msgstr "スクリプトをアタッチ" +msgstr "スクリプトをデタッチ" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." @@ -10719,14 +10714,12 @@ msgstr "" "合は、継承されたシーンを作成します。" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Attach a new or existing script to the selected node." msgstr "選択したノードに新規または既存のスクリプトをアタッチする。" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Detach the script from the selected node." -msgstr "選択したノードのスクリプトをクリアする。" +msgstr "選択したノードのスクリプトをデタッチする。" #: editor/scene_tree_dock.cpp msgid "Remote" @@ -10773,7 +10766,7 @@ msgid "" "Node has %s connection(s).\n" "Click to show signals dock." msgstr "" -"ノードに %s 個接続があります。\n" +"ノードに %s 個接続があります。\n" "クリックでシグナル ドックを表示。" #: editor/scene_tree_editor.cpp @@ -11952,9 +11945,8 @@ msgid "Debug keystore not configured in the Editor Settings nor in the preset." msgstr "デバッグキーストアがエディタ設定にもプリセットにも設定されていません。" #: platform/android/export/export.cpp -#, fuzzy msgid "Release keystore incorrectly configured in the export preset." -msgstr "デバッグキーストアがエディタ設定にもプリセットにも設定されていません。" +msgstr "エクスポート設定にてリリース キーストアが誤って設定されています。" #: platform/android/export/export.cpp msgid "Custom build requires a valid Android SDK path in Editor Settings." diff --git a/editor/translations/ko.po b/editor/translations/ko.po index a895af27b6..462c59d319 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -22,8 +22,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-05-22 21:01+0000\n" -"Last-Translator: Doyun Kwon <caen4516@gmail.com>\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"Last-Translator: Ch. <ccwpc@hanmail.net>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/" "godot/ko/>\n" "Language: ko\n" @@ -31,7 +31,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -768,9 +768,8 @@ msgid "Method in target node must be specified." msgstr "대상 노드에 있는 메서드는 반드시 지정해야 합니다." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "이름이 올바른 식별자가 아님:" +msgstr "메서드 이름은 올바른 식별자여야 합니다." #: editor/connections_dialog.cpp msgid "" @@ -982,7 +981,7 @@ msgid "" "Changes will only take effect when reloaded." msgstr "" "씬 '%s'이(가) 현재 편집중입니다.\n" -"변경 사항은 다시 로드된 뒤에 반영됩니다." +"변경 사항은 다시 불러온 뒤에 반영됩니다." #: editor/dependency_editor.cpp msgid "" @@ -990,7 +989,7 @@ msgid "" "Changes will only take effect when reloaded." msgstr "" "리소스 '%s'이(가) 현재 사용중입니다.\n" -"변경 사항은 다시 로드된 뒤에 반영됩니다." +"변경 사항은 다시 불러온 뒤에 반영됩니다." #: editor/dependency_editor.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -1466,7 +1465,7 @@ msgstr "오토로드 다시 정렬" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "" +msgstr "오토로드를 추가할 수 없음:" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -2418,15 +2417,16 @@ msgid "Can't reload a scene that was never saved." msgstr "저장하지 않은 씬은 새로고침할 수 없습니다." #: editor/editor_node.cpp -#, fuzzy msgid "Reload Saved Scene" -msgstr "씬 저장" +msgstr "저장된 씬 새로고침" #: editor/editor_node.cpp msgid "" "The current scene has unsaved changes.\n" "Reload the saved scene anyway? This action cannot be undone." msgstr "" +"현재 씬에는 저장하지 않은 변경사항이 있습니다.\n" +"그래도 저장된 씬을 새로고침하시겠습니까? 이 동작은 되돌릴 수 없습니다." #: editor/editor_node.cpp msgid "Quick Run Scene..." @@ -2846,8 +2846,8 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" -"이 설정이 활성화된 경우, 어떤 스크립트든 저장하면 실행중인 게임에도 반영됩니" -"다.\n" +"이 설정이 활성화된 경우, 어떤 스크립트든 저장하면 실행중인 게임에도 새로고침" +"되어 반영됩니다.\n" "원격 장치에서 사용중인 경우 네트워크 파일 시스템 기능을 활성화하면 더욱 효율" "적입니다." @@ -3352,11 +3352,9 @@ msgid "Did you forget the '_run' method?" msgstr "'_run' 메서드를 잊었나요?" #: editor/editor_spin_slider.cpp -#, fuzzy msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes." msgstr "" -"Ctrl을 누르고 있으면 Getter를 드롭합니다. Shift를 누르고 있으면 일반적인 시그" -"니처를 드롭합니다." +"Ctrl을 눌러 정수로 반올림합니다. Shift를 눌러 좀 더 정밀하게 조작합니다." #: editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" @@ -3953,7 +3951,7 @@ msgstr "후 가져오기 스크립트 실행 중 오류:" #: editor/import/resource_importer_scene.cpp msgid "Did you return a Node-derived object in the `post_import()` method?" -msgstr "" +msgstr "`post_import()` 메소드에서 Node에서 상속받은 객체를 반환했습니까?" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -6651,7 +6649,7 @@ msgstr "실행하기 위한 스크립트를 가질 수 없습니다." #: editor/plugins/script_editor_plugin.cpp msgid "Script failed reloading, check console for errors." -msgstr "스크립트 다시 불러오기에 실패했습니다. 콘솔에서 오류를 확인하세요." +msgstr "스크립트 새로고침에 실패했습니다. 콘솔에서 오류를 확인하세요." #: editor/plugins/script_editor_plugin.cpp msgid "Script is not in tool mode, will not be able to run." @@ -6748,7 +6746,7 @@ msgstr "모두 저장" #: editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" -msgstr "스크립트 다시 불러오기" +msgstr "스크립트 새로고침" #: editor/plugins/script_editor_plugin.cpp msgid "Copy Script Path" @@ -6773,7 +6771,7 @@ msgstr "테마 가져오기..." #: editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" -msgstr "테마 다시 불러오기" +msgstr "테마 새로고침" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme" @@ -6847,7 +6845,7 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/shader_editor_plugin.cpp msgid "Reload" -msgstr "다시 불러오기" +msgstr "새로고침" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/shader_editor_plugin.cpp @@ -6886,9 +6884,8 @@ msgstr "" "다." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "[Ignore]" -msgstr "(무시함)" +msgstr "[무시]" #: editor/plugins/script_text_editor.cpp msgid "Line" @@ -7366,6 +7363,7 @@ msgid "XForm Dialog" msgstr "XForm 대화 상자" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy msgid "" "Click to toggle between visibility states.\n" "\n" @@ -7373,6 +7371,11 @@ msgid "" "Closed eye: Gizmo is hidden.\n" "Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")." msgstr "" +"표시 상태를 토글하려면 클릭하세요.\n" +"\n" +"열린 눈: 기즈모가 보입니다.\n" +"닫힌 눈: 기즈모가 숨겨집니다.\n" +"반 열린 눈: 불투명한 표면에도 기즈모가 보입니다 (\"엑스레이\")." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Nodes To Floor" @@ -10424,9 +10427,8 @@ msgid "Instance Child Scene" msgstr "자식 씬 인스턴스화" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Detach Script" -msgstr "스크립트 붙이기" +msgstr "스크립트 떼기" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." @@ -10594,6 +10596,8 @@ msgid "" "This is probably because this editor was built with all language modules " "disabled." msgstr "" +"스크립트를 붙일 수 없습니다: 언어가 하나도 등록되지 않았습니다.\n" +"에디터가 모든 언어를 비활성화한 채로 빌드되어서 그럴 가능성이 높습니다." #: editor/scene_tree_dock.cpp msgid "Add Child Node" @@ -10643,14 +10647,12 @@ msgstr "" "씬 파일을 노드로 인스턴스합니다. 루트 노드가 없으면 상속된 씬을 만듭니다." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Attach a new or existing script to the selected node." -msgstr "선택한 노드에 새로운 혹은 존재하는 스크립트를 붙입니다." +msgstr "선택한 노드에 새 스크립트나 기존 스크립트를 붙입니다." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Detach the script from the selected node." -msgstr "선택한 노드의 스크립트를 삭제합니다." +msgstr "선택한 노드에서 스크립트를 뗍니다." #: editor/scene_tree_dock.cpp msgid "Remote" @@ -11871,9 +11873,8 @@ msgid "Debug keystore not configured in the Editor Settings nor in the preset." msgstr "Debug keystore를 편집기 설정과 프리셋에 설정하지 않았습니다." #: platform/android/export/export.cpp -#, fuzzy msgid "Release keystore incorrectly configured in the export preset." -msgstr "Debug keystore를 편집기 설정과 프리셋에 설정하지 않았습니다." +msgstr "내보내기 프리셋에 배포 keystorke가 잘못 설정되어 있습니다." #: platform/android/export/export.cpp msgid "Custom build requires a valid Android SDK path in Editor Settings." @@ -11904,26 +11905,33 @@ msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" msgstr "" +"\"android/modules\" 프로젝트 세팅에 잘못된 \"GodotPaymentV3\" 모듈이 포함되" +"어 있습니다. (Godot 3.2.2 에서 변경됨).\n" #: platform/android/export/export.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." -msgstr "" +msgstr "플러그인을 사용하려면 \"커스텀 빌드 사용\"이 활성화되어야 합니다." #: platform/android/export/export.cpp msgid "" "\"Degrees Of Freedom\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR" "\"." msgstr "" +"\"자유도(DoF)\"는 \"Xr 모드\" 가 \"Oculus Mobile VR\" 일 때만 사용 가능합니" +"다." #: platform/android/export/export.cpp msgid "" "\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." msgstr "" +"\"손 추적\" 은 \"Xr 모드\" 가 \"Oculus Mobile VR\"일 때만 사용 가능합니다." #: platform/android/export/export.cpp msgid "" "\"Focus Awareness\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." msgstr "" +"\"포커스 인식\"은 \"Xr 모드\"가 \"Oculus Mobile VR\" 인 경우에만 사용 가능합" +"니다." #: platform/android/export/export.cpp msgid "" diff --git a/editor/translations/pl.po b/editor/translations/pl.po index 558a86f1cb..ed53a98bed 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -39,12 +39,13 @@ # Maciej Chamera <chameramaciej@gmail.com>, 2019. # Cezary Stasiak <cezary.p.stasiak@gmail.com>, 2019. # Jan Ligudziński <jan.ligudzinski@gmail.com>, 2020. +# Adam Jagoda <kontakt@lukasz.xyz>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-22 06:40+0000\n" -"Last-Translator: Tomek <kobewi4e@gmail.com>\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"Last-Translator: Adam Jagoda <kontakt@lukasz.xyz>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" "Language: pl\n" @@ -791,9 +792,8 @@ msgid "Method in target node must be specified." msgstr "Metoda w węźle docelowym musi zostać podana." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Nazwa nie jest prawidłowym identyfikatorem:" +msgstr "Nazwa metody musi być poprawnym identyfikatorem." #: editor/connections_dialog.cpp msgid "" diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index 426888b3a4..70878acad2 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -93,12 +93,13 @@ # André Sousa <andrelvsousa@gmail.com>, 2020. # Kleyton Luiz de Sousa Vieira <kleytonluizdesouzavieira@gmail.com>, 2020. # Felipe Jesus Macedo <fmacedo746@gmail.com>, 2020. +# José Paulo <jose.paulo1919@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2020-06-22 06:40+0000\n" -"Last-Translator: Felipe Jesus Macedo <fmacedo746@gmail.com>\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"Last-Translator: José Paulo <jose.paulo1919@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -843,9 +844,8 @@ msgid "Method in target node must be specified." msgstr "O método no nó alvo precisa ser especificado." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "O nome não é um identificador valido:" +msgstr "O nome do método deve ser um identificador válido." #: editor/connections_dialog.cpp msgid "" @@ -9391,13 +9391,12 @@ msgstr "" "declarações de função internas." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Returns falloff based on the dot product of surface normal and view " "direction of camera (pass associated inputs to it)." msgstr "" -"Retorna falloff com base no produto dos pontos da superfície normal e na " -"direção de visualização da câmera (passa as entradas associadas a ela)." +"Retorna decaimento com base no produto escalar da normal da superfície com o " +"a direção de visão da câmera (passe as entradas associadas a ele)." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" diff --git a/editor/translations/uk.po b/editor/translations/uk.po index 66d7caab34..03990a655e 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -18,7 +18,7 @@ msgid "" msgstr "" "Project-Id-Version: Ukrainian (Godot Engine)\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-15 01:48+0000\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/" "godot/uk/>\n" @@ -28,7 +28,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -773,9 +773,8 @@ msgid "Method in target node must be specified." msgstr "Має бути вказано метод у цільовому вузлі." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Назва не є коректним ідентифікатором:" +msgstr "Назва методу має бути коректним ідентифікатором." #: editor/connections_dialog.cpp msgid "" @@ -1981,7 +1980,7 @@ msgstr "Властивості теми" #: editor/editor_help.cpp msgid "Enumerations" -msgstr "Перелічуваний" +msgstr "Переліки" #: editor/editor_help.cpp msgid "Constants" diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index 4acf70b8ae..f9dc64aea2 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -70,8 +70,8 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2020-06-22 06:40+0000\n" -"Last-Translator: 无双流 <1257678024@qq.com>\n" +"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"Last-Translator: UnluckyNinja <unluckyninja1994@gmail.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hans/>\n" "Language: zh_CN\n" @@ -808,9 +808,8 @@ msgid "Method in target node must be specified." msgstr "必须指定目标节点的方法。" #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "名称不是有效的标识符:" +msgstr "方法名称必须是一个有效的标识符。" #: editor/connections_dialog.cpp msgid "" @@ -6660,7 +6659,7 @@ msgstr "查找下一项" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp msgid "Find Previous" -msgstr "查找上一项" +msgstr "查找上一个" #: editor/plugins/script_editor_plugin.cpp msgid "Filter scripts" @@ -6942,7 +6941,7 @@ msgstr "切换注释" #: editor/plugins/script_text_editor.cpp msgid "Fold/Unfold Line" -msgstr "折叠/展开当前行" +msgstr "折叠/展开行" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -6958,7 +6957,7 @@ msgstr "拷贝到下一行" #: editor/plugins/script_text_editor.cpp msgid "Complete Symbol" -msgstr "代码补全" +msgstr "符号自动补全" #: editor/plugins/script_text_editor.cpp msgid "Evaluate Selection" @@ -6966,7 +6965,7 @@ msgstr "所选内容求值" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" -msgstr "修剪行后空白" +msgstr "移除尾部空格" #: editor/plugins/script_text_editor.cpp msgid "Convert Indent to Spaces" |