diff options
Diffstat (limited to 'editor')
171 files changed, 18067 insertions, 3545 deletions
diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp index 5d49290612..934c6b95a4 100644 --- a/editor/animation_track_editor.cpp +++ b/editor/animation_track_editor.cpp @@ -634,7 +634,7 @@ public: bool use_fps = false; void notify_change() { - _change_notify(); + notify_property_list_changed(); } Node *get_root_path() { @@ -643,7 +643,7 @@ public: void set_use_fps(bool p_enable) { use_fps = p_enable; - _change_notify(); + notify_property_list_changed(); } }; @@ -1276,7 +1276,7 @@ public: UndoRedo *undo_redo = nullptr; void notify_change() { - _change_notify(); + notify_property_list_changed(); } Node *get_root_path() { @@ -1285,7 +1285,7 @@ public: void set_use_fps(bool p_enable) { use_fps = p_enable; - _change_notify(); + notify_property_list_changed(); } }; @@ -4283,7 +4283,6 @@ void AnimationTrackEditor::_animation_update() { _update_step_spinbox(); emit_signal("animation_step_changed", animation->get_step()); emit_signal("animation_len_changed", animation->get_length()); - EditorNode::get_singleton()->get_inspector()->refresh(); animation_changing_awaiting_update = false; } diff --git a/editor/array_property_edit.cpp b/editor/array_property_edit.cpp index 3daee4587c..09defac354 100644 --- a/editor/array_property_edit.cpp +++ b/editor/array_property_edit.cpp @@ -49,11 +49,7 @@ Variant ArrayPropertyEdit::get_array() const { } void ArrayPropertyEdit::_notif_change() { - _change_notify(); -} - -void ArrayPropertyEdit::_notif_changev(const String &p_v) { - _change_notify(p_v.utf8().get_data()); + notify_property_list_changed(); } void ArrayPropertyEdit::_set_size(int p_size) { @@ -120,7 +116,7 @@ bool ArrayPropertyEdit::_set(const StringName &p_name, const Variant &p_value) { } if (pn == "array/page") { page = p_value; - _change_notify(); + notify_property_list_changed(); return true; } @@ -159,8 +155,6 @@ bool ArrayPropertyEdit::_set(const StringName &p_name, const Variant &p_value) { ur->create_action(TTR("Change Array Value")); ur->add_do_method(this, "_set_value", idx, p_value); ur->add_undo_method(this, "_set_value", idx, value); - ur->add_do_method(this, "_notif_changev", p_name); - ur->add_undo_method(this, "_notif_changev", p_name); ur->commit_action(); return true; } @@ -288,7 +282,6 @@ void ArrayPropertyEdit::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_size"), &ArrayPropertyEdit::_set_size); ClassDB::bind_method(D_METHOD("_set_value"), &ArrayPropertyEdit::_set_value); ClassDB::bind_method(D_METHOD("_notif_change"), &ArrayPropertyEdit::_notif_change); - ClassDB::bind_method(D_METHOD("_notif_changev"), &ArrayPropertyEdit::_notif_changev); ClassDB::bind_method(D_METHOD("_dont_undo_redo"), &ArrayPropertyEdit::_dont_undo_redo); } diff --git a/editor/array_property_edit.h b/editor/array_property_edit.h index dd495b57f4..fa3dcbe038 100644 --- a/editor/array_property_edit.h +++ b/editor/array_property_edit.h @@ -47,7 +47,6 @@ class ArrayPropertyEdit : public Reference { Variant::Type default_type; void _notif_change(); - void _notif_changev(const String &p_v); void _set_size(int p_size); void _set_value(int p_idx, const Variant &p_value); diff --git a/editor/audio_stream_preview.cpp b/editor/audio_stream_preview.cpp index 2e0c3491f7..539657afd7 100644 --- a/editor/audio_stream_preview.cpp +++ b/editor/audio_stream_preview.cpp @@ -155,7 +155,7 @@ void AudioStreamPreviewGenerator::_preview_thread(void *p_preview) { preview->playback->stop(); - preview->generating = false; + preview->generating.clear(); } Ref<AudioStreamPreview> AudioStreamPreviewGenerator::generate_preview(const Ref<AudioStream> &p_stream) { @@ -172,7 +172,7 @@ Ref<AudioStreamPreview> AudioStreamPreviewGenerator::generate_preview(const Ref< Preview *preview = &previews[p_stream->get_instance_id()]; preview->base_stream = p_stream; preview->playback = preview->base_stream->instance_playback(); - preview->generating = true; + preview->generating.set(); preview->id = p_stream->get_instance_id(); float len_s = preview->base_stream->get_length(); @@ -197,7 +197,8 @@ Ref<AudioStreamPreview> AudioStreamPreviewGenerator::generate_preview(const Ref< preview->preview->length = len_s; if (preview->playback.is_valid()) { - preview->thread = Thread::create(_preview_thread, preview); + preview->thread = memnew(Thread); + preview->thread->start(_preview_thread, preview); } return preview->preview; @@ -216,9 +217,10 @@ void AudioStreamPreviewGenerator::_notification(int p_what) { if (p_what == NOTIFICATION_PROCESS) { List<ObjectID> to_erase; for (Map<ObjectID, Preview>::Element *E = previews.front(); E; E = E->next()) { - if (!E->get().generating) { + if (!E->get().generating.is_set()) { if (E->get().thread) { - Thread::wait_to_finish(E->get().thread); + E->get().thread->wait_to_finish(); + memdelete(E->get().thread); E->get().thread = nullptr; } if (!ObjectDB::get_instance(E->key())) { //no longer in use, get rid of preview diff --git a/editor/audio_stream_preview.h b/editor/audio_stream_preview.h index 21c9ea203e..accc7275c0 100644 --- a/editor/audio_stream_preview.h +++ b/editor/audio_stream_preview.h @@ -32,6 +32,7 @@ #define AUDIO_STREAM_PREVIEW_H #include "core/os/thread.h" +#include "core/templates/safe_refcount.h" #include "scene/main/node.h" #include "servers/audio/audio_stream.h" @@ -60,9 +61,20 @@ class AudioStreamPreviewGenerator : public Node { Ref<AudioStreamPreview> preview; Ref<AudioStream> base_stream; Ref<AudioStreamPlayback> playback; - volatile bool generating = false; + SafeFlag generating; ObjectID id; Thread *thread = nullptr; + + // Needed for the bookkeeping of the Map + Preview &operator=(const Preview &p_rhs) { + preview = p_rhs.preview; + base_stream = p_rhs.base_stream; + playback = p_rhs.playback; + generating.set_to(generating.is_set()); + id = p_rhs.id; + thread = p_rhs.thread; + return *this; + } }; Map<ObjectID, Preview> previews; diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index 01fa094d38..0c1fb6fe4d 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -98,7 +98,7 @@ public: } void notify_changed() { - _change_notify(); + notify_property_list_changed(); } ConnectDialogBinds() { diff --git a/editor/debugger/editor_debugger_inspector.h b/editor/debugger/editor_debugger_inspector.h index cf2d81cbf1..6648c99c03 100644 --- a/editor/debugger/editor_debugger_inspector.h +++ b/editor/debugger/editor_debugger_inspector.h @@ -58,7 +58,7 @@ public: prop_values.clear(); } - void update() { _change_notify(); } + void update() { notify_property_list_changed(); } EditorDebuggerRemoteObject() {} }; diff --git a/editor/debugger/editor_debugger_tree.cpp b/editor/debugger/editor_debugger_tree.cpp index 6db3b94aee..ec92edc795 100644 --- a/editor/debugger/editor_debugger_tree.cpp +++ b/editor/debugger/editor_debugger_tree.cpp @@ -129,6 +129,8 @@ void EditorDebuggerTree::update_scene_tree(const SceneDebuggerTree *p_tree, int updating_scene_tree = true; const String last_path = get_selected_path(); const String filter = EditorNode::get_singleton()->get_scene_tree_dock()->get_filter(); + bool filter_changed = filter != last_filter; + TreeItem *scroll_item = nullptr; // Nodes are in a flatten list, depth first. Use a stack of parents, avoid recursion. List<Pair<TreeItem *, int>> parents; @@ -162,11 +164,17 @@ void EditorDebuggerTree::update_scene_tree(const SceneDebuggerTree *p_tree, int if (debugger_id == p_debugger) { // Can use remote id. if (node.id == inspected_object_id) { item->select(0); + if (filter_changed) { + scroll_item = item; + } } } else { // Must use path if (last_path == _get_path(item)) { updating_scene_tree = false; // Force emission of new selection item->select(0); + if (filter_changed) { + scroll_item = item; + } updating_scene_tree = true; } } @@ -183,6 +191,9 @@ void EditorDebuggerTree::update_scene_tree(const SceneDebuggerTree *p_tree, int } parent->remove_child(item); memdelete(item); + if (scroll_item == item) { + scroll_item = nullptr; + } if (had_siblings) { break; // Parent must survive. } @@ -199,6 +210,10 @@ void EditorDebuggerTree::update_scene_tree(const SceneDebuggerTree *p_tree, int } } debugger_id = p_debugger; // Needed by hook, could be avoided if every debugger had its own tree + if (scroll_item) { + call_deferred("scroll_to_item", scroll_item); + } + last_filter = filter; updating_scene_tree = false; } diff --git a/editor/debugger/editor_debugger_tree.h b/editor/debugger/editor_debugger_tree.h index 8c966dffd5..13193344f1 100644 --- a/editor/debugger/editor_debugger_tree.h +++ b/editor/debugger/editor_debugger_tree.h @@ -51,6 +51,7 @@ private: Set<ObjectID> unfold_cache; PopupMenu *item_menu = nullptr; EditorFileDialog *file_dialog = nullptr; + String last_filter; String _get_path(TreeItem *p_item); void _scene_tree_folded(Object *p_obj); diff --git a/editor/debugger/editor_network_profiler.cpp b/editor/debugger/editor_network_profiler.cpp index d541fdd249..2d57dff69d 100644 --- a/editor/debugger/editor_network_profiler.cpp +++ b/editor/debugger/editor_network_profiler.cpp @@ -46,8 +46,8 @@ void EditorNetworkProfiler::_notification(int p_what) { outgoing_bandwidth_text->set_right_icon(get_theme_icon("ArrowUp", "EditorIcons")); // This needs to be done here to set the faded color when the profiler is first opened - incoming_bandwidth_text->add_theme_color_override("font_color_uneditable", get_theme_color("font_color", "Editor") * Color(1, 1, 1, 0.5)); - outgoing_bandwidth_text->add_theme_color_override("font_color_uneditable", get_theme_color("font_color", "Editor") * Color(1, 1, 1, 0.5)); + incoming_bandwidth_text->add_theme_color_override("font_uneditable_color", get_theme_color("font_color", "Editor") * Color(1, 1, 1, 0.5)); + outgoing_bandwidth_text->add_theme_color_override("font_uneditable_color", get_theme_color("font_color", "Editor") * Color(1, 1, 1, 0.5)); } } @@ -113,10 +113,10 @@ void EditorNetworkProfiler::set_bandwidth(int p_incoming, int p_outgoing) { // Make labels more prominent when the bandwidth is greater than 0 to attract user attention incoming_bandwidth_text->add_theme_color_override( - "font_color_uneditable", + "font_uneditable_color", get_theme_color("font_color", "Editor") * Color(1, 1, 1, p_incoming > 0 ? 1 : 0.5)); outgoing_bandwidth_text->add_theme_color_override( - "font_color_uneditable", + "font_uneditable_color", get_theme_color("font_color", "Editor") * Color(1, 1, 1, p_outgoing > 0 ? 1 : 0.5)); } diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp index 2780b74469..25e155aafe 100644 --- a/editor/dependency_editor.cpp +++ b/editor/dependency_editor.cpp @@ -480,8 +480,8 @@ void DependencyRemoveDialog::ok_pressed() { if (files_to_delete[i] == String(ProjectSettings::get_singleton()->get("application/boot_splash/image"))) { ProjectSettings::get_singleton()->set("application/boot_splash/image", ""); } - if (files_to_delete[i] == String(ProjectSettings::get_singleton()->get("rendering/environment/default_environment"))) { - ProjectSettings::get_singleton()->set("rendering/environment/default_environment", ""); + if (files_to_delete[i] == String(ProjectSettings::get_singleton()->get("rendering/environment/defaults/default_environment"))) { + ProjectSettings::get_singleton()->set("rendering/environment/defaults/default_environment", ""); } if (files_to_delete[i] == String(ProjectSettings::get_singleton()->get("display/mouse_cursor/custom_image"))) { ProjectSettings::get_singleton()->set("display/mouse_cursor/custom_image", ""); @@ -492,8 +492,8 @@ void DependencyRemoveDialog::ok_pressed() { if (files_to_delete[i] == String(ProjectSettings::get_singleton()->get("gui/theme/custom_font"))) { ProjectSettings::get_singleton()->set("gui/theme/custom_font", ""); } - if (files_to_delete[i] == String(ProjectSettings::get_singleton()->get("audio/default_bus_layout"))) { - ProjectSettings::get_singleton()->set("audio/default_bus_layout", ""); + if (files_to_delete[i] == String(ProjectSettings::get_singleton()->get("audio/buses/default_bus_layout"))) { + ProjectSettings::get_singleton()->set("audio/buses/default_bus_layout", ""); } String path = OS::get_singleton()->get_resource_dir() + files_to_delete[i].replace_first("res://", "/"); diff --git a/editor/dictionary_property_edit.cpp b/editor/dictionary_property_edit.cpp index 9683003d89..408177e523 100644 --- a/editor/dictionary_property_edit.cpp +++ b/editor/dictionary_property_edit.cpp @@ -32,11 +32,7 @@ #include "editor_node.h" void DictionaryPropertyEdit::_notif_change() { - _change_notify(); -} - -void DictionaryPropertyEdit::_notif_changev(const String &p_v) { - _change_notify(p_v.utf8().get_data()); + notify_property_list_changed(); } void DictionaryPropertyEdit::_set_key(const Variant &p_old_key, const Variant &p_new_key) { @@ -107,7 +103,6 @@ void DictionaryPropertyEdit::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_key"), &DictionaryPropertyEdit::_set_key); ClassDB::bind_method(D_METHOD("_set_value"), &DictionaryPropertyEdit::_set_value); ClassDB::bind_method(D_METHOD("_notif_change"), &DictionaryPropertyEdit::_notif_change); - ClassDB::bind_method(D_METHOD("_notif_changev"), &DictionaryPropertyEdit::_notif_changev); ClassDB::bind_method(D_METHOD("_dont_undo_redo"), &DictionaryPropertyEdit::_dont_undo_redo); } @@ -128,8 +123,6 @@ bool DictionaryPropertyEdit::_set(const StringName &p_name, const Variant &p_val ur->create_action(TTR("Change Dictionary Key")); ur->add_do_method(this, "_set_key", key, p_value); ur->add_undo_method(this, "_set_key", p_value, key); - ur->add_do_method(this, "_notif_changev", p_name); - ur->add_undo_method(this, "_notif_changev", p_name); ur->commit_action(); return true; @@ -142,8 +135,6 @@ bool DictionaryPropertyEdit::_set(const StringName &p_name, const Variant &p_val ur->create_action(TTR("Change Dictionary Value")); ur->add_do_method(this, "_set_value", key, p_value); ur->add_undo_method(this, "_set_value", key, value); - ur->add_do_method(this, "_notif_changev", p_name); - ur->add_undo_method(this, "_notif_changev", p_name); ur->commit_action(); return true; diff --git a/editor/dictionary_property_edit.h b/editor/dictionary_property_edit.h index 564bbf205b..e0fd945491 100644 --- a/editor/dictionary_property_edit.h +++ b/editor/dictionary_property_edit.h @@ -40,7 +40,6 @@ class DictionaryPropertyEdit : public Reference { StringName property; void _notif_change(); - void _notif_changev(const String &p_v); void _set_key(const Variant &p_old_key, const Variant &p_new_key); void _set_value(const Variant &p_key, const Variant &p_value); diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp index 7569800a7e..9a826ab106 100644 --- a/editor/editor_audio_buses.cpp +++ b/editor/editor_audio_buses.cpp @@ -78,11 +78,11 @@ void EditorAudioBus::_notification(int p_what) { Color bypass_color = EditorSettings::get_singleton()->is_dark_theme() ? Color(0.13, 0.8, 1.0) : Color(0.44, 0.87, 1.0); solo->set_icon(get_theme_icon("AudioBusSolo", "EditorIcons")); - solo->add_theme_color_override("icon_color_pressed", solo_color); + solo->add_theme_color_override("icon_pressed_color", solo_color); mute->set_icon(get_theme_icon("AudioBusMute", "EditorIcons")); - mute->add_theme_color_override("icon_color_pressed", mute_color); + mute->add_theme_color_override("icon_pressed_color", mute_color); bypass->set_icon(get_theme_icon("AudioBusBypass", "EditorIcons")); - bypass->add_theme_color_override("icon_color_pressed", bypass_color); + bypass->add_theme_color_override("icon_pressed_color", bypass_color); bus_options->set_icon(get_theme_icon("GuiTabMenuHl", "EditorIcons")); @@ -1191,9 +1191,9 @@ void EditorAudioBuses::_load_layout() { } void EditorAudioBuses::_load_default_layout() { - String layout_path = ProjectSettings::get_singleton()->get("audio/default_bus_layout"); + String layout_path = ProjectSettings::get_singleton()->get("audio/buses/default_bus_layout"); - Ref<AudioBusLayout> state = ResourceLoader::load(layout_path, "", true); + Ref<AudioBusLayout> state = ResourceLoader::load(layout_path, "", ResourceFormatLoader::CACHE_MODE_IGNORE); if (state.is_null()) { EditorNode::get_singleton()->show_warning(vformat(TTR("There is no '%s' file."), layout_path)); return; @@ -1209,7 +1209,7 @@ void EditorAudioBuses::_load_default_layout() { void EditorAudioBuses::_file_dialog_callback(const String &p_string) { if (file_dialog->get_file_mode() == EditorFileDialog::FILE_MODE_OPEN_FILE) { - Ref<AudioBusLayout> state = ResourceLoader::load(p_string, "", true); + Ref<AudioBusLayout> state = ResourceLoader::load(p_string, "", ResourceFormatLoader::CACHE_MODE_IGNORE); if (state.is_null()) { EditorNode::get_singleton()->show_warning(TTR("Invalid file, not an audio bus layout.")); return; @@ -1257,7 +1257,7 @@ EditorAudioBuses::EditorAudioBuses() { add_child(top_hb); file = memnew(Label); - String layout_path = ProjectSettings::get_singleton()->get("audio/default_bus_layout"); + String layout_path = ProjectSettings::get_singleton()->get("audio/buses/default_bus_layout"); file->set_text(String(TTR("Layout")) + ": " + layout_path.get_file()); file->set_clip_text(true); file->set_h_size_flags(SIZE_EXPAND_FILL); @@ -1313,7 +1313,7 @@ EditorAudioBuses::EditorAudioBuses() { set_v_size_flags(SIZE_EXPAND_FILL); - edited_path = ProjectSettings::get_singleton()->get("audio/default_bus_layout"); + edited_path = ProjectSettings::get_singleton()->get("audio/buses/default_bus_layout"); file_dialog = memnew(EditorFileDialog); List<String> ext; @@ -1330,7 +1330,7 @@ EditorAudioBuses::EditorAudioBuses() { void EditorAudioBuses::open_layout(const String &p_path) { EditorNode::get_singleton()->make_bottom_panel_item_visible(this); - Ref<AudioBusLayout> state = ResourceLoader::load(p_path, "", true); + Ref<AudioBusLayout> state = ResourceLoader::load(p_path, "", ResourceFormatLoader::CACHE_MODE_IGNORE); if (state.is_null()) { EditorNode::get_singleton()->show_warning(TTR("Invalid file, not an audio bus layout.")); return; diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp index 1d3bd55ed3..213c3f5631 100644 --- a/editor/editor_data.cpp +++ b/editor/editor_data.cpp @@ -273,16 +273,6 @@ EditorPlugin *EditorData::get_editor(Object *p_object) { return nullptr; } -EditorPlugin *EditorData::get_subeditor(Object *p_object) { - for (int i = editor_plugins.size() - 1; i > -1; i--) { - if (!editor_plugins[i]->has_main_screen() && editor_plugins[i]->handles(p_object)) { - return editor_plugins[i]; - } - } - - return nullptr; -} - Vector<EditorPlugin *> EditorData::get_subeditors(Object *p_object) { Vector<EditorPlugin *> sub_plugins; for (int i = editor_plugins.size() - 1; i > -1; i--) { @@ -510,6 +500,7 @@ int EditorData::add_edited_scene(int p_at_pos) { EditedScene es; es.root = nullptr; es.path = String(); + es.file_modified_time = 0; es.history_current = -1; es.version = 0; es.live_edit_root = NodePath(String("/root")); @@ -666,6 +657,10 @@ void EditorData::set_edited_scene_root(Node *p_root) { p_root->set_filename(edited_scene[current_edited_scene].path); } } + + if (edited_scene[current_edited_scene].path != "") { + edited_scene.write[current_edited_scene].file_modified_time = FileAccess::get_modified_time(edited_scene[current_edited_scene].path); + } } int EditorData::get_edited_scene_count() const { @@ -697,6 +692,21 @@ uint64_t EditorData::get_scene_version(int p_idx) const { return edited_scene[p_idx].version; } +void EditorData::set_scene_modified_time(int p_idx, uint64_t p_time) { + if (p_idx == -1) { + p_idx = current_edited_scene; + } + + ERR_FAIL_INDEX(p_idx, edited_scene.size()); + + edited_scene.write[p_idx].file_modified_time = p_time; +} + +uint64_t EditorData::get_scene_modified_time(int p_idx) const { + ERR_FAIL_INDEX_V(p_idx, edited_scene.size(), 0); + return edited_scene[p_idx].file_modified_time; +} + String EditorData::get_scene_type(int p_idx) const { ERR_FAIL_INDEX_V(p_idx, edited_scene.size(), String()); if (!edited_scene[p_idx].root) { @@ -932,6 +942,14 @@ void EditorData::script_class_save_icon_paths() { } } + Dictionary old; + if (ProjectSettings::get_singleton()->has_setting("_global_script_class_icons")) { + old = ProjectSettings::get_singleton()->get("_global_script_class_icons"); + } + if ((!old.is_empty() || d.is_empty()) && d.hash() == old.hash()) { + return; + } + if (d.is_empty()) { if (ProjectSettings::get_singleton()->has_setting("_global_script_class_icons")) { ProjectSettings::get_singleton()->clear("_global_script_class_icons"); diff --git a/editor/editor_data.h b/editor/editor_data.h index d5c8c2a713..18b4137162 100644 --- a/editor/editor_data.h +++ b/editor/editor_data.h @@ -111,6 +111,7 @@ public: struct EditedScene { Node *root = nullptr; String path; + uint64_t file_modified_time = 0; Dictionary editor_states; List<Node *> selection; Vector<EditorHistory::History> history_stored; @@ -144,7 +145,6 @@ private: public: EditorPlugin *get_editor(Object *p_object); - EditorPlugin *get_subeditor(Object *p_object); Vector<EditorPlugin *> get_subeditors(Object *p_object); EditorPlugin *get_editor(String p_name); @@ -191,6 +191,8 @@ public: Ref<Script> get_scene_root_script(int p_idx) const; void set_edited_scene_version(uint64_t version, int p_scene_idx = -1); uint64_t get_scene_version(int p_idx) const; + void set_scene_modified_time(int p_idx, uint64_t p_time); + uint64_t get_scene_modified_time(int p_idx) const; void clear_edited_scenes(); void set_edited_scene_live_edit_root(const NodePath &p_root); NodePath get_edited_scene_live_edit_root(); diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp index dd3e81c8c0..949306de42 100644 --- a/editor/editor_export.cpp +++ b/editor/editor_export.cpp @@ -1028,6 +1028,10 @@ Error EditorExportPlatform::_add_shared_object(void *p_userdata, const SharedObj Error EditorExportPlatform::save_pack(const Ref<EditorExportPreset> &p_preset, const String &p_path, Vector<SharedObject> *p_so_files, bool p_embed, int64_t *r_embedded_start, int64_t *r_embedded_size) { EditorProgress ep("savepack", TTR("Packing"), 102, true); + // Create the temporary export directory if it doesn't exist. + DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); + da->make_dir_recursive(EditorSettings::get_singleton()->get_cache_dir()); + String tmppath = EditorSettings::get_singleton()->get_cache_dir().plus_file("packtmp"); FileAccess *ftmp = FileAccess::open(tmppath, FileAccess::WRITE); ERR_FAIL_COND_V_MSG(!ftmp, ERR_CANT_CREATE, "Cannot create file '" + tmppath + "'."); @@ -1399,9 +1403,9 @@ void EditorExport::add_export_preset(const Ref<EditorExportPreset> &p_preset, in } String EditorExportPlatform::test_etc2() const { - String driver = ProjectSettings::get_singleton()->get("rendering/quality/driver/driver_name"); - bool etc_supported = ProjectSettings::get_singleton()->get("rendering/vram_compression/import_etc"); - bool etc2_supported = ProjectSettings::get_singleton()->get("rendering/vram_compression/import_etc2"); + String driver = ProjectSettings::get_singleton()->get("rendering/driver/driver_name"); + bool etc_supported = ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_etc"); + bool etc2_supported = ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_etc2"); if (driver == "GLES2" && !etc_supported) { return TTR("Target platform requires 'ETC' texture compression for GLES2. Enable 'Import Etc' in Project Settings."); @@ -1413,9 +1417,9 @@ String EditorExportPlatform::test_etc2() const { } String EditorExportPlatform::test_etc2_or_pvrtc() const { - String driver = ProjectSettings::get_singleton()->get("rendering/quality/driver/driver_name"); - bool etc2_supported = ProjectSettings::get_singleton()->get("rendering/vram_compression/import_etc2"); - bool pvrtc_supported = ProjectSettings::get_singleton()->get("rendering/vram_compression/import_pvrtc"); + String driver = ProjectSettings::get_singleton()->get("rendering/driver/driver_name"); + bool etc2_supported = ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_etc2"); + bool pvrtc_supported = ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_pvrtc"); if (driver == "GLES2" && !pvrtc_supported) { return TTR("Target platform requires 'PVRTC' texture compression for GLES2. Enable 'Import Pvrtc' in Project Settings."); @@ -1898,7 +1902,7 @@ void EditorExportTextSceneToBinaryPlugin::_export_file(const String &p_path, con return; } - bool convert = GLOBAL_GET("editor/convert_text_resources_to_binary_on_export"); + bool convert = GLOBAL_GET("editor/export/convert_text_resources_to_binary"); if (!convert) { return; } @@ -1918,5 +1922,5 @@ void EditorExportTextSceneToBinaryPlugin::_export_file(const String &p_path, con } EditorExportTextSceneToBinaryPlugin::EditorExportTextSceneToBinaryPlugin() { - GLOBAL_DEF("editor/convert_text_resources_to_binary_on_export", false); + GLOBAL_DEF("editor/export/convert_text_resources_to_binary", false); } diff --git a/editor/editor_feature_profile.cpp b/editor/editor_feature_profile.cpp index af02fcaf3c..bd00d86ec8 100644 --- a/editor/editor_feature_profile.cpp +++ b/editor/editor_feature_profile.cpp @@ -277,11 +277,7 @@ void EditorFeatureProfile::_bind_methods() { BIND_ENUM_CONSTANT(FEATURE_MAX); } -EditorFeatureProfile::EditorFeatureProfile() { - for (int i = 0; i < FEATURE_MAX; i++) { - features_disabled[i] = false; - } -} +EditorFeatureProfile::EditorFeatureProfile() {} ////////////////////////// diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp index 76814ea378..3c6649a66a 100644 --- a/editor/editor_file_system.cpp +++ b/editor/editor_file_system.cpp @@ -595,7 +595,7 @@ void EditorFileSystem::scan() { return; } - if (scanning || scanning_changes || thread) { + if (scanning || scanning_changes || thread.is_started()) { return; } @@ -619,13 +619,13 @@ void EditorFileSystem::scan() { _queue_update_script_classes(); first_scan = false; } else { - ERR_FAIL_COND(thread); + ERR_FAIL_COND(thread.is_started()); set_process(true); Thread::Settings s; scanning = true; scan_total = 0; s.priority = Thread::PRIORITY_LOW; - thread = Thread::create(_thread_func, this, s); + thread.start(_thread_func, this, s); //tree->hide(); //progress->show(); } @@ -1046,7 +1046,7 @@ void EditorFileSystem::_thread_func_sources(void *_userdata) { void EditorFileSystem::scan_changes() { if (first_scan || // Prevent a premature changes scan from inhibiting the first full scan - scanning || scanning_changes || thread) { + scanning || scanning_changes || thread.is_started()) { scan_changes_pending = true; set_process(true); return; @@ -1076,12 +1076,12 @@ void EditorFileSystem::scan_changes() { scanning_changes_done = true; emit_signal("sources_changed", sources_changed.size() > 0); } else { - ERR_FAIL_COND(thread_sources); + ERR_FAIL_COND(thread_sources.is_started()); set_process(true); scan_total = 0; Thread::Settings s; s.priority = Thread::PRIORITY_LOW; - thread_sources = Thread::create(_thread_func_sources, this, s); + thread_sources.start(_thread_func_sources, this, s); } } @@ -1092,17 +1092,14 @@ void EditorFileSystem::_notification(int p_what) { } break; case NOTIFICATION_EXIT_TREE: { - Thread *active_thread = thread ? thread : thread_sources; - if (use_threads && active_thread) { + Thread &active_thread = thread.is_started() ? thread : thread_sources; + if (use_threads && active_thread.is_started()) { //abort thread if in progress abort_scan = true; while (scanning) { OS::get_singleton()->delay_usec(1000); } - Thread::wait_to_finish(active_thread); - memdelete(active_thread); - thread = nullptr; - thread_sources = nullptr; + active_thread.wait_to_finish(); WARN_PRINT("Scan thread aborted..."); set_process(false); } @@ -1125,9 +1122,7 @@ void EditorFileSystem::_notification(int p_what) { set_process(false); - Thread::wait_to_finish(thread_sources); - memdelete(thread_sources); - thread_sources = nullptr; + thread_sources.wait_to_finish(); if (_update_scan_actions()) { emit_signal("filesystem_changed"); } @@ -1135,7 +1130,7 @@ void EditorFileSystem::_notification(int p_what) { _queue_update_script_classes(); first_scan = false; } - } else if (!scanning && thread) { + } else if (!scanning && thread.is_started()) { set_process(false); if (filesystem) { @@ -1143,9 +1138,7 @@ void EditorFileSystem::_notification(int p_what) { } filesystem = new_filesystem; new_filesystem = nullptr; - Thread::wait_to_finish(thread); - memdelete(thread); - thread = nullptr; + thread.wait_to_finish(); _update_scan_actions(); emit_signal("filesystem_changed"); emit_signal("sources_changed", sources_changed.size() > 0); @@ -1420,11 +1413,11 @@ void EditorFileSystem::_scan_script_classes(EditorFileSystemDirectory *p_dir) { } void EditorFileSystem::update_script_classes() { - if (!update_script_classes_queued) { + if (!update_script_classes_queued.is_set()) { return; } - update_script_classes_queued = false; + update_script_classes_queued.clear(); ScriptServer::global_classes_clear(); if (get_filesystem()) { _scan_script_classes(get_filesystem()); @@ -1443,11 +1436,11 @@ void EditorFileSystem::update_script_classes() { } void EditorFileSystem::_queue_update_script_classes() { - if (update_script_classes_queued) { + if (update_script_classes_queued.is_set()) { return; } - update_script_classes_queued = true; + update_script_classes_queued.set(); call_deferred("update_script_classes"); } @@ -2074,17 +2067,15 @@ void EditorFileSystem::_update_extensions() { EditorFileSystem::EditorFileSystem() { ResourceLoader::import = _resource_import; - reimport_on_missing_imported_files = GLOBAL_DEF("editor/reimport_missing_imported_files", true); + reimport_on_missing_imported_files = GLOBAL_DEF("editor/import/reimport_missing_imported_files", true); singleton = this; filesystem = memnew(EditorFileSystemDirectory); //like, empty filesystem->parent = nullptr; - thread = nullptr; scanning = false; importing = false; use_threads = true; - thread_sources = nullptr; new_filesystem = nullptr; abort_scan = false; @@ -2100,7 +2091,7 @@ EditorFileSystem::EditorFileSystem() { memdelete(da); scan_total = 0; - update_script_classes_queued = false; + update_script_classes_queued.clear(); first_scan = true; scan_changes_pending = false; revalidate_import_files = false; diff --git a/editor/editor_file_system.h b/editor/editor_file_system.h index c0e11a0402..dec2330256 100644 --- a/editor/editor_file_system.h +++ b/editor/editor_file_system.h @@ -34,6 +34,7 @@ #include "core/os/dir_access.h" #include "core/os/thread.h" #include "core/os/thread_safe.h" +#include "core/templates/safe_refcount.h" #include "core/templates/set.h" #include "scene/main/node.h" class FileAccess; @@ -127,7 +128,7 @@ class EditorFileSystem : public Node { }; bool use_threads; - Thread *thread; + Thread thread; static void _thread_func(void *_userdata); EditorFileSystemDirectory *new_filesystem; @@ -189,7 +190,7 @@ class EditorFileSystem : public Node { void _scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess *da, const ScanProgress &p_progress); - Thread *thread_sources; + Thread thread_sources; bool scanning_changes; bool scanning_changes_done; @@ -220,7 +221,7 @@ class EditorFileSystem : public Node { }; void _scan_script_classes(EditorFileSystemDirectory *p_dir); - volatile bool update_script_classes_queued; + SafeFlag update_script_classes_queued; void _queue_update_script_classes(); String _get_global_script_class(const String &p_type, const String &p_path, String *r_extends, String *r_icon_path) const; diff --git a/editor/editor_folding.cpp b/editor/editor_folding.cpp index 9f98795e16..97a2c67c26 100644 --- a/editor/editor_folding.cpp +++ b/editor/editor_folding.cpp @@ -259,13 +259,17 @@ void EditorFolding::_do_object_unfolds(Object *p_object, Set<RES> &resources) { } } } - } - if (E->get().type == Variant::OBJECT) { - RES res = p_object->get(E->get().name); - if (res.is_valid() && !resources.has(res) && res->get_path() != String() && !res->get_path().is_resource_file()) { - resources.insert(res); - _do_object_unfolds(res.ptr(), resources); + if (E->get().type == Variant::OBJECT) { + RES res = p_object->get(E->get().name); + print_line("res: " + String(E->get().name) + " valid " + itos(res.is_valid())); + if (res.is_valid()) { + print_line("path " + res->get_path()); + } + if (res.is_valid() && !resources.has(res) && res->get_path() != String() && !res->get_path().is_resource_file()) { + resources.insert(res); + _do_object_unfolds(res.ptr(), resources); + } } } } diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index 135c40a851..283713cd3c 100644 --- a/editor/editor_help.cpp +++ b/editor/editor_help.cpp @@ -1331,11 +1331,11 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) { Ref<Font> doc_code_font = p_rt->get_theme_font("doc_source", "EditorFonts"); Ref<Font> doc_kbd_font = p_rt->get_theme_font("doc_keyboard", "EditorFonts"); - Color font_color_hl = p_rt->get_theme_color("headline_color", "EditorHelp"); + Color headline_color = p_rt->get_theme_color("headline_color", "EditorHelp"); Color accent_color = p_rt->get_theme_color("accent_color", "Editor"); Color property_color = p_rt->get_theme_color("property_color", "Editor"); - Color link_color = accent_color.lerp(font_color_hl, 0.8); - Color code_color = accent_color.lerp(font_color_hl, 0.6); + Color link_color = accent_color.lerp(headline_color, 0.8); + Color code_color = accent_color.lerp(headline_color, 0.6); Color kbd_color = accent_color.lerp(property_color, 0.6); String bbcode = p_bbcode.dedent().replace("\t", "").replace("\r", "").strip_edges(); @@ -1481,7 +1481,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) { tag_stack.push_front(tag); } else if (tag == "i") { //use italics font - p_rt->push_color(font_color_hl); + p_rt->push_color(headline_color); pos = brk_end + 1; tag_stack.push_front(tag); } else if (tag == "code" || tag == "codeblock") { diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index df330d8685..60071f6263 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -81,7 +81,7 @@ Size2 EditorProperty::get_minimum_size() const { } if (bottom_editor != nullptr && bottom_editor->is_visible()) { - ms.height += get_theme_constant("vseparation", "Tree"); + ms.height += get_theme_constant("vseparation"); Size2 bems = bottom_editor->get_combined_minimum_size(); //bems.width += get_constant("item_margin", "Tree"); ms.height += bems.height; @@ -95,6 +95,7 @@ void EditorProperty::emit_changed(const StringName &p_property, const Variant &p Variant args[4] = { p_property, p_value, p_field, p_changing }; const Variant *argptrs[4] = { &args[0], &args[1], &args[2], &args[3] }; + cache[p_property] = p_value; emit_signal("property_changed", (const Variant **)argptrs, 4); } @@ -148,7 +149,7 @@ void EditorProperty::_notification(int p_what) { if (bottom_editor) { int m = 0; //get_constant("item_margin", "Tree"); - bottom_rect = Rect2(m, rect.size.height + get_theme_constant("vseparation", "Tree"), size.width - m, bottom_editor->get_combined_minimum_size().height); + bottom_rect = Rect2(m, rect.size.height + get_theme_constant("vseparation"), size.width - m, bottom_editor->get_combined_minimum_size().height); } if (keying) { @@ -225,11 +226,15 @@ void EditorProperty::_notification(int p_what) { size.height = label_reference->get_size().height; } + Ref<StyleBox> sb; if (selected) { - Ref<StyleBox> sb = get_theme_stylebox("selected", "Tree"); - draw_style_box(sb, Rect2(Vector2(), size)); + sb = get_theme_stylebox("bg_selected"); + } else { + sb = get_theme_stylebox("bg"); } + draw_style_box(sb, Rect2(Vector2(), size)); + if (draw_top_bg && right_child_rect != Rect2()) { draw_rect(right_child_rect, dark_color); } @@ -239,15 +244,15 @@ void EditorProperty::_notification(int p_what) { Color color; if (draw_red) { - color = get_theme_color("error_color", "Editor"); + color = get_theme_color("error_color"); } else { - color = get_theme_color("property_color", "Editor"); + color = get_theme_color("property_color"); } if (label.find(".") != -1) { color.a = 0.5; //this should be un-hacked honestly, as it's used for editor overrides } - int ofs = 0; + int ofs = get_theme_constant("font_offset"); int text_limit = text_size; if (checkable) { @@ -805,6 +810,28 @@ void EditorProperty::set_bottom_editor(Control *p_control) { bottom_editor = p_control; } +bool EditorProperty::is_cache_valid() const { + if (object) { + for (Map<StringName, Variant>::Element *E = cache.front(); E; E = E->next()) { + bool valid; + Variant value = object->get(E->key(), &valid); + if (!valid || value != E->get()) { + return false; + } + } + } + return true; +} +void EditorProperty::update_cache() { + cache.clear(); + if (object && property != StringName()) { + bool valid; + Variant value = object->get(property, &valid); + if (valid) { + cache[property] = value; + } + } +} Variant EditorProperty::get_drag_data(const Point2 &p_point) { if (property == StringName()) { return Variant(); @@ -1524,6 +1551,7 @@ void EditorInspector::_parse_added_editors(VBoxContainer *current_vbox, Ref<Edit ep->update_property(); ep->update_reload_status(); ep->set_deletable(deletable_properties); + ep->update_cache(); } } ped->added_editors.clear(); @@ -1661,7 +1689,7 @@ void EditorInspector::update_tree() { bool valid = true; //if no properties in category, skip while (N) { - if (N->get().usage & PROPERTY_USAGE_EDITOR) { + if (N->get().usage & PROPERTY_USAGE_EDITOR && (!restrict_to_basic || (N->get().usage & PROPERTY_USAGE_EDITOR_BASIC_SETTING))) { break; } if (N->get().usage & PROPERTY_USAGE_CATEGORY) { @@ -1729,7 +1757,7 @@ void EditorInspector::update_tree() { continue; - } else if (!(p.usage & PROPERTY_USAGE_EDITOR) || _is_property_disabled_by_feature_profile(p.name)) { + } else if (!(p.usage & PROPERTY_USAGE_EDITOR) || _is_property_disabled_by_feature_profile(p.name) || (restrict_to_basic && !(p.usage & PROPERTY_USAGE_EDITOR_BASIC_SETTING))) { continue; } @@ -1982,6 +2010,7 @@ void EditorInspector::update_tree() { } ep->update_property(); ep->update_reload_status(); + ep->update_cache(); if (current_selected && ep->property == current_selected) { ep->select(current_focusable); @@ -2012,6 +2041,7 @@ void EditorInspector::update_property(const String &p_prop) { for (List<EditorProperty *>::Element *E = editor_property_map[p_prop].front(); E; E = E->next()) { E->get()->update_property(); E->get()->update_reload_status(); + E->get()->update_cache(); } } @@ -2027,13 +2057,6 @@ void EditorInspector::_clear() { restart_request_props.clear(); } -void EditorInspector::refresh() { - if (refresh_countdown > 0 || changing) { - return; - } - refresh_countdown = EditorSettings::get_singleton()->get("docks/property_editor/auto_refresh_interval"); -} - Object *EditorInspector::get_edited_object() { return object; } @@ -2044,7 +2067,7 @@ void EditorInspector::edit(Object *p_object) { } if (object) { _clear(); - object->remove_change_receptor(this); + object->disconnect("property_list_changed", callable_mp(this, &EditorInspector::_changed_callback)); } object = p_object; @@ -2054,7 +2077,7 @@ void EditorInspector::edit(Object *p_object) { if (scroll_cache.has(object->get_instance_id())) { //if exists, set something else update_scroll_request = scroll_cache[object->get_instance_id()]; //done this way because wait until full size is accommodated } - object->add_change_receptor(this); + object->connect("property_list_changed", callable_mp(this, &EditorInspector::_changed_callback)); update_tree(); } } @@ -2161,17 +2184,30 @@ void EditorInspector::set_use_wide_editors(bool p_enable) { wide_editors = p_enable; } +void EditorInspector::_update_inspector_bg() { + if (sub_inspector) { + int count_subinspectors = 0; + Node *n = get_parent(); + while (n) { + EditorInspector *ei = Object::cast_to<EditorInspector>(n); + if (ei && ei->sub_inspector) { + count_subinspectors++; + } + n = n->get_parent(); + } + count_subinspectors = MIN(15, count_subinspectors); + add_theme_style_override("bg", get_theme_stylebox("sub_inspector_bg" + itos(count_subinspectors), "Editor")); + } else { + add_theme_style_override("bg", get_theme_stylebox("bg", "Tree")); + } +} void EditorInspector::set_sub_inspector(bool p_enable) { sub_inspector = p_enable; if (!is_inside_tree()) { return; } - if (sub_inspector) { - add_theme_style_override("bg", get_theme_stylebox("sub_inspector_bg", "Editor")); - } else { - add_theme_style_override("bg", get_theme_stylebox("bg", "Tree")); - } + _update_inspector_bg(); } void EditorInspector::set_use_deletable_properties(bool p_enabled) { @@ -2351,6 +2387,7 @@ void EditorInspector::_property_checked(const String &p_path, bool p_checked) { for (List<EditorProperty *>::Element *E = editor_property_map[p_path].front(); E; E = E->next()) { E->get()->update_property(); E->get()->update_reload_status(); + E->get()->update_cache(); } } @@ -2394,13 +2431,12 @@ void EditorInspector::_node_removed(Node *p_node) { void EditorInspector::_notification(int p_what) { if (p_what == NOTIFICATION_READY) { EditorFeatureProfileManager::get_singleton()->connect("current_feature_profile_changed", callable_mp(this, &EditorInspector::_feature_profile_changed)); + set_process(is_visible_in_tree()); } if (p_what == NOTIFICATION_ENTER_TREE) { - if (sub_inspector) { - add_theme_style_override("bg", get_theme_stylebox("sub_inspector_bg", "Editor")); - } else { - add_theme_style_override("bg", get_theme_stylebox("bg", "Tree")); + _update_inspector_bg(); + if (!sub_inspector) { get_tree()->connect("node_removed", callable_mp(this, &EditorInspector::_node_removed)); } } @@ -2414,6 +2450,10 @@ void EditorInspector::_notification(int p_what) { edit(nullptr); } + if (p_what == NOTIFICATION_VISIBILITY_CHANGED) { + set_process(is_visible_in_tree()); + } + if (p_what == NOTIFICATION_PROCESS) { if (update_scroll_request >= 0) { get_v_scrollbar()->call_deferred("set_value", update_scroll_request); @@ -2424,10 +2464,14 @@ void EditorInspector::_notification(int p_what) { if (refresh_countdown <= 0) { for (Map<StringName, List<EditorProperty *>>::Element *F = editor_property_map.front(); F; F = F->next()) { for (List<EditorProperty *>::Element *E = F->get().front(); E; E = E->next()) { - E->get()->update_property(); - E->get()->update_reload_status(); + if (!E->get()->is_cache_valid()) { + E->get()->update_property(); + E->get()->update_reload_status(); + E->get()->update_cache(); + } } } + refresh_countdown = float(EditorSettings::get_singleton()->get("docks/property_editor/auto_refresh_interval")); } } @@ -2445,6 +2489,7 @@ void EditorInspector::_notification(int p_what) { for (List<EditorProperty *>::Element *E = editor_property_map[prop].front(); E; E = E->next()) { E->get()->update_property(); E->get()->update_reload_status(); + E->get()->update_cache(); } } pending.erase(pending.front()); @@ -2455,19 +2500,17 @@ void EditorInspector::_notification(int p_what) { } if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) { - if (sub_inspector) { - add_theme_style_override("bg", get_theme_stylebox("sub_inspector_bg", "Editor")); - } else if (is_inside_tree()) { - add_theme_style_override("bg", get_theme_stylebox("bg", "Tree")); - } + _update_inspector_bg(); update_tree(); } } -void EditorInspector::_changed_callback(Object *p_changed, const char *p_prop) { - //this is called when property change is notified via _change_notify() - _edit_request_change(p_changed, p_prop); +void EditorInspector::_changed_callback() { + //this is called when property change is notified via notify_property_list_changed() + if (object != nullptr) { + _edit_request_change(object, String()); + } } void EditorInspector::_vscroll_changed(double p_offset) { @@ -2506,22 +2549,11 @@ void EditorInspector::_update_script_class_properties(const Object &p_object, Li return; } - List<StringName> classes; - Map<StringName, String> paths; + List<Ref<Script>> classes; // NodeC -> NodeB -> NodeA while (script.is_valid()) { - String n = EditorNode::get_editor_data().script_class_get_name(script->get_path()); - if (n.length()) { - classes.push_front(n); - } else if (script->get_path() != String() && script->get_path().find("::") == -1) { - n = script->get_path().get_file(); - classes.push_front(n); - } else { - n = TTR("Built-in script"); - classes.push_front(n); - } - paths[n] = script->get_path(); + classes.push_front(script); script = script->get_base_script(); } @@ -2545,17 +2577,18 @@ void EditorInspector::_update_script_class_properties(const Object &p_object, Li } Set<StringName> added; - for (List<StringName>::Element *E = classes.front(); E; E = E->next()) { - StringName name = E->get(); - String path = paths[name]; - Ref<Script> s; - if (path == String()) { - // Built-in script. It can't be inherited, so must be the script attached to the object. - s = p_object.get_script(); - } else { - s = ResourceLoader::load(path, "Script"); + for (List<Ref<Script>>::Element *E = classes.front(); E; E = E->next()) { + Ref<Script> s = E->get(); + String path = s->get_path(); + String name = EditorNode::get_editor_data().script_class_get_name(path); + if (name.is_empty()) { + if (!path.is_empty() && path.find("::") == -1) { + name = path.get_file(); + } else { + name = TTR("Built-in script"); + } } - ERR_FAIL_COND(!s->is_valid()); + List<PropertyInfo> props; s->get_script_property_list(&props); @@ -2587,11 +2620,14 @@ void EditorInspector::_update_script_class_properties(const Object &p_object, Li r_list.erase(bottom); } +void EditorInspector::set_restrict_to_basic_settings(bool p_restrict) { + restrict_to_basic = p_restrict; + update_tree(); +} + void EditorInspector::_bind_methods() { ClassDB::bind_method("_edit_request_change", &EditorInspector::_edit_request_change); - ClassDB::bind_method("refresh", &EditorInspector::refresh); - ADD_SIGNAL(MethodInfo("property_selected", PropertyInfo(Variant::STRING, "property"))); ADD_SIGNAL(MethodInfo("property_keyed", PropertyInfo(Variant::STRING, "property"))); ADD_SIGNAL(MethodInfo("property_deleted", PropertyInfo(Variant::STRING, "property"))); @@ -2623,16 +2659,21 @@ EditorInspector::EditorInspector() { use_folding = false; update_all_pending = false; update_tree_pending = false; - refresh_countdown = 0; read_only = false; search_box = nullptr; keying = false; _prop_edited = "property_edited"; - set_process(true); + set_process(false); property_focusable = -1; sub_inspector = false; deletable_properties = false; get_v_scrollbar()->connect("value_changed", callable_mp(this, &EditorInspector::_vscroll_changed)); update_scroll_request = -1; + if (EditorSettings::get_singleton()) { + refresh_countdown = float(EditorSettings::get_singleton()->get("docks/property_editor/auto_refresh_interval")); + } else { + //used when class is created by the docgen to dump default values of everything bindable, editorsettings may not be created + refresh_countdown = 0.33; + } } diff --git a/editor/editor_inspector.h b/editor/editor_inspector.h index 81a22d4ff1..18250780be 100644 --- a/editor/editor_inspector.h +++ b/editor/editor_inspector.h @@ -98,6 +98,8 @@ private: mutable String tooltip_text; + Map<StringName, Variant> cache; + protected: void _notification(int p_what); static void _bind_methods(); @@ -152,6 +154,8 @@ public: virtual void collapse_all_folding(); virtual Variant get_drag_data(const Point2 &p_point) override; + virtual void update_cache(); + virtual bool is_cache_valid() const; void set_selectable(bool p_selectable); bool is_selectable() const; @@ -309,6 +313,8 @@ class EditorInspector : public ScrollContainer { String property_prefix; //used for sectioned inspector String object_class; + bool restrict_to_basic = false; + void _edit_set(const String &p_name, const Variant &p_value, bool p_refresh_all, const String &p_changed_field); void _property_changed(const String &p_path, const Variant &p_value, const String &p_name = "", bool p_changing = false); @@ -326,7 +332,7 @@ class EditorInspector : public ScrollContainer { void _node_removed(Node *p_node); - void _changed_callback(Object *p_changed, const char *p_prop) override; + void _changed_callback(); void _edit_request_change(Object *p_object, const String &p_prop); void _filter_changed(const String &p_text); @@ -339,6 +345,8 @@ class EditorInspector : public ScrollContainer { bool _is_property_disabled_by_feature_profile(const StringName &p_property); + void _update_inspector_bg(); + protected: static void _bind_methods(); void _notification(int p_what); @@ -356,9 +364,6 @@ public: void update_tree(); void update_property(const String &p_prop); - - void refresh(); - void edit(Object *p_object); Object *get_edited_object(); @@ -393,9 +398,12 @@ public: void set_use_wide_editors(bool p_enable); void set_sub_inspector(bool p_enable); + bool is_sub_inspector() const { return sub_inspector; } void set_use_deletable_properties(bool p_enabled); + void set_restrict_to_basic_settings(bool p_restrict); + EditorInspector(); }; diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index f5260f773d..ec8430e645 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -430,6 +430,74 @@ void EditorNode::_unhandled_input(const Ref<InputEvent> &p_event) { } } +void EditorNode::_update_from_settings() { + int current_filter = GLOBAL_GET("rendering/textures/canvas_textures/default_texture_filter"); + if (current_filter != scene_root->get_default_canvas_item_texture_filter()) { + Viewport::DefaultCanvasItemTextureFilter tf = (Viewport::DefaultCanvasItemTextureFilter)current_filter; + scene_root->set_default_canvas_item_texture_filter(tf); + } + int current_repeat = GLOBAL_GET("rendering/textures/canvas_textures/default_texture_repeat"); + if (current_repeat != scene_root->get_default_canvas_item_texture_repeat()) { + Viewport::DefaultCanvasItemTextureRepeat tr = (Viewport::DefaultCanvasItemTextureRepeat)current_repeat; + scene_root->set_default_canvas_item_texture_repeat(tr); + } + + RS::DOFBokehShape dof_shape = RS::DOFBokehShape(int(GLOBAL_GET("rendering/camera/depth_of_field/depth_of_field_bokeh_shape"))); + RS::get_singleton()->camera_effects_set_dof_blur_bokeh_shape(dof_shape); + RS::DOFBlurQuality dof_quality = RS::DOFBlurQuality(int(GLOBAL_GET("rendering/camera/depth_of_field/depth_of_field_bokeh_quality"))); + bool dof_jitter = GLOBAL_GET("rendering/camera/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/environment/ssao/quality"))), GLOBAL_GET("rendering/environment/ssao/half_size"), GLOBAL_GET("rendering/environment/ssao/adaptive_target"), GLOBAL_GET("rendering/environment/ssao/blur_passes"), GLOBAL_GET("rendering/environment/ssao/fadeout_from"), GLOBAL_GET("rendering/environment/ssao/fadeout_to")); + RS::get_singleton()->screen_space_roughness_limiter_set_active(GLOBAL_GET("rendering/anti_aliasing/screen_space_roughness_limiter/enabled"), GLOBAL_GET("rendering/anti_aliasing/screen_space_roughness_limiter/amount"), GLOBAL_GET("rendering/anti_aliasing/screen_space_roughness_limiter/limit")); + bool glow_bicubic = int(GLOBAL_GET("rendering/environment/glow/upscale_mode")) > 0; + RS::get_singleton()->environment_glow_set_use_bicubic_upscale(glow_bicubic); + bool glow_high_quality = GLOBAL_GET("rendering/environment/glow/use_high_quality"); + RS::get_singleton()->environment_glow_set_use_high_quality(glow_high_quality); + RS::EnvironmentSSRRoughnessQuality ssr_roughness_quality = RS::EnvironmentSSRRoughnessQuality(int(GLOBAL_GET("rendering/environment/screen_space_reflection/roughness_quality"))); + RS::get_singleton()->environment_set_ssr_roughness_quality(ssr_roughness_quality); + RS::SubSurfaceScatteringQuality sss_quality = RS::SubSurfaceScatteringQuality(int(GLOBAL_GET("rendering/environment/subsurface_scattering/subsurface_scattering_quality"))); + RS::get_singleton()->sub_surface_scattering_set_quality(sss_quality); + float sss_scale = GLOBAL_GET("rendering/environment/subsurface_scattering/subsurface_scattering_scale"); + float sss_depth_scale = GLOBAL_GET("rendering/environment/subsurface_scattering/subsurface_scattering_depth_scale"); + RS::get_singleton()->sub_surface_scattering_set_scale(sss_scale, sss_depth_scale); + + uint32_t directional_shadow_size = GLOBAL_GET("rendering/shadows/directional_shadow/size"); + uint32_t directional_shadow_16_bits = GLOBAL_GET("rendering/shadows/directional_shadow/16_bits"); + RS::get_singleton()->directional_shadow_atlas_set_size(directional_shadow_size, directional_shadow_16_bits); + + RS::ShadowQuality shadows_quality = RS::ShadowQuality(int(GLOBAL_GET("rendering/shadows/shadows/soft_shadow_quality"))); + RS::get_singleton()->shadows_quality_set(shadows_quality); + RS::ShadowQuality directional_shadow_quality = RS::ShadowQuality(int(GLOBAL_GET("rendering/shadows/directional_shadow/soft_shadow_quality"))); + RS::get_singleton()->directional_shadow_quality_set(directional_shadow_quality); + float probe_update_speed = GLOBAL_GET("rendering/lightmapping/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/global_illumination/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/global_illumination/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/global_illumination/gi_probes/quality"))); + RS::get_singleton()->gi_probe_set_quality(gi_probe_quality); + RS::get_singleton()->environment_set_volumetric_fog_volume_size(GLOBAL_GET("rendering/environment/volumetric_fog/volume_size"), GLOBAL_GET("rendering/environment/volumetric_fog/volume_depth")); + RS::get_singleton()->environment_set_volumetric_fog_filter_active(bool(GLOBAL_GET("rendering/environment/volumetric_fog/use_filter"))); + RS::get_singleton()->canvas_set_shadow_texture_size(GLOBAL_GET("rendering/2d/shadow_atlas/size")); + + bool use_half_res_gi = GLOBAL_DEF("rendering/global_illumination/gi/use_half_resolution", false); + RS::get_singleton()->gi_set_use_half_resolution(use_half_res_gi); + + bool snap_2d_transforms = GLOBAL_GET("rendering/2d/snap/snap_2d_transforms_to_pixel"); + scene_root->set_snap_2d_transforms_to_pixel(snap_2d_transforms); + bool snap_2d_vertices = GLOBAL_GET("rendering/2d/snap/snap_2d_vertices_to_pixel"); + scene_root->set_snap_2d_vertices_to_pixel(snap_2d_vertices); + + Viewport::SDFOversize sdf_oversize = Viewport::SDFOversize(int(GLOBAL_GET("rendering/2d/sdf/oversize"))); + scene_root->set_sdf_oversize(sdf_oversize); + Viewport::SDFScale sdf_scale = Viewport::SDFScale(int(GLOBAL_GET("rendering/2d/sdf/scale"))); + scene_root->set_sdf_scale(sdf_scale); + + float lod_threshold = GLOBAL_GET("rendering/mesh_lod/lod_change/threshold_pixels"); + scene_root->set_lod_threshold(lod_threshold); +} + void EditorNode::_notification(int p_what) { switch (p_what) { case NOTIFICATION_PROCESS: { @@ -468,69 +536,13 @@ void EditorNode::_notification(int p_what) { editor_selection->update(); - { //TODO should only happen on settings changed - int current_filter = GLOBAL_GET("rendering/canvas_textures/default_texture_filter"); - if (current_filter != scene_root->get_default_canvas_item_texture_filter()) { - Viewport::DefaultCanvasItemTextureFilter tf = (Viewport::DefaultCanvasItemTextureFilter)current_filter; - scene_root->set_default_canvas_item_texture_filter(tf); - } - int current_repeat = GLOBAL_GET("rendering/canvas_textures/default_texture_repeat"); - if (current_repeat != scene_root->get_default_canvas_item_texture_repeat()) { - Viewport::DefaultCanvasItemTextureRepeat tr = (Viewport::DefaultCanvasItemTextureRepeat)current_repeat; - scene_root->set_default_canvas_item_texture_repeat(tr); - } + ResourceImporterTexture::get_singleton()->update_imports(); - RS::DOFBokehShape dof_shape = RS::DOFBokehShape(int(GLOBAL_GET("rendering/quality/depth_of_field/depth_of_field_bokeh_shape"))); - RS::get_singleton()->camera_effects_set_dof_blur_bokeh_shape(dof_shape); - RS::DOFBlurQuality dof_quality = RS::DOFBlurQuality(int(GLOBAL_GET("rendering/quality/depth_of_field/depth_of_field_bokeh_quality"))); - 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"), GLOBAL_GET("rendering/quality/ssao/adaptive_target"), GLOBAL_GET("rendering/quality/ssao/blur_passes"), GLOBAL_GET("rendering/quality/ssao/fadeout_from"), GLOBAL_GET("rendering/quality/ssao/fadeout_to")); - RS::get_singleton()->screen_space_roughness_limiter_set_active(GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter_enabled"), 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); - bool glow_high_quality = GLOBAL_GET("rendering/quality/glow/use_high_quality"); - RS::get_singleton()->environment_glow_set_use_high_quality(glow_high_quality); - RS::EnvironmentSSRRoughnessQuality ssr_roughness_quality = RS::EnvironmentSSRRoughnessQuality(int(GLOBAL_GET("rendering/quality/screen_space_reflection/roughness_quality"))); - RS::get_singleton()->environment_set_ssr_roughness_quality(ssr_roughness_quality); - RS::SubSurfaceScatteringQuality sss_quality = RS::SubSurfaceScatteringQuality(int(GLOBAL_GET("rendering/quality/subsurface_scattering/subsurface_scattering_quality"))); - RS::get_singleton()->sub_surface_scattering_set_quality(sss_quality); - float sss_scale = GLOBAL_GET("rendering/quality/subsurface_scattering/subsurface_scattering_scale"); - float sss_depth_scale = GLOBAL_GET("rendering/quality/subsurface_scattering/subsurface_scattering_depth_scale"); - RS::get_singleton()->sub_surface_scattering_set_scale(sss_scale, sss_depth_scale); - RS::ShadowQuality shadows_quality = RS::ShadowQuality(int(GLOBAL_GET("rendering/quality/shadows/soft_shadow_quality"))); - RS::get_singleton()->shadows_quality_set(shadows_quality); - RS::ShadowQuality directional_shadow_quality = RS::ShadowQuality(int(GLOBAL_GET("rendering/quality/directional_shadow/soft_shadow_quality"))); - 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); - RS::get_singleton()->environment_set_volumetric_fog_volume_size(GLOBAL_GET("rendering/volumetric_fog/volume_size"), GLOBAL_GET("rendering/volumetric_fog/volume_depth")); - RS::get_singleton()->environment_set_volumetric_fog_filter_active(bool(GLOBAL_GET("rendering/volumetric_fog/use_filter"))); - RS::get_singleton()->environment_set_volumetric_fog_directional_shadow_shrink_size(GLOBAL_GET("rendering/volumetric_fog/directional_shadow_shrink")); - RS::get_singleton()->environment_set_volumetric_fog_positional_shadow_shrink_size(GLOBAL_GET("rendering/volumetric_fog/positional_shadow_shrink")); - RS::get_singleton()->canvas_set_shadow_texture_size(GLOBAL_GET("rendering/quality/2d_shadow_atlas/size")); - - bool snap_2d_transforms = GLOBAL_GET("rendering/quality/2d/snap_2d_transforms_to_pixel"); - scene_root->set_snap_2d_transforms_to_pixel(snap_2d_transforms); - bool snap_2d_vertices = GLOBAL_GET("rendering/quality/2d/snap_2d_vertices_to_pixel"); - scene_root->set_snap_2d_vertices_to_pixel(snap_2d_vertices); - - Viewport::SDFOversize sdf_oversize = Viewport::SDFOversize(int(GLOBAL_GET("rendering/quality/2d_sdf/oversize"))); - scene_root->set_sdf_oversize(sdf_oversize); - Viewport::SDFScale sdf_scale = Viewport::SDFScale(int(GLOBAL_GET("rendering/quality/2d_sdf/scale"))); - scene_root->set_sdf_scale(sdf_scale); - - float lod_threshold = GLOBAL_GET("rendering/quality/mesh_lod/threshold_pixels"); - scene_root->set_lod_threshold(lod_threshold); + if (settings_changed) { + _update_from_settings(); + settings_changed = false; + emit_signal("project_settings_changed"); } - - ResourceImporterTexture::get_singleton()->update_imports(); } break; case NOTIFICATION_ENTER_TREE: { @@ -588,6 +600,7 @@ void EditorNode::_notification(int p_what) { OS::get_singleton()->set_low_processor_usage_mode_sleep_usec(int(EDITOR_GET("interface/editor/low_processor_mode_sleep_usec"))); EditorFileSystem::get_singleton()->scan_changes(); + _scan_external_changes(); } break; case NOTIFICATION_APPLICATION_FOCUS_OUT: { @@ -613,8 +626,8 @@ void EditorNode::_notification(int p_what) { gui_base->add_theme_style_override("panel", gui_base->get_theme_stylebox("Background", "EditorStyles")); scene_root_parent->add_theme_style_override("panel", gui_base->get_theme_stylebox("Content", "EditorStyles")); bottom_panel->add_theme_style_override("panel", gui_base->get_theme_stylebox("panel", "TabContainer")); - scene_tabs->add_theme_style_override("tab_fg", gui_base->get_theme_stylebox("SceneTabFG", "EditorStyles")); - scene_tabs->add_theme_style_override("tab_bg", gui_base->get_theme_stylebox("SceneTabBG", "EditorStyles")); + scene_tabs->add_theme_style_override("tab_selected", gui_base->get_theme_stylebox("SceneTabFG", "EditorStyles")); + scene_tabs->add_theme_style_override("tab_unselected", gui_base->get_theme_stylebox("SceneTabBG", "EditorStyles")); file_menu->add_theme_style_override("hover", gui_base->get_theme_stylebox("MenuHover", "EditorStyles")); project_menu->add_theme_style_override("hover", gui_base->get_theme_stylebox("MenuHover", "EditorStyles")); @@ -880,6 +893,82 @@ void EditorNode::_sources_changed(bool p_exist) { } } +void EditorNode::_scan_external_changes() { + disk_changed_list->clear(); + TreeItem *r = disk_changed_list->create_item(); + disk_changed_list->set_hide_root(true); + bool need_reload = false; + + // Check if any edited scene has changed. + + for (int i = 0; i < editor_data.get_edited_scene_count(); i++) { + if (editor_data.get_scene_path(i) == "") { + continue; + } + + uint64_t last_date = editor_data.get_scene_modified_time(i); + uint64_t date = FileAccess::get_modified_time(editor_data.get_scene_path(i)); + + if (date > last_date) { + TreeItem *ti = disk_changed_list->create_item(r); + ti->set_text(0, editor_data.get_scene_path(i).get_file()); + need_reload = true; + } + } + + String project_settings_path = ProjectSettings::get_singleton()->get_resource_path().plus_file("project.godot"); + if (FileAccess::get_modified_time(project_settings_path) > ProjectSettings::get_singleton()->get_last_saved_time()) { + TreeItem *ti = disk_changed_list->create_item(r); + ti->set_text(0, "project.godot"); + need_reload = true; + } + + if (need_reload) { + disk_changed->call_deferred("popup_centered_ratio", 0.5); + } +} + +void EditorNode::_resave_scenes(String p_str) { + save_all_scenes(); + ProjectSettings::get_singleton()->save(); + disk_changed->hide(); +} + +void EditorNode::_reload_modified_scenes() { + int current_idx = editor_data.get_edited_scene(); + + for (int i = 0; i < editor_data.get_edited_scene_count(); i++) { + if (editor_data.get_scene_path(i) == "") { + continue; + } + + uint64_t last_date = editor_data.get_scene_modified_time(i); + uint64_t date = FileAccess::get_modified_time(editor_data.get_scene_path(i)); + + if (date > last_date) { + String filename = editor_data.get_scene_path(i); + editor_data.set_edited_scene(i); + _remove_edited_scene(false); + + Error err = load_scene(filename, false, false, true, false, true); + if (err != OK) { + ERR_PRINT(vformat("Failed to load scene: %s", filename)); + } + editor_data.move_edited_scene_to_index(i); + } + } + + get_undo_redo()->clear_history(false); + set_current_scene(current_idx); + _update_scene_tabs(); + disk_changed->hide(); +} + +void EditorNode::_reload_project_settings() { + ProjectSettings::get_singleton()->setup(ProjectSettings::get_singleton()->get_resource_path(), String(), true); + settings_changed = true; +} + void EditorNode::_vp_resized() { } @@ -921,7 +1010,7 @@ Error EditorNode::load_resource(const String &p_resource, bool p_ignore_broken_d dependency_errors.clear(); Error err; - RES res = ResourceLoader::load(p_resource, "", false, &err); + RES res = ResourceLoader::load(p_resource, "", ResourceFormatLoader::CACHE_MODE_REUSE, &err); ERR_FAIL_COND_V(!res.is_valid(), ERR_CANT_OPEN); if (!p_ignore_broken_deps && dependency_errors.has(p_resource)) { @@ -1505,6 +1594,7 @@ void EditorNode::_save_scene(String p_file, int idx) { } else { editor_data.set_edited_scene_version(0, idx); } + editor_data.set_scene_modified_time(idx, FileAccess::get_modified_time(p_file)); editor_folding.save_scene_folding(scene, p_file); @@ -1708,7 +1798,7 @@ void EditorNode::_dialog_action(String p_file) { ObjectID current = editor_history.get_current(); Object *current_obj = current.is_valid() ? ObjectDB::get_instance(current) : nullptr; ERR_FAIL_COND(!current_obj); - current_obj->_change_notify(); + current_obj->notify_property_list_changed(); } break; case SETTINGS_LAYOUT_SAVE: { if (p_file.is_empty()) { @@ -1850,6 +1940,7 @@ void EditorNode::push_item(Object *p_object, const String &p_property, bool p_in node_dock->set_node(nullptr); scene_tree_dock->set_selected(nullptr); inspector_dock->update(nullptr); + _display_top_editors(false); return; } @@ -2169,7 +2260,7 @@ void EditorNode::_run(bool p_current, const String &p_custom) { List<String> breakpoints; editor_data.get_editor_breakpoints(&breakpoints); - args = ProjectSettings::get_singleton()->get("editor/main_run_args"); + args = ProjectSettings::get_singleton()->get("editor/run/main_run_args"); skip_breakpoints = EditorDebuggerNode::get_singleton()->is_skip_breakpoints(); EditorDebuggerNode::get_singleton()->start(); @@ -2292,6 +2383,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { case FILE_CLOSE: { if (!p_confirmed) { tab_closing = p_option == FILE_CLOSE ? editor_data.get_edited_scene() : _next_unsaved_scene(false); + _scene_tab_changed(tab_closing); if (unsaved_cache || p_option == FILE_CLOSE_ALL_AND_QUIT || p_option == FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER) { String scene_filename = editor_data.get_edited_scene_root(tab_closing)->get_filename(); @@ -2428,16 +2520,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { } break; - case FILE_IMPORT_SUBSCENE: { - if (!editor_data.get_edited_scene_root()) { - show_accept(TTR("This operation can't be done without a selected node."), TTR("OK")); - break; - } - - scene_tree_dock->import_subscene(); - - } break; - case FILE_EXTERNAL_OPEN_SCENE: { if (unsaved_cache && !p_confirmed) { confirmation->get_ok_button()->set_text(TTR("Open")); @@ -2707,7 +2789,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { } break; case SET_VIDEO_DRIVER_SAVE_AND_RESTART: { - ProjectSettings::get_singleton()->set("rendering/quality/driver/driver_name", video_driver_request); + ProjectSettings::get_singleton()->set("rendering/driver/driver_name", video_driver_request); ProjectSettings::get_singleton()->save(); save_all_scenes(); @@ -2813,6 +2895,10 @@ void EditorNode::_discard_changes(const String &p_str) { _update_scene_tabs(); if (current_option == FILE_CLOSE_ALL_AND_QUIT || current_option == FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER) { + // If restore tabs is enabled, reopen the scene that has just been closed, so it's remembered properly. + if (bool(EDITOR_GET("interface/scene_tabs/restore_scenes_on_load"))) { + _menu_option_confirm(FILE_OPEN_PREV, true); + } if (_next_unsaved_scene(false) == -1) { current_option = current_option == FILE_CLOSE_ALL_AND_QUIT ? FILE_QUIT : RUN_PROJECT_MANAGER; _discard_changes(); @@ -3026,8 +3112,7 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled, Ref<ConfigFile> cf; cf.instance(); - String addon_path = String("res://addons").plus_file(p_addon).plus_file("plugin.cfg"); - if (!DirAccess::exists(addon_path.get_base_dir())) { + if (!DirAccess::exists(p_addon.get_base_dir())) { ProjectSettings *ps = ProjectSettings::get_singleton(); PackedStringArray enabled_plugins = ps->get("editor_plugins/enabled"); for (int i = 0; i < enabled_plugins.size(); ++i) { @@ -3041,14 +3126,14 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled, WARN_PRINT("Addon '" + p_addon + "' failed to load. No directory found. Removing from enabled plugins."); return; } - Error err = cf->load(addon_path); + Error err = cf->load(p_addon); if (err != OK) { - show_warning(vformat(TTR("Unable to enable addon plugin at: '%s' parsing of config failed."), addon_path)); + show_warning(vformat(TTR("Unable to enable addon plugin at: '%s' parsing of config failed."), p_addon)); return; } if (!cf->has_section_key("plugin", "script")) { - show_warning(vformat(TTR("Unable to find script field for addon plugin at: 'res://addons/%s'."), p_addon)); + show_warning(vformat(TTR("Unable to find script field for addon plugin at: '%s'."), p_addon)); return; } @@ -3057,7 +3142,7 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled, // Only try to load the script if it has a name. Else, the plugin has no init script. if (script_path.length() > 0) { - script_path = String("res://addons").plus_file(p_addon).plus_file(script_path); + script_path = p_addon.get_base_dir().plus_file(script_path); script = ResourceLoader::load(script_path); if (script.is_null()) { @@ -3315,7 +3400,7 @@ int EditorNode::new_scene() { return idx; } -Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, bool p_set_inherited, bool p_clear_errors, bool p_force_open_imported) { +Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, bool p_set_inherited, bool p_clear_errors, bool p_force_open_imported, bool p_silent_change_tab) { if (!is_inside_tree()) { defer_load_scene = p_scene; return OK; @@ -3355,14 +3440,16 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b if (!editor_data.get_edited_scene_root() && editor_data.get_edited_scene_count() == 2) { _remove_edited_scene(); - } else { + } else if (!p_silent_change_tab) { _scene_tab_changed(idx); + } else { + set_current_scene(idx); } dependency_errors.clear(); Error err; - Ref<PackedScene> sdata = ResourceLoader::load(lpath, "", true, &err); + Ref<PackedScene> sdata = ResourceLoader::load(lpath, "", ResourceFormatLoader::CACHE_MODE_REPLACE, &err); if (!sdata.is_valid()) { _dialog_display_load_error(lpath, err); opening_prev = false; @@ -5184,6 +5271,8 @@ void EditorNode::_file_access_close_error_notify(const String &p_str) { } void EditorNode::reload_scene(const String &p_path) { + /* + * No longer necesary since scenes now reset and reload their internal resource if needed. //first of all, reload internal textures, materials, meshes, etc. as they might have changed on disk List<Ref<Resource>> cached; @@ -5201,6 +5290,8 @@ void EditorNode::reload_scene(const String &p_path) { to_clear.pop_front(); } + */ + int scene_idx = -1; for (int i = 0; i < editor_data.get_edited_scene_count(); i++) { if (editor_data.get_scene_path(i) == p_path) { @@ -5444,6 +5535,7 @@ void EditorNode::_bind_methods() { ADD_SIGNAL(MethodInfo("request_help_search")); ADD_SIGNAL(MethodInfo("script_add_function_request", PropertyInfo(Variant::OBJECT, "obj"), PropertyInfo(Variant::STRING, "function"), PropertyInfo(Variant::PACKED_STRING_ARRAY, "args"))); ADD_SIGNAL(MethodInfo("resource_saved", PropertyInfo(Variant::OBJECT, "obj"))); + ADD_SIGNAL(MethodInfo("project_settings_changed")); } static Node *_resource_get_edited_scene() { @@ -5463,7 +5555,8 @@ static void _execute_thread(void *p_ud) { eta->exitcode = err; } - eta->done = true; + eta->done.set(); + ; } int EditorNode::execute_and_show_output(const String &p_title, const String &p_path, const List<String> &p_arguments, bool p_close_on_ok, bool p_close_on_errors) { @@ -5477,15 +5570,12 @@ int EditorNode::execute_and_show_output(const String &p_title, const String &p_p eta.path = p_path; eta.args = p_arguments; eta.exitcode = 255; - eta.done = false; int prev_len = 0; - eta.execute_output_thread = Thread::create(_execute_thread, &eta); + eta.execute_output_thread.start(_execute_thread, &eta); - ERR_FAIL_COND_V(!eta.execute_output_thread, 0); - - while (!eta.done) { + while (!eta.done.is_set()) { { MutexLock lock(eta.execute_output_mutex); if (prev_len != eta.output.length()) { @@ -5498,8 +5588,7 @@ int EditorNode::execute_and_show_output(const String &p_title, const String &p_p OS::get_singleton()->delay_usec(1000); } - Thread::wait_to_finish(eta.execute_output_thread); - memdelete(eta.execute_output_thread); + eta.execute_output_thread.wait_to_finish(); execute_outputs->add_text("\nExit Code: " + itos(eta.exitcode)); if (p_close_on_errors && eta.exitcode != 0) { @@ -5514,6 +5603,10 @@ int EditorNode::execute_and_show_output(const String &p_title, const String &p_p return eta.exitcode; } +void EditorNode::notify_settings_changed() { + settings_changed = true; +} + EditorNode::EditorNode() { Input::get_singleton()->set_use_accumulated_input(true); Resource::_get_local_scene_func = _resource_get_edited_scene; @@ -5584,6 +5677,10 @@ EditorNode::EditorNode() { if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).y >= 1400) { // hiDPI display. scale = 2.0; + } else if (DisplayServer::get_singleton()->screen_get_size(screen).y >= 1700) { + // Likely a hiDPI display, but we aren't certain due to the returned DPI. + // Use an intermediate scale to handle this situation. + scale = 1.5; } else if (DisplayServer::get_singleton()->screen_get_size(screen).y <= 800) { // Small loDPI display. Use a smaller display scale so that editor elements fit more easily. // Icons won't look great, but this is better than having editor elements overflow from its window. @@ -5742,7 +5839,7 @@ EditorNode::EditorNode() { register_exporters(); - GLOBAL_DEF("editor/main_run_args", ""); + GLOBAL_DEF("editor/run/main_run_args", ""); ClassDB::set_class_enabled("RootMotionView", true); @@ -5767,7 +5864,7 @@ EditorNode::EditorNode() { EDITOR_DEF("interface/inspector/horizontal_vector2_editing", false); EDITOR_DEF("interface/inspector/horizontal_vector_types_editing", true); EDITOR_DEF("interface/inspector/open_resources_in_current_inspector", true); - EDITOR_DEF("interface/inspector/resources_to_open_in_new_inspector", "StandardMaterial3D,ORMMaterial3D,Script,MeshLibrary,TileSet"); + EDITOR_DEF("interface/inspector/resources_to_open_in_new_inspector", "Script,MeshLibrary,TileSet"); EDITOR_DEF("interface/inspector/default_color_picker_mode", 0); EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT, "interface/inspector/default_color_picker_mode", PROPERTY_HINT_ENUM, "RGB,HSV,RAW", PROPERTY_USAGE_DEFAULT)); EDITOR_DEF("run/auto_save/save_before_running", true); @@ -5963,8 +6060,8 @@ EditorNode::EditorNode() { tab_preview_panel->add_child(tab_preview); scene_tabs = memnew(Tabs); - scene_tabs->add_theme_style_override("tab_fg", gui_base->get_theme_stylebox("SceneTabFG", "EditorStyles")); - scene_tabs->add_theme_style_override("tab_bg", gui_base->get_theme_stylebox("SceneTabBG", "EditorStyles")); + scene_tabs->add_theme_style_override("tab_selected", gui_base->get_theme_stylebox("SceneTabFG", "EditorStyles")); + scene_tabs->add_theme_style_override("tab_unselected", gui_base->get_theme_stylebox("SceneTabBG", "EditorStyles")); scene_tabs->set_select_with_rmb(true); scene_tabs->add_tab("unsaved"); scene_tabs->set_tab_align(Tabs::ALIGN_LEFT); @@ -6007,7 +6104,7 @@ EditorNode::EditorNode() { tabbar_container->add_child(distraction_free); scene_tab_add->set_tooltip(TTR("Add a new scene.")); scene_tab_add->set_icon(gui_base->get_theme_icon("Add", "EditorIcons")); - scene_tab_add->add_theme_color_override("icon_color_normal", Color(0.6f, 0.6f, 0.6f, 0.8f)); + scene_tab_add->add_theme_color_override("icon_normal_color", Color(0.6f, 0.6f, 0.6f, 0.8f)); scene_tab_add->connect("pressed", callable_mp(this, &EditorNode::_menu_option), make_binds(FILE_NEW_SCENE)); scene_root_parent = memnew(PanelContainer); @@ -6118,8 +6215,8 @@ EditorNode::EditorNode() { pm_export->connect("id_pressed", callable_mp(this, &EditorNode::_menu_option)); p->add_separator(); - p->add_shortcut(ED_SHORTCUT("editor/undo", TTR("Undo"), KEY_MASK_CMD + KEY_Z), EDIT_UNDO, true); - p->add_shortcut(ED_SHORTCUT("editor/redo", TTR("Redo"), KEY_MASK_CMD + KEY_MASK_SHIFT + KEY_Z), EDIT_REDO, true); + p->add_shortcut(ED_GET_SHORTCUT("ui_undo"), EDIT_UNDO, true); + p->add_shortcut(ED_GET_SHORTCUT("ui_redo"), EDIT_REDO, true); p->add_separator(); p->add_shortcut(ED_SHORTCUT("editor/reload_saved_scene", TTR("Reload Saved Scene")), EDIT_RELOAD_SAVED_SCENE); @@ -6255,7 +6352,7 @@ EditorNode::EditorNode() { p = help_menu->get_popup(); p->connect("id_pressed", callable_mp(this, &EditorNode::_menu_option)); - p->add_icon_shortcut(gui_base->get_theme_icon("HelpSearch", "EditorIcons"), ED_SHORTCUT("editor/editor_help", TTR("Search"), KEY_MASK_SHIFT | KEY_F1), HELP_SEARCH); + p->add_icon_shortcut(gui_base->get_theme_icon("HelpSearch", "EditorIcons"), ED_SHORTCUT("editor/editor_help", TTR("Search")), HELP_SEARCH); p->add_separator(); p->add_icon_shortcut(gui_base->get_theme_icon("Instance", "EditorIcons"), ED_SHORTCUT("editor/online_docs", TTR("Online Docs")), HELP_DOCS); p->add_icon_shortcut(gui_base->get_theme_icon("Instance", "EditorIcons"), ED_SHORTCUT("editor/q&a", TTR("Q&A")), HELP_QA); @@ -6360,7 +6457,7 @@ EditorNode::EditorNode() { #warning needs to be reimplemented #endif #if 0 - String video_drivers = ProjectSettings::get_singleton()->get_custom_property_info()["rendering/quality/driver/driver_name"].hint_string; + String video_drivers = ProjectSettings::get_singleton()->get_custom_property_info()["rendering/driver/driver_name"].hint_string; String current_video_driver = OS::get_singleton()->get_video_driver_name(OS::get_singleton()->get_current_video_driver()); video_driver_current = 0; for (int i = 0; i < video_drivers.get_slice_count(","); i++) { @@ -6593,6 +6690,30 @@ EditorNode::EditorNode() { //plugin stuff add_editor_plugin(memnew(DebuggerEditorPlugin(this, debug_menu))); + + disk_changed = memnew(ConfirmationDialog); + { + VBoxContainer *vbc = memnew(VBoxContainer); + disk_changed->add_child(vbc); + + Label *dl = memnew(Label); + dl->set_text(TTR("The following files are newer on disk.\nWhat action should be taken?")); + vbc->add_child(dl); + + disk_changed_list = memnew(Tree); + vbc->add_child(disk_changed_list); + disk_changed_list->set_v_size_flags(Control::SIZE_EXPAND_FILL); + + disk_changed->connect("confirmed", callable_mp(this, &EditorNode::_reload_modified_scenes)); + disk_changed->connect("confirmed", callable_mp(this, &EditorNode::_reload_project_settings)); + disk_changed->get_ok_button()->set_text(TTR("Reload")); + + disk_changed->add_button(TTR("Resave"), !DisplayServer::get_singleton()->get_swap_cancel_ok(), "resave"); + disk_changed->connect("custom_action", callable_mp(this, &EditorNode::_resave_scenes)); + } + + gui_base->add_child(disk_changed); + add_editor_plugin(memnew(AnimationPlayerEditorPlugin(this))); add_editor_plugin(memnew(CanvasItemEditorPlugin(this))); add_editor_plugin(memnew(Node3DEditorPlugin(this))); diff --git a/editor/editor_node.h b/editor/editor_node.h index 1da162dc9c..91d873d16f 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -31,6 +31,7 @@ #ifndef EDITOR_NODE_H #define EDITOR_NODE_H +#include "core/templates/safe_refcount.h" #include "editor/editor_data.h" #include "editor/editor_export.h" #include "editor/editor_folding.h" @@ -108,10 +109,10 @@ public: String path; List<String> args; String output; - Thread *execute_output_thread = nullptr; + Thread execute_output_thread; Mutex execute_output_mutex; int exitcode = 0; - volatile bool done = false; + SafeFlag done; }; private: @@ -128,7 +129,6 @@ private: FILE_SAVE_ALL_SCENES, FILE_SAVE_AND_RUN, FILE_SHOW_IN_FILESYSTEM, - FILE_IMPORT_SUBSCENE, FILE_EXPORT_PROJECT, FILE_EXPORT_MESH_LIBRARY, FILE_INSTALL_ANDROID_SOURCE, @@ -312,6 +312,9 @@ private: EditorSettingsDialog *settings_config_dialog; ProjectSettingsEditor *project_settings; + bool settings_changed = true; //make it update settings on first frame + void _update_from_settings(); + PopupMenu *vcs_actions_menu; EditorFileDialog *file; ExportTemplateManager *export_template_manager; @@ -422,6 +425,9 @@ private: Label *version_label; Button *bottom_panel_raise; + Tree *disk_changed_list; + ConfirmationDialog *disk_changed; + void _bottom_panel_raise_toggled(bool); EditorInterface *editor_interface; @@ -641,6 +647,10 @@ private: static void _resource_loaded(RES p_resource, const String &p_path); void _resources_changed(const Vector<String> &p_resources); + void _scan_external_changes(); + void _reload_modified_scenes(); + void _reload_project_settings(); + void _resave_scenes(String p_str); void _feature_profile_changed(); bool _is_class_editor_disabled_by_feature_profile(const StringName &p_class); @@ -709,8 +719,6 @@ public: void save_resource(const Ref<Resource> &p_resource); void save_resource_as(const Ref<Resource> &p_resource, const String &p_at_path = String()); - void merge_from_scene() { _menu_option_confirm(FILE_IMPORT_SUBSCENE, false); } - void show_about() { _menu_option_confirm(HELP_ABOUT, false); } static bool has_unsaved_changes() { return singleton->unsaved_cache; } @@ -741,7 +749,7 @@ public: void fix_dependencies(const String &p_for_file); void clear_scene() { _cleanup_scene(); } int new_scene(); - Error load_scene(const String &p_scene, bool p_ignore_broken_deps = false, bool p_set_inherited = false, bool p_clear_errors = true, bool p_force_open_imported = false); + Error load_scene(const String &p_scene, bool p_ignore_broken_deps = false, bool p_set_inherited = false, bool p_clear_errors = true, bool p_force_open_imported = false, bool p_silent_change_tab = false); Error load_resource(const String &p_resource, bool p_ignore_broken_deps = false); bool is_scene_open(const String &p_path); @@ -840,6 +848,8 @@ public: void save_scene_list(Vector<String> p_scene_filenames); void restart_editor(); + void notify_settings_changed(); + void dim_editor(bool p_dimming, bool p_force_dim = false); bool is_editor_dimmed() const; diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp index 840bae35bf..c0cecbc651 100644 --- a/editor/editor_plugin.cpp +++ b/editor/editor_plugin.cpp @@ -756,7 +756,6 @@ int find(const PackedStringArray &a, const String &v) { void EditorPlugin::enable_plugin() { // Called when the plugin gets enabled in project settings, after it's added to the tree. // You can implement it to register autoloads. - if (get_script_instance() && get_script_instance()->has_method("enable_plugin")) { get_script_instance()->call("enable_plugin"); } @@ -819,6 +818,18 @@ void EditorPlugin::remove_debugger_plugin(const Ref<Script> &p_script) { EditorDebuggerNode::get_singleton()->remove_debugger_plugin(p_script); } +void EditorPlugin::_editor_project_settings_changed() { + emit_signal("project_settings_changed"); +} +void EditorPlugin::_notification(int p_what) { + if (p_what == NOTIFICATION_ENTER_TREE) { + EditorNode::get_singleton()->connect("project_settings_changed", callable_mp(this, &EditorPlugin::_editor_project_settings_changed)); + } + if (p_what == NOTIFICATION_EXIT_TREE) { + EditorNode::get_singleton()->disconnect("project_settings_changed", callable_mp(this, &EditorPlugin::_editor_project_settings_changed)); + } +} + void EditorPlugin::_bind_methods() { ClassDB::bind_method(D_METHOD("add_control_to_container", "container", "control"), &EditorPlugin::add_control_to_container); ClassDB::bind_method(D_METHOD("add_control_to_bottom_panel", "control", "title"), &EditorPlugin::add_control_to_bottom_panel); @@ -890,6 +901,7 @@ void EditorPlugin::_bind_methods() { ADD_SIGNAL(MethodInfo("scene_closed", PropertyInfo(Variant::STRING, "filepath"))); ADD_SIGNAL(MethodInfo("main_screen_changed", PropertyInfo(Variant::STRING, "screen_name"))); ADD_SIGNAL(MethodInfo("resource_saved", PropertyInfo(Variant::OBJECT, "resource", PROPERTY_HINT_RESOURCE_TYPE, "Resource"))); + ADD_SIGNAL(MethodInfo("project_settings_changed")); BIND_ENUM_CONSTANT(CONTAINER_TOOLBAR); BIND_ENUM_CONSTANT(CONTAINER_SPATIAL_EDITOR_MENU); diff --git a/editor/editor_plugin.h b/editor/editor_plugin.h index 3b741a2f22..ae9fcfb28a 100644 --- a/editor/editor_plugin.h +++ b/editor/editor_plugin.h @@ -130,7 +130,11 @@ class EditorPlugin : public Node { String last_main_screen_name; + void _editor_project_settings_changed(); + protected: + void _notification(int p_what); + static void _bind_methods(); UndoRedo &get_undo_redo() { return *undo_redo; } diff --git a/editor/editor_plugin_settings.cpp b/editor/editor_plugin_settings.cpp index aa3b75097e..e5b62513ff 100644 --- a/editor/editor_plugin_settings.cpp +++ b/editor/editor_plugin_settings.cpp @@ -49,44 +49,16 @@ void EditorPluginSettings::_notification(int p_what) { void EditorPluginSettings::update_plugins() { plugin_list->clear(); - - DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES); - Error err = da->change_dir("res://addons"); - if (err != OK) { - memdelete(da); - return; - } - updating = true; - TreeItem *root = plugin_list->create_item(); - da->list_dir_begin(); - - String d = da->get_next(); - - Vector<String> plugins; - - while (d != String()) { - bool dir = da->current_is_dir(); - String path = "res://addons/" + d + "/plugin.cfg"; - - if (dir && FileAccess::exists(path)) { - plugins.push_back(d); - } - - d = da->get_next(); - } - - da->list_dir_end(); - memdelete(da); - + Vector<String> plugins = _get_plugins("res://addons"); plugins.sort(); for (int i = 0; i < plugins.size(); i++) { Ref<ConfigFile> cf; cf.instance(); - String path = "res://addons/" + plugins[i] + "/plugin.cfg"; + const String path = plugins[i]; Error err2 = cf->load(path); @@ -117,7 +89,6 @@ void EditorPluginSettings::update_plugins() { } if (!key_missing) { - String d2 = plugins[i]; String name = cf->get_value("plugin", "name"); String author = cf->get_value("plugin", "author"); String version = cf->get_value("plugin", "version"); @@ -127,14 +98,14 @@ void EditorPluginSettings::update_plugins() { TreeItem *item = plugin_list->create_item(root); item->set_text(0, name); item->set_tooltip(0, TTR("Name:") + " " + name + "\n" + TTR("Path:") + " " + path + "\n" + TTR("Main Script:") + " " + script + "\n" + TTR("Description:") + " " + description); - item->set_metadata(0, d2); + item->set_metadata(0, path); item->set_text(1, version); item->set_metadata(1, script); item->set_text(2, author); item->set_metadata(2, description); item->set_cell_mode(3, TreeItem::CELL_MODE_CHECK); item->set_text(3, TTR("Enable")); - bool is_active = EditorNode::get_singleton()->is_addon_plugin_enabled(d2); + bool is_active = EditorNode::get_singleton()->is_addon_plugin_enabled(path); item->set_checked(3, is_active); item->set_editable(3, true); item->add_button(4, get_theme_icon("Edit", "EditorIcons"), BUTTON_PLUGIN_EDIT, false, TTR("Edit Plugin")); @@ -179,12 +150,39 @@ void EditorPluginSettings::_cell_button_pressed(Object *p_item, int p_column, in if (p_id == BUTTON_PLUGIN_EDIT) { if (p_column == 4) { String dir = item->get_metadata(0); - plugin_config_dialog->config("res://addons/" + dir + "/plugin.cfg"); + plugin_config_dialog->config(dir); plugin_config_dialog->popup_centered(); } } } +Vector<String> EditorPluginSettings::_get_plugins(const String &p_dir) { + DirAccessRef da = DirAccess::create(DirAccess::ACCESS_RESOURCES); + Error err = da->change_dir(p_dir); + if (err != OK) { + return Vector<String>(); + } + + Vector<String> plugins; + da->list_dir_begin(); + for (String path = da->get_next(); path != String(); path = da->get_next()) { + if (path[0] == '.' || !da->current_is_dir()) { + continue; + } + + const String full_path = p_dir.plus_file(path); + const String plugin_config = full_path.plus_file("plugin.cfg"); + if (FileAccess::exists(plugin_config)) { + plugins.push_back(plugin_config); + } else { + plugins.append_array(_get_plugins(full_path)); + } + } + + da->list_dir_end(); + return plugins; +} + void EditorPluginSettings::_bind_methods() { } diff --git a/editor/editor_plugin_settings.h b/editor/editor_plugin_settings.h index 4f2b5293ec..34b26de90e 100644 --- a/editor/editor_plugin_settings.h +++ b/editor/editor_plugin_settings.h @@ -54,6 +54,8 @@ class EditorPluginSettings : public VBoxContainer { void _create_clicked(); void _cell_button_pressed(Object *p_item, int p_column, int p_id); + static Vector<String> _get_plugins(const String &p_dir); + protected: void _notification(int p_what); diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index 4d8a4f46b2..6bfc16ccd7 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -1267,16 +1267,20 @@ void EditorPropertyRect2::setup(double p_min, double p_max, double p_step, bool EditorPropertyRect2::EditorPropertyRect2(bool p_force_wide) { bool horizontal = p_force_wide || bool(EDITOR_GET("interface/inspector/horizontal_vector_types_editing")); - + bool grid = false; BoxContainer *bc; if (p_force_wide) { bc = memnew(HBoxContainer); add_child(bc); } else if (horizontal) { - bc = memnew(HBoxContainer); + bc = memnew(VBoxContainer); add_child(bc); set_bottom_editor(bc); + + bc->add_child(memnew(HBoxContainer)); + bc->add_child(memnew(HBoxContainer)); + grid = true; } else { bc = memnew(VBoxContainer); add_child(bc); @@ -1287,7 +1291,13 @@ EditorPropertyRect2::EditorPropertyRect2(bool p_force_wide) { spin[i] = memnew(EditorSpinSlider); spin[i]->set_label(desc[i]); spin[i]->set_flat(true); - bc->add_child(spin[i]); + + if (grid) { + bc->get_child(i / 2)->add_child(spin[i]); + } else { + bc->add_child(spin[i]); + } + add_focusable(spin[i]); spin[i]->connect("value_changed", callable_mp(this, &EditorPropertyRect2::_value_changed), varray(desc[i])); if (horizontal) { @@ -1530,16 +1540,20 @@ void EditorPropertyRect2i::setup(int p_min, int p_max, bool p_no_slider) { EditorPropertyRect2i::EditorPropertyRect2i(bool p_force_wide) { bool horizontal = p_force_wide || bool(EDITOR_GET("interface/inspector/horizontal_vector_types_editing")); - + bool grid = false; BoxContainer *bc; if (p_force_wide) { bc = memnew(HBoxContainer); add_child(bc); } else if (horizontal) { - bc = memnew(HBoxContainer); + bc = memnew(VBoxContainer); add_child(bc); set_bottom_editor(bc); + + bc->add_child(memnew(HBoxContainer)); + bc->add_child(memnew(HBoxContainer)); + grid = true; } else { bc = memnew(VBoxContainer); add_child(bc); @@ -1550,7 +1564,13 @@ EditorPropertyRect2i::EditorPropertyRect2i(bool p_force_wide) { spin[i] = memnew(EditorSpinSlider); spin[i]->set_label(desc[i]); spin[i]->set_flat(true); - bc->add_child(spin[i]); + + if (grid) { + bc->get_child(i / 2)->add_child(spin[i]); + } else { + bc->add_child(spin[i]); + } + add_focusable(spin[i]); spin[i]->connect("value_changed", callable_mp(this, &EditorPropertyRect2i::_value_changed), varray(desc[i])); if (horizontal) { @@ -2839,6 +2859,41 @@ void EditorPropertyResource::_fold_other_editors(Object *p_self) { } } +void EditorPropertyResource::_update_property_bg() { + if (!is_inside_tree()) { + return; + } + + updating_theme = true; + if (sub_inspector != nullptr) { + int count_subinspectors = 0; + Node *n = get_parent(); + while (n) { + EditorInspector *ei = Object::cast_to<EditorInspector>(n); + if (ei && ei->is_sub_inspector()) { + count_subinspectors++; + } + n = n->get_parent(); + } + count_subinspectors = MIN(15, count_subinspectors); + + add_theme_color_override("property_color", get_theme_color("sub_inspector_property_color", "Editor")); + add_theme_style_override("bg_selected", get_theme_stylebox("sub_inspector_property_bg_selected" + itos(count_subinspectors), "Editor")); + add_theme_style_override("bg", get_theme_stylebox("sub_inspector_property_bg" + itos(count_subinspectors), "Editor")); + + add_theme_constant_override("font_offset", get_theme_constant("sub_inspector_font_offset", "Editor")); + add_theme_constant_override("vseparation", 0); + } else { + add_theme_color_override("property_color", get_theme_color("property_color", "EditorProperty")); + add_theme_style_override("bg_selected", get_theme_stylebox("bg_selected", "EditorProperty")); + add_theme_style_override("bg", get_theme_stylebox("bg", "EditorProperty")); + add_theme_constant_override("vseparation", get_theme_constant("vseparation", "EditorProperty")); + add_theme_constant_override("font_offset", get_theme_constant("font_offset", "EditorProperty")); + } + + updating_theme = false; + update(); +} void EditorPropertyResource::update_property() { RES res = get_edited_object()->get(get_edited_property()); @@ -2887,13 +2942,14 @@ void EditorPropertyResource::update_property() { } opened_editor = true; } + + _update_property_bg(); } if (res.ptr() != sub_inspector->get_edited_object()) { sub_inspector->edit(res.ptr()); } - sub_inspector->refresh(); } else { if (sub_inspector) { set_bottom_editor(nullptr); @@ -2904,6 +2960,7 @@ void EditorPropertyResource::update_property() { EditorNode::get_singleton()->hide_top_editors(); opened_editor = false; } + _update_property_bg(); } } } @@ -2957,8 +3014,12 @@ void EditorPropertyResource::setup(const String &p_base_type) { void EditorPropertyResource::_notification(int p_what) { if (p_what == NOTIFICATION_ENTER_TREE || p_what == NOTIFICATION_THEME_CHANGED) { + if (updating_theme) { + return; + } Ref<Texture2D> t = get_theme_icon("select_arrow", "Tree"); edit->set_icon(t); + _update_property_bg(); } if (p_what == NOTIFICATION_DRAG_BEGIN) { diff --git a/editor/editor_properties.h b/editor/editor_properties.h index 4775259111..6f097fb5df 100644 --- a/editor/editor_properties.h +++ b/editor/editor_properties.h @@ -654,6 +654,9 @@ class EditorPropertyResource : public EditorProperty { bool opened_editor; + bool updating_theme = false; + void _update_property_bg(); + protected: static void _bind_methods(); void _notification(int p_what); diff --git a/editor/editor_resource_preview.cpp b/editor/editor_resource_preview.cpp index 29a929d179..77288be614 100644 --- a/editor/editor_resource_preview.cpp +++ b/editor/editor_resource_preview.cpp @@ -206,8 +206,8 @@ void EditorResourcePreview::_generate_preview(Ref<ImageTexture> &r_texture, Ref< } void EditorResourcePreview::_thread() { - exited = false; - while (!exit) { + exited.clear(); + while (!exit.is_set()) { preview_sem.wait(); preview_mutex.lock(); @@ -326,7 +326,7 @@ void EditorResourcePreview::_thread() { preview_mutex.unlock(); } } - exited = true; + exited.set(); } void EditorResourcePreview::queue_edited_resource_preview(const Ref<Resource> &p_res, Object *p_receiver, const StringName &p_receiver_func, const Variant &p_userdata) { @@ -424,30 +424,25 @@ void EditorResourcePreview::check_for_invalidation(const String &p_path) { } void EditorResourcePreview::start() { - ERR_FAIL_COND_MSG(thread, "Thread already started."); - thread = Thread::create(_thread_func, this); + ERR_FAIL_COND_MSG(thread.is_started(), "Thread already started."); + thread.start(_thread_func, this); } void EditorResourcePreview::stop() { - if (thread) { - exit = true; + if (thread.is_started()) { + exit.set(); preview_sem.post(); - while (!exited) { + while (!exited.is_set()) { OS::get_singleton()->delay_usec(10000); RenderingServer::get_singleton()->sync(); //sync pending stuff, as thread may be blocked on visual server } - Thread::wait_to_finish(thread); - memdelete(thread); - thread = nullptr; + thread.wait_to_finish(); } } EditorResourcePreview::EditorResourcePreview() { - thread = nullptr; singleton = this; order = 0; - exit = false; - exited = false; } EditorResourcePreview::~EditorResourcePreview() { diff --git a/editor/editor_resource_preview.h b/editor/editor_resource_preview.h index c119ccd99f..c4e796dcf1 100644 --- a/editor/editor_resource_preview.h +++ b/editor/editor_resource_preview.h @@ -33,6 +33,7 @@ #include "core/os/semaphore.h" #include "core/os/thread.h" +#include "core/templates/safe_refcount.h" #include "scene/main/node.h" #include "scene/resources/texture.h" @@ -70,9 +71,9 @@ class EditorResourcePreview : public Node { Mutex preview_mutex; Semaphore preview_sem; - Thread *thread; - volatile bool exit; - volatile bool exited; + Thread thread; + SafeFlag exit; + SafeFlag exited; struct Item { Ref<Texture2D> preview; diff --git a/editor/editor_sectioned_inspector.cpp b/editor/editor_sectioned_inspector.cpp index a2627f51ac..f81c87be9e 100644 --- a/editor/editor_sectioned_inspector.cpp +++ b/editor/editor_sectioned_inspector.cpp @@ -116,12 +116,12 @@ public: void set_section(const String &p_section, bool p_allow_sub) { section = p_section; allow_sub = p_allow_sub; - _change_notify(); + notify_property_list_changed(); } void set_edited(Object *p_edited) { edited = p_edited; - _change_notify(); + notify_property_list_changed(); } }; @@ -226,7 +226,7 @@ void SectionedInspector::update_category_list() { if (pi.usage & PROPERTY_USAGE_CATEGORY) { continue; - } else if (!(pi.usage & PROPERTY_USAGE_EDITOR)) { + } else if (!(pi.usage & PROPERTY_USAGE_EDITOR) || (restrict_to_basic && !(pi.usage & PROPERTY_USAGE_EDITOR_BASIC_SETTING))) { continue; } @@ -294,6 +294,12 @@ EditorInspector *SectionedInspector::get_inspector() { return inspector; } +void SectionedInspector::set_restrict_to_basic_settings(bool p_restrict) { + restrict_to_basic = p_restrict; + update_category_list(); + inspector->set_restrict_to_basic_settings(p_restrict); +} + SectionedInspector::SectionedInspector() : sections(memnew(Tree)), filter(memnew(SectionedInspectorFilter)), diff --git a/editor/editor_sectioned_inspector.h b/editor/editor_sectioned_inspector.h index 55fb94fecc..1068a4f932 100644 --- a/editor/editor_sectioned_inspector.h +++ b/editor/editor_sectioned_inspector.h @@ -51,6 +51,8 @@ class SectionedInspector : public HSplitContainer { String selected_category; + bool restrict_to_basic = false; + static void _bind_methods(); void _section_selected(); @@ -65,6 +67,7 @@ public: void set_current_section(const String &p_section); String get_current_section() const; + void set_restrict_to_basic_settings(bool p_restrict); void update_category_list(); SectionedInspector(); diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 3eee7b2bfb..40647497af 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -31,6 +31,7 @@ #include "editor_settings.h" #include "core/config/project_settings.h" +#include "core/input/input_map.h" #include "core/io/certs_compressed.gen.h" #include "core/io/compression.h" #include "core/io/config_file.h" @@ -70,7 +71,7 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value) { bool EditorSettings::_set_only(const StringName &p_name, const Variant &p_value) { _THREAD_SAFE_METHOD_ - if (p_name.operator String() == "shortcuts") { + if (p_name == "shortcuts") { Array arr = p_value; ERR_FAIL_COND_V(arr.size() && arr.size() & 1, true); for (int i = 0; i < arr.size(); i += 2) { @@ -84,6 +85,24 @@ bool EditorSettings::_set_only(const StringName &p_name, const Variant &p_value) } return false; + } else if (p_name == "builtin_action_overrides") { + Array actions_arr = p_value; + for (int i = 0; i < actions_arr.size(); i++) { + Dictionary action_dict = actions_arr[i]; + + String name = action_dict["name"]; + Array events = action_dict["events"]; + + InputMap *im = InputMap::get_singleton(); + im->action_erase_events(name); + + builtin_action_overrides[name].clear(); + for (int ev_idx = 0; ev_idx < events.size(); ev_idx++) { + im->action_add_event(name, events[ev_idx]); + builtin_action_overrides[name].push_back(events[ev_idx]); + } + } + return false; } bool changed = false; @@ -118,11 +137,16 @@ bool EditorSettings::_set_only(const StringName &p_name, const Variant &p_value) bool EditorSettings::_get(const StringName &p_name, Variant &r_ret) const { _THREAD_SAFE_METHOD_ - if (p_name.operator String() == "shortcuts") { + if (p_name == "shortcuts") { Array arr; for (const Map<String, Ref<Shortcut>>::Element *E = shortcuts.front(); E; E = E->next()) { Ref<Shortcut> sc = E->get(); + if (builtin_action_overrides.has(E->key())) { + // This shortcut was auto-generated from built in actions: don't save. + continue; + } + if (optimize_save) { if (!sc->has_meta("original")) { continue; //this came from settings but is not any longer used @@ -139,6 +163,27 @@ bool EditorSettings::_get(const StringName &p_name, Variant &r_ret) const { } r_ret = arr; return true; + } else if (p_name == "builtin_action_overrides") { + Array actions_arr; + for (Map<String, List<Ref<InputEvent>>>::Element *E = builtin_action_overrides.front(); E; E = E->next()) { + List<Ref<InputEvent>> events = E->get(); + + // TODO: skip actions which are the same as the builtin. + Dictionary action_dict; + action_dict["name"] = E->key(); + + Array events_arr; + for (List<Ref<InputEvent>>::Element *I = events.front(); I; I = I->next()) { + events_arr.push_back(I->get()); + } + + action_dict["events"] = events_arr; + + actions_arr.push_back(action_dict); + } + + r_ret = actions_arr; + return true; } const VariantContainer *v = props.getptr(p_name); @@ -220,6 +265,7 @@ void EditorSettings::_get_property_list(List<PropertyInfo> *p_list) const { } p_list->push_back(PropertyInfo(Variant::ARRAY, "shortcuts", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); //do not edit + p_list->push_back(PropertyInfo(Variant::ARRAY, "builtin_action_overrides", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); } void EditorSettings::_add_property_info_bind(const Dictionary &p_info) { @@ -337,6 +383,10 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).y >= 1400) { // hiDPI display. scale = 2.0; + } else if (DisplayServer::get_singleton()->screen_get_size(screen).y >= 1700) { + // Likely a hiDPI display, but we aren't certain due to the returned DPI. + // Use an intermediate scale to handle this situation. + scale = 1.5; } else if (DisplayServer::get_singleton()->screen_get_size(screen).y <= 800) { // Small loDPI display. Use a smaller display scale so that editor elements fit more easily. // Icons won't look great, but this is better than having editor elements overflow from its window. @@ -392,6 +442,8 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { hints["interface/theme/accent_color"] = PropertyInfo(Variant::COLOR, "interface/theme/accent_color", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT); _initial_set("interface/theme/contrast", 0.25); hints["interface/theme/contrast"] = PropertyInfo(Variant::FLOAT, "interface/theme/contrast", PROPERTY_HINT_RANGE, "0.01, 1, 0.01"); + _initial_set("interface/theme/icon_saturation", 1.0); + hints["interface/theme/icon_saturation"] = PropertyInfo(Variant::FLOAT, "interface/theme/icon_saturation", PROPERTY_HINT_RANGE, "0,2,0.01", PROPERTY_USAGE_DEFAULT); _initial_set("interface/theme/relationship_line_opacity", 0.1); hints["interface/theme/relationship_line_opacity"] = PropertyInfo(Variant::FLOAT, "interface/theme/relationship_line_opacity", PROPERTY_HINT_RANGE, "0.00, 1, 0.01"); _initial_set("interface/theme/highlight_tabs", false); @@ -441,7 +493,9 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { _initial_set("docks/filesystem/always_show_folders", true); // Property editor - _initial_set("docks/property_editor/auto_refresh_interval", 0.3); + _initial_set("docks/property_editor/auto_refresh_interval", 0.2); //update 5 times per second by default + _initial_set("docks/property_editor/subresource_hue_tint", 0.75); + hints["docks/property_editor/subresource_hue_tint"] = PropertyInfo(Variant::FLOAT, "docks/property_editor/subresource_hue_tint", PROPERTY_HINT_RANGE, "0,1,0.01", PROPERTY_USAGE_DEFAULT); /* Text editor */ @@ -659,6 +713,10 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { _initial_set("editors/animation/onion_layers_past_color", Color(1, 0, 0)); _initial_set("editors/animation/onion_layers_future_color", Color(0, 1, 0)); + // Visual editors + _initial_set("editors/visual_editors/minimap_opacity", 0.85); + hints["editors/visual_editors/minimap_opacity"] = PropertyInfo(Variant::FLOAT, "editors/visual_editors/minimap_opacity", PROPERTY_HINT_RANGE, "0.0,1.0,0.01", PROPERTY_USAGE_DEFAULT); + /* Run */ // Window placement @@ -955,27 +1013,16 @@ void EditorSettings::create() { _create_script_templates(dir->get_current_dir().plus_file("script_templates")); - if (dir->change_dir("projects") != OK) { - dir->make_dir("projects"); - } else { - dir->change_dir(".."); - } - - // Validate/create project-specific config dir - - dir->change_dir("projects"); - String project_config_dir = ProjectSettings::get_singleton()->get_resource_path(); - if (project_config_dir.ends_with("/")) { - project_config_dir = config_path.substr(0, project_config_dir.size() - 1); - } - project_config_dir = project_config_dir.get_file() + "-" + project_config_dir.md5_text(); - - if (dir->change_dir(project_config_dir) != OK) { - dir->make_dir(project_config_dir); - } else { - dir->change_dir(".."); + { + // Validate/create project-specific editor settings dir. + DirAccessRef da = DirAccess::create(DirAccess::ACCESS_RESOURCES); + if (da->change_dir(EditorSettings::PROJECT_EDITOR_SETTINGS_PATH) != OK) { + Error err = da->make_dir_recursive(EditorSettings::PROJECT_EDITOR_SETTINGS_PATH); + if (err || da->change_dir(EditorSettings::PROJECT_EDITOR_SETTINGS_PATH) != OK) { + ERR_FAIL_MSG("Failed to create '" + EditorSettings::PROJECT_EDITOR_SETTINGS_PATH + "' folder."); + } + } } - dir->change_dir(".."); // Validate editor config file @@ -997,7 +1044,6 @@ void EditorSettings::create() { singleton->save_changed_setting = true; singleton->config_file_path = config_file_path; - singleton->project_config_dir = project_config_dir; singleton->settings_dir = config_dir; singleton->data_dir = data_dir; singleton->cache_dir = cache_dir; @@ -1273,7 +1319,7 @@ String EditorSettings::get_settings_dir() const { } String EditorSettings::get_project_settings_dir() const { - return get_settings_dir().plus_file("projects").plus_file(project_config_dir); + return EditorSettings::PROJECT_EDITOR_SETTINGS_PATH; } String EditorSettings::get_text_editor_themes_dir() const { @@ -1285,7 +1331,7 @@ String EditorSettings::get_script_templates_dir() const { } String EditorSettings::get_project_script_templates_dir() const { - return ProjectSettings::get_singleton()->get("editor/script_templates_search_path"); + return ProjectSettings::get_singleton()->get("editor/script/templates_search_path"); } // Cache directory @@ -1539,12 +1585,39 @@ bool EditorSettings::is_shortcut(const String &p_name, const Ref<InputEvent> &p_ } Ref<Shortcut> EditorSettings::get_shortcut(const String &p_name) const { - const Map<String, Ref<Shortcut>>::Element *E = shortcuts.find(p_name); - if (!E) { - return Ref<Shortcut>(); + const Map<String, Ref<Shortcut>>::Element *SC = shortcuts.find(p_name); + if (SC) { + return SC->get(); + } + + // If no shortcut with the provided name is found in the list, check the built-in shortcuts. + // Use the first item in the action list for the shortcut event, since a shortcut can only have 1 linked event. + + Ref<Shortcut> sc; + const Map<String, List<Ref<InputEvent>>>::Element *builtin_override = builtin_action_overrides.find(p_name); + if (builtin_override) { + sc.instance(); + sc->set_shortcut(builtin_override->get().front()->get()); + sc->set_name(InputMap::get_singleton()->get_builtin_display_name(p_name)); + } + + // If there was no override, check the default builtins to see if it has an InputEvent for the provided name. + if (sc.is_null()) { + const OrderedHashMap<String, List<Ref<InputEvent>>>::ConstElement builtin_default = InputMap::get_singleton()->get_builtins().find(p_name); + if (builtin_default) { + sc.instance(); + sc->set_shortcut(builtin_default.get().front()->get()); + sc->set_name(InputMap::get_singleton()->get_builtin_display_name(p_name)); + } + } + + if (sc.is_valid()) { + // Add the shortcut to the list. + shortcuts[p_name] = sc; + return sc; } - return E->get(); + return Ref<Shortcut>(); } void EditorSettings::get_shortcut_list(List<String> *r_shortcuts) { @@ -1610,6 +1683,66 @@ Ref<Shortcut> ED_SHORTCUT(const String &p_path, const String &p_name, uint32_t p return sc; } +void EditorSettings::set_builtin_action_override(const String &p_name, const Array &p_events) { + List<Ref<InputEvent>> event_list; + + // Override the whole list, since events may have their order changed or be added, removed or edited. + InputMap::get_singleton()->action_erase_events(p_name); + for (int i = 0; i < p_events.size(); i++) { + event_list.push_back(p_events[i]); + InputMap::get_singleton()->action_add_event(p_name, p_events[i]); + } + + // Check if the provided event array is same as built-in. If it is, it does not need to be added to the overrides. + // Note that event order must also be the same. + bool same_as_builtin = true; + OrderedHashMap<String, List<Ref<InputEvent>>>::ConstElement builtin_default = InputMap::get_singleton()->get_builtins().find(p_name); + if (builtin_default) { + List<Ref<InputEvent>> builtin_events = builtin_default.get(); + + if (p_events.size() == builtin_events.size()) { + int event_idx = 0; + + // Check equality of each event. + for (List<Ref<InputEvent>>::Element *E = builtin_events.front(); E; E = E->next()) { + if (!E->get()->shortcut_match(p_events[event_idx])) { + same_as_builtin = false; + break; + } + event_idx++; + } + } else { + same_as_builtin = false; + } + } + + if (same_as_builtin && builtin_action_overrides.has(p_name)) { + builtin_action_overrides.erase(p_name); + } else { + builtin_action_overrides[p_name] = event_list; + } + + // Update the shortcut (if it is used somewhere in the editor) to be the first event of the new list. + if (shortcuts.has(p_name)) { + shortcuts[p_name]->set_shortcut(event_list.front()->get()); + } +} + +const Array EditorSettings::get_builtin_action_overrides(const String &p_name) const { + const Map<String, List<Ref<InputEvent>>>::Element *AO = builtin_action_overrides.find(p_name); + if (AO) { + Array event_array; + + List<Ref<InputEvent>> events_list = AO->get(); + for (List<Ref<InputEvent>>::Element *E = events_list.front(); E; E = E->next()) { + event_array.push_back(E->get()); + } + return event_array; + } + + return Array(); +} + void EditorSettings::notify_changes() { _THREAD_SAFE_METHOD_ @@ -1648,6 +1781,8 @@ void EditorSettings::_bind_methods() { ClassDB::bind_method(D_METHOD("set_recent_dirs", "dirs"), &EditorSettings::set_recent_dirs); ClassDB::bind_method(D_METHOD("get_recent_dirs"), &EditorSettings::get_recent_dirs); + ClassDB::bind_method(D_METHOD("set_builtin_action_override", "name", "actions_list"), &EditorSettings::set_builtin_action_override); + ADD_SIGNAL(MethodInfo("settings_changed")); BIND_CONSTANT(NOTIFICATION_EDITOR_SETTINGS_CHANGED); diff --git a/editor/editor_settings.h b/editor/editor_settings.h index 61ec8546aa..e5f8527faf 100644 --- a/editor/editor_settings.h +++ b/editor/editor_settings.h @@ -46,6 +46,7 @@ class EditorSettings : public Resource { _THREAD_SAFE_CLASS_ public: + inline static const String PROJECT_EDITOR_SETTINGS_PATH = "res://.godot/editor"; struct Plugin { EditorPlugin *instance = nullptr; String path; @@ -83,7 +84,8 @@ private: int last_order; Ref<Resource> clipboard; - Map<String, Ref<Shortcut>> shortcuts; + mutable Map<String, Ref<Shortcut>> shortcuts; + Map<String, List<Ref<InputEvent>>> builtin_action_overrides; String resource_path; String settings_dir; @@ -185,6 +187,9 @@ public: Ref<Shortcut> get_shortcut(const String &p_name) const; void get_shortcut_list(List<String> *r_shortcuts); + void set_builtin_action_override(const String &p_name, const Array &p_events); + const Array get_builtin_action_overrides(const String &p_name) const; + void notify_changes(); EditorSettings(); diff --git a/editor/editor_sub_scene.cpp b/editor/editor_sub_scene.cpp deleted file mode 100644 index e319fbff52..0000000000 --- a/editor/editor_sub_scene.cpp +++ /dev/null @@ -1,265 +0,0 @@ -/*************************************************************************/ -/* editor_sub_scene.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "editor_sub_scene.h" - -#include "editor/editor_node.h" -#include "scene/gui/margin_container.h" -#include "scene/resources/packed_scene.h" - -void EditorSubScene::_path_selected(const String &p_path) { - path->set_text(p_path); - _path_changed(p_path); -} - -void EditorSubScene::_path_changed(const String &p_path) { - tree->clear(); - - if (scene) { - memdelete(scene); - scene = nullptr; - } - - if (p_path == "") { - return; - } - - Ref<PackedScene> ps = ResourceLoader::load(p_path, "PackedScene"); - - if (ps.is_null()) { - return; - } - - scene = ps->instance(); - if (!scene) { - return; - } - - _fill_tree(scene, nullptr); -} - -void EditorSubScene::_path_browse() { - file_dialog->popup_file_dialog(); -} - -void EditorSubScene::_notification(int p_what) { - if (p_what == NOTIFICATION_VISIBILITY_CHANGED) { - if (is_visible() && scene == nullptr) { - _path_browse(); - } - } -} - -void EditorSubScene::_fill_tree(Node *p_node, TreeItem *p_parent) { - TreeItem *it = tree->create_item(p_parent); - it->set_metadata(0, p_node); - it->set_text(0, p_node->get_name()); - it->set_editable(0, false); - it->set_selectable(0, true); - it->set_icon(0, EditorNode::get_singleton()->get_object_icon(p_node, "Node")); - - for (int i = 0; i < p_node->get_child_count(); i++) { - Node *c = p_node->get_child(i); - if (c->get_owner() != scene) { - continue; - } - _fill_tree(c, it); - } -} - -void EditorSubScene::_selected_changed() { - TreeItem *item = tree->get_selected(); - ERR_FAIL_COND(!item); - Node *n = item->get_metadata(0); - - if (!n || !selection.find(n)) { - selection.clear(); - is_root = false; - } -} - -void EditorSubScene::_item_multi_selected(Object *p_object, int p_cell, bool p_selected) { - if (!is_root) { - TreeItem *item = Object::cast_to<TreeItem>(p_object); - ERR_FAIL_COND(!item); - - Node *n = item->get_metadata(0); - - if (!n) { - return; - } - if (p_selected) { - if (n == scene) { - is_root = true; - selection.clear(); - } - selection.push_back(n); - } else { - List<Node *>::Element *E = selection.find(n); - - if (E) { - selection.erase(E); - } - } - } -} - -void EditorSubScene::_item_activated() { - _ok_pressed(); // From AcceptDialog. -} - -void EditorSubScene::_remove_selection_child(Node *p_node) { - if (p_node->get_child_count() > 0) { - for (int i = 0; i < p_node->get_child_count(); i++) { - Node *c = p_node->get_child(i); - List<Node *>::Element *E = selection.find(c); - if (E) { - selection.move_to_back(E); - selection.pop_back(); - } - if (c->get_child_count() > 0) { - _remove_selection_child(c); - } - } - } -} - -void EditorSubScene::ok_pressed() { - if (selection.size() <= 0) { - return; - } - for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { - Node *c = E->get(); - _remove_selection_child(c); - } - emit_signal("subscene_selected"); - hide(); - clear(); -} - -void EditorSubScene::_reown(Node *p_node, List<Node *> *p_to_reown) { - if (p_node == scene) { - scene->set_filename(""); - p_to_reown->push_back(p_node); - } else if (p_node->get_owner() == scene) { - p_to_reown->push_back(p_node); - } - - for (int i = 0; i < p_node->get_child_count(); i++) { - Node *c = p_node->get_child(i); - _reown(c, p_to_reown); - } -} - -void EditorSubScene::move(Node *p_new_parent, Node *p_new_owner) { - if (!scene) { - return; - } - - if (selection.size() <= 0) { - return; - } - - for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { - Node *selnode = E->get(); - if (!selnode) { - return; - } - List<Node *> to_reown; - _reown(selnode, &to_reown); - if (selnode != scene) { - selnode->get_parent()->remove_child(selnode); - } - - p_new_parent->add_child(selnode); - for (List<Node *>::Element *F = to_reown.front(); F; F = F->next()) { - F->get()->set_owner(p_new_owner); - } - } - if (!is_root) { - memdelete(scene); - } - scene = nullptr; - //return selnode; -} - -void EditorSubScene::clear() { - path->set_text(""); - _path_changed(""); -} - -void EditorSubScene::_bind_methods() { - ADD_SIGNAL(MethodInfo("subscene_selected")); -} - -EditorSubScene::EditorSubScene() { - scene = nullptr; - is_root = false; - - set_title(TTR("Select Node(s) to Import")); - set_hide_on_ok(false); - - VBoxContainer *vb = memnew(VBoxContainer); - add_child(vb); - //set_child_rect(vb); - - HBoxContainer *hb = memnew(HBoxContainer); - path = memnew(LineEdit); - path->connect("text_entered", callable_mp(this, &EditorSubScene::_path_changed)); - hb->add_child(path); - path->set_h_size_flags(Control::SIZE_EXPAND_FILL); - Button *b = memnew(Button); - b->set_text(TTR("Browse")); - hb->add_child(b); - b->connect("pressed", callable_mp(this, &EditorSubScene::_path_browse)); - vb->add_margin_child(TTR("Scene Path:"), hb); - - tree = memnew(Tree); - tree->set_v_size_flags(Control::SIZE_EXPAND_FILL); - vb->add_margin_child(TTR("Import From Node:"), tree, true); - tree->set_select_mode(Tree::SELECT_MULTI); - tree->connect("multi_selected", callable_mp(this, &EditorSubScene::_item_multi_selected)); - //tree->connect("nothing_selected", this, "_deselect_items"); - tree->connect("cell_selected", callable_mp(this, &EditorSubScene::_selected_changed)); - - tree->connect("item_activated", callable_mp(this, &EditorSubScene::_item_activated), make_binds(), CONNECT_DEFERRED); - - file_dialog = memnew(EditorFileDialog); - List<String> extensions; - ResourceLoader::get_recognized_extensions_for_type("PackedScene", &extensions); - - for (List<String>::Element *E = extensions.front(); E; E = E->next()) { - file_dialog->add_filter("*." + E->get()); - } - - file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE); - add_child(file_dialog); - file_dialog->connect("file_selected", callable_mp(this, &EditorSubScene::_path_selected)); -} diff --git a/editor/editor_sub_scene.h b/editor/editor_sub_scene.h deleted file mode 100644 index 428bd5a40e..0000000000 --- a/editor/editor_sub_scene.h +++ /dev/null @@ -1,71 +0,0 @@ -/*************************************************************************/ -/* editor_sub_scene.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#ifndef EDITOR_SUB_SCENE_H -#define EDITOR_SUB_SCENE_H - -#include "editor/editor_file_dialog.h" -#include "scene/gui/dialogs.h" -#include "scene/gui/tree.h" - -class EditorSubScene : public ConfirmationDialog { - GDCLASS(EditorSubScene, ConfirmationDialog); - - List<Node *> selection; - LineEdit *path; - Tree *tree; - Node *scene; - bool is_root; - - EditorFileDialog *file_dialog; - - void _fill_tree(Node *p_node, TreeItem *p_parent); - void _selected_changed(); - void _item_multi_selected(Object *p_object, int p_cell, bool p_selected); - void _item_activated(); - void _remove_selection_child(Node *p_node); - void _reown(Node *p_node, List<Node *> *p_to_reown); - - void ok_pressed() override; - -protected: - void _notification(int p_what); - static void _bind_methods(); - void _path_browse(); - void _path_selected(const String &p_path); - void _path_changed(const String &p_path); - -public: - void move(Node *p_new_parent, Node *p_new_owner); - void clear(); - EditorSubScene(); -}; - -#endif // EDITOR_SUB_SCENE_H diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index 054ada1e8d..3d40c145f2 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -92,6 +92,7 @@ static Ref<Texture2D> flip_icon(Ref<Texture2D> p_texture, bool p_flip_y = false, Ref<ImageTexture> texture(memnew(ImageTexture)); Ref<Image> img = p_texture->get_data(); + img = img->duplicate(); if (p_flip_y) { img->flip_y(); @@ -105,7 +106,7 @@ static Ref<Texture2D> flip_icon(Ref<Texture2D> p_texture, bool p_flip_y = false, } #ifdef MODULE_SVG_ENABLED -static Ref<ImageTexture> editor_generate_icon(int p_index, bool p_convert_color, float p_scale = EDSCALE, bool p_force_filter = false) { +static Ref<ImageTexture> editor_generate_icon(int p_index, bool p_convert_color, float p_scale = EDSCALE, float p_saturation = 1.0) { Ref<ImageTexture> icon = memnew(ImageTexture); Ref<Image> img = memnew(Image); @@ -115,6 +116,9 @@ static Ref<ImageTexture> editor_generate_icon(int p_index, bool p_convert_color, const bool upsample = !Math::is_equal_approx(Math::round(p_scale), p_scale); ImageLoaderSVG::create_image_from_string(img, editor_icons_sources[p_index], p_scale, upsample, p_convert_color); + if (p_saturation != 1.0) { + img->adjust_bcs(1.0, 1.0, p_saturation); + } icon->create_from_image(img); // in this case filter really helps return icon; @@ -125,7 +129,7 @@ static Ref<ImageTexture> editor_generate_icon(int p_index, bool p_convert_color, #define ADD_CONVERT_COLOR(dictionary, old_color, new_color) dictionary[Color::html(old_color)] = Color::html(new_color) #endif -void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme = true, int p_thumb_size = 32, bool p_only_thumbs = false) { +void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme = true, int p_thumb_size = 32, bool p_only_thumbs = false, float p_icon_saturation = 1.0) { #ifdef MODULE_SVG_ENABLED // The default icon theme is designed to be used for a dark theme. // This dictionary stores color codes to convert to other colors @@ -238,14 +242,19 @@ void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme = if (!p_only_thumbs) { for (int i = 0; i < editor_icons_count; i++) { float icon_scale = EDSCALE; + float saturation = p_icon_saturation; // Always keep the DefaultProjectIcon at the default size if (strcmp(editor_icons_names[i], "DefaultProjectIcon") == 0) { icon_scale = 1.0f; } + if (strcmp(editor_icons_names[i], "DefaultProjectIcon") == 0 || strcmp(editor_icons_names[i], "Godot") == 0 || strcmp(editor_icons_names[i], "Logo") == 0) { + saturation = 1.0; + } + const int is_exception = exceptions.has(editor_icons_names[i]); - const Ref<ImageTexture> icon = editor_generate_icon(i, !is_exception, icon_scale); + const Ref<ImageTexture> icon = editor_generate_icon(i, !is_exception, icon_scale, saturation); p_theme->set_icon(editor_icons_names[i], "EditorIcons", icon); } @@ -289,6 +298,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { Color accent_color = EDITOR_GET("interface/theme/accent_color"); Color base_color = EDITOR_GET("interface/theme/base_color"); float contrast = EDITOR_GET("interface/theme/contrast"); + float icon_saturation = EDITOR_GET("interface/theme/icon_saturation"); float relationship_line_opacity = EDITOR_GET("interface/theme/relationship_line_opacity"); String preset = EDITOR_GET("interface/theme/preset"); @@ -375,23 +385,26 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { const Color contrast_color_2 = base_color.lerp(mono_color, MAX(contrast * 1.5, default_contrast * 1.5)); const Color font_color = mono_color.lerp(base_color, 0.25); - const Color font_color_hl = mono_color.lerp(base_color, 0.15); - const Color font_color_disabled = Color(mono_color.r, mono_color.g, mono_color.b, 0.3); - const Color font_color_selection = accent_color * Color(1, 1, 1, 0.4); - const Color color_disabled = mono_color.inverted().lerp(base_color, 0.7); - const Color color_disabled_bg = mono_color.inverted().lerp(base_color, 0.9); - - Color icon_color_hover = Color(1, 1, 1) * (dark_theme ? 1.15 : 1.45); - icon_color_hover.a = 1.0; + const Color font_hover_color = mono_color.lerp(base_color, 0.15); + const Color font_disabled_color = Color(mono_color.r, mono_color.g, mono_color.b, 0.3); + const Color selection_color = accent_color * Color(1, 1, 1, 0.4); + const Color disabled_color = mono_color.inverted().lerp(base_color, 0.7); + const Color disabled_bg_color = mono_color.inverted().lerp(base_color, 0.9); + + Color icon_hover_color = Color(1, 1, 1) * (dark_theme ? 1.15 : 1.45); + icon_hover_color.a = 1.0; // Make the pressed icon color overbright because icons are not completely white on a dark theme. // On a light theme, icons are dark, so we need to modulate them with an even brighter color. - Color icon_color_pressed = accent_color * (dark_theme ? 1.15 : 3.5); - icon_color_pressed.a = 1.0; + Color icon_pressed_color = accent_color * (dark_theme ? 1.15 : 3.5); + icon_pressed_color.a = 1.0; const Color separator_color = Color(mono_color.r, mono_color.g, mono_color.b, 0.1); const Color highlight_color = Color(mono_color.r, mono_color.g, mono_color.b, 0.2); + float prev_icon_saturation = theme->has_color("icon_saturation", "Editor") ? theme->get_color("icon_saturation", "Editor").r : 1.0; + + theme->set_color("icon_saturation", "Editor", Color(icon_saturation, icon_saturation, icon_saturation)); //can't save single float in theme, so using color theme->set_color("accent_color", "Editor", accent_color); theme->set_color("highlight_color", "Editor", highlight_color); theme->set_color("base_color", "Editor", base_color); @@ -408,8 +421,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_color("axis_z_color", "Editor", Color(0.16, 0.55, 0.96)); theme->set_color("font_color", "Editor", font_color); - theme->set_color("highlighted_font_color", "Editor", font_color_hl); - theme->set_color("disabled_font_color", "Editor", font_color_disabled); + theme->set_color("highlighted_font_color", "Editor", font_hover_color); + theme->set_color("disabled_font_color", "Editor", font_disabled_color); theme->set_color("mono_color", "Editor", mono_color); @@ -443,13 +456,13 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { //Register icons + font // the resolution and the icon color (dark_theme bool) has not changed, so we do not regenerate the icons - if (p_theme != nullptr && fabs(p_theme->get_constant("scale", "Editor") - EDSCALE) < 0.00001 && (bool)p_theme->get_constant("dark_theme", "Editor") == dark_theme) { + if (p_theme != nullptr && fabs(p_theme->get_constant("scale", "Editor") - EDSCALE) < 0.00001 && (bool)p_theme->get_constant("dark_theme", "Editor") == dark_theme && prev_icon_saturation == icon_saturation) { // register already generated icons for (int i = 0; i < editor_icons_count; i++) { theme->set_icon(editor_icons_names[i], "EditorIcons", p_theme->get_icon(editor_icons_names[i], "EditorIcons")); } } else { - editor_register_and_generate_icons(theme, dark_theme, thumb_size); + editor_register_and_generate_icons(theme, dark_theme, thumb_size, false, icon_saturation); } // thumbnail size has changed, so we regenerate the medium sizes if (p_theme != nullptr && fabs((double)p_theme->get_constant("thumb_size", "Editor") - thumb_size) > 0.00001) { @@ -485,8 +498,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { style_widget->set_border_color(dark_color_2); Ref<StyleBoxFlat> style_widget_disabled = style_widget->duplicate(); - style_widget_disabled->set_border_color(color_disabled); - style_widget_disabled->set_bg_color(color_disabled_bg); + style_widget_disabled->set_border_color(disabled_color); + style_widget_disabled->set_bg_color(disabled_bg_color); Ref<StyleBoxFlat> style_widget_focus = style_widget->duplicate(); style_widget_focus->set_border_color(accent_color); @@ -550,8 +563,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { style_tab_unselected->set_border_color(dark_color_2); Ref<StyleBoxFlat> style_tab_disabled = style_tab_selected->duplicate(); - style_tab_disabled->set_bg_color(color_disabled_bg); - style_tab_disabled->set_border_color(color_disabled); + style_tab_disabled->set_bg_color(disabled_bg_color); + style_tab_disabled->set_border_color(disabled_color); // Editor background theme->set_stylebox("Background", "EditorStyles", make_flat_stylebox(background_color, default_margin_size, default_margin_size, default_margin_size, default_margin_size)); @@ -600,7 +613,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("disabled", "PopupMenu", style_menu); theme->set_color("font_color", "MenuButton", font_color); - theme->set_color("font_color_hover", "MenuButton", font_color_hl); + theme->set_color("font_hover_color", "MenuButton", font_hover_color); theme->set_stylebox("MenuHover", "EditorStyles", style_menu_hover_border); @@ -612,11 +625,11 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("disabled", "Button", style_widget_disabled); 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_color("font_color_disabled", "Button", font_color_disabled); - theme->set_color("icon_color_hover", "Button", icon_color_hover); - theme->set_color("icon_color_pressed", "Button", icon_color_pressed); + theme->set_color("font_hover_color", "Button", font_hover_color); + theme->set_color("font_pressed_color", "Button", accent_color); + theme->set_color("font_disabled_color", "Button", font_disabled_color); + theme->set_color("icon_hover_color", "Button", icon_hover_color); + theme->set_color("icon_pressed_color", "Button", icon_pressed_color); // OptionButton theme->set_stylebox("focus", "OptionButton", style_widget_focus); @@ -632,10 +645,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("disabled_mirrored", "OptionButton", style_widget_disabled); theme->set_color("font_color", "OptionButton", font_color); - theme->set_color("font_color_hover", "OptionButton", font_color_hl); - theme->set_color("font_color_pressed", "OptionButton", accent_color); - theme->set_color("font_color_disabled", "OptionButton", font_color_disabled); - theme->set_color("icon_color_hover", "OptionButton", icon_color_hover); + theme->set_color("font_hover_color", "OptionButton", font_hover_color); + theme->set_color("font_pressed_color", "OptionButton", accent_color); + theme->set_color("font_disabled_color", "OptionButton", font_disabled_color); + theme->set_color("icon_hover_color", "OptionButton", icon_hover_color); theme->set_icon("arrow", "OptionButton", theme->get_icon("GuiOptionArrow", "EditorIcons")); theme->set_constant("arrow_margin", "OptionButton", default_margin_size * EDSCALE); theme->set_constant("modulate_arrow", "OptionButton", true); @@ -658,10 +671,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_icon("off_disabled_mirrored", "CheckButton", theme->get_icon("GuiToggleOffDisabledMirrored", "EditorIcons")); theme->set_color("font_color", "CheckButton", font_color); - theme->set_color("font_color_hover", "CheckButton", font_color_hl); - theme->set_color("font_color_pressed", "CheckButton", accent_color); - theme->set_color("font_color_disabled", "CheckButton", font_color_disabled); - theme->set_color("icon_color_hover", "CheckButton", icon_color_hover); + theme->set_color("font_hover_color", "CheckButton", font_hover_color); + theme->set_color("font_pressed_color", "CheckButton", accent_color); + theme->set_color("font_disabled_color", "CheckButton", font_disabled_color); + theme->set_color("icon_hover_color", "CheckButton", icon_hover_color); theme->set_constant("hseparation", "CheckButton", 4 * EDSCALE); theme->set_constant("check_vadjust", "CheckButton", 0 * EDSCALE); @@ -683,10 +696,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_icon("radio_unchecked", "CheckBox", theme->get_icon("GuiRadioUnchecked", "EditorIcons")); theme->set_color("font_color", "CheckBox", font_color); - theme->set_color("font_color_hover", "CheckBox", font_color_hl); - theme->set_color("font_color_pressed", "CheckBox", accent_color); - theme->set_color("font_color_disabled", "CheckBox", font_color_disabled); - theme->set_color("icon_color_hover", "CheckBox", icon_color_hover); + theme->set_color("font_hover_color", "CheckBox", font_hover_color); + theme->set_color("font_pressed_color", "CheckBox", accent_color); + theme->set_color("font_disabled_color", "CheckBox", font_disabled_color); + theme->set_color("icon_hover_color", "CheckBox", icon_hover_color); theme->set_constant("hseparation", "CheckBox", 4 * EDSCALE); theme->set_constant("check_vadjust", "CheckBox", 0 * EDSCALE); @@ -697,9 +710,12 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { // PopupMenu const int popup_menu_margin_size = default_margin_size * 1.5 * EDSCALE; Ref<StyleBoxFlat> style_popup_menu = style_popup->duplicate(); - style_popup_menu->set_default_margin(SIDE_LEFT, popup_menu_margin_size); + // Use 1 pixel for the sides, since if 0 is used, the highlight of hovered items is drawn + // on top of the popup border. This causes a 'gap' in the panel border when an item is highlighted, + // and it looks weird. 1px solves this. + style_popup_menu->set_default_margin(SIDE_LEFT, 1 * EDSCALE); style_popup_menu->set_default_margin(SIDE_TOP, popup_menu_margin_size); - style_popup_menu->set_default_margin(SIDE_RIGHT, popup_menu_margin_size); + style_popup_menu->set_default_margin(SIDE_RIGHT, 1 * EDSCALE); style_popup_menu->set_default_margin(SIDE_BOTTOM, popup_menu_margin_size); theme->set_stylebox("panel", "PopupMenu", style_popup_menu); @@ -708,10 +724,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("labeled_separator_right", "PopupMenu", style_popup_labeled_separator_right); theme->set_color("font_color", "PopupMenu", font_color); - theme->set_color("font_color_hover", "PopupMenu", font_color_hl); - theme->set_color("font_color_accel", "PopupMenu", font_color_disabled); - theme->set_color("font_color_disabled", "PopupMenu", font_color_disabled); - theme->set_color("font_color_separator", "PopupMenu", font_color_disabled); + theme->set_color("font_hover_color", "PopupMenu", font_hover_color); + theme->set_color("font_accelerator_color", "PopupMenu", font_disabled_color); + theme->set_color("font_disabled_color", "PopupMenu", font_disabled_color); + theme->set_color("font_separator_color", "PopupMenu", font_disabled_color); theme->set_icon("checked", "PopupMenu", theme->get_icon("GuiChecked", "EditorIcons")); theme->set_icon("unchecked", "PopupMenu", theme->get_icon("GuiUnchecked", "EditorIcons")); theme->set_icon("radio_checked", "PopupMenu", theme->get_icon("GuiRadioChecked", "EditorIcons")); @@ -721,16 +737,63 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_icon("visibility_hidden", "PopupMenu", theme->get_icon("GuiVisibilityHidden", "EditorIcons")); theme->set_icon("visibility_visible", "PopupMenu", theme->get_icon("GuiVisibilityVisible", "EditorIcons")); theme->set_icon("visibility_xray", "PopupMenu", theme->get_icon("GuiVisibilityXray", "EditorIcons")); + theme->set_constant("vseparation", "PopupMenu", (extra_spacing + default_margin_size + 1) * EDSCALE); + theme->set_constant("item_start_padding", "PopupMenu", popup_menu_margin_size * EDSCALE); + theme->set_constant("item_end_padding", "PopupMenu", popup_menu_margin_size * EDSCALE); + + for (int i = 0; i < 16; i++) { + Color si_base_color = accent_color; + + float hue_rotate = (i * 2 % 16) / 16.0; + si_base_color.set_hsv(Math::fmod(float(si_base_color.get_h() + hue_rotate), float(1.0)), si_base_color.get_s(), si_base_color.get_v()); + si_base_color = accent_color.lerp(si_base_color, float(EDITOR_GET("docks/property_editor/subresource_hue_tint"))); + + Ref<StyleBoxFlat> sub_inspector_bg; + + sub_inspector_bg = make_flat_stylebox(dark_color_1.lerp(si_base_color, 0.08), 2, 0, 2, 2); + + sub_inspector_bg->set_border_width(SIDE_LEFT, 2); + sub_inspector_bg->set_border_width(SIDE_RIGHT, 2); + sub_inspector_bg->set_border_width(SIDE_BOTTOM, 2); + sub_inspector_bg->set_border_width(SIDE_TOP, 2); + sub_inspector_bg->set_default_margin(SIDE_LEFT, 3); + sub_inspector_bg->set_default_margin(SIDE_RIGHT, 3); + sub_inspector_bg->set_default_margin(SIDE_BOTTOM, 10); + sub_inspector_bg->set_default_margin(SIDE_TOP, 5); + sub_inspector_bg->set_border_color(si_base_color * Color(0.7, 0.7, 0.7, 0.8)); + sub_inspector_bg->set_draw_center(true); + + theme->set_stylebox("sub_inspector_bg" + itos(i), "Editor", sub_inspector_bg); - Ref<StyleBoxFlat> sub_inspector_bg = make_flat_stylebox(dark_color_1.lerp(accent_color, 0.08), 2, 0, 2, 2); - sub_inspector_bg->set_border_width(SIDE_LEFT, 2); - sub_inspector_bg->set_border_width(SIDE_RIGHT, 2); - sub_inspector_bg->set_border_width(SIDE_BOTTOM, 2); - sub_inspector_bg->set_border_color(accent_color * Color(1, 1, 1, 0.3)); - sub_inspector_bg->set_draw_center(true); + Ref<StyleBoxFlat> bg_color; + bg_color.instance(); + bg_color->set_bg_color(si_base_color * Color(0.7, 0.7, 0.7, 0.8)); + bg_color->set_border_width_all(0); + + Ref<StyleBoxFlat> bg_color_selected; + bg_color_selected.instance(); + bg_color_selected->set_border_width_all(0); + bg_color_selected->set_bg_color(si_base_color * Color(0.8, 0.8, 0.8, 0.8)); + + theme->set_stylebox("sub_inspector_property_bg" + itos(i), "Editor", bg_color); + theme->set_stylebox("sub_inspector_property_bg_selected" + itos(i), "Editor", bg_color_selected); + } + + theme->set_color("sub_inspector_property_color", "Editor", dark_theme ? Color(1, 1, 1, 1) : Color(0, 0, 0, 1)); + theme->set_constant("sub_inspector_font_offset", "Editor", 4 * EDSCALE); + + Ref<StyleBoxFlat> style_property_bg = style_default->duplicate(); + style_property_bg->set_bg_color(highlight_color); + style_property_bg->set_border_width_all(0); + + theme->set_constant("font_offset", "EditorProperty", 1 * EDSCALE); + theme->set_stylebox("bg_selected", "EditorProperty", style_property_bg); + theme->set_stylebox("bg", "EditorProperty", Ref<StyleBoxEmpty>(memnew(StyleBoxEmpty))); + theme->set_constant("vseparation", "EditorProperty", (extra_spacing + default_margin_size) * EDSCALE); + theme->set_color("error_color", "EditorProperty", error_color); + theme->set_color("property_color", "EditorProperty", property_color); - theme->set_stylebox("sub_inspector_bg", "Editor", sub_inspector_bg); theme->set_constant("inspector_margin", "Editor", 8 * EDSCALE); // Tree & ItemList background @@ -753,9 +816,9 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("custom_button", "Tree", make_empty_stylebox()); theme->set_stylebox("custom_button_pressed", "Tree", make_empty_stylebox()); theme->set_stylebox("custom_button_hover", "Tree", style_widget); - theme->set_color("custom_button_font_highlight", "Tree", font_color_hl); + theme->set_color("custom_button_font_highlight", "Tree", font_hover_color); theme->set_color("font_color", "Tree", font_color); - theme->set_color("font_color_selected", "Tree", mono_color); + theme->set_color("font_selected_color", "Tree", mono_color); theme->set_color("title_button_color", "Tree", font_color); theme->set_color("guide_color", "Tree", guide_color); theme->set_color("relationship_line_color", "Tree", relationship_line_color); @@ -826,7 +889,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("bg_focus", "ItemList", style_focus); theme->set_stylebox("bg", "ItemList", style_itemlist_bg); theme->set_color("font_color", "ItemList", font_color); - theme->set_color("font_color_selected", "ItemList", mono_color); + theme->set_color("font_selected_color", "ItemList", mono_color); theme->set_color("guide_color", "ItemList", guide_color); theme->set_constant("vseparation", "ItemList", 3 * EDSCALE); theme->set_constant("hseparation", "ItemList", 3 * EDSCALE); @@ -834,16 +897,16 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_constant("line_separation", "ItemList", 3 * EDSCALE); // Tabs & TabContainer - theme->set_stylebox("tab_fg", "TabContainer", style_tab_selected); - theme->set_stylebox("tab_bg", "TabContainer", style_tab_unselected); + theme->set_stylebox("tab_selected", "TabContainer", style_tab_selected); + theme->set_stylebox("tab_unselected", "TabContainer", style_tab_unselected); theme->set_stylebox("tab_disabled", "TabContainer", style_tab_disabled); - theme->set_stylebox("tab_fg", "Tabs", style_tab_selected); - theme->set_stylebox("tab_bg", "Tabs", style_tab_unselected); + theme->set_stylebox("tab_selected", "Tabs", style_tab_selected); + theme->set_stylebox("tab_unselected", "Tabs", style_tab_unselected); theme->set_stylebox("tab_disabled", "Tabs", style_tab_disabled); - theme->set_color("font_color_fg", "TabContainer", font_color); - theme->set_color("font_color_bg", "TabContainer", font_color_disabled); - theme->set_color("font_color_fg", "Tabs", font_color); - theme->set_color("font_color_bg", "Tabs", font_color_disabled); + theme->set_color("font_selected_color", "TabContainer", font_color); + theme->set_color("font_unselected_color", "TabContainer", font_disabled_color); + theme->set_color("font_selected_color", "Tabs", font_color); + theme->set_color("font_unselected_color", "Tabs", font_disabled_color); theme->set_icon("menu", "TabContainer", theme->get_icon("GuiTabMenu", "EditorIcons")); theme->set_icon("menu_highlight", "TabContainer", theme->get_icon("GuiTabMenuHl", "EditorIcons")); theme->set_stylebox("SceneTabFG", "EditorStyles", style_tab_selected); @@ -891,7 +954,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("DebuggerPanel", "EditorStyles", style_panel_debugger); Ref<StyleBoxFlat> style_panel_invisible_top = style_content_panel->duplicate(); - int stylebox_offset = theme->get_font("tab_fg", "TabContainer")->get_height(theme->get_font_size("tab_fg", "TabContainer")) + theme->get_stylebox("tab_fg", "TabContainer")->get_minimum_size().height + theme->get_stylebox("panel", "TabContainer")->get_default_margin(SIDE_TOP); + int stylebox_offset = theme->get_font("tab_selected", "TabContainer")->get_height(theme->get_font_size("tab_selected", "TabContainer")) + theme->get_stylebox("tab_selected", "TabContainer")->get_minimum_size().height + theme->get_stylebox("panel", "TabContainer")->get_default_margin(SIDE_TOP); style_panel_invisible_top->set_expand_margin_size(SIDE_TOP, -stylebox_offset); style_panel_invisible_top->set_default_margin(SIDE_TOP, 0); theme->set_stylebox("BottomPanelDebuggerOverride", "EditorStyles", style_panel_invisible_top); @@ -901,11 +964,11 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("focus", "LineEdit", style_widget_focus); theme->set_stylebox("read_only", "LineEdit", style_widget_disabled); theme->set_icon("clear", "LineEdit", theme->get_icon("GuiClose", "EditorIcons")); - theme->set_color("read_only", "LineEdit", font_color_disabled); + theme->set_color("read_only", "LineEdit", font_disabled_color); theme->set_color("font_color", "LineEdit", font_color); - theme->set_color("font_color_selected", "LineEdit", mono_color); + theme->set_color("font_selected_color", "LineEdit", mono_color); theme->set_color("cursor_color", "LineEdit", font_color); - theme->set_color("selection_color", "LineEdit", font_color_selection); + theme->set_color("selection_color", "LineEdit", selection_color); theme->set_color("clear_button_color", "LineEdit", font_color); theme->set_color("clear_button_color_pressed", "LineEdit", accent_color); @@ -918,7 +981,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_icon("space", "TextEdit", theme->get_icon("GuiSpace", "EditorIcons")); theme->set_color("font_color", "TextEdit", font_color); theme->set_color("caret_color", "TextEdit", font_color); - theme->set_color("selection_color", "TextEdit", font_color_selection); + theme->set_color("selection_color", "TextEdit", selection_color); // CodeEdit theme->set_stylebox("normal", "CodeEdit", style_widget); @@ -932,7 +995,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_icon("executing_line", "CodeEdit", theme->get_icon("MainPlay", "EditorIcons")); theme->set_color("font_color", "CodeEdit", font_color); theme->set_color("caret_color", "CodeEdit", font_color); - theme->set_color("selection_color", "CodeEdit", font_color_selection); + theme->set_color("selection_color", "CodeEdit", selection_color); // H/VSplitContainer theme->set_stylebox("bg", "VSplitContainer", make_stylebox(theme->get_icon("GuiVsplitBg", "EditorIcons"), 1, 1, 1, 1)); @@ -1023,7 +1086,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { //RichTextLabel theme->set_color("default_color", "RichTextLabel", font_color); - theme->set_color("font_color_shadow", "RichTextLabel", Color(0, 0, 0, 0)); + theme->set_color("font_shadow_color", "RichTextLabel", Color(0, 0, 0, 0)); theme->set_constant("shadow_offset_x", "RichTextLabel", 1 * EDSCALE); theme->set_constant("shadow_offset_y", "RichTextLabel", 1 * EDSCALE); theme->set_constant("shadow_as_outline", "RichTextLabel", 0 * EDSCALE); @@ -1039,7 +1102,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { // Label theme->set_stylebox("normal", "Label", style_empty); theme->set_color("font_color", "Label", font_color); - theme->set_color("font_color_shadow", "Label", Color(0, 0, 0, 0)); + theme->set_color("font_shadow_color", "Label", Color(0, 0, 0, 0)); theme->set_constant("shadow_offset_x", "Label", 1 * EDSCALE); theme->set_constant("shadow_offset_y", "Label", 1 * EDSCALE); theme->set_constant("shadow_as_outline", "Label", 0 * EDSCALE); @@ -1048,9 +1111,9 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { // LinkButton theme->set_stylebox("focus", "LinkButton", style_empty); theme->set_color("font_color", "LinkButton", font_color); - theme->set_color("font_color_hover", "LinkButton", font_color_hl); - theme->set_color("font_color_pressed", "LinkButton", accent_color); - theme->set_color("font_color_disabled", "LinkButton", font_color_disabled); + theme->set_color("font_hover_color", "LinkButton", font_hover_color); + theme->set_color("font_pressed_color", "LinkButton", accent_color); + theme->set_color("font_disabled_color", "LinkButton", font_disabled_color); // TooltipPanel Ref<StyleBoxFlat> style_tooltip = style_popup->duplicate(); @@ -1063,7 +1126,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { style_tooltip->set_border_width_all(border_width); style_tooltip->set_border_color(mono_color); theme->set_color("font_color", "TooltipLabel", font_color.inverted()); - theme->set_color("font_color_shadow", "TooltipLabel", mono_color.inverted() * Color(1, 1, 1, 0.1)); + theme->set_color("font_shadow_color", "TooltipLabel", mono_color.inverted() * Color(1, 1, 1, 0.1)); theme->set_stylebox("panel", "TooltipPanel", style_tooltip); // PopupPanel @@ -1098,7 +1161,11 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_constant("bezier_len_neg", "GraphEdit", 160 * EDSCALE); // GraphEditMinimap - theme->set_stylebox("bg", "GraphEditMinimap", make_flat_stylebox(dark_color_1, 0, 0, 0, 0)); + Ref<StyleBoxFlat> style_minimap_bg = make_flat_stylebox(dark_color_1, 0, 0, 0, 0); + style_minimap_bg->set_border_color(dark_color_3); + style_minimap_bg->set_border_width_all(1); + theme->set_stylebox("bg", "GraphEditMinimap", style_minimap_bg); + Ref<StyleBoxFlat> style_minimap_camera; Ref<StyleBoxFlat> style_minimap_node; if (dark_theme) { @@ -1115,9 +1182,15 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("camera", "GraphEditMinimap", style_minimap_camera); theme->set_stylebox("node", "GraphEditMinimap", style_minimap_node); - Ref<Texture2D> resizer_icon = theme->get_icon("GuiResizer", "EditorIcons"); - theme->set_icon("resizer", "GraphEditMinimap", flip_icon(resizer_icon, true, true)); - theme->set_color("resizer_color", "GraphEditMinimap", Color(1, 1, 1, 0.65)); + Ref<Texture2D> minimap_resizer_icon = theme->get_icon("GuiResizer", "EditorIcons"); + Color minimap_resizer_color; + if (dark_theme) { + minimap_resizer_color = Color(1, 1, 1, 0.65); + } else { + minimap_resizer_color = Color(0, 0, 0, 0.65); + } + theme->set_icon("resizer", "GraphEditMinimap", flip_icon(minimap_resizer_icon, true, true)); + theme->set_color("resizer_color", "GraphEditMinimap", minimap_resizer_color); // GraphNode const float mv = dark_theme ? 0.0 : 1.0; @@ -1198,7 +1271,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { // Use a different color for folder icons to make them easier to distinguish from files. // On a light theme, the icon will be dark, so we need to lighten it before blending it with the accent color. theme->set_color("folder_icon_modulate", "FileDialog", (dark_theme ? Color(1, 1, 1) : Color(4.25, 4.25, 4.25)).lerp(accent_color, 0.7)); - theme->set_color("files_disabled", "FileDialog", font_color_disabled); + theme->set_color("files_disabled", "FileDialog", font_disabled_color); // color picker theme->set_constant("margin", "ColorPicker", popup_margin_size); @@ -1251,7 +1324,6 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { const Color caret_color = mono_color; const Color caret_background_color = mono_color.inverted(); const Color text_selected_color = dark_color_3; - const Color selection_color = accent_color * Color(1, 1, 1, 0.35); const Color brace_mismatch_color = error_color; const Color current_line_color = alpha1; const Color line_length_guideline_color = dark_theme ? base_color : background_color; diff --git a/editor/fileserver/editor_file_server.cpp b/editor/fileserver/editor_file_server.cpp index 02bbeb57c7..07edae833d 100644 --- a/editor/fileserver/editor_file_server.cpp +++ b/editor/fileserver/editor_file_server.cpp @@ -43,7 +43,7 @@ void EditorFileServer::_close_client(ClientData *cd) { cd->connection->disconnect_from_host(); { MutexLock lock(cd->efs->wait_mutex); - cd->efs->to_wait.insert(cd->thread); + cd->efs->to_wait.insert(&cd->thread); } while (cd->files.size()) { memdelete(cd->files.front()->get()); @@ -278,7 +278,7 @@ void EditorFileServer::_thread_start(void *s) { cd->connection = self->server->take_connection(); cd->efs = self; cd->quit = false; - cd->thread = Thread::create(_subthread_start, cd); + cd->thread.start(_subthread_start, cd); } } @@ -287,8 +287,7 @@ void EditorFileServer::_thread_start(void *s) { Thread *w = self->to_wait.front()->get(); self->to_wait.erase(w); self->wait_mutex.unlock(); - Thread::wait_to_finish(w); - memdelete(w); + w->wait_to_finish(); self->wait_mutex.lock(); } self->wait_mutex.unlock(); @@ -317,7 +316,7 @@ EditorFileServer::EditorFileServer() { quit = false; active = false; cmd = CMD_NONE; - thread = Thread::create(_thread_start, this); + thread.start(_thread_start, this); EDITOR_DEF("filesystem/file_server/port", 6010); EDITOR_DEF("filesystem/file_server/password", ""); @@ -325,6 +324,5 @@ EditorFileServer::EditorFileServer() { EditorFileServer::~EditorFileServer() { quit = true; - Thread::wait_to_finish(thread); - memdelete(thread); + thread.wait_to_finish(); } diff --git a/editor/fileserver/editor_file_server.h b/editor/fileserver/editor_file_server.h index 267b129bda..e4c8327d76 100644 --- a/editor/fileserver/editor_file_server.h +++ b/editor/fileserver/editor_file_server.h @@ -47,7 +47,7 @@ class EditorFileServer : public Object { }; struct ClientData { - Thread *thread = nullptr; + Thread thread; Ref<StreamPeerTCP> connection; Map<int, FileAccess *> files; EditorFileServer *efs = nullptr; @@ -61,7 +61,7 @@ class EditorFileServer : public Object { static void _subthread_start(void *s); Mutex wait_mutex; - Thread *thread; + Thread thread; static void _thread_start(void *); bool quit; Command cmd; diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index e8cf081320..ab5fd30998 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -76,6 +76,9 @@ bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory subdirectory_item->set_metadata(0, lpath); if (!p_select_in_favorites && (path == lpath || ((display_mode == DISPLAY_MODE_SPLIT) && path.get_base_dir() == lpath))) { subdirectory_item->select(0); + // Keep select an item when re-created a tree + // To prevent crashing when nothing is selected. + subdirectory_item->set_as_cursor(0); } if (p_unfold_path && path.begins_with(lpath) && path != lpath) { @@ -1407,10 +1410,28 @@ void FileSystemDock::_make_scene_confirm() { void FileSystemDock::_file_removed(String p_file) { emit_signal("file_removed", p_file); + + // Find the closest parent directory available, in case multiple items were deleted along the same path. + path = p_file.get_base_dir(); + DirAccessRef da = DirAccess::create(DirAccess::ACCESS_RESOURCES); + while (!da->dir_exists(path)) { + path = path.get_base_dir(); + } + + current_path->set_text(path); } void FileSystemDock::_folder_removed(String p_folder) { emit_signal("folder_removed", p_folder); + + // Find the closest parent directory available, in case multiple items were deleted along the same path. + path = p_folder.get_base_dir(); + DirAccessRef da = DirAccess::create(DirAccess::ACCESS_RESOURCES); + while (!da->dir_exists(path)) { + path = path.get_base_dir(); + } + + current_path->set_text(path); } void FileSystemDock::_rename_operation_confirm() { @@ -1465,6 +1486,9 @@ void FileSystemDock::_rename_operation_confirm() { print_verbose("FileSystem: saving moved scenes."); _save_scenes_after_move(file_renames); + + path = new_path; + current_path->set_text(path); } void FileSystemDock::_duplicate_operation_confirm() { @@ -1573,6 +1597,9 @@ void FileSystemDock::_move_operation_confirm(const String &p_to_path, bool p_ove print_verbose("FileSystem: saving moved scenes."); _save_scenes_after_move(file_renames); + + path = p_to_path; + current_path->set_text(path); } } diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp index c2f2254023..47079a92b7 100644 --- a/editor/find_in_files.cpp +++ b/editor/find_in_files.cpp @@ -463,7 +463,7 @@ void FindInFilesDialog::_notification(int p_what) { for (int i = 0; i < _filters_container->get_child_count(); i++) { _filters_container->get_child(i)->queue_delete(); } - Array exts = ProjectSettings::get_singleton()->get("editor/search_in_file_extensions"); + Array exts = ProjectSettings::get_singleton()->get("editor/script/search_in_file_extensions"); for (int i = 0; i < exts.size(); ++i) { CheckBox *cb = memnew(CheckBox); cb->set_text(exts[i]); @@ -687,6 +687,9 @@ void FindInFilesPanel::stop_search() { void FindInFilesPanel::_notification(int p_what) { if (p_what == NOTIFICATION_PROCESS) { _progress_bar->set_as_ratio(_finder->get_progress()); + } else if (p_what == NOTIFICATION_THEME_CHANGED) { + _search_text_label->add_theme_font_override("font", get_theme_font("source", "EditorFonts")); + _results_display->add_theme_font_override("font", get_theme_font("source", "EditorFonts")); } } diff --git a/editor/icons/GPUParticlesAttractorBox.svg b/editor/icons/GPUParticlesAttractorBox.svg new file mode 100644 index 0000000000..3c27b2d3cb --- /dev/null +++ b/editor/icons/GPUParticlesAttractorBox.svg @@ -0,0 +1 @@ +<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><circle cx="8" cy="8" fill="#fc9c9c" fill-opacity=".996078" r="1"/><g fill="none" stroke="#fc9c9c" stroke-opacity=".996078"><ellipse cx="8" cy="-8" rx="2.339226" ry="4.949748" transform="rotate(90)"/><ellipse cx="8" cy="8" rx="2.339226" ry="4.949748"/><path d="m1.498906 1.498906h13.002189v13.002188h-13.002189z" stroke-width=".997813"/></g></svg> diff --git a/editor/icons/GPUParticlesAttractorSphere.svg b/editor/icons/GPUParticlesAttractorSphere.svg new file mode 100644 index 0000000000..5473a23854 --- /dev/null +++ b/editor/icons/GPUParticlesAttractorSphere.svg @@ -0,0 +1 @@ +<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><ellipse cx="-8" cy="-7.999999" fill="none" rx="6.499003" ry="6.499001" stroke="#fc9c9c" stroke-opacity=".996078" stroke-width="1.002" transform="scale(-1)"/><circle cx="8" cy="8" fill="#fc9c9c" fill-opacity=".996078" r="1"/><g fill="none" stroke="#fc9c9c" stroke-opacity=".996078"><ellipse cx="11.313708" rx="2.339226" ry="4.949748" transform="matrix(.70710678 .70710678 -.70710678 .70710678 0 0)"/><ellipse cy="11.313708" rx="2.339226" ry="4.949748" transform="matrix(.70710678 -.70710678 .70710678 .70710678 0 0)"/></g></svg> diff --git a/editor/icons/GPUParticlesAttractorVectorField.svg b/editor/icons/GPUParticlesAttractorVectorField.svg new file mode 100644 index 0000000000..93a29789e3 --- /dev/null +++ b/editor/icons/GPUParticlesAttractorVectorField.svg @@ -0,0 +1 @@ +<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><ellipse cx="6.663637" cy="9.245457" fill="#fc9c9c" fill-opacity=".996078" rx="1.030661" ry=".998146"/><ellipse cx="-6.672815" cy="-9.387111" fill="none" rx="2.408711" ry="5.096776" stroke="#fc9c9c" stroke-opacity=".996078" stroke-width="1.0297" transform="matrix(-.99999945 .00104887 .00104887 -.99999945 0 0)"/><ellipse cx="9.387111" cy="-6.672815" fill="none" rx="2.408711" ry="5.096776" stroke="#fc9c9c" stroke-opacity=".996078" stroke-width="1.0297" transform="matrix(-.00104887 .99999945 -.99999945 .00104887 0 0)"/><g fill="#fc9c9c" fill-opacity=".996078"><path d="m11.8 15 2.4-2.4.8.8v-2.4h-2.4l.8.8-2.4 2.4z"/><path d="m11 6 3-3 1 1v-3h-3l1 1-3 3z"/><path d="m1.8 5 2.4-2.4.8.8v-2.4h-2.4l.8.8-2.4 2.4z"/></g></svg> diff --git a/editor/icons/GPUParticlesCollisionBox.svg b/editor/icons/GPUParticlesCollisionBox.svg new file mode 100644 index 0000000000..f7296b34c3 --- /dev/null +++ b/editor/icons/GPUParticlesCollisionBox.svg @@ -0,0 +1 @@ +<svg height="16" viewBox="0 0 14.999999 14.999999" width="16" xmlns="http://www.w3.org/2000/svg"><g fill="#fc9c9c" fill-opacity=".996078"><path d="m7.5 2.8124998-5.5883107 2.7941554v5.7660988l5.5883107 2.794155 5.588311-2.794155v-5.7660988zm0 1.6886278 3.145021 1.5732692-3.145021 1.5717523-3.1450214-1.5717523zm-3.9916505 2.8362274 3.1933204 1.5966602v3.1465378l-3.1933204-1.598256zm7.9833015 0v3.145021l-3.1933209 1.598257v-3.146538z" stroke-width=".851579"/><circle cx="1.875" cy="3.75" r=".9375"/><circle cx="13.124999" cy="3.75" r=".9375"/><circle cx="9.374999" cy="1.875" r=".9375"/><circle cx="5.625" cy="1.875" r=".9375"/></g></svg> diff --git a/editor/icons/GPUParticlesCollisionHeightField.svg b/editor/icons/GPUParticlesCollisionHeightField.svg new file mode 100644 index 0000000000..b483f299e9 --- /dev/null +++ b/editor/icons/GPUParticlesCollisionHeightField.svg @@ -0,0 +1 @@ +<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><g fill="#fc9c9c"><path d="m1 10c1-1 3-2 3-4s2-4 4-4 4 2 4 4 2 3 3 4l-7 5z"/><circle cx="2" cy="6" r="1"/><circle cx="14" cy="6" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="4" cy="2" r="1"/></g></svg> diff --git a/editor/icons/GPUParticlesCollisionSDF.svg b/editor/icons/GPUParticlesCollisionSDF.svg new file mode 100644 index 0000000000..6279990f3a --- /dev/null +++ b/editor/icons/GPUParticlesCollisionSDF.svg @@ -0,0 +1 @@ +<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m14 14h-12v-9s3 4 5.9999999 3.9999999c3.0000001-.0000001 6.0000001-3.9999999 6.0000001-3.9999999z" fill="none" stroke="#fc9c9c" stroke-linejoin="round" stroke-opacity=".996078" stroke-width="2"/><g fill="#fc9c9c" fill-opacity=".996078"><circle cx="2" cy="2" r="1"/><circle cx="14" cy="2" r="1"/><circle cx="10" cy="5" r="1"/><circle cx="6" cy="5" r="1"/></g></svg> diff --git a/editor/icons/GPUParticlesCollisionSphere.svg b/editor/icons/GPUParticlesCollisionSphere.svg new file mode 100644 index 0000000000..fc7715445c --- /dev/null +++ b/editor/icons/GPUParticlesCollisionSphere.svg @@ -0,0 +1 @@ +<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><g fill="#fc9c9c" fill-opacity=".996078"><path d="m8 3.0532484c-3.2888554 0-5.9733758 2.6845204-5.9733758 5.9733758 0 3.2889408 2.6845204 5.9733758 5.9733758 5.9733758 3.288855 0 5.973376-2.684435 5.973376-5.9733758 0-3.2888554-2.684521-5.9733758-5.973376-5.9733758zm-.8533394 1.79005v4.1567016c-1.1034532-.0608789-2.2238878-.2544573-3.3650586-.5900074.256693-1.7901354 1.6087154-3.2141029 3.3650586-3.5667027zm1.7066788 0c1.7535276.3520281 3.1035956 1.77213 3.3633516 3.55834-1.113266.3129793-2.2321649.5142138-3.3633516.5866709zm3.2300606 5.3599956c-.434043 1.51792-1.663927 2.690664-3.2300606 3.005035v-2.518376c1.0915918-.0617 2.1691036-.227875 3.2300606-.486668zm-8.161765.015c1.0865571.272147 2.162106.428504 3.2250256.480003v2.510013c-1.5608431-.313338-2.7870065-1.479605-3.2250256-2.990016z" stroke-width=".853339"/><circle cx="2" cy="5" r="1"/><circle cx="14" cy="5" r="1"/><circle cx="10" cy="2" r="1"/><circle cx="6" cy="2" r="1"/></g></svg> diff --git a/editor/icons/Logo.svg b/editor/icons/Logo.svg index d7aef39cc9..a4ad488396 100644 --- a/editor/icons/Logo.svg +++ b/editor/icons/Logo.svg @@ -1 +1 @@ -<svg height="69" viewBox="0 0 187 69" width="187" xmlns="http://www.w3.org/2000/svg"><path d="m91.912 19.51c-3.5233 0-6.278 1.1097-8.2676 3.3281-1.9911 2.2193-2.9844 5.1004-2.9844 8.6465 0 4.1636 1.0165 7.3207 3.0508 9.4707 2.0379 2.1497 4.7123 3.2227 8.0293 3.2227 1.7838 0 3.3686-.15384 4.752-.46289 1.3848-.30784 2.3038-.62367 2.7617-.94336l.13867-10.736c0-.62388-1.6471-.90785-3.4941-.93945-1.847-.02857-3.9609.35742-3.9609.35742v3.6055h2.125l-.023438 1.6055c0 .59532-.59062.89453-1.7676.89453-1.1785 0-2.2182-.4989-3.1211-1.4941-.90498-.99645-1.3555-2.4517-1.3555-4.3711 0-1.9233.43964-3.3428 1.3203-4.2578.87885-.9141 2.0322-1.3711 3.4492-1.3711.59532 0 1.2107.095008 1.8516.29102.64121.19418 1.0686.37639 1.2871.54688.21667.17534.42435.25781.61914.25781.19388 0 .50715-.22698.94141-.68555.43487-.45735.82427-1.1501 1.168-2.0742.34218-.92899.51367-1.6414.51367-2.1465 0-.50111-.011023-.84501-.033203-1.0273-.48045-.52573-1.3668-.94394-2.6602-1.2539-1.2909-.30906-2.7387-.46289-4.3398-.46289zm21.049 0c-3.2367 0-5.8788 1.0413-7.9258 3.1211-2.0464 2.0826-3.0703 5.1404-3.0703 9.1797 0 4.0369 1.0128 7.1085 3.0352 9.2129 2.0251 2.1026 4.6444 3.1543 7.8574 3.1543 3.2145 0 5.8383-1.0111 7.875-3.0332 2.0367-2.0263 3.0527-5.1142 3.0527-9.2656 0-4.1484-.99433-7.2508-2.9863-9.2969-1.9884-2.05-4.6018-3.0723-7.8379-3.0723zm45.504 0c-3.2379 0-5.8792 1.0413-7.9277 3.1211-2.0461 2.0826-3.0684 5.1404-3.0684 9.1797 0 4.0369 1.0104 7.1085 3.0352 9.2129 2.0233 2.1026 4.6432 3.1543 7.8574 3.1543 3.213 0 5.8373-1.0111 7.873-3.0332 2.0364-2.0263 3.0547-5.1142 3.0547-9.2656 0-4.1484-.9939-7.2508-2.9844-9.2969-1.9908-2.05-4.6031-3.0723-7.8398-3.0723zm-30.105.30859c-.45888 0-.82988.16637-1.1152.49609-.28717.33489-.42969.78715-.42969 1.3594v20.584c0 1.053.58624 1.5781 1.752 1.5781h5.8652c7.1824-.000001 10.773-4.2092 10.773-12.627 0-3.9348-.94335-6.8151-2.832-8.6445-1.8853-1.83-4.6472-2.7461-8.2832-2.7461h-5.7305zm42.807 0c-.38928 0-.66468.52801-.82422 1.5801-.0687.50294-.10157 1.0191-.10157 1.543 0 .52694.03287 1.0409.10157 1.543.15954 1.0548.43494 1.5801.82422 1.5801h4.1152v17.225c0 .45462 1.1351.68555 3.3984.68555 2.2655 0 3.3965-.23093 3.3965-.68555v-17.225h4.0137c.38868 0 .66225-.52528.82422-1.5801.0672-.50202.10156-1.016.10156-1.543.00001-.52391-.03436-1.04-.10156-1.543-.16197-1.0521-.43554-1.5801-.82422-1.5801h-14.924zm-58.291 6.2793c1.0989 0 2.0193.49244 2.7617 1.4746.74331.98339 1.1152 2.3913 1.1152 4.2207 0 1.8309-.35955 3.2363-1.0801 4.2188-.72053.98612-1.6597 1.4785-2.8145 1.4785-1.1554 0-2.0859-.48441-2.7949-1.459-.71019-.97154-1.0644-2.3663-1.0644-4.1875 0-1.8173.37148-3.2302 1.1133-4.2363.74574-1.0053 1.6663-1.5098 2.7637-1.5098zm45.504 0c1.0989 0 2.0181.49244 2.7617 1.4746.74331.98339 1.1152 2.3913 1.1152 4.2207 0 1.8309-.3612 3.2363-1.082 4.2188-.71961.98612-1.6574 1.4785-2.8125 1.4785-1.1554 0-2.0888-.48441-2.7969-1.459-.70806-.97154-1.0625-2.3663-1.0625-4.1875 0-1.8173.37179-3.2302 1.1133-4.2363.74453-1.0053 1.666-1.5098 2.7637-1.5098zm-24.977.23828h.34375c1.4638 0 2.5334.33466 3.209.99805.6722.66157 1.0098 2.0859 1.0098 4.2715 0 2.1847-.32289 3.7447-.97656 4.6816-.65214.9378-1.6059 1.4082-2.8652 1.4082-.34218 0-.54909-.063339-.61719-.18945-.06873-.12672-.10352-.42897-.10352-.9082v-10.262z" fill="#fff"/><path d="m137.91 48.551v1.2109h.85938v-1.2109zm-52.396.58984c-.99736 0-1.7963.32424-2.3926.96484-.59745.64576-.89453 1.5712-.89453 2.7773v3.0742c0 1.2329.31639 2.1765.94727 2.832.6333.66066 1.467.98828 2.5039.98828.78586 0 1.4321-.16147 1.9414-.48633.50993-.32273.8592-.67938 1.0488-1.0684v-3.6875h-3.0059v.74805h2.1465v2.6934c-.13766.30115-.38143.55386-.73242.76172-.34978.2109-.8171.31445-1.3984.31445-.79619 0-1.4265-.2632-1.8945-.78711-.46799-.52786-.70312-1.2936-.70312-2.2988v-3.0918c0-.96941.21778-1.7078.65234-2.2168.43578-.51023 1.0297-.76367 1.7812-.76367.74271 0 1.3056.19019 1.6836.56641.38017.37925.58276.91542.61133 1.6113h.79492l.013672-.041016c-.024311-.90802-.30456-1.6179-.83789-2.127-.53484-.50719-1.2907-.76367-2.2656-.76367zm7.6133 2.6641c-.719 0-1.3111.22524-1.7715.67773-.46222.45371-.68069.96571-.6582 1.5449l.013672.041015.79688.007813c0-.42696.14768-.78487.44336-1.0781.2966-.29508.67455-.44141 1.1328-.44141.4926 0 .87459.15388 1.1523.45898.27198.30906.41016.73655.41016 1.2793v.94531h-1.3418c-.85666 0-1.5379.21084-2.0391.63477-.50142.42392-.75195.99502-.75195 1.707 0 .67372.17358 1.2075.51758 1.6035.34613.39445.83497.5918 1.4707.5918.45462 0 .86723-.12355 1.2383-.37305.37166-.24767.67317-.56424.90625-.94531 0 .17413.01089.34527.03125.51758.02097.16927.053163.38614.095703.65234h.88867c-.062302-.24767-.10234-.49621-.12695-.75391-.02401-.25436-.037109-.52051-.037109-.79492v-3.7676c0-.80622-.21809-1.4265-.65234-1.8613-.43669-.43061-1.0083-.64648-1.7188-.64648zm7.1152 0c-.45462 0-.85109.11505-1.1875.3457-.33519.23369-.60486.56357-.80664.99023l-.074219-1.1934h-.75195v7.6816h.85352v-5.5293c.11791-.47346.31244-.84655.58594-1.1191.27168-.27107.63379-.4082 1.082-.4082.4689 0 .83314.19466 1.0957.58789.26378.39323.39258 1.0508.39258 1.9707v4.498h.85351v-4.6211-.19922c.0623-.64455.23396-1.1785.51172-1.6055.27927-.42696.66855-.63672 1.166-.63672.47285 0 .83879.19223 1.0938.57422.25345.38138.38281 1.0443.38281 1.9863v4.502h.85742v-4.4863c0-1.1332-.18468-1.9728-.55664-2.5195-.37044-.54548-.89268-.81836-1.5664-.81836-.48897 0-.91182.1465-1.2598.43945-.34796.29234-.61537.69589-.80469 1.207-.148-.55369-.38151-.966-.69726-1.2383-.31543-.2732-.70589-.4082-1.1699-.4082zm10.316 0c-.74423-.000001-1.3797.32125-1.9082.96094-.52725.64273-.78906 1.4505-.78906 2.4199v1.2754c0 .96758.26259 1.762.7871 2.3828.52604.62206 1.2032.93359 2.0312.93359.5157 0 .95833-.090281 1.3242-.26562.36679-.17626.66658-.41287.89844-.70703l-.34961-.60547c-.21728.27441-.4784.4836-.7832.63281-.3048.14586-.66987.2207-1.0898.2207-.60443 0-1.0864-.24489-1.4414-.74023-.35433-.49412-.53321-1.1138-.53321-1.8574v-.63867h4.3965v-.84375c0-.96667-.22381-1.7371-.66992-2.3105-.44519-.57253-1.0684-.85742-1.873-.85742zm9.4727 0c-.74423-.000001-1.3782.32125-1.9082.96094-.52603.64273-.79101 1.4505-.79101 2.4199v1.2754c0 .96758.26241 1.762.78906 2.3828.52512.62206 1.2028.93359 2.0312.93359.51601 0 .95639-.090281 1.3223-.26562.36741-.17626.66822-.41287.90039-.70703l-.34766-.60547c-.21972.27441-.4811.4836-.78711.63281-.30389.14586-.66639.2207-1.0879.2207-.60656 0-1.0883-.24489-1.4414-.74023-.35646-.49412-.5332-1.1138-.5332-1.8574v-.63867h4.3945v-.84375c0-.96667-.22338-1.7371-.66797-2.3105-.44398-.57253-1.0699-.85742-1.873-.85742zm6.8672 0c-.45614 0-.85274.12451-1.1894.36914-.33975.24342-.60962.5923-.81445 1.043l-.07031-1.2695h-.76172v7.6816h.85351v-5.4824c.14617-.47923.36569-.85918.66016-1.1445.29325-.28809.65767-.42969 1.0938-.42969.48622 0 .85922.17765 1.1133.5332.25557.35555.38477.96807.38477 1.8457v4.6777h.85937v-4.6855c0-1.0736-.18381-1.866-.55273-2.375-.36497-.50993-.89-.76367-1.5762-.76367zm6.2539 0c-.77674 0-1.386.32888-1.8242.98437-.44186.65883-.66211 1.5326-.66211 2.6211l.00196 1.0508c0 1.0031.21834 1.8072.65625 2.4102.43699.60413 1.0429.90625 1.8144.90625.41602 0 .78387-.091234 1.0996-.27539.31695-.18324.58484-.4491.80273-.79492v.92969c0 .75881-.14785 1.3303-.4414 1.7266-.29235.39111-.74301.58789-1.3535.58789-.30359 0-.59763-.04082-.88086-.125-.28565-.081443-.54279-.19619-.77344-.3457l-.23632.74805c.27047.15164.57916.27315.92773.36523.34795.092075.67388.13867.97656.13867.84208 0 1.494-.27297 1.9531-.81055.45857-.53971.68554-1.3009.68554-2.2852v-7.6895h-.72265l-.08399 1.0684c-.21485-.38533-.48269-.68758-.80664-.89453-.32334-.2109-.70159-.31641-1.1328-.31641zm10.467 0c-.45401 0-.85062.12451-1.1895.36914-.33914.24342-.60902.5923-.81445 1.043l-.07031-1.2695h-.75977v7.6816h.85352v-5.4824c.14556-.47923.3663-.85918.66016-1.1445.29295-.28809.65797-.42969 1.0937-.42969.48775 0 .85711.17765 1.1133.5332.25496.35555.38476.96807.38476 1.8457v4.6777h.85742v-4.6855c0-1.0736-.18081-1.866-.54882-2.375-.36588-.50993-.8939-.76367-1.5801-.76367zm6.4043 0c-.74271-.000001-1.3778.32125-1.9062.96094-.52724.64273-.79101 1.4505-.79101 2.4199v1.2754c0 .96758.26334 1.762.78906 2.3828.52361.62206 1.2007.93359 2.0312.93359.5154 0 .9567-.090281 1.3223-.26562.3668-.17626.6667-.41287.90039-.70703l-.34961-.60547c-.2194.27441-.47958.4836-.78711.63281-.30359.14586-.66597.2207-1.0859.2207-.60717 0-1.089-.24489-1.4434-.74023-.35464-.49412-.5332-1.1138-.5332-1.8574v-.63867h4.3965v-.84375c0-.96667-.22369-1.7371-.66797-2.3105-.44551-.57253-1.0709-.85742-1.875-.85742zm-12.113.14258v7.6816h.85938v-7.6816zm-27.352.60938c.53029 0 .9445.20789 1.2441.62695.29781.41876.44531.94616.44531 1.5801v.33008h-3.543c.01429-.71688.19281-1.3186.53711-1.8066.34401-.48622.78217-.73047 1.3164-.73047zm9.4727 0c.52998 0 .94406.20789 1.2422.62695.29963.41876.44727.94616.44727 1.5801v.33008h-3.543c.0155-.71688.19298-1.3186.53516-1.8066.3437-.48622.7826-.73047 1.3184-.73047zm29.992 0c.53089 0 .94602.20789 1.2441.62695.29902.41876.44532.94616.44532 1.5801v.33008h-3.543c.01519-.71688.19402-1.3186.53711-1.8066.34218-.48622.78064-.73047 1.3164-.73047zm-16.686.015625c.42119 0 .77033.1246 1.0469.375.27684.25466.4967.58706.65625.99609v3.8047c-.16593.39718-.39.70872-.67383.93359-.28475.22488-.63089.33594-1.043.33594-.6014 0-1.0536-.22975-1.3496-.69531-.29964-.4613-.44727-1.0819-.44727-1.8613v-1.0508c0-.84177.15149-1.527.45508-2.0527.30146-.52482.75528-.78516 1.3555-.78516zm-40.057 3.3281h1.3652v1.6621c-.15286.42089-.40964.76752-.77734 1.041-.3671.27228-.78783.40625-1.2598.40625-.39262 0-.69782-.12824-.91602-.38867-.2185-.25952-.32617-.59591-.32617-1.0059 0-.48531.17262-.89402.52148-1.2207.34795-.32881.81215-.49414 1.3926-.49414z" fill="#e0e0e0"/><path d="m27 3c-3.0948.68801-6.1571 1.6452-9.0273 3.0898.06564 2.5344.23035 4.963.5625 7.4297-1.1147.71414-2.287 1.3281-3.3281 2.1641-1.0578.81382-2.1378 1.5912-3.0957 2.543-1.9136-1.2657-3.9389-2.454-6.0254-3.5039-2.2491 2.4205-4.3524 5.0317-6.0703 7.9551 1.2924 2.0908 2.6428 4.0523 4.0996 5.9121h.041016v14.438 1.834 1.6699c.03282.000304.06514.000806.097656.003906l11 1.0605c.57617.05561 1.0282.52027 1.0684 1.0977l.33789 4.8555 9.5957.68359.66016-4.4805c.0857-.58104.58415-1.0117 1.1719-1.0117h11.605c.58742 0 1.0862.43068 1.1719 1.0117l.66016 4.4805 9.5957-.68359.33789-4.8555c.04042-.57739.49219-1.0417 1.0684-1.0977l10.996-1.0605c.032519-.003.064836-.003606.097656-.003906v-1.4316l.003906-.001953v-16.508h.041016c1.4571-1.8598 2.8066-3.8214 4.0996-5.9121-1.7173-2.9234-3.8232-5.5346-6.0723-7.9551-2.0859 1.0499-4.1118 2.2382-6.0254 3.5039-.95756-.95178-2.0363-1.7292-3.0957-2.543-1.0408-.836-2.2136-1.4499-3.3262-2.1641.33124-2.4667.49656-4.8952.5625-7.4297-2.8706-1.4447-5.933-2.4018-9.0293-3.0898-1.2362 2.0777-2.367 4.3278-3.3516 6.5273-1.1675-.1951-2.3391-.26727-3.5137-.28125v-.0019532c-.0082 0-.016447.0019531-.023437.0019532-.0073 0-.014194-.0019532-.021484-.0019532v.0019532c-1.1767.013979-2.3497.086153-3.5176.28125-.98399-2.1996-2.1135-4.4497-3.3516-6.5273zm-22.863 45.904c.0045599 1.063.019531 2.2271.019531 2.459 0 10.446 13.251 15.468 29.715 15.525h.019531.019531c16.464-.05774 29.711-5.0795 29.711-15.525 0-.23612.014661-1.3954.019531-2.459l-9.8867.95312-.3418 4.8809c-.04102.58833-.50933 1.0574-1.0977 1.0996l-11.717.83594c-.02857.0021-.055724.003906-.083984.003906-.58225 0-1.0859-.42704-1.1719-1.0117l-.67188-4.5566h-9.5586l-.67188 4.5566c-.09025.61325-.63836 1.0531-1.2559 1.0078l-11.717-.83594c-.58833-.04224-1.0566-.51128-1.0977-1.0996l-.3418-4.8809-9.8906-.95312z" fill="#478cbf"/><path d="m18.299 29.246c-3.6594 0-6.6289 2.9669-6.6289 6.627 0 3.6625 2.9695 6.6289 6.6289 6.6289 3.6613 0 6.627-2.9664 6.627-6.6289 0-3.66-2.9657-6.627-6.627-6.627zm31.186 0c-3.6619 0-6.6289 2.9669-6.6289 6.627 0 3.6625 2.967 6.6289 6.6289 6.6289 3.6591 0 6.627-2.9664 6.627-6.6289 0-3.66-2.9678-6.627-6.627-6.627zm-15.594 3.8789c-1.1785 0-2.1348.86781-2.1348 1.9375v6.1035c0 1.0706.95628 1.9395 2.1348 1.9395s2.1348-.86885 2.1348-1.9395v-6.1035c0-1.0697-.95628-1.9375-2.1348-1.9375z" fill="#f6f6f6"/><path d="m18.932 31.865c-2.4299 0-4.4004 1.9711-4.4004 4.4004s1.9705 4.3984 4.4004 4.3984c2.4311 0 4.4004-1.9691 4.4004-4.3984s-1.9693-4.4004-4.4004-4.4004zm29.916 0c-2.4293 0-4.3984 1.9711-4.3984 4.4004s1.9691 4.3984 4.3984 4.3984c2.4317 0 4.4004-1.9691 4.4004-4.3984s-1.9687-4.4004-4.4004-4.4004z" fill="#414042"/></svg> +<svg height="69" viewBox="0 0 187 69" width="187" xmlns="http://www.w3.org/2000/svg"><path d="m91.912 19.51c-3.5233 0-6.278 1.1097-8.2676 3.3281-1.9911 2.2193-2.9844 5.1004-2.9844 8.6465 0 4.1636 1.0165 7.3207 3.0508 9.4707 2.0379 2.1497 4.7123 3.2227 8.0293 3.2227 1.7838 0 3.3686-.15384 4.752-.46289 1.3848-.30784 2.3038-.62367 2.7617-.94336l.13867-10.736c0-.62388-1.6471-.90785-3.4941-.93945-1.847-.02857-3.9609.35742-3.9609.35742v3.6055h2.125l-.023438 1.6055c0 .59532-.59062.89453-1.7676.89453-1.1785 0-2.2182-.4989-3.1211-1.4941-.90498-.99645-1.3555-2.4517-1.3555-4.3711 0-1.9233.43964-3.3428 1.3203-4.2578.87885-.9141 2.0322-1.3711 3.4492-1.3711.59532 0 1.2107.095008 1.8516.29102.64121.19418 1.0686.37639 1.2871.54688.21667.17534.42435.25781.61914.25781.19388 0 .50715-.22698.94141-.68555.43487-.45735.82427-1.1501 1.168-2.0742.34218-.92899.51367-1.6414.51367-2.1465 0-.50111-.011023-.84501-.033203-1.0273-.48045-.52573-1.3668-.94394-2.6602-1.2539-1.2909-.30906-2.7387-.46289-4.3398-.46289zm21.049 0c-3.2367 0-5.8788 1.0413-7.9258 3.1211-2.0464 2.0826-3.0703 5.1404-3.0703 9.1797 0 4.0369 1.0128 7.1085 3.0352 9.2129 2.0251 2.1026 4.6444 3.1543 7.8574 3.1543 3.2145 0 5.8383-1.0111 7.875-3.0332 2.0367-2.0263 3.0527-5.1142 3.0527-9.2656 0-4.1484-.99433-7.2508-2.9863-9.2969-1.9884-2.05-4.6018-3.0723-7.8379-3.0723zm45.504 0c-3.2379 0-5.8792 1.0413-7.9277 3.1211-2.0461 2.0826-3.0684 5.1404-3.0684 9.1797 0 4.0369 1.0104 7.1085 3.0352 9.2129 2.0233 2.1026 4.6432 3.1543 7.8574 3.1543 3.213 0 5.8373-1.0111 7.873-3.0332 2.0364-2.0263 3.0547-5.1142 3.0547-9.2656 0-4.1484-.9939-7.2508-2.9844-9.2969-1.9908-2.05-4.6031-3.0723-7.8398-3.0723zm-30.105.30859c-.45888 0-.82988.16637-1.1152.49609-.28717.33489-.42969.78715-.42969 1.3594v20.584c0 1.053.58624 1.5781 1.752 1.5781h5.8652c7.1824-.000001 10.773-4.2092 10.773-12.627 0-3.9348-.94335-6.8151-2.832-8.6445-1.8853-1.83-4.6472-2.7461-8.2832-2.7461h-5.7305zm42.807 0c-.38928 0-.66468.52801-.82422 1.5801-.0687.50294-.10157 1.0191-.10157 1.543 0 .52694.03287 1.0409.10157 1.543.15954 1.0548.43494 1.5801.82422 1.5801h4.1152v17.225c0 .45462 1.1351.68555 3.3984.68555 2.2655 0 3.3965-.23093 3.3965-.68555v-17.225h4.0137c.38868 0 .66225-.52528.82422-1.5801.0672-.50202.10156-1.016.10156-1.543.00001-.52391-.03436-1.04-.10156-1.543-.16197-1.0521-.43554-1.5801-.82422-1.5801h-14.924zm-58.291 6.2793c1.0989 0 2.0193.49244 2.7617 1.4746.74331.98339 1.1152 2.3913 1.1152 4.2207 0 1.8309-.35955 3.2363-1.0801 4.2188-.72053.98612-1.6597 1.4785-2.8145 1.4785-1.1554 0-2.0859-.48441-2.7949-1.459-.71019-.97154-1.0644-2.3663-1.0644-4.1875 0-1.8173.37148-3.2302 1.1133-4.2363.74574-1.0053 1.6663-1.5098 2.7637-1.5098zm45.504 0c1.0989 0 2.0181.49244 2.7617 1.4746.74331.98339 1.1152 2.3913 1.1152 4.2207 0 1.8309-.3612 3.2363-1.082 4.2188-.71961.98612-1.6574 1.4785-2.8125 1.4785-1.1554 0-2.0888-.48441-2.7969-1.459-.70806-.97154-1.0625-2.3663-1.0625-4.1875 0-1.8173.37179-3.2302 1.1133-4.2363.74453-1.0053 1.666-1.5098 2.7637-1.5098zm-24.977.23828h.34375c1.4638 0 2.5334.33466 3.209.99805.6722.66157 1.0098 2.0859 1.0098 4.2715 0 2.1847-.32289 3.7447-.97656 4.6816-.65214.9378-1.6059 1.4082-2.8652 1.4082-.34218 0-.54909-.063339-.61719-.18945-.06873-.12672-.10352-.42897-.10352-.9082v-10.262z" fill="#fff"/><path d="m137.91 48.551v1.2109h.85938v-1.2109zm-52.396.58984c-.99736 0-1.7963.32424-2.3926.96484-.59745.64576-.89453 1.5712-.89453 2.7773v3.0742c0 1.2329.31639 2.1765.94727 2.832.6333.66066 1.467.98828 2.5039.98828.78586 0 1.4321-.16147 1.9414-.48633.50993-.32273.8592-.67938 1.0488-1.0684v-3.6875h-3.0059v.74805h2.1465v2.6934c-.13766.30115-.38143.55386-.73242.76172-.34978.2109-.8171.31445-1.3984.31445-.79619 0-1.4265-.2632-1.8945-.78711-.46799-.52786-.70312-1.2936-.70312-2.2988v-3.0918c0-.96941.21778-1.7078.65234-2.2168.43578-.51023 1.0297-.76367 1.7812-.76367.74271 0 1.3056.19019 1.6836.56641.38017.37925.58276.91542.61133 1.6113h.79492l.013672-.041016c-.024311-.90802-.30456-1.6179-.83789-2.127-.53484-.50719-1.2907-.76367-2.2656-.76367zm7.6133 2.6641c-.719 0-1.3111.22524-1.7715.67773-.46222.45371-.68069.96571-.6582 1.5449l.013672.041015.79688.007813c0-.42696.14768-.78487.44336-1.0781.2966-.29508.67455-.44141 1.1328-.44141.4926 0 .87459.15388 1.1523.45898.27198.30906.41016.73655.41016 1.2793v.94531h-1.3418c-.85666 0-1.5379.21084-2.0391.63477-.50142.42392-.75195.99502-.75195 1.707 0 .67372.17358 1.2075.51758 1.6035.34613.39445.83497.5918 1.4707.5918.45462 0 .86723-.12355 1.2383-.37305.37166-.24767.67317-.56424.90625-.94531 0 .17413.01089.34527.03125.51758.02097.16927.053163.38614.095703.65234h.88867c-.062302-.24767-.10234-.49621-.12695-.75391-.02401-.25436-.037109-.52051-.037109-.79492v-3.7676c0-.80622-.21809-1.4265-.65234-1.8613-.43669-.43061-1.0083-.64648-1.7188-.64648zm7.1152 0c-.45462 0-.85109.11505-1.1875.3457-.33519.23369-.60486.56357-.80664.99023l-.074219-1.1934h-.75195v7.6816h.85352v-5.5293c.11791-.47346.31244-.84655.58594-1.1191.27168-.27107.63379-.4082 1.082-.4082.4689 0 .83314.19466 1.0957.58789.26378.39323.39258 1.0508.39258 1.9707v4.498h.85351v-4.6211-.19922c.0623-.64455.23396-1.1785.51172-1.6055.27927-.42696.66855-.63672 1.166-.63672.47285 0 .83879.19223 1.0938.57422.25345.38138.38281 1.0443.38281 1.9863v4.502h.85742v-4.4863c0-1.1332-.18468-1.9728-.55664-2.5195-.37044-.54548-.89268-.81836-1.5664-.81836-.48897 0-.91182.1465-1.2598.43945-.34796.29234-.61537.69589-.80469 1.207-.148-.55369-.38151-.966-.69726-1.2383-.31543-.2732-.70589-.4082-1.1699-.4082zm10.316 0c-.74423-.000001-1.3797.32125-1.9082.96094-.52725.64273-.78906 1.4505-.78906 2.4199v1.2754c0 .96758.26259 1.762.7871 2.3828.52604.62206 1.2032.93359 2.0312.93359.5157 0 .95833-.090281 1.3242-.26562.36679-.17626.66658-.41287.89844-.70703l-.34961-.60547c-.21728.27441-.4784.4836-.7832.63281-.3048.14586-.66987.2207-1.0898.2207-.60443 0-1.0864-.24489-1.4414-.74023-.35433-.49412-.53321-1.1138-.53321-1.8574v-.63867h4.3965v-.84375c0-.96667-.22381-1.7371-.66992-2.3105-.44519-.57253-1.0684-.85742-1.873-.85742zm9.4727 0c-.74423-.000001-1.3782.32125-1.9082.96094-.52603.64273-.79101 1.4505-.79101 2.4199v1.2754c0 .96758.26241 1.762.78906 2.3828.52512.62206 1.2028.93359 2.0312.93359.51601 0 .95639-.090281 1.3223-.26562.36741-.17626.66822-.41287.90039-.70703l-.34766-.60547c-.21972.27441-.4811.4836-.78711.63281-.30389.14586-.66639.2207-1.0879.2207-.60656 0-1.0883-.24489-1.4414-.74023-.35646-.49412-.5332-1.1138-.5332-1.8574v-.63867h4.3945v-.84375c0-.96667-.22338-1.7371-.66797-2.3105-.44398-.57253-1.0699-.85742-1.873-.85742zm6.8672 0c-.45614 0-.85274.12451-1.1894.36914-.33975.24342-.60962.5923-.81445 1.043l-.07031-1.2695h-.76172v7.6816h.85351v-5.4824c.14617-.47923.36569-.85918.66016-1.1445.29325-.28809.65767-.42969 1.0938-.42969.48622 0 .85922.17765 1.1133.5332.25557.35555.38477.96807.38477 1.8457v4.6777h.85937v-4.6855c0-1.0736-.18381-1.866-.55273-2.375-.36497-.50993-.89-.76367-1.5762-.76367zm6.2539 0c-.77674 0-1.386.32888-1.8242.98437-.44186.65883-.66211 1.5326-.66211 2.6211l.00196 1.0508c0 1.0031.21834 1.8072.65625 2.4102.43699.60413 1.0429.90625 1.8144.90625.41602 0 .78387-.091234 1.0996-.27539.31695-.18324.58484-.4491.80273-.79492v.92969c0 .75881-.14785 1.3303-.4414 1.7266-.29235.39111-.74301.58789-1.3535.58789-.30359 0-.59763-.04082-.88086-.125-.28565-.081443-.54279-.19619-.77344-.3457l-.23632.74805c.27047.15164.57916.27315.92773.36523.34795.092075.67388.13867.97656.13867.84208 0 1.494-.27297 1.9531-.81055.45857-.53971.68554-1.3009.68554-2.2852v-7.6895h-.72265l-.08399 1.0684c-.21485-.38533-.48269-.68758-.80664-.89453-.32334-.2109-.70159-.31641-1.1328-.31641zm10.467 0c-.45401 0-.85062.12451-1.1895.36914-.33914.24342-.60902.5923-.81445 1.043l-.07031-1.2695h-.75977v7.6816h.85352v-5.4824c.14556-.47923.3663-.85918.66016-1.1445.29295-.28809.65797-.42969 1.0937-.42969.48775 0 .85711.17765 1.1133.5332.25496.35555.38476.96807.38476 1.8457v4.6777h.85742v-4.6855c0-1.0736-.18081-1.866-.54882-2.375-.36588-.50993-.8939-.76367-1.5801-.76367zm6.4043 0c-.74271-.000001-1.3778.32125-1.9062.96094-.52724.64273-.79101 1.4505-.79101 2.4199v1.2754c0 .96758.26334 1.762.78906 2.3828.52361.62206 1.2007.93359 2.0312.93359.5154 0 .9567-.090281 1.3223-.26562.3668-.17626.6667-.41287.90039-.70703l-.34961-.60547c-.2194.27441-.47958.4836-.78711.63281-.30359.14586-.66597.2207-1.0859.2207-.60717 0-1.089-.24489-1.4434-.74023-.35464-.49412-.5332-1.1138-.5332-1.8574v-.63867h4.3965v-.84375c0-.96667-.22369-1.7371-.66797-2.3105-.44551-.57253-1.0709-.85742-1.875-.85742zm-12.113.14258v7.6816h.85938v-7.6816zm-27.352.60938c.53029 0 .9445.20789 1.2441.62695.29781.41876.44531.94616.44531 1.5801v.33008h-3.543c.01429-.71688.19281-1.3186.53711-1.8066.34401-.48622.78217-.73047 1.3164-.73047zm9.4727 0c.52998 0 .94406.20789 1.2422.62695.29963.41876.44727.94616.44727 1.5801v.33008h-3.543c.0155-.71688.19298-1.3186.53516-1.8066.3437-.48622.7826-.73047 1.3184-.73047zm29.992 0c.53089 0 .94602.20789 1.2441.62695.29902.41876.44532.94616.44532 1.5801v.33008h-3.543c.01519-.71688.19402-1.3186.53711-1.8066.34218-.48622.78064-.73047 1.3164-.73047zm-16.686.015625c.42119 0 .77033.1246 1.0469.375.27684.25466.4967.58706.65625.99609v3.8047c-.16593.39718-.39.70872-.67383.93359-.28475.22488-.63089.33594-1.043.33594-.6014 0-1.0536-.22975-1.3496-.69531-.29964-.4613-.44727-1.0819-.44727-1.8613v-1.0508c0-.84177.15149-1.527.45508-2.0527.30146-.52482.75528-.78516 1.3555-.78516zm-40.057 3.3281h1.3652v1.6621c-.15286.42089-.40964.76752-.77734 1.041-.3671.27228-.78783.40625-1.2598.40625-.39262 0-.69782-.12824-.91602-.38867-.2185-.25952-.32617-.59591-.32617-1.0059 0-.48531.17262-.89402.52148-1.2207.34795-.32881.81215-.49414 1.3926-.49414z" fill="#e0e0e0"/><path d="m0 0s-.325 1.994-.515 1.976l-36.182-3.491c-2.879-.278-5.115-2.574-5.317-5.459l-.994-14.247-27.992-1.997-1.904 12.912c-.424 2.872-2.932 5.037-5.835 5.037h-38.188c-2.902 0-5.41-2.165-5.834-5.037l-1.905-12.912-27.992 1.997-.994 14.247c-.202 2.886-2.438 5.182-5.317 5.46l-36.2 3.49c-.187.018-.324-1.978-.511-1.978l-.049-7.83 30.658-4.944 1.004-14.374c.203-2.91 2.551-5.263 5.463-5.472l38.551-2.75c.146-.01.29-.016.434-.016 2.897 0 5.401 2.166 5.825 5.038l1.959 13.286h28.005l1.959-13.286c.423-2.871 2.93-5.037 5.831-5.037.142 0 .284.005.423.015l38.556 2.75c2.911.209 5.26 2.562 5.463 5.472l1.003 14.374 30.645 4.966z" fill="#fff" transform="matrix(.30389749 0 0 -.30389749 63.620953 46.532114)"/><path d="m0 0v-47.514-6.035-5.492c.108-.001.216-.005.323-.015l36.196-3.49c1.896-.183 3.382-1.709 3.514-3.609l1.116-15.978 31.574-2.253 2.175 14.747c.282 1.912 1.922 3.329 3.856 3.329h38.188c1.933 0 3.573-1.417 3.855-3.329l2.175-14.747 31.575 2.253 1.115 15.978c.133 1.9 1.618 3.425 3.514 3.609l36.182 3.49c.107.01.214.014.322.015v4.711l.015.005v54.325c5.09692 6.4164715 9.92323 13.494208 13.621 19.449-5.651 9.62-12.575 18.217-19.976 26.182-6.864-3.455-13.531-7.369-19.828-11.534-3.151 3.132-6.7 5.694-10.186 8.372-3.425 2.751-7.285 4.768-10.946 7.118 1.09 8.117 1.629 16.108 1.846 24.448-9.446 4.754-19.519 7.906-29.708 10.17-4.068-6.837-7.788-14.241-11.028-21.479-3.842.642-7.702.88-11.567.926v.006c-.027 0-.052-.006-.075-.006-.024 0-.049.006-.073.006v-.006c-3.872-.046-7.729-.284-11.572-.926-3.238 7.238-6.956 14.642-11.03 21.479-10.184-2.264-20.258-5.416-29.703-10.17.216-8.34.755-16.331 1.848-24.448-3.668-2.35-7.523-4.367-10.949-7.118-3.481-2.678-7.036-5.24-10.188-8.372-6.297 4.165-12.962 8.079-19.828 11.534-7.401-7.965-14.321-16.562-19.974-26.182 4.4426579-6.973692 9.2079702-13.9828876 13.621-19.449z" fill="#478cbf" transform="matrix(.30389749 0 0 -.30389749 4.154146 28.589689)"/><path d="m0 0-1.121-16.063c-.135-1.936-1.675-3.477-3.611-3.616l-38.555-2.751c-.094-.007-.188-.01-.281-.01-1.916 0-3.569 1.406-3.852 3.33l-2.211 14.994h-31.459l-2.211-14.994c-.297-2.018-2.101-3.469-4.133-3.32l-38.555 2.751c-1.936.139-3.476 1.68-3.611 3.616l-1.121 16.063-32.547 3.138c.015-3.498.06-7.33.06-8.093 0-34.374 43.605-50.896 97.781-51.086h.066.067c54.176.19 97.766 16.712 97.766 51.086 0 .777.047 4.593.063 8.093z" fill="#478cbf" transform="matrix(.30389749 0 0 -.30389749 53.752732 49.859089)"/><path d="m0 0c0-12.052-9.765-21.815-21.813-21.815-12.042 0-21.81 9.763-21.81 21.815 0 12.044 9.768 21.802 21.81 21.802 12.048 0 21.813-9.758 21.813-21.802" fill="#fff" transform="matrix(.30389749 0 0 -.30389749 24.925648 35.87311)"/><path d="m0 0c0-7.994-6.479-14.473-14.479-14.473-7.996 0-14.479 6.479-14.479 14.473s6.483 14.479 14.479 14.479c8 0 14.479-6.485 14.479-14.479" fill="#414042" transform="matrix(.30389749 0 0 -.30389749 23.330605 36.266305)"/><path d="m0 0c-3.878 0-7.021 2.858-7.021 6.381v20.081c0 3.52 3.143 6.381 7.021 6.381s7.028-2.861 7.028-6.381v-20.081c0-3.523-3.15-6.381-7.028-6.381" fill="#fff" transform="matrix(.30389749 0 0 -.30389749 33.889273 43.105751)"/><path d="m0 0c0-12.052 9.765-21.815 21.815-21.815 12.041 0 21.808 9.763 21.808 21.815 0 12.044-9.767 21.802-21.808 21.802-12.05 0-21.815-9.758-21.815-21.802" fill="#fff" transform="matrix(.30389749 0 0 -.30389749 42.854008 35.87311)"/><path d="m0 0c0-7.994 6.477-14.473 14.471-14.473 8.002 0 14.479 6.479 14.479 14.473s-6.477 14.479-14.479 14.479c-7.994 0-14.471-6.485-14.471-14.479" fill="#414042" transform="matrix(.30389749 0 0 -.30389749 44.449454 36.266305)"/></svg> diff --git a/editor/import/collada.cpp b/editor/import/collada.cpp index 63b614e436..e38034dd8c 100644 --- a/editor/import/collada.cpp +++ b/editor/import/collada.cpp @@ -289,7 +289,7 @@ void Collada::_parse_image(XMLParser &parser) { String path = parser.get_attribute_value("source").strip_edges(); if (path.find("://") == -1 && path.is_rel_path()) { // path is relative to file being loaded, so convert to a resource path - image.path = ProjectSettings::get_singleton()->localize_path(state.local_path.get_base_dir().plus_file(path.percent_decode())); + image.path = ProjectSettings::get_singleton()->localize_path(state.local_path.get_base_dir().plus_file(path.uri_decode())); } } else { while (parser.read() == OK) { @@ -298,7 +298,7 @@ void Collada::_parse_image(XMLParser &parser) { if (name == "init_from") { parser.read(); - String path = parser.get_node_data().strip_edges().percent_decode(); + String path = parser.get_node_data().strip_edges().uri_decode(); if (path.find("://") == -1 && path.is_rel_path()) { // path is relative to file being loaded, so convert to a resource path diff --git a/editor/import/resource_importer_layered_texture.cpp b/editor/import/resource_importer_layered_texture.cpp index 3139ef5146..6d2215c379 100644 --- a/editor/import/resource_importer_layered_texture.cpp +++ b/editor/import/resource_importer_layered_texture.cpp @@ -391,8 +391,8 @@ Error ResourceImporterLayeredTexture::import(const String &p_source_file, const bool ok_on_pc = false; bool is_hdr = (image->get_format() >= Image::FORMAT_RF && image->get_format() <= Image::FORMAT_RGBE9995); bool is_ldr = (image->get_format() >= Image::FORMAT_L8 && image->get_format() <= Image::FORMAT_RGB565); - bool can_bptc = ProjectSettings::get_singleton()->get("rendering/vram_compression/import_bptc"); - bool can_s3tc = ProjectSettings::get_singleton()->get("rendering/vram_compression/import_s3tc"); + bool can_bptc = ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_bptc"); + bool can_s3tc = ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_s3tc"); if (can_bptc) { formats_imported.push_back("bptc"); //needs to be aded anyway @@ -447,13 +447,13 @@ Error ResourceImporterLayeredTexture::import(const String &p_source_file, const ok_on_pc = true; } - if (ProjectSettings::get_singleton()->get("rendering/vram_compression/import_etc2")) { + if (ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_etc2")) { _save_tex(slices, p_save_path + ".etc2." + extension, compress_mode, lossy, Image::COMPRESS_ETC2, csource, used_channels, mipmaps, true); r_platform_variants->push_back("etc2"); formats_imported.push_back("etc2"); } - if (ProjectSettings::get_singleton()->get("rendering/vram_compression/import_pvrtc")) { + if (ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_pvrtc")) { _save_tex(slices, p_save_path + ".etc2." + extension, compress_mode, lossy, Image::COMPRESS_ETC2, csource, used_channels, mipmaps, true); r_platform_variants->push_back("pvrtc"); formats_imported.push_back("pvrtc"); @@ -492,7 +492,7 @@ String ResourceImporterLayeredTexture::get_import_settings_string() const { int index = 0; while (compression_formats[index]) { - String setting_path = "rendering/vram_compression/import_" + String(compression_formats[index]); + String setting_path = "rendering/textures/vram_compression/import_" + String(compression_formats[index]); bool test = ProjectSettings::get_singleton()->get(setting_path); if (test) { s += String(compression_formats[index]); @@ -524,7 +524,7 @@ bool ResourceImporterLayeredTexture::are_import_settings_valid(const String &p_p int index = 0; bool valid = true; while (compression_formats[index]) { - String setting_path = "rendering/vram_compression/import_" + String(compression_formats[index]); + String setting_path = "rendering/textures/vram_compression/import_" + String(compression_formats[index]); bool test = ProjectSettings::get_singleton()->get(setting_path); if (test) { if (formats_imported.find(compression_formats[index]) == -1) { diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp index ead1f7c3e9..d0e5798045 100644 --- a/editor/import/resource_importer_scene.cpp +++ b/editor/import/resource_importer_scene.cpp @@ -964,7 +964,7 @@ void ResourceImporterScene::_make_external_resources(Node *p_node, const String if (FileAccess::exists(ext_name) && p_keep_animations) { // Copy custom animation tracks from previously imported files. - Ref<Animation> old_anim = ResourceLoader::load(ext_name, "Animation", true); + Ref<Animation> old_anim = ResourceLoader::load(ext_name, "Animation", ResourceFormatLoader::CACHE_MODE_IGNORE); if (old_anim.is_valid()) { for (int i = 0; i < old_anim->get_track_count(); i++) { if (!old_anim->track_is_imported(i)) { @@ -1004,7 +1004,7 @@ void ResourceImporterScene::_make_external_resources(Node *p_node, const String p_materials[mat] = ResourceLoader::load(ext_name); } else { ResourceSaver::save(ext_name, mat, ResourceSaver::FLAG_CHANGE_PATH); - p_materials[mat] = ResourceLoader::load(ext_name, "", true); // disable loading from the cache. + p_materials[mat] = ResourceLoader::load(ext_name, "", ResourceFormatLoader::CACHE_MODE_IGNORE); // disable loading from the cache. } } @@ -1061,7 +1061,7 @@ void ResourceImporterScene::_make_external_resources(Node *p_node, const String p_materials[mat] = ResourceLoader::load(ext_name); } else { ResourceSaver::save(ext_name, mat, ResourceSaver::FLAG_CHANGE_PATH); - p_materials[mat] = ResourceLoader::load(ext_name, "", true); // disable loading from the cache. + p_materials[mat] = ResourceLoader::load(ext_name, "", ResourceFormatLoader::CACHE_MODE_IGNORE); // disable loading from the cache. } } @@ -1129,6 +1129,7 @@ void ResourceImporterScene::get_import_options(List<ImportOption> *r_options, in r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/ensure_tangents"), true)); r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "meshes/storage", PROPERTY_HINT_ENUM, "Built-In,Files (.mesh),Files (.tres)"), meshes_out ? 1 : 0)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/generate_lods"), true)); + r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/create_shadow_meshes"), true)); r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "meshes/light_baking", PROPERTY_HINT_ENUM, "Disabled,Enable,Gen Lightmaps", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), 0)); r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "meshes/lightmap_texel_size", PROPERTY_HINT_RANGE, "0.001,100,0.001"), 0.1)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "skins/use_named_skins"), true)); @@ -1221,7 +1222,7 @@ Ref<Animation> ResourceImporterScene::import_animation_from_other_importer(Edito return importer->import_animation(p_path, p_flags, p_bake_fps); } -void ResourceImporterScene::_generate_meshes(Node *p_node, bool p_generate_lods) { +void ResourceImporterScene::_generate_meshes(Node *p_node, bool p_generate_lods, bool p_create_shadow_meshes) { EditorSceneImporterMeshNode3D *src_mesh_node = Object::cast_to<EditorSceneImporterMeshNode3D>(p_node); if (src_mesh_node) { //is mesh @@ -1237,8 +1238,12 @@ void ResourceImporterScene::_generate_meshes(Node *p_node, bool p_generate_lods) if (p_generate_lods) { src_mesh_node->get_mesh()->generate_lods(); } + if (p_create_shadow_meshes) { + src_mesh_node->get_mesh()->create_shadow_mesh(); + } } mesh = src_mesh_node->get_mesh()->get_mesh(); + if (mesh.is_valid()) { mesh_node->set_mesh(mesh); for (int i = 0; i < mesh->get_surface_count(); i++) { @@ -1252,7 +1257,7 @@ void ResourceImporterScene::_generate_meshes(Node *p_node, bool p_generate_lods) } for (int i = 0; i < p_node->get_child_count(); i++) { - _generate_meshes(p_node->get_child(i), p_generate_lods); + _generate_meshes(p_node->get_child(i), p_generate_lods, p_create_shadow_meshes); } } Error ResourceImporterScene::import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) { @@ -1348,8 +1353,9 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p } bool gen_lods = bool(p_options["meshes/generate_lods"]); + bool create_shadow_meshes = bool(p_options["meshes/create_shadow_meshes"]); - _generate_meshes(scene, gen_lods); + _generate_meshes(scene, gen_lods, create_shadow_meshes); err = OK; diff --git a/editor/import/resource_importer_scene.h b/editor/import/resource_importer_scene.h index 66c317f858..aced0226ff 100644 --- a/editor/import/resource_importer_scene.h +++ b/editor/import/resource_importer_scene.h @@ -121,7 +121,7 @@ class ResourceImporterScene : public ResourceImporter { }; void _replace_owner(Node *p_node, Node *p_scene, Node *p_new_owner); - void _generate_meshes(Node *p_node, bool p_generate_lods); + void _generate_meshes(Node *p_node, bool p_generate_lods, bool p_create_shadow_meshes); public: static ResourceImporterScene *get_singleton() { return singleton; } diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp index eb16e873e6..de8031af35 100644 --- a/editor/import/resource_importer_texture.cpp +++ b/editor/import/resource_importer_texture.cpp @@ -172,7 +172,7 @@ bool ResourceImporterTexture::get_option_visibility(const String &p_option, cons if (compress_mode < COMPRESS_VRAM_COMPRESSED) { return false; } - if (!ProjectSettings::get_singleton()->get("rendering/vram_compression/import_bptc")) { + if (!ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_bptc")) { return false; } } @@ -473,8 +473,8 @@ Error ResourceImporterTexture::import(const String &p_source_file, const String bool ok_on_pc = false; bool is_hdr = (image->get_format() >= Image::FORMAT_RF && image->get_format() <= Image::FORMAT_RGBE9995); bool is_ldr = (image->get_format() >= Image::FORMAT_L8 && image->get_format() <= Image::FORMAT_RGB565); - bool can_bptc = ProjectSettings::get_singleton()->get("rendering/vram_compression/import_bptc"); - bool can_s3tc = ProjectSettings::get_singleton()->get("rendering/vram_compression/import_s3tc"); + bool can_bptc = ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_bptc"); + bool can_s3tc = ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_s3tc"); if (can_bptc) { //add to the list anyway @@ -524,19 +524,19 @@ Error ResourceImporterTexture::import(const String &p_source_file, const String ok_on_pc = true; } - if (ProjectSettings::get_singleton()->get("rendering/vram_compression/import_etc2")) { + if (ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_etc2")) { _save_stex(image, p_save_path + ".etc2.stex", compress_mode, lossy, Image::COMPRESS_ETC2, mipmaps, stream, detect_3d, detect_roughness, detect_normal, force_normal, srgb_friendly_pack, true, mipmap_limit, normal_image, roughness_channel); r_platform_variants->push_back("etc2"); formats_imported.push_back("etc2"); } - if (ProjectSettings::get_singleton()->get("rendering/vram_compression/import_etc")) { + if (ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_etc")) { _save_stex(image, p_save_path + ".etc.stex", compress_mode, lossy, Image::COMPRESS_ETC, mipmaps, stream, detect_3d, detect_roughness, detect_normal, force_normal, srgb_friendly_pack, true, mipmap_limit, normal_image, roughness_channel); r_platform_variants->push_back("etc"); formats_imported.push_back("etc"); } - if (ProjectSettings::get_singleton()->get("rendering/vram_compression/import_pvrtc")) { + if (ProjectSettings::get_singleton()->get("rendering/textures/vram_compression/import_pvrtc")) { _save_stex(image, p_save_path + ".pvrtc.stex", compress_mode, lossy, Image::COMPRESS_PVRTC1_4, mipmaps, stream, detect_3d, detect_roughness, detect_normal, force_normal, srgb_friendly_pack, true, mipmap_limit, normal_image, roughness_channel); r_platform_variants->push_back("pvrtc"); formats_imported.push_back("pvrtc"); @@ -574,7 +574,7 @@ String ResourceImporterTexture::get_import_settings_string() const { int index = 0; while (compression_formats[index]) { - String setting_path = "rendering/vram_compression/import_" + String(compression_formats[index]); + String setting_path = "rendering/textures/vram_compression/import_" + String(compression_formats[index]); bool test = ProjectSettings::get_singleton()->get(setting_path); if (test) { s += String(compression_formats[index]); @@ -606,7 +606,7 @@ bool ResourceImporterTexture::are_import_settings_valid(const String &p_path) co int index = 0; bool valid = true; while (compression_formats[index]) { - String setting_path = "rendering/vram_compression/import_" + String(compression_formats[index]); + String setting_path = "rendering/textures/vram_compression/import_" + String(compression_formats[index]); bool test = ProjectSettings::get_singleton()->get(setting_path); if (test) { if (formats_imported.find(compression_formats[index]) == -1) { diff --git a/editor/import/scene_importer_mesh.cpp b/editor/import/scene_importer_mesh.cpp index 620437af0e..46eb4e4fdc 100644 --- a/editor/import/scene_importer_mesh.cpp +++ b/editor/import/scene_importer_mesh.cpp @@ -250,6 +250,11 @@ Ref<ArrayMesh> EditorSceneImporterMesh::get_mesh() { mesh->surface_set_name(mesh->get_surface_count() - 1, surfaces[i].name); } } + + if (shadow_mesh.is_valid()) { + Ref<ArrayMesh> shadow = shadow_mesh->get_mesh(); + mesh->set_shadow_mesh(shadow); + } } return mesh; @@ -261,6 +266,103 @@ void EditorSceneImporterMesh::clear() { mesh.unref(); } +void EditorSceneImporterMesh::create_shadow_mesh() { + if (shadow_mesh.is_valid()) { + shadow_mesh.unref(); + } + + //no shadow mesh for blendshapes + if (blend_shapes.size() > 0) { + return; + } + //no shadow mesh for skeletons + for (int i = 0; i < surfaces.size(); i++) { + if (surfaces[i].arrays[RS::ARRAY_BONES].get_type() != Variant::NIL) { + return; + } + if (surfaces[i].arrays[RS::ARRAY_WEIGHTS].get_type() != Variant::NIL) { + return; + } + } + + shadow_mesh.instance(); + + for (int i = 0; i < surfaces.size(); i++) { + LocalVector<int> vertex_remap; + Vector<Vector3> new_vertices; + Vector<Vector3> vertices = surfaces[i].arrays[RS::ARRAY_VERTEX]; + int vertex_count = vertices.size(); + { + Map<Vector3, int> unique_vertices; + const Vector3 *vptr = vertices.ptr(); + for (int j = 0; j < vertex_count; j++) { + Vector3 v = vptr[j]; + + Map<Vector3, int>::Element *E = unique_vertices.find(v); + + if (E) { + vertex_remap.push_back(E->get()); + } else { + int vcount = unique_vertices.size(); + unique_vertices[v] = vcount; + vertex_remap.push_back(vcount); + new_vertices.push_back(v); + } + } + } + + Array new_surface; + new_surface.resize(RS::ARRAY_MAX); + Dictionary lods; + + // print_line("original vertex count: " + itos(vertices.size()) + " new vertex count: " + itos(new_vertices.size())); + + new_surface[RS::ARRAY_VERTEX] = new_vertices; + + Vector<int> indices = surfaces[i].arrays[RS::ARRAY_INDEX]; + if (indices.size()) { + int index_count = indices.size(); + const int *index_rptr = indices.ptr(); + Vector<int> new_indices; + new_indices.resize(indices.size()); + int *index_wptr = new_indices.ptrw(); + + for (int j = 0; j < index_count; j++) { + int index = index_rptr[j]; + ERR_FAIL_INDEX(index, vertex_count); + index_wptr[j] = vertex_remap[index]; + } + + new_surface[RS::ARRAY_INDEX] = new_indices; + + // Make sure the same LODs as the full version are used. + // This makes it more coherent between rendered model and its shadows. + for (int j = 0; j < surfaces[i].lods.size(); j++) { + indices = surfaces[i].lods[j].indices; + + index_count = indices.size(); + index_rptr = indices.ptr(); + new_indices.resize(indices.size()); + index_wptr = new_indices.ptrw(); + + for (int k = 0; k < index_count; k++) { + int index = index_rptr[j]; + ERR_FAIL_INDEX(index, vertex_count); + index_wptr[j] = vertex_remap[index]; + } + + lods[surfaces[i].lods[j].distance] = new_indices; + } + } + + shadow_mesh->add_surface(surfaces[i].primitive, new_surface, Array(), lods, Ref<Material>(), surfaces[i].name); + } +} + +Ref<EditorSceneImporterMesh> EditorSceneImporterMesh::get_shadow_mesh() const { + return shadow_mesh; +} + void EditorSceneImporterMesh::_set_data(const Dictionary &p_data) { clear(); if (p_data.has("blend_shape_names")) { @@ -342,7 +444,7 @@ void EditorSceneImporterMesh::_bind_methods() { ClassDB::bind_method(D_METHOD("set_blend_shape_mode", "mode"), &EditorSceneImporterMesh::set_blend_shape_mode); ClassDB::bind_method(D_METHOD("get_blend_shape_mode"), &EditorSceneImporterMesh::get_blend_shape_mode); - ClassDB::bind_method(D_METHOD("add_surface", "primitive", "arrays", "blend_shapes", "lods", "material"), &EditorSceneImporterMesh::add_surface, DEFVAL(Array()), DEFVAL(Dictionary()), DEFVAL(Ref<Material>()), DEFVAL(String())); + ClassDB::bind_method(D_METHOD("add_surface", "primitive", "arrays", "blend_shapes", "lods", "material", "name"), &EditorSceneImporterMesh::add_surface, DEFVAL(Array()), DEFVAL(Dictionary()), DEFVAL(Ref<Material>()), DEFVAL(String())); ClassDB::bind_method(D_METHOD("get_surface_count"), &EditorSceneImporterMesh::get_surface_count); ClassDB::bind_method(D_METHOD("get_surface_primitive_type", "surface_idx"), &EditorSceneImporterMesh::get_surface_primitive_type); diff --git a/editor/import/scene_importer_mesh.h b/editor/import/scene_importer_mesh.h index 2adeb76b6c..42507cbe8c 100644 --- a/editor/import/scene_importer_mesh.h +++ b/editor/import/scene_importer_mesh.h @@ -61,6 +61,8 @@ class EditorSceneImporterMesh : public Resource { Ref<ArrayMesh> mesh; + Ref<EditorSceneImporterMesh> shadow_mesh; + protected: void _set_data(const Dictionary &p_data); Dictionary _get_data() const; @@ -89,6 +91,9 @@ public: void generate_lods(); + void create_shadow_mesh(); + Ref<EditorSceneImporterMesh> get_shadow_mesh() const; + bool has_mesh() const; Ref<ArrayMesh> get_mesh(); void clear(); diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp index 103e5e81cb..97a04e6557 100644 --- a/editor/import_dock.cpp +++ b/editor/import_dock.cpp @@ -48,7 +48,7 @@ public: values[p_name] = p_value; if (checking) { checked.insert(p_name); - _change_notify(); + notify_property_list_changed(); } return true; } @@ -81,7 +81,7 @@ public: } void update() { - _change_notify(); + notify_property_list_changed(); } ImportDockParameters() { diff --git a/editor/localization_editor.cpp b/editor/localization_editor.cpp index 60553143d5..0e68af06f0 100644 --- a/editor/localization_editor.cpp +++ b/editor/localization_editor.cpp @@ -84,7 +84,7 @@ void LocalizationEditor::add_translation(const String &p_translation) { } void LocalizationEditor::_translation_add(const PackedStringArray &p_paths) { - PackedStringArray translations = ProjectSettings::get_singleton()->get("locale/translations"); + PackedStringArray translations = ProjectSettings::get_singleton()->get("internationalization/locale/translations"); for (int i = 0; i < p_paths.size(); i++) { if (!translations.has(p_paths[i])) { // Don't add duplicate translation paths. @@ -93,8 +93,8 @@ void LocalizationEditor::_translation_add(const PackedStringArray &p_paths) { } undo_redo->create_action(vformat(TTR("Add %d Translations"), p_paths.size())); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/translations", translations); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/translations", ProjectSettings::get_singleton()->get("locale/translations")); + undo_redo->add_do_property(ProjectSettings::get_singleton(), "internationalization/locale/translations", translations); + undo_redo->add_undo_property(ProjectSettings::get_singleton(), "internationalization/locale/translations", ProjectSettings::get_singleton()->get("internationalization/locale/translations")); undo_redo->add_do_method(this, "update_translations"); undo_redo->add_undo_method(this, "update_translations"); undo_redo->add_do_method(this, "emit_signal", localization_changed); @@ -112,15 +112,15 @@ void LocalizationEditor::_translation_delete(Object *p_item, int p_column, int p int idx = ti->get_metadata(0); - PackedStringArray translations = ProjectSettings::get_singleton()->get("locale/translations"); + PackedStringArray translations = ProjectSettings::get_singleton()->get("internationalization/locale/translations"); ERR_FAIL_INDEX(idx, translations.size()); translations.remove(idx); undo_redo->create_action(TTR("Remove Translation")); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/translations", translations); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/translations", ProjectSettings::get_singleton()->get("locale/translations")); + undo_redo->add_do_property(ProjectSettings::get_singleton(), "internationalization/locale/translations", translations); + undo_redo->add_undo_property(ProjectSettings::get_singleton(), "internationalization/locale/translations", ProjectSettings::get_singleton()->get("internationalization/locale/translations")); undo_redo->add_do_method(this, "update_translations"); undo_redo->add_undo_method(this, "update_translations"); undo_redo->add_do_method(this, "emit_signal", localization_changed); @@ -136,8 +136,8 @@ void LocalizationEditor::_translation_res_add(const PackedStringArray &p_paths) Variant prev; Dictionary remaps; - if (ProjectSettings::get_singleton()->has_setting("locale/translation_remaps")) { - remaps = ProjectSettings::get_singleton()->get("locale/translation_remaps"); + if (ProjectSettings::get_singleton()->has_setting("internationalization/locale/translation_remaps")) { + remaps = ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps"); prev = remaps; } @@ -149,8 +149,8 @@ void LocalizationEditor::_translation_res_add(const PackedStringArray &p_paths) } undo_redo->create_action(vformat(TTR("Translation Resource Remap: Add %d Path(s)"), p_paths.size())); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/translation_remaps", remaps); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/translation_remaps", prev); + undo_redo->add_do_property(ProjectSettings::get_singleton(), "internationalization/locale/translation_remaps", remaps); + undo_redo->add_undo_property(ProjectSettings::get_singleton(), "internationalization/locale/translation_remaps", prev); undo_redo->add_do_method(this, "update_translations"); undo_redo->add_undo_method(this, "update_translations"); undo_redo->add_do_method(this, "emit_signal", localization_changed); @@ -163,9 +163,9 @@ void LocalizationEditor::_translation_res_option_file_open() { } void LocalizationEditor::_translation_res_option_add(const PackedStringArray &p_paths) { - ERR_FAIL_COND(!ProjectSettings::get_singleton()->has_setting("locale/translation_remaps")); + ERR_FAIL_COND(!ProjectSettings::get_singleton()->has_setting("internationalization/locale/translation_remaps")); - Dictionary remaps = ProjectSettings::get_singleton()->get("locale/translation_remaps"); + Dictionary remaps = ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps"); TreeItem *k = translation_remap->get_selected(); ERR_FAIL_COND(!k); @@ -180,8 +180,8 @@ void LocalizationEditor::_translation_res_option_add(const PackedStringArray &p_ remaps[key] = r; undo_redo->create_action(vformat(TTR("Translation Resource Remap: Add %d Remap(s)"), p_paths.size())); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/translation_remaps", remaps); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/translation_remaps", ProjectSettings::get_singleton()->get("locale/translation_remaps")); + undo_redo->add_do_property(ProjectSettings::get_singleton(), "internationalization/locale/translation_remaps", remaps); + undo_redo->add_undo_property(ProjectSettings::get_singleton(), "internationalization/locale/translation_remaps", ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps")); undo_redo->add_do_method(this, "update_translations"); undo_redo->add_undo_method(this, "update_translations"); undo_redo->add_do_method(this, "emit_signal", localization_changed); @@ -202,11 +202,11 @@ void LocalizationEditor::_translation_res_option_changed() { return; } - if (!ProjectSettings::get_singleton()->has_setting("locale/translation_remaps")) { + if (!ProjectSettings::get_singleton()->has_setting("internationalization/locale/translation_remaps")) { return; } - Dictionary remaps = ProjectSettings::get_singleton()->get("locale/translation_remaps"); + Dictionary remaps = ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps"); TreeItem *k = translation_remap->get_selected(); ERR_FAIL_COND(!k); @@ -234,8 +234,8 @@ void LocalizationEditor::_translation_res_option_changed() { updating_translations = true; undo_redo->create_action(TTR("Change Resource Remap Language")); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/translation_remaps", remaps); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/translation_remaps", ProjectSettings::get_singleton()->get("locale/translation_remaps")); + undo_redo->add_do_property(ProjectSettings::get_singleton(), "internationalization/locale/translation_remaps", remaps); + undo_redo->add_undo_property(ProjectSettings::get_singleton(), "internationalization/locale/translation_remaps", ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps")); undo_redo->add_do_method(this, "update_translations"); undo_redo->add_undo_method(this, "update_translations"); undo_redo->add_do_method(this, "emit_signal", localization_changed); @@ -249,11 +249,11 @@ void LocalizationEditor::_translation_res_delete(Object *p_item, int p_column, i return; } - if (!ProjectSettings::get_singleton()->has_setting("locale/translation_remaps")) { + if (!ProjectSettings::get_singleton()->has_setting("internationalization/locale/translation_remaps")) { return; } - Dictionary remaps = ProjectSettings::get_singleton()->get("locale/translation_remaps"); + Dictionary remaps = ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps"); TreeItem *k = Object::cast_to<TreeItem>(p_item); @@ -263,8 +263,8 @@ void LocalizationEditor::_translation_res_delete(Object *p_item, int p_column, i remaps.erase(key); undo_redo->create_action(TTR("Remove Resource Remap")); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/translation_remaps", remaps); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/translation_remaps", ProjectSettings::get_singleton()->get("locale/translation_remaps")); + undo_redo->add_do_property(ProjectSettings::get_singleton(), "internationalization/locale/translation_remaps", remaps); + undo_redo->add_undo_property(ProjectSettings::get_singleton(), "internationalization/locale/translation_remaps", ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps")); undo_redo->add_do_method(this, "update_translations"); undo_redo->add_undo_method(this, "update_translations"); undo_redo->add_do_method(this, "emit_signal", localization_changed); @@ -277,11 +277,11 @@ void LocalizationEditor::_translation_res_option_delete(Object *p_item, int p_co return; } - if (!ProjectSettings::get_singleton()->has_setting("locale/translation_remaps")) { + if (!ProjectSettings::get_singleton()->has_setting("internationalization/locale/translation_remaps")) { return; } - Dictionary remaps = ProjectSettings::get_singleton()->get("locale/translation_remaps"); + Dictionary remaps = ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps"); TreeItem *k = translation_remap->get_selected(); ERR_FAIL_COND(!k); @@ -298,8 +298,8 @@ void LocalizationEditor::_translation_res_option_delete(Object *p_item, int p_co remaps[key] = r; undo_redo->create_action(TTR("Remove Resource Remap Option")); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/translation_remaps", remaps); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/translation_remaps", ProjectSettings::get_singleton()->get("locale/translation_remaps")); + undo_redo->add_do_property(ProjectSettings::get_singleton(), "internationalization/locale/translation_remaps", remaps); + undo_redo->add_undo_property(ProjectSettings::get_singleton(), "internationalization/locale/translation_remaps", ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps")); undo_redo->add_do_method(this, "update_translations"); undo_redo->add_undo_method(this, "update_translations"); undo_redo->add_do_method(this, "emit_signal", localization_changed); @@ -316,8 +316,8 @@ void LocalizationEditor::_translation_filter_option_changed() { Variant prev; Array f_locales_all; - if (ProjectSettings::get_singleton()->has_setting("locale/locale_filter")) { - f_locales_all = ProjectSettings::get_singleton()->get("locale/locale_filter"); + if (ProjectSettings::get_singleton()->has_setting("internationalization/locale/locale_filter")) { + f_locales_all = ProjectSettings::get_singleton()->get("internationalization/locale/locale_filter"); prev = f_locales_all; if (f_locales_all.size() != 2) { @@ -346,8 +346,8 @@ void LocalizationEditor::_translation_filter_option_changed() { f_locales.sort(); undo_redo->create_action(TTR("Changed Locale Filter")); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/locale_filter", f_locales_all); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/locale_filter", prev); + undo_redo->add_do_property(ProjectSettings::get_singleton(), "internationalization/locale/locale_filter", f_locales_all); + undo_redo->add_undo_property(ProjectSettings::get_singleton(), "internationalization/locale/locale_filter", prev); undo_redo->add_do_method(this, "update_translations"); undo_redo->add_undo_method(this, "update_translations"); undo_redo->add_do_method(this, "emit_signal", localization_changed); @@ -361,8 +361,8 @@ void LocalizationEditor::_translation_filter_mode_changed(int p_mode) { Variant prev; Array f_locales_all; - if (ProjectSettings::get_singleton()->has_setting("locale/locale_filter")) { - f_locales_all = ProjectSettings::get_singleton()->get("locale/locale_filter"); + if (ProjectSettings::get_singleton()->has_setting("internationalization/locale/locale_filter")) { + f_locales_all = ProjectSettings::get_singleton()->get("internationalization/locale/locale_filter"); prev = f_locales_all; if (f_locales_all.size() != 2) { @@ -378,8 +378,8 @@ void LocalizationEditor::_translation_filter_mode_changed(int p_mode) { } undo_redo->create_action(TTR("Changed Locale Filter Mode")); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/locale_filter", f_locales_all); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/locale_filter", prev); + undo_redo->add_do_property(ProjectSettings::get_singleton(), "internationalization/locale/locale_filter", f_locales_all); + undo_redo->add_undo_property(ProjectSettings::get_singleton(), "internationalization/locale/locale_filter", prev); undo_redo->add_do_method(this, "update_translations"); undo_redo->add_undo_method(this, "update_translations"); undo_redo->add_do_method(this, "emit_signal", localization_changed); @@ -388,7 +388,7 @@ void LocalizationEditor::_translation_filter_mode_changed(int p_mode) { } void LocalizationEditor::_pot_add(const PackedStringArray &p_paths) { - PackedStringArray pot_translations = ProjectSettings::get_singleton()->get("locale/translations_pot_files"); + PackedStringArray pot_translations = ProjectSettings::get_singleton()->get("internationalization/locale/translations_pot_files"); for (int i = 0; i < p_paths.size(); i++) { for (int j = 0; j < pot_translations.size(); j++) { @@ -401,8 +401,8 @@ void LocalizationEditor::_pot_add(const PackedStringArray &p_paths) { } undo_redo->create_action(vformat(TTR("Add %d file(s) for POT generation"), p_paths.size())); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/translations_pot_files", pot_translations); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/translations_pot_files", ProjectSettings::get_singleton()->get("locale/translations_pot_files")); + undo_redo->add_do_property(ProjectSettings::get_singleton(), "internationalization/locale/translations_pot_files", pot_translations); + undo_redo->add_undo_property(ProjectSettings::get_singleton(), "internationalization/locale/translations_pot_files", ProjectSettings::get_singleton()->get("internationalization/locale/translations_pot_files")); undo_redo->add_do_method(this, "update_translations"); undo_redo->add_undo_method(this, "update_translations"); undo_redo->add_do_method(this, "emit_signal", localization_changed); @@ -416,15 +416,15 @@ void LocalizationEditor::_pot_delete(Object *p_item, int p_column, int p_button) int idx = ti->get_metadata(0); - PackedStringArray pot_translations = ProjectSettings::get_singleton()->get("locale/translations_pot_files"); + PackedStringArray pot_translations = ProjectSettings::get_singleton()->get("internationalization/locale/translations_pot_files"); ERR_FAIL_INDEX(idx, pot_translations.size()); pot_translations.remove(idx); undo_redo->create_action(TTR("Remove file from POT generation")); - undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/translations_pot_files", pot_translations); - undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/translations_pot_files", ProjectSettings::get_singleton()->get("locale/translations_pot_files")); + undo_redo->add_do_property(ProjectSettings::get_singleton(), "internationalization/locale/translations_pot_files", pot_translations); + undo_redo->add_undo_property(ProjectSettings::get_singleton(), "internationalization/locale/translations_pot_files", ProjectSettings::get_singleton()->get("internationalization/locale/translations_pot_files")); undo_redo->add_do_method(this, "update_translations"); undo_redo->add_undo_method(this, "update_translations"); undo_redo->add_do_method(this, "emit_signal", localization_changed); @@ -463,8 +463,8 @@ void LocalizationEditor::update_translations() { translation_list->clear(); TreeItem *root = translation_list->create_item(nullptr); translation_list->set_hide_root(true); - if (ProjectSettings::get_singleton()->has_setting("locale/translations")) { - PackedStringArray translations = ProjectSettings::get_singleton()->get("locale/translations"); + if (ProjectSettings::get_singleton()->has_setting("internationalization/locale/translations")) { + PackedStringArray translations = ProjectSettings::get_singleton()->get("internationalization/locale/translations"); for (int i = 0; i < translations.size(); i++) { TreeItem *t = translation_list->create_item(root); t->set_editable(0, false); @@ -482,8 +482,8 @@ void LocalizationEditor::update_translations() { Array l_filter_all; bool is_arr_empty = true; - if (ProjectSettings::get_singleton()->has_setting("locale/locale_filter")) { - l_filter_all = ProjectSettings::get_singleton()->get("locale/locale_filter"); + if (ProjectSettings::get_singleton()->has_setting("internationalization/locale/locale_filter")) { + l_filter_all = ProjectSettings::get_singleton()->get("internationalization/locale/locale_filter"); if (l_filter_all.size() == 2) { translation_locale_filter_mode->select(l_filter_all[0]); @@ -573,8 +573,8 @@ void LocalizationEditor::update_translations() { } } - if (ProjectSettings::get_singleton()->has_setting("locale/translation_remaps")) { - Dictionary remaps = ProjectSettings::get_singleton()->get("locale/translation_remaps"); + if (ProjectSettings::get_singleton()->has_setting("internationalization/locale/translation_remaps")) { + Dictionary remaps = ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps"); List<Variant> rk; remaps.get_key_list(&rk); Vector<String> keys; @@ -631,8 +631,8 @@ void LocalizationEditor::update_translations() { translation_pot_list->clear(); root = translation_pot_list->create_item(nullptr); translation_pot_list->set_hide_root(true); - if (ProjectSettings::get_singleton()->has_setting("locale/translations_pot_files")) { - PackedStringArray pot_translations = ProjectSettings::get_singleton()->get("locale/translations_pot_files"); + if (ProjectSettings::get_singleton()->has_setting("internationalization/locale/translations_pot_files")) { + PackedStringArray pot_translations = ProjectSettings::get_singleton()->get("internationalization/locale/translations_pot_files"); for (int i = 0; i < pot_translations.size(); i++) { TreeItem *t = translation_pot_list->create_item(root); t->set_editable(0, false); diff --git a/editor/node_3d_editor_gizmos.cpp b/editor/node_3d_editor_gizmos.cpp index 96ebb131ad..9e2fb01bb8 100644 --- a/editor/node_3d_editor_gizmos.cpp +++ b/editor/node_3d_editor_gizmos.cpp @@ -557,7 +557,7 @@ bool EditorNode3DGizmo::intersect_ray(Camera3D *p_camera, const Point2 &p_point, Transform t = spatial_node->get_global_transform(); Vector3 camera_position = p_camera->get_camera_transform().origin; if (camera_position.distance_squared_to(t.origin) > 0.01) { - t.set_look_at(t.origin, camera_position, Vector3(0, 1, 0)); + t.set_look_at(t.origin, camera_position); } float scale = t.origin.distance_to(p_camera->get_camera_transform().origin); @@ -574,7 +574,7 @@ bool EditorNode3DGizmo::intersect_ray(Camera3D *p_camera, const Point2 &p_point, if (orig_camera_transform.origin.distance_squared_to(t.origin) > 0.01 && ABS(orig_camera_transform.basis.get_axis(Vector3::AXIS_Z).dot(Vector3(0, 1, 0))) < 0.99) { - p_camera->look_at(t.origin, Vector3(0, 1, 0)); + p_camera->look_at(t.origin); } Vector3 c0 = t.xform(Vector3(selectable_icon_size, selectable_icon_size, 0) * scale); @@ -844,7 +844,7 @@ static float _find_closest_angle_to_half_pi_arc(const Vector3 &p_from, const Vec //min_p = p_arc_xform.affine_inverse().xform(min_p); float a = (Math_PI * 0.5) - Vector2(min_p.x, -min_p.z).angle(); - return a * 180.0 / Math_PI; + return Math::rad2deg(a); } void Light3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) { @@ -1033,12 +1033,9 @@ void Light3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { p_gizmo->add_lines(points_primary, material_primary, false, color); p_gizmo->add_lines(points_secondary, material_secondary, false, color); - const float ra = 16 * Math_PI * 2.0 / 64.0; - const Point2 a = Vector2(Math::sin(ra), Math::cos(ra)) * w; - Vector<Vector3> handles; handles.push_back(Vector3(0, 0, -r)); - handles.push_back(Vector3(a.x, a.y, -d)); + handles.push_back(Vector3(w, 0, -d)); p_gizmo->add_handles(handles, get_material("handles")); p_gizmo->add_unscaled_billboard(icon, 0.05, color); @@ -1095,8 +1092,8 @@ void AudioStreamPlayer3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int float closest_angle = 1e20; for (int i = 0; i < 180; i++) { - float a = i * Math_PI / 180.0; - float an = (i + 1) * Math_PI / 180.0; + float a = Math::deg2rad((float)i); + float an = Math::deg2rad((float)(i + 1)); Vector3 from(Math::sin(a), 0, -Math::cos(a)); Vector3 to(Math::sin(an), 0, -Math::cos(an)); @@ -1145,9 +1142,10 @@ void AudioStreamPlayer3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { Vector<Vector3> points_primary; points_primary.resize(200); + real_t step = Math_TAU / 100.0; for (int i = 0; i < 100; i++) { - const float a = i * 2.0 * Math_PI / 100.0; - const float an = (i + 1) * 2.0 * Math_PI / 100.0; + const float a = i * step; + const float an = (i + 1) * step; const Vector3 from(Math::sin(a) * radius, Math::cos(a) * radius, ofs); const Vector3 to(Math::sin(an) * radius, Math::cos(an) * radius, ofs); @@ -1163,7 +1161,7 @@ void AudioStreamPlayer3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { points_secondary.resize(16); for (int i = 0; i < 8; i++) { - const float a = i * 2.0 * Math_PI / 8.0; + const float a = i * (Math_TAU / 8.0); const Vector3 from(Math::sin(a) * radius, Math::cos(a) * radius, ofs); points_secondary.write[i * 2 + 0] = from; @@ -2616,8 +2614,8 @@ void GPUParticlesCollision3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { Vector<Vector3> collision_segments; for (int i = 0; i < 64; i++) { - float ra = i * Math_PI * 2.0 / 64.0; - float rb = (i + 1) * Math_PI * 2.0 / 64.0; + float ra = i * (Math_TAU / 64.0); + float rb = (i + 1) * (Math_TAU / 64.0); Point2 a = Vector2(Math::sin(ra), Math::cos(ra)) * r; Point2 b = Vector2(Math::sin(rb), Math::cos(rb)) * r; @@ -3317,7 +3315,7 @@ void BakedLightmapGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { int stack_count = 8; int sector_count = 16; - float sector_step = 2 * Math_PI / sector_count; + float sector_step = (Math_PI * 2.0) / sector_count; float stack_step = Math_PI / stack_count; Vector<Vector3> vertices; @@ -3454,7 +3452,7 @@ void LightmapProbeGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { int stack_count = 8; int sector_count = 16; - float sector_step = 2 * Math_PI / sector_count; + float sector_step = (Math_PI * 2.0) / sector_count; float stack_step = Math_PI / stack_count; Vector<Vector3> vertices; @@ -3854,8 +3852,8 @@ void CollisionShape3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { Vector<Vector3> collision_segments; for (int i = 0; i < 64; i++) { - float ra = i * Math_PI * 2.0 / 64.0; - float rb = (i + 1) * Math_PI * 2.0 / 64.0; + float ra = i * (Math_TAU / 64.0); + float rb = (i + 1) * (Math_TAU / 64.0); Point2 a = Vector2(Math::sin(ra), Math::cos(ra)) * r; Point2 b = Vector2(Math::sin(rb), Math::cos(rb)) * r; @@ -3939,8 +3937,8 @@ void CollisionShape3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { Vector<Vector3> collision_segments; for (int i = 0; i < 64; i++) { - float ra = i * Math_PI * 2.0 / 64.0; - float rb = (i + 1) * Math_PI * 2.0 / 64.0; + float ra = i * (Math_TAU / 64.0); + float rb = (i + 1) * (Math_TAU / 64.0); Point2 a = Vector2(Math::sin(ra), Math::cos(ra)) * radius; Point2 b = Vector2(Math::sin(rb), Math::cos(rb)) * radius; @@ -4002,8 +4000,8 @@ void CollisionShape3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { Vector<Vector3> collision_segments; for (int i = 0; i < 64; i++) { - float ra = i * Math_PI * 2.0 / 64.0; - float rb = (i + 1) * Math_PI * 2.0 / 64.0; + float ra = i * (Math_TAU / 64.0); + float rb = (i + 1) * (Math_TAU / 64.0); Point2 a = Vector2(Math::sin(ra), Math::cos(ra)) * radius; Point2 b = Vector2(Math::sin(rb), Math::cos(rb)) * radius; diff --git a/editor/plugins/animation_blend_tree_editor_plugin.cpp b/editor/plugins/animation_blend_tree_editor_plugin.cpp index fbfcac3d22..e7e069e8b6 100644 --- a/editor/plugins/animation_blend_tree_editor_plugin.cpp +++ b/editor/plugins/animation_blend_tree_editor_plugin.cpp @@ -255,6 +255,9 @@ void AnimationNodeBlendTreeEditor::_update_graph() { graph->connect_node(from, 0, to, to_idx); } + + float graph_minimap_opacity = EditorSettings::get_singleton()->get("editors/visual_editors/minimap_opacity"); + graph->set_minimap_opacity(graph_minimap_opacity); } void AnimationNodeBlendTreeEditor::_file_opened(const String &p_file) { @@ -888,6 +891,8 @@ AnimationNodeBlendTreeEditor::AnimationNodeBlendTreeEditor() { graph->connect("scroll_offset_changed", callable_mp(this, &AnimationNodeBlendTreeEditor::_scroll_changed)); graph->connect("delete_nodes_request", callable_mp(this, &AnimationNodeBlendTreeEditor::_delete_nodes_request)); graph->connect("popup_request", callable_mp(this, &AnimationNodeBlendTreeEditor::_popup_request)); + float graph_minimap_opacity = EditorSettings::get_singleton()->get("editors/visual_editors/minimap_opacity"); + graph->set_minimap_opacity(graph_minimap_opacity); VSeparator *vs = memnew(VSeparator); graph->get_zoom_hbox()->add_child(vs); diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp index 56d82acd2f..7c623505b5 100644 --- a/editor/plugins/animation_player_editor_plugin.cpp +++ b/editor/plugins/animation_player_editor_plugin.cpp @@ -78,7 +78,6 @@ void AnimationPlayerEditor::_notification(int p_what) { } frame->set_value(player->get_current_animation_position()); track_editor->set_anim_pos(player->get_current_animation_position()); - EditorNode::get_singleton()->get_inspector()->refresh(); } else if (!player->is_valid()) { // Reset timeline when the player has been stopped externally @@ -1072,8 +1071,6 @@ void AnimationPlayerEditor::_animation_key_editor_seek(float p_pos, bool p_drag) frame->set_value(Math::snapped(p_pos, _get_editor_step())); updating = false; _seek_value_changed(p_pos, !p_drag); - - EditorNode::get_singleton()->get_inspector()->refresh(); } void AnimationPlayerEditor::_animation_tool_menu(int p_option) { @@ -1400,7 +1397,7 @@ void AnimationPlayerEditor::_prepare_onion_layers_2() { // Render every past/future step with the capture shader. RS::get_singleton()->canvas_item_set_material(onion.capture.canvas_item, onion.capture.material->get_rid()); - onion.capture.material->set_shader_param("bkg_color", GLOBAL_GET("rendering/environment/default_clear_color")); + onion.capture.material->set_shader_param("bkg_color", GLOBAL_GET("rendering/environment/defaults/default_clear_color")); onion.capture.material->set_shader_param("differences_only", onion.differences_only); onion.capture.material->set_shader_param("present", onion.differences_only ? RS::get_singleton()->viewport_get_texture(present_rid) : RID()); diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp index b2d143c416..4d9c5625a3 100644 --- a/editor/plugins/asset_library_editor_plugin.cpp +++ b/editor/plugins/asset_library_editor_plugin.cpp @@ -350,7 +350,7 @@ void EditorAssetLibraryItemDownload::_http_download_completed(int p_status, int if (sha256 != download_sha256) { error_text = TTR("Bad download hash, assuming file has been tampered with.") + "\n"; error_text += TTR("Expected:") + " " + sha256 + "\n" + TTR("Got:") + " " + download_sha256; - status->set_text(TTR("Failed sha256 hash check")); + status->set_text(TTR("Failed SHA-256 hash check")); } } } break; @@ -359,6 +359,8 @@ void EditorAssetLibraryItemDownload::_http_download_completed(int p_status, int if (error_text != String()) { download_error->set_text(TTR("Asset Download Error:") + "\n" + error_text); download_error->popup_centered(); + // Let the user retry the download. + retry->show(); return; } @@ -459,6 +461,9 @@ void EditorAssetLibraryItemDownload::_install() { } void EditorAssetLibraryItemDownload::_make_request() { + // Hide the Retry button if we've just pressed it. + retry->hide(); + download->cancel_request(); download->set_download_file(EditorSettings::get_singleton()->get_cache_dir().plus_file("tmp_asset_" + itos(asset_id)) + ".zip"); @@ -516,6 +521,8 @@ EditorAssetLibraryItemDownload::EditorAssetLibraryItemDownload() { retry = memnew(Button); retry->set_text(TTR("Retry")); retry->connect("pressed", callable_mp(this, &EditorAssetLibraryItemDownload::_make_request)); + // Only show the Retry button in case of a failure. + retry->hide(); hb2->add_child(retry); hb2->add_child(install); @@ -900,7 +907,7 @@ void EditorAssetLibrary::_search(int p_page) { } if (filter->get_text() != String()) { - args += "&filter=" + filter->get_text().http_escape(); + args += "&filter=" + filter->get_text().uri_encode(); } if (p_page > 0) { @@ -1364,10 +1371,18 @@ EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) { search_hb2->add_child(memnew(Label(TTR("Site:") + " "))); repository = memnew(OptionButton); - repository->add_item("godotengine.org"); - repository->set_item_metadata(0, "https://godotengine.org/asset-library/api"); - repository->add_item("localhost"); - repository->set_item_metadata(1, "http://127.0.0.1/asset-library/api"); + { + Dictionary default_urls; + default_urls["godotengine.org"] = "https://godotengine.org/asset-library/api"; + default_urls["localhost"] = "http://127.0.0.1/asset-library/api"; + Dictionary available_urls = _EDITOR_DEF("asset_library/available_urls", default_urls, true); + Array keys = available_urls.keys(); + for (int i = 0; i < available_urls.size(); i++) { + String key = keys[i]; + repository->add_item(key); + repository->set_item_metadata(i, available_urls[key]); + } + } repository->connect("item_selected", callable_mp(this, &EditorAssetLibrary::_repository_changed)); diff --git a/editor/plugins/audio_stream_editor_plugin.cpp b/editor/plugins/audio_stream_editor_plugin.cpp index 1765c99572..5963092860 100644 --- a/editor/plugins/audio_stream_editor_plugin.cpp +++ b/editor/plugins/audio_stream_editor_plugin.cpp @@ -96,7 +96,7 @@ void AudioStreamEditor::_preview_changed(ObjectID p_which) { } } -void AudioStreamEditor::_changed_callback(Object *p_changed, const char *p_prop) { +void AudioStreamEditor::_audio_changed() { if (!is_visible()) { return; } @@ -172,7 +172,7 @@ void AudioStreamEditor::_seek_to(real_t p_x) { void AudioStreamEditor::edit(Ref<AudioStream> p_stream) { if (!stream.is_null()) { - stream->remove_change_receptor(this); + stream->disconnect("changed", callable_mp(this, &AudioStreamEditor::_audio_changed)); } stream = p_stream; @@ -182,7 +182,7 @@ void AudioStreamEditor::edit(Ref<AudioStream> p_stream) { _duration_label->set_text(text); if (!stream.is_null()) { - stream->add_change_receptor(this); + stream->connect("changed", callable_mp(this, &AudioStreamEditor::_audio_changed)); update(); } else { hide(); diff --git a/editor/plugins/audio_stream_editor_plugin.h b/editor/plugins/audio_stream_editor_plugin.h index f27add7229..aa906a6a05 100644 --- a/editor/plugins/audio_stream_editor_plugin.h +++ b/editor/plugins/audio_stream_editor_plugin.h @@ -53,6 +53,8 @@ class AudioStreamEditor : public ColorRect { float _current; bool _dragging; + void _audio_changed(); + protected: void _notification(int p_what); void _preview_changed(ObjectID p_which); @@ -63,7 +65,6 @@ protected: void _draw_indicator(); void _on_input_indicator(Ref<InputEvent> p_event); void _seek_to(real_t p_x); - void _changed_callback(Object *p_changed, const char *p_prop) override; static void _bind_methods(); public: diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index 49af478307..d92837b68d 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -216,8 +216,8 @@ public: grid_step_x->set_value(p_grid_step.x); grid_step_y->set_value(p_grid_step.y); primary_grid_steps->set_value(p_primary_grid_steps); - rotation_offset->set_value(p_rotation_offset * (180 / Math_PI)); - rotation_step->set_value(p_rotation_step * (180 / Math_PI)); + rotation_offset->set_value(Math::rad2deg(p_rotation_offset)); + rotation_step->set_value(Math::rad2deg(p_rotation_step)); scale_step->set_value(p_scale_step); } @@ -225,8 +225,8 @@ public: p_grid_offset = Point2(grid_offset_x->get_value(), grid_offset_y->get_value()); p_grid_step = Point2(grid_step_x->get_value(), grid_step_y->get_value()); p_primary_grid_steps = int(primary_grid_steps->get_value()); - p_rotation_offset = rotation_offset->get_value() / (180 / Math_PI); - p_rotation_step = rotation_step->get_value() / (180 / Math_PI); + p_rotation_offset = Math::deg2rad(rotation_offset->get_value()); + p_rotation_step = Math::deg2rad(rotation_step->get_value()); p_scale_step = scale_step->get_value(); } }; @@ -4163,7 +4163,7 @@ void CanvasItemEditor::_notification(int p_what) { // the icon will be dark, so we need to lighten it before blending it // with the red color. const Color key_auto_color = EditorSettings::get_singleton()->is_dark_theme() ? Color(1, 1, 1) : Color(4.25, 4.25, 4.25); - key_auto_insert_button->add_theme_color_override("icon_color_pressed", key_auto_color.lerp(Color(1, 0, 0), 0.55)); + key_auto_insert_button->add_theme_color_override("icon_pressed_color", key_auto_color.lerp(Color(1, 0, 0), 0.55)); animation_menu->set_icon(get_theme_icon("GuiTabMenuHl", "EditorIcons")); zoom_minus->set_icon(get_theme_icon("ZoomLess", "EditorIcons")); @@ -5638,7 +5638,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { primary_grid_steps = 8; // A power-of-two value works better as a default grid_step_multiplier = 0; snap_rotation_offset = 0; - snap_rotation_step = 15 / (180 / Math_PI); + snap_rotation_step = Math::deg2rad(15.0); snap_scale_step = 0.1f; smart_snap_active = false; grid_snap_active = false; @@ -5779,7 +5779,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { zoom_reset->set_flat(true); zoom_hb->add_child(zoom_reset); zoom_reset->add_theme_constant_override("outline_size", 1); - zoom_reset->add_theme_color_override("font_outline_modulate", Color(0, 0, 0)); + zoom_reset->add_theme_color_override("font_outline_color", Color(0, 0, 0)); zoom_reset->add_theme_color_override("font_color", Color(1, 1, 1)); zoom_reset->connect("pressed", callable_mp(this, &CanvasItemEditor::_button_zoom_reset)); zoom_reset->set_shortcut(ED_SHORTCUT("canvas_item_editor/zoom_reset", TTR("Zoom Reset"), KEY_MASK_CMD | KEY_0)); @@ -6613,7 +6613,7 @@ CanvasItemEditorViewport::CanvasItemEditorViewport(EditorNode *p_node, CanvasIte } label = memnew(Label); - label->add_theme_color_override("font_color_shadow", Color(0, 0, 0, 1)); + label->add_theme_color_override("font_shadow_color", Color(0, 0, 0, 1)); label->add_theme_constant_override("shadow_as_outline", 1 * EDSCALE); label->hide(); canvas_item_editor->get_controls_container()->add_child(label); @@ -6621,7 +6621,7 @@ CanvasItemEditorViewport::CanvasItemEditorViewport(EditorNode *p_node, CanvasIte label_desc = memnew(Label); label_desc->set_text(TTR("Drag & drop + Shift : Add node as sibling\nDrag & drop + Alt : Change node type")); label_desc->add_theme_color_override("font_color", Color(0.6f, 0.6f, 0.6f, 1)); - label_desc->add_theme_color_override("font_color_shadow", Color(0.2f, 0.2f, 0.2f, 1)); + label_desc->add_theme_color_override("font_shadow_color", Color(0.2f, 0.2f, 0.2f, 1)); label_desc->add_theme_constant_override("shadow_as_outline", 1 * EDSCALE); label_desc->add_theme_constant_override("line_spacing", 0); label_desc->hide(); diff --git a/editor/plugins/collision_shape_2d_editor_plugin.cpp b/editor/plugins/collision_shape_2d_editor_plugin.cpp index a1e7d3d6e0..141ee35cdb 100644 --- a/editor/plugins/collision_shape_2d_editor_plugin.cpp +++ b/editor/plugins/collision_shape_2d_editor_plugin.cpp @@ -207,7 +207,7 @@ void CollisionShape2DEditor::set_handle(int idx, Point2 &p_point) { } break; } - node->get_shape()->_change_notify(); + node->get_shape()->notify_property_list_changed(); } void CollisionShape2DEditor::commit_handle(int idx, Variant &p_org) { diff --git a/editor/plugins/editor_preview_plugins.cpp b/editor/plugins/editor_preview_plugins.cpp index bdf88b82e4..eb3c06fba1 100644 --- a/editor/plugins/editor_preview_plugins.cpp +++ b/editor/plugins/editor_preview_plugins.cpp @@ -301,7 +301,7 @@ EditorPackedScenePreviewPlugin::EditorPackedScenePreviewPlugin() { ////////////////////////////////////////////////////////////////// void EditorMaterialPreviewPlugin::_preview_done(const Variant &p_udata) { - preview_done = true; + preview_done.set(); } void EditorMaterialPreviewPlugin::_bind_methods() { @@ -325,10 +325,10 @@ Ref<Texture2D> EditorMaterialPreviewPlugin::generate(const RES &p_from, const Si RS::get_singleton()->viewport_set_update_mode(viewport, RS::VIEWPORT_UPDATE_ONCE); //once used for capture - preview_done = false; + preview_done.clear(); RS::get_singleton()->request_frame_drawn_callback(const_cast<EditorMaterialPreviewPlugin *>(this), "_preview_done", Variant()); - while (!preview_done) { + while (!preview_done.is_set()) { OS::get_singleton()->delay_usec(10); } @@ -382,7 +382,9 @@ EditorMaterialPreviewPlugin::EditorMaterialPreviewPlugin() { int lats = 32; int lons = 32; - float radius = 1.0; + const double lat_step = Math_TAU / lats; + const double lon_step = Math_TAU / lons; + real_t radius = 1.0; Vector<Vector3> vertices; Vector<Vector3> normals; @@ -391,20 +393,20 @@ EditorMaterialPreviewPlugin::EditorMaterialPreviewPlugin() { Basis tt = Basis(Vector3(0, 1, 0), Math_PI * 0.5); for (int i = 1; i <= lats; i++) { - double lat0 = Math_PI * (-0.5 + (double)(i - 1) / lats); + double lat0 = lat_step * (i - 1) - Math_TAU / 4; double z0 = Math::sin(lat0); double zr0 = Math::cos(lat0); - double lat1 = Math_PI * (-0.5 + (double)i / lats); + double lat1 = lat_step * i - Math_TAU / 4; double z1 = Math::sin(lat1); double zr1 = Math::cos(lat1); for (int j = lons; j >= 1; j--) { - double lng0 = 2 * Math_PI * (double)(j - 1) / lons; + double lng0 = lon_step * (j - 1); double x0 = Math::cos(lng0); double y0 = Math::sin(lng0); - double lng1 = 2 * Math_PI * (double)(j) / lons; + double lng1 = lon_step * j; double x1 = Math::cos(lng1); double y1 = Math::sin(lng1); @@ -675,7 +677,7 @@ EditorAudioStreamPreviewPlugin::EditorAudioStreamPreviewPlugin() { /////////////////////////////////////////////////////////////////////////// void EditorMeshPreviewPlugin::_preview_done(const Variant &p_udata) { - preview_done = true; + preview_done.set(); } void EditorMeshPreviewPlugin::_bind_methods() { @@ -712,10 +714,10 @@ Ref<Texture2D> EditorMeshPreviewPlugin::generate(const RES &p_from, const Size2 RS::get_singleton()->viewport_set_update_mode(viewport, RS::VIEWPORT_UPDATE_ONCE); //once used for capture - preview_done = false; + preview_done.clear(); RS::get_singleton()->request_frame_drawn_callback(const_cast<EditorMeshPreviewPlugin *>(this), "_preview_done", Variant()); - while (!preview_done) { + while (!preview_done.is_set()) { OS::get_singleton()->delay_usec(10); } @@ -790,7 +792,7 @@ EditorMeshPreviewPlugin::~EditorMeshPreviewPlugin() { /////////////////////////////////////////////////////////////////////////// void EditorFontPreviewPlugin::_preview_done(const Variant &p_udata) { - preview_done = true; + preview_done.set(); } void EditorFontPreviewPlugin::_bind_methods() { @@ -881,11 +883,11 @@ Ref<Texture2D> EditorFontPreviewPlugin::generate_from_path(const String &p_path, font->draw_string(canvas_item, pos, sample, HALIGN_LEFT, -1.f, 50, Color(1, 1, 1)); - preview_done = false; + preview_done.clear(); RS::get_singleton()->viewport_set_update_mode(viewport, RS::VIEWPORT_UPDATE_ONCE); //once used for capture RS::get_singleton()->request_frame_drawn_callback(const_cast<EditorFontPreviewPlugin *>(this), "_preview_done", Variant()); - while (!preview_done) { + while (!preview_done.is_set()) { OS::get_singleton()->delay_usec(10); } diff --git a/editor/plugins/editor_preview_plugins.h b/editor/plugins/editor_preview_plugins.h index 57e2911c89..6e8b9a34cf 100644 --- a/editor/plugins/editor_preview_plugins.h +++ b/editor/plugins/editor_preview_plugins.h @@ -33,6 +33,8 @@ #include "editor/editor_resource_preview.h" +#include "core/templates/safe_refcount.h" + void post_process_preview(Ref<Image> p_image); class EditorTexturePreviewPlugin : public EditorResourcePreviewGenerator { @@ -90,7 +92,7 @@ class EditorMaterialPreviewPlugin : public EditorResourcePreviewGenerator { RID light2; RID light_instance2; RID camera; - mutable volatile bool preview_done = false; + mutable SafeFlag preview_done; void _preview_done(const Variant &p_udata); @@ -134,7 +136,7 @@ class EditorMeshPreviewPlugin : public EditorResourcePreviewGenerator { RID light2; RID light_instance2; RID camera; - mutable volatile bool preview_done = false; + mutable SafeFlag preview_done; void _preview_done(const Variant &p_udata); @@ -156,7 +158,7 @@ class EditorFontPreviewPlugin : public EditorResourcePreviewGenerator { RID viewport_texture; RID canvas; RID canvas_item; - mutable volatile bool preview_done = false; + mutable SafeFlag preview_done; void _preview_done(const Variant &p_udata); diff --git a/editor/plugins/item_list_editor_plugin.cpp b/editor/plugins/item_list_editor_plugin.cpp index c0f690bb6a..1ea6630622 100644 --- a/editor/plugins/item_list_editor_plugin.cpp +++ b/editor/plugins/item_list_editor_plugin.cpp @@ -145,7 +145,7 @@ int ItemListOptionButtonPlugin::get_flags() const { void ItemListOptionButtonPlugin::add_item() { ob->add_item(vformat(TTR("Item %d"), ob->get_item_count())); - _change_notify(); + notify_property_list_changed(); } int ItemListOptionButtonPlugin::get_item_count() const { @@ -154,7 +154,7 @@ int ItemListOptionButtonPlugin::get_item_count() const { void ItemListOptionButtonPlugin::erase(int p_idx) { ob->remove_item(p_idx); - _change_notify(); + notify_property_list_changed(); } ItemListOptionButtonPlugin::ItemListOptionButtonPlugin() { @@ -181,7 +181,7 @@ int ItemListPopupMenuPlugin::get_flags() const { void ItemListPopupMenuPlugin::add_item() { pp->add_item(vformat(TTR("Item %d"), pp->get_item_count())); - _change_notify(); + notify_property_list_changed(); } int ItemListPopupMenuPlugin::get_item_count() const { @@ -190,7 +190,7 @@ int ItemListPopupMenuPlugin::get_item_count() const { void ItemListPopupMenuPlugin::erase(int p_idx) { pp->remove_item(p_idx); - _change_notify(); + notify_property_list_changed(); } ItemListPopupMenuPlugin::ItemListPopupMenuPlugin() { @@ -213,7 +213,7 @@ int ItemListItemListPlugin::get_flags() const { void ItemListItemListPlugin::add_item() { pp->add_item(vformat(TTR("Item %d"), pp->get_item_count())); - _change_notify(); + notify_property_list_changed(); } int ItemListItemListPlugin::get_item_count() const { @@ -222,7 +222,7 @@ int ItemListItemListPlugin::get_item_count() const { void ItemListItemListPlugin::erase(int p_idx) { pp->remove_item(p_idx); - _change_notify(); + notify_property_list_changed(); } ItemListItemListPlugin::ItemListItemListPlugin() { diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index 7717a9a27e..610ef0c601 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -2335,7 +2335,43 @@ void Node3DEditorPlugin::edited_scene_changed() { } } +void Node3DEditorViewport::_project_settings_changed() { + //update shadow atlas if changed + int shadowmap_size = ProjectSettings::get_singleton()->get("rendering/shadows/shadow_atlas/size"); + bool shadowmap_16_bits = ProjectSettings::get_singleton()->get("rendering/shadows/shadow_atlas/16_bits"); + int atlas_q0 = ProjectSettings::get_singleton()->get("rendering/shadows/shadow_atlas/quadrant_0_subdiv"); + int atlas_q1 = ProjectSettings::get_singleton()->get("rendering/shadows/shadow_atlas/quadrant_1_subdiv"); + int atlas_q2 = ProjectSettings::get_singleton()->get("rendering/shadows/shadow_atlas/quadrant_2_subdiv"); + int atlas_q3 = ProjectSettings::get_singleton()->get("rendering/shadows/shadow_atlas/quadrant_3_subdiv"); + + viewport->set_shadow_atlas_size(shadowmap_size); + viewport->set_shadow_atlas_16_bits(shadowmap_16_bits); + viewport->set_shadow_atlas_quadrant_subdiv(0, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q0)); + viewport->set_shadow_atlas_quadrant_subdiv(1, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q1)); + viewport->set_shadow_atlas_quadrant_subdiv(2, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q2)); + viewport->set_shadow_atlas_quadrant_subdiv(3, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q3)); + + bool shrink = view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(VIEW_HALF_RESOLUTION)); + + if (shrink != (subviewport_container->get_stretch_shrink() > 1)) { + subviewport_container->set_stretch_shrink(shrink ? 2 : 1); + } + + // Update MSAA, screen-space AA and debanding if changed + + const int msaa_mode = ProjectSettings::get_singleton()->get("rendering/anti_aliasing/quality/msaa"); + viewport->set_msaa(Viewport::MSAA(msaa_mode)); + const int ssaa_mode = GLOBAL_GET("rendering/anti_aliasing/quality/screen_space_aa"); + viewport->set_screen_space_aa(Viewport::ScreenSpaceAA(ssaa_mode)); + const bool use_debanding = GLOBAL_GET("rendering/anti_aliasing/quality/use_debanding"); + viewport->set_use_debanding(use_debanding); +} + void Node3DEditorViewport::_notification(int p_what) { + if (p_what == NOTIFICATION_READY) { + EditorNode::get_singleton()->connect("project_settings_changed", callable_mp(this, &Node3DEditorViewport::_project_settings_changed)); + } + if (p_what == NOTIFICATION_VISIBILITY_CHANGED) { bool visible = is_visible_in_tree(); @@ -2442,35 +2478,6 @@ void Node3DEditorViewport::_notification(int p_what) { } } - //update shadow atlas if changed - - int shadowmap_size = ProjectSettings::get_singleton()->get("rendering/quality/shadow_atlas/size"); - int atlas_q0 = ProjectSettings::get_singleton()->get("rendering/quality/shadow_atlas/quadrant_0_subdiv"); - int atlas_q1 = ProjectSettings::get_singleton()->get("rendering/quality/shadow_atlas/quadrant_1_subdiv"); - int atlas_q2 = ProjectSettings::get_singleton()->get("rendering/quality/shadow_atlas/quadrant_2_subdiv"); - int atlas_q3 = ProjectSettings::get_singleton()->get("rendering/quality/shadow_atlas/quadrant_3_subdiv"); - - viewport->set_shadow_atlas_size(shadowmap_size); - viewport->set_shadow_atlas_quadrant_subdiv(0, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q0)); - viewport->set_shadow_atlas_quadrant_subdiv(1, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q1)); - viewport->set_shadow_atlas_quadrant_subdiv(2, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q2)); - viewport->set_shadow_atlas_quadrant_subdiv(3, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q3)); - - bool shrink = view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(VIEW_HALF_RESOLUTION)); - - if (shrink != (subviewport_container->get_stretch_shrink() > 1)) { - subviewport_container->set_stretch_shrink(shrink ? 2 : 1); - } - - // Update MSAA, screen-space AA and debanding if changed - - const int msaa_mode = ProjectSettings::get_singleton()->get("rendering/quality/screen_filters/msaa"); - viewport->set_msaa(Viewport::MSAA(msaa_mode)); - const int ssaa_mode = GLOBAL_GET("rendering/quality/screen_filters/screen_space_aa"); - viewport->set_screen_space_aa(Viewport::ScreenSpaceAA(ssaa_mode)); - const bool use_debanding = GLOBAL_GET("rendering/quality/screen_filters/use_debanding"); - viewport->set_use_debanding(use_debanding); - bool show_info = view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(VIEW_INFORMATION)); if (show_info != info_label->is_visible()) { info_label->set_visible(show_info); @@ -2491,6 +2498,13 @@ void Node3DEditorViewport::_notification(int p_what) { text += "Z: " + rtos(current_camera->get_translation().z).pad_decimals(1) + "\n"; text += TTR("Pitch") + ": " + itos(Math::round(current_camera->get_rotation_degrees().x)) + "\n"; text += TTR("Yaw") + ": " + itos(Math::round(current_camera->get_rotation_degrees().y)) + "\n\n"; + + text += TTR("Size") + + vformat( + ": %dx%d (%.1fMP)\n", + viewport->get_size().x, + viewport->get_size().y, + viewport->get_size().x * viewport->get_size().y * 0.000'001); text += TTR("Objects Drawn") + ": " + itos(viewport->get_render_info(Viewport::RENDER_INFO_OBJECTS_IN_FRAME)) + "\n"; text += TTR("Material Changes") + ": " + itos(viewport->get_render_info(Viewport::RENDER_INFO_MATERIAL_CHANGES_IN_FRAME)) + "\n"; text += TTR("Shader Changes") + ": " + itos(viewport->get_render_info(Viewport::RENDER_INFO_SHADER_CHANGES_IN_FRAME)) + "\n"; @@ -2822,7 +2836,7 @@ void Node3DEditorViewport::_menu_option(int p_option) { } break; case VIEW_FRONT: { cursor.x_rot = 0; - cursor.y_rot = 0; + cursor.y_rot = Math_PI; set_message(TTR("Front View."), 2); name = TTR("Front"); _set_auto_orthogonal(); @@ -2831,7 +2845,7 @@ void Node3DEditorViewport::_menu_option(int p_option) { } break; case VIEW_REAR: { cursor.x_rot = 0; - cursor.y_rot = Math_PI; + cursor.y_rot = 0; set_message(TTR("Rear View."), 2); name = TTR("Rear"); _set_auto_orthogonal(); @@ -3319,6 +3333,21 @@ void Node3DEditorViewport::update_transform_gizmo_view() { xform.basis.scale(scale); + // if the determinant is zero, we should disable the gizmo from being rendered + // this prevents supplying bad values to the renderer and then having to filter it out again + if (xform.basis.determinant() == 0) { + for (int i = 0; i < 3; i++) { + RenderingServer::get_singleton()->instance_set_visible(move_gizmo_instance[i], false); + RenderingServer::get_singleton()->instance_set_visible(move_plane_gizmo_instance[i], false); + RenderingServer::get_singleton()->instance_set_visible(rotate_gizmo_instance[i], false); + RenderingServer::get_singleton()->instance_set_visible(scale_gizmo_instance[i], false); + RenderingServer::get_singleton()->instance_set_visible(scale_plane_gizmo_instance[i], false); + } + // Rotation white outline + RenderingServer::get_singleton()->instance_set_visible(rotate_gizmo_instance[3], false); + return; + } + for (int i = 0; i < 3; i++) { RenderingServer::get_singleton()->instance_set_transform(move_gizmo_instance[i], xform); RenderingServer::get_singleton()->instance_set_visible(move_gizmo_instance[i], spatial_editor->is_gizmo_visible() && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE)); @@ -5242,6 +5271,42 @@ void Node3DEditor::_init_indicators() { origin_points.push_back(axis * -1048576); } + Ref<Shader> grid_shader = memnew(Shader); + grid_shader->set_code( + "\n" + "shader_type spatial; \n" + "render_mode unshaded; \n" + "uniform bool orthogonal; \n" + "uniform float grid_size; \n" + "\n" + "void vertex() { \n" + " // From FLAG_SRGB_VERTEX_COLOR \n" + " if (!OUTPUT_IS_SRGB) { \n" + " COLOR.rgb = mix(pow((COLOR.rgb + vec3(0.055)) * (1.0 / (1.0 + 0.055)), vec3(2.4)), COLOR.rgb * (1.0 / 12.92), lessThan(COLOR.rgb, vec3(0.04045))); \n" + " } \n" + "} \n" + "\n" + "void fragment() { \n" + " ALBEDO = COLOR.rgb; \n" + " vec3 dir = orthogonal ? -vec3(0, 0, 1) : VIEW; \n" + " float angle_fade = abs(dot(dir, NORMAL)); \n" + " angle_fade = smoothstep(0.05, 0.2, angle_fade); \n" + " \n" + " vec3 world_pos = (CAMERA_MATRIX * vec4(VERTEX, 1.0)).xyz; \n" + " vec3 world_normal = (CAMERA_MATRIX * vec4(NORMAL, 0.0)).xyz; \n" + " vec3 camera_world_pos = CAMERA_MATRIX[3].xyz; \n" + " vec3 camera_world_pos_on_plane = camera_world_pos * (1.0 - world_normal); \n" + " float dist_fade = 1.0 - (distance(world_pos, camera_world_pos_on_plane) / grid_size); \n" + " dist_fade = smoothstep(0.02, 0.3, dist_fade); \n" + " \n" + " ALPHA = COLOR.a * dist_fade * angle_fade; \n" + "}"); + + for (int i = 0; i < 3; i++) { + grid_mat[i].instance(); + grid_mat[i]->set_shader(grid_shader); + } + grid_enable[0] = EditorSettings::get_singleton()->get("editors/3d/grid_xy_plane"); grid_enable[1] = EditorSettings::get_singleton()->get("editors/3d/grid_yz_plane"); grid_enable[2] = EditorSettings::get_singleton()->get("editors/3d/grid_xz_plane"); @@ -5334,9 +5399,10 @@ void Node3DEditor::_init_indicators() { int arrow_sides = 16; + const real_t arrow_sides_step = Math_TAU / arrow_sides; for (int k = 0; k < arrow_sides; k++) { - Basis ma(ivec, Math_PI * 2 * float(k) / arrow_sides); - Basis mb(ivec, Math_PI * 2 * float(k + 1) / arrow_sides); + Basis ma(ivec, k * arrow_sides_step); + Basis mb(ivec, (k + 1) * arrow_sides_step); for (int j = 0; j < arrow_points - 1; j++) { Vector3 points[4] = { @@ -5411,13 +5477,14 @@ void Node3DEditor::_init_indicators() { int n = 128; // number of circle segments int m = 6; // number of thickness segments + real_t step = Math_TAU / n; for (int j = 0; j < n; ++j) { - Basis basis = Basis(ivec, (Math_PI * 2.0f * j) / n); + Basis basis = Basis(ivec, j * step); Vector3 vertex = basis.xform(ivec2 * GIZMO_CIRCLE_SIZE); for (int k = 0; k < m; ++k) { - Vector2 ofs = Vector2(Math::cos((Math_PI * 2.0 * k) / m), Math::sin((Math_PI * 2.0 * k) / m)); + Vector2 ofs = Vector2(Math::cos((Math_TAU * k) / m), Math::sin((Math_TAU * k) / m)); Vector3 normal = ivec * ofs.x + ivec2 * ofs.y; surftool->set_normal(basis.xform(normal)); @@ -5444,32 +5511,33 @@ void Node3DEditor::_init_indicators() { Ref<Shader> rotate_shader = memnew(Shader); - rotate_shader->set_code("\n" - "shader_type spatial; \n" - "render_mode unshaded, depth_test_disabled; \n" - "uniform vec4 albedo; \n" - "\n" - "mat3 orthonormalize(mat3 m) { \n" - " vec3 x = normalize(m[0]); \n" - " vec3 y = normalize(m[1] - x * dot(x, m[1])); \n" - " vec3 z = m[2] - x * dot(x, m[2]); \n" - " z = normalize(z - y * (dot(y,m[2]))); \n" - " return mat3(x,y,z); \n" - "} \n" - "\n" - "void vertex() { \n" - " mat3 mv = orthonormalize(mat3(MODELVIEW_MATRIX)); \n" - " vec3 n = mv * VERTEX; \n" - " float orientation = dot(vec3(0,0,-1),n); \n" - " if (orientation <= 0.005) { \n" - " VERTEX += NORMAL*0.02; \n" - " } \n" - "} \n" - "\n" - "void fragment() { \n" - " ALBEDO = albedo.rgb; \n" - " ALPHA = albedo.a; \n" - "}"); + rotate_shader->set_code( + "\n" + "shader_type spatial; \n" + "render_mode unshaded, depth_test_disabled; \n" + "uniform vec4 albedo; \n" + "\n" + "mat3 orthonormalize(mat3 m) { \n" + " vec3 x = normalize(m[0]); \n" + " vec3 y = normalize(m[1] - x * dot(x, m[1])); \n" + " vec3 z = m[2] - x * dot(x, m[2]); \n" + " z = normalize(z - y * (dot(y,m[2]))); \n" + " return mat3(x,y,z); \n" + "} \n" + "\n" + "void vertex() { \n" + " mat3 mv = orthonormalize(mat3(MODELVIEW_MATRIX)); \n" + " vec3 n = mv * VERTEX; \n" + " float orientation = dot(vec3(0,0,-1),n); \n" + " if (orientation <= 0.005) { \n" + " VERTEX += NORMAL*0.02; \n" + " } \n" + "} \n" + "\n" + "void fragment() { \n" + " ALBEDO = albedo.rgb; \n" + " ALPHA = albedo.a; \n" + "}"); Ref<ShaderMaterial> rotate_mat = memnew(ShaderMaterial); rotate_mat->set_render_priority(Material::RENDER_PRIORITY_MAX); @@ -5489,33 +5557,34 @@ void Node3DEditor::_init_indicators() { Ref<ShaderMaterial> border_mat = rotate_mat->duplicate(); Ref<Shader> border_shader = memnew(Shader); - border_shader->set_code("\n" - "shader_type spatial; \n" - "render_mode unshaded, depth_test_disabled; \n" - "uniform vec4 albedo; \n" - "\n" - "mat3 orthonormalize(mat3 m) { \n" - " vec3 x = normalize(m[0]); \n" - " vec3 y = normalize(m[1] - x * dot(x, m[1])); \n" - " vec3 z = m[2] - x * dot(x, m[2]); \n" - " z = normalize(z - y * (dot(y,m[2]))); \n" - " return mat3(x,y,z); \n" - "} \n" - "\n" - "void vertex() { \n" - " mat3 mv = orthonormalize(mat3(MODELVIEW_MATRIX)); \n" - " mv = inverse(mv); \n" - " VERTEX += NORMAL*0.008; \n" - " vec3 camera_dir_local = mv * vec3(0,0,1); \n" - " vec3 camera_up_local = mv * vec3(0,1,0); \n" - " mat3 rotation_matrix = mat3(cross(camera_dir_local, camera_up_local), camera_up_local, camera_dir_local); \n" - " VERTEX = rotation_matrix * VERTEX; \n" - "} \n" - "\n" - "void fragment() { \n" - " ALBEDO = albedo.rgb; \n" - " ALPHA = albedo.a; \n" - "}"); + border_shader->set_code( + "\n" + "shader_type spatial; \n" + "render_mode unshaded, depth_test_disabled; \n" + "uniform vec4 albedo; \n" + "\n" + "mat3 orthonormalize(mat3 m) { \n" + " vec3 x = normalize(m[0]); \n" + " vec3 y = normalize(m[1] - x * dot(x, m[1])); \n" + " vec3 z = m[2] - x * dot(x, m[2]); \n" + " z = normalize(z - y * (dot(y,m[2]))); \n" + " return mat3(x,y,z); \n" + "} \n" + "\n" + "void vertex() { \n" + " mat3 mv = orthonormalize(mat3(MODELVIEW_MATRIX)); \n" + " mv = inverse(mv); \n" + " VERTEX += NORMAL*0.008; \n" + " vec3 camera_dir_local = mv * vec3(0,0,1); \n" + " vec3 camera_up_local = mv * vec3(0,1,0); \n" + " mat3 rotation_matrix = mat3(cross(camera_dir_local, camera_up_local), camera_up_local, camera_dir_local); \n" + " VERTEX = rotation_matrix * VERTEX; \n" + "} \n" + "\n" + "void fragment() { \n" + " ALBEDO = albedo.rgb; \n" + " ALPHA = albedo.a; \n" + "}"); border_mat->set_shader(border_shader); border_mat->set_shader_param("albedo", Color(0.75, 0.75, 0.75, col.a / 3.0)); @@ -5544,9 +5613,10 @@ void Node3DEditor::_init_indicators() { int arrow_sides = 4; + const real_t arrow_sides_step = Math_TAU / arrow_sides; for (int k = 0; k < 4; k++) { - Basis ma(ivec, Math_PI * 2 * float(k) / arrow_sides); - Basis mb(ivec, Math_PI * 2 * float(k + 1) / arrow_sides); + Basis ma(ivec, k * arrow_sides_step); + Basis mb(ivec, (k + 1) * arrow_sides_step); for (int j = 0; j < arrow_points - 1; j++) { Vector3 points[4] = { @@ -5677,8 +5747,11 @@ void Node3DEditor::_init_grid() { return; // Camera3D is invalid, don't draw the grid. } + bool orthogonal = camera->get_projection() == Camera3D::PROJECTION_ORTHOGONAL; + Vector<Color> grid_colors[3]; Vector<Vector3> grid_points[3]; + Vector<Vector3> grid_normals[3]; Color primary_grid_color = EditorSettings::get_singleton()->get("editors/3d/primary_grid_color"); Color secondary_grid_color = EditorSettings::get_singleton()->get("editors/3d/secondary_grid_color"); @@ -5714,10 +5787,26 @@ void Node3DEditor::_init_grid() { int b = (a + 1) % 3; int c = (a + 2) % 3; - real_t division_level = Math::log(Math::abs(camera_position[c])) / Math::log((double)primary_grid_steps) + division_level_bias; - division_level = CLAMP(division_level, division_level_min, division_level_max); - real_t division_level_floored = Math::floor(division_level); - real_t division_level_decimals = division_level - division_level_floored; + Vector3 normal; + normal[c] = 1.0; + + real_t camera_distance = Math::abs(camera_position[c]); + + if (orthogonal) { + camera_distance = camera->get_size() / 2.0; + Vector3 camera_direction = -camera->get_global_transform().get_basis().get_axis(2); + Plane grid_plane = Plane(Vector3(), normal); + Vector3 intersection; + if (grid_plane.intersects_ray(camera_position, camera_direction, &intersection)) { + camera_position = intersection; + } + } + + real_t division_level = Math::log(Math::abs(camera_distance)) / Math::log((double)primary_grid_steps) + division_level_bias; + + real_t clamped_division_level = CLAMP(division_level, division_level_min, division_level_max); + real_t division_level_floored = Math::floor(clamped_division_level); + real_t division_level_decimals = clamped_division_level - division_level_floored; real_t small_step_size = Math::pow(primary_grid_steps, division_level_floored); real_t large_step_size = small_step_size * primary_grid_steps; @@ -5729,6 +5818,15 @@ void Node3DEditor::_init_grid() { real_t bgn_b = center_b - grid_size * small_step_size; real_t end_b = center_b + grid_size * small_step_size; + real_t fade_size = Math::pow(primary_grid_steps, division_level - 1.0); + real_t min_fade_size = Math::pow(primary_grid_steps, float(division_level_min)); + real_t max_fade_size = Math::pow(primary_grid_steps, float(division_level_max)); + fade_size = CLAMP(fade_size, min_fade_size, max_fade_size); + + real_t grid_fade_size = (grid_size - primary_grid_steps) * fade_size; + grid_mat[c]->set_shader_param("grid_size", grid_fade_size); + grid_mat[c]->set_shader_param("orthogonal", orthogonal); + // In each iteration of this loop, draw one line in each direction (so two lines per loop, in each if statement). for (int i = -grid_size; i <= grid_size; i++) { Color line_color; @@ -5739,11 +5837,6 @@ void Node3DEditor::_init_grid() { line_color = secondary_grid_color; line_color.a = line_color.a * (1 - division_level_decimals); } - // Makes lines farther from the center fade out. - // Due to limitations of lines, any that come near the camera have full opacity always. - // This should eventually be replaced by some kind of "distance fade" system, outside of this function. - // But the effect is still somewhat convincing... - line_color.a *= 1 - (1 - division_level_decimals * 0.9) * (Math::abs(i / (float)grid_size)); real_t position_a = center_a + i * small_step_size; real_t position_b = center_b + i * small_step_size; @@ -5760,6 +5853,8 @@ void Node3DEditor::_init_grid() { grid_points[c].push_back(line_end); grid_colors[c].push_back(line_color); grid_colors[c].push_back(line_color); + grid_normals[c].push_back(normal); + grid_normals[c].push_back(normal); } if (!(origin_enabled && Math::is_zero_approx(position_b))) { @@ -5773,6 +5868,8 @@ void Node3DEditor::_init_grid() { grid_points[c].push_back(line_end); grid_colors[c].push_back(line_color); grid_colors[c].push_back(line_color); + grid_normals[c].push_back(normal); + grid_normals[c].push_back(normal); } } @@ -5782,8 +5879,9 @@ void Node3DEditor::_init_grid() { d.resize(RS::ARRAY_MAX); d[RenderingServer::ARRAY_VERTEX] = grid_points[c]; d[RenderingServer::ARRAY_COLOR] = grid_colors[c]; + d[RenderingServer::ARRAY_NORMAL] = grid_normals[c]; RenderingServer::get_singleton()->mesh_add_surface_from_arrays(grid[c], RenderingServer::PRIMITIVE_LINES, d); - RenderingServer::get_singleton()->mesh_surface_set_material(grid[c], 0, indicator_mat->get_rid()); + RenderingServer::get_singleton()->mesh_surface_set_material(grid[c], 0, grid_mat[c]->get_rid()); grid_instance[c] = RenderingServer::get_singleton()->instance_create2(grid[c], get_tree()->get_root()->get_world_3d()->get_scenario()); // Yes, the end of this line is supposed to be a. diff --git a/editor/plugins/node_3d_editor_plugin.h b/editor/plugins/node_3d_editor_plugin.h index d7a47fa4fa..bf478f850e 100644 --- a/editor/plugins/node_3d_editor_plugin.h +++ b/editor/plugins/node_3d_editor_plugin.h @@ -463,6 +463,8 @@ private: bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const; void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from); + void _project_settings_changed(); + protected: void _notification(int p_what); static void _bind_methods(); @@ -590,7 +592,6 @@ private: ///// ToolMode tool_mode; - bool orthogonal; RenderingServer::ScenarioDebugMode scenario_debug; @@ -623,6 +624,7 @@ private: RID cursor_mesh; RID cursor_instance; Ref<StandardMaterial3D> indicator_mat; + Ref<ShaderMaterial> grid_mat[3]; Ref<StandardMaterial3D> cursor_material; // Scene drag and drop support diff --git a/editor/plugins/packed_scene_translation_parser_plugin.cpp b/editor/plugins/packed_scene_translation_parser_plugin.cpp index 1f20a87565..0a949c8610 100644 --- a/editor/plugins/packed_scene_translation_parser_plugin.cpp +++ b/editor/plugins/packed_scene_translation_parser_plugin.cpp @@ -42,7 +42,7 @@ Error PackedSceneEditorTranslationParserPlugin::parse_file(const String &p_path, // These properties are translated with the tr() function in the C++ code when being set or updated. Error err; - RES loaded_res = ResourceLoader::load(p_path, "PackedScene", false, &err); + RES loaded_res = ResourceLoader::load(p_path, "PackedScene", ResourceFormatLoader::CACHE_MODE_REUSE, &err); if (err) { ERR_PRINT("Failed to load " + p_path); return err; diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 216c0c3bef..a6afd45686 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -894,7 +894,7 @@ void ScriptEditor::_reload_scripts() { Ref<Script> script = edited_res; if (script != nullptr) { - Ref<Script> rel_script = ResourceLoader::load(script->get_path(), script->get_class(), true); + Ref<Script> rel_script = ResourceLoader::load(script->get_path(), script->get_class(), ResourceFormatLoader::CACHE_MODE_IGNORE); ERR_CONTINUE(!rel_script.is_valid()); script->set_source_code(rel_script->get_source_code()); script->set_last_modified_time(rel_script->get_last_modified_time()); diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index 1b0e9ec781..b6df66b8af 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -214,7 +214,7 @@ void ScriptTextEditor::_load_theme_settings() { text_edit->add_theme_color_override("line_number_color", line_number_color); text_edit->add_theme_color_override("caret_color", caret_color); text_edit->add_theme_color_override("caret_background_color", caret_background_color); - text_edit->add_theme_color_override("font_color_selected", text_selected_color); + text_edit->add_theme_color_override("font_selected_color", text_selected_color); text_edit->add_theme_color_override("selection_color", selection_color); text_edit->add_theme_color_override("brace_mismatch_color", brace_mismatch_color); text_edit->add_theme_color_override("current_line_color", current_line_color); @@ -688,7 +688,7 @@ void ScriptEditor::_update_modified_scripts_for_external_editor(Ref<Script> p_fo uint64_t date = FileAccess::get_modified_time(script->get_path()); if (last_date != date) { - Ref<Script> rel_script = ResourceLoader::load(script->get_path(), script->get_class(), true); + Ref<Script> rel_script = ResourceLoader::load(script->get_path(), script->get_class(), ResourceFormatLoader::CACHE_MODE_IGNORE); ERR_CONTINUE(!rel_script.is_valid()); script->set_source_code(rel_script->get_source_code()); script->set_last_modified_time(rel_script->get_last_modified_time()); @@ -1066,7 +1066,7 @@ void ScriptTextEditor::_edit_option(int p_op) { return; } - tx->indent_left(); + tx->indent_selected_lines_left(); } break; case EDIT_INDENT_RIGHT: { Ref<Script> scr = script; @@ -1074,7 +1074,7 @@ void ScriptTextEditor::_edit_option(int p_op) { return; } - tx->indent_right(); + tx->indent_selected_lines_right(); } break; case EDIT_DELETE_LINE: { code_editor->delete_lines(); @@ -1632,16 +1632,16 @@ void ScriptTextEditor::_color_changed(const Color &p_color) { void ScriptTextEditor::_make_context_menu(bool p_selection, bool p_color, bool p_foldable, bool p_open_docs, bool p_goto_definition, Vector2 p_pos) { context_menu->clear(); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/undo"), EDIT_UNDO); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/redo"), EDIT_REDO); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_undo"), EDIT_UNDO); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_redo"), EDIT_REDO); context_menu->add_separator(); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/cut"), EDIT_CUT); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/copy"), EDIT_COPY); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/paste"), EDIT_PASTE); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_cut"), EDIT_CUT); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_copy"), EDIT_COPY); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_paste"), EDIT_PASTE); context_menu->add_separator(); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/select_all"), EDIT_SELECT_ALL); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_text_select_all"), EDIT_SELECT_ALL); context_menu->add_separator(); context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/indent_left"), EDIT_INDENT_LEFT); @@ -1743,14 +1743,14 @@ void ScriptTextEditor::_enable_code_editor() { search_menu->get_popup()->connect("id_pressed", callable_mp(this, &ScriptTextEditor::_edit_option)); edit_hb->add_child(edit_menu); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/undo"), EDIT_UNDO); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/redo"), EDIT_REDO); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_undo"), EDIT_UNDO); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_redo"), EDIT_REDO); edit_menu->get_popup()->add_separator(); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/cut"), EDIT_CUT); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/copy"), EDIT_COPY); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/paste"), EDIT_PASTE); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_cut"), EDIT_CUT); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_copy"), EDIT_COPY); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_paste"), EDIT_PASTE); edit_menu->get_popup()->add_separator(); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/select_all"), EDIT_SELECT_ALL); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_text_select_all"), EDIT_SELECT_ALL); edit_menu->get_popup()->add_separator(); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/move_up"), EDIT_MOVE_LINE_UP); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/move_down"), EDIT_MOVE_LINE_DOWN); @@ -1763,7 +1763,7 @@ void ScriptTextEditor::_enable_code_editor() { edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/unfold_all_lines"), EDIT_UNFOLD_ALL_LINES); edit_menu->get_popup()->add_separator(); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/clone_down"), EDIT_CLONE_DOWN); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/complete_symbol"), EDIT_COMPLETE); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_text_completion_query"), EDIT_COMPLETE); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/evaluate_selection"), EDIT_EVALUATE); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/trim_trailing_whitespace"), EDIT_TRIM_TRAILING_WHITESAPCE); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/convert_indent_to_spaces"), EDIT_CONVERT_INDENT_TO_SPACES); @@ -1915,12 +1915,6 @@ static ScriptEditorBase *create_editor(const RES &p_resource) { } void ScriptTextEditor::register_editor() { - ED_SHORTCUT("script_text_editor/undo", TTR("Undo"), KEY_MASK_CMD | KEY_Z); - ED_SHORTCUT("script_text_editor/redo", TTR("Redo"), KEY_MASK_CMD | KEY_Y); - ED_SHORTCUT("script_text_editor/cut", TTR("Cut"), KEY_MASK_CMD | KEY_X); - ED_SHORTCUT("script_text_editor/copy", TTR("Copy"), KEY_MASK_CMD | KEY_C); - ED_SHORTCUT("script_text_editor/paste", TTR("Paste"), KEY_MASK_CMD | KEY_V); - ED_SHORTCUT("script_text_editor/select_all", TTR("Select All"), KEY_MASK_CMD | KEY_A); ED_SHORTCUT("script_text_editor/move_up", TTR("Move Up"), KEY_MASK_ALT | KEY_UP); ED_SHORTCUT("script_text_editor/move_down", TTR("Move Down"), KEY_MASK_ALT | KEY_DOWN); ED_SHORTCUT("script_text_editor/delete_line", TTR("Delete Line"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_K); @@ -1936,10 +1930,8 @@ void ScriptTextEditor::register_editor() { ED_SHORTCUT("script_text_editor/unfold_all_lines", TTR("Unfold All Lines"), 0); #ifdef OSX_ENABLED ED_SHORTCUT("script_text_editor/clone_down", TTR("Clone Down"), KEY_MASK_SHIFT | KEY_MASK_CMD | KEY_C); - ED_SHORTCUT("script_text_editor/complete_symbol", TTR("Complete Symbol"), KEY_MASK_CTRL | KEY_SPACE); #else ED_SHORTCUT("script_text_editor/clone_down", TTR("Clone Down"), KEY_MASK_CMD | KEY_D); - ED_SHORTCUT("script_text_editor/complete_symbol", TTR("Complete Symbol"), KEY_MASK_CMD | KEY_SPACE); #endif ED_SHORTCUT("script_text_editor/evaluate_selection", TTR("Evaluate Selection"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_E); ED_SHORTCUT("script_text_editor/trim_trailing_whitespace", TTR("Trim Trailing Whitespace"), KEY_MASK_CMD | KEY_MASK_ALT | KEY_T); diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp index d6a816f606..c8a46715ad 100644 --- a/editor/plugins/shader_editor_plugin.cpp +++ b/editor/plugins/shader_editor_plugin.cpp @@ -117,7 +117,7 @@ void ShaderTextEditor::_load_theme_settings() { get_text_editor()->add_theme_color_override("line_number_color", line_number_color); get_text_editor()->add_theme_color_override("caret_color", caret_color); get_text_editor()->add_theme_color_override("caret_background_color", caret_background_color); - get_text_editor()->add_theme_color_override("font_color_selected", text_selected_color); + get_text_editor()->add_theme_color_override("font_selected_color", text_selected_color); get_text_editor()->add_theme_color_override("selection_color", selection_color); get_text_editor()->add_theme_color_override("brace_mismatch_color", brace_mismatch_color); get_text_editor()->add_theme_color_override("current_line_color", current_line_color); @@ -282,7 +282,7 @@ void ShaderEditor::_menu_option(int p_option) { } CodeEdit *tx = shader_editor->get_text_editor(); - tx->indent_left(); + tx->indent_selected_lines_left(); } break; case EDIT_INDENT_RIGHT: { @@ -291,7 +291,7 @@ void ShaderEditor::_menu_option(int p_option) { } CodeEdit *tx = shader_editor->get_text_editor(); - tx->indent_right(); + tx->indent_selected_lines_right(); } break; case EDIT_DELETE_LINE: { @@ -405,7 +405,7 @@ void ShaderEditor::_check_for_external_edit() { } void ShaderEditor::_reload_shader_from_disk() { - Ref<Shader> rel_shader = ResourceLoader::load(shader->get_path(), shader->get_class(), true); + Ref<Shader> rel_shader = ResourceLoader::load(shader->get_path(), shader->get_class(), ResourceFormatLoader::CACHE_MODE_IGNORE); ERR_FAIL_COND(!rel_shader.is_valid()); shader->set_code(rel_shader->get_code()); @@ -533,15 +533,15 @@ void ShaderEditor::_bookmark_item_pressed(int p_idx) { void ShaderEditor::_make_context_menu(bool p_selection, Vector2 p_position) { context_menu->clear(); if (p_selection) { - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/cut"), EDIT_CUT); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/copy"), EDIT_COPY); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_cut"), EDIT_CUT); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_copy"), EDIT_COPY); } - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/paste"), EDIT_PASTE); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_paste"), EDIT_PASTE); context_menu->add_separator(); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/select_all"), EDIT_SELECT_ALL); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/undo"), EDIT_UNDO); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/redo"), EDIT_REDO); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_text_select_all"), EDIT_SELECT_ALL); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_undo"), EDIT_UNDO); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_redo"), EDIT_REDO); context_menu->add_separator(); context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/indent_left"), EDIT_INDENT_LEFT); @@ -585,14 +585,14 @@ ShaderEditor::ShaderEditor(EditorNode *p_node) { edit_menu->set_text(TTR("Edit")); edit_menu->set_switch_on_hover(true); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/undo"), EDIT_UNDO); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/redo"), EDIT_REDO); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_undo"), EDIT_UNDO); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_redo"), EDIT_REDO); edit_menu->get_popup()->add_separator(); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/cut"), EDIT_CUT); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/copy"), EDIT_COPY); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/paste"), EDIT_PASTE); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_cut"), EDIT_CUT); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_copy"), EDIT_COPY); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_paste"), EDIT_PASTE); edit_menu->get_popup()->add_separator(); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/select_all"), EDIT_SELECT_ALL); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_text_select_all"), EDIT_SELECT_ALL); edit_menu->get_popup()->add_separator(); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/move_up"), EDIT_MOVE_LINE_UP); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/move_down"), EDIT_MOVE_LINE_DOWN); @@ -602,7 +602,7 @@ ShaderEditor::ShaderEditor(EditorNode *p_node) { edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/toggle_comment"), EDIT_TOGGLE_COMMENT); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/clone_down"), EDIT_CLONE_DOWN); edit_menu->get_popup()->add_separator(); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/complete_symbol"), EDIT_COMPLETE); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_text_completion_query"), EDIT_COMPLETE); edit_menu->get_popup()->connect("id_pressed", callable_mp(this, &ShaderEditor::_menu_option)); search_menu = memnew(MenuButton); diff --git a/editor/plugins/skeleton_3d_editor_plugin.cpp b/editor/plugins/skeleton_3d_editor_plugin.cpp index ea58a4535b..121ccfa417 100644 --- a/editor/plugins/skeleton_3d_editor_plugin.cpp +++ b/editor/plugins/skeleton_3d_editor_plugin.cpp @@ -383,8 +383,12 @@ PhysicalBone3D *Skeleton3DEditor::create_physical_bone(int bone_id, int bone_chi CollisionShape3D *bone_shape = memnew(CollisionShape3D); bone_shape->set_shape(bone_shape_capsule); + Transform capsule_transform; + capsule_transform.basis = Basis(Vector3(1, 0, 0), Vector3(0, 0, 1), Vector3(0, -1, 0)); + bone_shape->set_transform(capsule_transform); + Transform body_transform; - body_transform.set_look_at(Vector3(0, 0, 0), child_rest.origin, Vector3(0, 1, 0)); + body_transform.set_look_at(Vector3(0, 0, 0), child_rest.origin); body_transform.origin = body_transform.basis.xform(Vector3(0, 0, -half_height)); Transform joint_transform; diff --git a/editor/plugins/sprite_2d_editor_plugin.cpp b/editor/plugins/sprite_2d_editor_plugin.cpp index 03ddaa2c74..4949d2b9b7 100644 --- a/editor/plugins/sprite_2d_editor_plugin.cpp +++ b/editor/plugins/sprite_2d_editor_plugin.cpp @@ -173,6 +173,11 @@ void Sprite2DEditor::_update_mesh_data() { Ref<Image> image = texture->get_data(); ERR_FAIL_COND(image.is_null()); + + if (image->is_compressed()) { + image->decompress(); + } + Rect2 rect; if (node->is_region()) { rect = node->get_region_rect(); diff --git a/editor/plugins/text_editor.cpp b/editor/plugins/text_editor.cpp index 3628a2e4d1..b88f1c91e6 100644 --- a/editor/plugins/text_editor.cpp +++ b/editor/plugins/text_editor.cpp @@ -96,7 +96,7 @@ void TextEditor::_load_theme_settings() { text_edit->add_theme_color_override("line_number_color", line_number_color); text_edit->add_theme_color_override("caret_color", caret_color); text_edit->add_theme_color_override("caret_background_color", caret_background_color); - text_edit->add_theme_color_override("font_color_selected", text_selected_color); + text_edit->add_theme_color_override("font_selected_color", text_selected_color); text_edit->add_theme_color_override("selection_color", selection_color); text_edit->add_theme_color_override("brace_mismatch_color", brace_mismatch_color); text_edit->add_theme_color_override("current_line_color", current_line_color); @@ -363,10 +363,10 @@ void TextEditor::_edit_option(int p_op) { code_editor->move_lines_down(); } break; case EDIT_INDENT_LEFT: { - tx->indent_left(); + tx->indent_selected_lines_left(); } break; case EDIT_INDENT_RIGHT: { - tx->indent_right(); + tx->indent_selected_lines_right(); } break; case EDIT_DELETE_LINE: { code_editor->delete_lines(); @@ -514,15 +514,15 @@ void TextEditor::_text_edit_gui_input(const Ref<InputEvent> &ev) { void TextEditor::_make_context_menu(bool p_selection, bool p_can_fold, bool p_is_folded, Vector2 p_position) { context_menu->clear(); if (p_selection) { - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/cut"), EDIT_CUT); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/copy"), EDIT_COPY); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_cut"), EDIT_CUT); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_copy"), EDIT_COPY); } - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/paste"), EDIT_PASTE); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_paste"), EDIT_PASTE); context_menu->add_separator(); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/select_all"), EDIT_SELECT_ALL); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/undo"), EDIT_UNDO); - context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/redo"), EDIT_REDO); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_text_select_all"), EDIT_SELECT_ALL); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_undo"), EDIT_UNDO); + context_menu->add_shortcut(ED_GET_SHORTCUT("ui_redo"), EDIT_REDO); context_menu->add_separator(); context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/indent_left"), EDIT_INDENT_LEFT); context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/indent_right"), EDIT_INDENT_RIGHT); @@ -584,14 +584,14 @@ TextEditor::TextEditor() { edit_menu->set_switch_on_hover(true); edit_menu->get_popup()->connect("id_pressed", callable_mp(this, &TextEditor::_edit_option)); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/undo"), EDIT_UNDO); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/redo"), EDIT_REDO); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_undo"), EDIT_UNDO); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("un_redo"), EDIT_REDO); edit_menu->get_popup()->add_separator(); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/cut"), EDIT_CUT); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/copy"), EDIT_COPY); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/paste"), EDIT_PASTE); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_cut"), EDIT_CUT); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_copy"), EDIT_COPY); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_paste"), EDIT_PASTE); edit_menu->get_popup()->add_separator(); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/select_all"), EDIT_SELECT_ALL); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("ui_text_select_all"), EDIT_SELECT_ALL); edit_menu->get_popup()->add_separator(); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/move_up"), EDIT_MOVE_LINE_UP); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/move_down"), EDIT_MOVE_LINE_DOWN); diff --git a/editor/plugins/texture_3d_editor_plugin.cpp b/editor/plugins/texture_3d_editor_plugin.cpp index 099257daa1..36297c8a4a 100644 --- a/editor/plugins/texture_3d_editor_plugin.cpp +++ b/editor/plugins/texture_3d_editor_plugin.cpp @@ -57,7 +57,7 @@ void Texture3DEditor::_notification(int p_what) { } } -void Texture3DEditor::_changed_callback(Object *p_changed, const char *p_prop) { +void Texture3DEditor::_texture_changed() { if (!is_visible()) { return; } @@ -118,7 +118,7 @@ void Texture3DEditor::_texture_rect_update_area() { void Texture3DEditor::edit(Ref<Texture3D> p_texture) { if (!texture.is_null()) { - texture->remove_change_receptor(this); + texture->disconnect("changed", callable_mp(this, &Texture3DEditor::_texture_changed)); } texture = p_texture; @@ -128,7 +128,7 @@ void Texture3DEditor::edit(Ref<Texture3D> p_texture) { _make_shaders(); } - texture->add_change_receptor(this); + texture->connect("changed", callable_mp(this, &Texture3DEditor::_texture_changed)); update(); texture_rect->set_material(material); setting = true; @@ -173,8 +173,7 @@ Texture3DEditor::Texture3DEditor() { info->set_h_grow_direction(GROW_DIRECTION_BEGIN); info->set_v_grow_direction(GROW_DIRECTION_BEGIN); info->add_theme_color_override("font_color", Color(1, 1, 1, 1)); - info->add_theme_color_override("font_color_shadow", Color(0, 0, 0, 0.5)); - info->add_theme_color_override("font_color_shadow", Color(0, 0, 0, 0.5)); + info->add_theme_color_override("font_shadow_color", Color(0, 0, 0, 0.5)); info->add_theme_constant_override("shadow_as_outline", 1); info->add_theme_constant_override("shadow_offset_x", 2); info->add_theme_constant_override("shadow_offset_y", 2); @@ -185,7 +184,7 @@ Texture3DEditor::Texture3DEditor() { Texture3DEditor::~Texture3DEditor() { if (!texture.is_null()) { - texture->remove_change_receptor(this); + texture->disconnect("changed", callable_mp(this, &Texture3DEditor::_texture_changed)); } } diff --git a/editor/plugins/texture_3d_editor_plugin.h b/editor/plugins/texture_3d_editor_plugin.h index 944abf16d9..9d90d3653f 100644 --- a/editor/plugins/texture_3d_editor_plugin.h +++ b/editor/plugins/texture_3d_editor_plugin.h @@ -61,10 +61,12 @@ class Texture3DEditor : public Control { void _texture_rect_update_area(); void _texture_rect_draw(); + void _texture_changed(); + protected: void _notification(int p_what); void _gui_input(Ref<InputEvent> p_event); - void _changed_callback(Object *p_changed, const char *p_prop) override; + static void _bind_methods(); public: diff --git a/editor/plugins/texture_editor_plugin.cpp b/editor/plugins/texture_editor_plugin.cpp index 1d3fd668c6..253f8878d2 100644 --- a/editor/plugins/texture_editor_plugin.cpp +++ b/editor/plugins/texture_editor_plugin.cpp @@ -104,7 +104,7 @@ void TextureEditor::_notification(int p_what) { } } -void TextureEditor::_changed_callback(Object *p_changed, const char *p_prop) { +void TextureEditor::_texture_changed() { if (!is_visible()) { return; } @@ -113,13 +113,13 @@ void TextureEditor::_changed_callback(Object *p_changed, const char *p_prop) { void TextureEditor::edit(Ref<Texture2D> p_texture) { if (!texture.is_null()) { - texture->remove_change_receptor(this); + texture->disconnect("changed", callable_mp(this, &TextureEditor::_texture_changed)); } texture = p_texture; if (!texture.is_null()) { - texture->add_change_receptor(this); + texture->connect("changed", callable_mp(this, &TextureEditor::_texture_changed)); update(); } else { hide(); @@ -137,7 +137,7 @@ TextureEditor::TextureEditor() { TextureEditor::~TextureEditor() { if (!texture.is_null()) { - texture->remove_change_receptor(this); + texture->disconnect("changed", callable_mp(this, &TextureEditor::_texture_changed)); } } diff --git a/editor/plugins/texture_editor_plugin.h b/editor/plugins/texture_editor_plugin.h index 621d737028..ebe8882194 100644 --- a/editor/plugins/texture_editor_plugin.h +++ b/editor/plugins/texture_editor_plugin.h @@ -43,7 +43,7 @@ class TextureEditor : public Control { protected: void _notification(int p_what); void _gui_input(Ref<InputEvent> p_event); - void _changed_callback(Object *p_changed, const char *p_prop) override; + void _texture_changed(); static void _bind_methods(); public: diff --git a/editor/plugins/texture_layered_editor_plugin.cpp b/editor/plugins/texture_layered_editor_plugin.cpp index 3b95ed813f..254ad3d56e 100644 --- a/editor/plugins/texture_layered_editor_plugin.cpp +++ b/editor/plugins/texture_layered_editor_plugin.cpp @@ -63,7 +63,7 @@ void TextureLayeredEditor::_notification(int p_what) { } } -void TextureLayeredEditor::_changed_callback(Object *p_changed, const char *p_prop) { +void TextureLayeredEditor::_texture_changed() { if (!is_visible()) { return; } @@ -173,7 +173,7 @@ void TextureLayeredEditor::_texture_rect_update_area() { void TextureLayeredEditor::edit(Ref<TextureLayered> p_texture) { if (!texture.is_null()) { - texture->remove_change_receptor(this); + texture->disconnect("changed", callable_mp(this, &TextureLayeredEditor::_texture_changed)); } texture = p_texture; @@ -183,7 +183,7 @@ void TextureLayeredEditor::edit(Ref<TextureLayered> p_texture) { _make_shaders(); } - texture->add_change_receptor(this); + texture->connect("changed", callable_mp(this, &TextureLayeredEditor::_texture_changed)); update(); texture_rect->set_material(materials[texture->get_layered_type()]); setting = true; @@ -238,8 +238,7 @@ TextureLayeredEditor::TextureLayeredEditor() { info->set_h_grow_direction(GROW_DIRECTION_BEGIN); info->set_v_grow_direction(GROW_DIRECTION_BEGIN); info->add_theme_color_override("font_color", Color(1, 1, 1, 1)); - info->add_theme_color_override("font_color_shadow", Color(0, 0, 0, 0.5)); - info->add_theme_color_override("font_color_shadow", Color(0, 0, 0, 0.5)); + info->add_theme_color_override("font_shadow_color", Color(0, 0, 0, 0.5)); info->add_theme_constant_override("shadow_as_outline", 1); info->add_theme_constant_override("shadow_offset_x", 2); info->add_theme_constant_override("shadow_offset_y", 2); @@ -249,9 +248,6 @@ TextureLayeredEditor::TextureLayeredEditor() { } TextureLayeredEditor::~TextureLayeredEditor() { - if (!texture.is_null()) { - texture->remove_change_receptor(this); - } } // diff --git a/editor/plugins/texture_layered_editor_plugin.h b/editor/plugins/texture_layered_editor_plugin.h index 4bcc8fa1f1..c4ced62fb9 100644 --- a/editor/plugins/texture_layered_editor_plugin.h +++ b/editor/plugins/texture_layered_editor_plugin.h @@ -63,10 +63,11 @@ class TextureLayeredEditor : public Control { void _texture_rect_update_area(); void _texture_rect_draw(); + void _texture_changed(); + protected: void _notification(int p_what); void _gui_input(Ref<InputEvent> p_event); - void _changed_callback(Object *p_changed, const char *p_prop) override; static void _bind_methods(); public: diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp index 61e0cc281d..63255e6547 100644 --- a/editor/plugins/texture_region_editor_plugin.cpp +++ b/editor/plugins/texture_region_editor_plugin.cpp @@ -480,20 +480,41 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) { Vector2 dragged(mm->get_relative().x / draw_zoom, mm->get_relative().y / draw_zoom); hscroll->set_value(hscroll->get_value() - dragged.x); vscroll->set_value(vscroll->get_value() - dragged.y); - } else if (drag) { if (edited_margin >= 0) { float new_margin = 0; - if (edited_margin == 0) { - new_margin = prev_margin + (mm->get_position().y - drag_from.y) / draw_zoom; - } else if (edited_margin == 1) { - new_margin = prev_margin - (mm->get_position().y - drag_from.y) / draw_zoom; - } else if (edited_margin == 2) { - new_margin = prev_margin + (mm->get_position().x - drag_from.x) / draw_zoom; - } else if (edited_margin == 3) { - new_margin = prev_margin - (mm->get_position().x - drag_from.x) / draw_zoom; + + if (snap_mode != SNAP_GRID) { + if (edited_margin == 0) { + new_margin = prev_margin + (mm->get_position().y - drag_from.y) / draw_zoom; + } else if (edited_margin == 1) { + new_margin = prev_margin - (mm->get_position().y - drag_from.y) / draw_zoom; + } else if (edited_margin == 2) { + new_margin = prev_margin + (mm->get_position().x - drag_from.x) / draw_zoom; + } else if (edited_margin == 3) { + new_margin = prev_margin - (mm->get_position().x - drag_from.x) / draw_zoom; + } else { + ERR_PRINT("Unexpected edited_margin"); + } + + if (snap_mode == SNAP_PIXEL) { + new_margin = Math::round(new_margin); + } } else { - ERR_PRINT("Unexpected edited_margin"); + Vector2 pos_snapped = snap_point(mtx.affine_inverse().xform(mm->get_position())); + Rect2 rect_rounded = Rect2(rect.position.round(), rect.size.round()); + + if (edited_margin == 0) { + new_margin = pos_snapped.y - rect_rounded.position.y; + } else if (edited_margin == 1) { + new_margin = rect_rounded.size.y + rect_rounded.position.y - pos_snapped.y; + } else if (edited_margin == 2) { + new_margin = pos_snapped.x - rect_rounded.position.x; + } else if (edited_margin == 3) { + new_margin = rect_rounded.size.x + rect_rounded.position.x - pos_snapped.x; + } else { + ERR_PRINT("Unexpected edited_margin"); + } } if (new_margin < 0) { @@ -842,19 +863,19 @@ Sprite2D *TextureRegionEditor::get_sprite() { void TextureRegionEditor::edit(Object *p_obj) { if (node_sprite) { - node_sprite->remove_change_receptor(this); + node_sprite->disconnect("changed", callable_mp(this, &TextureRegionEditor::_texture_changed)); } if (node_sprite_3d) { - node_sprite_3d->remove_change_receptor(this); + node_sprite_3d->disconnect("changed", callable_mp(this, &TextureRegionEditor::_texture_changed)); } if (node_ninepatch) { - node_ninepatch->remove_change_receptor(this); + node_ninepatch->disconnect("changed", callable_mp(this, &TextureRegionEditor::_texture_changed)); } if (obj_styleBox.is_valid()) { - obj_styleBox->remove_change_receptor(this); + obj_styleBox->disconnect("changed", callable_mp(this, &TextureRegionEditor::_texture_changed)); } if (atlas_tex.is_valid()) { - atlas_tex->remove_change_receptor(this); + atlas_tex->disconnect("changed", callable_mp(this, &TextureRegionEditor::_texture_changed)); } if (p_obj) { node_sprite = Object::cast_to<Sprite2D>(p_obj); @@ -866,7 +887,7 @@ void TextureRegionEditor::edit(Object *p_obj) { if (Object::cast_to<AtlasTexture>(p_obj)) { atlas_tex = Ref<AtlasTexture>(Object::cast_to<AtlasTexture>(p_obj)); } - p_obj->add_change_receptor(this); + p_obj->connect("changed", callable_mp(this, &TextureRegionEditor::_texture_changed)); _edit_region(); } else { node_sprite = nullptr; @@ -884,14 +905,11 @@ void TextureRegionEditor::edit(Object *p_obj) { } } -void TextureRegionEditor::_changed_callback(Object *p_changed, const char *p_prop) { +void TextureRegionEditor::_texture_changed() { if (!is_visible()) { return; } - String prop = p_prop; - if (prop == "atlas" || prop == "texture" || prop == "region") { - _edit_region(); - } + _edit_region(); } void TextureRegionEditor::_edit_region() { diff --git a/editor/plugins/texture_region_editor_plugin.h b/editor/plugins/texture_region_editor_plugin.h index 56ccefb025..d3db0a08a9 100644 --- a/editor/plugins/texture_region_editor_plugin.h +++ b/editor/plugins/texture_region_editor_plugin.h @@ -117,6 +117,8 @@ class TextureRegionEditor : public VBoxContainer { void _update_rect(); void _update_autoslice(); + void _texture_changed(); + protected: void _notification(int p_what); void _node_removed(Object *p_obj); @@ -124,8 +126,6 @@ protected: Vector2 snap_point(Vector2 p_target) const; - virtual void _changed_callback(Object *p_changed, const char *p_prop) override; - public: void _edit_region(); void _region_draw(); diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp index deeab2fbc7..c628fe8367 100644 --- a/editor/plugins/tile_set_editor_plugin.cpp +++ b/editor/plugins/tile_set_editor_plugin.cpp @@ -39,7 +39,6 @@ void TileSetEditor::edit(const Ref<TileSet> &p_tileset) { tileset = p_tileset; - tileset->add_change_receptor(this); texture_list->clear(); texture_map.clear(); @@ -1859,7 +1858,7 @@ void TileSetEditor::_on_tool_clicked(int p_tool) { _update_toggle_shape_button(); workspace->update(); workspace_container->update(); - helper->_change_notify(""); + helper->notify_property_list_changed(); } } else if (p_tool == SELECT_NEXT) { _select_next_shape(); @@ -2173,7 +2172,7 @@ Array TileSetEditor::_get_tiles_in_current_texture(bool sorted) { } } if (sorted) { - a.sort_custom(this, "_sort_tiles"); + a.sort_custom(callable_mp(this, &TileSetEditor::_sort_tiles)); } return a; } @@ -2287,7 +2286,7 @@ void TileSetEditor::_select_next_shape() { } workspace->update(); workspace_container->update(); - helper->_change_notify(""); + helper->notify_property_list_changed(); } } @@ -2349,7 +2348,7 @@ void TileSetEditor::_select_previous_shape() { } workspace->update(); workspace_container->update(); - helper->_change_notify(""); + helper->notify_property_list_changed(); } } @@ -3012,7 +3011,7 @@ void TileSetEditor::close_shape(const Vector2 &shape_anchor) { undo_redo->add_undo_method(this, "_select_edited_shape_coord"); undo_redo->commit_action(); } - tileset->_change_notify(""); + tileset->notify_property_list_changed(); } void TileSetEditor::select_coord(const Vector2 &coord) { @@ -3115,7 +3114,7 @@ void TileSetEditor::select_coord(const Vector2 &coord) { } workspace->update(); workspace_container->update(); - helper->_change_notify(""); + helper->notify_property_list_changed(); } Vector2 TileSetEditor::snap_point(const Vector2 &point) { @@ -3225,7 +3224,7 @@ void TileSetEditor::update_texture_list() { workspace_overlay->update(); } update_texture_list_icon(); - helper->_change_notify(""); + helper->notify_property_list_changed(); } void TileSetEditor::update_texture_list_icon() { @@ -3389,7 +3388,7 @@ int TileSetEditor::get_current_tile() const { void TileSetEditor::set_current_tile(int p_id) { if (current_tile != p_id) { current_tile = p_id; - helper->_change_notify(""); + helper->notify_property_list_changed(); select_coord(Vector2(0, 0)); update_workspace_tile_mode(); if (p_id == -1) { @@ -3414,7 +3413,7 @@ void TilesetEditorContext::set_tileset(const Ref<TileSet> &p_tileset) { void TilesetEditorContext::set_snap_options_visible(bool p_visible) { snap_options_visible = p_visible; - _change_notify(""); + notify_property_list_changed(); } bool TilesetEditorContext::_set(const StringName &p_name, const Variant &p_value) { @@ -3450,7 +3449,7 @@ bool TilesetEditorContext::_set(const StringName &p_name, const Variant &p_value tileset->set(String::num(tileset_editor->get_current_tile(), 0) + "/" + name2, p_value, &v); } if (v) { - tileset->_change_notify(""); + tileset->notify_property_list_changed(); tileset_editor->workspace->update(); tileset_editor->workspace_overlay->update(); } diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index 443e867a9f..a63e641c2b 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -619,7 +619,7 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) { if (vsnode->get_input_port_default_hint(i) != "" && !port_left_used) { Label *hint_label = memnew(Label); hint_label->set_text("[" + vsnode->get_input_port_default_hint(i) + "]"); - hint_label->add_theme_color_override("font_color", VisualShaderEditor::get_singleton()->get_theme_color("font_color_readonly", "TextEdit")); + hint_label->add_theme_color_override("font_color", VisualShaderEditor::get_singleton()->get_theme_color("font_readonly_color", "TextEdit")); hint_label->add_theme_style_override("normal", label_style); hb->add_child(hint_label); } @@ -1023,7 +1023,7 @@ void VisualShaderEditor::_update_options_menu() { Color unsupported_color = get_theme_color("error_color", "Editor"); Color supported_color = get_theme_color("warning_color", "Editor"); - static bool low_driver = ProjectSettings::get_singleton()->get("rendering/quality/driver/driver_name") == "GLES2"; + static bool low_driver = ProjectSettings::get_singleton()->get("rendering/driver/driver_name") == "GLES2"; Map<String, TreeItem *> folders; @@ -1282,6 +1282,9 @@ void VisualShaderEditor::_update_graph() { graph->connect_node(itos(from), from_idx, itos(to), to_idx); } + + float graph_minimap_opacity = EditorSettings::get_singleton()->get("editors/visual_editors/minimap_opacity"); + graph->set_minimap_opacity(graph_minimap_opacity); } VisualShader::Type VisualShaderEditor::get_current_shader_type() const { @@ -1734,114 +1737,220 @@ void VisualShaderEditor::_add_curve_node(const String &p_path) { curve->set_texture(ResourceLoader::load(p_path)); } -VisualShaderNode *VisualShaderEditor::_add_node(int p_idx, int p_op_idx) { - ERR_FAIL_INDEX_V(p_idx, add_options.size(), nullptr); +void VisualShaderEditor::_setup_node(VisualShaderNode *p_node, int p_op_idx) { + // FLOAT_OP + { + VisualShaderNodeFloatOp *floatOp = Object::cast_to<VisualShaderNodeFloatOp>(p_node); - Ref<VisualShaderNode> vsnode; + if (floatOp) { + floatOp->set_operator((VisualShaderNodeFloatOp::Operator)p_op_idx); + return; + } + } - bool is_custom = add_options[p_idx].is_custom; + // FLOAT_FUNC + { + VisualShaderNodeFloatFunc *floatFunc = Object::cast_to<VisualShaderNodeFloatFunc>(p_node); - if (!is_custom && add_options[p_idx].type != String()) { - VisualShaderNode *vsn = Object::cast_to<VisualShaderNode>(ClassDB::instance(add_options[p_idx].type)); - ERR_FAIL_COND_V(!vsn, nullptr); + if (floatFunc) { + floatFunc->set_function((VisualShaderNodeFloatFunc::Function)p_op_idx); + return; + } + } - VisualShaderNodeFloatConstant *constant = Object::cast_to<VisualShaderNodeFloatConstant>(vsn); + // VECTOR_OP + { + VisualShaderNodeVectorOp *vecOp = Object::cast_to<VisualShaderNodeVectorOp>(p_node); - if (constant) { - if ((int)add_options[p_idx].value != -1) { - constant->set_constant(add_options[p_idx].value); - } + if (vecOp) { + vecOp->set_operator((VisualShaderNodeVectorOp::Operator)p_op_idx); + return; } + } - if (p_op_idx != -1) { - VisualShaderNodeInput *input = Object::cast_to<VisualShaderNodeInput>(vsn); + // VECTOR_FUNC + { + VisualShaderNodeVectorFunc *vecFunc = Object::cast_to<VisualShaderNodeVectorFunc>(p_node); - if (input) { - input->set_input_name(add_options[p_idx].sub_func_str); - } + if (vecFunc) { + vecFunc->set_function((VisualShaderNodeVectorFunc::Function)p_op_idx); + return; + } + } - VisualShaderNodeIs *is = Object::cast_to<VisualShaderNodeIs>(vsn); + // COLOR_OP + { + VisualShaderNodeColorOp *colorOp = Object::cast_to<VisualShaderNodeColorOp>(p_node); - if (is) { - is->set_function((VisualShaderNodeIs::Function)p_op_idx); - } + if (colorOp) { + colorOp->set_operator((VisualShaderNodeColorOp::Operator)p_op_idx); + return; + } + } - VisualShaderNodeCompare *cmp = Object::cast_to<VisualShaderNodeCompare>(vsn); + // COLOR_FUNC + { + VisualShaderNodeColorFunc *colorFunc = Object::cast_to<VisualShaderNodeColorFunc>(p_node); - if (cmp) { - cmp->set_function((VisualShaderNodeCompare::Function)p_op_idx); - } + if (colorFunc) { + colorFunc->set_function((VisualShaderNodeColorFunc::Function)p_op_idx); + return; + } + } - VisualShaderNodeColorOp *colorOp = Object::cast_to<VisualShaderNodeColorOp>(vsn); + // INT_OP + { + VisualShaderNodeIntOp *intOp = Object::cast_to<VisualShaderNodeIntOp>(p_node); - if (colorOp) { - colorOp->set_operator((VisualShaderNodeColorOp::Operator)p_op_idx); - } + if (intOp) { + intOp->set_operator((VisualShaderNodeIntOp::Operator)p_op_idx); + return; + } + } - VisualShaderNodeColorFunc *colorFunc = Object::cast_to<VisualShaderNodeColorFunc>(vsn); + // INT_FUNC + { + VisualShaderNodeIntFunc *intFunc = Object::cast_to<VisualShaderNodeIntFunc>(p_node); - if (colorFunc) { - colorFunc->set_function((VisualShaderNodeColorFunc::Function)p_op_idx); - } + if (intFunc) { + intFunc->set_function((VisualShaderNodeIntFunc::Function)p_op_idx); + return; + } + } - VisualShaderNodeFloatOp *floatOp = Object::cast_to<VisualShaderNodeFloatOp>(vsn); + // TRANSFORM_FUNC + { + VisualShaderNodeTransformFunc *matFunc = Object::cast_to<VisualShaderNodeTransformFunc>(p_node); - if (floatOp) { - floatOp->set_operator((VisualShaderNodeFloatOp::Operator)p_op_idx); - } + if (matFunc) { + matFunc->set_function((VisualShaderNodeTransformFunc::Function)p_op_idx); + return; + } + } - VisualShaderNodeIntOp *intOp = Object::cast_to<VisualShaderNodeIntOp>(vsn); + // IS + { + VisualShaderNodeIs *is = Object::cast_to<VisualShaderNodeIs>(p_node); - if (intOp) { - intOp->set_operator((VisualShaderNodeIntOp::Operator)p_op_idx); - } + if (is) { + is->set_function((VisualShaderNodeIs::Function)p_op_idx); + return; + } + } - VisualShaderNodeFloatFunc *floatFunc = Object::cast_to<VisualShaderNodeFloatFunc>(vsn); + // COMPARE + { + VisualShaderNodeCompare *cmp = Object::cast_to<VisualShaderNodeCompare>(p_node); - if (floatFunc) { - floatFunc->set_function((VisualShaderNodeFloatFunc::Function)p_op_idx); - } + if (cmp) { + cmp->set_function((VisualShaderNodeCompare::Function)p_op_idx); + return; + } + } - VisualShaderNodeIntFunc *intFunc = Object::cast_to<VisualShaderNodeIntFunc>(vsn); + // DERIVATIVE + { + VisualShaderNodeScalarDerivativeFunc *sderFunc = Object::cast_to<VisualShaderNodeScalarDerivativeFunc>(p_node); - if (intFunc) { - intFunc->set_function((VisualShaderNodeIntFunc::Function)p_op_idx); - } + if (sderFunc) { + sderFunc->set_function((VisualShaderNodeScalarDerivativeFunc::Function)p_op_idx); + return; + } - VisualShaderNodeVectorOp *vecOp = Object::cast_to<VisualShaderNodeVectorOp>(vsn); + VisualShaderNodeVectorDerivativeFunc *vderFunc = Object::cast_to<VisualShaderNodeVectorDerivativeFunc>(p_node); - if (vecOp) { - vecOp->set_operator((VisualShaderNodeVectorOp::Operator)p_op_idx); - } + if (vderFunc) { + vderFunc->set_function((VisualShaderNodeVectorDerivativeFunc::Function)p_op_idx); + return; + } + } - VisualShaderNodeVectorFunc *vecFunc = Object::cast_to<VisualShaderNodeVectorFunc>(vsn); + // MIX + { + VisualShaderNodeMix *mix = Object::cast_to<VisualShaderNodeMix>(p_node); - if (vecFunc) { - vecFunc->set_function((VisualShaderNodeVectorFunc::Function)p_op_idx); - } + if (mix) { + mix->set_op_type((VisualShaderNodeMix::OpType)p_op_idx); + return; + } + } - VisualShaderNodeTransformFunc *matFunc = Object::cast_to<VisualShaderNodeTransformFunc>(vsn); + // CLAMP + { + VisualShaderNodeClamp *clampFunc = Object::cast_to<VisualShaderNodeClamp>(p_node); - if (matFunc) { - matFunc->set_function((VisualShaderNodeTransformFunc::Function)p_op_idx); - } + if (clampFunc) { + clampFunc->set_op_type((VisualShaderNodeClamp::OpType)p_op_idx); + return; + } + } - VisualShaderNodeScalarDerivativeFunc *sderFunc = Object::cast_to<VisualShaderNodeScalarDerivativeFunc>(vsn); + // SWITCH + { + VisualShaderNodeSwitch *switchFunc = Object::cast_to<VisualShaderNodeSwitch>(p_node); - if (sderFunc) { - sderFunc->set_function((VisualShaderNodeScalarDerivativeFunc::Function)p_op_idx); - } + if (switchFunc) { + switchFunc->set_op_type((VisualShaderNodeSwitch::OpType)p_op_idx); + return; + } + } - VisualShaderNodeVectorDerivativeFunc *vderFunc = Object::cast_to<VisualShaderNodeVectorDerivativeFunc>(vsn); + // SMOOTHSTEP + { + VisualShaderNodeSmoothStep *smoothStepFunc = Object::cast_to<VisualShaderNodeSmoothStep>(p_node); - if (vderFunc) { - vderFunc->set_function((VisualShaderNodeVectorDerivativeFunc::Function)p_op_idx); - } + if (smoothStepFunc) { + smoothStepFunc->set_op_type((VisualShaderNodeSmoothStep::OpType)p_op_idx); + return; + } + } + + // STEP + { + VisualShaderNodeStep *stepFunc = Object::cast_to<VisualShaderNodeStep>(p_node); + + if (stepFunc) { + stepFunc->set_op_type((VisualShaderNodeStep::OpType)p_op_idx); + return; + } + } + + // MULTIPLY_ADD + { + VisualShaderNodeMultiplyAdd *fmaFunc = Object::cast_to<VisualShaderNodeMultiplyAdd>(p_node); + + if (fmaFunc) { + fmaFunc->set_op_type((VisualShaderNodeMultiplyAdd::OpType)p_op_idx); + } + } +} - VisualShaderNodeMultiplyAdd *fmaFunc = Object::cast_to<VisualShaderNodeMultiplyAdd>(vsn); +VisualShaderNode *VisualShaderEditor::_add_node(int p_idx, int p_op_idx) { + ERR_FAIL_INDEX_V(p_idx, add_options.size(), nullptr); + + Ref<VisualShaderNode> vsnode; - if (fmaFunc) { - fmaFunc->set_op_type((VisualShaderNodeMultiplyAdd::OpType)p_op_idx); + bool is_custom = add_options[p_idx].is_custom; + + if (!is_custom && add_options[p_idx].type != String()) { + VisualShaderNode *vsn = Object::cast_to<VisualShaderNode>(ClassDB::instance(add_options[p_idx].type)); + ERR_FAIL_COND_V(!vsn, nullptr); + + VisualShaderNodeFloatConstant *constant = Object::cast_to<VisualShaderNodeFloatConstant>(vsn); + + if (constant) { + if ((int)add_options[p_idx].value != -1) { + constant->set_constant(add_options[p_idx].value); + } + } else { + if (p_op_idx != -1) { + VisualShaderNodeInput *input = Object::cast_to<VisualShaderNodeInput>(vsn); + + if (input) { + input->set_input_name(add_options[p_idx].sub_func_str); + } else { + _setup_node(vsn, p_op_idx); + } } } @@ -1880,28 +1989,95 @@ VisualShaderNode *VisualShaderEditor::_add_node(int p_idx, int p_op_idx) { undo_redo->add_do_method(expr, "set_size", Size2(250 * EDSCALE, 150 * EDSCALE)); } + bool created_expression_port = false; + if (to_node != -1 && to_slot != -1) { - if (vsnode->get_output_port_count() > 0) { + VisualShaderNode::PortType input_port_type = visual_shader->get_node(type, to_node)->get_input_port_type(to_slot); + + if (expr && expr->is_editable() && input_port_type != VisualShaderNode::PORT_TYPE_SAMPLER) { + undo_redo->add_do_method(expr, "add_output_port", 0, input_port_type, "output0"); + undo_redo->add_undo_method(expr, "remove_output_port", 0); + + String initial_expression_code; + + switch (input_port_type) { + case VisualShaderNode::PORT_TYPE_SCALAR: + initial_expression_code = "output0 = 1.0;"; + break; + case VisualShaderNode::PORT_TYPE_SCALAR_INT: + initial_expression_code = "output0 = 1;"; + break; + case VisualShaderNode::PORT_TYPE_VECTOR: + initial_expression_code = "output0 = vec3(1.0, 1.0, 1.0);"; + break; + case VisualShaderNode::PORT_TYPE_BOOLEAN: + initial_expression_code = "output0 = true;"; + break; + case VisualShaderNode::PORT_TYPE_TRANSFORM: + initial_expression_code = "output0 = mat4(1.0);"; + break; + default: + break; + } + + undo_redo->add_do_method(expr, "set_expression", initial_expression_code); + undo_redo->add_do_method(graph_plugin.ptr(), "update_node", type, id_to_use); + + created_expression_port = true; + } + if (vsnode->get_output_port_count() > 0 || created_expression_port) { int _from_node = id_to_use; int _from_slot = 0; - if (visual_shader->is_port_types_compatible(vsnode->get_output_port_type(_from_slot), visual_shader->get_node(type, to_node)->get_input_port_type(to_slot))) { + if (created_expression_port) { undo_redo->add_do_method(visual_shader.ptr(), "connect_nodes", type, _from_node, _from_slot, to_node, to_slot); undo_redo->add_undo_method(visual_shader.ptr(), "disconnect_nodes", type, _from_node, _from_slot, to_node, to_slot); undo_redo->add_do_method(graph_plugin.ptr(), "connect_nodes", type, _from_node, _from_slot, to_node, to_slot); undo_redo->add_undo_method(graph_plugin.ptr(), "disconnect_nodes", type, _from_node, _from_slot, to_node, to_slot); + } else { + // Attempting to connect to the first correct port. + for (int i = 0; i < vsnode->get_output_port_count(); i++) { + if (visual_shader->is_port_types_compatible(vsnode->get_output_port_type(i), input_port_type)) { + undo_redo->add_do_method(visual_shader.ptr(), "connect_nodes", type, _from_node, i, to_node, to_slot); + undo_redo->add_undo_method(visual_shader.ptr(), "disconnect_nodes", type, _from_node, i, to_node, to_slot); + undo_redo->add_do_method(graph_plugin.ptr(), "connect_nodes", type, _from_node, i, to_node, to_slot); + undo_redo->add_undo_method(graph_plugin.ptr(), "disconnect_nodes", type, _from_node, i, to_node, to_slot); + break; + } + } } } } else if (from_node != -1 && from_slot != -1) { - if (vsnode->get_input_port_count() > 0) { + VisualShaderNode::PortType output_port_type = visual_shader->get_node(type, from_node)->get_output_port_type(from_slot); + + if (expr && expr->is_editable()) { + undo_redo->add_do_method(expr, "add_input_port", 0, output_port_type, "input0"); + undo_redo->add_undo_method(expr, "remove_input_port", 0); + undo_redo->add_do_method(graph_plugin.ptr(), "update_node", type, id_to_use); + + created_expression_port = true; + } + + if (vsnode->get_input_port_count() > 0 || created_expression_port) { int _to_node = id_to_use; int _to_slot = 0; - if (visual_shader->is_port_types_compatible(visual_shader->get_node(type, from_node)->get_output_port_type(from_slot), vsnode->get_input_port_type(_to_slot))) { + if (created_expression_port) { undo_redo->add_undo_method(visual_shader.ptr(), "disconnect_nodes", type, from_node, from_slot, _to_node, _to_slot); undo_redo->add_do_method(visual_shader.ptr(), "connect_nodes", type, from_node, from_slot, _to_node, _to_slot); undo_redo->add_undo_method(graph_plugin.ptr(), "disconnect_nodes", type, from_node, from_slot, _to_node, _to_slot); undo_redo->add_do_method(graph_plugin.ptr(), "connect_nodes", type, from_node, from_slot, _to_node, _to_slot); + } else { + // Attempting to connect to the first correct port. + for (int i = 0; i < vsnode->get_input_port_count(); i++) { + if (visual_shader->is_port_types_compatible(output_port_type, vsnode->get_input_port_type(i))) { + undo_redo->add_undo_method(visual_shader.ptr(), "disconnect_nodes", type, from_node, from_slot, _to_node, i); + undo_redo->add_do_method(visual_shader.ptr(), "connect_nodes", type, from_node, from_slot, _to_node, i); + undo_redo->add_undo_method(graph_plugin.ptr(), "disconnect_nodes", type, from_node, from_slot, _to_node, i); + undo_redo->add_do_method(graph_plugin.ptr(), "connect_nodes", type, from_node, from_slot, _to_node, i); + break; + } + } } } } @@ -3161,6 +3337,8 @@ VisualShaderEditor::VisualShaderEditor() { graph->set_h_size_flags(SIZE_EXPAND_FILL); add_child(graph); graph->set_drag_forwarding(this); + float graph_minimap_opacity = EditorSettings::get_singleton()->get("editors/visual_editors/minimap_opacity"); + graph->set_minimap_opacity(graph_minimap_opacity); graph->add_valid_right_disconnect_type(VisualShaderNode::PORT_TYPE_SCALAR); graph->add_valid_right_disconnect_type(VisualShaderNode::PORT_TYPE_SCALAR_INT); graph->add_valid_right_disconnect_type(VisualShaderNode::PORT_TYPE_BOOLEAN); @@ -3396,8 +3574,11 @@ VisualShaderEditor::VisualShaderEditor() { add_options.push_back(AddOption("LessThan", "Conditional", "Functions", "VisualShaderNodeCompare", vformat(compare_func_desc, TTR("Less Than (<)")), VisualShaderNodeCompare::FUNC_LESS_THAN, VisualShaderNode::PORT_TYPE_BOOLEAN)); add_options.push_back(AddOption("LessThanEqual", "Conditional", "Functions", "VisualShaderNodeCompare", vformat(compare_func_desc, TTR("Less Than or Equal (<=)")), VisualShaderNodeCompare::FUNC_LESS_THAN_EQUAL, VisualShaderNode::PORT_TYPE_BOOLEAN)); add_options.push_back(AddOption("NotEqual", "Conditional", "Functions", "VisualShaderNodeCompare", vformat(compare_func_desc, TTR("Not Equal (!=)")), VisualShaderNodeCompare::FUNC_NOT_EQUAL, VisualShaderNode::PORT_TYPE_BOOLEAN)); - add_options.push_back(AddOption("Switch", "Conditional", "Functions", "VisualShaderNodeSwitch", TTR("Returns an associated vector if the provided boolean value is true or false."), -1, VisualShaderNode::PORT_TYPE_VECTOR)); - add_options.push_back(AddOption("SwitchS", "Conditional", "Functions", "VisualShaderNodeScalarSwitch", TTR("Returns an associated scalar if the provided boolean value is true or false."), -1, VisualShaderNode::PORT_TYPE_SCALAR)); + add_options.push_back(AddOption("Switch", "Conditional", "Functions", "VisualShaderNodeSwitch", TTR("Returns an associated vector if the provided boolean value is true or false."), VisualShaderNodeSwitch::OP_TYPE_VECTOR, VisualShaderNode::PORT_TYPE_VECTOR)); + add_options.push_back(AddOption("SwitchBool", "Conditional", "Functions", "VisualShaderNodeSwitch", TTR("Returns an associated boolean if the provided boolean value is true or false."), VisualShaderNodeSwitch::OP_TYPE_BOOLEAN, VisualShaderNode::PORT_TYPE_BOOLEAN)); + add_options.push_back(AddOption("SwitchFloat", "Conditional", "Functions", "VisualShaderNodeSwitch", TTR("Returns an associated floating-point scalar if the provided boolean value is true or false."), VisualShaderNodeSwitch::OP_TYPE_FLOAT, VisualShaderNode::PORT_TYPE_SCALAR)); + add_options.push_back(AddOption("SwitchInt", "Conditional", "Functions", "VisualShaderNodeSwitch", TTR("Returns an associated integer scalar if the provided boolean value is true or false."), VisualShaderNodeSwitch::OP_TYPE_INT, VisualShaderNode::PORT_TYPE_SCALAR_INT)); + add_options.push_back(AddOption("SwitchTransform", "Conditional", "Functions", "VisualShaderNodeSwitch", TTR("Returns an associated transform if the provided boolean value is true or false."), VisualShaderNodeSwitch::OP_TYPE_TRANSFORM, VisualShaderNode::PORT_TYPE_TRANSFORM)); add_options.push_back(AddOption("Compare", "Conditional", "Common", "VisualShaderNodeCompare", TTR("Returns the boolean result of the comparison between two parameters."), -1, VisualShaderNode::PORT_TYPE_BOOLEAN)); add_options.push_back(AddOption("Is", "Conditional", "Common", "VisualShaderNodeIs", TTR("Returns the boolean result of the comparison between INF (or NaN) and a scalar parameter."), -1, VisualShaderNode::PORT_TYPE_BOOLEAN)); @@ -3620,8 +3801,8 @@ VisualShaderEditor::VisualShaderEditor() { add_options.push_back(AddOption("ATan2", "Scalar", "Functions", "VisualShaderNodeFloatOp", TTR("Returns the arc-tangent of the parameters."), VisualShaderNodeFloatOp::OP_ATAN2, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("ATanH", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Returns the inverse hyperbolic tangent of the parameter."), VisualShaderNodeFloatFunc::FUNC_ATANH, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("Ceil", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Finds the nearest integer that is greater than or equal to the parameter."), VisualShaderNodeFloatFunc::FUNC_CEIL, VisualShaderNode::PORT_TYPE_SCALAR)); - add_options.push_back(AddOption("Clamp", "Scalar", "Functions", "VisualShaderNodeScalarClamp", TTR("Constrains a value to lie between two further values."), -1, VisualShaderNode::PORT_TYPE_SCALAR)); - add_options.push_back(AddOption("Clamp", "Scalar", "Functions", "VisualShaderNodeIntFunc", TTR("Constrains a value to lie between two further values."), VisualShaderNodeIntFunc::FUNC_CLAMP, VisualShaderNode::PORT_TYPE_SCALAR_INT)); + add_options.push_back(AddOption("Clamp", "Scalar", "Functions", "VisualShaderNodeClamp", TTR("Constrains a value to lie between two further values."), VisualShaderNodeClamp::OP_TYPE_FLOAT, VisualShaderNode::PORT_TYPE_SCALAR)); + add_options.push_back(AddOption("Clamp", "Scalar", "Functions", "VisualShaderNodeClamp", TTR("Constrains a value to lie between two further values."), VisualShaderNodeClamp::OP_TYPE_INT, VisualShaderNode::PORT_TYPE_SCALAR_INT)); add_options.push_back(AddOption("Cos", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Returns the cosine of the parameter."), VisualShaderNodeFloatFunc::FUNC_COS, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("CosH", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Returns the hyperbolic cosine of the parameter."), VisualShaderNodeFloatFunc::FUNC_COSH, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("Degrees", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Converts a quantity in radians to degrees."), VisualShaderNodeFloatFunc::FUNC_DEGREES, VisualShaderNode::PORT_TYPE_SCALAR)); @@ -3634,7 +3815,7 @@ VisualShaderEditor::VisualShaderEditor() { add_options.push_back(AddOption("Log2", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Base-2 logarithm."), VisualShaderNodeFloatFunc::FUNC_LOG2, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("Max", "Scalar", "Functions", "VisualShaderNodeFloatOp", TTR("Returns the greater of two values."), VisualShaderNodeFloatOp::OP_MAX, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("Min", "Scalar", "Functions", "VisualShaderNodeFloatOp", TTR("Returns the lesser of two values."), VisualShaderNodeFloatOp::OP_MIN, VisualShaderNode::PORT_TYPE_SCALAR)); - add_options.push_back(AddOption("Mix", "Scalar", "Functions", "VisualShaderNodeScalarInterp", TTR("Linear interpolation between two scalars."), -1, VisualShaderNode::PORT_TYPE_SCALAR)); + add_options.push_back(AddOption("Mix", "Scalar", "Functions", "VisualShaderNodeMix", TTR("Linear interpolation between two scalars."), VisualShaderNodeMix::OP_TYPE_SCALAR, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("MultiplyAdd", "Scalar", "Functions", "VisualShaderNodeMultiplyAdd", TTR("Performs a fused multiply-add operation (a * b + c) on scalars."), VisualShaderNodeMultiplyAdd::OP_TYPE_SCALAR, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("Negate", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Returns the opposite value of the parameter."), VisualShaderNodeFloatFunc::FUNC_NEGATE, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("Negate", "Scalar", "Functions", "VisualShaderNodeIntFunc", TTR("Returns the opposite value of the parameter."), VisualShaderNodeIntFunc::FUNC_NEGATE, VisualShaderNode::PORT_TYPE_SCALAR_INT)); @@ -3650,8 +3831,8 @@ VisualShaderEditor::VisualShaderEditor() { add_options.push_back(AddOption("Sin", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Returns the sine of the parameter."), VisualShaderNodeFloatFunc::FUNC_SIN, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("SinH", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Returns the hyperbolic sine of the parameter."), VisualShaderNodeFloatFunc::FUNC_SINH, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("Sqrt", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Returns the square root of the parameter."), VisualShaderNodeFloatFunc::FUNC_SQRT, VisualShaderNode::PORT_TYPE_SCALAR)); - add_options.push_back(AddOption("SmoothStep", "Scalar", "Functions", "VisualShaderNodeScalarSmoothStep", TTR("SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if x is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), -1, VisualShaderNode::PORT_TYPE_SCALAR)); - add_options.push_back(AddOption("Step", "Scalar", "Functions", "VisualShaderNodeFloatOp", TTR("Step function( scalar(edge), scalar(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."), VisualShaderNodeFloatOp::OP_STEP, VisualShaderNode::PORT_TYPE_SCALAR)); + add_options.push_back(AddOption("SmoothStep", "Scalar", "Functions", "VisualShaderNodeSmoothStep", TTR("SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if x is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), VisualShaderNodeSmoothStep::OP_TYPE_SCALAR, VisualShaderNode::PORT_TYPE_SCALAR)); + add_options.push_back(AddOption("Step", "Scalar", "Functions", "VisualShaderNodeStep", TTR("Step function( scalar(edge), scalar(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."), VisualShaderNodeStep::OP_TYPE_SCALAR, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("Tan", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Returns the tangent of the parameter."), VisualShaderNodeFloatFunc::FUNC_TAN, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("TanH", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Returns the hyperbolic tangent of the parameter."), VisualShaderNodeFloatFunc::FUNC_TANH, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("Trunc", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Finds the truncated value of the parameter."), VisualShaderNodeFloatFunc::FUNC_TRUNC, VisualShaderNode::PORT_TYPE_SCALAR)); @@ -3735,7 +3916,7 @@ VisualShaderEditor::VisualShaderEditor() { add_options.push_back(AddOption("ATan2", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the arc-tangent of the parameters."), VisualShaderNodeVectorOp::OP_ATAN2, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("ATanH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse hyperbolic tangent of the parameter."), VisualShaderNodeVectorFunc::FUNC_ATANH, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("Ceil", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer that is greater than or equal to the parameter."), VisualShaderNodeVectorFunc::FUNC_CEIL, VisualShaderNode::PORT_TYPE_VECTOR)); - add_options.push_back(AddOption("Clamp", "Vector", "Functions", "VisualShaderNodeVectorClamp", TTR("Constrains a value to lie between two further values."), -1, VisualShaderNode::PORT_TYPE_VECTOR)); + add_options.push_back(AddOption("Clamp", "Vector", "Functions", "VisualShaderNodeClamp", TTR("Constrains a value to lie between two further values."), VisualShaderNodeClamp::OP_TYPE_VECTOR, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("Cos", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the cosine of the parameter."), VisualShaderNodeVectorFunc::FUNC_COS, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("CosH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic cosine of the parameter."), VisualShaderNodeVectorFunc::FUNC_COSH, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("Cross", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Calculates the cross product of two vectors."), VisualShaderNodeVectorOp::OP_CROSS, VisualShaderNode::PORT_TYPE_VECTOR)); @@ -3753,8 +3934,8 @@ VisualShaderEditor::VisualShaderEditor() { add_options.push_back(AddOption("Log2", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Base-2 logarithm."), VisualShaderNodeVectorFunc::FUNC_LOG2, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("Max", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the greater of two values."), VisualShaderNodeVectorOp::OP_MAX, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("Min", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the lesser of two values."), VisualShaderNodeVectorOp::OP_MIN, VisualShaderNode::PORT_TYPE_VECTOR)); - add_options.push_back(AddOption("Mix", "Vector", "Functions", "VisualShaderNodeVectorInterp", TTR("Linear interpolation between two vectors."), -1, VisualShaderNode::PORT_TYPE_VECTOR)); - add_options.push_back(AddOption("MixS", "Vector", "Functions", "VisualShaderNodeVectorScalarMix", TTR("Linear interpolation between two vectors using scalar."), -1, VisualShaderNode::PORT_TYPE_VECTOR)); + add_options.push_back(AddOption("Mix", "Vector", "Functions", "VisualShaderNodeMix", TTR("Linear interpolation between two vectors."), VisualShaderNodeMix::OP_TYPE_VECTOR, VisualShaderNode::PORT_TYPE_VECTOR)); + add_options.push_back(AddOption("MixS", "Vector", "Functions", "VisualShaderNodeMix", TTR("Linear interpolation between two vectors using scalar."), VisualShaderNodeMix::OP_TYPE_VECTOR_SCALAR, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("MultiplyAdd", "Vector", "Functions", "VisualShaderNodeMultiplyAdd", TTR("Performs a fused multiply-add operation (a * b + c) on vectors."), VisualShaderNodeMultiplyAdd::OP_TYPE_VECTOR, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("Negate", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the opposite value of the parameter."), VisualShaderNodeVectorFunc::FUNC_NEGATE, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("Normalize", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Calculates the normalize product of vector."), VisualShaderNodeVectorFunc::FUNC_NORMALIZE, VisualShaderNode::PORT_TYPE_VECTOR)); @@ -3771,10 +3952,10 @@ VisualShaderEditor::VisualShaderEditor() { add_options.push_back(AddOption("Sin", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the sine of the parameter."), VisualShaderNodeVectorFunc::FUNC_SIN, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("SinH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic sine of the parameter."), VisualShaderNodeVectorFunc::FUNC_SINH, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("Sqrt", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the square root of the parameter."), VisualShaderNodeVectorFunc::FUNC_SQRT, VisualShaderNode::PORT_TYPE_VECTOR)); - add_options.push_back(AddOption("SmoothStep", "Vector", "Functions", "VisualShaderNodeVectorSmoothStep", TTR("SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), -1, VisualShaderNode::PORT_TYPE_VECTOR)); - add_options.push_back(AddOption("SmoothStepS", "Vector", "Functions", "VisualShaderNodeVectorScalarSmoothStep", TTR("SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), -1, VisualShaderNode::PORT_TYPE_VECTOR)); - add_options.push_back(AddOption("Step", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Step function( vector(edge), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."), VisualShaderNodeVectorOp::OP_STEP, VisualShaderNode::PORT_TYPE_VECTOR)); - add_options.push_back(AddOption("StepS", "Vector", "Functions", "VisualShaderNodeVectorScalarStep", TTR("Step function( scalar(edge), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."), -1, VisualShaderNode::PORT_TYPE_VECTOR)); + add_options.push_back(AddOption("SmoothStep", "Vector", "Functions", "VisualShaderNodeSmoothStep", TTR("SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), VisualShaderNodeSmoothStep::OP_TYPE_VECTOR, VisualShaderNode::PORT_TYPE_VECTOR)); + add_options.push_back(AddOption("SmoothStepS", "Vector", "Functions", "VisualShaderNodeSmoothStep", TTR("SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), VisualShaderNodeSmoothStep::OP_TYPE_VECTOR_SCALAR, VisualShaderNode::PORT_TYPE_VECTOR)); + add_options.push_back(AddOption("Step", "Vector", "Functions", "VisualShaderNodeStep", TTR("Step function( vector(edge), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."), VisualShaderNodeStep::OP_TYPE_VECTOR, VisualShaderNode::PORT_TYPE_VECTOR)); + add_options.push_back(AddOption("StepS", "Vector", "Functions", "VisualShaderNodeStep", TTR("Step function( scalar(edge), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."), VisualShaderNodeStep::OP_TYPE_VECTOR_SCALAR, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("Tan", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the tangent of the parameter."), VisualShaderNodeVectorFunc::FUNC_TAN, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("TanH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic tangent of the parameter."), VisualShaderNodeVectorFunc::FUNC_TANH, VisualShaderNode::PORT_TYPE_VECTOR)); add_options.push_back(AddOption("Trunc", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the truncated value of the parameter."), VisualShaderNodeVectorFunc::FUNC_TRUNC, VisualShaderNode::PORT_TYPE_VECTOR)); @@ -4292,10 +4473,17 @@ void VisualShaderNodePortPreview::_shader_changed() { for (int i = EditorNode::get_singleton()->get_editor_history()->get_path_size() - 1; i >= 0; i--) { Object *object = ObjectDB::get_instance(EditorNode::get_singleton()->get_editor_history()->get_path_object(i)); + ShaderMaterial *src_mat; if (!object) { continue; } - ShaderMaterial *src_mat = Object::cast_to<ShaderMaterial>(object); + if (object->has_method("get_material_override")) { // trying getting material from MeshInstance + src_mat = Object::cast_to<ShaderMaterial>(object->call("get_material_override")); + } else if (object->has_method("get_material")) { // from CanvasItem/Node2D + src_mat = Object::cast_to<ShaderMaterial>(object->call("get_material")); + } else { + src_mat = Object::cast_to<ShaderMaterial>(object); + } if (src_mat && src_mat->get_shader().is_valid()) { List<PropertyInfo> params; src_mat->get_shader()->get_param_list(¶ms); diff --git a/editor/plugins/visual_shader_editor_plugin.h b/editor/plugins/visual_shader_editor_plugin.h index 72ed46b35c..182bed6ba6 100644 --- a/editor/plugins/visual_shader_editor_plugin.h +++ b/editor/plugins/visual_shader_editor_plugin.h @@ -276,6 +276,7 @@ class VisualShaderEditor : public VBoxContainer { void _add_texture3d_node(const String &p_path); void _add_curve_node(const String &p_path); + void _setup_node(VisualShaderNode *p_node, int p_op_idx); VisualShaderNode *_add_node(int p_idx, int p_op_idx = -1); void _update_options_menu(); void _set_mode(int p_which); diff --git a/editor/pot_generator.cpp b/editor/pot_generator.cpp index 2d65c00a89..497cc0cbdc 100644 --- a/editor/pot_generator.cpp +++ b/editor/pot_generator.cpp @@ -55,7 +55,7 @@ void POTGenerator::_print_all_translation_strings() { #endif void POTGenerator::generate_pot(const String &p_file) { - if (!ProjectSettings::get_singleton()->has_setting("locale/translations_pot_files")) { + if (!ProjectSettings::get_singleton()->has_setting("internationalization/locale/translations_pot_files")) { WARN_PRINT("No files selected for POT generation."); return; } @@ -63,7 +63,7 @@ void POTGenerator::generate_pot(const String &p_file) { // Clear all_translation_strings of the previous round. all_translation_strings.clear(); - Vector<String> files = ProjectSettings::get_singleton()->get("locale/translations_pot_files"); + Vector<String> files = ProjectSettings::get_singleton()->get("internationalization/locale/translations_pot_files"); // Collect all translatable strings according to files order in "POT Generation" setting. for (int i = 0; i < files.size(); i++) { @@ -100,7 +100,7 @@ void POTGenerator::_write_to_pot(const String &p_file) { } String project_name = ProjectSettings::get_singleton()->get("application/config/name"); - Vector<String> files = ProjectSettings::get_singleton()->get("locale/translations_pot_files"); + Vector<String> files = ProjectSettings::get_singleton()->get("internationalization/locale/translations_pot_files"); String extracted_files = ""; for (int i = 0; i < files.size(); i++) { extracted_files += "# " + files[i] + "\n"; diff --git a/editor/project_export.cpp b/editor/project_export.cpp index 4a8990daa9..4bcb616fbd 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -830,6 +830,12 @@ void ProjectExportDialog::_refresh_parent_checks(TreeItem *p_item) { } void ProjectExportDialog::_export_pck_zip() { + Ref<EditorExportPreset> current = get_current_preset(); + ERR_FAIL_COND(current.is_null()); + + String dir = current->get_export_path().get_base_dir(); + export_pck_zip->set_current_dir(dir); + export_pck_zip->popup_file_dialog(); } diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index e46b2711c1..7d421bdf81 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -474,15 +474,15 @@ private: } ProjectSettings::CustomMap initial_settings; if (rasterizer_button_group->get_pressed_button()->get_meta("driver_name") == "Vulkan") { - initial_settings["rendering/quality/driver/driver_name"] = "Vulkan"; + initial_settings["rendering/driver/driver_name"] = "Vulkan"; } else { - initial_settings["rendering/quality/driver/driver_name"] = "GLES2"; - initial_settings["rendering/vram_compression/import_etc2"] = false; - initial_settings["rendering/vram_compression/import_etc"] = true; + initial_settings["rendering/driver/driver_name"] = "GLES2"; + initial_settings["rendering/textures/vram_compression/import_etc2"] = false; + initial_settings["rendering/textures/vram_compression/import_etc"] = true; } initial_settings["application/config/name"] = project_name->get_text(); initial_settings["application/config/icon"] = "res://icon.png"; - initial_settings["rendering/environment/default_environment"] = "res://default_env.tres"; + initial_settings["rendering/environment/defaults/default_environment"] = "res://default_env.tres"; if (ProjectSettings::get_singleton()->save_custom(dir.plus_file("project.godot"), initial_settings, Vector<String>(), false) != OK) { set_message(TTR("Couldn't create project.godot in project path."), MESSAGE_ERROR); @@ -1375,11 +1375,10 @@ void ProjectList::create_project_item_control(int p_index) { vb->add_child(path_hb); Button *show = memnew(Button); - // Display a folder icon if the project directory can be opened, or a "broken file" icon if it can't + // Display a folder icon if the project directory can be opened, or a "broken file" icon if it can't. show->set_icon(get_theme_icon(!item.missing ? "Load" : "FileBroken", "EditorIcons")); - show->set_flat(true); if (!item.grayed) { - // Don't make the icon less prominent if the parent is already grayed out + // Don't make the icon less prominent if the parent is already grayed out. show->set_modulate(Color(1, 1, 1, 0.5)); } path_hb->add_child(show); @@ -2016,6 +2015,10 @@ void ProjectManager::_confirm_update_settings() { } void ProjectManager::_open_selected_projects() { + // Show loading text to tell the user that the project manager is busy loading. + // This is especially important for the HTML5 project manager. + loading_label->set_modulate(Color(1, 1, 1)); + const Set<String> &selected_list = _project_list->get_selected_project_keys(); for (const Set<String>::Element *E = selected_list.front(); E; E = E->next()) { @@ -2158,8 +2161,9 @@ void ProjectManager::_run_project() { } void ProjectManager::_scan_dir(const String &path, List<String> *r_projects) { - DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); - da->change_dir(path); + DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); + Error error = da->change_dir(path); + ERR_FAIL_COND_MSG(error != OK, "Could not scan directory at: " + path); da->list_dir_begin(); String n = da->get_next(); while (n != String()) { @@ -2171,7 +2175,6 @@ void ProjectManager::_scan_dir(const String &path, List<String> *r_projects) { n = da->get_next(); } da->list_dir_end(); - memdelete(da); } void ProjectManager::_scan_begin(const String &p_base) { @@ -2269,11 +2272,6 @@ void ProjectManager::_restart_confirm() { get_tree()->quit(); } -void ProjectManager::_exit_dialog() { - _dim_window(); - get_tree()->quit(); -} - void ProjectManager::_install_project(const String &p_zip_path, const String &p_title) { npdialog->set_mode(ProjectDialog::MODE_INSTALL); npdialog->set_zip_path(p_zip_path); @@ -2282,6 +2280,11 @@ void ProjectManager::_install_project(const String &p_zip_path, const String &p_ } void ProjectManager::_files_dropped(PackedStringArray p_files, int p_screen) { + if (p_files.size() == 1 && p_files[0].ends_with(".zip")) { + const String file = p_files[0].get_file(); + _install_project(p_files[0], file.substr(0, file.length() - 4).capitalize()); + return; + } Set<String> folders_set; DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); for (int i = 0; i < p_files.size(); i++) { @@ -2347,7 +2350,6 @@ void ProjectManager::_on_search_term_changed(const String &p_term) { } void ProjectManager::_bind_methods() { - ClassDB::bind_method("_exit_dialog", &ProjectManager::_exit_dialog); ClassDB::bind_method("_unhandled_key_input", &ProjectManager::_unhandled_key_input); ClassDB::bind_method("_update_project_buttons", &ProjectManager::_update_project_buttons); } @@ -2381,6 +2383,10 @@ ProjectManager::ProjectManager() { if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).y >= 1400) { // hiDPI display. scale = 2.0; + } else if (DisplayServer::get_singleton()->screen_get_size(screen).y >= 1700) { + // Likely a hiDPI display, but we aren't certain due to the returned DPI. + // Use an intermediate scale to handle this situation. + scale = 1.5; } else if (DisplayServer::get_singleton()->screen_get_size(screen).y <= 800) { // Small loDPI display. Use a smaller display scale so that editor elements fit more easily. // Icons won't look great, but this is better than having editor elements overflow from its window. @@ -2477,7 +2483,12 @@ ProjectManager::ProjectManager() { search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); hb->add_child(search_box); - hb->add_spacer(); + loading_label = memnew(Label(TTR("Loading, please wait..."))); + loading_label->add_theme_font_override("font", get_theme_font("bold", "EditorFonts")); + loading_label->set_h_size_flags(Control::SIZE_EXPAND_FILL); + hb->add_child(loading_label); + // Hide the label but make it still take up space. This prevents reflows when showing the label. + loading_label->set_modulate(Color(0, 0, 0, 0)); Label *sort_label = memnew(Label); sort_label->set_text(TTR("Sort:")); @@ -2684,8 +2695,26 @@ ProjectManager::ProjectManager() { _load_recent_projects(); - if (EditorSettings::get_singleton()->get("filesystem/directories/autoscan_project_path")) { - _scan_begin(EditorSettings::get_singleton()->get("filesystem/directories/autoscan_project_path")); + DirAccessRef dir_access = DirAccess::create(DirAccess::AccessType::ACCESS_FILESYSTEM); + + String default_project_path = EditorSettings::get_singleton()->get("filesystem/directories/default_project_path"); + if (!dir_access->dir_exists(default_project_path)) { + Error error = dir_access->make_dir_recursive(default_project_path); + if (error != OK) { + ERR_PRINT("Could not create default project directory at: " + default_project_path); + } + } + + String autoscan_path = EditorSettings::get_singleton()->get("filesystem/directories/autoscan_project_path"); + if (autoscan_path != "") { + if (dir_access->dir_exists(autoscan_path)) { + _scan_begin(autoscan_path); + } else { + Error error = dir_access->make_dir_recursive(autoscan_path); + if (error != OK) { + ERR_PRINT("Could not create project autoscan directory at: " + autoscan_path); + } + } } SceneTree::get_singleton()->get_root()->connect("files_dropped", callable_mp(this, &ProjectManager::_files_dropped)); diff --git a/editor/project_manager.h b/editor/project_manager.h index db8cb8410c..6dc0e67cba 100644 --- a/editor/project_manager.h +++ b/editor/project_manager.h @@ -54,6 +54,7 @@ class ProjectManager : public Control { ProjectList *_project_list; LineEdit *search_box; + Label *loading_label; OptionButton *filter_option; Button *run_btn; @@ -98,7 +99,6 @@ class ProjectManager : public Control { void _update_project_buttons(); void _language_selected(int p_id); void _restart_confirm(); - void _exit_dialog(); void _confirm_update_settings(); void _nonempty_confirmation_ok_pressed(); diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp index 4516180fa5..4aadb4295f 100644 --- a/editor/project_settings_editor.cpp +++ b/editor/project_settings_editor.cpp @@ -55,6 +55,7 @@ void ProjectSettingsEditor::popup_project_settings() { } void ProjectSettingsEditor::queue_save() { + EditorNode::get_singleton()->notify_settings_changed(); timer->start(); } @@ -74,8 +75,12 @@ void ProjectSettingsEditor::_advanced_pressed() { if (advanced->is_pressed()) { _update_advanced_bar(); advanced_bar->show(); + EditorSettings::get_singleton()->set_project_metadata("project_settings", "advanced_mode", true); + inspector->set_restrict_to_basic_settings(false); } else { advanced_bar->hide(); + EditorSettings::get_singleton()->set_project_metadata("project_settings", "advanced_mode", false); + inspector->set_restrict_to_basic_settings(true); } } @@ -190,9 +195,6 @@ void ProjectSettingsEditor::_update_advanced_bar() { add_button->set_disabled(disable_add); del_button->set_disabled(disable_del); - - error_label->set_text(error_msg); - error_label->set_visible(error_msg != ""); } String ProjectSettingsEditor::_get_setting_name() const { @@ -272,16 +274,11 @@ void ProjectSettingsEditor::_notification(int p_what) { case NOTIFICATION_VISIBILITY_CHANGED: { if (!is_visible()) { EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "project_settings", Rect2(get_position(), get_size())); - if (advanced->is_pressed()) { - advanced->set_pressed(false); - advanced_bar->hide(); - } } } break; case NOTIFICATION_ENTER_TREE: { inspector->edit(ps); - error_label->add_theme_color_override("font_color", error_label->get_theme_color("error_color", "Editor")); add_button->set_icon(get_theme_icon("Add", "EditorIcons")); del_button->set_icon(get_theme_icon("Remove", "EditorIcons")); @@ -339,23 +336,19 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) { search_bar->add_child(search_box); advanced = memnew(CheckButton); - advanced->set_text(TTR("Advanced")); + advanced->set_text(TTR("Advanced Settings")); advanced->connect("pressed", callable_mp(this, &ProjectSettingsEditor::_advanced_pressed)); search_bar->add_child(advanced); } { // Advanced bar. - advanced_bar = memnew(VBoxContainer); - advanced_bar->set_h_size_flags(Control::SIZE_EXPAND_FILL); + advanced_bar = memnew(HBoxContainer); advanced_bar->hide(); header->add_child(advanced_bar); - advanced_bar->add_child(memnew(HSeparator)); - - HBoxContainer *hbc = memnew(HBoxContainer); + HBoxContainer *hbc = advanced_bar; hbc->set_h_size_flags(Control::SIZE_EXPAND_FILL); - advanced_bar->add_margin_child(TTR("Add or Remove Custom Project Settings:"), hbc, true); category_box = memnew(LineEdit); category_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); @@ -364,7 +357,7 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) { hbc->add_child(category_box); Label *l = memnew(Label); - l->set_text("/"); + l->set_text(" / "); hbc->add_child(l); property_box = memnew(LineEdit); @@ -407,9 +400,6 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) { del_button->set_flat(true); del_button->connect("pressed", callable_mp(this, &ProjectSettingsEditor::_delete_setting), varray(false)); hbc->add_child(del_button); - - error_label = memnew(Label); - advanced_bar->add_child(error_label); } inspector = memnew(SectionedInspector); @@ -483,4 +473,13 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) { get_ok_button()->set_text(TTR("Close")); set_hide_on_ok(true); + + bool use_advanced = EditorSettings::get_singleton()->get_project_metadata("project_settings", "advanced_mode", false); + + if (use_advanced) { + advanced->set_pressed(true); + advanced_bar->show(); + } + + inspector->set_restrict_to_basic_settings(!use_advanced); } diff --git a/editor/project_settings_editor.h b/editor/project_settings_editor.h index 88c96540ff..a43adecc4e 100644 --- a/editor/project_settings_editor.h +++ b/editor/project_settings_editor.h @@ -68,14 +68,13 @@ class ProjectSettingsEditor : public AcceptDialog { LineEdit *search_box; CheckButton *advanced; - VBoxContainer *advanced_bar; + HBoxContainer *advanced_bar; LineEdit *category_box; LineEdit *property_box; Button *add_button; Button *del_button; OptionButton *type; OptionButton *feature_override; - Label *error_label; ConfirmationDialog *del_confirmation; diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index ac1beb1c37..48c4d33184 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -87,6 +87,12 @@ void SceneTreeDock::_unhandled_key_input(Ref<InputEvent> p_event) { _tool_selected(TOOL_INSTANCE); } else if (ED_IS_SHORTCUT("scene_tree/expand_collapse_all", p_event)) { _tool_selected(TOOL_EXPAND_COLLAPSE); + } else if (ED_IS_SHORTCUT("scene_tree/cut_node", p_event)) { + _tool_selected(TOOL_CUT); + } else if (ED_IS_SHORTCUT("scene_tree/copy_node", p_event)) { + _tool_selected(TOOL_COPY); + } else if (ED_IS_SHORTCUT("scene_tree/paste_node", p_event)) { + _tool_selected(TOOL_PASTE); } else if (ED_IS_SHORTCUT("scene_tree/change_node_type", p_event)) { _tool_selected(TOOL_REPLACE); } else if (ED_IS_SHORTCUT("scene_tree/duplicate", p_event)) { @@ -101,8 +107,6 @@ void SceneTreeDock::_unhandled_key_input(Ref<InputEvent> p_event) { _tool_selected(TOOL_MOVE_DOWN); } else if (ED_IS_SHORTCUT("scene_tree/reparent", p_event)) { _tool_selected(TOOL_REPARENT); - } else if (ED_IS_SHORTCUT("scene_tree/merge_from_scene", p_event)) { - _tool_selected(TOOL_MERGE_FROM_SCENE); } else if (ED_IS_SHORTCUT("scene_tree/save_branch_as_scene", p_event)) { _tool_selected(TOOL_NEW_SCENE_FROM); } else if (ED_IS_SHORTCUT("scene_tree/delete_no_confirm", p_event)) { @@ -397,6 +401,114 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { tree->ensure_cursor_is_visible(); } break; + case TOOL_CUT: + case TOOL_COPY: { + if (!edited_scene || !_validate_no_foreign()) { + break; + } + + List<Node *> selection = editor_selection->get_selected_node_list(); + if (selection.size() == 0) { + break; + } + + if (!node_clipboard.is_empty()) { + _clear_clipboard(); + } + clipboard_source_scene = editor->get_edited_scene()->get_filename(); + + selection.sort_custom<Node::Comparator>(); + + for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { + Node *node = E->get(); + Map<const Node *, Node *> duplimap; + Node *dup = node->duplicate_from_editor(duplimap); + + ERR_CONTINUE(!dup); + + node_clipboard.push_back(dup); + } + + if (p_tool == TOOL_CUT) { + _delete_confirm(true); + } + } break; + case TOOL_PASTE: { + if (node_clipboard.is_empty() || !edited_scene) { + break; + } + + bool has_cycle = false; + if (edited_scene->get_filename() != String()) { + for (List<Node *>::Element *E = node_clipboard.front(); E; E = E->next()) { + if (edited_scene->get_filename() == E->get()->get_filename()) { + has_cycle = true; + break; + } + } + } + + if (has_cycle) { + current_option = -1; + accept->set_text(TTR("Can't paste root node into the same scene.")); + accept->popup_centered(); + break; + } + + Node *paste_parent = edited_scene; + List<Node *> selection = editor_selection->get_selected_node_list(); + if (selection.size() > 0) { + paste_parent = selection.back()->get(); + } + + Node *owner = paste_parent->get_owner(); + if (!owner) { + owner = paste_parent; + } + + editor_data->get_undo_redo().create_action(TTR("Paste Node(s)")); + editor_data->get_undo_redo().add_do_method(editor_selection, "clear"); + + Map<RES, RES> resource_remap; + String target_scene = editor->get_edited_scene()->get_filename(); + if (target_scene != clipboard_source_scene) { + if (!clipboard_resource_remap.has(target_scene)) { + Map<RES, RES> remap; + for (List<Node *>::Element *E = node_clipboard.front(); E; E = E->next()) { + _create_remap_for_node(E->get(), remap); + } + clipboard_resource_remap[target_scene] = remap; + } + resource_remap = clipboard_resource_remap[target_scene]; + } + + for (List<Node *>::Element *E = node_clipboard.front(); E; E = E->next()) { + Node *node = E->get(); + Map<const Node *, Node *> duplimap; + + Node *dup = node->duplicate_from_editor(duplimap, resource_remap); + + ERR_CONTINUE(!dup); + + editor_data->get_undo_redo().add_do_method(paste_parent, "add_child", dup); + + for (Map<const Node *, Node *>::Element *E2 = duplimap.front(); E2; E2 = E2->next()) { + Node *d = E2->value(); + editor_data->get_undo_redo().add_do_method(d, "set_owner", owner); + } + + editor_data->get_undo_redo().add_do_method(dup, "set_owner", owner); + editor_data->get_undo_redo().add_do_method(editor_selection, "add_node", dup); + editor_data->get_undo_redo().add_undo_method(paste_parent, "remove_child", dup); + editor_data->get_undo_redo().add_do_reference(dup); + + if (node_clipboard.size() == 1) { + editor_data->get_undo_redo().add_do_method(editor, "push_item", dup); + } + } + + editor_data->get_undo_redo().commit_action(); + } break; case TOOL_REPLACE: { if (!profile_allow_editing) { break; @@ -766,13 +878,6 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { } } break; - case TOOL_MERGE_FROM_SCENE: { - if (!profile_allow_editing) { - break; - } - - EditorNode::get_singleton()->merge_from_scene(); - } break; case TOOL_NEW_SCENE_FROM: { if (!profile_allow_editing) { break; @@ -1795,7 +1900,7 @@ void SceneTreeDock::_toggle_editable_children(Node *p_node) { } } -void SceneTreeDock::_delete_confirm() { +void SceneTreeDock::_delete_confirm(bool p_cut) { List<Node *> remove_list = editor_selection->get_selected_node_list(); if (remove_list.is_empty()) { @@ -1804,7 +1909,11 @@ void SceneTreeDock::_delete_confirm() { editor->get_editor_plugins_over()->make_visible(false); - editor_data->get_undo_redo().create_action(TTR("Remove Node(s)")); + if (p_cut) { + editor_data->get_undo_redo().create_action(TTR("Cut Node(s)")); + } else { + editor_data->get_undo_redo().create_action(TTR("Remove Node(s)")); + } bool entire_scene = false; @@ -2173,21 +2282,6 @@ void SceneTreeDock::set_selected(Node *p_node, bool p_emit_selected) { scene_tree->set_selected(p_node, p_emit_selected); } -void SceneTreeDock::import_subscene() { - import_subscene_dialog->popup_centered_clamped(Size2(500, 800) * EDSCALE, 0.8); -} - -void SceneTreeDock::_import_subscene() { - Node *parent = scene_tree->get_selected(); - if (!parent) { - parent = editor_data->get_edited_scene_root(); - ERR_FAIL_COND(!parent); - } - - import_subscene_dialog->move(parent, edited_scene); - editor_data->get_undo_redo().clear_history(); //no undo for now.. -} - void SceneTreeDock::_new_scene_from(String p_file) { List<Node *> selection = editor_selection->get_selected_node_list(); @@ -2444,6 +2538,13 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) { } if (profile_allow_script_editing) { + menu->add_shortcut(ED_GET_SHORTCUT("scene_tree/cut_node"), TOOL_CUT); + menu->add_shortcut(ED_GET_SHORTCUT("scene_tree/copy_node"), TOOL_COPY); + if (selection.size() == 1 && !node_clipboard.is_empty()) { + menu->add_shortcut(ED_GET_SHORTCUT("scene_tree/paste_node"), TOOL_PASTE); + } + menu->add_separator(); + bool add_separator = false; if (full_selection.size() == 1) { @@ -2497,7 +2598,6 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) { if (selection.size() == 1) { if (profile_allow_editing) { menu->add_separator(); - menu->add_icon_shortcut(get_theme_icon("Blend", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/merge_from_scene"), TOOL_MERGE_FROM_SCENE); menu->add_icon_shortcut(get_theme_icon("CreateNewSceneFrom", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/save_branch_as_scene"), TOOL_NEW_SCENE_FROM); } if (full_selection.size() == 1) { @@ -2775,6 +2875,62 @@ void SceneTreeDock::_feature_profile_changed() { _update_script_button(); } +void SceneTreeDock::_clear_clipboard() { + for (List<Node *>::Element *E = node_clipboard.front(); E; E = E->next()) { + memdelete(E->get()); + } + node_clipboard.clear(); + clipboard_resource_remap.clear(); +} + +void SceneTreeDock::_create_remap_for_node(Node *p_node, Map<RES, RES> &r_remap) { + List<PropertyInfo> props; + p_node->get_property_list(&props); + + for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) { + if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) { + continue; + } + + Variant v = p_node->get(E->get().name); + if (v.is_ref()) { + RES res = v; + if (res.is_valid()) { + if ((res->get_path() == "" || res->get_path().find("::") > -1) && !r_remap.has(res)) { + _create_remap_for_resource(res, r_remap); + } + } + } + } + + for (int i = 0; i < p_node->get_child_count(); i++) { + _create_remap_for_node(p_node->get_child(i), r_remap); + } +} + +void SceneTreeDock::_create_remap_for_resource(RES p_resource, Map<RES, RES> &r_remap) { + r_remap[p_resource] = p_resource->duplicate(); + + List<PropertyInfo> props; + p_resource->get_property_list(&props); + + for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) { + if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) { + continue; + } + + Variant v = p_resource->get(E->get().name); + if (v.is_ref()) { + RES res = v; + if (res.is_valid()) { + if ((res->get_path() == "" || res->get_path().find("::") > -1) && !r_remap.has(res)) { + _create_remap_for_resource(res, r_remap); + } + } + } + } +} + void SceneTreeDock::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_owners"), &SceneTreeDock::_set_owners); ClassDB::bind_method(D_METHOD("_unhandled_key_input"), &SceneTreeDock::_unhandled_key_input); @@ -2806,6 +2962,9 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel ED_SHORTCUT("scene_tree/add_child_node", TTR("Add Child Node"), KEY_MASK_CMD | KEY_A); ED_SHORTCUT("scene_tree/instance_scene", TTR("Instance Child Scene")); ED_SHORTCUT("scene_tree/expand_collapse_all", TTR("Expand/Collapse All")); + ED_SHORTCUT("scene_tree/cut_node", TTR("Cut"), KEY_MASK_CMD | KEY_X); + ED_SHORTCUT("scene_tree/copy_node", TTR("Copy"), KEY_MASK_CMD | KEY_C); + ED_SHORTCUT("scene_tree/paste_node", TTR("Paste"), KEY_MASK_CMD | KEY_V); ED_SHORTCUT("scene_tree/change_node_type", TTR("Change Type")); ED_SHORTCUT("scene_tree/attach_script", TTR("Attach Script")); ED_SHORTCUT("scene_tree/extend_script", TTR("Extend Script")); @@ -2816,9 +2975,8 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel ED_SHORTCUT("scene_tree/reparent", TTR("Reparent")); ED_SHORTCUT("scene_tree/reparent_to_new_node", TTR("Reparent to New Node")); ED_SHORTCUT("scene_tree/make_root", TTR("Make Scene Root")); - ED_SHORTCUT("scene_tree/merge_from_scene", TTR("Merge From Scene")); ED_SHORTCUT("scene_tree/save_branch_as_scene", TTR("Save Branch as Scene")); - ED_SHORTCUT("scene_tree/copy_node_path", TTR("Copy Node Path"), KEY_MASK_CMD | KEY_C); + ED_SHORTCUT("scene_tree/copy_node_path", TTR("Copy Node Path"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_C); ED_SHORTCUT("scene_tree/delete_no_confirm", TTR("Delete (No Confirm)"), KEY_MASK_SHIFT | KEY_DELETE); ED_SHORTCUT("scene_tree/delete", TTR("Delete"), KEY_DELETE); @@ -2841,7 +2999,7 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel filter->set_h_size_flags(SIZE_EXPAND_FILL); filter->set_placeholder(TTR("Filter nodes")); filter_hbc->add_child(filter); - filter->add_theme_constant_override("minimum_spaces", 0); + filter->add_theme_constant_override("minimum_character_width", 0); filter->connect("text_changed", callable_mp(this, &SceneTreeDock::_filter_changed)); button_create_script = memnew(Button); @@ -2936,7 +3094,7 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel delete_dialog = memnew(ConfirmationDialog); add_child(delete_dialog); - delete_dialog->connect("confirmed", callable_mp(this, &SceneTreeDock::_delete_confirm)); + delete_dialog->connect("confirmed", callable_mp(this, &SceneTreeDock::_delete_confirm), varray(false)); editable_instance_remove_dialog = memnew(ConfirmationDialog); add_child(editable_instance_remove_dialog); @@ -2946,10 +3104,6 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel add_child(placeholder_editable_instance_remove_dialog); placeholder_editable_instance_remove_dialog->connect("confirmed", callable_mp(this, &SceneTreeDock::_toggle_placeholder_from_selection)); - import_subscene_dialog = memnew(EditorSubScene); - add_child(import_subscene_dialog); - import_subscene_dialog->connect("subscene_selected", callable_mp(this, &SceneTreeDock::_import_subscene)); - new_scene_from_dialog = memnew(EditorFileDialog); new_scene_from_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE); add_child(new_scene_from_dialog); @@ -2981,3 +3135,9 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel EDITOR_DEF("interface/editors/derive_script_globals_by_name", true); EDITOR_DEF("_use_favorites_root_selection", false); } + +SceneTreeDock::~SceneTreeDock() { + if (!node_clipboard.is_empty()) { + _clear_clipboard(); + } +} diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h index 4f8d85f07c..9bc281c7fb 100644 --- a/editor/scene_tree_dock.h +++ b/editor/scene_tree_dock.h @@ -34,7 +34,6 @@ #include "editor/connections_dialog.h" #include "editor/create_dialog.h" #include "editor/editor_data.h" -#include "editor/editor_sub_scene.h" #include "editor/groups_editor.h" #include "editor/quick_open.h" #include "editor/rename_dialog.h" @@ -58,6 +57,9 @@ class SceneTreeDock : public VBoxContainer { TOOL_NEW, TOOL_INSTANCE, TOOL_EXPAND_COLLAPSE, + TOOL_CUT, + TOOL_COPY, + TOOL_PASTE, TOOL_RENAME, TOOL_BATCH_RENAME, TOOL_REPLACE, @@ -71,7 +73,6 @@ class SceneTreeDock : public VBoxContainer { TOOL_REPARENT_TO_NEW_NODE, TOOL_MAKE_ROOT, TOOL_NEW_SCENE_FROM, - TOOL_MERGE_FROM_SCENE, TOOL_MULTI_EDIT, TOOL_ERASE, TOOL_COPY_NODE_PATH, @@ -126,6 +127,10 @@ class SceneTreeDock : public VBoxContainer { EditorData *editor_data; EditorSelection *editor_selection; + List<Node *> node_clipboard; + String clipboard_source_scene; + HashMap<String, Map<RES, RES>> clipboard_resource_remap; + ScriptCreateDialog *script_create_dialog; AcceptDialog *accept; ConfirmationDialog *delete_dialog; @@ -134,7 +139,6 @@ class SceneTreeDock : public VBoxContainer { ReparentDialog *reparent_dialog; EditorQuickOpen *quick_open; - EditorSubScene *import_subscene_dialog; EditorFileDialog *new_scene_from_dialog; LineEdit *filter; @@ -183,7 +187,7 @@ class SceneTreeDock : public VBoxContainer { void _script_created(Ref<Script> p_script); void _script_creation_closed(); - void _delete_confirm(); + void _delete_confirm(bool p_cut = false); void _toggle_editable_children_from_selection(); void _toggle_editable_children(Node *p_node); @@ -230,6 +234,10 @@ class SceneTreeDock : public VBoxContainer { void _feature_profile_changed(); + void _clear_clipboard(); + void _create_remap_for_node(Node *p_node, Map<RES, RES> &r_remap); + void _create_remap_for_resource(RES p_resource, Map<RES, RES> &r_remap); + bool profile_allow_editing; bool profile_allow_script_editing; @@ -267,6 +275,7 @@ public: ScriptCreateDialog *get_script_create_dialog() { return script_create_dialog; } SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSelection *p_editor_selection, EditorData &p_editor_data); + ~SceneTreeDock(); }; #endif // SCENE_TREE_DOCK_H diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp index b8475656ee..b9a3e2a801 100644 --- a/editor/scene_tree_editor.cpp +++ b/editor/scene_tree_editor.cpp @@ -156,7 +156,7 @@ void SceneTreeEditor::_toggle_visible(Node *p_node) { } } -bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) { +bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent, bool p_scroll_to_selected) { if (!p_node) { return false; } @@ -391,15 +391,19 @@ bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) { } } + bool scroll = false; + if (editor_selection) { if (editor_selection->is_selected(p_node)) { item->select(0); + scroll = p_scroll_to_selected; } } if (selected == p_node) { if (!editor_selection) { item->select(0); + scroll = p_scroll_to_selected; } item->set_as_cursor(0); } @@ -407,7 +411,7 @@ bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) { bool keep = (filter.is_subsequence_ofi(String(p_node->get_name()))); for (int i = 0; i < p_node->get_child_count(); i++) { - bool child_keep = _add_nodes(p_node->get_child(i), item); + bool child_keep = _add_nodes(p_node->get_child(i), item, p_scroll_to_selected); keep = keep || child_keep; } @@ -438,6 +442,9 @@ bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) { memdelete(item); return false; } else { + if (scroll) { + tree->scroll_to_item(item); + } return true; } } @@ -525,7 +532,7 @@ void SceneTreeEditor::_node_renamed(Node *p_node) { } } -void SceneTreeEditor::_update_tree() { +void SceneTreeEditor::_update_tree(bool p_scroll_to_selected) { if (!is_inside_tree()) { tree_dirty = false; return; @@ -534,7 +541,7 @@ void SceneTreeEditor::_update_tree() { updating_tree = true; tree->clear(); if (get_scene_node()) { - _add_nodes(get_scene_node(), nullptr); + _add_nodes(get_scene_node(), nullptr, p_scroll_to_selected); last_hash = hash_djb2_one_64(0); _compute_hash(get_scene_node(), last_hash); } @@ -817,7 +824,7 @@ void SceneTreeEditor::set_marked(Node *p_marked, bool p_selectable, bool p_child void SceneTreeEditor::set_filter(const String &p_filter) { filter = p_filter; - _update_tree(); + _update_tree(true); } String SceneTreeEditor::get_filter() const { @@ -1103,7 +1110,7 @@ void SceneTreeEditor::set_connecting_signal(bool p_enable) { } void SceneTreeEditor::_bind_methods() { - ClassDB::bind_method("_update_tree", &SceneTreeEditor::_update_tree); // Still used by some connect_compat. + ClassDB::bind_method(D_METHOD("_update_tree", "scroll_to_selected"), &SceneTreeEditor::_update_tree, DEFVAL(false)); // Still used by some connect_compat. ClassDB::bind_method("_rename_node", &SceneTreeEditor::_rename_node); ClassDB::bind_method("_test_update_tree", &SceneTreeEditor::_test_update_tree); @@ -1253,7 +1260,7 @@ SceneTreeDialog::SceneTreeDialog() { filter = memnew(LineEdit); filter->set_h_size_flags(Control::SIZE_EXPAND_FILL); filter->set_placeholder(TTR("Filter nodes")); - filter->add_theme_constant_override("minimum_spaces", 0); + filter->add_theme_constant_override("minimum_character_width", 0); filter->connect("text_changed", callable_mp(this, &SceneTreeDialog::_filter_changed)); vbc->add_child(filter); diff --git a/editor/scene_tree_editor.h b/editor/scene_tree_editor.h index 831723a27c..7d3419516d 100644 --- a/editor/scene_tree_editor.h +++ b/editor/scene_tree_editor.h @@ -71,9 +71,9 @@ class SceneTreeEditor : public Control { void _compute_hash(Node *p_node, uint64_t &hash); - bool _add_nodes(Node *p_node, TreeItem *p_parent); + bool _add_nodes(Node *p_node, TreeItem *p_parent, bool p_scroll_to_selected = false); void _test_update_tree(); - void _update_tree(); + void _update_tree(bool p_scroll_to_selected = false); void _tree_changed(); void _node_removed(Node *p_node); void _node_renamed(Node *p_node); diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index 1dad3c091d..ffd5716364 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -143,7 +143,7 @@ void EditorSettingsDialog::_unhandled_input(const Ref<InputEvent> &p_event) { if (k.is_valid() && k->is_pressed()) { bool handled = false; - if (ED_IS_SHORTCUT("editor/undo", p_event)) { + if (ED_IS_SHORTCUT("ui_undo", p_event)) { String action = undo_redo->get_current_action_name(); if (action != "") { EditorNode::get_log()->add_message("Undo: " + action, EditorLog::MSG_TYPE_EDITOR); @@ -152,7 +152,7 @@ void EditorSettingsDialog::_unhandled_input(const Ref<InputEvent> &p_event) { handled = true; } - if (ED_IS_SHORTCUT("editor/redo", p_event)) { + if (ED_IS_SHORTCUT("ui_redo", p_event)) { undo_redo->redo(); String action = undo_redo->get_current_action_name(); if (action != "") { diff --git a/editor/shader_globals_editor.cpp b/editor/shader_globals_editor.cpp index 14d305e34f..a61b4aa3b9 100644 --- a/editor/shader_globals_editor.cpp +++ b/editor/shader_globals_editor.cpp @@ -427,7 +427,7 @@ void ShaderGlobalsEditor::_variable_deleted(const String &p_variable) { void ShaderGlobalsEditor::_changed() { emit_signal("globals_changed"); if (!interface->block_update) { - interface->_change_notify(); + interface->notify_property_list_changed(); } } diff --git a/editor/translations/af.po b/editor/translations/af.po index 5caef149fa..9c2cb8bdee 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -3143,6 +3143,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -7058,16 +7074,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7402,6 +7408,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -10017,6 +10027,11 @@ msgid "Projects" msgstr "Projek Stigters" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Laai" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/ar.po b/editor/translations/ar.po index 2cfe1ac76c..82edf48cf2 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -3154,6 +3154,25 @@ msgid "Open & Run a Script" msgstr "فتح و تشغيل كود" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"الملفات التالية أحدث على القرص.\n" +"ما الإجراء الذي ينبغي اتخاذه؟:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "إعادة تحميل" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "إعادة حفظ" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "موروث جديد" @@ -7008,16 +7027,6 @@ msgstr "" "الملفات التالية أحدث على القرص.\n" "ما الإجراء الذي ينبغي اتخاذه؟:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "إعادة تحميل" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "إعادة حفظ" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "مُنقح الأخطاء" @@ -7335,6 +7344,11 @@ msgid "Yaw" msgstr "الإنحراف Yaw" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "الحجم: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "كائنات مرسومة" @@ -10023,6 +10037,11 @@ msgid "Projects" msgstr "المشاريع" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "يستقبل المرايا، من فضلك إنتظر..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "آخر ما تم تعديله" diff --git a/editor/translations/bg.po b/editor/translations/bg.po index db594a8500..886a8c8e6a 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-01-15 15:38+0000\n" +"PO-Revision-Date: 2021-02-15 10:51+0000\n" "Last-Translator: Любомир Василев <lyubomirv@gmx.com>\n" "Language-Team: Bulgarian <https://hosted.weblate.org/projects/godot-engine/" "godot/bg/>\n" @@ -681,13 +681,12 @@ msgid "Line Number:" msgstr "Номер на реда:" #: editor/code_editor.cpp -#, fuzzy msgid "%d replaced." -msgstr "Замяна..." +msgstr "%d заменени." #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d match." -msgstr "" +msgstr "%d съвпадение." #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d matches." @@ -695,7 +694,7 @@ msgstr "%d съвпадения." #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" -msgstr "" +msgstr "Различаване на малки и главни букви" #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Whole Words" @@ -2233,11 +2232,11 @@ msgstr "" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" -msgstr "" +msgstr "Не може да се зареди библиотеката с полигонни мрежи за сливане!" #: editor/editor_node.cpp msgid "Error saving MeshLibrary!" -msgstr "" +msgstr "Грешка при запазването на библиотеката с полигонни мрежи!" #: editor/editor_node.cpp msgid "Can't load TileSet for merging!" @@ -2360,7 +2359,7 @@ msgstr "Операцията не може да се извърши без сц #: editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "" +msgstr "Изнасяне на библиотека с полигонни мрежи" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." @@ -2642,7 +2641,7 @@ msgstr "" #: editor/editor_node.cpp msgid "MeshLibrary..." -msgstr "" +msgstr "Библиотека с полигонни мрежи…" #: editor/editor_node.cpp msgid "TileSet..." @@ -2759,6 +2758,8 @@ msgid "" "When this option is enabled, navigation meshes and polygons will be visible " "in the running project." msgstr "" +"Ако тази настройка е включено, навигационните полигони и мрежи ще бъдат " +"видими в изпълняващия се проект." #: editor/editor_node.cpp msgid "Synchronize Scene Changes" @@ -2999,6 +3000,25 @@ msgstr "" #: editor/editor_node.cpp #, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Следните файлове са по-нови на диска.\n" +"Кое действие трябва да се предприеме?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Презареждане" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Презаписване" + +#: editor/editor_node.cpp +#, fuzzy msgid "New Inherited" msgstr "Нов скрипт" @@ -3737,19 +3757,16 @@ msgid "Searching..." msgstr "Търсене..." #: editor/find_in_files.cpp -#, fuzzy msgid "%d match in %d file." -msgstr "%d съвпадения." +msgstr "%d съвпадение в %d файл." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d file." -msgstr "%d съвпадения." +msgstr "%d съвпадения в %d файл." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d files." -msgstr "%d съвпадения." +msgstr "%d съвпадения в %d файла." #: editor/groups_editor.cpp msgid "Add to Group" @@ -3859,7 +3876,7 @@ msgstr "" #: editor/import/resource_importer_scene.cpp msgid "Generating for Mesh: " -msgstr "" +msgstr "Създаване за полигонна мрежа: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script..." @@ -4343,7 +4360,7 @@ msgstr "Ново име на анимацията:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" -msgstr "" +msgstr "Нова анимация" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" @@ -4357,20 +4374,20 @@ msgstr "Изтриване на анимацията?" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Remove Animation" -msgstr "" +msgstr "Премахване на анимацията" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Invalid animation name!" -msgstr "" +msgstr "Неправилно име на анимацията!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation name already exists!" -msgstr "" +msgstr "Вече съществува анимация с това име!" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Rename Animation" -msgstr "" +msgstr "Преименуване на анимацията" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" @@ -4378,19 +4395,19 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" -msgstr "" +msgstr "Промяна на времето на смесване" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" -msgstr "" +msgstr "Зареждане на анимация" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate Animation" -msgstr "" +msgstr "Дублиране на анимацията" #: editor/plugins/animation_player_editor_plugin.cpp msgid "No animation to copy!" -msgstr "" +msgstr "Няма анимация за копиране!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "No animation resource on clipboard!" @@ -4398,11 +4415,11 @@ msgstr "Няма ресурс–анимация в буфера за обмен #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" -msgstr "" +msgstr "Поставена анимация" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Paste Animation" -msgstr "" +msgstr "Поставяне на анимация" #: editor/plugins/animation_player_editor_plugin.cpp msgid "No animation to edit!" @@ -4411,30 +4428,32 @@ msgstr "Няма анимация за редактиране!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" msgstr "" +"Възпроизвеждане на избраната анимация наобратно от текущата позиция. (A)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" -msgstr "" +msgstr "Възпроизвеждане на избраната анимация наобратно от края. (Shift+A)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Stop animation playback. (S)" -msgstr "" +msgstr "Спиране на възпроизвеждането на анимацията. (S)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from start. (Shift+D)" -msgstr "" +msgstr "Възпроизвеждане на избраната анимация от началото. (Shift+D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from current pos. (D)" -msgstr "" +msgstr "Възпроизвеждане на избраната анимация от текущата позиция. (D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation position (in seconds)." -msgstr "" +msgstr "Позиция в анимацията (в секунди)." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Scale animation playback globally for the node." msgstr "" +"Скалиране на скоростта на възпроизвеждане на анимацията глобално за възела." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" @@ -4442,7 +4461,7 @@ msgstr "Инструменти за анимациите" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation" -msgstr "" +msgstr "Анимация" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Edit Transitions..." @@ -4450,7 +4469,7 @@ msgstr "Редактиране на преходите..." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Open in Inspector" -msgstr "" +msgstr "Отваряне в инспектора" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." @@ -4458,52 +4477,51 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" -msgstr "" +msgstr "Авт. възпроизвеждане при зареждане" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Enable Onion Skinning" -msgstr "" +msgstr "Показване на избледняващи кадри" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Onion Skinning Options" -msgstr "" +msgstr "Настройки на режима с избледняващи кадри" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Directions" msgstr "Направления" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Past" -msgstr "Поставяне" +msgstr "Минало" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Future" -msgstr "" +msgstr "Бъдеще" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Depth" -msgstr "" +msgstr "Дълбочина" #: editor/plugins/animation_player_editor_plugin.cpp msgid "1 step" -msgstr "" +msgstr "1 стъпка" #: editor/plugins/animation_player_editor_plugin.cpp msgid "2 steps" -msgstr "" +msgstr "2 стъпки" #: editor/plugins/animation_player_editor_plugin.cpp msgid "3 steps" -msgstr "" +msgstr "3 стъпки" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Differences Only" -msgstr "" +msgstr "Само разликите" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" -msgstr "" +msgstr "Принудително модулиране на бялото" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" @@ -4515,11 +4533,11 @@ msgstr "Закачане на AnimationPlayer" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" -msgstr "" +msgstr "Създаване на нова анимация" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Name:" -msgstr "" +msgstr "Име на анимацията:" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/resource_preloader_editor_plugin.cpp @@ -4530,15 +4548,15 @@ msgstr "Грешка!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Times:" -msgstr "" +msgstr "Времена на смесване:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" -msgstr "" +msgstr "Следваща (авт. опашка):" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" -msgstr "" +msgstr "Времена на смесване между анимациите" #: editor/plugins/animation_state_machine_editor.cpp msgid "Move Node" @@ -4555,23 +4573,23 @@ msgstr "Добавяне на преход" #: editor/plugins/animation_state_machine_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Add Node" -msgstr "" +msgstr "Добавяне на възел" #: editor/plugins/animation_state_machine_editor.cpp msgid "End" -msgstr "" +msgstr "Край" #: editor/plugins/animation_state_machine_editor.cpp msgid "Immediate" -msgstr "" +msgstr "Незабавно" #: editor/plugins/animation_state_machine_editor.cpp msgid "Sync" -msgstr "" +msgstr "Синхронизиране" #: editor/plugins/animation_state_machine_editor.cpp msgid "At End" -msgstr "" +msgstr "На края" #: editor/plugins/animation_state_machine_editor.cpp msgid "Travel" @@ -4799,17 +4817,15 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, return code:" -msgstr "Заявката се провали. Код:" +msgstr "Заявката беше неуспешна. Код:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed." -msgstr "Запитване..." +msgstr "Заявката беше неуспешна." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Cannot save response to:" -msgstr "Не може да се премахне:" +msgstr "Отговорът не може да бъде запазен в:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Write error." @@ -4904,14 +4920,12 @@ msgid "Name (Z-A)" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "License (A-Z)" -msgstr "Лиценз" +msgstr "Лиценз (А-Я)" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "License (Z-A)" -msgstr "Лиценз" +msgstr "Лиценз (Я-А)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "First" @@ -4971,9 +4985,8 @@ msgid "Testing" msgstr "Тестово" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Loading..." -msgstr "Зареди..." +msgstr "Зареждане…" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -4984,40 +4997,52 @@ msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" +"Не може да се установи пътят за запазване на изображения с карти на " +"осветеност.\n" +"Запазете сцената и опитайте отново." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake " "Light' flag is on." msgstr "" +"Няма полигонни мрежи за изпичане. Уверете се, че те съдържат канал UV2 и че " +"флагът „Изпичане на светлината“ е включен." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." msgstr "" +"Грешка при създаването на изображения с карти на осветеност. Уверете се, че " +"пътят е достъпен за запис." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Не може да се определи размерът на картата на осветеност. Твърде малък ли е " +"максималният размер?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Има неподходяща полигонна мрежа. Уверете се, че стойностите в канала UV2 се " +"принадлежат на квадратната област [0.0,1.0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Редакторът на Godot е бил компилиран без поддръжка за трасиране на лъчи. Не " +"могат да се изпичат карти на осветеност." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" -msgstr "" +msgstr "Изпичане на карти на осветеност" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Избор на шаблонен файл" +msgstr "Изберете файл за изпичане на карта на осветеност:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5026,71 +5051,63 @@ msgstr "Преглед" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" -msgstr "" +msgstr "Настройване на прилепването" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Grid Offset:" -msgstr "" +msgstr "Отместване на мрежата:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Grid Step:" -msgstr "" +msgstr "Стъпка на мрежата:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Primary Line Every:" -msgstr "" +msgstr "Основна линия на всеки:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "steps" -msgstr "" +msgstr "стъпки" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" -msgstr "Изместване на въртенето:" +msgstr "Отместване при завъртане:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Step:" msgstr "Стъпка при завъртане:" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Step:" -msgstr "Мащаб:" +msgstr "Стъпка на мащабиране:" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Vertical Guide" -msgstr "Пемести вертикална помощна линия" +msgstr "Преместване на вертикалния водач" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Vertical Guide" -msgstr "Създай нова вертикална помощна линия" +msgstr "Създаване на нов вертикален водач" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Vertical Guide" -msgstr "Премахни вертикална помощна линия" +msgstr "Премахване на вертикалния водач" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Horizontal Guide" -msgstr "Премести хоризонтална помощна линия" +msgstr "Преместване на хоризонталния водач" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Horizontal Guide" -msgstr "Създай нова хоризонтална помощна линия" +msgstr "Създаване на нов хоризонтален водач" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Horizontal Guide" -msgstr "Премахни хоризонтална помощна линия" +msgstr "Премахване на хоризонталния водач" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Horizontal and Vertical Guides" -msgstr "Създай нова хоризонтална и вертикална помощна линия" +msgstr "Създаване на нов хоризонтален и вертикален водач" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" @@ -5149,44 +5166,36 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Top Left" -msgstr "Режим на Завъртане" +msgstr "Горе вляво" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Top Right" -msgstr "Завъртане на Полигон" +msgstr "Горе вдясно" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Bottom Right" -msgstr "Завъртане на Полигон" +msgstr "Долу вдясно" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Bottom Left" -msgstr "Режим на Завъртане" +msgstr "Долу вляво" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Center Left" -msgstr "Центрирай върху Селекцията" +msgstr "По средата вляво" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Center Top" -msgstr "Центрирай върху Селекцията" +msgstr "По средата горе" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Center Right" -msgstr "Завъртане на Полигон" +msgstr "По средата вдясно" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Center Bottom" -msgstr "Центрирай върху Селекцията" +msgstr "По средата долу" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center" @@ -5252,9 +5261,8 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Lock Selected" -msgstr "Изберете метод" +msgstr "Заключване на избраното" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5263,29 +5271,25 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Group Selected" -msgstr "Нова сцена" +msgstr "Групиране на избраното" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Ungroup Selected" -msgstr "Нова сцена" +msgstr "Разгрупиране на избраното" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Guides" -msgstr "Възпроизвеждане на сцена по избор" +msgstr "Изчистване на водачите" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Custom Bone(s) from Node(s)" -msgstr "Възпроизвеждане на сцена по избор" +msgstr "Създаване на персонализирана(и) кост(и) от възела(възлите)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Bones" @@ -5480,7 +5484,7 @@ msgstr "Преглед" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Always Show Grid" -msgstr "" +msgstr "Винаги да се показва решетката" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5488,11 +5492,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Rulers" -msgstr "" +msgstr "Показване на линиите" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "" +msgstr "Показване на водачите" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" @@ -5687,12 +5691,12 @@ msgstr "" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Mesh" -msgstr "" +msgstr "Създаване на излъчващи точки от полигонната мрежа" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Node" -msgstr "" +msgstr "Създаване на излъчващи точки от възела" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat 0" @@ -5789,7 +5793,7 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh is empty!" -msgstr "" +msgstr "Полигонната мрежа е празна!" #: editor/plugins/mesh_instance_editor_plugin.cpp #, fuzzy @@ -5834,19 +5838,21 @@ msgstr "Създаване на няколко изпъкнали форми" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" -msgstr "" +msgstr "Създаване на навигационна полигонна мрежа" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "Съдържащата се полигонна мрежа не е от тип ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" msgstr "" +"Разгъването на UV беше неуспешно. Възможно ли е полигонната мрежа да се " +"състои от повече от една форма?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "Няма полигонна мрежа за дебъгване." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" @@ -5854,15 +5860,15 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "" +msgstr "В MeshInstance няма полигонна мрежа!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" -msgstr "" +msgstr "Полигонната мрежа няма повърхност, от която да се създадат контури!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" -msgstr "" +msgstr "Примитивният тип на полигонната мрежа не е PRIMITIVE_TRIANGLES!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" @@ -5874,7 +5880,7 @@ msgstr "Създаване на контур" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh" -msgstr "" +msgstr "Полигонна мрежа" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" @@ -5921,7 +5927,7 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh..." -msgstr "" +msgstr "Създаване на контурна полигонна мрежа…" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" @@ -5930,6 +5936,10 @@ msgid "" "This can be used instead of the SpatialMaterial Grow property when using " "that property isn't possible." msgstr "" +"Създава статична полигонна мрежа за контура. Нормалите на контурната " +"полигонна мрежа ще бъдат автоматично обърнати.\n" +"Това може да се използва вместо свойството Grow на SpatialMaterial, когато " +"това свойство не може да се променя." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "View UV1" @@ -5945,7 +5955,7 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" -msgstr "" +msgstr "Създаване на контурна полигонна мрежа" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" @@ -5968,9 +5978,8 @@ msgstr "" "%s" #: editor/plugins/mesh_library_editor_plugin.cpp -#, fuzzy msgid "Mesh Library" -msgstr "Изнасяне на библиотеката" +msgstr "Библиотека с полигонни мрежи" #: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp @@ -5992,22 +6001,27 @@ msgstr "Обновяване от сцена" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." msgstr "" +"Няма посочен източник за полигонна мрежа (и във възела няма MultiMesh)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." msgstr "" +"Няма посочен източник за полигонна мрежа (и MultiMesh не съдържа полигонна " +"мрежа)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." -msgstr "" +msgstr "Източникът за полигонна мрежа е неправилен (грешен път)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "" +msgstr "Източникът за полигонна мрежа е неправилен (не е MeshInstance)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." msgstr "" +"Източникът за полигонна мрежа е неправилен (не съдържа ресурс, който е " +"полигонна мрежа)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." @@ -6027,7 +6041,7 @@ msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" -msgstr "" +msgstr "Изберете източник за полигонна мрежа:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" @@ -6047,7 +6061,7 @@ msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" -msgstr "" +msgstr "Източник за полигонна мрежа:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" @@ -6063,7 +6077,7 @@ msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" -msgstr "" +msgstr "Ос сочеща нагоре за полигонната мрежа:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" @@ -6104,9 +6118,8 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Превръщане в Polygon2D" +msgstr "Преобразуване в CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6118,9 +6131,8 @@ msgid "The geometry's faces don't contain any area." msgstr "" #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "The geometry doesn't contain any faces." -msgstr "Възелът не съдържа геометрия (лица)." +msgstr "Геометрията не съдържа страни." #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't inherit from Spatial." @@ -6131,9 +6143,8 @@ msgid "\"%s\" doesn't contain geometry." msgstr "„%s“ не съдържа геометрия." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "\"%s\" doesn't contain face geometry." -msgstr "Възелът не съдържа геометрия." +msgstr "„%s“ не съдържа геометрия със страни." #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter" @@ -6141,15 +6152,15 @@ msgstr "" #: editor/plugins/particles_editor_plugin.cpp msgid "Emission Points:" -msgstr "" +msgstr "Излъчващи точки:" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points" -msgstr "" +msgstr "Точки на повърхността" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points+Normal (Directed)" -msgstr "" +msgstr "Точки на повърхността + нормали (насочени)" #: editor/plugins/particles_editor_plugin.cpp msgid "Volume" @@ -6157,7 +6168,7 @@ msgstr "Обем" #: editor/plugins/particles_editor_plugin.cpp msgid "Emission Source: " -msgstr "" +msgstr "Източник на излъчването: " #: editor/plugins/particles_editor_plugin.cpp msgid "A processor material of type 'ParticlesMaterial' is required." @@ -6805,16 +6816,6 @@ msgstr "" "Следните файлове са по-нови на диска.\n" "Кое действие трябва да се предприеме?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Презареждане" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Презаписване" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Дебъгер" @@ -7131,6 +7132,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -7303,9 +7308,8 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "Свободен Изглед Отпред" +msgstr "Модификатор за забавяне на свободния изглед" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Rotation Locked" @@ -7557,15 +7561,15 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't replace by mesh." -msgstr "" +msgstr "Неправилна геометрия. Не може да се замени с полигонна мрежа." #: editor/plugins/sprite_editor_plugin.cpp msgid "Convert to Mesh2D" -msgstr "" +msgstr "Преобразуване в Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create polygon." -msgstr "" +msgstr "Неправилна геометрия, не може да се създаде полигон." #: editor/plugins/sprite_editor_plugin.cpp msgid "Convert to Polygon2D" @@ -7573,7 +7577,7 @@ msgstr "Превръщане в Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create collision polygon." -msgstr "" +msgstr "Неправилна геометрия, не може да се създаде полигон за колизии." #: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D Sibling" @@ -7585,7 +7589,7 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D Sibling" -msgstr "" +msgstr "Създаване на съседен LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" @@ -7593,15 +7597,15 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " -msgstr "" +msgstr "Опростяване: " #: editor/plugins/sprite_editor_plugin.cpp msgid "Shrink (Pixels): " -msgstr "" +msgstr "Смаляване (пиксели): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " -msgstr "" +msgstr "Уголемяване (пиксели): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Update Preview" @@ -7617,11 +7621,11 @@ msgstr "Няма избрани кадри" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add %d Frame(s)" -msgstr "" +msgstr "Добавяне на %d кадър/кадри" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frame" -msgstr "" +msgstr "Добавяне на кадър" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Unable to load images" @@ -7629,27 +7633,27 @@ msgstr "Изображенията не могат да бъдат зареде #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" -msgstr "" +msgstr "ГРЕШКА: Не може да се зареди ресурсът с кадъра!" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Resource clipboard is empty or not a texture!" -msgstr "" +msgstr "Буферът за обмен на ресурси е празен или не съдържа текстура!" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Paste Frame" -msgstr "" +msgstr "Поставяне на кадър" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Empty" -msgstr "" +msgstr "Добавяне на празен" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation FPS" -msgstr "" +msgstr "Промяна на скоростта (кадри/сек) на анимацията" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "(empty)" -msgstr "" +msgstr "(празно)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Move Frame" @@ -7669,7 +7673,7 @@ msgstr "Скорост:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" -msgstr "" +msgstr "Повтаряне" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animation Frames:" @@ -7685,11 +7689,11 @@ msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" -msgstr "" +msgstr "Вмъкване на празен (преди)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (After)" -msgstr "" +msgstr "Вмъкване на празен (след)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Move (Before)" @@ -7697,7 +7701,7 @@ msgstr "Преместване (преди)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Move (After)" -msgstr "" +msgstr "Преместване (след)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Select Frames" @@ -7705,11 +7709,11 @@ msgstr "Избиране на кадри" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Horizontal:" -msgstr "" +msgstr "Хоризонтала:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Vertical:" -msgstr "" +msgstr "Вертикала:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Select/Clear All Frames" @@ -7729,57 +7733,56 @@ msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Margin" -msgstr "" +msgstr "Задаване на отстъп" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" -msgstr "" +msgstr "Режим на прилепване:" #: editor/plugins/texture_region_editor_plugin.cpp #: scene/resources/visual_shader.cpp msgid "None" -msgstr "" +msgstr "Няма" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Pixel Snap" -msgstr "" +msgstr "Прилепване към пикселите" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Grid Snap" -msgstr "" +msgstr "Прилепване към решетката" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Auto Slice" -msgstr "" +msgstr "Автоматично отрязване" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Offset:" -msgstr "" +msgstr "Отместване:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Step:" -msgstr "" +msgstr "Стъпка:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Sep.:" -msgstr "" +msgstr "Разделител:" #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "TextureRegion" -msgstr "Двуизмерна текстура" +msgstr "Текстурна област" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" -msgstr "" +msgstr "Добавяне на всички елементи" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All" -msgstr "" +msgstr "Добавяне на всичко" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove All Items" -msgstr "" +msgstr "Премахване на всички елементи" #: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp msgid "Remove All" @@ -7791,7 +7794,7 @@ msgstr "Редактиране на темата" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme editing menu." -msgstr "" +msgstr "Меню за редактиране на темата." #: editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" @@ -7823,7 +7826,7 @@ msgstr "Заключен бутон" #: editor/plugins/theme_editor_plugin.cpp msgid "Item" -msgstr "" +msgstr "Елемент" #: editor/plugins/theme_editor_plugin.cpp msgid "Disabled Item" @@ -7831,11 +7834,11 @@ msgstr "Заключен елемент" #: editor/plugins/theme_editor_plugin.cpp msgid "Check Item" -msgstr "" +msgstr "Елемент за отметка" #: editor/plugins/theme_editor_plugin.cpp msgid "Checked Item" -msgstr "" +msgstr "Отметнат елемент" #: editor/plugins/theme_editor_plugin.cpp msgid "Radio Item" @@ -7847,27 +7850,27 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Named Sep." -msgstr "" +msgstr "Именуван разд." #: editor/plugins/theme_editor_plugin.cpp msgid "Submenu" -msgstr "" +msgstr "Подменю" #: editor/plugins/theme_editor_plugin.cpp msgid "Subitem 1" -msgstr "" +msgstr "Поделемент 1" #: editor/plugins/theme_editor_plugin.cpp msgid "Subitem 2" -msgstr "" +msgstr "Поделемент 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" -msgstr "" +msgstr "Има" #: editor/plugins/theme_editor_plugin.cpp msgid "Many" -msgstr "" +msgstr "Много" #: editor/plugins/theme_editor_plugin.cpp msgid "Disabled LineEdit" @@ -7875,15 +7878,15 @@ msgstr "Заключено текстово поле" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" -msgstr "" +msgstr "Раздел 1" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 2" -msgstr "" +msgstr "Раздел 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 3" -msgstr "" +msgstr "Раздел 3" #: editor/plugins/theme_editor_plugin.cpp msgid "Editable Item" @@ -7891,32 +7894,32 @@ msgstr "Редактируем елемент" #: editor/plugins/theme_editor_plugin.cpp msgid "Subtree" -msgstr "" +msgstr "Поддърво" #: editor/plugins/theme_editor_plugin.cpp msgid "Has,Many,Options" -msgstr "" +msgstr "Има,Много,Опции" #: editor/plugins/theme_editor_plugin.cpp msgid "Data Type:" -msgstr "" +msgstr "Тип на данните:" #: editor/plugins/theme_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" -msgstr "" +msgstr "Иконка" #: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp msgid "Style" -msgstr "" +msgstr "Стил" #: editor/plugins/theme_editor_plugin.cpp msgid "Font" -msgstr "" +msgstr "Шрифт" #: editor/plugins/theme_editor_plugin.cpp msgid "Color" -msgstr "" +msgstr "Цват" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme File" @@ -7924,11 +7927,11 @@ msgstr "Файл с тема" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" -msgstr "" +msgstr "Изтриване на избраното" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Fix Invalid Tiles" -msgstr "" +msgstr "Поправка на неправилните плочки" #: editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp @@ -8024,9 +8027,8 @@ msgid "Add Texture(s) to TileSet." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected Texture from TileSet." -msgstr "Преместване на пътечката нагоре." +msgstr "Изтриване на избраната текстура от плочния набор." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -8041,9 +8043,8 @@ msgid "New Single Tile" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "New Autotile" -msgstr "Нов TextFile" +msgstr "Нова авт. плочка" #: editor/plugins/tile_set_editor_plugin.cpp msgid "New Atlas" @@ -8278,9 +8279,8 @@ msgid "Edit Collision Polygon" msgstr "Редактиране на полигона за колизии" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Occlusion Polygon" -msgstr "Приставки" +msgstr "Редактиране на полигона за прикриване" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Navigation Polygon" @@ -8311,9 +8311,8 @@ msgid "Remove Collision Polygon" msgstr "Премахване на полигона за колизии" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Occlusion Polygon" -msgstr "Преместване на Полигон" +msgstr "Премахване на полигона за прикриване" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Navigation Polygon" @@ -9671,6 +9670,11 @@ msgid "Projects" msgstr "Проекти" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Зареждане…" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" @@ -10649,9 +10653,8 @@ msgid "Open Script / Choose Location" msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Open Script" -msgstr "Нова сцена" +msgstr "Отваряне на скрипта" #: editor/script_create_dialog.cpp msgid "File exists, it will be reused." @@ -10662,9 +10665,8 @@ msgid "Invalid path." msgstr "Неправилен път." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid class name." -msgstr "невалидно име на Група." +msgstr "Неправилно име на клас." #: editor/script_create_dialog.cpp msgid "Invalid inherited parent name or path." @@ -10691,9 +10693,8 @@ msgid "Will load an existing script file." msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Script file already exists." -msgstr "Група с това име вече съществува." +msgstr "Скриптовият файл вече съществува." #: editor/script_create_dialog.cpp msgid "" @@ -10702,9 +10703,8 @@ msgid "" msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Клас:" +msgstr "Име на класа:" #: editor/script_create_dialog.cpp msgid "Template:" @@ -10715,9 +10715,8 @@ msgid "Built-in Script:" msgstr "Вграден скрипт:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Attach Node Script" -msgstr "Нова сцена" +msgstr "Закачане на скрипт" #: editor/script_editor_debugger.cpp msgid "Remote " @@ -10796,9 +10795,8 @@ msgid "Profiler" msgstr "" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Network Profiler" -msgstr "Изнасяне на проекта" +msgstr "Профилиране на мрежата" #: editor/script_editor_debugger.cpp msgid "Monitor" @@ -10825,9 +10823,8 @@ msgid "Total:" msgstr "" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Export list to a CSV file" -msgstr "Изнасяне на профила" +msgstr "Изнасяне на списъка като файл CSV" #: editor/script_editor_debugger.cpp msgid "Resource Path" @@ -10998,9 +10995,8 @@ msgid "Add an architecture entry" msgstr "" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "GDNativeLibrary" -msgstr "Изнасяне на библиотеката" +msgstr "Библиотека GDNative" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Enabled GDNative Singleton" @@ -11032,66 +11028,59 @@ msgid "Not a script with an instance" msgstr "Скриптът няма инстанция" #: modules/gdscript/gdscript_functions.cpp -#, fuzzy msgid "Not based on a script" -msgstr "Обектът не е базиран на скрипт" +msgstr "Не се базира на скрипт" #: modules/gdscript/gdscript_functions.cpp -#, fuzzy msgid "Not based on a resource file" -msgstr "Обектът не е базиран на ресурсен файл" +msgstr "Не се базира на ресурсен файл" #: modules/gdscript/gdscript_functions.cpp -#, fuzzy msgid "Invalid instance dictionary format (missing @path)" -msgstr "Невалиден формат на инстанцията в речника (липсва @path)" +msgstr "Неправилен формат в речника на инстанциите (липсва @path)" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (can't load script at @path)" msgstr "" -"Неправилен формат на инстанцията в речника (скриптът в @path не може да бъде " +"Неправилен формат в речника на инстанциите (скриптът в @path не може да бъде " "зареден)" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (invalid script at @path)" msgstr "" -"Неправилен формат на инстанцията в речника (скриптът в @path е невалиден)" +"Неправилен формат в речника на инстанциите (скриптът в @path е невалиден)" #: modules/gdscript/gdscript_functions.cpp -#, fuzzy msgid "Invalid instance dictionary (invalid subclasses)" -msgstr "Невалиден формат на инстанцията в речника (невалиден подклас)" +msgstr "Неправилен формат в речника на инстанциите (невалиден подклас)" #: modules/gdscript/gdscript_functions.cpp msgid "Object can't provide a length." msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Next Plane" -msgstr "Следващ подпрозорец" +msgstr "Следваща равнина" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Previous Plane" -msgstr "Предишен подпрозорец" +msgstr "Предходна равнина" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Plane:" -msgstr "" +msgstr "Равнина:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Next Floor" -msgstr "" +msgstr "Следващ под" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Previous Floor" -msgstr "Предишен подпрозорец" +msgstr "Предходен под" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Floor:" -msgstr "" +msgstr "Под:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Delete Selection" @@ -11174,37 +11163,34 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Paste Selects" -msgstr "Настройки" +msgstr "Поставяне на избраното" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Clear Selection" -msgstr "Нова сцена" +msgstr "Изчистване на избраното" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Fill Selection" -msgstr "Нова сцена" +msgstr "Запълване на избраното" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "GridMap Settings" -msgstr "Настройки" +msgstr "Настройки на GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Pick Distance:" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Filter meshes" -msgstr "Поставяне на възелите" +msgstr "Филтриране на полигонните мрежи" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Give a MeshLibrary resource to this GridMap to use its meshes." msgstr "" +"Задайте ресурс от тип MeshLibrary в този GridMap, за да можете да използвате " +"полигонните му мрежи." #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" @@ -11219,9 +11205,8 @@ msgid "Generate buffers" msgstr "" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Направления" +msgstr "Директно осветяване" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Indirect lighting" @@ -11246,11 +11231,11 @@ msgstr "" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "" +msgstr "Изпичане на NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." -msgstr "" +msgstr "Изчистване на навигационната полигонна мрежа." #: modules/recast/navigation_mesh_generator.cpp msgid "Setting up Configuration..." @@ -11286,15 +11271,15 @@ msgstr "" #: modules/recast/navigation_mesh_generator.cpp msgid "Creating polymesh..." -msgstr "" +msgstr "Създаване на полигонна мрежа…" #: modules/recast/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." -msgstr "" +msgstr "Преобразуване на навигационната полигонна мрежа в собствения формат…" #: modules/recast/navigation_mesh_generator.cpp msgid "Navigation Mesh Generator Setup:" -msgstr "" +msgstr "Настройка на генератора на навигационни полигонни мрежи:" #: modules/recast/navigation_mesh_generator.cpp msgid "Parsing Geometry..." @@ -11367,86 +11352,80 @@ msgid "Override an existing built-in function." msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new function." -msgstr "Създай нови възли." +msgstr "Създаване на нова функция." #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" -msgstr "" +msgstr "Променливи:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new variable." -msgstr "Създай нови възли." +msgstr "Създаване на нова променлива." #: modules/visual_script/visual_script_editor.cpp msgid "Signals:" -msgstr "" +msgstr "Сигнали:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new signal." -msgstr "Създай нов полигон от нулата." +msgstr "Създаване на нов сигнал." #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "Името не е правилен идентификатор:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Името вече е заето от друга функция/променлива/сигнал:" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Function" -msgstr "" +msgstr "Преименуване на функцията" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Variable" -msgstr "" +msgstr "Преименуване на променливата" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Signal" -msgstr "" +msgstr "Преименуване на сигнала" #: modules/visual_script/visual_script_editor.cpp msgid "Add Function" -msgstr "" +msgstr "Добавяне на функция" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" -msgstr "Затваряне на всичко" +msgstr "Изтриване на входящия порт" #: modules/visual_script/visual_script_editor.cpp msgid "Add Variable" -msgstr "" +msgstr "Добавяне на променлива" #: modules/visual_script/visual_script_editor.cpp msgid "Add Signal" -msgstr "" +msgstr "Добавяне на сигнал" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" -msgstr "Затваряне на всичко" +msgstr "Премахване на входящия порт" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" -msgstr "Внасяне на текстури" +msgstr "Премахване на изходящия порт" #: modules/visual_script/visual_script_editor.cpp msgid "Change Expression" -msgstr "" +msgstr "Промяна на израза" #: modules/visual_script/visual_script_editor.cpp msgid "Remove VisualScript Nodes" -msgstr "" +msgstr "Премахване на възлите с VisualScript" #: modules/visual_script/visual_script_editor.cpp msgid "Duplicate VisualScript Nodes" -msgstr "" +msgstr "Дублиране на възлите с VisualScript" #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." @@ -11499,23 +11478,20 @@ msgid "Change Base Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Move Node(s)" -msgstr "Поставяне на възелите" +msgstr "Преместване на възела(възлите)" #: modules/visual_script/visual_script_editor.cpp msgid "Remove VisualScript Node" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Nodes" -msgstr "Изрязване на възелите" +msgstr "Свързване на възлите" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Изрязване на възелите" +msgstr "Разкачане на възлите" #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -11536,9 +11512,8 @@ msgid "Change Input Value" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Resize Comment" -msgstr "Вкарай Коментар" +msgstr "Преоразмеряване на коментара" #: modules/visual_script/visual_script_editor.cpp msgid "Can't copy the function node." @@ -11549,9 +11524,8 @@ msgid "Clipboard is empty!" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Paste VisualScript Nodes" -msgstr "Поставяне на възелите" +msgstr "Поставяне на възлите с VisualScript" #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function with a function node." @@ -11570,9 +11544,8 @@ msgid "Try to only have one sequence input in selection." msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "Създай Очертание" +msgstr "Създаване на функция" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11607,9 +11580,8 @@ msgid "Change Base Type:" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Nodes..." -msgstr "Добави Възел..." +msgstr "Добавяне на възли…" #: modules/visual_script/visual_script_editor.cpp msgid "Add Function..." @@ -11640,9 +11612,8 @@ msgid "Cut Nodes" msgstr "Изрязване на възлите" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Отиди на Ред" +msgstr "Преобразуване във функция" #: modules/visual_script/visual_script_editor.cpp msgid "Refresh Graph" @@ -11707,9 +11678,8 @@ msgid "" msgstr "" #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Search VisualScript" -msgstr "Поставяне на възелите" +msgstr "Търсене във VisualScript" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" @@ -11930,9 +11900,8 @@ msgid "Could not read boot splash image file:" msgstr "Не може да се прочете файл с изображение при стартиране:" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Using default boot splash image." -msgstr "Неуспешно създаване на папка." +msgstr "Използва се стандартното изображение при стартиране." #: platform/uwp/export/export.cpp msgid "Invalid package short name." @@ -11948,16 +11917,15 @@ msgstr "Неправилно име за показване на издател #: platform/uwp/export/export.cpp msgid "Invalid product GUID." -msgstr "Невалиден продуктов GUID." +msgstr "Неправилен продуктов GUID." #: platform/uwp/export/export.cpp msgid "Invalid publisher GUID." -msgstr "" +msgstr "Неправилен GUID на издател." #: platform/uwp/export/export.cpp -#, fuzzy msgid "Invalid background color." -msgstr "невалидно име на Група." +msgstr "Неправилен фонов цвят." #: platform/uwp/export/export.cpp msgid "Invalid Store Logo image dimensions (should be 50x50)." @@ -11988,22 +11956,21 @@ msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the \"Frames\" property in " "order for AnimatedSprite to display frames." msgstr "" -"За да може AnimatedSprite да показва кадри, първо трябва да му се даде " -"SpriteFrames ресурс в парамертъра 'Frames'." +"За да може AnimatedSprite да показва кадри, първо трябва се създаде или " +"зададе ресурс от тип SpriteFrames в свойството „Frames“." #: scene/2d/canvas_modulate.cpp -#, fuzzy msgid "" "Only one visible CanvasModulate is allowed per scene (or set of instanced " "scenes). The first created one will work, while the rest will be ignored." msgstr "" -"Може да има само един видим CanvasModulate на сцене (или няколко " -"инстанцирани сцени). Само първият ще работи, а всички останали - игнорирани." +"Може да има само един видим CanvasModulate на сцена (или няколко " +"инстанцирани сцени). Само първият ще работи, а всички останали ще бъдат " +"пренебрегнати." #: scene/2d/collision_object_2d.cpp msgid "" @@ -12079,13 +12046,12 @@ msgid "Node A and Node B must be different PhysicsBody2Ds" msgstr "" #: scene/2d/light_2d.cpp -#, fuzzy msgid "" "A texture with the shape of the light must be supplied to the \"Texture\" " "property." msgstr "" -"Тесктура с нужната форма на светлината трябва да бъде дадена в параметъра " -"'texture'." +"В свойството „Texture“ трябва да бъде зададена текстура с формата на " +"светлината." #: scene/2d/light_occluder_2d.cpp msgid "" @@ -12095,9 +12061,10 @@ msgstr "" "работи прикриването." #: scene/2d/light_occluder_2d.cpp -#, fuzzy msgid "The occluder polygon for this occluder is empty. Please draw a polygon." -msgstr "Затъмняващият многоъгълник е празен. Моля, нарисувайте един." +msgstr "" +"Прикриващият полигон за този прикриващ обект е празен. Моля, нарисувайте " +"полигон." #: scene/2d/navigation_polygon.cpp msgid "" @@ -12169,15 +12136,15 @@ msgid "" msgstr "" #: scene/2d/tile_map.cpp -#, fuzzy msgid "" "TileMap with Use Parent on needs a parent CollisionObject2D to give shapes " "to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, " "KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionShape2D служи само за да даде форма за колизии на " -"CollisionObject2D. Моля, използвайте го само като наследник на Area2D, " -"StaticBody2D, RigidBody2D, KinematicBody2D, и т.н. за да им дадете форма." +"Възел от типа TileMap с включено свойство „Use Parent“ трябва да има " +"родителски елемент от тип CollisionShape2D, на който да придаде форма. Моля, " +"използвайте го само като дъщерен елемент на Area2D, StaticBody2D, " +"RigidBody2D, KinematicBody2D и т.н., за да им придадете форма." #: scene/2d/visibility_notifier_2d.cpp msgid "" @@ -12215,7 +12182,7 @@ msgstr "" #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Търсене на полигонни мрежи и светлини" #: scene/3d/baked_lightmap.cpp msgid "Preparing geometry (%d/%d)" @@ -12234,9 +12201,8 @@ msgid "Saving lightmaps" msgstr "" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Done" -msgstr "Готово!" +msgstr "Готово" #: scene/3d/collision_object.cpp msgid "" @@ -12264,13 +12230,12 @@ msgid "" msgstr "" #: scene/3d/collision_shape.cpp -#, fuzzy msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it." msgstr "" "За да работи CollisionShape2D, е нужно да му се даде форма. Моля, създайте " -"му Shape2D ресурс." +"му ресурс-форма." #: scene/3d/collision_shape.cpp msgid "" @@ -12285,7 +12250,7 @@ msgstr "" #: scene/3d/cpu_particles.cpp msgid "Nothing is visible because no mesh has been assigned." -msgstr "" +msgstr "Не се вижда нищо, той като няма зададена полигонна мрежа." #: scene/3d/cpu_particles.cpp msgid "" @@ -12295,7 +12260,7 @@ msgstr "" #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" -msgstr "" +msgstr "Построяване на полигонните мрежи" #: scene/3d/gi_probe.cpp msgid "Finishing Plot" @@ -12319,12 +12284,16 @@ msgstr "" #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." msgstr "" +"Трябва да се зададе или създаде ресурс от тип NavigationMesh, за може да " +"работи този възел." #: scene/3d/navigation_mesh.cpp msgid "" "NavigationMeshInstance must be a child or grandchild to a Navigation node. " "It only provides navigation data." msgstr "" +"NavigationMeshInstance трябва да бъде дъщерен или под-дъщерен на възел от " +"тип Navigation. Той само предоставя данните за навигирането." #: scene/3d/particles.cpp msgid "" @@ -12337,6 +12306,8 @@ msgstr "" msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" +"Не се вижда нищо, тъй като полигонните мрежи не са били свързани към стъпки " +"на изчертаване." #: scene/3d/particles.cpp msgid "" @@ -12345,9 +12316,8 @@ msgid "" msgstr "" #: scene/3d/path.cpp -#, fuzzy msgid "PathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D работи само когато е наследник на Path2D." +msgstr "PathFollow работи само когато е дъщерен елемент на възел от тип Path." #: scene/3d/path.cpp msgid "" @@ -12383,17 +12353,16 @@ msgid "Node A and Node B must be different PhysicsBodies" msgstr "" #: scene/3d/remote_transform.cpp -#, fuzzy msgid "" "The \"Remote Path\" property must point to a valid Spatial or Spatial-" "derived node to work." msgstr "" -"Параметърът 'Path' трябва да сочи към действителен възел Particles2D, за да " -"работи." +"Свойството „Remote Path“ трябва да сочи към действителен възел от тип " +"Spatial или негов наследник, за да работи." #: scene/3d/soft_body.cpp msgid "This body will be ignored until you set a mesh." -msgstr "" +msgstr "Това тяло ще бъде игнорирано, докато не зададете полигонна мрежа." #: scene/3d/soft_body.cpp msgid "" @@ -12403,13 +12372,12 @@ msgid "" msgstr "" #: scene/3d/sprite_3d.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the \"Frames\" property in " "order for AnimatedSprite3D to display frames." msgstr "" -"За да може AnimatedSprite да показва кадри, първо трябва да му се даде " -"SpriteFrames ресурс в парамертъра 'Frames'." +"За да може AnimatedSprite3D да показва кадри, първо трябва се създаде или " +"зададе ресурс от тип SpriteFrames в свойството „Frames“." #: scene/3d/vehicle_body.cpp msgid "" diff --git a/editor/translations/bn.po b/editor/translations/bn.po index 4482328985..03e3d0388a 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -8,14 +8,14 @@ # Tawhid H. <Tawhidk757@yahoo.com>, 2019. # Hasibul Hasan <hasibeng78@gmail.com>, 2019. # Oymate <dhruboadittya96@gmail.com>, 2020. -# Mokarrom Hossain <mhb2016.bzs@gmail.com>, 2020. +# Mokarrom Hossain <mhb2016.bzs@gmail.com>, 2020, 2021. # Sagen Soren <sagensoren03@gmail.com>, 2020. # Hasibul Hasan <d1hasib@yahoo.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-12-27 02:25+0000\n" +"PO-Revision-Date: 2021-02-15 10:51+0000\n" "Last-Translator: Mokarrom Hossain <mhb2016.bzs@gmail.com>\n" "Language-Team: Bengali <https://hosted.weblate.org/projects/godot-engine/" "godot/bn/>\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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -268,7 +268,6 @@ msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" msgstr "লুপ Wrap মোড (লুপ দিয়ে শুরু দিয়ে ইন্টারপোলেট শেষ)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Remove this track." msgstr "নির্বাচিত ট্র্যাক/পথ অপসারণ করুন।" @@ -440,28 +439,24 @@ msgid "Track is not of type Spatial, can't insert key" msgstr "ট্র্যাক Spatial টাইপের নয়, কী সন্নিবেশ করতে পারে না" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Transform Track Key" -msgstr "রুপান্তরের ধরণ" +msgstr "ট্রান্সফর্ম ট্র্যাক কী যুক্ত করুন" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Track Key" -msgstr "অ্যানিমেশন (Anim) ট্র্যাক যোগ করুন" +msgstr "ট্র্যাক কী যুক্ত করুন" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a method key." -msgstr "" +msgstr "ট্র্যাক পাথটি অবৈধ, সুতরাং কোনও পদ্ধতি key যুক্ত করতে পারে না।" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Method Track Key" -msgstr "অ্যানিমেশনে (Anim) ট্র্যাক/পথ এবং চাবি যোগ করুন" +msgstr "Method Track Key যুক্ত করুন" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Method not found in object: " -msgstr "স্ক্রিপ্টে চলক-প্রাপক (VariableGet) পাওয়া যায়নি: " +msgstr "Object এ Method পাওয়া যায় নি: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" @@ -472,7 +467,6 @@ msgid "Clipboard is empty" msgstr "ক্লীপবোর্ড খালি" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Paste Tracks" msgstr "মানসমূহ প্রতিলেপন/পেস্ট করুন" @@ -484,6 +478,7 @@ msgstr "অ্যানিমেশনের (Anim) চাবিসমূহে msgid "" "This option does not work for Bezier editing, as it's only a single track." msgstr "" +"এই বিকল্পটি বেজিয়ার সম্পাদনার জন্য কাজ করে না, কারণ এটি কেবলমাত্র Single ট্র্যাক।" #: editor/animation_track_editor.cpp msgid "" @@ -497,24 +492,31 @@ msgid "" "Alternatively, use an import preset that imports animations to separate " "files." msgstr "" +"এই অ্যানিমেশনটি আমদানি করা দৃশ্যের সাথে সম্পর্কিত, তাই আমদানি করা ট্র্যাকগুলিতে " +"পরিবর্তনগুলি সংরক্ষণ করা হবে না।\n" +"\n" +"কাস্টম ট্র্যাক যুক্ত করার ক্ষমতা সক্ষম করতে, দৃশ্যের আমদানি সেটিংসে নেভিগেট করুন এবং " +"সেট করুন\n" +"\"ফাইলগুলি\" এ \"অ্যানিমেশন> সঞ্চয়স্থান\", \"অ্যানিমেশন> কাস্টম ট্র্যাক রাখুন\" সক্ষম " +"করুন, তারপরে পুনরায় আমদানি করুন।\n" +"বিকল্পভাবে, একটি আমদানি প্রিসেট ব্যবহার করুন যা পৃথক ফাইলগুলিতে অ্যানিমেশনগুলি " +"আমদানি করে।" #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" -msgstr "" +msgstr "সতর্কতা: Imported অ্যানিমেশন সম্পাদনা করা হচ্ছে" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select an AnimationPlayer node to create and edit animations." -msgstr "" -"অ্যানিমেশনসমূহ সম্পাদন করতে দৃশ্যের তালিকা থেকে একটি AnimationPlayer নির্বাচন করুন।" +msgstr "অ্যানিমেশন তৈরি এবং সম্পাদনা করতে একটি অ্যানিমেশনপ্লেয়ার নোড নির্বাচন করুন।" #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." -msgstr "" +msgstr "Tree মধ্যে নির্বাচিত নোডগুলি থেকে কেবল ট্র্যাকগুলি দেখান।" #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." -msgstr "" +msgstr "নোড দ্বারা গ্রুপ ট্র্যাক করুন বা তাদের সরল তালিকা হিসাবে প্রদর্শন করুন।" #: editor/animation_track_editor.cpp msgid "Snap:" @@ -548,9 +550,8 @@ msgid "Animation properties." msgstr "অ্যানিমেশন বৈশিষ্ট্য।" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Copy Tracks" -msgstr "মানসমূহ প্রতিলিপি/কপি করুন" +msgstr "ট্র্যাকগুলি অনুলিপি করুন" #: editor/animation_track_editor.cpp msgid "Scale Selection" @@ -569,9 +570,8 @@ msgid "Duplicate Transposed" msgstr "পক্ষান্তরিত (Transposed) সমূহ অনুলিপি করুন" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Selection" -msgstr "নির্বাচিত সমূহ অপসারণ করুন" +msgstr "নির্বাচিত সমূহ Delete করুন" #: editor/animation_track_editor.cpp msgid "Go to Next Step" @@ -595,7 +595,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Use Bezier Curves" -msgstr "" +msgstr "বেজিয়ার কার্ভ ব্যবহার করুন" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" @@ -642,9 +642,8 @@ msgid "Scale Ratio:" msgstr "স্কেল/মাপের অনুপাত:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "গুণাগুণ/বৈশিষ্ট্য বাছাই করুন" +msgstr "গুণাগুণ/বৈশিষ্ট্য copy করুন" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -1487,14 +1486,12 @@ msgstr "" "পারবে না।" #: editor/editor_autoload_settings.cpp -#, fuzzy msgid "Must not collide with an existing built-in type name." msgstr "" "অগ্রহনযোগ্য নাম। নামটি অবশ্যই বিদ্যমান পূর্বনির্মিত ধরণের নামের সাথে পরম্পরবিরোধী " "হতে পারবে না।" #: editor/editor_autoload_settings.cpp -#, fuzzy msgid "Must not collide with an existing global constant name." msgstr "" "অগ্রহনযোগ্য নাম। নামটি অবশ্যই বিদ্যমান সার্বজনীন ধ্রুবকের নামের সাথে পরম্পরবিরোধী " @@ -1774,14 +1771,12 @@ msgid "Enabled Properties:" msgstr "প্রোপার্টি-সমূহ:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enabled Features:" -msgstr "গঠনবিন্যাস" +msgstr "গঠনবিন্যাস :" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enabled Classes:" -msgstr "ক্লাসের অনুসন্ধান করুন" +msgstr "Enabled ক্লাস:" #: editor/editor_feature_profile.cpp msgid "File '%s' format is invalid, import aborted." @@ -3284,6 +3279,25 @@ msgstr "একটি স্ক্রিপ্ট খুলুন এবং চ #: editor/editor_node.cpp #, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"নিম্নোক্ত ফাইলসমূহ ডিস্কে নতুনতর।\n" +"কোন সিধান্তটি নেয়া উচিত হবে?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "রিলোড" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "পুনঃসংরক্ষণ" + +#: editor/editor_node.cpp +#, fuzzy msgid "New Inherited" msgstr "নতুন উত্তরাধিকারী দৃশ্য..." @@ -7464,16 +7478,6 @@ msgstr "" "নিম্নোক্ত ফাইলসমূহ ডিস্কে নতুনতর।\n" "কোন সিধান্তটি নেয়া উচিত হবে?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "রিলোড" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "পুনঃসংরক্ষণ" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "ডিবাগার" @@ -7823,6 +7827,11 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "সেল (Cell)-এর আকার:" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "অবজেক্ট আঁকা হয়েছে" @@ -10611,6 +10620,11 @@ msgid "Projects" msgstr "নতুন প্রকল্প" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "মিরর রিট্রাইভ করা হচ্ছে, দযা করে অপেক্ষা করুন..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/br.po b/editor/translations/br.po index a20210c2bc..0b056dd9ed 100644 --- a/editor/translations/br.po +++ b/editor/translations/br.po @@ -2998,6 +2998,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6750,16 +6766,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7074,6 +7080,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9594,6 +9604,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/ca.po b/editor/translations/ca.po index ed171e7934..568e373a6a 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -3166,6 +3166,25 @@ msgid "Open & Run a Script" msgstr "Obre i Executa un Script" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"El disc conté versions més recents dels fitxer següents. \n" +"Quina acció voleu seguir?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Torna a Carregar" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Torna a Desar" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Nou Heretat" @@ -7124,16 +7143,6 @@ msgstr "" "El disc conté versions més recents dels fitxer següents. \n" "Quina acció voleu seguir?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Torna a Carregar" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Torna a Desar" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Depurador" @@ -7466,6 +7475,11 @@ msgid "Yaw" msgstr "Guinyada" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Mida: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Objectes Dibuixats" @@ -10292,6 +10306,11 @@ msgstr "Projecte" #: editor/project_manager.cpp #, fuzzy +msgid "Loading, please wait..." +msgstr "S'estan buscant rèpliques..." + +#: editor/project_manager.cpp +#, fuzzy msgid "Last Modified" msgstr "Última modificació" diff --git a/editor/translations/cs.po b/editor/translations/cs.po index b41675f0fc..04eb87654d 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -23,13 +23,13 @@ # Daniel Kříž <Daniel.kriz@protonmail.com>, 2020. # VladimirBlazek <vblazek042@gmail.com>, 2020. # kubajz22 <til.jakubesko@seznam.cz>, 2020. -# Václav Blažej <vaclavblazej@seznam.cz>, 2020. +# Václav Blažej <vaclavblazej@seznam.cz>, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-01-12 13:32+0000\n" -"Last-Translator: Vojtěch Šamla <auzkok@seznam.cz>\n" +"PO-Revision-Date: 2021-01-22 10:21+0000\n" +"Last-Translator: Václav Blažej <vaclavblazej@seznam.cz>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" "Language: cs\n" @@ -37,7 +37,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2394,7 +2394,7 @@ msgstr "Neexistuje žádná scéna pro spuštění." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Uložit scénu před spuštěním..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3139,6 +3139,25 @@ msgid "Open & Run a Script" msgstr "Otevřít a spustit skript" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Následující soubory mají novější verzi na disku.\n" +"Jaká akce se má vykonat?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Znovu načíst" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Znovu uložit" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Nové zděděné" @@ -5173,26 +5192,29 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Nebylo možné určit velikost světelné mapy. Maximální velikost je příliš malá?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Některé sítě jsou neplatné. Ujistěte se, že hodnoty kanálu UV2 jsou ve " +"čtvercové oblasti [0.0, 1.0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Godot byl sestaven bez podpory ray tracingu, světelné mapy nelze zapéct." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Zapéct lightmapy" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Vybrat soubor šablony" +msgstr "Vybrat soubor pro zapečení světelných map:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6991,16 +7013,6 @@ msgstr "" "Následující soubory mají novější verzi na disku.\n" "Jaká akce se má vykonat?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Znovu načíst" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Znovu uložit" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Ladicí program" @@ -7317,6 +7329,11 @@ msgid "Yaw" msgstr "Náklon" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Velikost: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Objekty vykreslené" @@ -9987,6 +10004,11 @@ msgid "Projects" msgstr "Projekty" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Získávání zrcadel, prosím čekejte..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Datum modifikace" diff --git a/editor/translations/da.po b/editor/translations/da.po index 148e31a2cc..8569251e55 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -15,14 +15,15 @@ # Mads K. Bredager <mbredager@gmail.com>, 2019. # Kristoffer Andersen <kjaa@google.com>, 2019. # Joe Osborne <reachjoe.o@gmail.com>, 2020. -# Autowinto <happymansi@hotmail.com>, 2020. -# Mikkel Mouridsen <mikkelmouridsen@me.com>, 2020. +# Autowinto <happymansi@hotmail.com>, 2020, 2021. +# Mikkel Mouridsen <mikkelmouridsen@me.com>, 2020, 2021. +# snakatk <snaqii@live.dk>, 2021. 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: Mikkel Mouridsen <mikkelmouridsen@me.com>\n" +"PO-Revision-Date: 2021-02-05 09:20+0000\n" +"Last-Translator: snakatk <snaqii@live.dk>\n" "Language-Team: Danish <https://hosted.weblate.org/projects/godot-engine/" "godot/da/>\n" "Language: da\n" @@ -30,7 +31,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.2-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -141,7 +142,7 @@ msgstr "Tilføj Bezier-punkt" #: editor/animation_bezier_editor.cpp msgid "Move Bezier Points" -msgstr "Flyt punkt" +msgstr "Flyt Bezier-punkter" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" @@ -197,9 +198,8 @@ msgid "Anim Multi Change Call" msgstr "Anim Skift Call" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Length" -msgstr "Ændre Animation Navn:" +msgstr "Ændre Animationslængde" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -334,7 +334,7 @@ msgstr "Vikle Løkke Interpolation" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "Indsæt nøgle" +msgstr "Indsæt Nøgle" #: editor/animation_track_editor.cpp msgid "Duplicate Key(s)" @@ -762,8 +762,9 @@ msgid "Standard" msgstr "Standard" #: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +#, fuzzy msgid "Toggle Scripts Panel" -msgstr "" +msgstr "Slå til/fra Scripts Panel" #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -825,7 +826,7 @@ msgstr "Fra signal:" #: editor/connections_dialog.cpp msgid "Scene does not contain any script." -msgstr "" +msgstr "Scenen indeholder ikke noget script." #: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp #: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp @@ -867,22 +868,23 @@ msgid "Deferred" msgstr "Udskudt" #: editor/connections_dialog.cpp +#, fuzzy msgid "" "Defers the signal, storing it in a queue and only firing it at idle time." -msgstr "" +msgstr "Udskyder signalet, gemmer det i en kø og anvender det ved spildtid." #: editor/connections_dialog.cpp msgid "Oneshot" msgstr "OneShot" #: editor/connections_dialog.cpp +#, fuzzy msgid "Disconnects the signal after its first emission." -msgstr "" +msgstr "Frakobler signalet efter dets første aktivering." #: editor/connections_dialog.cpp -#, fuzzy msgid "Cannot connect signal" -msgstr "Forbind Signal: " +msgstr "Kan ikke forbinde signal" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/export_template_manager.cpp editor/groups_editor.cpp @@ -1429,12 +1431,14 @@ msgid "Open Audio Bus Layout" msgstr "Åben Audio Bus Layout" #: editor/editor_audio_buses.cpp +#, fuzzy msgid "There is no '%s' file." -msgstr "" +msgstr "Der er ingen '%s' fil." #: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Layout" -msgstr "" +msgstr "Layout" #: editor/editor_audio_buses.cpp msgid "Invalid file, not an audio bus layout." @@ -1513,8 +1517,9 @@ msgstr "" "Ugyldigt navn. Må ikke være i konflikt med eksisterende global constant navn." #: editor/editor_autoload_settings.cpp +#, fuzzy msgid "Keyword cannot be used as an autoload name." -msgstr "" +msgstr "Nøgleord kan ikke bruges som autoload navn." #: editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" @@ -1545,8 +1550,9 @@ msgid "Rearrange Autoloads" msgstr "Flytte om på Autoloads" #: editor/editor_autoload_settings.cpp +#, fuzzy msgid "Can't add autoload:" -msgstr "" +msgstr "Kan ikke tilføje autoload:" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -1633,8 +1639,9 @@ msgid "Storing File:" msgstr "Lagrings Fil:" #: editor/editor_export.cpp +#, fuzzy msgid "No export template found at the expected path:" -msgstr "" +msgstr "Ingen eksporterings-skabelon fundet ved den forventede sti:" #: editor/editor_export.cpp msgid "Packing" @@ -3233,6 +3240,23 @@ msgid "Open & Run a Script" msgstr "Åben & Kør et Script" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "De følgende filer kunne ikke trækkes ud af pakken:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Ny Arved" @@ -4776,17 +4800,18 @@ msgid "Scale animation playback globally for the node." msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy msgid "Animation Tools" -msgstr "" +msgstr "Animation Værktøjer" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation" -msgstr "" +msgstr "Animation" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy msgid "Edit Transitions..." -msgstr "Overgange" +msgstr "Rediger Overgange..." #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy @@ -4824,20 +4849,21 @@ msgid "Future" msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy msgid "Depth" -msgstr "" +msgstr "Dybde" #: editor/plugins/animation_player_editor_plugin.cpp msgid "1 step" -msgstr "" +msgstr "1 trin" #: editor/plugins/animation_player_editor_plugin.cpp msgid "2 steps" -msgstr "" +msgstr "2 trin" #: editor/plugins/animation_player_editor_plugin.cpp msgid "3 steps" -msgstr "" +msgstr "3 trin" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Differences Only" @@ -4854,30 +4880,31 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy msgid "Pin AnimationPlayer" -msgstr "Ændre Animation Navn:" +msgstr "Fastgør AnimationPlayer" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" -msgstr "" +msgstr "Opret Ny Animation" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Name:" -msgstr "" +msgstr "Animation Navn:" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp msgid "Error!" -msgstr "" +msgstr "Fejl!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Times:" msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy msgid "Next (Auto Queue):" -msgstr "" +msgstr "Næste (Auto Kø):" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" @@ -4889,14 +4916,12 @@ msgid "Move Node" msgstr "Flyt Node(s)" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition exists!" -msgstr "Overgang" +msgstr "Overgang eksisterer!" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Add Transition" -msgstr "Overgang" +msgstr "Tilføj Overgang" #: editor/plugins/animation_state_machine_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -4933,14 +4958,12 @@ msgid "No playback resource set at path: %s." msgstr "Ikke i stien for ressource." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Node Removed" -msgstr "Fjern" +msgstr "Node Fjernet" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition Removed" -msgstr "Overgang" +msgstr "Overgang Fjernet" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set Start Node (Autoplay)" @@ -4977,9 +5000,8 @@ msgid "Set the end animation. This is useful for sub-transitions." msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition: " -msgstr "Overgang" +msgstr "Overgang: " #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy @@ -4994,7 +5016,7 @@ msgstr "Animation Zoom." #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "New name:" -msgstr "" +msgstr "Nyt navn:" #: editor/plugins/animation_tree_player_editor_plugin.cpp #: editor/plugins/multimesh_editor_plugin.cpp @@ -5018,8 +5040,9 @@ msgid "Mix" msgstr "" #: editor/plugins/animation_tree_player_editor_plugin.cpp +#, fuzzy msgid "Auto Restart:" -msgstr "" +msgstr "Auto Genstart:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Restart (s):" @@ -5035,8 +5058,9 @@ msgstr "" #: editor/plugins/animation_tree_player_editor_plugin.cpp #: editor/plugins/multimesh_editor_plugin.cpp +#, fuzzy msgid "Amount:" -msgstr "" +msgstr "Mængde:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend 0:" @@ -5052,13 +5076,14 @@ msgstr "" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Current:" -msgstr "" +msgstr "Nuværende:" #: editor/plugins/animation_tree_player_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp #: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Add Input" -msgstr "" +msgstr "Tilføj Input" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Clear Auto-Advance" @@ -5069,8 +5094,9 @@ msgid "Set Auto-Advance" msgstr "" #: editor/plugins/animation_tree_player_editor_plugin.cpp +#, fuzzy msgid "Delete Input" -msgstr "" +msgstr "Fjern Input" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation tree is valid." @@ -5117,16 +5143,19 @@ msgid "Transition Node" msgstr "" #: editor/plugins/animation_tree_player_editor_plugin.cpp +#, fuzzy msgid "Import Animations..." -msgstr "" +msgstr "Importer Animationer..." #: editor/plugins/animation_tree_player_editor_plugin.cpp +#, fuzzy msgid "Edit Node Filters" -msgstr "" +msgstr "Rediger Node Filtre" #: editor/plugins/animation_tree_player_editor_plugin.cpp +#, fuzzy msgid "Filters..." -msgstr "" +msgstr "Filtre..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Contents:" @@ -5137,8 +5166,9 @@ msgid "View Files" msgstr "Vis filer" #: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy msgid "Connection error, please try again." -msgstr "" +msgstr "Forbindelsesfejl, prøv venligst igen." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't connect to host:" @@ -5146,15 +5176,16 @@ msgstr "Kan ikke forbinde til host:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No response from host:" -msgstr "" +msgstr "Ingen respons fra host:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't resolve hostname:" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy msgid "Request failed, return code:" -msgstr "" +msgstr "Forespørgsel mislykkedes, returkode:" #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy @@ -5164,11 +5195,12 @@ msgstr "Forespørgsel mislykkedes." #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "Cannot save response to:" -msgstr "Kan ikke fjerne:" +msgstr "Kan ikke gemme respons i:" #: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy msgid "Write error." -msgstr "" +msgstr "Skrivefejl." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, too many redirects" @@ -5182,12 +5214,12 @@ msgstr "Omdiriger Løkke." #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "Request failed, timeout" -msgstr "Forespørgsel mislykkedes." +msgstr "Forespørgsel mislykkedes, tiden udløb." #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "Timeout." -msgstr "Tid" +msgstr "Tiden udløb." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." @@ -5210,14 +5242,12 @@ msgid "Asset Download Error:" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Downloading (%s / %s)..." -msgstr "Indlæser" +msgstr "Downloader (%s / %s)..." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Downloading..." -msgstr "Indlæser" +msgstr "Downloader..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Resolving..." @@ -5234,11 +5264,12 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "Install..." -msgstr "Installér" +msgstr "Installér..." #: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy msgid "Retry" -msgstr "" +msgstr "Prøv igen" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download Error" @@ -5258,25 +5289,23 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Name (A-Z)" -msgstr "" +msgstr "Navn (A-Z)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Name (Z-A)" -msgstr "" +msgstr "Navn (Z-A)" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "License (A-Z)" -msgstr "Licens" +msgstr "Licens (A-Z)" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "License (Z-A)" -msgstr "Licens" +msgstr "Licens (Z-A)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "First" -msgstr "" +msgstr "Første" #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy @@ -5289,7 +5318,7 @@ msgstr "Næste" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Last" -msgstr "" +msgstr "Sidste" #: editor/plugins/asset_library_editor_plugin.cpp msgid "All" @@ -5300,9 +5329,8 @@ msgid "No results for \"%s\"." msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Import..." -msgstr "Importer" +msgstr "Importer..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Plugins..." @@ -5322,9 +5350,8 @@ msgid "Site:" msgstr "Websted:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support" -msgstr "Støtte..." +msgstr "Support" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Official" @@ -5335,9 +5362,8 @@ msgid "Testing" msgstr "Tester" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Loading..." -msgstr "Indlæs" +msgstr "Indlæser..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -5406,7 +5432,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "steps" -msgstr "" +msgstr "trin" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" @@ -7224,16 +7250,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7574,6 +7590,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -10240,6 +10260,11 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Henter spejle, vent venligst ..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/de.po b/editor/translations/de.po index b7f5d21f20..abb61ade0d 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -23,7 +23,7 @@ # Peter Friedland <peter_friedland@gmx.de>, 2016. # No need for a name <endoplasmatik@gmx.net>, 2016. # Sönke <me@eknoes.de>, 2018. -# So Wieso <sowieso@dukun.de>, 2016-2018, 2019, 2020. +# So Wieso <sowieso@dukun.de>, 2016-2018, 2019, 2020, 2021. # Tim Schellenberg <smwleod@gmail.com>, 2017. # Timo Schwarzer <account@timoschwarzer.com>, 2016-2018. # viernullvier <hannes.breul+github@gmail.com>, 2016. @@ -62,12 +62,13 @@ # Patric Wust <patric.wust@gmx.de>, 2020. # Jonathan Hassel <jonathan.hassel@icloud.com>, 2020. # Artur Schönfeld <schoenfeld.artur@ymail.com>, 2020. +# kidinashell <kidinashell@protonmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-01-12 13:32+0000\n" -"Last-Translator: Martin <martinreininger@gmx.net>\n" +"PO-Revision-Date: 2021-02-07 05:50+0000\n" +"Last-Translator: So Wieso <sowieso@dukun.de>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" "Language: de\n" @@ -75,7 +76,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2452,7 +2453,7 @@ msgstr "Es ist keine abzuspielende Szene definiert." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Szene vor dem Abspielen speichern..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3215,6 +3216,25 @@ msgid "Open & Run a Script" msgstr "Skript öffnen und ausführen" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Die folgenden Dateien wurden im Dateisystem verändert.\n" +"Wie soll weiter vorgegangen werden?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Neu laden" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Erneut speichern" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Neu Geerbte" @@ -5235,14 +5255,12 @@ msgid "Assets ZIP File" msgstr "Nutzerinhalte als ZIP-Datei" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" -"Der Speicherpfad für Lightmap-Bilder kann nicht bestimmt werden.\n" -"Speichern Sie die Szene (Bilder werden im gleichen Ordner gespeichert) oder " -"legen Sie den Speicherpfad in den BakedLightmap-Eigenschaften fest." +"Ein Speicherpfad für Lightmap-Bilder kann nicht bestimmt werden.\n" +"Ein Speichern der Szene sollte dieses Problem beheben." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5262,26 +5280,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Die Größe des Lightmaps kann nicht bestimmt werden. Möglicherweise ist die " +"maximale Lightmap-Größe zu klein." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Ein Mesh ist ungültig. Es muss sichergestellt sein dass alle Werte das UV2-" +"Kanals im Bereich von 0.0 bis 1.0 liegen." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Diese Godot-Version wurde ohne Raytracing-Unterstützung erstellt, Lightmaps " +"können damit nicht gebacken werden." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Lightmaps vorrendern" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Vorlagendatei auswählen" +msgstr "Lightmap-Bake-Datei auswählen:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6384,9 +6407,8 @@ msgstr "" "werden" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Zu CPU-Partikeln konvertieren" +msgstr "Zu CPUParticles2D konvertieren" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -7093,16 +7115,6 @@ msgstr "" "Die folgenden Dateien wurden im Dateisystem verändert.\n" "Wie soll weiter vorgegangen werden?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Neu laden" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Erneut speichern" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Debugger" @@ -7424,6 +7436,10 @@ msgid "Yaw" msgstr "Gieren" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "Größe" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Gezeichnete Objekte" @@ -10121,6 +10137,11 @@ msgid "Projects" msgstr "Projekte" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Mirrors werden geladen, bitte warten..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Zuletzt bearbeitet" @@ -11680,36 +11701,31 @@ msgstr "GridMap zu MeshLibrary hinzufügen um ihre Meshes benutzen zu können." #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Backen beginnen" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Datenstrukturen werden vorbereitet" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Erzeuge AABB" +msgstr "Puffer generieren" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Richtungen" +msgstr "Direct-Lighting" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Nach rechts einrücken" +msgstr "Indirect-Lighting" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" msgstr "Nachbearbeitung" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "Plotte Lichter:" +msgstr "Lightmaps auftragen" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12229,9 +12245,8 @@ msgid "Select device from the list" msgstr "Gerät aus Liste auswählen" #: platform/android/export/export.cpp -#, fuzzy msgid "Unable to find the 'apksigner' tool." -msgstr "Das zipalign Hilfswerkzeug konnte nicht gefunden werden." +msgstr "Das ‚apksigner‘-Hilfswerkzeug konnte nicht gefunden werden." #: platform/android/export/export.cpp msgid "" @@ -12253,16 +12268,13 @@ msgstr "" "Release-Keystore wurde nicht korrekt konfiguriert in den Exporteinstellungen." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." msgstr "" -"Ungültiger Android-SDK-Pfad für eigene Builds in den Editoreinstellungen." +"Es wird ein gültiger Android-SDK-Pfad in den Editoreinstellungen benötigt." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "" -"Ungültiger Android-SDK-Pfad für eigene Builds in den Editoreinstellungen." +msgstr "Ungültiger Android-SDK-Pfad in den Editoreinstellungen." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -12271,12 +12283,13 @@ msgstr "‚platform-tools‘-Verzeichnis fehlt!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." msgstr "" +"‚adb‘-Anwendung der Android-SDK-Platform-Tools konnte nicht gefunden werden." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." msgstr "" -"Ungültiger Android-SDK-Pfad für eigene Builds in den Editoreinstellungen." +"Schauen Sie im Android-SDK-Verzeichnis das in den Editoreinstellungen " +"angegeben wurde nach." #: platform/android/export/export.cpp msgid "Missing 'build-tools' directory!" @@ -12285,6 +12298,8 @@ msgstr "‚build-tools‘-Verzeichnis fehlt!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." msgstr "" +"‚apksigner‘-Anwendung der Android-SDK-Build-Tools konnte nicht gefunden " +"werden." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12768,27 +12783,23 @@ msgstr "ARVROrigin benötigt ein ARVRCamera-Unterobjekt." #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Am Suchen nach Meshes und Lichtern" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "Parse Geometrie…" +msgstr "Am Vorbereiten der Geometrie (%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Umgebung anzeigen" +msgstr "Am Vorbereiten der Umgebung" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "Generiere Lightmaps" +msgstr "Am Generieren eines Schnappschusses" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "Generiere Lightmaps" +msgstr "Am Speichern der Lightmaps" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -13212,6 +13223,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"Der Sampler-Port ist verbunden wird aber nicht benutzt. Die Quelle sollte " +"möglicherweise auf ‚SamplerPort‘ gestellt werden." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index b9cf1e9087..bda182e494 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -2976,6 +2976,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6728,16 +6744,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7052,6 +7058,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9572,6 +9582,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/el.po b/editor/translations/el.po index fee8490872..5fb433a3cb 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -10,12 +10,13 @@ # pandektis <pandektis@gmail.com>, 2020. # KostasMSC <kargyris@athtech.gr>, 2020. # lawfulRobot <czavantias@gmail.com>, 2020. +# Michalis <michalisntovas@yahoo.gr>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-09-30 12:32+0000\n" -"Last-Translator: lawfulRobot <czavantias@gmail.com>\n" +"PO-Revision-Date: 2021-02-15 10:51+0000\n" +"Last-Translator: Michalis <michalisntovas@yahoo.gr>\n" "Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/" "el/>\n" "Language: el\n" @@ -23,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.3-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1878,7 +1879,7 @@ msgstr "Αποθήκευση αρχείου" #: editor/editor_file_dialog.cpp msgid "Go Back" -msgstr "Πήγαινε πίσω" +msgstr "Επιστροφή" #: editor/editor_file_dialog.cpp msgid "Go Forward" @@ -3158,6 +3159,25 @@ msgid "Open & Run a Script" msgstr "Άνοιξε & Τρέξε μία δέσμη ενεργειών" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Τα ακόλουθα αρχεία είναι νεότερα στον δίσκο.\n" +"Τι δράση να ληφθεί;:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Επαναφόρτωση" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Επαναποθήκευση" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Νέα κληρονομημένη" @@ -3905,7 +3925,7 @@ msgstr "Αντικατάσταση..." #: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" -msgstr "Ακύρωση" +msgstr "Άκυρο" #: editor/find_in_files.cpp msgid "Find: " @@ -7015,7 +7035,7 @@ msgstr "Διακοπή" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp #: editor/script_editor_debugger.cpp msgid "Continue" -msgstr "Συνέχιση" +msgstr "Συνέχεια" #: editor/plugins/script_editor_plugin.cpp msgid "Keep Debugger Open" @@ -7053,16 +7073,6 @@ msgstr "" "Τα ακόλουθα αρχεία είναι νεότερα στον δίσκο.\n" "Τι δράση να ληφθεί;:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Επαναφόρτωση" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Επαναποθήκευση" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Αποσφαλματωτής" @@ -7385,6 +7395,11 @@ msgid "Yaw" msgstr "Παρέκκλιση" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Μέγεθος: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Ζωγραφισμένα αντικείμενα" @@ -10081,6 +10096,11 @@ msgid "Projects" msgstr "Έργα" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Ανάκτηση δεδοένων κατοπτρισμού, παρακαλώ περιμένετε..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Τελευταία Τροποποιημένα" diff --git a/editor/translations/eo.po b/editor/translations/eo.po index bd5d35cf43..a485cca645 100644 --- a/editor/translations/eo.po +++ b/editor/translations/eo.po @@ -3075,6 +3075,22 @@ msgid "Open & Run a Script" msgstr "Malfermi & ruli skripto" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6858,16 +6874,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7183,6 +7189,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9727,6 +9737,10 @@ msgid "Projects" msgstr "Projektoj" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp #, fuzzy msgid "Last Modified" msgstr "Modifita" diff --git a/editor/translations/es.po b/editor/translations/es.po index 6ecd5e05a6..e9617793bb 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -14,11 +14,11 @@ # Diego López <diegodario21@gmail.com>, 2017. # eon-s <emanuel.segretin@gmail.com>, 2018, 2019, 2020. # Gustavo Leon <gleondiaz@gmail.com>, 2017-2018. -# Javier Ocampos <xavier.ocampos@gmail.com>, 2018, 2019, 2020. +# Javier Ocampos <xavier.ocampos@gmail.com>, 2018, 2019, 2020, 2021. # Jose Maria Martinez <josemar1992@hotmail.com>, 2018. # Juan Quiroga <juanquiroga9@gmail.com>, 2017. # Kiji Pixel <raccoon.fella@gmail.com>, 2017. -# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2017, 2019, 2020. +# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2017, 2019, 2020, 2021. # Lonsfor <lotharw@protonmail.com>, 2017-2018. # Mario Nachbaur <manachbaur@gmail.com>, 2018. # Oscar Carballal <oscar.carballal@protonmail.com>, 2017-2018. @@ -58,12 +58,13 @@ # Ricardo Pérez <ricpelo@gmail.com>, 2021. # A <kaieltroll@gmail.com>, 2021. # Lucasdelpiero <lucasdelpiero98@gmail.com>, 2021. +# SteamGoblin <SteamGoblin860@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-01-12 13:32+0000\n" -"Last-Translator: Lucasdelpiero <lucasdelpiero98@gmail.com>\n" +"PO-Revision-Date: 2021-02-15 10:51+0000\n" +"Last-Translator: SteamGoblin <SteamGoblin860@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" "Language: es\n" @@ -71,7 +72,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2451,7 +2452,7 @@ msgstr "No hay escena definida para ejecutar." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Guarda escena antes de ejecutar..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3214,6 +3215,25 @@ msgid "Open & Run a Script" msgstr "Abrir y Ejecutar un Script" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Los siguientes archivos son nuevos en disco.\n" +"¿Qué es lo que quieres hacer?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Recargar" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Volver a Guardar" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Nueva Escena Heredada" @@ -5239,14 +5259,13 @@ msgid "Assets ZIP File" msgstr "Archivo ZIP de elementos" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" -"No se puede encontrar una ruta válida para las imágenes \"lightmap\".\n" -"Guarda la escena (para que las imágenes se guarden en el mismo directorio), " -"o selecciona otra ruta desde las propiedades del \"BackedLightmap\"." +"No se puede determinar una ruta de guardado para las imágenes de los " +"lightmaps.\n" +"Guarda tu escena e inténtalo de nuevo." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5265,26 +5284,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Falló al determinar el tamaño del lightmap ¿El tamaño máximo del lightmap es " +"demasiado pequeño?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Alguna malla es inválida. Asegúrate de que los valores del canal de UV2 " +"están contenidos dentro de la región cuadrangular [0,0,1,0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"El editor de Godot se construyó sin soporte de trazado de rayos, los " +"lightmaps no pueden ser bakeados." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Bake Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Selecciona un Archivo de Plantilla" +msgstr "Selecciona un archivo lightmap bakeado:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6388,9 +6412,8 @@ msgstr "" "Solo se puede asignar un punto a un material de procesado ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Convertir a CPUParticles" +msgstr "Convertir a CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -7097,16 +7120,6 @@ msgstr "" "Los siguientes archivos son nuevos en disco.\n" "¿Qué es lo que quieres hacer?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Recargar" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Volver a Guardar" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Depurador" @@ -7423,7 +7436,11 @@ msgstr "Altura" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "Yaw" +msgstr "Guiñada" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "Tamaño" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -10118,6 +10135,11 @@ msgid "Projects" msgstr "Proyectos" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Obteniendo mirrors, por favor espera..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Ultima Modificación" @@ -11678,36 +11700,31 @@ msgstr "" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Empezar a Bakear" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Preparar estructuras de datos" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Generar AABB" +msgstr "Generar buffers" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Direcciones" +msgstr "Iluminación directa" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Indentar a la Derecha" +msgstr "Iluminación indirecta" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" -msgstr "Post-Procesado" +msgstr "Post procesado" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "Trazando Iluminación:" +msgstr "Trazar lightmaps" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12227,9 +12244,8 @@ msgid "Select device from the list" msgstr "Seleccionar dispositivo de la lista" #: platform/android/export/export.cpp -#, fuzzy msgid "Unable to find the 'apksigner' tool." -msgstr "No se pudo encontrar la herramienta zipalign." +msgstr "No se pudo encontrar la herramienta 'apksigner'." #: platform/android/export/export.cpp msgid "" @@ -12251,18 +12267,14 @@ msgstr "" "exportación." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." msgstr "" -"Ruta del SDK de Android inválida para la compilación personalizada en " -"Configuración del Editor." +"Se requiere una ruta válida del SDK de Android en la Configuración del " +"Editor." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "" -"Ruta del SDK de Android inválida para la compilación personalizada en " -"Configuración del Editor." +msgstr "Ruta del SDK de Android inválida en la Configuración del Editor." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -12271,12 +12283,13 @@ msgstr "¡No se encontró el directorio 'platform-tools'!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." msgstr "" +"No se pudo encontrar el comando adb de las herramientas de la plataforma SDK " +"de Android." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." msgstr "" -"Ruta del SDK de Android inválida para la compilación personalizada en " +"Por favor, comprueba el directorio del SDK de Android especificado en la " "Configuración del Editor." #: platform/android/export/export.cpp @@ -12286,6 +12299,8 @@ msgstr "¡No se encontró el directorio 'build-tools'!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." msgstr "" +"No se pudo encontrar el comando apksigner de las herramientas de " +"construcción del SDK de Android." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12771,27 +12786,23 @@ msgstr "ARVROrigin requiere un nodo hijo ARVRCamera." #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Encontrando mallas y luces" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "Analizando geometría..." +msgstr "Preparando geometría (%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Ver Entorno" +msgstr "Preparar entorno" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "Generando Lightmaps" +msgstr "Generar captura" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "Generando Lightmaps" +msgstr "Guardar lightmaps" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -13205,6 +13216,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"El puerto de muestreo está conectado, pero no se utiliza. Considera la " +"posibilidad de cambiar la fuente a \"SamplerPort\"." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index 4a3624c026..89a9b0778e 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -3,7 +3,7 @@ # Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Diego López <diegodario21@gmail.com>, 2017. -# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2018, 2019, 2020. +# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2018, 2019, 2020, 2021. # Roger Blanco Ribera <roger.blancoribera@gmail.com>, 2016-2018. # Sebastian Silva <sebastian@sugarlabs.org>, 2016. # Jose Luis Bossio <joseluisbossio@gmail.com>, 2018. @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-12-29 21:52+0000\n" +"PO-Revision-Date: 2021-02-05 23:44+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" @@ -30,7 +30,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2408,7 +2408,7 @@ msgstr "No hay escena definida para ejecutar." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Guardar escena antes de ejecutar..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3169,6 +3169,25 @@ msgid "Open & Run a Script" msgstr "Abrir y Correr un Script" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Los siguientes archivos son nuevos en disco.\n" +"¿Qué acción se debería tomar?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Volver a Cargar" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Volver a Guardar" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Nuevo Heredado" @@ -5193,14 +5212,13 @@ msgid "Assets ZIP File" msgstr "Archivo ZIP de Assets" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" -"No se pudo determinar una ruta de guardado para las imagenes de lightmap.\n" -"Guardá tu escena (para imagenes a ser guardadas en el mismo directorio), o " -"elegí una ruta de guardado desde las propiedades de BakedLightmap." +"No se puede determinar una ruta de guardado para las imágenes de los " +"lightmaps.\n" +"Guardá tu escena e inténtalo de nuevo." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5219,26 +5237,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Falló al determinar el tamaño del lightmap ¿El tamaño máximo de lightmap es " +"demasiado pequeño?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Alguna malla es inválida. Asegurate de que los valores del canal UV2 estén " +"contenidos dentro de la región cuadrada [0,0,1,0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"El editor de Godot se compiló sin soporte de ray tracing, los lightmaps no " +"pueden ser bakeados." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Bake Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Elegir Archivo de Plantilla" +msgstr "Selecciona un archivo de lightmap bakeado:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6336,9 +6359,8 @@ msgstr "" "Solo se puede setear un punto en un material de proceso ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Convertir A CPUParticles" +msgstr "Convertir a CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -7045,16 +7067,6 @@ msgstr "" "Los siguientes archivos son nuevos en disco.\n" "¿Qué acción se debería tomar?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Volver a Cargar" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Volver a Guardar" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Depurador" @@ -7374,6 +7386,10 @@ msgid "Yaw" msgstr "Yaw" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "Tamaño" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Objetos Dibujados" @@ -10065,6 +10081,11 @@ msgid "Projects" msgstr "Proyectos" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Recuperando mirrors, esperá, por favor..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Ultima Modificación" @@ -11624,36 +11645,31 @@ msgstr "Asignar un recurso MeshLibrary a este GridMap para usar sus meshes." #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Iniciar Bake" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Preparando estructuras de datos" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Generar AABB" +msgstr "Generar buffers" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Direcciones" +msgstr "Iluminación directa" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Indentar a la Der" +msgstr "Iluminación indirecta" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" -msgstr "Post-Procesado" +msgstr "Post procesado" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "Trazando Luces:" +msgstr "Trazando lightmatps" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12173,7 +12189,7 @@ msgstr "Seleccionar dispositivo de la lista" #: platform/android/export/export.cpp msgid "Unable to find the 'apksigner' tool." -msgstr "" +msgstr "No se pudo encontrar la herramienta 'apksigner'." #: platform/android/export/export.cpp msgid "" @@ -12195,18 +12211,13 @@ msgstr "" "exportación." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." msgstr "" -"Ruta del SDK de Android inválida para la compilación personalizada en " -"Configuración del Editor." +"Se requiere una ruta válida al SDK de Android en la Configuración del Editor." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "" -"Ruta del SDK de Android inválida para la compilación personalizada en " -"Configuración del Editor." +msgstr "Ruta del SDK de Android inválida en la Configuración del Editor." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -12214,23 +12225,22 @@ msgstr "¡No se encontró el directorio 'platform-tools'!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." -msgstr "" +msgstr "No se pudo encontrar el comando adb en las Android SDK platform-tools." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." msgstr "" -"Ruta del SDK de Android inválida para la compilación personalizada en " +"Por favor, comprueba el directorio del SDK de Android especificado en la " "Configuración del Editor." #: platform/android/export/export.cpp -#, fuzzy msgid "Missing 'build-tools' directory!" -msgstr "¡No se encontró el directorio 'platform-tools'!" +msgstr "¡No se encontró el directorio 'build-tools'!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." msgstr "" +"No se pudo encontrar el comando apksigner en las Android SDK build-tools." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12713,27 +12723,23 @@ msgstr "ARVROrigin requiere un nodo hijo ARVRCamera." #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Encontrar mallas y luces" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "Parseando Geometría..." +msgstr "Preparando geometría (%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Ver Entorno" +msgstr "Preparando entorno" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "Generando Lightmaps" +msgstr "Generando capturas" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "Generando Lightmaps" +msgstr "Guardando lightmaps" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -13142,6 +13148,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"El puerto de muestreo está conectado, pero no se utiliza. Considerá la " +"posibilidad de cambiar la fuente a \"SamplerPort\"." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/et.po b/editor/translations/et.po index 2707b415e2..3babd690d9 100644 --- a/editor/translations/et.po +++ b/editor/translations/et.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2021-01-14 22:48+0000\n" +"PO-Revision-Date: 2021-02-05 09:20+0000\n" "Last-Translator: Kritzmensch <streef.gtx@gmail.com>\n" "Language-Team: Estonian <https://hosted.weblate.org/projects/godot-engine/" "godot/et/>\n" @@ -1127,14 +1127,12 @@ msgid "Gold Sponsors" msgstr "Kuldsponsorid" #: editor/editor_about.cpp -#, fuzzy msgid "Silver Sponsors" -msgstr "Hõbennetajad" +msgstr "Hõbesponsorid" #: editor/editor_about.cpp -#, fuzzy msgid "Bronze Sponsors" -msgstr "Pronksannetajad" +msgstr "Pronkssponsorid" #: editor/editor_about.cpp msgid "Mini Sponsors" @@ -1279,11 +1277,11 @@ msgstr "" #: editor/editor_audio_buses.cpp msgid "Solo" -msgstr "" +msgstr "Soolo" #: editor/editor_audio_buses.cpp msgid "Mute" -msgstr "" +msgstr "Vaigista" #: editor/editor_audio_buses.cpp msgid "Bypass" @@ -1300,7 +1298,7 @@ msgstr "Duplikeeri" #: editor/editor_audio_buses.cpp msgid "Reset Volume" -msgstr "" +msgstr "Lähtesta valjus" #: editor/editor_audio_buses.cpp msgid "Delete Effect" @@ -1328,7 +1326,7 @@ msgstr "" #: editor/editor_audio_buses.cpp msgid "Reset Bus Volume" -msgstr "" +msgstr "Lähtesta siini valjus" #: editor/editor_audio_buses.cpp msgid "Move Audio Bus" @@ -1634,7 +1632,7 @@ msgstr "Skriptiredaktor" #: editor/editor_feature_profile.cpp msgid "Asset Library" -msgstr "" +msgstr "Vadade kogum" #: editor/editor_feature_profile.cpp msgid "Scene Tree Editing" @@ -1809,7 +1807,7 @@ msgstr "Värskenda" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Recognized" -msgstr "" +msgstr "Kõik tuvastatud" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Files (*)" @@ -1896,11 +1894,11 @@ msgstr "Värskenda faile." #: editor/editor_file_dialog.cpp msgid "(Un)favorite current folder." -msgstr "" +msgstr "Lisa praegune kaust lemmikute sekka." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Toggle the visibility of hidden files." -msgstr "" +msgstr "Näita peidetud faile." #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a grid of thumbnails." @@ -2387,7 +2385,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "" +msgstr "Ekspordi võrgu kogum" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." @@ -3025,13 +3023,29 @@ msgstr "" #: editor/editor_node.cpp msgid "Merge With Existing" -msgstr "" +msgstr "Liida olemasolevaga" #: editor/editor_node.cpp msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -3316,7 +3330,7 @@ msgstr "" #: editor/editor_sub_scene.cpp msgid "Scene Path:" -msgstr "" +msgstr "Stseeni tee:" #: editor/editor_sub_scene.cpp msgid "Import From Node:" @@ -4955,7 +4969,7 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." -msgstr "" +msgstr "Impordi..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Plugins..." @@ -6735,11 +6749,11 @@ msgstr "Käivita" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" -msgstr "" +msgstr "Trepi sissepoole" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Over" -msgstr "" +msgstr "Trepi üle" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Break" @@ -6784,16 +6798,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Siluja" @@ -6879,7 +6883,7 @@ msgstr "" #: editor/plugins/script_text_editor.cpp msgid "Breakpoints" -msgstr "" +msgstr "Katkepunktid" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp @@ -6987,19 +6991,19 @@ msgstr "" #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Toggle Breakpoint" -msgstr "" +msgstr "Lülita katkepunkt sisse/välja" #: editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" -msgstr "" +msgstr "Eemalda kõik katkepunktid" #: editor/plugins/script_text_editor.cpp msgid "Go to Next Breakpoint" -msgstr "" +msgstr "Liigu järgmise katkepunkti juurde" #: editor/plugins/script_text_editor.cpp msgid "Go to Previous Breakpoint" -msgstr "" +msgstr "Naase eelmise katkepunkti juurde" #: editor/plugins/shader_editor_plugin.cpp msgid "" @@ -7108,6 +7112,10 @@ msgid "Yaw" msgstr "Sagitaal" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Objekte kuvatud" @@ -7197,7 +7205,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Lock View Rotation" -msgstr "" +msgstr "Lukusta vaateakna pöördenurk" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" @@ -7285,7 +7293,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Rotation Locked" -msgstr "" +msgstr "Vaateakna pöördenurk on lukustatud" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -9581,12 +9589,17 @@ msgid "" "Please edit the project and set the main scene in the Project Settings under " "the \"Application\" category." msgstr "" +"Projekti ei saa käivitada: peastseeni ei ole määratud.\n" +"Redigeerige project.godot faili ja määrake projekti peastseen \"application" +"\" alajaotuses." #: editor/project_manager.cpp msgid "" "Can't run project: Assets need to be imported.\n" "Please edit the project to trigger the initial import." msgstr "" +"Projekti ei saa käivitada: varad tuleb importida.\n" +"Redigeerige projekti käivitama algset importimise protsessi." #: editor/project_manager.cpp msgid "Are you sure to run %d projects at once?" @@ -9632,6 +9645,10 @@ msgid "Projects" msgstr "Projektid" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" @@ -9649,7 +9666,7 @@ msgstr "Uus projekt" #: editor/project_manager.cpp msgid "Remove Missing" -msgstr "" +msgstr "Eemalda puuduvad" #: editor/project_manager.cpp msgid "Templates" @@ -9661,7 +9678,7 @@ msgstr "" #: editor/project_manager.cpp msgid "Can't run project" -msgstr "" +msgstr "Projekti ei saa käivitada" #: editor/project_manager.cpp msgid "" @@ -10734,7 +10751,7 @@ msgstr "Videomälu" #: editor/script_editor_debugger.cpp msgid "Skip Breakpoints" -msgstr "" +msgstr "Jäta katkepunktid vahele" #: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" @@ -10750,11 +10767,11 @@ msgstr "Virnakaadrid" #: editor/script_editor_debugger.cpp msgid "Profiler" -msgstr "" +msgstr "Profileerija" #: editor/script_editor_debugger.cpp msgid "Network Profiler" -msgstr "" +msgstr "Võrgu profileerija" #: editor/script_editor_debugger.cpp msgid "Monitor" @@ -10790,7 +10807,7 @@ msgstr "Ressursi tee" #: editor/script_editor_debugger.cpp msgid "Type" -msgstr "" +msgstr "Tüüp" #: editor/script_editor_debugger.cpp msgid "Format" @@ -10823,7 +10840,7 @@ msgstr "" #: editor/script_editor_debugger.cpp #, fuzzy msgid "Export measures as CSV" -msgstr "Ekspordi mõõtmed/meetmed CSV-vormingus" +msgstr "Ekspordi mõõtmed CSV-vormingus" #: editor/settings_config_dialog.cpp msgid "Erase Shortcut" diff --git a/editor/translations/eu.po b/editor/translations/eu.po index cb8cac87ea..3cd7a78f25 100644 --- a/editor/translations/eu.po +++ b/editor/translations/eu.po @@ -2991,6 +2991,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6750,16 +6766,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7074,6 +7080,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9598,6 +9608,13 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "" +"Fitxategiak arakatzen,\n" +"Itxaron mesedez..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/fa.po b/editor/translations/fa.po index 39983dc201..a6b5b83312 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -3046,6 +3046,23 @@ msgid "Open & Run a Script" msgstr "گشودن و اجرای یک اسکریپت" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "استخراج پرونده های زیر از بسته بندی انجام نشد:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "وارث جدید" @@ -7028,16 +7045,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7379,6 +7386,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -10059,6 +10070,11 @@ msgid "Projects" msgstr "طرح ها" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "بارگیری" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/fi.po b/editor/translations/fi.po index 61a2c5324e..2768e46e1b 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -8,14 +8,14 @@ # Jarmo Riikonen <amatrelan@gmail.com>, 2017. # Nuutti Varvikko <nvarvikko@gmail.com>, 2018. # Sami Lehtilä <sami.lehtila@gmail.com>, 2018. -# Tapani Niemi <tapani.niemi@kapsi.fi>, 2018, 2019, 2020. +# Tapani Niemi <tapani.niemi@kapsi.fi>, 2018, 2019, 2020, 2021. # Tuomas Lähteenmäki <lahtis@gmail.com>, 2019. # Matti Niskanen <matti.t.niskanen@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-12-29 21:52+0000\n" +"PO-Revision-Date: 2021-02-05 23:44+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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2384,7 +2384,7 @@ msgstr "Suoritettavaa skeneä ei ole määritetty." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Tallenna skene ennen ajamista..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3129,6 +3129,25 @@ msgid "Open & Run a Script" msgstr "Avaa ja suorita skripti" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Seuraavat tiedostot ovat uudempia levyllä.\n" +"Mikä toimenpide tulisi suorittaa?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Lataa uudelleen" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Tallenna uudelleen" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Uusi peritty skene" @@ -5147,14 +5166,12 @@ msgid "Assets ZIP File" msgstr "Assettien zip-tiedosto" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" "Lightmap-kuvien tallennuspolun määrittäminen ei onnistu.\n" -"Tallenna skenesi (jotta kuvat tallentuisivat samaan hakemistoon), tai " -"valitse tallennuspolku BakedLightmapin asetuksista." +"Tallenna skenesi ja yritä uudelleen." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5173,26 +5190,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Lightmapin koon määrittäminen epäonnistui. Suurin lightmapin koko liian " +"pieni?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Jokin mesh on virheellinen. Varmista, että UV2-kanavan arvot ovat [0.0, 1.0] " +"välisen neliön alueella." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Godot-editori on käännetty ilman ray tracing -tukea, joten lightmappeja ei " +"voi kehittää." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Kehitä Lightmapit" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Valitse mallitiedosto" +msgstr "Valitse lightmapin kehitystiedosto:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6288,9 +6310,8 @@ msgstr "" "Piste voidaan asettaa ainoastaan ParticlesMaterial käsittelyn materiaaliin" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Muunna CPUPartikkeleiksi" +msgstr "Muunna CPUParticles2D solmuksi" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6997,16 +7018,6 @@ msgstr "" "Seuraavat tiedostot ovat uudempia levyllä.\n" "Mikä toimenpide tulisi suorittaa?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Lataa uudelleen" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Tallenna uudelleen" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Debuggeri" @@ -7325,6 +7336,10 @@ msgid "Yaw" msgstr "Käännös (yaw)" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "Koko" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Objekteja piirretty" @@ -10007,6 +10022,11 @@ msgid "Projects" msgstr "Projektit" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Noudetaan peilipalvelimia, hetkinen..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Viimeksi muutettu" @@ -11566,36 +11586,31 @@ msgstr "" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Aloita kehitys" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Valmistellaan tietorakenteita" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Luo AABB" +msgstr "Luo puskurit" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Suunnat" +msgstr "Suora valaistus" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Sisennä oikealle" +msgstr "Epäsuora valaistus" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" msgstr "Jälkikäsittely" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "Piirretään valoja:" +msgstr "Piirretään lightmappeja" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12109,9 +12124,8 @@ msgid "Select device from the list" msgstr "Valitse laite listasta" #: platform/android/export/export.cpp -#, fuzzy msgid "Unable to find the 'apksigner' tool." -msgstr "zipalign työkalua ei löydy." +msgstr "'apksigner' työkalua ei löydy." #: platform/android/export/export.cpp msgid "" @@ -12131,18 +12145,12 @@ msgid "Release keystore incorrectly configured in the export preset." msgstr "Release keystore on konfiguroitu väärin viennin esiasetuksissa." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." -msgstr "" -"Virheellinen Android SDK -polku mukautettu käännöstä varten editorin " -"asetuksissa." +msgstr "Editorin asetuksiin tarvitaan kelvollinen Android SDK -polku." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "" -"Virheellinen Android SDK -polku mukautettu käännöstä varten editorin " -"asetuksissa." +msgstr "Editorin asetuksissa on virheellinen Android SDK -polku." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -12150,14 +12158,12 @@ msgstr "'platform-tools' hakemisto puuttuu!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." -msgstr "" +msgstr "Android SDK platform-tools adb-komentoa ei löydy." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." msgstr "" -"Virheellinen Android SDK -polku mukautettu käännöstä varten editorin " -"asetuksissa." +"Ole hyvä ja tarkista editorin asetuksissa määritelty Android SDK -hakemisto." #: platform/android/export/export.cpp msgid "Missing 'build-tools' directory!" @@ -12165,7 +12171,7 @@ msgstr "'build-tools' hakemisto puuttuu!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." -msgstr "" +msgstr "Android SDK build-tools apksigner-komentoa ei löydy." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12639,27 +12645,23 @@ msgstr "ARVROrigin solmu tarvitsee ARVRCamera alisolmun." #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Etsitään meshejä ja valoja" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "Jäsentää geometriaa…" +msgstr "Valmistellaan geometriaa (%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Näytä ympäristö" +msgstr "Valmistellaan ympäristöä" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "Luodaan Lightmappeja" +msgstr "Luodaan kaappausta" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "Luodaan Lightmappeja" +msgstr "Tallennetaan lightmappeja" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -13067,6 +13069,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"Näytteistysportti on yhdistetty mutta ei käytössä. Harkitse lähteen " +"vaihtamista 'SamplerPort' asetukseen." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/fil.po b/editor/translations/fil.po index 575e1370b3..40dc021b75 100644 --- a/editor/translations/fil.po +++ b/editor/translations/fil.po @@ -2992,6 +2992,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6750,16 +6766,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7074,6 +7080,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9598,6 +9608,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/fr.po b/editor/translations/fr.po index d5acf9fca8..a0ac83396b 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -69,7 +69,7 @@ # Sofiane <Sofiane-77@caramail.fr>, 2019. # Camille Mohr-Daurat <pouleyketchoup@gmail.com>, 2019. # Pierre Stempin <pierre.stempin@gmail.com>, 2019. -# Pierre Caye <pierrecaye@laposte.net>, 2020. +# Pierre Caye <pierrecaye@laposte.net>, 2020, 2021. # Kevin Bouancheau <kevin.bouancheau@gmail.com>, 2020. # LaurentOngaro <laurent@gameamea.com>, 2020. # Julien Humbert <julroy67@gmail.com>, 2020. @@ -82,8 +82,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-01-01 10:30+0000\n" -"Last-Translator: TechnoPorg <jonah.janzen@gmail.com>\n" +"PO-Revision-Date: 2021-01-22 10:21+0000\n" +"Last-Translator: Pierre Caye <pierrecaye@laposte.net>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" "Language: fr\n" @@ -91,7 +91,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2473,7 +2473,7 @@ msgstr "Il n'y a pas de scène définie pour être lancée." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Enregistrer la scène avant de l'exécuter..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3239,6 +3239,24 @@ msgid "Open & Run a Script" msgstr "Ouvrir et exécuter un script" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Les fichiers suivants sont plus récents sur le disque.\n" +"Quelle action doit être prise ?" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Recharger" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Ré-enregistrer" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Nouveau hérité" @@ -5267,15 +5285,12 @@ msgid "Assets ZIP File" msgstr "Fichier ZIP de données" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" -"Ne peut pas déterminer un chemin de sauvegarde pour les images lightmap.\n" -"Sauvegarder votre scène (pour que les images soient sauvegardées dans le " -"même répertoire), ou choisissez un répertoire de sauvegarde à partir des " -"propriétés BakedLightmap." +"Impossible de déterminer un chemin de sauvegarde pour les images lightmap.\n" +"Enregistrez votre scène et réessayez." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5294,26 +5309,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Échec de la détermination de la taille de la lightmap. Taille maximale de " +"lightmap trop petite ?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Un maillage n'est pas valide. Assurez-vous que les valeurs du canal UV2 sont " +"contenues dans la région carrée [0.0,1.0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"L'éditeur Godot a été compilé sans support du ray tracing, les lightmaps ne " +"peuvent pas être pré-calculées." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Précalculer les lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Sélectionner le fichier de modèle" +msgstr "Sélectionnez le fichier de pré-calcul de lightmap :" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -7131,16 +7151,6 @@ msgstr "" "Les fichiers suivants sont plus récents sur le disque.\n" "Quelle action doit être prise ? :" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Recharger" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Ré-enregistrer" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Débogueur" @@ -7461,6 +7471,10 @@ msgid "Yaw" msgstr "Lacet (hauteur)" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "Taille" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Objets dessinés" @@ -10164,6 +10178,10 @@ msgid "Projects" msgstr "Projets" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "Chargement en cours, veuillez patienter..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Dernière modification" @@ -11723,36 +11741,31 @@ msgstr "" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Commencer le pré-calcul" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Préparation des structures de données" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Générer AABB" +msgstr "Générer des tampons" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Directions" +msgstr "Éclairage direct" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Indenter vers la droite" +msgstr "Éclairage indirect" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" msgstr "Post-traitement" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "Tracer les lumières :" +msgstr "Tracer des lightmaps" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12299,11 +12312,10 @@ msgstr "" "d'exportation." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." msgstr "" -"Un chemin d'accès valide au SDK Android doit être défini dans les paramètres " -"de l'éditeur." +"Un chemin d'accès valide au SDK Android est requis dans les paramètres de " +"l'éditeur." #: platform/android/export/export.cpp msgid "Invalid Android SDK path in Editor Settings." @@ -12316,14 +12328,13 @@ msgstr "Dossier « platform-tools » manquant !" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." -msgstr "" +msgstr "Impossible de trouver la commande adb du SDK Android platform-tools." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." msgstr "" -"Chemin d'accès invalide au SDK Android pour le build custom dans les " -"paramètres de l'éditeur." +"Veuillez vérifier le répertoire du SDK Android spécifié dans les paramètres " +"de l'éditeur." #: platform/android/export/export.cpp msgid "Missing 'build-tools' directory!" @@ -12332,6 +12343,7 @@ msgstr "Dossier « build-tools » manquant !" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." msgstr "" +"Impossible de trouver la commande apksigner du SDK Android build-tools." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12826,27 +12838,23 @@ msgstr "ARVROrigin requiert un nœud enfant ARVRCamera." #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Recherche de maillages et de lumières" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "Analyse de la géométrie..." +msgstr "Préparation de la géométrie (%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Voir environnement" +msgstr "Préparation de l'environnement" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "Génération des lightmaps" +msgstr "Génération de capture" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "Génération des lightmaps" +msgstr "Enregistrement des lightmaps" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -13263,6 +13271,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"Le port de l'échantillonneur est connecté mais n'est pas utilisé. Pensez à " +"changer la source en 'SamplerPort'." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/ga.po b/editor/translations/ga.po index 6036193c24..2e97bc49ee 100644 --- a/editor/translations/ga.po +++ b/editor/translations/ga.po @@ -2986,6 +2986,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6744,16 +6760,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7068,6 +7074,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9593,6 +9603,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/gl.po b/editor/translations/gl.po new file mode 100644 index 0000000000..8a4250e00e --- /dev/null +++ b/editor/translations/gl.po @@ -0,0 +1,12824 @@ +# Galician translation of the Godot Engine editor. +# Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). +# This file is distributed under the same license as the Godot source code. +# +# Andy Barcia <andybarcia4@gmail.com>, 2021. +# PokeGalaico <abloodyfreaks@gmail.com>, 2021. +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2021-02-15 10:51+0000\n" +"Last-Translator: Andy Barcia <andybarcia4@gmail.com>\n" +"Language-Team: Galician <https://hosted.weblate.org/projects/godot-engine/" +"godot/gl/>\n" +"Language: gl\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.5-dev\n" + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "Tipo de argumento inválido para convert(), utiliza constantes TYPE_*." + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "Esperábase un string de lonxitude 1 (un carácter)." + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +#: modules/mono/glue/gd_glue.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" +"Non hai insuficientes \"bytes\" para descodificar, ou o formato é inválido." + +#: core/math/expression.cpp +msgid "Invalid input %i (not passed) in expression" +msgstr "Entrada inválida %i (non recibida) na expresión" + +#: core/math/expression.cpp +msgid "self can't be used because instance is null (not passed)" +msgstr "Non se pode usar \"self\" porque a instancia é nula (non recibida)" + +#: core/math/expression.cpp +msgid "Invalid operands to operator %s, %s and %s." +msgstr "Operandos inválidos para o operador %s, %s e %s." + +#: core/math/expression.cpp +msgid "Invalid index of type %s for base type %s" +msgstr "Índice de tipo %s inválido para tipo base %s" + +#: core/math/expression.cpp +msgid "Invalid named index '%s' for base type %s" +msgstr "O índice do nome '%s' non é válido para o tipo de base %s" + +#: core/math/expression.cpp +msgid "Invalid arguments to construct '%s'" +msgstr "Argumentos inválidos para construir '%s'" + +#: core/math/expression.cpp +msgid "On call to '%s':" +msgstr "En chamada a '%s':" + +#: core/ustring.cpp +msgid "B" +msgstr "B" + +#: core/ustring.cpp +msgid "KiB" +msgstr "KiB" + +#: core/ustring.cpp +msgid "MiB" +msgstr "MiB" + +#: core/ustring.cpp +msgid "GiB" +msgstr "GiB" + +#: core/ustring.cpp +msgid "TiB" +msgstr "TiB" + +#: core/ustring.cpp +msgid "PiB" +msgstr "PiB" + +#: core/ustring.cpp +msgid "EiB" +msgstr "EiB" + +#: editor/animation_bezier_editor.cpp +msgid "Free" +msgstr "Libre" + +#: editor/animation_bezier_editor.cpp +msgid "Balanced" +msgstr "Balanceado" + +#: editor/animation_bezier_editor.cpp +msgid "Mirror" +msgstr "Espello" + +#: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp +msgid "Time:" +msgstr "Tempo:" + +#: editor/animation_bezier_editor.cpp +msgid "Value:" +msgstr "Valor:" + +#: editor/animation_bezier_editor.cpp +msgid "Insert Key Here" +msgstr "Introducir Clave Aquí" + +#: editor/animation_bezier_editor.cpp +msgid "Duplicate Selected Key(s)" +msgstr "Duplicar Clave(s) Seleccionadas(s)" + +#: editor/animation_bezier_editor.cpp +msgid "Delete Selected Key(s)" +msgstr "Eliminar Clave(s) Seleccionada(s)" + +#: editor/animation_bezier_editor.cpp +msgid "Add Bezier Point" +msgstr "Engadir Punto Bezier" + +#: editor/animation_bezier_editor.cpp +msgid "Move Bezier Points" +msgstr "Mover Punto Bezier" + +#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "Duplicar Claves de Animación" + +#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp +msgid "Anim Delete Keys" +msgstr "Eliminar Claves de Animación" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Keyframe Time" +msgstr "Cambiar Tempo do Fotograma Clave" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Transition" +msgstr "Cambiar Transición de Animación" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Transform" +msgstr "Cambiar Transformación da Animación" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Keyframe Value" +msgstr "Cambiar Valor do Fotograma Clave da Animación" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Call" +msgstr "Cambiar Chamada da Animación" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Keyframe Time" +msgstr "Cambiar Tempo de Múltiples Fotogramas Claves de Animación" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Transition" +msgstr "Cambiar Múltiples Transicións da Animación" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Transform" +msgstr "Cambiar Múltiples Transformacións da Animación" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Keyframe Value" +msgstr "Cambiar Múltiples Valores do Fotograma Clave da Animación" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Call" +msgstr "Cambiar Múltiples Chamadas da Animación" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Length" +msgstr "Cambiar Lonxitude da Animación" + +#: editor/animation_track_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "Cambiar Ciclo da Animación" + +#: editor/animation_track_editor.cpp +msgid "Property Track" +msgstr "Pista de Propiedades" + +#: editor/animation_track_editor.cpp +msgid "3D Transform Track" +msgstr "Pista de Transformación 3D" + +#: editor/animation_track_editor.cpp +msgid "Call Method Track" +msgstr "Pista de Chamadas de Métodos" + +#: editor/animation_track_editor.cpp +msgid "Bezier Curve Track" +msgstr "Pista de Curva Bezier" + +#: editor/animation_track_editor.cpp +msgid "Audio Playback Track" +msgstr "Pista de Reprodución de Audio" + +#: editor/animation_track_editor.cpp +msgid "Animation Playback Track" +msgstr "Pista de Reprodución de Animación" + +#: editor/animation_track_editor.cpp +msgid "Animation length (frames)" +msgstr "Lonxitude da Animacion (en fotogramas)" + +#: editor/animation_track_editor.cpp +msgid "Animation length (seconds)" +msgstr "Lonxitude da Animación (en segundos)" + +#: editor/animation_track_editor.cpp +msgid "Add Track" +msgstr "Engadir Pista" + +#: editor/animation_track_editor.cpp +msgid "Animation Looping" +msgstr "Animación en Bucle" + +#: editor/animation_track_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Functions:" +msgstr "Funciones:" + +#: editor/animation_track_editor.cpp +msgid "Audio Clips:" +msgstr "Clips de Audio:" + +#: editor/animation_track_editor.cpp +msgid "Anim Clips:" +msgstr "Clips de Animación:" + +#: editor/animation_track_editor.cpp +msgid "Change Track Path" +msgstr "Cambiar Ruta da Pista" + +#: editor/animation_track_editor.cpp +msgid "Toggle this track on/off." +msgstr "Act./Desact. esta pista." + +#: editor/animation_track_editor.cpp +msgid "Update Mode (How this property is set)" +msgstr "Modo de Actualización (cómo se establece esta propiedade)" + +#: editor/animation_track_editor.cpp +msgid "Interpolation Mode" +msgstr "Modo de Interpolación" + +#: editor/animation_track_editor.cpp +msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" +msgstr "Modo de Bucle Envolvente (interpola o final co comezo do bucle)" + +#: editor/animation_track_editor.cpp +msgid "Remove this track." +msgstr "Eliminar esta pista." + +#: editor/animation_track_editor.cpp +msgid "Time (s): " +msgstr "Tempo (s): " + +#: editor/animation_track_editor.cpp +msgid "Toggle Track Enabled" +msgstr "Act./Desact. Pista" + +#: editor/animation_track_editor.cpp +msgid "Continuous" +msgstr "Continuo" + +#: editor/animation_track_editor.cpp +msgid "Discrete" +msgstr "Discreto" + +#: editor/animation_track_editor.cpp +msgid "Trigger" +msgstr "Detonante (Trigger)" + +#: editor/animation_track_editor.cpp +msgid "Capture" +msgstr "Captura" + +#: editor/animation_track_editor.cpp +msgid "Nearest" +msgstr "Máis Cercano" + +#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp +#: editor/property_editor.cpp +msgid "Linear" +msgstr "Lineal" + +#: editor/animation_track_editor.cpp +msgid "Cubic" +msgstr "Cúbica" + +#: editor/animation_track_editor.cpp +msgid "Clamp Loop Interp" +msgstr "Interpolación de Bucle Recortado" + +#: editor/animation_track_editor.cpp +msgid "Wrap Loop Interp" +msgstr "Interpolación de Bucle Envolvente" + +#: editor/animation_track_editor.cpp +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "Engadir Chave" + +#: editor/animation_track_editor.cpp +msgid "Duplicate Key(s)" +msgstr "Duplicar Chave(s)" + +#: editor/animation_track_editor.cpp +msgid "Delete Key(s)" +msgstr "Eliminar Chave(s)" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Update Mode" +msgstr "Cambiar Modo de Actualización da Animación" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Interpolation Mode" +msgstr "Cambiar Modo de Interpolación da Animación" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Loop Mode" +msgstr "Cambiar Modo de Bucle da Animación" + +#: editor/animation_track_editor.cpp +msgid "Remove Anim Track" +msgstr "Eliminar Pista de Animación" + +#: editor/animation_track_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "Crear nova pista para %s e engadir chave?" + +#: editor/animation_track_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "Crear %d novas pistas e engadir chaves?" + +#: editor/animation_track_editor.cpp editor/create_dialog.cpp +#: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/mesh_instance_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +#: editor/script_create_dialog.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Create" +msgstr "Crear" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert" +msgstr "Engadir Animación" + +#: editor/animation_track_editor.cpp +msgid "AnimationPlayer can't animate itself, only other players." +msgstr "Un AnimationPlayer non pode animarse a si mesmo, só a outros players." + +#: editor/animation_track_editor.cpp +msgid "Anim Create & Insert" +msgstr "Crear e Engadir Animación" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "Engadir Pista e Chave de Animación" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert Key" +msgstr "Engadir Chave de Animación" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Step" +msgstr "Cambiar Paso de Animación" + +#: editor/animation_track_editor.cpp +msgid "Rearrange Tracks" +msgstr "Reordenar Pistas" + +#: editor/animation_track_editor.cpp +msgid "Transform tracks only apply to Spatial-based nodes." +msgstr "As pistas de transformación só aplícanse a nodos basados en Spatial." + +#: editor/animation_track_editor.cpp +msgid "" +"Audio tracks can only point to nodes of type:\n" +"-AudioStreamPlayer\n" +"-AudioStreamPlayer2D\n" +"-AudioStreamPlayer3D" +msgstr "" +"As pistas de audio só poden apuntar a nodos de tipo:\n" +"-AudioStreamPlayer\n" +"-AudioStreamPlayer2D\n" +"-AudioStreamPlayer3D" + +#: editor/animation_track_editor.cpp +msgid "Animation tracks can only point to AnimationPlayer nodes." +msgstr "As pistas de animación só poden apuntar a nodos AnimationPlayer." + +#: editor/animation_track_editor.cpp +msgid "An animation player can't animate itself, only other players." +msgstr "" +"Un reproductor de animacións non pode animarse a si mesmo, só a outros " +"reproductores." + +#: editor/animation_track_editor.cpp +msgid "Not possible to add a new track without a root" +msgstr "Non é posible engadir unha nova pista sen unha raíz" + +#: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "Pista inválida para Bezier (non hai sub-propiedades axeitadas)" + +#: editor/animation_track_editor.cpp +msgid "Add Bezier Track" +msgstr "Engadir Pista Bezier" + +#: editor/animation_track_editor.cpp +msgid "Track path is invalid, so can't add a key." +msgstr "A ruta á pista é inválida, polo que non se poden engadir chaves." + +#: editor/animation_track_editor.cpp +msgid "Track is not of type Spatial, can't insert key" +msgstr "A pista non é de tipo Spatial, e non se pode engadir chave" + +#: editor/animation_track_editor.cpp +msgid "Add Transform Track Key" +msgstr "Engadir Chave de Pista de Transformación" + +#: editor/animation_track_editor.cpp +msgid "Add Track Key" +msgstr "Engadir Chave de Pista" + +#: editor/animation_track_editor.cpp +msgid "Track path is invalid, so can't add a method key." +msgstr "" +"A ruta á pista é inválida, polo que non se pode engadir unha clave de método." + +#: editor/animation_track_editor.cpp +msgid "Add Method Track Key" +msgstr "Engadir Chave de Pista de Método" + +#: editor/animation_track_editor.cpp +msgid "Method not found in object: " +msgstr "Método non encontrado no obxecto: " + +#: editor/animation_track_editor.cpp +msgid "Anim Move Keys" +msgstr "Mover Claves de Animación" + +#: editor/animation_track_editor.cpp +msgid "Clipboard is empty" +msgstr "O portapapeis está baleiro" + +#: editor/animation_track_editor.cpp +msgid "Paste Tracks" +msgstr "Pegar Pistas" + +#: editor/animation_track_editor.cpp +msgid "Anim Scale Keys" +msgstr "Escalar Chaves de Animación" + +#: editor/animation_track_editor.cpp +msgid "" +"This option does not work for Bezier editing, as it's only a single track." +msgstr "" +"Esta opción non funciona con edición Bezier, xa que é unha única pista." + +#: editor/animation_track_editor.cpp +msgid "" +"This animation belongs to an imported scene, so changes to imported tracks " +"will not be saved.\n" +"\n" +"To enable the ability to add custom tracks, navigate to the scene's import " +"settings and set\n" +"\"Animation > Storage\" to \"Files\", enable \"Animation > Keep Custom Tracks" +"\", then re-import.\n" +"Alternatively, use an import preset that imports animations to separate " +"files." +msgstr "" +"Esta animación pertence a unha escena importada, polo que os cambios nas " +"pistas importadas non quedaran gardados.\n" +"\n" +"Para habilitar a capacidade de engadir pistas personalizadas, vai á " +"configuración de importación da escena e establece\n" +"\"Animación > Almacenamento\" a \"Arquivos\", activa \"Animación > Manter " +"Pistas Personalizadas\", e logo reimportaa.\n" +"Tamén poder usar un preset de importación que importa animacións para " +"separar arquivos." + +#: editor/animation_track_editor.cpp +msgid "Warning: Editing imported animation" +msgstr "Advertencia: Estase editando unha animación importada" + +#: editor/animation_track_editor.cpp +msgid "Select an AnimationPlayer node to create and edit animations." +msgstr "Selecciona un nodo AnimationPlayer para crear e editar animacións." + +#: editor/animation_track_editor.cpp +msgid "Only show tracks from nodes selected in tree." +msgstr "Só mostrar pistas de nodos seleccionados na árbore." + +#: editor/animation_track_editor.cpp +msgid "Group tracks by node or display them as plain list." +msgstr "Agrupar pistas por nodo ou mostralas coma unha simple lista." + +#: editor/animation_track_editor.cpp +msgid "Snap:" +msgstr "Axuste de Cuadrícula:" + +#: editor/animation_track_editor.cpp +msgid "Animation step value." +msgstr "Valor de paso de animación." + +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "Segundos" + +#: editor/animation_track_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "FPS" +msgstr "FPS" + +#: editor/animation_track_editor.cpp editor/editor_properties.cpp +#: editor/plugins/polygon_2d_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit" +msgstr "Editar" + +#: editor/animation_track_editor.cpp +msgid "Animation properties." +msgstr "Propiedades de Animación." + +#: editor/animation_track_editor.cpp +msgid "Copy Tracks" +msgstr "Copiar Pistas" + +#: editor/animation_track_editor.cpp +msgid "Scale Selection" +msgstr "Escalar Selección" + +#: editor/animation_track_editor.cpp +msgid "Scale From Cursor" +msgstr "Escalar desde o Cursor" + +#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "Duplicar Selección" + +#: editor/animation_track_editor.cpp +msgid "Duplicate Transposed" +msgstr "Duplicar Transposto" + +#: editor/animation_track_editor.cpp +msgid "Delete Selection" +msgstr "Eliminar Selección" + +#: editor/animation_track_editor.cpp +msgid "Go to Next Step" +msgstr "Ir ao Seguinte Paso" + +#: editor/animation_track_editor.cpp +msgid "Go to Previous Step" +msgstr "Ir ao Anterior Paso" + +#: editor/animation_track_editor.cpp +msgid "Optimize Animation" +msgstr "Optimizar Animación" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up Animation" +msgstr "Limpiar Animación" + +#: editor/animation_track_editor.cpp +msgid "Pick the node that will be animated:" +msgstr "Elixe o nodo que será animado:" + +#: editor/animation_track_editor.cpp +msgid "Use Bezier Curves" +msgstr "Usar Curvas Bezier" + +#: editor/animation_track_editor.cpp +msgid "Anim. Optimizer" +msgstr "Optimizador de Animación" + +#: editor/animation_track_editor.cpp +msgid "Max. Linear Error:" +msgstr "Erro Lineal Máximo:" + +#: editor/animation_track_editor.cpp +msgid "Max. Angular Error:" +msgstr "Erro Angular Máximo:" + +#: editor/animation_track_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "Ángulo Optimizable Máximo:" + +#: editor/animation_track_editor.cpp +msgid "Optimize" +msgstr "Optimizar" + +#: editor/animation_track_editor.cpp +msgid "Remove invalid keys" +msgstr "Eliminar chaves inválidas" + +#: editor/animation_track_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "Eliminar pistas baleiras e sen resolver" + +#: editor/animation_track_editor.cpp +msgid "Clean-up all animations" +msgstr "Limpiar tódolas animacións" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "Limpiar Animación(s) (NON HAI VOLTA ATRÁS!)" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up" +msgstr "Limpiar" + +#: editor/animation_track_editor.cpp +msgid "Scale Ratio:" +msgstr "Relación de Escalado:" + +#: editor/animation_track_editor.cpp +msgid "Select Tracks to Copy" +msgstr "Selecciona as Pistas a Copiar" + +#: editor/animation_track_editor.cpp editor/editor_log.cpp +#: editor/editor_properties.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Copy" +msgstr "Copiar" + +#: editor/animation_track_editor.cpp +msgid "Select All/None" +msgstr "Seleccionar Todas/Ningunha" + +#: editor/animation_track_editor_plugins.cpp +msgid "Add Audio Track Clip" +msgstr "Engadir Clip de Pista de Audio" + +#: editor/animation_track_editor_plugins.cpp +msgid "Change Audio Track Clip Start Offset" +msgstr "Cambiar Inicio do Clip na Pista de Audio" + +#: editor/animation_track_editor_plugins.cpp +msgid "Change Audio Track Clip End Offset" +msgstr "Cambiar Final do Clip na Pista de Audio" + +#: editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "Redimensionar Array" + +#: editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "Cambiar Tipo do Valor do Array" + +#: editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "Cambiar Valor do Array" + +#: editor/code_editor.cpp +msgid "Go to Line" +msgstr "Ir a Liña" + +#: editor/code_editor.cpp +msgid "Line Number:" +msgstr "Número de Liña:" + +#: editor/code_editor.cpp +msgid "%d replaced." +msgstr "%d substituído." + +#: editor/code_editor.cpp editor/editor_help.cpp +msgid "%d match." +msgstr "%d coincidencia." + +#: editor/code_editor.cpp editor/editor_help.cpp +msgid "%d matches." +msgstr "%d coincidencias." + +#: editor/code_editor.cpp editor/find_in_files.cpp +msgid "Match Case" +msgstr "Coincidir Maiús./Minús." + +#: editor/code_editor.cpp editor/find_in_files.cpp +msgid "Whole Words" +msgstr "Palabras Completas" + +#: editor/code_editor.cpp +msgid "Replace" +msgstr "Substituír" + +#: editor/code_editor.cpp +msgid "Replace All" +msgstr "Substituír Todo" + +#: editor/code_editor.cpp +msgid "Selection Only" +msgstr "Só a Selección" + +#: editor/code_editor.cpp editor/plugins/script_text_editor.cpp +#: editor/plugins/text_editor.cpp +msgid "Standard" +msgstr "Estándar" + +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Act./Desact. Panel de Scripts" + +#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom In" +msgstr "Aumentar Zoom" + +#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom Out" +msgstr "Diminuír Zoom" + +#: editor/code_editor.cpp +msgid "Reset Zoom" +msgstr "Reiniciar Zoom" + +#: editor/code_editor.cpp +msgid "Warnings" +msgstr "Avisos" + +#: editor/code_editor.cpp +msgid "Line and column numbers." +msgstr "Números de liña e columna." + +#: editor/connections_dialog.cpp +msgid "Method in target node must be specified." +msgstr "Debe especificarse o método no nodo receptor." + +#: editor/connections_dialog.cpp +msgid "Method name must be a valid identifier." +msgstr "O nome do método debe ser un identificador válido." + +#: editor/connections_dialog.cpp +msgid "" +"Target method not found. Specify a valid method or attach a script to the " +"target node." +msgstr "" +"Non se encontrou o método receptor. Especifique un método válido ou engada " +"un script ao nodo receptor." + +#: editor/connections_dialog.cpp +msgid "Connect to Node:" +msgstr "Conectar ao Nodo:" + +#: editor/connections_dialog.cpp +msgid "Connect to Script:" +msgstr "Conectar ao Script:" + +#: editor/connections_dialog.cpp +msgid "From Signal:" +msgstr "Desde a Sinal:" + +#: editor/connections_dialog.cpp +msgid "Scene does not contain any script." +msgstr "A escena non conteñe ningún script." + +#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp +#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp +msgid "Add" +msgstr "Engadir" + +#: editor/connections_dialog.cpp editor/dependency_editor.cpp +#: editor/editor_feature_profile.cpp editor/groups_editor.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp +msgid "Remove" +msgstr "Eliminar" + +#: editor/connections_dialog.cpp +msgid "Add Extra Call Argument:" +msgstr "Engadir Argumento Extra á Chamada:" + +#: editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "Argumentos Extra da Chamada:" + +#: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Método Receptor:" + +#: editor/connections_dialog.cpp +msgid "Advanced" +msgstr "Avanzado" + +#: editor/connections_dialog.cpp +msgid "Deferred" +msgstr "Diferido" + +#: editor/connections_dialog.cpp +msgid "" +"Defers the signal, storing it in a queue and only firing it at idle time." +msgstr "" +"Difire a sinal, almacenándoa nunha cola é só executándoa en tempo de " +"inactividade." + +#: editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "Execución Única (Oneshot)" + +#: editor/connections_dialog.cpp +msgid "Disconnects the signal after its first emission." +msgstr "Desconecta a sinal unha vez foi emitida por primeira vez." + +#: editor/connections_dialog.cpp +msgid "Cannot connect signal" +msgstr "No se pode conectar a sinal" + +#: editor/connections_dialog.cpp editor/dependency_editor.cpp +#: editor/export_template_manager.cpp editor/groups_editor.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Close" +msgstr "Pechar" + +#: editor/connections_dialog.cpp +msgid "Connect" +msgstr "Conectar" + +#: editor/connections_dialog.cpp +msgid "Signal:" +msgstr "Sinal:" + +#: editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "Conectar '%s' con '%s'" + +#: editor/connections_dialog.cpp +msgid "Disconnect '%s' from '%s'" +msgstr "Desconectar '%s' de '%s'" + +#: editor/connections_dialog.cpp +msgid "Disconnect all from signal: '%s'" +msgstr "Desconectar todo da sinal: '%s'" + +#: editor/connections_dialog.cpp +msgid "Connect..." +msgstr "Conectar..." + +#: editor/connections_dialog.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Disconnect" +msgstr "Desconectar" + +#: editor/connections_dialog.cpp +msgid "Connect a Signal to a Method" +msgstr "Conectar unha Sinal a un Método" + +#: editor/connections_dialog.cpp +msgid "Edit Connection:" +msgstr "Editar Conexión:" + +#: editor/connections_dialog.cpp +msgid "Are you sure you want to remove all connections from the \"%s\" signal?" +msgstr "Está seguro de que quere eliminar tódalas conexións da sinal '%s'?" + +#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp +msgid "Signals" +msgstr "Sinais" + +#: editor/connections_dialog.cpp +msgid "Filter signals" +msgstr "Filtrar sinais" + +#: editor/connections_dialog.cpp +msgid "Are you sure you want to remove all connections from this signal?" +msgstr "Está seguro de que quere eliminar tódalas conexións desta sinal?" + +#: editor/connections_dialog.cpp +msgid "Disconnect All" +msgstr "Desconectar Todas" + +#: editor/connections_dialog.cpp +msgid "Edit..." +msgstr "Editar..." + +#: editor/connections_dialog.cpp +msgid "Go To Method" +msgstr "Ir ao Método" + +#: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "Cambiar o Tipo de %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +msgid "Change" +msgstr "Cambiar" + +#: editor/create_dialog.cpp +msgid "Create New %s" +msgstr "Crear Novo %s" + +#: editor/create_dialog.cpp editor/editor_file_dialog.cpp +#: editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Favoritos:" + +#: editor/create_dialog.cpp editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Recente:" + +#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp +#: editor/property_selector.cpp editor/quick_open.cpp editor/rename_dialog.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Search:" +msgstr "Buscar:" + +#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp +#: editor/property_selector.cpp editor/quick_open.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Matches:" +msgstr "Coincidencias:" + +#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp +#: editor/plugin_config_dialog.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Description:" +msgstr "Descrición:" + +#: editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "Buscar Substitución Para:" + +#: editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "Dependencias De:" + +#: editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will only take effect when reloaded." +msgstr "" +"A escena '%s' agora mesmo está sendo editada.\n" +"Os cambios só terán efecto cando sexa recargada." + +#: editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will only take effect when reloaded." +msgstr "" +"O recurso '%s' agora mesmo está sendo usado.\n" +"Os cambios só terán efecto cando sexa recargado." + +#: editor/dependency_editor.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Dependencies" +msgstr "Dependencias" + +#: editor/dependency_editor.cpp +msgid "Resource" +msgstr "Recurso" + +#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp +msgid "Path" +msgstr "Ruta" + +#: editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "Dependencias:" + +#: editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "Corrixir Erros" + +#: editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "Editor de Dependencias" + +#: editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "Buscar Recurso de Substitución:" + +#: editor/dependency_editor.cpp editor/editor_file_dialog.cpp +#: editor/editor_help_search.cpp editor/editor_node.cpp +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +#: editor/property_selector.cpp editor/quick_open.cpp +#: editor/script_create_dialog.cpp +#: modules/visual_script/visual_script_property_selector.cpp +#: scene/gui/file_dialog.cpp +msgid "Open" +msgstr "Abrir" + +#: editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "Dono De:" + +#: editor/dependency_editor.cpp +msgid "" +"Remove selected files from the project? (no undo)\n" +"You can find the removed files in the system trash to restore them." +msgstr "" +"Eliminar do proxecto os arquivos seleccionados? (non se pode reverter)\n" +"Podes encontrar os arquivos eliminados na papeleira de reciclaxe do sistema " +"para restaurarlos." + +#: editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)\n" +"You can find the removed files in the system trash to restore them." +msgstr "" +"Os arquivos sendo eliminados están requeridos por outros recursos para poder " +"funcionar.\n" +"Eliminalos de todas formas? (non se pode reverter)\n" +"Podes encontrar os arquivos eliminados na papeleira de reciclaxe do sistema " +"para restaurarlos." + +#: editor/dependency_editor.cpp +msgid "Cannot remove:" +msgstr "Non se pode eliminar:" + +#: editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "Erro cargando:" + +#: editor/dependency_editor.cpp +msgid "Load failed due to missing dependencies:" +msgstr "Fallou a carga debido a dependencias ausentes:" + +#: editor/dependency_editor.cpp editor/editor_node.cpp +msgid "Open Anyway" +msgstr "Abrir de Todos Modos" + +#: editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "Que acción debería de tomarse?" + +#: editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "Corrixir Dependencias" + +#: editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "Erros na carga!" + +#: editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "Eliminar permanentemente %d obxectos? (Non se pode reverter!)" + +#: editor/dependency_editor.cpp +msgid "Show Dependencies" +msgstr "Amosar Dependencias" + +#: editor/dependency_editor.cpp +msgid "Orphan Resource Explorer" +msgstr "Explorador de Recursos Orfos" + +#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp +#: editor/editor_file_dialog.cpp editor/editor_node.cpp +#: editor/plugins/item_list_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp +msgid "Delete" +msgstr "Eliminar" + +#: editor/dependency_editor.cpp +msgid "Owns" +msgstr "É Dono de" + +#: editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "Recursos Sen Dono Explícito:" + +#: editor/dictionary_property_edit.cpp +msgid "Change Dictionary Key" +msgstr "Cambiar Chave do Dicionario" + +#: editor/dictionary_property_edit.cpp +msgid "Change Dictionary Value" +msgstr "Cambiar Valor do Dicionario" + +#: editor/editor_about.cpp +msgid "Thanks from the Godot community!" +msgstr "Moitas grazas de parte da comunidade de Godot!" + +#: editor/editor_about.cpp +msgid "Godot Engine contributors" +msgstr "Colaboradores de Godot Engine" + +#: editor/editor_about.cpp +msgid "Project Founders" +msgstr "Fundadores do Proxecto" + +#: editor/editor_about.cpp +msgid "Lead Developer" +msgstr "Desenvolvedor Líder" + +#. TRANSLATORS: This refers to a job title. +#. The trailing space is used to distinguish with the project list application, +#. you do not have to keep it in your translation. +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Xestor do Proxecto " + +#: editor/editor_about.cpp +msgid "Developers" +msgstr "Desenvolvedores" + +#: editor/editor_about.cpp +msgid "Authors" +msgstr "Autores" + +#: editor/editor_about.cpp +msgid "Platinum Sponsors" +msgstr "Patrocinadores Platino" + +#: editor/editor_about.cpp +msgid "Gold Sponsors" +msgstr "Patrocinadores Ouro" + +#: editor/editor_about.cpp +msgid "Silver Sponsors" +msgstr "Patrocinadores Prata" + +#: editor/editor_about.cpp +msgid "Bronze Sponsors" +msgstr "Patrocinadores Bronce" + +#: editor/editor_about.cpp +msgid "Mini Sponsors" +msgstr "Patrocinadores Mini" + +#: editor/editor_about.cpp +msgid "Gold Donors" +msgstr "Doadores Ouro" + +#: editor/editor_about.cpp +msgid "Silver Donors" +msgstr "Doadores Prata" + +#: editor/editor_about.cpp +msgid "Bronze Donors" +msgstr "Doadores Bronce" + +#: editor/editor_about.cpp +msgid "Donors" +msgstr "Doadores" + +#: editor/editor_about.cpp +msgid "License" +msgstr "Licenza" + +#: editor/editor_about.cpp +msgid "Third-party Licenses" +msgstr "Licenzas de Terceiros" + +#: editor/editor_about.cpp +msgid "" +"Godot Engine relies on a number of third-party free and open source " +"libraries, all compatible with the terms of its MIT license. The following " +"is an exhaustive list of all such third-party components with their " +"respective copyright statements and license terms." +msgstr "" +"Godot Engine depende dun número de bibliotecas de terceiros, gratis e open " +"source; todas compatibles cos termos da licenza MIT. A seguinte e unha lista " +"exhaustiva dos devanditos compoñentes de terceiros, coas suas respectivas " +"declaracións de copyright e termos de licenza." + +#: editor/editor_about.cpp +msgid "All Components" +msgstr "Todos os Compoñentes" + +#: editor/editor_about.cpp +msgid "Components" +msgstr "Compoñentes" + +#: editor/editor_about.cpp +msgid "Licenses" +msgstr "Licenzas" + +#: editor/editor_asset_installer.cpp editor/project_manager.cpp +msgid "Error opening package file, not in ZIP format." +msgstr "Erro ao abrir o arquivo comprimido, non está en formato ZIP." + +#: editor/editor_asset_installer.cpp +msgid "%s (Already Exists)" +msgstr "%s (Xa Existe)" + +#: editor/editor_asset_installer.cpp +msgid "Uncompressing Assets" +msgstr "Descomprimindo Assets" + +#: editor/editor_asset_installer.cpp editor/project_manager.cpp +msgid "The following files failed extraction from package:" +msgstr "Os seguintes arquivos non se poideron extraer do paquete:" + +#: editor/editor_asset_installer.cpp +msgid "And %s more files." +msgstr "E %s arquivos máis." + +#: editor/editor_asset_installer.cpp editor/project_manager.cpp +msgid "Package installed successfully!" +msgstr "Paquete instalado correctamente!" + +#: editor/editor_asset_installer.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Success!" +msgstr "Éxito!" + +#: editor/editor_asset_installer.cpp +msgid "Package Contents:" +msgstr "Contenido do Paquete:" + +#: editor/editor_asset_installer.cpp editor/editor_node.cpp +msgid "Install" +msgstr "Instalar" + +#: editor/editor_asset_installer.cpp +msgid "Package Installer" +msgstr "Instalador de Paquetes" + +#: editor/editor_audio_buses.cpp +msgid "Speakers" +msgstr "Altofalantes" + +#: editor/editor_audio_buses.cpp +msgid "Add Effect" +msgstr "Engadir Efecto" + +#: editor/editor_audio_buses.cpp +msgid "Rename Audio Bus" +msgstr "Renomear Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "Change Audio Bus Volume" +msgstr "Cambiar Volume do Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "Toggle Audio Bus Solo" +msgstr "Act./Desact. Solo do Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "Toggle Audio Bus Mute" +msgstr "Act./Desact. Silencio do Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "Toggle Audio Bus Bypass Effects" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Select Audio Bus Send" +msgstr "Seleccionar Envío do Bus de Audio" + +#: editor/editor_audio_buses.cpp +msgid "Add Audio Bus Effect" +msgstr "Engadir Efecto ao Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "Move Bus Effect" +msgstr "Mover Efecto do Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "Delete Bus Effect" +msgstr "Eliminar Efecto do Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "Drag & drop to rearrange." +msgstr "Arrastrar e soltar para reordenar." + +#: editor/editor_audio_buses.cpp +msgid "Solo" +msgstr "Solo" + +#: editor/editor_audio_buses.cpp +msgid "Mute" +msgstr "Silenciar" + +#: editor/editor_audio_buses.cpp +msgid "Bypass" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Bus options" +msgstr "Opcións de Bus" + +#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp +#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "Duplicar" + +#: editor/editor_audio_buses.cpp +msgid "Reset Volume" +msgstr "Restablecer Volume" + +#: editor/editor_audio_buses.cpp +msgid "Delete Effect" +msgstr "Eliminar Efecto" + +#: editor/editor_audio_buses.cpp +msgid "Audio" +msgstr "Son" + +#: editor/editor_audio_buses.cpp +msgid "Add Audio Bus" +msgstr "Engadir Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "Master bus can't be deleted!" +msgstr "Non se pode eliminar o Bus mestre!" + +#: editor/editor_audio_buses.cpp +msgid "Delete Audio Bus" +msgstr "Eliminar Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "Duplicate Audio Bus" +msgstr "Duplicar Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "Reset Bus Volume" +msgstr "Restablecer Volume do Bus" + +#: editor/editor_audio_buses.cpp +msgid "Move Audio Bus" +msgstr "Mover Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "Save Audio Bus Layout As..." +msgstr "Gardar Disposición do Bus de Son Como..." + +#: editor/editor_audio_buses.cpp +msgid "Location for New Layout..." +msgstr "Localización para a Nova Disposición..." + +#: editor/editor_audio_buses.cpp +msgid "Open Audio Bus Layout" +msgstr "Abrir Disposición do Bus de Son" + +#: editor/editor_audio_buses.cpp +msgid "There is no '%s' file." +msgstr "Non hai ningún arquivo '%s'." + +#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp +msgid "Layout" +msgstr "Disposición" + +#: editor/editor_audio_buses.cpp +msgid "Invalid file, not an audio bus layout." +msgstr "Arquivo invalido; non é unha disposición dun Bus de son." + +#: editor/editor_audio_buses.cpp +msgid "Error saving file: %s" +msgstr "Erro gardando o arquivo: %s" + +#: editor/editor_audio_buses.cpp +msgid "Add Bus" +msgstr "Engadir Bus" + +#: editor/editor_audio_buses.cpp +msgid "Add a new Audio Bus to this layout." +msgstr "Engadir un novo Bus de Son a esta disposición." + +#: editor/editor_audio_buses.cpp editor/editor_properties.cpp +#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp +#: editor/script_create_dialog.cpp +msgid "Load" +msgstr "Cargar" + +#: editor/editor_audio_buses.cpp +msgid "Load an existing Bus Layout." +msgstr "Cargar unha disposición de Bus xa existente." + +#: editor/editor_audio_buses.cpp +msgid "Save As" +msgstr "Gardar Como" + +#: editor/editor_audio_buses.cpp +msgid "Save this Bus Layout to a file." +msgstr "Gardar esta disposición de Bus a un arquivo." + +#: editor/editor_audio_buses.cpp editor/import_dock.cpp +msgid "Load Default" +msgstr "Cargar Valores por Defecto" + +#: editor/editor_audio_buses.cpp +msgid "Load the default Bus Layout." +msgstr "Cargar a disposición de Bus por defecto." + +#: editor/editor_audio_buses.cpp +msgid "Create a new Bus Layout." +msgstr "Crear unha nova Disposición de Bus." + +#: editor/editor_autoload_settings.cpp +msgid "Invalid name." +msgstr "Nome inválido." + +#: editor/editor_autoload_settings.cpp +msgid "Valid characters:" +msgstr "Caracteres válidos:" + +#: editor/editor_autoload_settings.cpp +msgid "Must not collide with an existing engine class name." +msgstr "Non debe coincidir co nome dunha clase xa existente no engine." + +#: editor/editor_autoload_settings.cpp +msgid "Must not collide with an existing built-in type name." +msgstr "Non debe coincidir co nome dun tipo xa existente no engine." + +#: editor/editor_autoload_settings.cpp +msgid "Must not collide with an existing global constant name." +msgstr "Non debe coincidir co nome dunha constante global xa existente." + +#: editor/editor_autoload_settings.cpp +msgid "Keyword cannot be used as an autoload name." +msgstr "Unha palabra clave non pode usarse como nome dun AutoCargador." + +#: editor/editor_autoload_settings.cpp +msgid "Autoload '%s' already exists!" +msgstr "Xa existe un AutoCargador nomeado '%s'!" + +#: editor/editor_autoload_settings.cpp +msgid "Rename Autoload" +msgstr "Renomear AutoCargador" + +#: editor/editor_autoload_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Move Autoload" +msgstr "Mover AutoCargador" + +#: editor/editor_autoload_settings.cpp +msgid "Remove Autoload" +msgstr "Eliminar AutoCargador" + +#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp +msgid "Enable" +msgstr "Activar" + +#: editor/editor_autoload_settings.cpp +msgid "Rearrange Autoloads" +msgstr "Reordenar AutoCargadores" + +#: editor/editor_autoload_settings.cpp +msgid "Can't add autoload:" +msgstr "Non se puido engadir AutoCargador:" + +#: editor/editor_autoload_settings.cpp +msgid "Add AutoLoad" +msgstr "Engadir AutoCargador" + +#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp +#: editor/editor_plugin_settings.cpp +#: editor/plugins/animation_tree_editor_plugin.cpp +#: editor/script_create_dialog.cpp scene/gui/file_dialog.cpp +msgid "Path:" +msgstr "Ruta:" + +#: editor/editor_autoload_settings.cpp +msgid "Node Name:" +msgstr "Nome do Nodo:" + +#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp +msgid "Name" +msgstr "Nome" + +#: editor/editor_autoload_settings.cpp +msgid "Singleton" +msgstr "" + +#: editor/editor_data.cpp editor/inspector_dock.cpp +msgid "Paste Params" +msgstr "Pegar Parámetros" + +#: editor/editor_data.cpp +msgid "Updating Scene" +msgstr "Actualizando Escena" + +#: editor/editor_data.cpp +msgid "Storing local changes..." +msgstr "Gardando cambios locales..." + +#: editor/editor_data.cpp +msgid "Updating scene..." +msgstr "Actualizando escena..." + +#: editor/editor_data.cpp editor/editor_properties.cpp +msgid "[empty]" +msgstr "[baleiro]" + +#: editor/editor_data.cpp +msgid "[unsaved]" +msgstr "[non gardado]" + +#: editor/editor_dir_dialog.cpp +msgid "Please select a base directory first." +msgstr "Por favor, seleccione primeiro un directorio base." + +#: editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "Elixir un Directorio" + +#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp +#: editor/filesystem_dock.cpp editor/project_manager.cpp +#: scene/gui/file_dialog.cpp +msgid "Create Folder" +msgstr "Crear Cartafol" + +#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp +#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp +#: modules/visual_script/visual_script_editor.cpp scene/gui/file_dialog.cpp +msgid "Name:" +msgstr "Nome:" + +#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp +#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp +msgid "Could not create folder." +msgstr "Non se puido crear cartafol." + +#: editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "Elixir" + +#: editor/editor_export.cpp +msgid "Storing File:" +msgstr "Gardando Arquivo:" + +#: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "Non se encontrou ningún modelo de exportación na ruta esperada:" + +#: editor/editor_export.cpp +msgid "Packing" +msgstr "Empaquetando" + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " +"Etc' in Project Settings." +msgstr "" +"A plataforma actual require compresión de texturas 'ETC' para GLES2. Active " +"'Importar Etc' na 'Configuración do Proxecto'." + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'ETC2' texture compression for GLES3. Enable " +"'Import Etc 2' in Project Settings." +msgstr "" +"A plataforma actual require compresión de texturas 'ETC2' para GLES3. Active " +"'Importar Etc 2' na 'Configuración do Proxecto'." + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'ETC' texture compression for the driver fallback " +"to GLES2.\n" +"Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback " +"Enabled'." +msgstr "" +"A plataforma actual require unha compresión de texturas 'ETC' para o " +"controlador de respaldo a GLES2.\n" +"Active 'Importar Etc' na 'Configuración do Proxecto' ou desactive " +"'Controlador de Respaldo Activado'." + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'PVRTC' texture compression for GLES2. Enable " +"'Import Pvrtc' in Project Settings." +msgstr "" +"A plataforma actual require compresión de texturas 'PVRTC' para GLES2. " +"Active 'Importar Pvrtc' na 'Configuración do Proxecto'." + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " +"Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." +msgstr "" +"A plataforma actual require compresión de texturas 'ETC2' ou 'PVRTC' para " +"GLES3. Active 'Importar Etc 2' ou 'Importar Pvrtc' na 'Configuración do " +"Proxecto'." + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'PVRTC' texture compression for the driver fallback " +"to GLES2.\n" +"Enable 'Import Pvrtc' in Project Settings, or disable 'Driver Fallback " +"Enabled'." +msgstr "" +"A plataforma actual require unha compresión de texturas 'PVRTC' para o " +"controlador de respaldo a GLES2.\n" +"Active 'Importar Pvrtc' na 'Configuración do Proxecto' ou desactive " +"'Controlador de Respaldo Activado'." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "Non se encontrou un modelo de depuración personalizado." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + +#: editor/editor_export.cpp platform/javascript/export/export.cpp +msgid "Template file not found:" +msgstr "Non se encontrou o arquivo do modelo:" + +#: editor/editor_export.cpp +msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." +msgstr "Na exportación de 32 bits o PCK integrado non pode ser maior de 4 GiB." + +#: editor/editor_feature_profile.cpp +msgid "3D Editor" +msgstr "Editor 3D" + +#: editor/editor_feature_profile.cpp +msgid "Script Editor" +msgstr "Editor de Scripts" + +#: editor/editor_feature_profile.cpp +msgid "Asset Library" +msgstr "Biblioteca de Assets" + +#: editor/editor_feature_profile.cpp +msgid "Scene Tree Editing" +msgstr "Edición de Árbore de Escenas" + +#: editor/editor_feature_profile.cpp +msgid "Node Dock" +msgstr "Panel de Nodos" + +#: editor/editor_feature_profile.cpp +msgid "FileSystem Dock" +msgstr "Panel de Sistema de Arquivos" + +#: editor/editor_feature_profile.cpp +msgid "Import Dock" +msgstr "Panel de Importación" + +#: editor/editor_feature_profile.cpp +msgid "Erase profile '%s'? (no undo)" +msgstr "Eliminar perfil '%s'? (non se pode deshacer)" + +#: editor/editor_feature_profile.cpp +msgid "Profile must be a valid filename and must not contain '.'" +msgstr "Un perfil debe ter un nome de arquivo válido, e non pode conter '.'" + +#: editor/editor_feature_profile.cpp +msgid "Profile with this name already exists." +msgstr "Un perfil con este nome xa existe." + +#: editor/editor_feature_profile.cpp +msgid "(Editor Disabled, Properties Disabled)" +msgstr "(Editor Desactivado, Propiedades Desactivadas)" + +#: editor/editor_feature_profile.cpp +msgid "(Properties Disabled)" +msgstr "(Propiedades Desactivadas)" + +#: editor/editor_feature_profile.cpp +msgid "(Editor Disabled)" +msgstr "(Editor Desactivado)" + +#: editor/editor_feature_profile.cpp +msgid "Class Options:" +msgstr "Opcións de Clase:" + +#: editor/editor_feature_profile.cpp +msgid "Enable Contextual Editor" +msgstr "Activar o Editor Contextual" + +#: editor/editor_feature_profile.cpp +msgid "Enabled Properties:" +msgstr "Propiedades Activadas:" + +#: editor/editor_feature_profile.cpp +msgid "Enabled Features:" +msgstr "Características Activadas:" + +#: editor/editor_feature_profile.cpp +msgid "Enabled Classes:" +msgstr "Clases Activadas:" + +#: editor/editor_feature_profile.cpp +msgid "File '%s' format is invalid, import aborted." +msgstr "O formato '%s' do arquivo non é válido, a importación foi cancelada." + +#: editor/editor_feature_profile.cpp +msgid "" +"Profile '%s' already exists. Remove it first before importing, import " +"aborted." +msgstr "" +"O perfil '%s' xa existe. Elimínao antes de importar; importación abortada." + +#: editor/editor_feature_profile.cpp +msgid "Error saving profile to path: '%s'." +msgstr "Erro gardando o perfil á ruta: '%s'." + +#: editor/editor_feature_profile.cpp +msgid "Unset" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Current Profile:" +msgstr "Perfil Actual:" + +#: editor/editor_feature_profile.cpp +msgid "Make Current" +msgstr "Convertelo no Actual" + +#: editor/editor_feature_profile.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/version_control_editor_plugin.cpp +msgid "New" +msgstr "Novo" + +#: editor/editor_feature_profile.cpp editor/editor_node.cpp +#: editor/project_manager.cpp +msgid "Import" +msgstr "Importación" + +#: editor/editor_feature_profile.cpp editor/project_export.cpp +msgid "Export" +msgstr "Exportación" + +#: editor/editor_feature_profile.cpp +msgid "Available Profiles:" +msgstr "Perfils Dispoñibles:" + +#: editor/editor_feature_profile.cpp +msgid "Class Options" +msgstr "Opcións de Clase" + +#: editor/editor_feature_profile.cpp +msgid "New profile name:" +msgstr "Nome do novo perfil:" + +#: editor/editor_feature_profile.cpp +msgid "Erase Profile" +msgstr "Eliminar Perfil" + +#: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Perfil de Características de Godot" + +#: editor/editor_feature_profile.cpp +msgid "Import Profile(s)" +msgstr "Importar Perfil(s)" + +#: editor/editor_feature_profile.cpp +msgid "Export Profile" +msgstr "Exportar Perfil" + +#: editor/editor_feature_profile.cpp +msgid "Manage Editor Feature Profiles" +msgstr "Administrar Perfils de Características de Godot" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Select Current Folder" +msgstr "Seleccionar Cartafol Actual" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "O arquivo xa existe ¿Queres sobreescribilo?" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Select This Folder" +msgstr "Seleccionar Este Cartafol" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "Copy Path" +msgstr "Copiar Ruta" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "Open in File Manager" +msgstr "Abrir no Explorador de Arquivos" + +#: editor/editor_file_dialog.cpp editor/editor_node.cpp +#: editor/filesystem_dock.cpp editor/project_manager.cpp +msgid "Show in File Manager" +msgstr "Amosar no Explorador de Arquivos" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "New Folder..." +msgstr "Novo Cartafol..." + +#: editor/editor_file_dialog.cpp editor/find_in_files.cpp +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Refresh" +msgstr "Actualizar" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "All Recognized" +msgstr "Todos Recoñecidos" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "All Files (*)" +msgstr "Todos os Arquivos (*)" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "Abrir un Arquivo" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "Abrir Arquivo(s)" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "Abrir un Directorio" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "Abrir un Arquivo ou Directorio" + +#: editor/editor_file_dialog.cpp editor/editor_node.cpp +#: editor/editor_properties.cpp editor/inspector_dock.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp +msgid "Save" +msgstr "Gardar" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Save a File" +msgstr "Gardar un Arquivo" + +#: editor/editor_file_dialog.cpp +msgid "Go Back" +msgstr "Retroceder" + +#: editor/editor_file_dialog.cpp +msgid "Go Forward" +msgstr "Avanzar" + +#: editor/editor_file_dialog.cpp +msgid "Go Up" +msgstr "Subir" + +#: editor/editor_file_dialog.cpp +#, fuzzy +msgid "Toggle Hidden Files" +msgstr "Amosar/Ocultar Arquivos Ocultos" + +#: editor/editor_file_dialog.cpp +msgid "Toggle Favorite" +msgstr "Act./Desact. Favorito" + +#: editor/editor_file_dialog.cpp +msgid "Toggle Mode" +msgstr "Act./Desact. Modo" + +#: editor/editor_file_dialog.cpp +msgid "Focus Path" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Move Favorite Up" +msgstr "Subir Favorito" + +#: editor/editor_file_dialog.cpp +msgid "Move Favorite Down" +msgstr "Baixar Favorito" + +#: editor/editor_file_dialog.cpp +msgid "Go to previous folder." +msgstr "Ir ao cartafol anterior." + +#: editor/editor_file_dialog.cpp +msgid "Go to next folder." +msgstr "Ir ao cartafol seguinte." + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Go to parent folder." +msgstr "Ir ao cartafol padre." + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Refresh files." +msgstr "Actualizar Arquivos." + +#: editor/editor_file_dialog.cpp +msgid "(Un)favorite current folder." +msgstr "Quitar cartafol actual de favoritos." + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Toggle the visibility of hidden files." +msgstr "Amosar/Ocultar arquivos ocultos." + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "View items as a grid of thumbnails." +msgstr "Ver elementos coma unha cuadrícula de miniaturas." + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "View items as a list." +msgstr "Ver elementos coma unha lista." + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Directories & Files:" +msgstr "Directorios e Arquivos:" + +#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp +#: editor/plugins/style_box_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp +msgid "Preview:" +msgstr "Vista Previa:" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "File:" +msgstr "Arquivo:" + +#: editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "Escanear Fontes" + +#: editor/editor_file_system.cpp +msgid "" +"There are multiple importers for different types pointing to file %s, import " +"aborted" +msgstr "" + +#: editor/editor_file_system.cpp +msgid "(Re)Importing Assets" +msgstr "(Re)Importando Assets" + +#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "Superior" + +#: editor/editor_help.cpp +msgid "Class:" +msgstr "Clase:" + +#: editor/editor_help.cpp editor/scene_tree_editor.cpp +#: editor/script_create_dialog.cpp +msgid "Inherits:" +msgstr "Herda de:" + +#: editor/editor_help.cpp +msgid "Inherited by:" +msgstr "Herdado de:" + +#: editor/editor_help.cpp +msgid "Description" +msgstr "Descrición" + +#: editor/editor_help.cpp +msgid "Online Tutorials" +msgstr "Tutoriales en liña" + +#: editor/editor_help.cpp +msgid "Properties" +msgstr "Propiedades" + +#: editor/editor_help.cpp +msgid "override:" +msgstr "sobrescribir:" + +#: editor/editor_help.cpp +msgid "default:" +msgstr "por defecto:" + +#: editor/editor_help.cpp +msgid "Methods" +msgstr "Métodos" + +#: editor/editor_help.cpp +#, fuzzy +msgid "Theme Properties" +msgstr "Propiedades do Tema" + +#: editor/editor_help.cpp +msgid "Enumerations" +msgstr "" + +#: editor/editor_help.cpp +msgid "Constants" +msgstr "Constantes" + +#: editor/editor_help.cpp +msgid "Property Descriptions" +msgstr "Descrición de Propiedades" + +#: editor/editor_help.cpp +msgid "(value)" +msgstr "(valor)" + +#: editor/editor_help.cpp +msgid "" +"There is currently no description for this property. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" +"Actualmente non hai unha descripción desta propiedade. Axúdanos [color=" +"$color][url=$url]contribuíndo cunha descripción[/url][/color]!" + +#: editor/editor_help.cpp +msgid "Method Descriptions" +msgstr "Descrición de Métodos" + +#: editor/editor_help.cpp +msgid "" +"There is currently no description for this method. Please help us by [color=" +"$color][url=$url]contributing one[/url][/color]!" +msgstr "" +"Actualmente non hai unha descripción deste método. Axúdanos [color=$color]" +"[url=$url]contribuíndo cunha descripción[/url][/color]!" + +#: editor/editor_help_search.cpp editor/editor_node.cpp +#: editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "Buscar na Axuda" + +#: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Distinguir Maíusculas e Minúsculas" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "Amosar Xerarquía" + +#: editor/editor_help_search.cpp +msgid "Display All" +msgstr "Amosar Todo" + +#: editor/editor_help_search.cpp +msgid "Classes Only" +msgstr "Só Clases" + +#: editor/editor_help_search.cpp +msgid "Methods Only" +msgstr "Só Métodos" + +#: editor/editor_help_search.cpp +msgid "Signals Only" +msgstr "Só Sinais" + +#: editor/editor_help_search.cpp +msgid "Constants Only" +msgstr "Só Constantes" + +#: editor/editor_help_search.cpp +msgid "Properties Only" +msgstr "Só Propiedades" + +#: editor/editor_help_search.cpp +msgid "Theme Properties Only" +msgstr "Só Propiedades de Temas" + +#: editor/editor_help_search.cpp +msgid "Member Type" +msgstr "Tipo do Membro" + +#: editor/editor_help_search.cpp +msgid "Class" +msgstr "Clase" + +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "Método" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Sinal" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Constante" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "Propiedade" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "Propiedade de Temas" + +#: editor/editor_inspector.cpp editor/project_settings_editor.cpp +msgid "Property:" +msgstr "Propiedade:" + +#: editor/editor_inspector.cpp +msgid "Set" +msgstr "Establecer" + +#: editor/editor_inspector.cpp +msgid "Set Multiple:" +msgstr "Establecer Varios:" + +#: editor/editor_log.cpp +msgid "Output:" +msgstr "Saída:" + +#: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp +msgid "Copy Selection" +msgstr "Copiar Selección" + +#: editor/editor_log.cpp editor/editor_network_profiler.cpp +#: editor/editor_profiler.cpp editor/editor_properties.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/property_editor.cpp editor/scene_tree_dock.cpp +#: editor/script_editor_debugger.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp +#: scene/gui/text_edit.cpp +msgid "Clear" +msgstr "Limpar" + +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "Limpar Saída" + +#: editor/editor_network_profiler.cpp editor/editor_node.cpp +#: editor/editor_profiler.cpp +msgid "Stop" +msgstr "Deter" + +#: editor/editor_network_profiler.cpp editor/editor_profiler.cpp +#: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp +msgid "Start" +msgstr "Iniciar" + +#: editor/editor_network_profiler.cpp +msgid "%s/s" +msgstr "%s/s" + +#: editor/editor_network_profiler.cpp +msgid "Down" +msgstr "Baixada" + +#: editor/editor_network_profiler.cpp +msgid "Up" +msgstr "Subida" + +#: editor/editor_network_profiler.cpp editor/editor_node.cpp +msgid "Node" +msgstr "Nodo" + +#: editor/editor_network_profiler.cpp +msgid "Incoming RPC" +msgstr "RPC Entrante" + +#: editor/editor_network_profiler.cpp +msgid "Incoming RSET" +msgstr "RSET Entrante" + +#: editor/editor_network_profiler.cpp +msgid "Outgoing RPC" +msgstr "RPC Saínte" + +#: editor/editor_network_profiler.cpp +msgid "Outgoing RSET" +msgstr "RSET Saínte" + +#: editor/editor_node.cpp editor/project_manager.cpp +msgid "New Window" +msgstr "Nova Xanela" + +#: editor/editor_node.cpp +msgid "Imported resources can't be saved." +msgstr "Os recursos importados non se poden gardar." + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "Vale" + +#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Error saving resource!" +msgstr "Erro gardando o recurso!" + +#: editor/editor_node.cpp +msgid "" +"This resource can't be saved because it does not belong to the edited scene. " +"Make it unique first." +msgstr "" +"Este recurso non pode gardarse porque non pertence á escena actual. Primero " +"fágao único." + +#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Save Resource As..." +msgstr "Gardar Recurso Como..." + +#: editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "Non se puido abrir o arquivo para escritura:" + +#: editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "O formato do arquivo solicitado é descoñecido:" + +#: editor/editor_node.cpp +msgid "Error while saving." +msgstr "Erro ao gardar." + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Can't open '%s'. The file could have been moved or deleted." +msgstr "" +"Non se puido abrir '%s'. Pode ser que o arquivo fose movido ou eliminado." + +#: editor/editor_node.cpp +msgid "Error while parsing '%s'." +msgstr "Erro ao analizar sintacticamente '%s'." + +#: editor/editor_node.cpp +msgid "Unexpected end of file '%s'." +msgstr "Fin de arquivo inesperado en '%s'." + +#: editor/editor_node.cpp +msgid "Missing '%s' or its dependencies." +msgstr "Non se encontrou '%s' ou as súas dependencias." + +#: editor/editor_node.cpp +msgid "Error while loading '%s'." +msgstr "Erro ao cargar '%s'." + +#: editor/editor_node.cpp +msgid "Saving Scene" +msgstr "Gardando Escena" + +#: editor/editor_node.cpp +msgid "Analyzing" +msgstr "Analizando" + +#: editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "Creando Miniatura" + +#: editor/editor_node.cpp +msgid "This operation can't be done without a tree root." +msgstr "Esta operación non pode realizarse sen un nodo raíz." + +#: editor/editor_node.cpp +msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" +"Esta escena non pode gardarse porque hai unha relación de instanciación " +"cíclica con outra escena.\n" +"Por favor, solucione o problema e inténteo de novo." + +#: editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." +msgstr "" +"Non se puido gardar a escena. Posiblemente as dependencias (instancias ou " +"herenzas) non puideron satisfacerse." + +#: editor/editor_node.cpp editor/scene_tree_dock.cpp +msgid "Can't overwrite scene that is still open!" +msgstr "Non se pode sobreescribir escena que sigue aberta!" + +#: editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"An error occurred while trying to save the editor layout.\n" +"Make sure the editor's user data path is writable." +msgstr "" +"Produciuse un erro mentres se trataba de gardar a disposición das ventás do " +"editor.\n" +"Asegúrese de que o cartafol do editor ten dereitos de escritura." + +#: editor/editor_node.cpp +msgid "" +"Default editor layout overridden.\n" +"To restore the Default layout to its base settings, use the Delete Layout " +"option and delete the Default layout." +msgstr "" +"A disposición por defecto do editor foi sobreescrita.\n" +"Para devolver a disposición por defecto a súa configuración orixinal, usa a " +"opción 'Eliminar Disposición' e elimina a Disposición por defecto." + +#: editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "Nome de disposición non encontrada!" + +#: editor/editor_node.cpp +msgid "Restored the Default layout to its base settings." +msgstr "Restableceuse a disposición por defecto aos seus valores orixinais." + +#: editor/editor_node.cpp +msgid "" +"This resource belongs to a scene that was imported, so it's not editable.\n" +"Please read the documentation relevant to importing scenes to better " +"understand this workflow." +msgstr "" +"Este recurso pertence a unha escena importada, polo que non é editable.\n" +"Por favor; lea a documentación referente a importación de escenas para " +"entender o fluxo de traballo." + +#: editor/editor_node.cpp +msgid "" +"This resource belongs to a scene that was instanced or inherited.\n" +"Changes to it won't be kept when saving the current scene." +msgstr "" +"Este recurso pertence a unha escena instanciada ou herdada.\n" +"Os cambios que lle faga non se gardarán cando garde a escena actual." + +#: editor/editor_node.cpp +msgid "" +"This resource was imported, so it's not editable. Change its settings in the " +"import panel and then re-import." +msgstr "" +"Este recurso foi importado, polo que non é editable. Cambia a súa " +"configuración no panel de importación, e reimportao." + +#: editor/editor_node.cpp +msgid "" +"This scene was imported, so changes to it won't be kept.\n" +"Instancing it or inheriting will allow making changes to it.\n" +"Please read the documentation relevant to importing scenes to better " +"understand this workflow." +msgstr "" +"Esta escena foi importada, polo que cambios na escena non serán gardados.\n" +"Instanciala ou herdala permitirá facerlle cambios permanentes.\n" +"Por favor, lea a documentación referente a importación de escenas para " +"entender o fluxo de traballo." + +#: editor/editor_node.cpp +msgid "" +"This is a remote object, so changes to it won't be kept.\n" +"Please read the documentation relevant to debugging to better understand " +"this workflow." +msgstr "" +"Este é un obxecto remoto, polo que os cambios que lle faga non serán " +"permanentes.\n" +"Por favor; lea a documentación referente a depuración para entender o fluxo " +"de traballo." + +#: editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "Non hai unha escena definida para executar." + +#: editor/editor_node.cpp +msgid "Save scene before running..." +msgstr "Garda a escena antes de executala..." + +#: editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "Non se puido iniciar subproceso!" + +#: editor/editor_node.cpp editor/filesystem_dock.cpp +msgid "Open Scene" +msgstr "Abrir Escena" + +#: editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "Abrir Escena Base" + +#: editor/editor_node.cpp +msgid "Quick Open..." +msgstr "Apertura Rápida..." + +#: editor/editor_node.cpp +msgid "Quick Open Scene..." +msgstr "Apertura Rápida de Escena..." + +#: editor/editor_node.cpp +msgid "Quick Open Script..." +msgstr "Apertura Rápida de Script..." + +#: editor/editor_node.cpp +msgid "Save & Close" +msgstr "Gardar e Pechar" + +#: editor/editor_node.cpp +msgid "Save changes to '%s' before closing?" +msgstr "Gardar os cambios de '%s' antes de pechar?" + +#: editor/editor_node.cpp +msgid "Saved %s modified resource(s)." +msgstr "Gardado(s) %s recurso(s) modificado(s)." + +#: editor/editor_node.cpp +msgid "A root node is required to save the scene." +msgstr "Necesítase un nodo raíz para gardar a escena." + +#: editor/editor_node.cpp +msgid "Save Scene As..." +msgstr "Gardar Escena Como..." + +#: editor/editor_node.cpp editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "Esta operación non pode realizarse se unha escena." + +#: editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "Exportar Biblioteca de Mallas" + +#: editor/editor_node.cpp +msgid "This operation can't be done without a root node." +msgstr "Esta operación non pode realizarse sen un nodo raíz." + +#: editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: editor/editor_node.cpp +msgid "This operation can't be done without a selected node." +msgstr "Esta operación non pode realizarse sen un nodo seleccionado." + +#: editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "Escena actual non gardada ¿Abrir de todos os modos?" + +#: editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "Non se pode volver a cargar unha escena que nunca foi gardada." + +#: editor/editor_node.cpp +msgid "Reload Saved Scene" +msgstr "Recargar Escena Gardada" + +#: editor/editor_node.cpp +msgid "" +"The current scene has unsaved changes.\n" +"Reload the saved scene anyway? This action cannot be undone." +msgstr "" +"A escena actual ten cambios non gardados.\n" +"Quere volver a cargar a escena cargada de todos os modos? Esta acción non se " +"pode deshacer." + +#: editor/editor_node.cpp +msgid "Quick Run Scene..." +msgstr "Execución Rápida de Escena..." + +#: editor/editor_node.cpp +msgid "Quit" +msgstr "Saír" + +#: editor/editor_node.cpp +msgid "Yes" +msgstr "Si" + +#: editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "Saír do editor?" + +#: editor/editor_node.cpp +msgid "Open Project Manager?" +msgstr "Abrir o Administrador de Proxectos?" + +#: editor/editor_node.cpp +msgid "Save & Quit" +msgstr "Gardar e Saír" + +#: editor/editor_node.cpp +msgid "Save changes to the following scene(s) before quitting?" +msgstr "Gardar os cambios nas seguintes escenas antes de saír?" + +#: editor/editor_node.cpp +msgid "Save changes the following scene(s) before opening Project Manager?" +msgstr "" +"Gardar os cambios nas seguintes escenas antes de abrir o Administrador de " +"Proxectos?" + +#: editor/editor_node.cpp +msgid "" +"This option is deprecated. Situations where refresh must be forced are now " +"considered a bug. Please report." +msgstr "" +"Esta opción está anticuada. As situacións nas que a actualización debe ser " +"forzada agora considéranse un erro. Por favor, repórtao." + +#: editor/editor_node.cpp +msgid "Pick a Main Scene" +msgstr "Elexir unha Escena Principal" + +#: editor/editor_node.cpp +msgid "Close Scene" +msgstr "Pechar Escena" + +#: editor/editor_node.cpp +msgid "Reopen Closed Scene" +msgstr "Reabrir Escena Pechada" + +#: editor/editor_node.cpp +msgid "Unable to enable addon plugin at: '%s' parsing of config failed." +msgstr "" +"Non se puido activar a característica adicional (Plugin): Fallou a análise " +"sintáctica da configuración de '%s'." + +#: editor/editor_node.cpp +msgid "Unable to find script field for addon plugin at: 'res://addons/%s'." +msgstr "" +"Non se puido encontrar o campo do Script na característica adicional " +"(Plugin) en 'res://addons/%s'." + +#: editor/editor_node.cpp +msgid "Unable to load addon script from path: '%s'." +msgstr "" +"Non se puido cargar Script de característica adicional (Addon) na ruta: '%s'." + +#: editor/editor_node.cpp +msgid "" +"Unable to load addon script from path: '%s' There seems to be an error in " +"the code, please check the syntax." +msgstr "" +"Non se puido cargar Script de característica adicional (Addon) na ruta: " +"'%s'. Parece que hai un erro no código; por favor, comproba a sintaxe." + +#: editor/editor_node.cpp +msgid "" +"Unable to load addon script from path: '%s' Base type is not EditorPlugin." +msgstr "" +"Non se puido cargar o Script da característica adicional (Plugin): O tipo " +"base de %s non é EditorPlugin." + +#: editor/editor_node.cpp +msgid "Unable to load addon script from path: '%s' Script is not in tool mode." +msgstr "" +"Non se puido cargar Script de característica adicional (Addon) na ruta: " +"'%s'. O script non está en modo ferramenta (tool)." + +#: editor/editor_node.cpp +msgid "" +"Scene '%s' was automatically imported, so it can't be modified.\n" +"To make changes to it, a new inherited scene can be created." +msgstr "" +"A escena '%s' foi automáticamente importada, polo que non pode modificarse.\n" +"Para facerlle cambios pódese crear unha nova escena herdada." + +#: editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" +"Erro cargando a escena: debe estar dentro da ruta do proxecto. Usa \"Importar" +"\" para abrir a escena, e despois gardala dentro da ruta do proxecto." + +#: editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "A escena '%s' ten dependencias rotas:" + +#: editor/editor_node.cpp +msgid "Clear Recent Scenes" +msgstr "Limpar Escenas Recentes" + +#: editor/editor_node.cpp +msgid "" +"No main scene has ever been defined, select one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" +"Nunca se definiu unha escena principal. Seleccionar unha?\n" +"Podes cambialo despois na \"Configuración do Proxecto\", na categoría " +"\"Aplicación\"." + +#: editor/editor_node.cpp +msgid "" +"Selected scene '%s' does not exist, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" +"A escena seleccionada '%s' non existe. Seleccionar unha válida?\n" +"Podes cambiala despois en \"Configuración do Proxecto\" na categoría " +"\"aplicación\"." + +#: editor/editor_node.cpp +msgid "" +"Selected scene '%s' is not a scene file, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" +"A escena seleccionada '%s' non é un arquivo de escenas. Seleccionar un " +"arquivo válido?\n" +"Podes cambialo despois en \"Configuración do Proxecto\" na categoría " +"\"aplicación\"." + +#: editor/editor_node.cpp +msgid "Save Layout" +msgstr "Gardar Disposición" + +#: editor/editor_node.cpp +msgid "Delete Layout" +msgstr "Eliminar Dispoción" + +#: editor/editor_node.cpp editor/import_dock.cpp +#: editor/script_create_dialog.cpp +msgid "Default" +msgstr "Por Defecto" + +#: editor/editor_node.cpp editor/editor_properties.cpp +#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp +msgid "Show in FileSystem" +msgstr "Amosar no Sistema de Arquivos" + +#: editor/editor_node.cpp +msgid "Play This Scene" +msgstr "Reproducir Esta Escena" + +#: editor/editor_node.cpp +msgid "Close Tab" +msgstr "Pechar Pestana" + +#: editor/editor_node.cpp +msgid "Undo Close Tab" +msgstr "Desfacer Pechar Pestana" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Close Other Tabs" +msgstr "Pechar Outras Pestanas" + +#: editor/editor_node.cpp +msgid "Close Tabs to the Right" +msgstr "Pechar Pestanas á Dereita" + +#: editor/editor_node.cpp +msgid "Close All Tabs" +msgstr "Pechar Todas as Pestanas" + +#: editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: editor/editor_node.cpp +msgid "%d more files or folders" +msgstr "%d arquivos ou cartafois máis" + +#: editor/editor_node.cpp +msgid "%d more folders" +msgstr "%d cartafois máis" + +#: editor/editor_node.cpp +msgid "%d more files" +msgstr "%d arquivos máis" + +#: editor/editor_node.cpp +msgid "Dock Position" +msgstr "Posición do Panel" + +#: editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Modo Sen Distraccións" + +#: editor/editor_node.cpp +msgid "Toggle distraction-free mode." +msgstr "Act./Desact. modo sen distraccións." + +#: editor/editor_node.cpp +msgid "Add a new scene." +msgstr "Engadir unha nova escena." + +#: editor/editor_node.cpp +msgid "Scene" +msgstr "Escena" + +#: editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "Ir á escena aberta previamente." + +#: editor/editor_node.cpp +msgid "Copy Text" +msgstr "Copiar Texto" + +#: editor/editor_node.cpp +msgid "Next tab" +msgstr "Seguinte pestana" + +#: editor/editor_node.cpp +msgid "Previous tab" +msgstr "Anterior Pestana" + +#: editor/editor_node.cpp +msgid "Filter Files..." +msgstr "Filtrar Arquivos..." + +#: editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "Operacións con arquivos de escenas." + +#: editor/editor_node.cpp +msgid "New Scene" +msgstr "Nova Escena" + +#: editor/editor_node.cpp +msgid "New Inherited Scene..." +msgstr "Nova Escena Herdada..." + +#: editor/editor_node.cpp +msgid "Open Scene..." +msgstr "Abrir Escena..." + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Open Recent" +msgstr "Abrir Recente" + +#: editor/editor_node.cpp +msgid "Save Scene" +msgstr "Gardar Escena" + +#: editor/editor_node.cpp +msgid "Save All Scenes" +msgstr "Gardar Todas as Escenas" + +#: editor/editor_node.cpp +msgid "Convert To..." +msgstr "Converter a..." + +#: editor/editor_node.cpp +msgid "MeshLibrary..." +msgstr "" + +#: editor/editor_node.cpp +msgid "TileSet..." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Undo" +msgstr "Desfacer" + +#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Redo" +msgstr "Refacer" + +#: editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "Ferramentas varias do proxecto ou escena." + +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp +msgid "Project" +msgstr "Proxecto" + +#: editor/editor_node.cpp +msgid "Project Settings..." +msgstr "Axustes do Proxecto..." + +#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp +msgid "Version Control" +msgstr "Control de Versións" + +#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp +msgid "Set Up Version Control" +msgstr "Configurar Control de Versións" + +#: editor/editor_node.cpp +msgid "Shut Down Version Control" +msgstr "Desactivar Control de Versións" + +#: editor/editor_node.cpp +msgid "Export..." +msgstr "Exportar..." + +#: editor/editor_node.cpp +msgid "Install Android Build Template..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Project Data Folder" +msgstr "Abrir Cartafol de Datos do Proxecto" + +#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp +msgid "Tools" +msgstr "Ferramentas" + +#: editor/editor_node.cpp +msgid "Orphan Resource Explorer..." +msgstr "Explorador de Recursos Orfos..." + +#: editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "Saír á Lista de Proxectos" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/project_export.cpp +msgid "Debug" +msgstr "Depuración" + +#: editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "Exportar con Depuración Remota" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, using one-click deploy will make the executable " +"attempt to connect to this computer's IP so the running project can be " +"debugged.\n" +"This option is intended to be used for remote debugging (typically with a " +"mobile device).\n" +"You don't need to enable it to use the GDScript debugger locally." +msgstr "" +"Cando esta opción está activada, usar o despregue dun só clic fará que o " +"executable intente conectarse a IP deste computador, para poder depurar o " +"proxecto mentres este está executandose no dispositivo.\n" +"Esta opción está pensada para ser utilizada coa depuración remota " +"(normalmente nun dispositivo móbil).\n" +"Non necesita activar esta opción para utilizar o depurador de GDScript de " +"forma local." + +#: editor/editor_node.cpp +msgid "Small Deploy with Network Filesystem" +msgstr "Exportación Reducida co Sistema de Arquivos en Rede" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, using one-click deploy for Android will only " +"export an executable without the project data.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploying will use the USB cable for faster performance. This " +"option speeds up testing for projects with large assets." +msgstr "" +"Cando esta opción está activada, usar o despregue don só clic para Android " +"exportará só o executable, sen os datos do proxecto.\n" +"O sistema de arquivos proporcionarase por o editor na rede.\n" +"En Android ao despregar a aplicación usarase o USB para obter maior " +"rendemento. Esta opción acelera o proceso de proba en proxectos con gran " +"cantidade de Assets." + +#: editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, collision shapes and raycast nodes (for 2D and " +"3D) will be visible in the running project." +msgstr "" + +#: editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "Navegación Visible" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, navigation meshes and polygons will be visible " +"in the running project." +msgstr "" + +#: editor/editor_node.cpp +msgid "Synchronize Scene Changes" +msgstr "Sincronizar Cambios na Escena" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, any changes made to the scene in the editor " +"will be replicated in the running project.\n" +"When used remotely on a device, this is more efficient when the network " +"filesystem option is enabled." +msgstr "" +"Cando esta opción está activada, calquera cambio na escena no editor verase " +"reflectido no proxecto en execución.\n" +"Cando é usado remotamente nun dispositivo, é máis eficiente cando o sistema " +"de arquivos en rede está activado." + +#: editor/editor_node.cpp +msgid "Synchronize Script Changes" +msgstr "Sincronizar Cambios nos Scripts" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, any script that is saved will be reloaded in " +"the running project.\n" +"When used remotely on a device, this is more efficient when the network " +"filesystem option is enabled." +msgstr "" +"Cando esta opción está activada, calquera script gardada será recargada no " +"proxecto mentras este está en execución.\n" +"Cando é usado remotamente nun dispositivo, é máis eficiente cando o sistema " +"de arquivos en rede está activado." + +#: editor/editor_node.cpp editor/script_create_dialog.cpp +msgid "Editor" +msgstr "Editor" + +#: editor/editor_node.cpp +msgid "Editor Settings..." +msgstr "Configuración do Editor..." + +#: editor/editor_node.cpp +msgid "Editor Layout" +msgstr "Disposición das Ventás do Editor" + +#: editor/editor_node.cpp +msgid "Take Screenshot" +msgstr "Captura de Pantalla" + +#: editor/editor_node.cpp +msgid "Screenshots are stored in the Editor Data/Settings Folder." +msgstr "" +"As capturas de pantalla gárdanse no cartafol de Datos/Configuración do " +"Editor." + +#: editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "Act./Desact. Pantalla Completa" + +#: editor/editor_node.cpp +msgid "Toggle System Console" +msgstr "Act./Desact. Consola do Sistema" + +#: editor/editor_node.cpp +msgid "Open Editor Data/Settings Folder" +msgstr "Abrir Cartafol de Datos/Configuración do Editor" + +#: editor/editor_node.cpp +msgid "Open Editor Data Folder" +msgstr "Abrir Cartafol de Datos do Editor" + +#: editor/editor_node.cpp +msgid "Open Editor Settings Folder" +msgstr "Abrir Cartafol de Configuración do Editor" + +#: editor/editor_node.cpp +msgid "Manage Editor Features..." +msgstr "Administrar Características do Editor..." + +#: editor/editor_node.cpp +msgid "Manage Export Templates..." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp +msgid "Help" +msgstr "Axuda" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "Search" +msgstr "Buscar" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Online Docs" +msgstr "Documentación En Liña" + +#: editor/editor_node.cpp +msgid "Q&A" +msgstr "Preguntas e Respostas" + +#: editor/editor_node.cpp +msgid "Report a Bug" +msgstr "Reportar un Erro" + +#: editor/editor_node.cpp +msgid "Send Docs Feedback" +msgstr "Reportar Problema ca Documentación" + +#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp +msgid "Community" +msgstr "Comunidade" + +#: editor/editor_node.cpp +msgid "About" +msgstr "Acerca De" + +#: editor/editor_node.cpp +msgid "Play the project." +msgstr "Reproduce o proxecto." + +#: editor/editor_node.cpp +msgid "Play" +msgstr "Executar" + +#: editor/editor_node.cpp +msgid "Pause the scene execution for debugging." +msgstr "Pausa a execución da escena para a depuración." + +#: editor/editor_node.cpp +msgid "Pause Scene" +msgstr "Pausar Escena" + +#: editor/editor_node.cpp +msgid "Stop the scene." +msgstr "Detén a escena." + +#: editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "Reproduce a escena actual." + +#: editor/editor_node.cpp +msgid "Play Scene" +msgstr "Executar Escena" + +#: editor/editor_node.cpp +msgid "Play custom scene" +msgstr "Executar escena a elixir" + +#: editor/editor_node.cpp +msgid "Play Custom Scene" +msgstr "Executar Escena a Elixir" + +#: editor/editor_node.cpp +msgid "Changing the video driver requires restarting the editor." +msgstr "Cambiar o controlador de vídeo require reiniciar o editor." + +#: editor/editor_node.cpp editor/project_settings_editor.cpp +#: editor/settings_config_dialog.cpp +msgid "Save & Restart" +msgstr "Gardar e Reinicar" + +#: editor/editor_node.cpp +msgid "Spins when the editor window redraws." +msgstr "Xira cando o editor actualiza a pantalla." + +#: editor/editor_node.cpp +msgid "Update Continuously" +msgstr "Actualizar de Maneira Continua" + +#: editor/editor_node.cpp +msgid "Update When Changed" +msgstr "Actualizar Cando Sexa Necesario" + +#: editor/editor_node.cpp +msgid "Hide Update Spinner" +msgstr "" + +#: editor/editor_node.cpp +msgid "FileSystem" +msgstr "Sistema de Arquivos" + +#: editor/editor_node.cpp +msgid "Inspector" +msgstr "Inspector" + +#: editor/editor_node.cpp +msgid "Expand Bottom Panel" +msgstr "Estender Panel Inferior" + +#: editor/editor_node.cpp +msgid "Output" +msgstr "Saída" + +#: editor/editor_node.cpp +msgid "Don't Save" +msgstr "Non Gardar" + +#: editor/editor_node.cpp +msgid "Android build template is missing, please install relevant templates." +msgstr "" + +#: editor/editor_node.cpp +msgid "Manage Templates" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This will set up your project for custom Android builds by installing the " +"source template to \"res://android/build\".\n" +"You can then apply modifications and build your own custom APK on export " +"(adding modules, changing the AndroidManifest.xml, etc.).\n" +"Note that in order to make custom builds instead of using pre-built APKs, " +"the \"Use Custom Build\" option should be enabled in the Android export " +"preset." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"The Android build template is already installed in this project and it won't " +"be overwritten.\n" +"Remove the \"res://android/build\" directory manually before attempting this " +"operation again." +msgstr "" + +#: editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + +#: editor/editor_node.cpp +msgid "Export Library" +msgstr "Biblioteca de Exportación" + +#: editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "Combinar Con Existentes" + +#: editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "Abrir e Executar un Script" + +#: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Este shader foi modificado en disco.\n" +"Que acción deberían de tomarse?" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Recargar" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Volver a Gardar" + +#: editor/editor_node.cpp +msgid "New Inherited" +msgstr "Nova Escena Herdada" + +#: editor/editor_node.cpp +msgid "Load Errors" +msgstr "Erros durante a Carga" + +#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "Elixir" + +#: editor/editor_node.cpp +msgid "Open 2D Editor" +msgstr "Abrir Editor 2D" + +#: editor/editor_node.cpp +msgid "Open 3D Editor" +msgstr "Abrir Editor 3D" + +#: editor/editor_node.cpp +msgid "Open Script Editor" +msgstr "Abrir Editor de Scripts" + +#: editor/editor_node.cpp editor/project_manager.cpp +msgid "Open Asset Library" +msgstr "Abrir Biblioteca de Assets" + +#: editor/editor_node.cpp +msgid "Open the next Editor" +msgstr "Abrir o seguinte editor" + +#: editor/editor_node.cpp +msgid "Open the previous Editor" +msgstr "Abrir o anterior editor" + +#: editor/editor_node.h +msgid "Warning!" +msgstr "Aviso!" + +#: editor/editor_path.cpp +msgid "No sub-resources found." +msgstr "Non se atopou ningún sub-recurso." + +#: editor/editor_plugin.cpp +msgid "Creating Mesh Previews" +msgstr "Creando Previsualización de Mallas" + +#: editor/editor_plugin.cpp +msgid "Thumbnail..." +msgstr "Miniatura..." + +#: editor/editor_plugin_settings.cpp +msgid "Main Script:" +msgstr "Script Principal:" + +#: editor/editor_plugin_settings.cpp +msgid "Edit Plugin" +msgstr "Editar Característica Adicional (Plugin)" + +#: editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "Características Adicionais (Plugins) Instalados:" + +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +msgid "Update" +msgstr "Actualizar" + +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Version:" +msgstr "Versión:" + +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +msgid "Author:" +msgstr "Autor:" + +#: editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "Estado:" + +#: editor/editor_plugin_settings.cpp +msgid "Edit:" +msgstr "Editar:" + +#: editor/editor_profiler.cpp +msgid "Measure:" +msgstr "Medida:" + +#: editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "Duración de Fotograma (seg)" + +#: editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "Tempo Medio (seg)" + +#: editor/editor_profiler.cpp +msgid "Frame %" +msgstr "Fotograma %" + +#: editor/editor_profiler.cpp +msgid "Physics Frame %" +msgstr "Fotograma de Física %" + +#: editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "Inclusivo" + +#: editor/editor_profiler.cpp +msgid "Self" +msgstr "Propio" + +#: editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "Fotograma #:" + +#: editor/editor_profiler.cpp +msgid "Time" +msgstr "Tempo" + +#: editor/editor_profiler.cpp +msgid "Calls" +msgstr "Chamadas" + +#: editor/editor_properties.cpp +msgid "Edit Text:" +msgstr "Editar Texto:" + +#: editor/editor_properties.cpp editor/script_create_dialog.cpp +msgid "On" +msgstr "Activado" + +#: editor/editor_properties.cpp +msgid "Layer" +msgstr "Capa" + +#: editor/editor_properties.cpp +msgid "Bit %d, value %d" +msgstr "Bit %d, valor %d" + +#: editor/editor_properties.cpp +msgid "[Empty]" +msgstr "[Baleiro]" + +#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp +msgid "Assign..." +msgstr "Asignar..." + +#: editor/editor_properties.cpp +msgid "Invalid RID" +msgstr "Identificador de Recurso (RID) inválido" + +#: editor/editor_properties.cpp +msgid "" +"The selected resource (%s) does not match any type expected for this " +"property (%s)." +msgstr "" +"O recurso seleccionado (%s) non coincide con ningún tipo esperado para esta " +"propiedade (%s)." + +#: editor/editor_properties.cpp +msgid "" +"Can't create a ViewportTexture on resources saved as a file.\n" +"Resource needs to belong to a scene." +msgstr "" +"Non se pode crear un ViewportTexture nun recurso gardado coma un arquivo.\n" +"O recurso ten que pertencer a unha escena." + +#: editor/editor_properties.cpp +msgid "" +"Can't create a ViewportTexture on this resource because it's not set as " +"local to scene.\n" +"Please switch on the 'local to scene' property on it (and all resources " +"containing it up to a node)." +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Pick a Viewport" +msgstr "Selecciona unha Mini-Ventá (Viewport)" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "New Script" +msgstr "Novo Script" + +#: editor/editor_properties.cpp editor/scene_tree_dock.cpp +msgid "Extend Script" +msgstr "Estender Script" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "New %s" +msgstr "Novo %s" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Make Unique" +msgstr "Facer Único" + +#: editor/editor_properties.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Paste" +msgstr "Pegar" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Convert To %s" +msgstr "Converter a %s" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Selected node is not a Viewport!" +msgstr "O nodo seleccionado non é unha Mini-Ventá (Viewport)!" + +#: editor/editor_properties_array_dict.cpp +msgid "Size: " +msgstr "Tamaño: " + +#: editor/editor_properties_array_dict.cpp +msgid "Page: " +msgstr "Páxina: " + +#: editor/editor_properties_array_dict.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove Item" +msgstr "Eliminar Elemento" + +#: editor/editor_properties_array_dict.cpp +msgid "New Key:" +msgstr "Nova Chave:" + +#: editor/editor_properties_array_dict.cpp +msgid "New Value:" +msgstr "Novo Valor:" + +#: editor/editor_properties_array_dict.cpp +msgid "Add Key/Value Pair" +msgstr "Engadir Parella Chave/Valor" + +#: editor/editor_run_native.cpp +msgid "" +"No runnable export preset found for this platform.\n" +"Please add a runnable preset in the Export menu or define an existing preset " +"as runnable." +msgstr "" +"Non se encontraron axustes de exportación executables para esta plataforma.\n" +"Engade uns axustes de exportación executables, ou define algún xa existente " +"como executable." + +#: editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "Escribe a túa lóxica no método '_run()'." + +#: editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "Xa hai unha escena editada." + +#: editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "Non se puido instanciar o script:" + +#: editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "Olvidaches a palabra clave 'tool'?" + +#: editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "Non se puido executar o script:" + +#: editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "Olvidaches o método '_run'?" + +#: editor/editor_spin_slider.cpp +msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes." +msgstr "" +"Mantén pulsado Ctrl para redondear a enteiros. Mantén pulsado Shift para " +"cambios máis precisos." + +#: editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "Selecciona o(s) Nodo(s) a Importar" + +#: editor/editor_sub_scene.cpp editor/project_manager.cpp +msgid "Browse" +msgstr "Examinar" + +#: editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "Ruta da Escena:" + +#: editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "Importar Desde Nodo:" + +#: editor/export_template_manager.cpp +msgid "Redownload" +msgstr "Volver a Descargar" + +#: editor/export_template_manager.cpp +msgid "Uninstall" +msgstr "Desinstalar" + +#: editor/export_template_manager.cpp +msgid "(Installed)" +msgstr "(Instalado)" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Download" +msgstr "Descargar" + +#: editor/export_template_manager.cpp +msgid "Official export templates aren't available for development builds." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "(Missing)" +msgstr "(Non encontrado)" + +#: editor/export_template_manager.cpp +msgid "(Current)" +msgstr "(Actual)" + +#: editor/export_template_manager.cpp +msgid "Retrieving mirrors, please wait..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Remove template version '%s'?" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Can't open export templates zip." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Invalid version.txt format inside templates: %s." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "No version.txt found inside templates." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error creating path for templates:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Extracting Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Importing:" +msgstr "Importando:" + +#: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "" +"No download links found for this version. Direct download is only available " +"for official releases." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't resolve." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't connect." +msgstr "Non se pode conectar." + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "No response." +msgstr "Sen resposta." + +#: editor/export_template_manager.cpp +msgid "Request Failed." +msgstr "A Petición Fracasou." + +#: editor/export_template_manager.cpp +msgid "Redirect Loop." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Failed:" +msgstr "Fracasado:" + +#: editor/export_template_manager.cpp +msgid "Download Complete." +msgstr "Descarga Completa." + +#: editor/export_template_manager.cpp +msgid "Cannot remove temporary file:" +msgstr "Non se pode eliminar o arquivo temporal:" + +#: editor/export_template_manager.cpp +msgid "" +"Templates installation failed.\n" +"The problematic templates archives can be found at '%s'." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error requesting URL:" +msgstr "Erro ao solicitar a URL:" + +#: editor/export_template_manager.cpp +msgid "Connecting to Mirror..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Disconnected" +msgstr "Desconectado" + +#: editor/export_template_manager.cpp +msgid "Resolving" +msgstr "Resolvendo" + +#: editor/export_template_manager.cpp +msgid "Can't Resolve" +msgstr "Non se puido Resolver" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Connecting..." +msgstr "Conectando..." + +#: editor/export_template_manager.cpp +msgid "Can't Connect" +msgstr "Non se Pode Conectar" + +#: editor/export_template_manager.cpp +msgid "Connected" +msgstr "Conectado" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Requesting..." +msgstr "Solicitando..." + +#: editor/export_template_manager.cpp +msgid "Downloading" +msgstr "Descargando" + +#: editor/export_template_manager.cpp +msgid "Connection Error" +msgstr "Erro de Conexión" + +#: editor/export_template_manager.cpp +msgid "SSL Handshake Error" +msgstr "Erro SSL Handshake" + +#: editor/export_template_manager.cpp +msgid "Uncompressing Android Build Sources" +msgstr "Descomprimindo Recursos de Compilación de Android" + +#: editor/export_template_manager.cpp +msgid "Current Version:" +msgstr "Versión Actual:" + +#: editor/export_template_manager.cpp +msgid "Installed Versions:" +msgstr "Versións Instaladas:" + +#: editor/export_template_manager.cpp +msgid "Install From File" +msgstr "Instalar Dende Arquivo" + +#: editor/export_template_manager.cpp +msgid "Remove Template" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Select Template File" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Export Template Manager" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Download Templates" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Select mirror from list: (Shift+Click: Open in Browser)" +msgstr "Seleccione un mirror da lista: (Shift+Clic: Abrir no Navegador)" + +#: editor/filesystem_dock.cpp +msgid "Favorites" +msgstr "Favoritos" + +#: editor/filesystem_dock.cpp +msgid "Status: Import of file failed. Please fix file and reimport manually." +msgstr "" +"Estado: Fallou a importación do arquivo. Por favor, amaña o arquivo e " +"impórtao manualmente." + +#: editor/filesystem_dock.cpp +msgid "Cannot move/rename resources root." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Cannot move a folder into itself." +msgstr "Non se pode mover un cartafol dentro de sí mesmo." + +#: editor/filesystem_dock.cpp +msgid "Error moving:" +msgstr "Erro ao mover:" + +#: editor/filesystem_dock.cpp +msgid "Error duplicating:" +msgstr "Erro ao duplicar:" + +#: editor/filesystem_dock.cpp +msgid "Unable to update dependencies:" +msgstr "Incapaz de actualizar dependencias:" + +#: editor/filesystem_dock.cpp editor/scene_tree_editor.cpp +msgid "No name provided." +msgstr "Nome non proporcionado." + +#: editor/filesystem_dock.cpp +msgid "Provided name contains invalid characters." +msgstr "O nome proporcionado contén caracteres inválidos." + +#: editor/filesystem_dock.cpp +msgid "A file or folder with this name already exists." +msgstr "Xa existe un arquivo ou cartafol con este nome." + +#: editor/filesystem_dock.cpp +msgid "Name contains invalid characters." +msgstr "O nome contén caracteres inválidos." + +#: editor/filesystem_dock.cpp +msgid "" +"The following files or folders conflict with items in the target location " +"'%s':\n" +"\n" +"%s\n" +"\n" +"Do you wish to overwrite them?" +msgstr "" +"Os seguintes arquivos ou cartafois entran en conflicto con elementos da " +"ubicación de destino '%s':\n" +"\n" +"%s\n" +"\n" +"Queres sobreescribilos?" + +#: editor/filesystem_dock.cpp +msgid "Renaming file:" +msgstr "Renomeando Arquivo:" + +#: editor/filesystem_dock.cpp +msgid "Renaming folder:" +msgstr "Renomeando Cartafol:" + +#: editor/filesystem_dock.cpp +msgid "Duplicating file:" +msgstr "Duplicando Arquivo:" + +#: editor/filesystem_dock.cpp +msgid "Duplicating folder:" +msgstr "Duplicando Cartafol:" + +#: editor/filesystem_dock.cpp +msgid "New Inherited Scene" +msgstr "Nova Escena Herdada" + +#: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Establecer coma Escena Principal" + +#: editor/filesystem_dock.cpp +msgid "Open Scenes" +msgstr "Abrir Escenas" + +#: editor/filesystem_dock.cpp +msgid "Instance" +msgstr "Instanciar" + +#: editor/filesystem_dock.cpp +msgid "Add to Favorites" +msgstr "Engadir a Favoritos" + +#: editor/filesystem_dock.cpp +msgid "Remove from Favorites" +msgstr "Eliminar de Favoritos" + +#: editor/filesystem_dock.cpp +msgid "Edit Dependencies..." +msgstr "Editar Dependencias..." + +#: editor/filesystem_dock.cpp +msgid "View Owners..." +msgstr "Ver Donos..." + +#: editor/filesystem_dock.cpp +msgid "Move To..." +msgstr "Mover a..." + +#: editor/filesystem_dock.cpp +msgid "New Scene..." +msgstr "Nova Escena..." + +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +msgid "New Script..." +msgstr "Novo Script..." + +#: editor/filesystem_dock.cpp +msgid "New Resource..." +msgstr "Novo Recurso..." + +#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp +#: editor/script_editor_debugger.cpp +msgid "Expand All" +msgstr "Expandir Todo" + +#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp +#: editor/script_editor_debugger.cpp +msgid "Collapse All" +msgstr "Colapsar Todo" + +#: editor/filesystem_dock.cpp +msgid "Duplicate..." +msgstr "Duplicar..." + +#: editor/filesystem_dock.cpp +msgid "Move to Trash" +msgstr "Mover á Papeleira" + +#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Rename..." +msgstr "Renomear..." + +#: editor/filesystem_dock.cpp +msgid "Previous Folder/File" +msgstr "Anterior Cartafol/Arquivo" + +#: editor/filesystem_dock.cpp +msgid "Next Folder/File" +msgstr "Seguinte Cartafol/Arquivo" + +#: editor/filesystem_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "Reexaminar Sistema de Arquivos" + +#: editor/filesystem_dock.cpp +msgid "Toggle Split Mode" +msgstr "Act./Desact. Modo Dividido" + +#: editor/filesystem_dock.cpp +msgid "Search files" +msgstr "Buscar arquivos" + +#: editor/filesystem_dock.cpp +msgid "" +"Scanning Files,\n" +"Please Wait..." +msgstr "" +"Examinando arquivos,\n" +"Por favor, espere..." + +#: editor/filesystem_dock.cpp +msgid "Move" +msgstr "Mover" + +#: editor/filesystem_dock.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/project_manager.cpp editor/rename_dialog.cpp +#: editor/scene_tree_dock.cpp +msgid "Rename" +msgstr "Renomear" + +#: editor/filesystem_dock.cpp +msgid "Overwrite" +msgstr "Sobreescribir" + +#: editor/filesystem_dock.cpp +msgid "Create Scene" +msgstr "Crear Escena" + +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "Crear Script" + +#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp +msgid "Find in Files" +msgstr "Buscar en Arquivos" + +#: editor/find_in_files.cpp +msgid "Find:" +msgstr "Buscar:" + +#: editor/find_in_files.cpp +msgid "Folder:" +msgstr "Cartafol:" + +#: editor/find_in_files.cpp +msgid "Filters:" +msgstr "Filtros:" + +#: editor/find_in_files.cpp +msgid "" +"Include the files with the following extensions. Add or remove them in " +"ProjectSettings." +msgstr "" +"Inclúe os arquivos coas seguintes extensións. Engádeos ou elimínaos na " +"Configuración do proxecto." + +#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find..." +msgstr "Buscar..." + +#: editor/find_in_files.cpp editor/plugins/script_text_editor.cpp +msgid "Replace..." +msgstr "Substituír..." + +#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp +msgid "Cancel" +msgstr "Cancelar" + +#: editor/find_in_files.cpp +msgid "Find: " +msgstr "Buscar: " + +#: editor/find_in_files.cpp +msgid "Replace: " +msgstr "Substituír: " + +#: editor/find_in_files.cpp +msgid "Replace all (no undo)" +msgstr "Substituír todo (non se pode defacer)" + +#: editor/find_in_files.cpp +msgid "Searching..." +msgstr "Procurando..." + +#: editor/find_in_files.cpp +msgid "%d match in %d file." +msgstr "%d coincidencia en %d arquivo." + +#: editor/find_in_files.cpp +msgid "%d matches in %d file." +msgstr "%d coincidencias en %d arquivo." + +#: editor/find_in_files.cpp +msgid "%d matches in %d files." +msgstr "%d coincidencias en %d arquivos." + +#: editor/groups_editor.cpp +msgid "Add to Group" +msgstr "Engadir ao Grupo" + +#: editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "Eliminar do Grupo" + +#: editor/groups_editor.cpp +msgid "Group name already exists." +msgstr "Este nome de grupo xa existe." + +#: editor/groups_editor.cpp +msgid "Invalid group name." +msgstr "Nome de grupo inválido." + +#: editor/groups_editor.cpp +msgid "Rename Group" +msgstr "Renomear Grupo" + +#: editor/groups_editor.cpp +msgid "Delete Group" +msgstr "Eliminar Grupo" + +#: editor/groups_editor.cpp editor/node_dock.cpp +msgid "Groups" +msgstr "Grupos" + +#: editor/groups_editor.cpp +msgid "Nodes Not in Group" +msgstr "Nodos Fora do Grupo" + +#: editor/groups_editor.cpp editor/scene_tree_dock.cpp +#: editor/scene_tree_editor.cpp +msgid "Filter nodes" +msgstr "Filtrar nodos" + +#: editor/groups_editor.cpp +msgid "Nodes in Group" +msgstr "Nodos no Grupo" + +#: editor/groups_editor.cpp +msgid "Empty groups will be automatically removed." +msgstr "Os grupos baleiros serán automaticamente eliminados." + +#: editor/groups_editor.cpp +msgid "Group Editor" +msgstr "Editor de Grupos" + +#: editor/groups_editor.cpp +msgid "Manage Groups" +msgstr "Administrar Grupos" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Single Scene" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Animations" +msgstr "Importar con Animacións Separadas" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Materials" +msgstr "Importar con Materiais Separados" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects" +msgstr "Importar con Obxectos Separados" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Materials" +msgstr "Importar con Obxectos e Materiais Separados" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Animations" +msgstr "Importar con Obxectos e Animacións Separadas" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Materials+Animations" +msgstr "Importar con Materiais e Animacións Separadas" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Materials+Animations" +msgstr "Importar con Obxectos, Materiais, e Animacións Separados" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Multiple Scenes" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Multiple Scenes+Materials" +msgstr "Importar como Escenas e Materiales Múltiples" + +#: editor/import/resource_importer_scene.cpp +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Import Scene" +msgstr "Importar Escena" + +#: editor/import/resource_importer_scene.cpp +msgid "Importing Scene..." +msgstr "Importando Escena..." + +#: editor/import/resource_importer_scene.cpp +msgid "Generating Lightmaps" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Generating for Mesh: " +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Running Custom Script..." +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Invalid/broken script for post-import (check console):" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Error running post-import script:" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Did you return a Node-derived object in the `post_import()` method?" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Saving..." +msgstr "Gardando..." + +#: editor/import_dock.cpp +msgid "%d Files" +msgstr "%d Arquivos" + +#: editor/import_dock.cpp +msgid "Set as Default for '%s'" +msgstr "" + +#: editor/import_dock.cpp +msgid "Clear Default for '%s'" +msgstr "" + +#: editor/import_dock.cpp +msgid "Import As:" +msgstr "Importar Como:" + +#: editor/import_dock.cpp +msgid "Preset" +msgstr "Axustes de Importación" + +#: editor/import_dock.cpp +msgid "Reimport" +msgstr "Reimportar" + +#: editor/import_dock.cpp +msgid "Save Scenes, Re-Import, and Restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Failed to load resource." +msgstr "Fallou a carga do Recurso." + +#: editor/inspector_dock.cpp +msgid "Expand All Properties" +msgstr "Expandir Tódalas Propiedades" + +#: editor/inspector_dock.cpp +msgid "Collapse All Properties" +msgstr "Colapsar Tódalas Propiedades" + +#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +msgid "Save As..." +msgstr "Gardar Como..." + +#: editor/inspector_dock.cpp +msgid "Copy Params" +msgstr "Copiar Parámetros" + +#: editor/inspector_dock.cpp +msgid "Edit Resource Clipboard" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Copy Resource" +msgstr "Copiar Recurso" + +#: editor/inspector_dock.cpp +msgid "Make Built-In" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Open in Help" +msgstr "Abrir na Axuda" + +#: editor/inspector_dock.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "History of recently edited objects." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Object properties." +msgstr "Propiedade de Obxectos." + +#: editor/inspector_dock.cpp +msgid "Filter properties" +msgstr "Filtrar propiedades" + +#: editor/inspector_dock.cpp +msgid "Changes may be lost!" +msgstr "Os cambios poderían perderse!" + +#: editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: editor/node_dock.cpp +msgid "Select a single node to edit its signals and groups." +msgstr "Seleccione un nodo para editar as súas sinais e grupos." + +#: editor/plugin_config_dialog.cpp +msgid "Edit a Plugin" +msgstr "Editar unha Característica Adicional (Plugin)" + +#: editor/plugin_config_dialog.cpp +msgid "Create a Plugin" +msgstr "Crear unha Característica Adicional (Plugin)" + +#: editor/plugin_config_dialog.cpp +msgid "Plugin Name:" +msgstr "Nome do Plugin:" + +#: editor/plugin_config_dialog.cpp +msgid "Subfolder:" +msgstr "Subcartafol:" + +#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp +msgid "Language:" +msgstr "Linguaxe:" + +#: editor/plugin_config_dialog.cpp +msgid "Script Name:" +msgstr "Nome do Script:" + +#: editor/plugin_config_dialog.cpp +msgid "Activate now?" +msgstr "Activar agora?" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Polygon" +msgstr "Crear Polígono" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Create points." +msgstr "Crear puntos." + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "" +"Edit points.\n" +"LMB: Move Point\n" +"RMB: Erase Point" +msgstr "" +"Editar puntos.\n" +"Clic Izq: Mover Punto\n" +"Clic Der: Eliminar Punto" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Erase points." +msgstr "Borrar puntos." + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Edit Polygon" +msgstr "Editar Polígono" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Insert Point" +msgstr "Inserir Punto" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Edit Polygon (Remove Point)" +msgstr "Editar Polígono (Eliminar Punto)" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Remove Polygon And Point" +msgstr "Eliminar Polígono e Punto" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "Engadir Animación" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Load..." +msgstr "Cargar..." + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Move Node Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Change BlendSpace1D Limits" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Change BlendSpace1D Labels" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "This type of node can't be used. Only root nodes are allowed." +msgstr "Non se pode usar este tipo de nodo. Só nodos raíz están permitidos." + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Add Node Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Add Animation Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Remove BlendSpace1D Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Move BlendSpace1D Node Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "" +"AnimationTree is inactive.\n" +"Activate to enable playback, check node warnings if activation fails." +msgstr "" +"O AnimationTree está inactivo.\n" +"Actívao para permitir a reprodución; e comproba os avisos do nodo se hai un " +"erro na activación." + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Set the blending position within the space" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Select and move points, create points with RMB." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp +msgid "Enable snap and show grid." +msgstr "Activar axuste de cuadrícula e amosar cuadrícula." + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Point" +msgstr "Punto" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Open Editor" +msgstr "Abrir Editor" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Open Animation Node" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Triangle already exists." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Add Triangle" +msgstr "Engadir Triángulo" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Change BlendSpace2D Limits" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Change BlendSpace2D Labels" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Remove BlendSpace2D Point" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Remove BlendSpace2D Triangle" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "BlendSpace2D does not belong to an AnimationTree node." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "No triangles exist, so no blending can take place." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Toggle Auto Triangles" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Create triangles by connecting points." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Erase points and triangles." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Generate blend triangles automatically (instead of manually)" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend:" +msgstr "Mezcla:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Parameter Changed" +msgstr "Parámetro Cambiado" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Edit Filters" +msgstr "Editar Flitros" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Output node can't be added to the blend tree." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Add Node to BlendTree" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Node Moved" +msgstr "Nodo Movido" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Unable to connect, port may be in use or connection may be invalid." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Nodes Connected" +msgstr "Nodos Conectado" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Nodes Disconnected" +msgstr "Nodos Desconectados" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Set Animation" +msgstr "Establecer Animación" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Node" +msgstr "Eliminar Nodo" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Eliminar Nodo(s)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Toggle Filter On/Off" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Change Filter" +msgstr "Cambiar Filtro" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "No animation player set, so unable to retrieve track names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Player path set is invalid, so unable to retrieve track names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "" +"Animation player has no valid root node path, so unable to retrieve track " +"names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "Clips de Animación" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Clips de Audio" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Funcións" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Node Renamed" +msgstr "Nodo Renomeado" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add Node..." +msgstr "Engadir Nodo..." + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "Edit Filtered Tracks:" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Enable Filtering" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "Act./Desact. Auto-reproducción" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "Nova Animación" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Animation?" +msgstr "Eliminar Animación?" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "Eliminar Animación" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Invalid animation name!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation name already exists!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "Renomear Animación" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "Cargar Animación" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "Duplicar Animación" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation to copy!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation resource on clipboard!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "Animación Pegada" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "Pegar Animación" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation to edit!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "Ferramentas de Animación" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation" +msgstr "Animación" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Transitions..." +msgstr "Editar Transicións..." + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Open in Inspector" +msgstr "Abrir no Inspector" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Enable Onion Skinning" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Onion Skinning Options" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Directions" +msgstr "Direccións" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Past" +msgstr "Pasado" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Future" +msgstr "Futuro" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Depth" +msgstr "Profundidad" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "1 step" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "2 steps" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "3 steps" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Differences Only" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Force White Modulate" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Include Gizmos (3D)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Pin AnimationPlayer" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "Nome da Animación:" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp +msgid "Error!" +msgstr "Erro!" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Move Node" +msgstr "Mover Nodo" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "Existe transición!" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Add Transition" +msgstr "Engadir Transición" + +#: editor/plugins/animation_state_machine_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node" +msgstr "Engadir Nodo" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "End" +msgstr "Fin" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Immediate" +msgstr "Inmediata" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Sync" +msgstr "Sincronizar" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "At End" +msgstr "Ao Final" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Travel" +msgstr "Viaxe" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Start and end nodes are needed for a sub-transition." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "No playback resource set at path: %s." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Node Removed" +msgstr "Nodo Eliminado" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition Removed" +msgstr "Transición Eliminada" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Set Start Node (Autoplay)" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "" +"Select and move nodes.\n" +"RMB to add new nodes.\n" +"Shift+LMB to create connections." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Create new nodes." +msgstr "Crear novos nodos." + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Connect nodes." +msgstr "Conectar nodos." + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Remove selected node or transition." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Toggle autoplay this animation on start, restart or seek to zero." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Set the end animation. This is useful for sub-transitions." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition: " +msgstr "Transición: " + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "Modo de Reprodución:" + +#: editor/plugins/animation_tree_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "New name:" +msgstr "Novo nome:" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "Escala:" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend" +msgstr "Mezcla" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Mix" +msgstr "Mezcla" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "Auto Reinicio:" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Restart (s):" +msgstr "Reiniciar (s):" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Start!" +msgstr "Comezar!" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "Cantidade:" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Current:" +msgstr "Actual:" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Input" +msgstr "Engadir Entrada" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Delete Input" +msgstr "Eliminar Entrada" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation Node" +msgstr "Nodo de Animación" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "OneShot Node" +msgstr "Nodo de Execución Única (Oneshot)" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Import Animations..." +msgstr "Importar Animacións..." + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "Editar Filtros do Nodo" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Filters..." +msgstr "Filtros..." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Contents:" +msgstr "Contidos:" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "View Files" +msgstr "Ver Arquivos" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Connection error, please try again." +msgstr "Houbo un erro na conexión; por favor, inténtao de novo." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't connect to host:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "No response from host:" +msgstr "Non houbo respota por parte do host:" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't resolve hostname:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed, return code:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed." +msgstr "A petición fallou." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Cannot save response to:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Write error." +msgstr "Erro de escritura." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed, too many redirects" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Redirect loop." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed, timeout" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Timeout." +msgstr "Timeout." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Bad download hash, assuming file has been tampered with." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Expected:" +msgstr "Esperado:" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Got:" +msgstr "Recibido:" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Failed sha256 hash check" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Asset Download Error:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Downloading (%s / %s)..." +msgstr "Descargando (%s / %s)..." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Downloading..." +msgstr "Descargando..." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Resolving..." +msgstr "Resolvendo..." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Error making request" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Idle" +msgstr "Ocioso" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Install..." +msgstr "Instalar..." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Retry" +msgstr "Reintentar" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Download Error" +msgstr "Erro na Descarga" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Download for this asset is already in progress!" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Actualizado Recentemente" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Nome (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Nome (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Licenza (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Licenza (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "First" +msgstr "Primeiro" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Previous" +msgstr "Anterior" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Next" +msgstr "Seguinte" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Last" +msgstr "Derradeiro" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "All" +msgstr "Todos" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "No results for \"%s\"." +msgstr "Non houbo resultado para \"%s\"." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Import..." +msgstr "Importar..." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Plugins..." +msgstr "Características Adicionais (Plugins)..." + +#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +msgid "Sort:" +msgstr "Ordenar:" + +#: editor/plugins/asset_library_editor_plugin.cpp +#: editor/project_settings_editor.cpp +msgid "Category:" +msgstr "Categoría:" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Site:" +msgstr "Sitio:" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Support" +msgstr "Soporte" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Official" +msgstr "Oficial" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Testing" +msgstr "Probas" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Loading..." +msgstr "Cargando..." + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "" +"Can't determine a save path for lightmap images.\n" +"Save your scene and try again." +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "" +"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake " +"Light' flag is on." +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "Failed creating lightmap images, make sure path is writable." +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "Failed determining lightmap size. Maximum lightmap size too small?" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "" +"Some mesh is invalid. Make sure the UV2 channel values are contained within " +"the [0.0,1.0] square region." +msgstr "" +"Algunha malla é inválida. Asegúrese de que o os valores do canle UV2 están " +"contidos dentro da rexión cadrada ([0.0,1.0], [0.0,1.0])." + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "" +"Godot editor was built without ray tracing support, lightmaps can't be baked." +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "Bake Lightmaps" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "Select lightmap bake file:" +msgstr "" + +#: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Preview" +msgstr "Vista Previa" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "Configurar Axuste de Cuadrícula" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Vertical Guide" +msgstr "Mover Guía Vertical" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Vertical Guide" +msgstr "Crear Guía Vertical" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Remove Vertical Guide" +msgstr "Eliminar Guía Vertical" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Horizontal Guide" +msgstr "Mover Guía Horizontal" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Horizontal Guide" +msgstr "Crear Guía Horizontal" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Remove Horizontal Guide" +msgstr "Eliminar Guía Horizontal" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Horizontal and Vertical Guides" +msgstr "Crear Guías Horizontais e Verticais" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotate %d CanvasItems" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotate CanvasItem \"%s\" to %d degrees" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move CanvasItem \"%s\" Anchor" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Node2D \"%s\" to (%s, %s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Resize Control \"%s\" to (%d, %d)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale %d CanvasItems" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale CanvasItem \"%s\" to (%s, %s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move %d CanvasItems" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move CanvasItem \"%s\" to (%d, %d)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"When active, moving Control nodes changes their anchors instead of their " +"margins." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Arriba á Esquerda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Arriba á Dereita" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Abaixo á Dereita" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Abaixo á Esquerda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "Centro á Esquerda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "Centro Arriba" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "Centro á Dereita" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "Centro Abaixo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "Centro" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "Esquerdo Alto" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Arriba Ancho" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "Dereito Alto" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Abaixo Ancho" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "CentradoV Alto" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "CentradoH Ancho" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "Recta Completa" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Manter Relación de Aspecto" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchors only" +msgstr "Só Áncoras" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors and Margins" +msgstr "Cambiar Áncoras e Marxes" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "Cambiar Áncoras" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"Overrides game camera with editor viewport camera." +msgstr "" +"Substituír a Cámara do Xogo\n" +"Substitue a cámara do xogo pola cámara da Mini-ventá (Viewport) do editor." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock Selected" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Unlock Selected" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Group Selected" +msgstr "Agrupar Selección" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Ungroup Selected" +msgstr "Desagrupar Selección" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "Pegar Pose" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Guides" +msgstr "Limpar Guías" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Custom Bone(s) from Node(s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "Limpar Ósos" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Warning: Children of a container get their position and size determined only " +"by their parent." +msgstr "" +"Aviso: Os nodos fillos dun contedor (Container) teñen determinada a súa " +"posición e tamaño unicamente polo seu padre." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom Reset" +msgstr "Restablecer Zoom" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Select Mode" +msgstr "Elixir Modo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "Arrastrar: Rotar" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "Alt+Arrastrar: Mover" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode" +msgstr "Mover Modo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode" +msgstr "Modo Rotación" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode" +msgstr "Modo Escalado" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" +"Amosa unha lista de obxectos na posición na que se fixo clic\n" +"(O mesmo que usar Alt+Clic Dereito en modo selección)." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "Faga clic para cambiar o pivote de rotación do obxecto." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Ruler Mode" +msgstr "Modo Regra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Toggle smart snapping." +msgstr "Act./Desact. axuste intelixente." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Smart Snap" +msgstr "Usar Axuste Intelixente" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Toggle grid snapping." +msgstr "Act./Desact. axuste de cuadrícula." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Grid Snap" +msgstr "Usar Axuste de Cuadrícula" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snapping Options" +msgstr "Opcións de Axuste de Cuadrícula" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "Empregar Axuste de Rotación" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "Empregar Axuste de Escalado" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "Axuste Relativo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "Empregar Axuste aos Píxeles" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Smart Snapping" +msgstr "Axuste Intelixente" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap..." +msgstr "Configurar Axuste de Cuadrícula..." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Parent" +msgstr "Axustar ao Pai" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Node Anchor" +msgstr "Axustar á Áncora do Nodo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Node Sides" +msgstr "Axustar aos Laterais do Nodo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Node Center" +msgstr "Axustar ao Centro do Nodo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Other Nodes" +msgstr "Axustar a Outros Nodos" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Guides" +msgstr "Axustar as Guías" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "Fixar o obxecto no sitio (non se poderá mover)." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "Liberar o obxecto seleccionado (pode moverse)." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "Asegúrase de que os fillos do obxecto non sexan seleccionables." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "Volve a permitir seleccionar os fillos do obxecto." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton Options" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "Amosar Ósos" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Custom Bone(s) from Node(s)" +msgstr "Crear Óso(s) Personalizados a partir de Nodo(s)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Custom Bones" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "Ver" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Always Show Grid" +msgstr "Sempre Amosar a Cuadrícula" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Helpers" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Rulers" +msgstr "Amosar Regras" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Guides" +msgstr "Amosar Guías" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Origin" +msgstr "Amosar Orixe" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Viewport" +msgstr "Amosar Mini-Ventá (Viewport)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Group And Lock Icons" +msgstr "Amosar Grupo e Bloquear Iconas" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "Centrar Selección" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "Encadrar Selección" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Preview Canvas Scale" +msgstr "Vista Previa da Escala do Lenzo (Canvas)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated or scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" +"Inserción automática de claves cando os obxectos son trasladados, rotados, " +"ou escalados (depenendo da Máscara).\n" +"As chaves só engádense a pistas xa existentes; nunca se crean novas pistas.\n" +"As chaves teñen que insertarse manualmente cando se utiliza por primeira vez." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation Key and Pose Options" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "Copiar Pose" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "Restablecer Pose" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Multiply grid step by 2" +msgstr "Multiplicar Dimensión da Cuadrícula por 2" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Divide grid step by 2" +msgstr "Dividir Dimensión da Cuadrícula por 2" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan View" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Add %s" +msgstr "Engadir %s" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Adding %s..." +msgstr "Engadindo %s..." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Cannot instantiate multiple nodes without root." +msgstr "Non se pode instanciar varios nodos sen un nodo raíz." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "Crear Nodo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "Erro instanciado escena desde %s" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Default Type" +msgstr "Cambiar Tipo por Defecto" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Drag & drop + Shift : Add node as sibling\n" +"Drag & drop + Alt : Change node type" +msgstr "" +"Arrastrar e Soltar + Shift : Engade nodo como irmán\n" +"Arrastrar e Soltar + Alt : Cambiar tipo de nodo" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Polygon3D" +msgstr "" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Edit Poly" +msgstr "Editar Polígono" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "Editar Polígono (Eliminar Punto)" + +#: editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/cpu_particles_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Restart" +msgstr "Reiniciar" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Partículas" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Número de Puntos Xerados:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Solid Pixels" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Border Pixels" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Directed Border Pixels" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +msgid "CPUParticles" +msgstr "CPUParticles" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emission Points From Mesh" +msgstr "" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emission Points From Node" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Flat 0" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Flat 1" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Smoothstep" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Modify Curve Point" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Modify Curve Tangent" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Load Curve Preset" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Add Point" +msgstr "Engadir Punto" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Remove Point" +msgstr "Eliminar Punto" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Left Linear" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Right Linear" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Load Preset" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Remove Curve Point" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Toggle Curve Linear Tangent" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Hold Shift to edit tangents individually" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Right click to add point" +msgstr "" + +#: editor/plugins/gi_probe_editor_plugin.cpp +msgid "Bake GI Probe" +msgstr "" + +#: editor/plugins/gradient_editor_plugin.cpp +msgid "Gradient Edited" +msgstr "" + +#: editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "Elemento %d" + +#: editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "Elementos" + +#: editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Couldn't create a Trimesh collision shape." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Shape" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Can't create a single convex collision shape for the scene root." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Couldn't create a single convex collision shape." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Single Convex Shape" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Can't create multiple convex collision shapes for the scene root." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Couldn't create any collision shapes." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Multiple Convex Shapes" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Contained Mesh is not of type ArrayMesh." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Unwrap failed, mesh may not be manifold?" +msgstr "" +"Fallo no Unwrap de UV. Posiblemente a malla non é unha variedade (é dicir, " +"que a malla non forma unha superficie conexa, contínua, e con dous caras " +"diferenciables). En programas de modelaxe 3D pódese eliminar xeometría que " +"non sexa unha variedade (\"Non Manifold\") fácilmente." + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "No mesh to debug." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Model has no UV in this layer" +msgstr "O modelo non ten UVs nesta capa" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh has not surface to create outlines from!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "Malla" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "" +"Creates a StaticBody and assigns a polygon-based collision shape to it " +"automatically.\n" +"This is the most accurate (but slowest) option for collision detection." +msgstr "" +"Crear un nodo StaticBody e asígnalle automáticamente unha forma física " +"baseada en polígonos.\n" +"Esta é a forma máis precisa (e máis lenta) de detección de colisións." + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "" +"Creates a polygon-based collision shape.\n" +"This is the most accurate (but slowest) option for collision detection." +msgstr "" +"Crea unha formá física baseada en polígonos.\n" +"Esta é a forma máis precisa (pero máis lenta) de detectar colisións." + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Single Convex Collision Sibling" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "" +"Creates a single convex collision shape.\n" +"This is the fastest (but least accurate) option for collision detection." +msgstr "" +"Crea unha única forma física convexa.\n" +"Esta é a maneira más eficiente (pero menos precisa) de detectar colisións." + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Multiple Convex Collision Siblings" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "" +"Creates a polygon-based collision shape.\n" +"This is a performance middle-ground between the two above options." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh..." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "" +"Creates a static outline mesh. The outline mesh will have its normals " +"flipped automatically.\n" +"This can be used instead of the SpatialMaterial Grow property when using " +"that property isn't possible." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "View UV1" +msgstr "Amosar UV1" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "View UV2" +msgstr "Amosar UV2" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Unwrap UV2 for Lightmap/AO" +msgstr "Facer Unwrap do UV2 para Lightmap/AO" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "Depuración do Canle UV" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item" +msgstr "Engadir Elemento" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "Eixe X" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "Eixe Y" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "Eixe Z" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "Encher" + +#: editor/plugins/navigation_polygon_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Convert to CPUParticles" +msgstr "Converter a CPUParticles" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generating Visibility Rect" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generate Visibility Rect" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Can only set point into a ParticlesMaterial process material" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Convert to CPUParticles2D" +msgstr "Converter a CPUParticles2D" + +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generation Time (sec):" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "The geometry's faces don't contain any area." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "The geometry doesn't contain any faces." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "\"%s\" doesn't inherit from Spatial." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "\"%s\" doesn't contain geometry." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "\"%s\" doesn't contain face geometry." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Emission Points:" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Surface Points" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Surface Points+Normal (Directed)" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "Volume" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Emission Source: " +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "A processor material of type 'ParticlesMaterial' is required." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generating AABB" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generate Visibility AABB" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Out-Control from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove In-Control from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Split Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "Seleccionar Puntos" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Left Click: Split Segment (in curve)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "Eliminar Puntos" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp +msgid "Options" +msgstr "Opcións" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Mirror Handle Angles" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Mirror Handle Lengths" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove Out-Control Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove In-Control Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: editor/plugins/physical_bone_plugin.cpp +msgid "Move Joint" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"The skeleton property of the Polygon2D does not point to a Skeleton2D node" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Sync Bones" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"No texture in this polygon.\n" +"Set a texture to be able to edit UV." +msgstr "" +"Non hai unha textura neste polígono.\n" +"Engada unha textura para editar o UV." + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "Crear Mapa UV" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"Polygon 2D has internal vertices, so it can no longer be edited in the " +"viewport." +msgstr "" +"O polígono 2D ten vértices internos, polo que xa non se pode editar na Mini-" +"Ventá (Viewport)." + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Polygon & UV" +msgstr "Crear Polígono e UV" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Internal Vertex" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Remove Internal Vertex" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Invalid Polygon (need 3 different vertices)" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Add Custom Polygon" +msgstr "Engadir Polígono Personalizado" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Remove Custom Polygon" +msgstr "Eliminar Polígono Personalizado" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "Transformar Mapa UV" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Paint Bone Weights" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Open Polygon 2D UV editor." +msgstr "Abrir Editor UV de Polígonos 2D." + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "Editor UV de Polígonos 2D" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV" +msgstr "UV" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Points" +msgstr "Puntos" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygons" +msgstr "Polígonos" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Bones" +msgstr "Ósos" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Points" +msgstr "Mover Puntos" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Command: Rotate" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Command: Scale" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "Ctrl: Rotar" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "Shift+Ctrl: Escalar" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "Mover Polígono" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "Rotar Polígono" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "Escalar Polígono" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create a custom polygon. Enables custom polygon rendering." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"Remove a custom polygon. If none remain, custom polygon rendering is " +"disabled." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Paint weights with specified intensity." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Unpaint weights with specified intensity." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Radius:" +msgstr "Radio:" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Copy Polygon to UV" +msgstr "Copiar Polígono a UV" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Copy UV to Polygon" +msgstr "Copiar UV a Polígono" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "Limpar UV" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Settings" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Snap" +msgstr "Axuste de Cuadrícula" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Enable Snap" +msgstr "Activar Axuste" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid" +msgstr "Cuadrícula" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Show Grid" +msgstr "Amosar Cuadrícula" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Configure Grid:" +msgstr "Configurar Cuadrícula:" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset X:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset Y:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step X:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step Y:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Sync Bones to Polygon" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "Engadir Recurso" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "Renomear Recurso" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "Eliminar Recurso" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "Pegar Recurso" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "Instancia:" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp +#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Type:" +msgstr "Tipo:" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Load Resource" +msgstr "Cargar Recurso" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "AnimationTree has no path set to an AnimationPlayer" +msgstr "" + +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "Path to AnimationPlayer is invalid" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Clear Recent Files" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close and save changes?" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error writing TextFile:" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Could not load file at:" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error saving file!" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error Saving" +msgstr "Erro ao Gardar" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error Importing" +msgstr "Erro ao Importar" + +#: editor/plugins/script_editor_plugin.cpp +msgid "New Text File..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Open File" +msgstr "Abrir Arquivo" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save File As..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "Importar Tema" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "Erro ao gardar" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "%s Class Reference" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find Next" +msgstr "Atopar Seguinte" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find Previous" +msgstr "Atopar Anterior" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Filter scripts" +msgstr "Filtrar scripts" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Toggle alphabetical sorting of the method list." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Filter methods" +msgstr "Filtrar métodos" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Sort" +msgstr "Ordenar" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Move Up" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Move Down" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Next script" +msgstr "Seguinte script" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Previous script" +msgstr "Anterior script" + +#: editor/plugins/script_editor_plugin.cpp +msgid "File" +msgstr "Arquivo" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Open..." +msgstr "Abrir..." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Reopen Closed Script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "Gardar Todo" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Copy Script Path" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "History Previous" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Tema" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Import Theme..." +msgstr "Importar Tema..." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "Volver a Cargar Tema" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "Gardar Tema" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close All" +msgstr "Pechar Todo" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close Docs" +msgstr "Pechar Documentación" + +#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp +msgid "Run" +msgstr "Executar" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Step Into" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Step Over" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Break" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp +#: editor/script_editor_debugger.cpp +msgid "Continue" +msgstr "Continuar" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Debug with External Editor" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Open Godot online documentation." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "Buscar na documentación de referencia." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "Ir ao anterior documento editado." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "Ir ao seguinte documento editado." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Discard" +msgstr "Descartar" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Debugger" +msgstr "Depurador" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Search Results" +msgstr "Resultados de Búsqueda" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Clear Recent Scripts" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Connections to method:" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp +msgid "Source" +msgstr "Fonte" + +#: editor/plugins/script_text_editor.cpp +msgid "Target" +msgstr "Obxectivo" + +#: editor/plugins/script_text_editor.cpp +msgid "" +"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "[Ignore]" +msgstr "[Ignorar]" + +#: editor/plugins/script_text_editor.cpp +msgid "Line" +msgstr "Liña" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Function" +msgstr "Ir a Función" + +#: editor/plugins/script_text_editor.cpp +msgid "Only resources from filesystem can be dropped." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Lookup Symbol" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "Elexir Cor" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Convert Case" +msgstr "Converter Maiús./Minús." + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Uppercase" +msgstr "Maiúscula" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Lowercase" +msgstr "Minúscula" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Capitalize" +msgstr "Capitalizar" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Syntax Highlighter" +msgstr "Marcador de Sintaxe" + +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +msgid "Bookmarks" +msgstr "Marcadores" + +#: editor/plugins/script_text_editor.cpp +msgid "Breakpoints" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +msgid "Go To" +msgstr "Ir a" + +#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp +#: scene/gui/text_edit.cpp +msgid "Cut" +msgstr "Cortar" + +#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp +#: scene/gui/text_edit.cpp +msgid "Select All" +msgstr "Seleccionar Todo" + +#: editor/plugins/script_text_editor.cpp +msgid "Delete Line" +msgstr "Eliminar Liña" + +#: editor/plugins/script_text_editor.cpp +msgid "Indent Left" +msgstr "Sangrado á Esquerda" + +#: editor/plugins/script_text_editor.cpp +msgid "Indent Right" +msgstr "Sangrado á Dereita" + +#: editor/plugins/script_text_editor.cpp +msgid "Toggle Comment" +msgstr "Comentar/Descomentar" + +#: editor/plugins/script_text_editor.cpp +msgid "Fold/Unfold Line" +msgstr "Expandir/Colapsar Liña" + +#: editor/plugins/script_text_editor.cpp +msgid "Fold All Lines" +msgstr "Colapsar Tódalas Liñas" + +#: editor/plugins/script_text_editor.cpp +msgid "Unfold All Lines" +msgstr "Expandir Tódalas Liñas" + +#: editor/plugins/script_text_editor.cpp +msgid "Clone Down" +msgstr "Clonar Liña" + +#: editor/plugins/script_text_editor.cpp +msgid "Complete Symbol" +msgstr "Completar Símbolo" + +#: editor/plugins/script_text_editor.cpp +msgid "Evaluate Selection" +msgstr "Evaluar Selección" + +#: editor/plugins/script_text_editor.cpp +msgid "Trim Trailing Whitespace" +msgstr "Eliminar Espazos ao Final da Liña" + +#: editor/plugins/script_text_editor.cpp +msgid "Convert Indent to Spaces" +msgstr "Convertir Indentación a Espazos" + +#: editor/plugins/script_text_editor.cpp +msgid "Convert Indent to Tabs" +msgstr "Convertir Identación a Tabulacións" + +#: editor/plugins/script_text_editor.cpp +msgid "Auto Indent" +msgstr "Auto Indentar" + +#: editor/plugins/script_text_editor.cpp +msgid "Find in Files..." +msgstr "Buscar en Arquivos.." + +#: editor/plugins/script_text_editor.cpp +msgid "Contextual Help" +msgstr "Axuda Contextual" + +#: editor/plugins/script_text_editor.cpp +msgid "Toggle Bookmark" +msgstr "Act./Desact. Marcapáxinas" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Next Bookmark" +msgstr "Ir ao Seguinte Marcapáxinas" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Previous Bookmark" +msgstr "Ir ao Anterior Marcapáxinas" + +#: editor/plugins/script_text_editor.cpp +msgid "Remove All Bookmarks" +msgstr "Eliminar Tódolos Marcapáxinas" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Function..." +msgstr "Ir a Función..." + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Line..." +msgstr "Ir a Liña..." + +#: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Toggle Breakpoint" +msgstr "Act./Desact. Punto de Interrupción (Breakpoint)" + +#: editor/plugins/script_text_editor.cpp +msgid "Remove All Breakpoints" +msgstr "Eliminar Tódolos Puntos de Interrupción (Breakpoints)" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Next Breakpoint" +msgstr "Ir ao Seguinte Punto de Interrupción" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Previous Breakpoint" +msgstr "Ir ao Anterior Punto de Interrupción" + +#: editor/plugins/shader_editor_plugin.cpp +msgid "" +"This shader has been modified on on disk.\n" +"What action should be taken?" +msgstr "" +"Este shader foi modificado en disco.\n" +"Que acción deberían de tomarse?" + +#: editor/plugins/shader_editor_plugin.cpp +msgid "Shader" +msgstr "Shader" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "This skeleton has no bones, create some children Bone2D nodes." +msgstr "Este esqueleto non ten ósos; crea uns nodos fillo Bone2D." + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Create Rest Pose from Bones" +msgstr "Crear Pose de Repouso a partir dos Ósos" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Set Rest Pose to Bones" +msgstr "Asignar Pose de Repouso aos Ósos" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Skeleton2D" +msgstr "Skeleton2D" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Make Rest Pose (From Bones)" +msgstr "Crear Pose de Repouso (a partir dos Ósos)" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Set Bones to Rest Pose" +msgstr "Asignar Pose de Repouso aos Ósos" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Create physical bones" +msgstr "Crear ósos físicos" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Skeleton" +msgstr "Esqueleto" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Create physical skeleton" +msgstr "Crear esqueleto físico" + +#: editor/plugins/skeleton_ik_editor_plugin.cpp +msgid "Play IK" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "Ortogonal" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "Perspetiva" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling: " +msgstr "Escalado: " + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translating: " +msgstr "Trasladando: " + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "Rotando % graos." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Pitch" +msgstr "Cabeceo" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Yaw" +msgstr "Guiñada" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "Tamaño" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Objects Drawn" +msgstr "Obxectos Debuxados" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Material Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Shader Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Surface Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Draw Calls" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Vertices" +msgstr "Vértices" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "Vista Superior." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "Vista Inferior." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "Inferior" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "Vista Esquerda." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "Esquerda" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "Vista Dereita." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "Dereita" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "Vista Frontal." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "Frontal" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "Vista Traseria." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "Traseira" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Align Transform with View" +msgstr "Aliñar Transformación con Perspectiva" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Align Rotation with View" +msgstr "Aliñar Rotación con Perspectiva" + +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "Non hai un pai ao que instanciarlle un fillo." + +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Esta operación precisa un único nodo seleccionado." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Auto Orthogonal Enabled" +msgstr "Auto Ortogonal Activado" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock View Rotation" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "Mostrar de Forma Normal" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "Mostrar Malla" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "Mostrar Zonas Redebuxadas (Overdraw)" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Unshaded" +msgstr "Mostrar Sen Sombreado" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Environment" +msgstr "Amosar Entorno" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Gizmos" +msgstr "Amosar Gizmos" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Information" +msgstr "Amosar Información" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View FPS" +msgstr "Ver FPS" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Half Resolution" +msgstr "Resolución á Metade" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "Oínte de Son" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Enable Doppler" +msgstr "Activar Efecto Doppler" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Cinematic Preview" +msgstr "Vista Previa Cinemática" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Not available when using the GLES2 renderer." +msgstr "Non dispoñible cando se está usando o renderizador GLES2." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Left" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Right" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Forward" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Backwards" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Up" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Down" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Speed Modifier" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Slow Modifier" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Rotation Locked" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Note: The FPS value displayed is the editor's framerate.\n" +"It cannot be used as a reliable indication of in-game performance." +msgstr "" +"Nota: o valor dos FPS corresponde aos fotogramas por segundo do editor.\n" +"Non pode usarse como unha forma fiable de medir o rendemento do xogo." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Click to toggle between visibility states.\n" +"\n" +"Open eye: Gizmo is visible.\n" +"Closed eye: Gizmo is hidden.\n" +"Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")." +msgstr "" +"Faga clic para cambiar entre estados de visibilidade.\n" +"\n" +"Ollo aberto: Gizmo visible.\n" +"Ollo pechado: Gizmo oculto.\n" +"Ollo medio aberto, medio pechado: Gizmo visible ao través de superficies " +"opacas (\"raios x\")." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Nodes To Floor" +msgstr "Axustar Nodos ao Chan" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Couldn't find a solid floor to snap the selection to." +msgstr "Non se puido encontrar chan sólido no que poder axustar a selección." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Drag: Rotate\n" +"Alt+Drag: Move\n" +"Alt+RMB: Depth list selection" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Use Local Space" +msgstr "Usar Espazo Local" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "Usar Axuste de Cuadrícula" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View" +msgstr "Vista Inferior" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Top View" +msgstr "Vista Superior" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View" +msgstr "Vista Traseira" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front View" +msgstr "Vista Frontal" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left View" +msgstr "Vista Esquerda" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right View" +msgstr "Vista Dereita" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Switch Perspective/Orthogonal View" +msgstr "Vista Perspectiva/Ortogonal" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Insert Animation Key" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Selection" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Toggle Freelook" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform" +msgstr "Transformación" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Object to Floor" +msgstr "Axustar Obxecto ao Chan" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog..." +msgstr "Aplicar Transformación..." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "1 Ventá" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "2 Ventás" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "2 Ventás (Alt)" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "3 Ventás" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "3 Ventás (Alt)" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "4 Ventás" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "Amosar Orixe" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "Amosar Cuadrícula" + +#: editor/plugins/spatial_editor_plugin.cpp +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Settings..." +msgstr "Axustes..." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "Configuración de Axuste" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "Axuste de Translación:" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "Axuste de Rotación (graos):" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "Axuste de Escalado (%):" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "Axustes de Visión" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "Campo de Visión (graos):" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "Plano Próximo:" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "Plano Afastado:" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "Cambio de Transformación" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "Trasladar:" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "Rotar (graos):" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "Escalar (Razón):" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "Tipo de Transformación" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "Anterior (Pre)" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "Posterior (Post)" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Nameless gizmo" +msgstr "Gizmo sen nome" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "Crear Mesh2D" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "Vista Previa de Mesh2D" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "Crear Polygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "Vista Previa Polygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite is empty!" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Can't convert a sprite using animation frames to mesh." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't replace by mesh." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "Convertir a Polygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Simplification: " +msgstr "Simplificación: " + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Shrink (Pixels): " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Grow (Pixels): " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Update Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Settings:" +msgstr "Axustes:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "No Frames Selected" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add %d Frame(s)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "(baleiro)" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Move Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations:" +msgstr "Animacións:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed:" +msgstr "Velocidade:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "Bucle" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add a Texture from File" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frames from a Sprite Sheet" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Move (Before)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Move (After)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Select Frames" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Horizontal:" +msgstr "Horizontal:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Vertical:" +msgstr "Vertical:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Select/Clear All Frames" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Create Frames from Sprite Sheet" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Set Region Rect" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Set Margin" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap Mode:" +msgstr "Modo de Axuste:" + +#: editor/plugins/texture_region_editor_plugin.cpp +#: scene/resources/visual_shader.cpp +msgid "None" +msgstr "Ningún" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Pixel Snap" +msgstr "Axustar aos Píxeles" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Snap" +msgstr "Axuste de Cuadrícula" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Auto Slice" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Offset:" +msgstr "Offset:" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Step:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Sep.:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "TextureRegion" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove All Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp +msgid "Remove All" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Edit Theme" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme editing menu." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Template" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Create From Current Editor Theme" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Toggle Button" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Disabled Button" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Disabled Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Radio Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Checked Radio Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Named Sep." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Submenu" +msgstr "Submenú" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Subitem 1" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Subitem 2" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "Ten" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "Moitas" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Disabled LineEdit" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Editable Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Subtree" +msgstr "Subárbore" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Has,Many,Options" +msgstr "Ten,Moitas,Opcións" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Icon" +msgstr "Icona" + +#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp +msgid "Style" +msgstr "Estilo" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "Fonte" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "Cor" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase Selection" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Fix Invalid Tiles" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cut Selection" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Line Draw" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rectangle Paint" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket Fill" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Find Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "Transpoñer" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Disable Autotile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Enable Priority" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Filter tiles" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Give a TileSet resource to this TileMap to use its tiles." +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "" +"Shift+LMB: Line Draw\n" +"Shift+Command+LMB: Rectangle Paint" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "" +"Shift+LMB: Line Draw\n" +"Shift+Ctrl+LMB: Rectangle Paint" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate Left" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate Right" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Flip Horizontally" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Flip Vertically" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Clear Transform" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Texture(s) to TileSet." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove selected Texture from TileSet." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Next Coordinate" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select the next shape, subtile, or Tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Previous Coordinate" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select the previous shape, subtile, or Tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "Rexión" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "Colisión" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "Oclusión" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "Navegación" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "Máscara de Bits" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Prioridade" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Icon Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Copy bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Paste bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Erase bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create a new rectangle." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create a new polygon." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete Selected Shape" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Keep polygon inside region Rect." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Enable snap and show grid (configurable via the Inspector)." +msgstr "" +"Activar axuste de cuadrícula e amosar cuadrícula (configurable no inspector)." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Display Tile Names (Hold Alt Key)" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Add or select a texture on the left panel to edit the tiles bound to it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove selected texture? This will remove all tiles which use it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "You haven't selected a texture to remove." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene? This will overwrite all current tiles." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Texture" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "%s file(s) were not added because was already on the list." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Drag handles to edit Rect.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete selected Rect." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select current edited sub-tile.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete polygon." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: Set bit on.\n" +"RMB: Set bit off.\n" +"Shift+LMB: Set wildcard bit.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to change its priority.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to change its z index.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Set Tile Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Set Tile Icon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Navigation Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Paste Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Clear Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Polygon Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Polygon Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Navigation Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "This property can't be changed." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "TileSet" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "No VCS addons are available." +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Error" +msgstr "Erro" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "No files added to stage" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Commit" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "VCS Addon is not initialized" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Version Control System" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Initialize" +msgstr "Inicializar" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Staging area" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Detect new changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Changes" +msgstr "Cambios" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Modified" +msgstr "Modificado" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Renamed" +msgstr "Renomeado" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Deleted" +msgstr "Eliminado" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Typechange" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Stage Selected" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Stage All" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Commit Changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Status" +msgstr "Estado" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "View file diffs before committing them to the latest version" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "No file diff is active" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Detect changes in file diff" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "(GLES3 only)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add Output" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar" +msgstr "Escalar" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector" +msgstr "Vector" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Boolean" +msgstr "Booleano" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Sampler" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add input port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add output port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change input port type" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change output port type" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change input port name" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change output port name" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Remove input port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Remove output port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Set expression" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Resize VisualShader node" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Set Uniform Name" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Set Input Default Port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add Node to Visual Shader" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Node(s) Moved" +msgstr "Nodo(s) Movido(s)" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Duplicate Nodes" +msgstr "Duplicar Nodos" + +#: editor/plugins/visual_shader_editor_plugin.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" +msgstr "Pegar Nodos" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Nodes" +msgstr "Eliminar Nodos" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Visual Shader Input Type Changed" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "UniformRef Name Changed" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vertex" +msgstr "Vertex" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Fragment" +msgstr "Fragment" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Light" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Show resulted shader code." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Create Shader Node" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Grayscale function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts HSV vector to RGB equivalent." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts RGB vector to HSV equivalent." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Sepia function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Burn operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Darken operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Difference operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Dodge operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "HardLight operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Lighten operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Overlay operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Screen operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "SoftLight operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the boolean result of the %s comparison between two parameters." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Equal (==)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Greater Than (>)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Greater Than or Equal (>=)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns an associated vector if the provided scalars are equal, greater or " +"less." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the boolean result of the comparison between INF and a scalar " +"parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the boolean result of the comparison between NaN and a scalar " +"parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Less Than (<)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Less Than or Equal (<=)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Not Equal (!=)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns an associated vector if the provided boolean value is true or false." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns an associated scalar if the provided boolean value is true or false." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the boolean result of the comparison between two parameters." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the boolean result of the comparison between INF (or NaN) and a " +"scalar parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Boolean constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Boolean uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for all shader modes." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Input parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for vertex and fragment shader modes." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for fragment and light shader modes." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for fragment shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for light shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for vertex shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for vertex and fragment shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "E constant (2.718282). Represents the base of the natural logarithm." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Epsilon constant (0.00001). Smallest possible scalar number." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Phi constant (1.618034). Golden ratio." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Pi/4 constant (0.785398) or 45 degrees." +msgstr "Constante Pi/4 (0.785398), ou 45 graos." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Pi/2 constant (1.570796) or 90 degrees." +msgstr "Constante Pi/2 (1.570796), ou 90 graos." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Pi constant (3.141593) or 180 degrees." +msgstr "Constante Pi (3.141593), ou 180 graos." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Tau constant (6.283185) or 360 degrees." +msgstr "Constante Tau (6.283185), ou 360 graos." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Sqrt2 constant (1.414214). Square root of 2." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the absolute value of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse hyperbolic cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse hyperbolic sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-tangent of the parameters." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse hyperbolic tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Finds the nearest integer that is greater than or equal to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Constrains a value to lie between two further values." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the hyperbolic cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts a quantity in radians to degrees." +msgstr "Converte unha cantidade de radiáns a graos." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Base-e Exponential." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Base-2 Exponential." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the nearest integer less than or equal to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Computes the fractional part of the argument." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse of the square root of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Natural logarithm." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Base-2 logarithm." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the greater of two values." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the lesser of two values." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Linear interpolation between two scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the opposite value of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 - scalar" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the value of the first parameter raised to the power of the second." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts a quantity in degrees to radians." +msgstr "Converte unha cantidade de graos a radiáns." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 / scalar" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the nearest integer to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the nearest even integer to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Clamps the value between 0.0 and 1.0." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Extracts the sign of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the hyperbolic sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the square root of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if x is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " +"using Hermite polynomials." +msgstr "" +"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n" +"\n" +"Devolve 0.0 se 'x' é menor que 'edge0' e 1.0 se x é maior que 'edge1'. En " +"caso contrario devólvese un valor interpolado entre 0.0 e 1.0 usando " +"polinomios de Hermite." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Step function( scalar(edge), scalar(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" +"Step function( scalar(edge), scalar(x) ).\n" +"\n" +"Devolve 0.0 se 'x' e menor que 'edge'; e 1.0 en caso contrario." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the hyperbolic tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the truncated value of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Adds scalar to scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Divides scalar by scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies scalar by scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the remainder of the two scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Subtracts scalar from scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Perform the cubic texture lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Perform the texture lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Cubic texture uniform lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "2D texture uniform lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "2D texture uniform lookup with triplanar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Calculate the outer product of a pair of vectors.\n" +"\n" +"OuterProduct treats the first parameter 'c' as a column vector (matrix with " +"one column) and the second parameter 'r' as a row vector (matrix with one " +"row) and does a linear algebraic matrix multiply 'c * r', yielding a matrix " +"whose number of rows is the number of components in 'c' and whose number of " +"columns is the number of components in 'r'." +msgstr "" +"Calcula o produto exterior dun par de vectores.\n" +"\n" +"OuterProduct trata o primeiro parámetro 'c' coma un vector columna (matriz " +"con unha soa columna), e o segundo parámetro 'r' coma un vector fila (matriz " +"con unha soa fila), e fai a multiplicación alxebráica 'c * r'. Esto devolve " +"unha matriz cun número de filas igual ao número de compoñentes en 'c', e cun " +"número de columnas igual ao número de compoñentes en 'r'." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Composes transform from four vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Decomposes transform to four vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the determinant of a transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the inverse of a transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the transpose of a transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies transform by transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies vector by transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Composes vector from three scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Decomposes vector to three scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the cross product of two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the distance between two points." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the dot product of two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the vector that points in the same direction as a reference vector. " +"The function has three vector parameters : N, the vector to orient, I, the " +"incident vector, and Nref, the reference vector. If the dot product of I and " +"Nref is smaller than zero the return value is N. Otherwise -N is returned." +msgstr "" +"Devolve o vector que ten a mesma dirección que o vector de referencia. A " +"función ten tres vector como parámetros: N, o vector a orientar; I, o vector " +"incidente; e Nref, o vector de referencia. Se o produto escalar de I e Nref " +"é menor que cero (forman un ángulo maior que 90 graos) entón devolve N. En " +"caso contrario devolve -N." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the length of a vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Linear interpolation between two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Linear interpolation between two vectors using scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the normalize product of vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 - vector" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 / vector" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the vector that points in the direction of reflection ( a : incident " +"vector, b : normal vector )." +msgstr "" +"Devolve o vector que apunta na dirección de reflexo ( a : vector incidente, " +"b : vector normal)." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the vector that points in the direction of refraction." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " +"using Hermite polynomials." +msgstr "" +"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n" +"\n" +"Devolve 0.0 se 'x' é menor que 'edge0' e 1.0 se x é maior que 'edge1'. En " +"caso contrario devólvese un valor interpolado entre 0.0 e 1.0 usando " +"polinomios de Hermite." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " +"using Hermite polynomials." +msgstr "" +"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n" +"\n" +"Devolve 0.0 se 'x' é menor que 'edge0' e 1.0 se x é maior que 'edge1'. En " +"caso contrario devólvese un valor interpolado entre 0.0 e 1.0 usando " +"polinomios de Hermite." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Step function( vector(edge), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" +"Step function( vector(edge), vector(x) ).\n" +"\n" +"Devolve 0.0 se 'x' e menor que 'edge'; e 1.0 en caso contrario." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Step function( scalar(edge), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" +"Step function( scalar(edge), vector(x) ).\n" +"\n" +"Devolve 0.0 se 'x' e menor que 'edge'; e 1.0 en caso contrario." + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Adds vector to vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Divides vector by vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies vector by vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the remainder of the two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Subtracts vector from vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Custom Godot Shader Language expression, with custom amount of input and " +"output ports. This is a direct injection of code into the vertex/fragment/" +"light function, do not use it to write the function declarations inside." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns falloff based on the dot product of surface normal and view " +"direction of camera (pass associated inputs to it)." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Custom Godot Shader Language expression, which is placed on top of the " +"resulted shader. You can place various function definitions inside and call " +"it later in the Expressions. You can also declare varyings, uniforms and " +"constants." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "A reference to an existing uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "(Fragment/Light mode only) Scalar derivative function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "(Fragment/Light mode only) Vector derivative function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Vector) Derivative in 'x' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Scalar) Derivative in 'x' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Vector) Derivative in 'y' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Scalar) Derivative in 'y' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and " +"'y'." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and " +"'y'." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "VisualShader" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Edit Visual Property" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Visual Shader Mode Changed" +msgstr "" + +#: editor/project_export.cpp +msgid "Runnable" +msgstr "Executable" + +#: editor/project_export.cpp +msgid "Delete preset '%s'?" +msgstr "Eliminar axustes de exportación '%s'?" + +#: editor/project_export.cpp +msgid "" +"Failed to export the project for platform '%s'.\n" +"Export templates seem to be missing or invalid." +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Failed to export the project for platform '%s'.\n" +"This might be due to a configuration issue in the export preset or your " +"export settings." +msgstr "" +"Fallou a exportación do proxecto á plataforma '%s'.\n" +"Esto pode deberse a un problema cos axustes de exportación." + +#: editor/project_export.cpp +msgid "Release" +msgstr "" + +#: editor/project_export.cpp +msgid "Exporting All" +msgstr "" + +#: editor/project_export.cpp +msgid "The given export path doesn't exist:" +msgstr "" + +#: editor/project_export.cpp +msgid "Export templates for this platform are missing/corrupted:" +msgstr "" + +#: editor/project_export.cpp +msgid "Presets" +msgstr "Axustes de Exportación" + +#: editor/project_export.cpp editor/project_settings_editor.cpp +msgid "Add..." +msgstr "Engadir..." + +#: editor/project_export.cpp +msgid "" +"If checked, the preset will be available for use in one-click deploy.\n" +"Only one preset per platform may be marked as runnable." +msgstr "" +"Ao estar activado, estes axustes de exportación estarán dispoñibles para o " +"usar co despregue dun só clic.\n" +"Só uns axustes de exportación por plataforma poden marcarse como executables." + +#: editor/project_export.cpp +msgid "Export Path" +msgstr "" + +#: editor/project_export.cpp +msgid "Resources" +msgstr "Recursos" + +#: editor/project_export.cpp +msgid "Export all resources in the project" +msgstr "Exportar tódolos recursos no proxecto" + +#: editor/project_export.cpp +msgid "Export selected scenes (and dependencies)" +msgstr "" + +#: editor/project_export.cpp +msgid "Export selected resources (and dependencies)" +msgstr "" + +#: editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: editor/project_export.cpp +msgid "Resources to export:" +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Filters to export non-resource files/folders\n" +"(comma-separated, e.g: *.json, *.txt, docs/*)" +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Filters to exclude files/folders from project\n" +"(comma-separated, e.g: *.json, *.txt, docs/*)" +msgstr "" +"Filtros para excluír arquivos/cartafois de proxectos\n" +"(separados por coma; exemplo: *json, *.txt, docs*)" + +#: editor/project_export.cpp +msgid "Features" +msgstr "Características" + +#: editor/project_export.cpp +msgid "Custom (comma-separated):" +msgstr "" + +#: editor/project_export.cpp +msgid "Feature List:" +msgstr "" + +#: editor/project_export.cpp +msgid "Script" +msgstr "Script" + +#: editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: editor/project_export.cpp +msgid "Text" +msgstr "Texto" + +#: editor/project_export.cpp +msgid "Compiled" +msgstr "Compilado" + +#: editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: editor/project_export.cpp +msgid "Invalid Encryption Key (must be 64 characters long)" +msgstr "" + +#: editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: editor/project_export.cpp +msgid "Export Project" +msgstr "Exportar Proxecto" + +#: editor/project_export.cpp +msgid "Export mode?" +msgstr "" + +#: editor/project_export.cpp +msgid "Export All" +msgstr "" + +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + +#: editor/project_export.cpp +msgid "Export templates for this platform are missing:" +msgstr "" + +#: editor/project_export.cpp +msgid "Manage Export Templates" +msgstr "" + +#: editor/project_export.cpp +msgid "Export With Debug" +msgstr "" + +#: editor/project_manager.cpp +msgid "The path specified doesn't exist." +msgstr "" + +#: editor/project_manager.cpp +msgid "Error opening package file (it's not in ZIP format)." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file." +msgstr "" +"O arquivo de proxecto '.zip' non é válido; non conteñe ningún arquivo de " +"configuración 'project.godot'." + +#: editor/project_manager.cpp +msgid "Please choose an empty folder." +msgstr "" + +#: editor/project_manager.cpp +msgid "Please choose a \"project.godot\" or \".zip\" file." +msgstr "Por favor, elixa un arquivo de tipo 'project.godot' ou '.zip'." + +#: editor/project_manager.cpp +msgid "This directory already contains a Godot project." +msgstr "O directorio xa contén un proxecto Godot." + +#: editor/project_manager.cpp +msgid "New Game Project" +msgstr "Novo Proxecto de Xogo" + +#: editor/project_manager.cpp +msgid "Imported Project" +msgstr "Proxecto Importado" + +#: editor/project_manager.cpp +msgid "Invalid Project Name." +msgstr "Nome de Proxecto Inválido." + +#: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "" + +#: editor/project_manager.cpp +msgid "There is already a folder in this path with the specified name." +msgstr "" + +#: editor/project_manager.cpp +msgid "It would be a good idea to name your project." +msgstr "Sería unha boa idea nomear o teu proxecto." + +#: editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "A ruta ao proxecto non é valida. Cambiaches algo?" + +#: editor/project_manager.cpp +msgid "" +"Couldn't load project.godot in project path (error %d). It may be missing or " +"corrupted." +msgstr "" +"Non se pudo cargar o arquivo de configuración 'project.godot' na ruta do " +"proxecto (erro %d). Pode ser que o arquivo non exista; ou que esté " +"corrompido." + +#: editor/project_manager.cpp +msgid "Couldn't edit project.godot in project path." +msgstr "Non se pudo editar o arquivo 'project.godot' na ruta do proxecto." + +#: editor/project_manager.cpp +msgid "Couldn't create project.godot in project path." +msgstr "Non se pudo crear o arquivo 'project.godot' na ruta do proxecto." + +#: editor/project_manager.cpp +msgid "Rename Project" +msgstr "Renomear Proxecto" + +#: editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "Importar Proxecto Existente" + +#: editor/project_manager.cpp +msgid "Import & Edit" +msgstr "Importar e Editar" + +#: editor/project_manager.cpp +msgid "Create New Project" +msgstr "Crear Novo Proxecto" + +#: editor/project_manager.cpp +msgid "Create & Edit" +msgstr "Crear e Editar" + +#: editor/project_manager.cpp +msgid "Install Project:" +msgstr "Instalar Proxecto:" + +#: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "Instalar e Editar" + +#: editor/project_manager.cpp +msgid "Project Name:" +msgstr "Nome do Proxecto:" + +#: editor/project_manager.cpp +msgid "Project Path:" +msgstr "Ruta do Proxecto:" + +#: editor/project_manager.cpp +msgid "Project Installation Path:" +msgstr "Ruta de Instalación do Proxecto:" + +#: editor/project_manager.cpp +msgid "Renderer:" +msgstr "Renderizador:" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "Not supported by your GPU drivers." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "OpenGL ES 2.0" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "Proxecto Sen Nome" + +#: editor/project_manager.cpp +msgid "Missing Project" +msgstr "Proxecto Faltante" + +#: editor/project_manager.cpp +msgid "Error: Project is missing on the filesystem." +msgstr "Erro: O proxecto non se pode encontrar no sistema de arquivos." + +#: editor/project_manager.cpp +msgid "Can't open project at '%s'." +msgstr "Non se pode abrir proxecto en '%s'." + +#: editor/project_manager.cpp +msgid "Are you sure to open more than one project?" +msgstr "Está seguro de que quere abrir máis dun proxecto?" + +#: editor/project_manager.cpp +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You won't be able to open the project with previous versions of the " +"engine anymore." +msgstr "" +"O arquivo de configuración do seguinte proxecto non especifica a versión de " +"Godot ca cal foi creado.\n" +"\n" +"%s\n" +"\n" +"Se o abres o arquivo de configuración será convertido ao formato utilizado " +"na versión actual de Godot.\n" +"Aviso: Xa non poderás volver a abrir este proxecto con versións anteriores " +"de Godot." + +#: editor/project_manager.cpp +msgid "" +"The following project settings file was generated by an older engine " +"version, and needs to be converted for this version:\n" +"\n" +"%s\n" +"\n" +"Do you want to convert it?\n" +"Warning: You won't be able to open the project with previous versions of the " +"engine anymore." +msgstr "" +"O arquivo de configuración do seguinte proxecto foi xerado por unha versión " +"antiga de Godot, e é necesario convertelo á versión actual:\n" +"\n" +"%s\n" +"\n" +"Queres convertelo?\n" +"Aviso: Xa non poderás abrir o proxecto con versións anteriores de Godot." + +#: editor/project_manager.cpp +msgid "" +"The project settings were created by a newer engine version, whose settings " +"are not compatible with this version." +msgstr "" +"A configuración do proxecto foi creada por versións máis novas de Godot; " +"facéndoa incompatible con esta versión." + +#: editor/project_manager.cpp +msgid "" +"Can't run project: no main scene defined.\n" +"Please edit the project and set the main scene in the Project Settings under " +"the \"Application\" category." +msgstr "" +"Non se pode executar o proxecto: non hai unha escena principal definida.\n" +"Por favor, selecciona unha escena principal en \"Configuración do Proxecto" +"\", na categoría \"Aplicación\"." + +#: editor/project_manager.cpp +msgid "" +"Can't run project: Assets need to be imported.\n" +"Please edit the project to trigger the initial import." +msgstr "" + +#: editor/project_manager.cpp +msgid "Are you sure to run %d projects at once?" +msgstr "Seguro que queres executar %d proxectos ao mesmo tempo?" + +#: editor/project_manager.cpp +msgid "" +"Remove %d projects from the list?\n" +"The project folders' contents won't be modified." +msgstr "" +"Eliminar %d proxectos da lista?\n" +"Os contidos da carpeta de proxectos non serán modificados." + +#: editor/project_manager.cpp +msgid "" +"Remove this project from the list?\n" +"The project folder's contents won't be modified." +msgstr "" +"Eliminar este proxecto da lista?\n" +"Os contidos da carpeta de proxectos non serán modificados." + +#: editor/project_manager.cpp +msgid "" +"Remove all missing projects from the list?\n" +"The project folders' contents won't be modified." +msgstr "" +"Eliminar todos os proxectos faltantes da lista?\n" +"Os contidos da carpeta de proxectos non serán modificados." + +#: editor/project_manager.cpp +msgid "" +"Language changed.\n" +"The interface will update after restarting the editor or project manager." +msgstr "" +"Linguaxe cambiada.\n" +"A interface actualizarase despois de reiniciar o editor ou administrador de " +"proxectos." + +#: editor/project_manager.cpp +msgid "" +"Are you sure to scan %s folders for existing Godot projects?\n" +"This could take a while." +msgstr "" +"Seguro que quere escanear proxectos de Godot en %s cartafois?\n" +"Esto podería demorarse un tempo." + +#. TRANSLATORS: This refers to the application where users manage their Godot projects. +#: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Administrador de Proxectos" + +#: editor/project_manager.cpp +msgid "Projects" +msgstr "Proxectos" + +#: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "" +"Examinando arquivos,\n" +"Por favor, espere..." + +#: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Derradeira Modificación" + +#: editor/project_manager.cpp +msgid "Scan" +msgstr "Escanear" + +#: editor/project_manager.cpp +msgid "Select a Folder to Scan" +msgstr "Seleccionar un Cartafol para Escanear" + +#: editor/project_manager.cpp +msgid "New Project" +msgstr "Novo Proxecto" + +#: editor/project_manager.cpp +msgid "Remove Missing" +msgstr "Eliminar Faltantes" + +#: editor/project_manager.cpp +msgid "Templates" +msgstr "Proxectos Modelo" + +#: editor/project_manager.cpp +msgid "Restart Now" +msgstr "Reiniciar Agora" + +#: editor/project_manager.cpp +msgid "Can't run project" +msgstr "Non se pode executar proxecto" + +#: editor/project_manager.cpp +msgid "" +"You currently don't have any projects.\n" +"Would you like to explore official example projects in the Asset Library?" +msgstr "" +"Actualmente non tes ningún proxecto.\n" +"Gustaríalle buscar proxectos de exemplo oficiais na biblioteca de Assets?" + +#: editor/project_manager.cpp +msgid "" +"The search box filters projects by name and last path component.\n" +"To filter projects by name and full path, the query must contain at least " +"one `/` character." +msgstr "" +"A barra de búsqueda filtra os proxectos por nome e último compoñente da súa " +"ruta.\n" +"Se quere filtrar proxectos por nome e ruta completa, a consulta debe conter " +"polo menos un carácter '/'." + +#: editor/project_settings_editor.cpp +msgid "Key " +msgstr "Botón: " + +#: editor/project_settings_editor.cpp +msgid "Joy Button" +msgstr "Botón Joystick" + +#: editor/project_settings_editor.cpp +msgid "Joy Axis" +msgstr "Eixe Joystick" + +#: editor/project_settings_editor.cpp +msgid "Mouse Button" +msgstr "Botón do Rato" + +#: editor/project_settings_editor.cpp +msgid "" +"Invalid action name. it cannot be empty nor contain '/', ':', '=', '\\' or " +"'\"'" +msgstr "" +"Nome de acción inválido. O nome non pode estar baleiro, nin conter '/', ':', " +"'=', '\\' ou '\"'" + +#: editor/project_settings_editor.cpp +msgid "An action with the name '%s' already exists." +msgstr "Xa existe unha acción co nome '%s'." + +#: editor/project_settings_editor.cpp +msgid "Rename Input Action Event" +msgstr "Renomear Evento de Entrada" + +#: editor/project_settings_editor.cpp +msgid "Change Action deadzone" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Input Action Event" +msgstr "Engadir Evento de Entrada" + +#: editor/project_settings_editor.cpp +msgid "All Devices" +msgstr "Tódolos Dispositivos" + +#: editor/project_settings_editor.cpp +msgid "Device" +msgstr "Dispositivo" + +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "Press a Key..." +msgstr "Pulse algún botón..." + +#: editor/project_settings_editor.cpp +msgid "Mouse Button Index:" +msgstr "Índice do Botón do Rato:" + +#: editor/project_settings_editor.cpp +msgid "Left Button" +msgstr "Botón Esquerdo" + +#: editor/project_settings_editor.cpp +msgid "Right Button" +msgstr "Botón Dereito" + +#: editor/project_settings_editor.cpp +msgid "Middle Button" +msgstr "Botón Central" + +#: editor/project_settings_editor.cpp +msgid "Wheel Up Button" +msgstr "Mover Roda cara Arriba" + +#: editor/project_settings_editor.cpp +msgid "Wheel Down Button" +msgstr "Mover Roda cara Abaixo" + +#: editor/project_settings_editor.cpp +msgid "Wheel Left Button" +msgstr "Mover Roda cara a Esquerda" + +#: editor/project_settings_editor.cpp +msgid "Wheel Right Button" +msgstr "Mover Roda cara a Dereita" + +#: editor/project_settings_editor.cpp +msgid "X Button 1" +msgstr "Botón X 1" + +#: editor/project_settings_editor.cpp +msgid "X Button 2" +msgstr "Botón X 2" + +#: editor/project_settings_editor.cpp +msgid "Joypad Axis Index:" +msgstr "Índice do Eixe do Joystick:" + +#: editor/project_settings_editor.cpp +msgid "Axis" +msgstr "Eixe" + +#: editor/project_settings_editor.cpp +msgid "Joypad Button Index:" +msgstr "Índice do Botón do Joystick:" + +#: editor/project_settings_editor.cpp +msgid "Erase Input Action" +msgstr "Eliminar Acción de Entrada" + +#: editor/project_settings_editor.cpp +msgid "Erase Input Action Event" +msgstr "Eliminar Evento de Entrada" + +#: editor/project_settings_editor.cpp +msgid "Add Event" +msgstr "Engadir Evento" + +#: editor/project_settings_editor.cpp +msgid "Button" +msgstr "Botón" + +#: editor/project_settings_editor.cpp +msgid "Left Button." +msgstr "Botón Esquerdo." + +#: editor/project_settings_editor.cpp +msgid "Right Button." +msgstr "Botón Dereito." + +#: editor/project_settings_editor.cpp +msgid "Middle Button." +msgstr "Botón Central." + +#: editor/project_settings_editor.cpp +msgid "Wheel Up." +msgstr "Roda cara Arriba." + +#: editor/project_settings_editor.cpp +msgid "Wheel Down." +msgstr "Roda cara Abaixo." + +#: editor/project_settings_editor.cpp +msgid "Add Global Property" +msgstr "Engadir Propiedade Global" + +#: editor/project_settings_editor.cpp +msgid "Select a setting item first!" +msgstr "Primeiro seleccione un elemento!" + +#: editor/project_settings_editor.cpp +msgid "No property '%s' exists." +msgstr "Non existe a propiedade '%s'." + +#: editor/project_settings_editor.cpp +msgid "Setting '%s' is internal, and it can't be deleted." +msgstr "A propiedade '%s' é interna, e non pode ser eliminada." + +#: editor/project_settings_editor.cpp +msgid "Delete Item" +msgstr "Eliminar Elemento" + +#: editor/project_settings_editor.cpp +msgid "" +"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " +"'\"'." +msgstr "" +"Nome de acción inválido. Non pode estar baleiro, nin pode conter '/', ':', " +"'=', '\\' ou '\"'." + +#: editor/project_settings_editor.cpp +msgid "Add Input Action" +msgstr "Engadir Acción de Entrada" + +#: editor/project_settings_editor.cpp +msgid "Error saving settings." +msgstr "Erro gardando os axustes." + +#: editor/project_settings_editor.cpp +msgid "Settings saved OK." +msgstr "Axustes gardados correctamente." + +#: editor/project_settings_editor.cpp +msgid "Moved Input Action Event" +msgstr "Evento de Entrada Movido" + +#: editor/project_settings_editor.cpp +msgid "Override for Feature" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Translation" +msgstr "Engadir Tradución" + +#: editor/project_settings_editor.cpp +msgid "Remove Translation" +msgstr "Eliminar Tradución" + +#: editor/project_settings_editor.cpp +msgid "Add Remapped Path" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Changed Locale Filter" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Changed Locale Filter Mode" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Project Settings (project.godot)" +msgstr "Configuración do Proxecto (project.godot)" + +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "General" +msgstr "Xeral" + +#: editor/project_settings_editor.cpp +msgid "Override For..." +msgstr "" + +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "The editor must be restarted for changes to take effect." +msgstr "O editor ten que reiniciarse para que os cambios teñan efecto." + +#: editor/project_settings_editor.cpp +msgid "Input Map" +msgstr "Mapeado de Entradas" + +#: editor/project_settings_editor.cpp +msgid "Action:" +msgstr "Acción:" + +#: editor/project_settings_editor.cpp +msgid "Action" +msgstr "Acción" + +#: editor/project_settings_editor.cpp +msgid "Deadzone" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Device:" +msgstr "Dispositivo:" + +#: editor/project_settings_editor.cpp +msgid "Index:" +msgstr "Índice:" + +#: editor/project_settings_editor.cpp +msgid "Localization" +msgstr "Linguaxe" + +#: editor/project_settings_editor.cpp +msgid "Translations" +msgstr "Traducións" + +#: editor/project_settings_editor.cpp +msgid "Translations:" +msgstr "Traducións:" + +#: editor/project_settings_editor.cpp +msgid "Remaps" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Resources:" +msgstr "Recursos:" + +#: editor/project_settings_editor.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Locale" +msgstr "Linguaxe" + +#: editor/project_settings_editor.cpp +msgid "Locales Filter" +msgstr "Filtrar Linguaxes" + +#: editor/project_settings_editor.cpp +msgid "Show All Locales" +msgstr "Amosar Tódolos Linguaxes" + +#: editor/project_settings_editor.cpp +msgid "Show Selected Locales Only" +msgstr "Amosar só os Linguaxes Seleccionados" + +#: editor/project_settings_editor.cpp +msgid "Filter mode:" +msgstr "Modo de Filtrado:" + +#: editor/project_settings_editor.cpp +msgid "Locales:" +msgstr "Linguaxes:" + +#: editor/project_settings_editor.cpp +msgid "AutoLoad" +msgstr "AutoCargador" + +#: editor/project_settings_editor.cpp +msgid "Plugins" +msgstr "Características Adicionais (Plugins)" + +#: editor/property_editor.cpp +msgid "Preset..." +msgstr "" + +#: editor/property_editor.cpp +msgid "Zero" +msgstr "Cero" + +#: editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: editor/property_editor.cpp +msgid "File..." +msgstr "Arquivo..." + +#: editor/property_editor.cpp +msgid "Dir..." +msgstr "Directorio..." + +#: editor/property_editor.cpp +msgid "Assign" +msgstr "Asignar" + +#: editor/property_editor.cpp +msgid "Select Node" +msgstr "Seleccionar Nodos" + +#: editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "Erro cargando arquivo: Non é un recurso!" + +#: editor/property_editor.cpp +msgid "Pick a Node" +msgstr "Elixe un Nodo" + +#: editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Virtual Method" +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Method" +msgstr "" + +#: editor/rename_dialog.cpp editor/scene_tree_dock.cpp +msgid "Batch Rename" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Replace:" +msgstr "Substituír:" + +#: editor/rename_dialog.cpp +msgid "Prefix:" +msgstr "Prefixo:" + +#: editor/rename_dialog.cpp +msgid "Suffix:" +msgstr "Sufixo:" + +#: editor/rename_dialog.cpp +msgid "Use Regular Expressions" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Advanced Options" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Substitute" +msgstr "Substituír" + +#: editor/rename_dialog.cpp +msgid "Node name" +msgstr "Nome do nodo" + +#: editor/rename_dialog.cpp +msgid "Node's parent name, if available" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Node type" +msgstr "Tipo de nodo" + +#: editor/rename_dialog.cpp +msgid "Current scene name" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Root node name" +msgstr "Nome do nodo raíz" + +#: editor/rename_dialog.cpp +msgid "" +"Sequential integer counter.\n" +"Compare counter options." +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Per-level Counter" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "If set, the counter restarts for each group of child nodes." +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Initial value for the counter" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Step" +msgstr "Paso" + +#: editor/rename_dialog.cpp +msgid "Amount by which counter is incremented for each node" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Padding" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "" +"Minimum number of digits for the counter.\n" +"Missing digits are padded with leading zeros." +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Post-Process" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Keep" +msgstr "Manter" + +#: editor/rename_dialog.cpp +msgid "PascalCase to snake_case" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "snake_case to PascalCase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Case" +msgstr "Maiús./Minús." + +#: editor/rename_dialog.cpp +msgid "To Lowercase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "To Uppercase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Reset" +msgstr "Restablecer" + +#: editor/rename_dialog.cpp +msgid "Regular Expression Error:" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "At character %s" +msgstr "" + +#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "Remparentar Nodo" + +#: editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "Remparentar" + +#: editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "No parent to instance the scenes at." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Replace with Branch Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Detach Script" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "Duplicar Nodo(s)" + +#: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Make node as Root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete %d nodes?" +msgstr "Eliminar %d nodos?" + +#: editor/scene_tree_dock.cpp +msgid "Delete the root node \"%s\"?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete node \"%s\" and its children?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete node \"%s\"?" +msgstr "Eliminar nodo \"%s\"?" + +#: editor/scene_tree_dock.cpp +msgid "Can not perform with the root node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Save New Scene As..." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Disabling \"editable_instance\" will cause all properties of the node to be " +"reverted to their default." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Enabling \"Load As Placeholder\" will disable \"Editable Children\" and " +"cause all properties of the node to be reverted to their default." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Make Local" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Create Root Node:" +msgstr "Crear nodo raíz:" + +#: editor/scene_tree_dock.cpp +msgid "2D Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "3D Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "User Interface" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Other Node" +msgstr "Outro Nodo" + +#: editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Attach Script" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "Eliminar Nodo(s)" + +#: editor/scene_tree_dock.cpp +msgid "Change type of node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Sub-Resources" +msgstr "Sub-Recursos" + +#: editor/scene_tree_dock.cpp +msgid "Clear Inheritance" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Editable Children" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Load As Placeholder" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Open Documentation" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Cannot attach a script: there are no languages registered.\n" +"This is probably because this editor was built with all language modules " +"disabled." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "Engadir Nodo Fillo" + +#: editor/scene_tree_dock.cpp +msgid "Expand/Collapse All" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Reparent to New Node" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Make Scene Root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp +msgid "Copy Node Path" +msgstr "Copiar Ruta do Nodo" + +#: editor/scene_tree_dock.cpp +msgid "Delete (No Confirm)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Add/Create a New Node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Attach a new or existing script to the selected node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Detach the script from the selected node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Remote" +msgstr "Remoto" + +#: editor/scene_tree_dock.cpp +msgid "Local" +msgstr "Local" + +#: editor/scene_tree_dock.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Toggle Visible" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Unlock Node" +msgstr "Desbloquear Nodo" + +#: editor/scene_tree_editor.cpp +msgid "Button Group" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "(Connecting From)" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Node configuration warning:" +msgstr "Aviso sobre a configuración do nodo:" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node has %s connection(s) and %s group(s).\n" +"Click to show signals dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node has %s connection(s).\n" +"Click to show signals dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node is in %s group(s).\n" +"Click to show groups dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Open Script:" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node is locked.\n" +"Click to unlock it." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Children are not selectable.\n" +"Click to make selectable." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Toggle Visibility" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"AnimationPlayer is pinned.\n" +"Click to unpin." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "Renomear Nodo" + +#: editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Node Configuration Warning!" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "Seleccione un Nodo" + +#: editor/script_create_dialog.cpp +msgid "Path is empty." +msgstr "A ruta está baleira." + +#: editor/script_create_dialog.cpp +msgid "Filename is empty." +msgstr "O nome de arquivo está baleiro." + +#: editor/script_create_dialog.cpp +msgid "Path is not local." +msgstr "A ruta non é local." + +#: editor/script_create_dialog.cpp +msgid "Invalid base path." +msgstr "Ruta base inválida." + +#: editor/script_create_dialog.cpp +msgid "A directory with the same name exists." +msgstr "Xa existe un directorio co mesmo nome." + +#: editor/script_create_dialog.cpp +msgid "File does not exist." +msgstr "O arquivo non existe." + +#: editor/script_create_dialog.cpp +msgid "Invalid extension." +msgstr "Extensión inválida." + +#: editor/script_create_dialog.cpp +msgid "Wrong extension chosen." +msgstr "Extensión incorrecta elixida." + +#: editor/script_create_dialog.cpp +msgid "Error loading template '%s'" +msgstr "Erro cargando o modelo '%s'" + +#: editor/script_create_dialog.cpp +msgid "Error - Could not create script in filesystem." +msgstr "Erro - Non se puido gardar o Script no sistema de arquivos." + +#: editor/script_create_dialog.cpp +msgid "Error loading script from %s" +msgstr "Erro cargando script desde %s" + +#: editor/script_create_dialog.cpp +msgid "Overrides" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "N/A" +msgstr "N/A" + +#: editor/script_create_dialog.cpp +msgid "Open Script / Choose Location" +msgstr "Abrir Script / Elixir Ubicación" + +#: editor/script_create_dialog.cpp +msgid "Open Script" +msgstr "Abrir Script" + +#: editor/script_create_dialog.cpp +msgid "File exists, it will be reused." +msgstr "O arquivo xa existe; será reutilizado." + +#: editor/script_create_dialog.cpp +msgid "Invalid path." +msgstr "Ruta inválida." + +#: editor/script_create_dialog.cpp +msgid "Invalid class name." +msgstr "Nome de clase inválido." + +#: editor/script_create_dialog.cpp +msgid "Invalid inherited parent name or path." +msgstr "A ruta ou o nome do pai herdado é inválido." + +#: editor/script_create_dialog.cpp +msgid "Script path/name is valid." +msgstr "A ruta e nome do script son válidos." + +#: editor/script_create_dialog.cpp +msgid "Allowed: a-z, A-Z, 0-9, _ and ." +msgstr "Permitido: a-z, A-Z, 0-9,_ e ." + +#: editor/script_create_dialog.cpp +msgid "Built-in script (into scene file)." +msgstr "Script integrada na escena." + +#: editor/script_create_dialog.cpp +msgid "Will create a new script file." +msgstr "Crearase un novo arquivo de script." + +#: editor/script_create_dialog.cpp +msgid "Will load an existing script file." +msgstr "Cargarase un arquivo de script xa existente." + +#: editor/script_create_dialog.cpp +msgid "Script file already exists." +msgstr "Xa existe un arquivo script na mesma ruta." + +#: editor/script_create_dialog.cpp +msgid "" +"Note: Built-in scripts have some limitations and can't be edited using an " +"external editor." +msgstr "" +"Nota: Os scripts integrados teñen algunhas limitacións, e non poden editarse " +"usando editores externos." + +#: editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "Nome da Clase:" + +#: editor/script_create_dialog.cpp +msgid "Template:" +msgstr "Modelo:" + +#: editor/script_create_dialog.cpp +msgid "Built-in Script:" +msgstr "Script Integrado:" + +#: editor/script_create_dialog.cpp +msgid "Attach Node Script" +msgstr "Adxuntar Script de Nodo" + +#: editor/script_editor_debugger.cpp +msgid "Remote " +msgstr "Remoto " + +#: editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "Bytes:" + +#: editor/script_editor_debugger.cpp +msgid "Warning:" +msgstr "Aviso:" + +#: editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "Erro:" + +#: editor/script_editor_debugger.cpp +msgid "C++ Error" +msgstr "Erro de C++" + +#: editor/script_editor_debugger.cpp +msgid "C++ Error:" +msgstr "Erro de C++:" + +#: editor/script_editor_debugger.cpp +msgid "C++ Source" +msgstr "Fonte C++" + +#: editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "Fonte:" + +#: editor/script_editor_debugger.cpp +msgid "C++ Source:" +msgstr "Fonte C++:" + +#: editor/script_editor_debugger.cpp +msgid "Stack Trace" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "Erros" + +#: editor/script_editor_debugger.cpp +msgid "Child process connected." +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Video RAM" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Skip Breakpoints" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "Analítica de Rendemento" + +#: editor/script_editor_debugger.cpp +msgid "Network Profiler" +msgstr "Analítica de Rendemento de Rede" + +#: editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "Monitor" + +#: editor/script_editor_debugger.cpp +msgid "Value" +msgstr "Valor" + +#: editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "Monitores" + +#: editor/script_editor_debugger.cpp +msgid "Pick one or more items from the list to display the graph." +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "Total:" + +#: editor/script_editor_debugger.cpp +msgid "Export list to a CSV file" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Type" +msgstr "Tipo" + +#: editor/script_editor_debugger.cpp +msgid "Format" +msgstr "Formato" + +#: editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "Uso" + +#: editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "Outros" + +#: editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Export measures as CSV" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Erase Shortcut" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Restore Shortcut" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Change Shortcut" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Shortcuts" +msgstr "Atallos" + +#: editor/settings_config_dialog.cpp +msgid "Binding" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change AudioStreamPlayer3D Emission Angle" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Notifier AABB" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Particles AABB" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Probe Extents" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Cylinder Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Cylinder Shape Height" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Cylinder Radius" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Cylinder Height" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Torus Inner Radius" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Torus Outer Radius" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Select the dynamic library for this entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Select dependencies of the library for this entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Remove current entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Double click to create a new entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Platform:" +msgstr "Plataforma:" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Platform" +msgstr "Plataforma" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Dynamic Library" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Add an architecture entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "GDNativeLibrary" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Enabled GDNative Singleton" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Disabled GDNative Singleton" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Library" +msgstr "Biblioteca" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Libraries: " +msgstr "Bibliotecas: " + +#: modules/gdnative/register_types.cpp +msgid "GDNative" +msgstr "GDNative" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Step argument is zero!" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Object can't provide a length." +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Next Plane" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Previous Plane" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Plane:" +msgstr "Plano:" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Next Floor" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Previous Floor" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Floor:" +msgstr "Chan:" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Delete Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Fill Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Paste Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Paint" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Grid Map" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Snap View" +msgstr "Axustar Vista" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Disabled" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Above" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Below" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit X Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit Y Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit Z Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate X" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate Y" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate Z" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate X" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate Y" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate Z" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Clear Rotation" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Paste Selects" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clear Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Fill Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Settings" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Pick Distance:" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Filter meshes" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Give a MeshLibrary resource to this GridMap to use its meshes." +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Begin Bake" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Preparing data structures" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Generate buffers" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Direct lighting" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Indirect lighting" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Post processing" +msgstr "" + +#: modules/lightmapper_cpu/lightmapper_cpu.cpp +msgid "Plotting lightmaps" +msgstr "" + +#: modules/mono/csharp_script.cpp +msgid "Class name can't be a reserved keyword" +msgstr "" + +#: modules/mono/mono_gd/gd_mono_utils.cpp +msgid "End of inner exception stack trace" +msgstr "" + +#: modules/recast/navigation_mesh_editor_plugin.cpp +msgid "Bake NavMesh" +msgstr "" + +#: modules/recast/navigation_mesh_editor_plugin.cpp +msgid "Clear the navigation mesh." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Setting up Configuration..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Calculating grid size..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Creating heightfield..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Marking walkable triangles..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Constructing compact heightfield..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Eroding walkable area..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Partitioning..." +msgstr "Particionando..." + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Creating contours..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Creating polymesh..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Converting to native navigation mesh..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Navigation Mesh Generator Setup:" +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Parsing Geometry..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Done!" +msgstr "Feito!" + +#: modules/visual_script/visual_script.cpp +msgid "" +"A node yielded without working memory, please read the docs on how to yield " +"properly!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Node yielded, but did not return a function state in the first working " +"memory." +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Return value must be assigned to first element of node working memory! Fix " +"your node please." +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Node returned an invalid sequence output: " +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Found sequence bit but not the node in the stack, report bug!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Stack overflow with stack depth: " +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Signal Arguments" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Argument Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Argument name" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Set Variable Default Value" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Set Variable Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Override an existing built-in function." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create a new function." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Variables:" +msgstr "Variables:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create a new variable." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Signals:" +msgstr "Sinais:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create a new signal." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name is not a valid identifier:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name already in use by another func/var/signal:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Delete input port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove VisualScript Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Duplicate VisualScript Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold %s to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold %s to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "" +"Can't drop properties because script '%s' is not used in this scene.\n" +"Drop holding 'Shift' to just copy the signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Move Node(s)" +msgstr "Mover Nodo(s)" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove VisualScript Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Connect Nodes" +msgstr "Conectar Nodos" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Disconnect Nodes" +msgstr "Desconectar Nodos" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Connect Node Data" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Connect Node Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Script already has function '%s'" +msgstr "O script xa ten unha función chamada '%s'" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Input Value" +msgstr "Cambiar Valor de Entrada" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Resize Comment" +msgstr "Cambiar Tamaño do Comentario" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't copy the function node." +msgstr "Non se pode copiar o nodo función." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "O portapapeis está baleiro!" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste VisualScript Nodes" +msgstr "Pegar Nodos VisualScript" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't create function with a function node." +msgstr "Non se pode crear unha función cun nodo función." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't create function of nodes from nodes of multiple functions." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Select at least one node with sequence port." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Try to only have one sequence input in selection." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create Function" +msgstr "Crear Función" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Function" +msgstr "Eliminar Función" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Variable" +msgstr "Eliminar Variable" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Variable:" +msgstr "Editando Variable:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Signal" +msgstr "Eliminar Sinal" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Signal:" +msgstr "Editando Sinal:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Make Tool:" +msgstr "Ferramenta:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Members:" +msgstr "Membros:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "Cambiar Tipo Base:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "Engadir Nodos..." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Engadir Función..." + +#: modules/visual_script/visual_script_editor.cpp +msgid "function_name" +msgstr "nome_da_funcion" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Select or create a function to edit its graph." +msgstr "Seleccione ou cree unha función para editar a sua gráfica." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Delete Selected" +msgstr "Eliminar Selección" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Find Node Type" +msgstr "Encontrar Tipo de Nodo" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "Copiar Nodos" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "Cortar Nodos" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Make Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Refresh Graph" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Member" +msgstr "Editar Membro" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Input type not iterable: " +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid: " +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name." +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Base object is not a Node!" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Path does not lead Node!" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name '%s' in node %s." +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid argument of type: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid arguments: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableGet not found in script: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableSet not found in script: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Custom node has no _step() method, can't process graph." +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "" +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." +msgstr "" + +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Search VisualScript" +msgstr "Buscar en VisualScript" + +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Get %s" +msgstr "" + +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Set %s" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Select device from the list" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to find the 'apksigner' tool." +msgstr "" + +#: platform/android/export/export.cpp +msgid "" +"Android build template not installed in the project. Install it from the " +"Project menu." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" +"Non está configurado o Keystore de depuración nin na configuración do " +"editor, nin nos axustes de exportación." + +#: platform/android/export/export.cpp +msgid "Release keystore incorrectly configured in the export preset." +msgstr "" +"O Keystore Release non está configurado correctamente nos axustes de " +"exportación." + +#: platform/android/export/export.cpp +msgid "A valid Android SDK path is required in Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid Android SDK path in Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'platform-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to find Android SDK platform-tools' adb command." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Please check in the Android SDK directory specified in Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Missing 'build-tools' directory!" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Unable to find Android SDK build-tools' apksigner command." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/android/export/export.cpp +msgid "" +"Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " +"project setting (changed in Godot 3.2.2).\n" +msgstr "" + +#: platform/android/export/export.cpp +msgid "\"Use Custom Build\" must be enabled to use the plugins." +msgstr "" +"\"Use Custom Build\" debe estar activado para usar estas características " +"adicionais (plugins)." + +#: platform/android/export/export.cpp +msgid "" +"\"Degrees Of Freedom\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR" +"\"." +msgstr "" + +#: platform/android/export/export.cpp +msgid "" +"\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." +msgstr "" + +#: platform/android/export/export.cpp +msgid "" +"\"Focus Awareness\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." +msgstr "" + +#: platform/android/export/export.cpp +msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgstr "" + +#: platform/android/export/export.cpp +msgid "APK Expansion not compatible with Android App Bundle." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid filename! Android APK requires the *.apk extension." +msgstr "" + +#: platform/android/export/export.cpp +msgid "" +"Trying to build from a custom built template, but no version info for it " +"exists. Please reinstall from the 'Project' menu." +msgstr "" + +#: platform/android/export/export.cpp +msgid "" +"Android build version mismatch:\n" +" Template installed: %s\n" +" Godot Version: %s\n" +"Please reinstall Android build template from 'Project' menu." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Building Android Project (gradle)" +msgstr "Construir Proxecto Android (gradle)" + +#: platform/android/export/export.cpp +msgid "" +"Building of Android project failed, check output for the error.\n" +"Alternatively visit docs.godotengine.org for Android build documentation." +msgstr "" +"A creación do proxecto para Android fallou; comproba a saída para encontrar " +"o erro.\n" +"Ou visita docs.godotengine.org para ver a documentación sobre compilación " +"para Android." + +#: platform/android/export/export.cpp +msgid "Moving output" +msgstr "" + +#: platform/android/export/export.cpp +msgid "" +"Unable to copy and rename export file, check gradle project directory for " +"outputs." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" +"ID de App Store Team non especificado - non se pode configurar o proxecto." + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" +"As iconas requeridas non están especificadas nos axustes de exportación." + +#: platform/javascript/export/export.cpp +msgid "Stop HTTP Server" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Run in Browser" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Run exported HTML in the system's default browser." +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not write file:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not open template for export:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Invalid export template:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not read custom HTML shell:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not read boot splash image file:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the \"Frames\" property in " +"order for AnimatedSprite to display frames." +msgstr "" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" + +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no shape, so it can't collide or interact with other objects.\n" +"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to " +"define its shape." +msgstr "" +"Este nodo non ten unha forma física definida, polo que non pode colisionar " +"ou interactuar con outros obxectos.\n" +"Engade un nodo CollisionShape2D ou CollisionPolygon2D como fillo para " +"definir a sua forma." + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"O nodo CollisionPolygon2D só serve para darlle unha forma física a nodos " +"derivados de CollisionObject2D. É decir, do tipo Area2D, StaticBody2D, " +"RigidBody2D, KinematicBody2D, etc." + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"O nodo CollisionShape2D só serve para darlle unha forma física a nodos " +"derivados de CollisionObject2D. É decir, do tipo Area2D, StaticBody2D, " +"RigidBody2D, KinematicBody2D, etc." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"Polygon-based shapes are not meant be used nor edited directly through the " +"CollisionShape2D node. Please use the CollisionPolygon2D node instead." +msgstr "" +"As formas físicas baseadas en polígonos non están pensadas para editarse " +"directamente mediante o nodo CollisionShape2D. Por favor, usa o nodo " +"CollisionPolygon2D no seu lugar." + +#: scene/2d/cpu_particles_2d.cpp +msgid "" +"CPUParticles2D animation requires the usage of a CanvasItemMaterial with " +"\"Particles Animation\" enabled." +msgstr "" + +#: scene/2d/joints_2d.cpp +msgid "Node A and Node B must be PhysicsBody2Ds" +msgstr "Os nodo A e B teñen que ser do tipo PhysicsBody2D" + +#: scene/2d/joints_2d.cpp +msgid "Node A must be a PhysicsBody2D" +msgstr "O nodo A ten que ser un nodo PhysicsBody2D" + +#: scene/2d/joints_2d.cpp +msgid "Node B must be a PhysicsBody2D" +msgstr "O nodo B ten que ser un nodo PhysicsBody2D" + +#: scene/2d/joints_2d.cpp +msgid "Joint is not connected to two PhysicsBody2Ds" +msgstr "A articulación non está conectada a dous nodos PhysicsBody2D" + +#: scene/2d/joints_2d.cpp +msgid "Node A and Node B must be different PhysicsBody2Ds" +msgstr "Os nodos A e B teñen que ser nodos PhysicsBody2D distintos" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the \"Texture\" " +"property." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" +"As partículas baseadas na GPU non están soportas por o controlador de vídeo " +"de GLES2.\n" +"Usa o nodo CPUParticles2D no seu lugar. Podes usar a opción \"Converter a " +"CPUParticles\" con tal motivo." + +#: scene/2d/particles_2d.cpp scene/3d/particles.cpp +msgid "" +"A material to process the particles is not assigned, so no behavior is " +"imprinted." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "" +"Particles2D animation requires the usage of a CanvasItemMaterial with " +"\"Particles Animation\" enabled." +msgstr "" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/physics_body_2d.cpp +msgid "" +"Size changes to RigidBody2D (in character or rigid modes) will be overridden " +"by the physics engine when running.\n" +"Change the size in children collision shapes instead." +msgstr "" +"Os cambios ao tamaño do RigidBody2D (en modo ríxido ou modo personaxe) serán " +"sobreescritos por o motor físico cando a aplicación estea executándose.\n" +"Cambia o tamaño dos nodos fillos (CollisionShape2D e CollisionPolygon2D) no " +"seu lugar." + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "This Bone2D chain should end at a Skeleton2D node." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "" +"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." +msgstr "" + +#: scene/2d/tile_map.cpp +msgid "" +"TileMap with Use Parent on needs a parent CollisionObject2D to give shapes " +"to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, " +"KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnabler2D works best when used with the edited scene root directly " +"as parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "ARVRCamera must have an ARVROrigin node as its parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "ARVRController must have an ARVROrigin node as its parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "" +"The controller ID must not be 0 or this controller won't be bound to an " +"actual controller." +msgstr "" +"O ID do controlador non pode ser 0, ou o controlador non estará asociado a " +"ningún controlador real." + +#: scene/3d/arvr_nodes.cpp +msgid "ARVRAnchor must have an ARVROrigin node as its parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "" +"The anchor ID must not be 0 or this anchor won't be bound to an actual " +"anchor." +msgstr "" +"O ID da áncora non pode ser 0, ou esta áncora non estará asociada a ningunha " +"áncora real." + +#: scene/3d/arvr_nodes.cpp +msgid "ARVROrigin requires an ARVRCamera child node." +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Finding meshes and lights" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Preparing geometry (%d/%d)" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Preparing environment" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Generating capture" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Saving lightmaps" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Done" +msgstr "Feito" + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no shape, so it can't collide or interact with other objects.\n" +"Consider adding a CollisionShape or CollisionPolygon as a child to define " +"its shape." +msgstr "" +"Este nodo non ten unha forma física definida, polo que non pode colisionar " +"ou interactuar con outros obxectos.\n" +"Engade un nodo CollisionShape ou CollisionPolygon como fillo para definir a " +"sua forma." + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" +"O nodo CollisionPolygon só serve para darlle unha forma física a nodos " +"derivados de CollisionObject. É decir, do tipo Area, StaticBody, RigidBody, " +"KinematicBody, etc." + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" +"O nodo CollisionShape só serve para darlle unha forma física a nodos " +"derivados de CollisionObject. É decir, do tipo Area, StaticBody, RigidBody, " +"KinematicBody, etc." + +#: scene/3d/collision_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"Plane shapes don't work well and will be removed in future versions. Please " +"don't use them." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"ConcavePolygonShape doesn't support RigidBody in another mode than static." +msgstr "" +"A forma física ConcavePolygonShape non está soportada en nodos RigidBody en " +"ningún outro modo que non sexa o estático." + +#: scene/3d/cpu_particles.cpp +msgid "Nothing is visible because no mesh has been assigned." +msgstr "" + +#: scene/3d/cpu_particles.cpp +msgid "" +"CPUParticles animation requires the usage of a SpatialMaterial whose " +"Billboard Mode is set to \"Particle Billboard\"." +msgstr "" + +#: scene/3d/gi_probe.cpp +msgid "Plotting Meshes" +msgstr "" + +#: scene/3d/gi_probe.cpp +msgid "Finishing Plot" +msgstr "" + +#: scene/3d/gi_probe.cpp +msgid "" +"GIProbes are not supported by the GLES2 video driver.\n" +"Use a BakedLightmap instead." +msgstr "" + +#: scene/3d/interpolated_camera.cpp +msgid "" +"InterpolatedCamera has been deprecated and will be removed in Godot 4.0." +msgstr "" + +#: scene/3d/light.cpp +msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" +"As partículas baseadas na GPU non están soportas por o controlador de vídeo " +"de GLES2.\n" +"Usa o nodo CPUParticles no seu lugar. Podes usar a opción \"Converter a " +"CPUParticles\" con tal motivo." + +#: scene/3d/particles.cpp +msgid "" +"Nothing is visible because meshes have not been assigned to draw passes." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" +"Particles animation requires the usage of a SpatialMaterial whose Billboard " +"Mode is set to \"Particle Billboard\"." +msgstr "" + +#: scene/3d/path.cpp +msgid "PathFollow only works when set as a child of a Path node." +msgstr "" + +#: scene/3d/path.cpp +msgid "" +"PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its " +"parent Path's Curve resource." +msgstr "" + +#: scene/3d/physics_body.cpp +msgid "" +"Size changes to RigidBody (in character or rigid modes) will be overridden " +"by the physics engine when running.\n" +"Change the size in children collision shapes instead." +msgstr "" +"Os cambios ao tamaño do RigidBody (en modo ríxido ou modo personaxe) serán " +"sobreescritos por o motor físico cando a aplicación estea executándose.\n" +"Cambia o tamaño dos nodos fillos (CollisionShape e CollisionPolygon) no seu " +"lugar." + +#: scene/3d/physics_joint.cpp +msgid "Node A and Node B must be PhysicsBodies" +msgstr "" + +#: scene/3d/physics_joint.cpp +msgid "Node A must be a PhysicsBody" +msgstr "O nodo A ten que ser un nodo PhysicsBody" + +#: scene/3d/physics_joint.cpp +msgid "Node B must be a PhysicsBody" +msgstr "O nodo B ten que ser un nodo PhysicsBody" + +#: scene/3d/physics_joint.cpp +msgid "Joint is not connected to any PhysicsBodies" +msgstr "" + +#: scene/3d/physics_joint.cpp +msgid "Node A and Node B must be different PhysicsBodies" +msgstr "" + +#: scene/3d/remote_transform.cpp +msgid "" +"The \"Remote Path\" property must point to a valid Spatial or Spatial-" +"derived node to work." +msgstr "" + +#: scene/3d/soft_body.cpp +msgid "This body will be ignored until you set a mesh." +msgstr "Este corpo será ignorado ata que se lle sea asignado unha malla." + +#: scene/3d/soft_body.cpp +msgid "" +"Size changes to SoftBody will be overridden by the physics engine when " +"running.\n" +"Change the size in children collision shapes instead." +msgstr "" +"Os cambios ao tamaño do SoftBody serán sobreescritos por o motor físico " +"cando a aplicación estea executándose.\n" +"Cambia o tamaño dos nodos fillos (CollisionShape e CollisionPolygon) no seu " +"lugar." + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the \"Frames\" property in " +"order for AnimatedSprite3D to display frames." +msgstr "" + +#: scene/3d/vehicle_body.cpp +msgid "" +"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use " +"it as a child of a VehicleBody." +msgstr "" +"O nodo VehicleWheel (Roda de Vehículo) serve para proporcionar un sistema de " +"rodas a un nodo VehicleBody. Por favor; úsao como fillo dun nodo VehicleBody." + +#: scene/3d/world_environment.cpp +msgid "" +"WorldEnvironment requires its \"Environment\" property to contain an " +"Environment to have a visible effect." +msgstr "" + +#: scene/3d/world_environment.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" + +#: scene/3d/world_environment.cpp +msgid "" +"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set " +"this environment's Background Mode to Canvas (for 2D scenes)." +msgstr "" + +#: scene/animation/animation_blend_tree.cpp +msgid "On BlendTree node '%s', animation not found: '%s'" +msgstr "" + +#: scene/animation/animation_blend_tree.cpp +msgid "Animation not found: '%s'" +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "In node '%s', invalid animation: '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Invalid animation: '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Nothing connected to input '%s' of node '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "No root AnimationNode for the graph is set." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Path to an AnimationPlayer node containing animations is not set." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "The AnimationPlayer root node is not a valid node." +msgstr "" + +#: scene/animation/animation_tree_player.cpp +msgid "This node has been deprecated. Use AnimationTree instead." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "" +"Color: #%s\n" +"LMB: Set color\n" +"RMB: Remove preset" +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Pick a color from the editor window." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "HSV" +msgstr "HSV" + +#: scene/gui/color_picker.cpp +msgid "Raw" +msgstr "Sen Procesar (Raw)" + +#: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Add current color as a preset." +msgstr "" + +#: scene/gui/container.cpp +msgid "" +"Container by itself serves no purpose unless a script configures its " +"children placement behavior.\n" +"If you don't intend to add a script, use a plain Control node instead." +msgstr "" +"Un nodo contedor (Container) por sí mesmo non ten ningunha utilidade, salvo " +"que se lle engada algún Script que configure a colocación dos seus nodos " +"fillos.\n" +"Se non tes pensado engadir un Script, utilizada un nodo Control no seu lugar." + +#: scene/gui/control.cpp +msgid "" +"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to " +"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"." +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "Alerta!" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "Por favor, confirma..." + +#: scene/gui/file_dialog.cpp +msgid "Must use a valid extension." +msgstr "" + +#: scene/gui/graph_edit.cpp +msgid "Enable grid minimap." +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine, but they will hide upon " +"running." +msgstr "" +"As ventás emerxentes (Popups) están ocultas por defecto, a non ser que " +"chames a popup() ou calquera das funcións popup*(). Podes facelas visibles " +"para editalas, pero ocultarasen ao iniciar a execución." + +#: scene/gui/range.cpp +msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." +msgstr "" + +#: scene/gui/scroll_container.cpp +msgid "" +"ScrollContainer is intended to work with a single child control.\n" +"Use a container as child (VBox, HBox, etc.), or a Control and set the custom " +"minimum size manually." +msgstr "" + +#: scene/gui/tree.cpp +msgid "(Other)" +msgstr "(Outros)" + +#: scene/main/scene_tree.cpp +msgid "" +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." +msgstr "" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" +"Esta Mini-Ventá (Viewport) no está configurada como obxectivo de " +"renderizado. Se quere que o seu contido se mostre directamente na pantalla, " +"convértao nun nodo fillo dun nodo Control para que poida recibir dimensións. " +"Ou ben, fágao un RenderTarget e asigne a súa textura a algún nodo." + +#: scene/main/viewport.cpp +msgid "Viewport size must be greater than 0 to render anything." +msgstr "" +"As dimensións da Mini-Ventá (Viewport) deben de ser maior que 0 para poder " +"renderizar nada." + +#: scene/resources/visual_shader_nodes.cpp +msgid "" +"The sampler port is connected but not used. Consider changing the source to " +"'SamplerPort'." +msgstr "" + +#: scene/resources/visual_shader_nodes.cpp +msgid "Invalid source for preview." +msgstr "" + +#: scene/resources/visual_shader_nodes.cpp +msgid "Invalid source for shader." +msgstr "" + +#: scene/resources/visual_shader_nodes.cpp +msgid "Invalid comparison function for that type." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Assignment to function." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Assignment to uniform." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Varyings can only be assigned in vertex function." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Constants cannot be modified." +msgstr "" diff --git a/editor/translations/he.po b/editor/translations/he.po index c179d06c24..78e6c10e33 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -3120,6 +3120,25 @@ msgid "Open & Run a Script" msgstr "פתיחה והרצה של סקריפט" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"הקבצים הבאים הם חדשים בכונן.\n" +"באילו פעולות לנקוט?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "רענון" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "שמירה מחדש" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "חדש בירושה" @@ -7042,16 +7061,6 @@ msgstr "" "הקבצים הבאים הם חדשים בכונן.\n" "באילו פעולות לנקוט?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "רענון" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "שמירה מחדש" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "ניפוי שגיאות" @@ -7392,6 +7401,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -10053,6 +10066,13 @@ msgid "Projects" msgstr "מיזם" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "" +"הקבצים נסרקים,\n" +"נא להמתין…" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/hi.po b/editor/translations/hi.po index fbf1352eff..79fab4e89b 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -3117,6 +3117,23 @@ msgid "Open & Run a Script" msgstr "ओपन एंड रन एक स्क्रिप्ट" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "निम्न फ़ाइलों का निस्सारण नहीं हो पाया:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "नई विरासत में मिली" @@ -6914,16 +6931,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7244,6 +7251,11 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "आकार: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9834,6 +9846,11 @@ msgid "Projects" msgstr "परियोजना के संस्थापक" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "दर्पण को पुनः प्राप्त करना, कृपया प्रतीक्षा करें ..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/hr.po b/editor/translations/hr.po index 9826f61488..6835f26fc9 100644 --- a/editor/translations/hr.po +++ b/editor/translations/hr.po @@ -2998,6 +2998,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6754,16 +6770,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7078,6 +7084,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9611,6 +9621,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/hu.po b/editor/translations/hu.po index 8ad2fb240e..9224509238 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -14,12 +14,13 @@ # cefrebevalo <szmarci711@gmail.com>, 2020. # thekeymethod <csokan.andras87@protonmail.ch>, 2020. # Czmorek Dávid <czmdav.soft@gmail.com>, 2020. +# Újvári Marcell <mmarci72@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-12-07 08:11+0000\n" -"Last-Translator: Czmorek Dávid <czmdav.soft@gmail.com>\n" +"PO-Revision-Date: 2021-01-22 10:21+0000\n" +"Last-Translator: Újvári Marcell <mmarci72@gmail.com>\n" "Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/" "godot/hu/>\n" "Language: hu\n" @@ -27,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.4-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -738,10 +739,9 @@ msgstr "Csak a kijelölés" #: editor/code_editor.cpp editor/plugins/script_text_editor.cpp #: editor/plugins/text_editor.cpp msgid "Standard" -msgstr "" +msgstr "Alapértelmezett" #: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Toggle Scripts Panel" msgstr "Szkript panel váltása" @@ -3133,6 +3133,25 @@ msgid "Open & Run a Script" msgstr "Szkriptet Megnyit és Futtat" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"A alábbi fájlok újabbak a lemezen.\n" +"Mit szeretne lépni?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Újratöltés" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Újramentés" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Új Örökölt" @@ -6957,16 +6976,6 @@ msgstr "" "A alábbi fájlok újabbak a lemezen.\n" "Mit szeretne lépni?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Újratöltés" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Újramentés" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Hibakereső" @@ -7247,7 +7256,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Z-Axis Transform." -msgstr "" +msgstr "Z-Tengely transzformáció" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Plane Transform." @@ -7282,6 +7291,11 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Méret: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Rajzolt objektumok" @@ -9831,6 +9845,11 @@ msgid "Projects" msgstr "Projektek" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Tükrök letöltése, kérjük várjon..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/id.po b/editor/translations/id.po index b7dc29eb20..6704c419d9 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -3161,6 +3161,25 @@ msgid "Open & Run a Script" msgstr "Buka & Jalankan Skrip" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Berkas berikut lebih baru dalam diska.\n" +"Aksi apa yang ingin diambil?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Muat Ulang" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Simpan Ulang" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Turunan Baru" @@ -7028,16 +7047,6 @@ msgstr "" "Berkas berikut lebih baru dalam diska.\n" "Aksi apa yang ingin diambil?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Muat Ulang" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Simpan Ulang" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Pengawakutu" @@ -7360,6 +7369,11 @@ msgid "Yaw" msgstr "Oleng" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Ukuran: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Objek Digambar" @@ -10053,6 +10067,11 @@ msgid "Projects" msgstr "Proyek" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Mendapatkan informasi cermin, silakan tunggu..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Terakhir Diubah" diff --git a/editor/translations/is.po b/editor/translations/is.po index 88dbd92927..45335e83e5 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -3027,6 +3027,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6814,16 +6830,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7139,6 +7145,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9703,6 +9713,10 @@ msgid "Projects" msgstr "Verkefna Stjóri" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/it.po b/editor/translations/it.po index 0e4eac5293..54c2122e93 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -36,7 +36,7 @@ # Davide Giuliano <davidegiuliano00@gmail.com>, 2019. # Stefano Merazzi <asso99@hotmail.com>, 2019. # Sinapse X <sinapsex13@gmail.com>, 2019. -# Micila Micillotto <micillotto@gmail.com>, 2019, 2020. +# Micila Micillotto <micillotto@gmail.com>, 2019, 2020, 2021. # Mirko Soppelsa <miknsop@gmail.com>, 2019, 2020. # No <kingofwizards.kw7@gmail.com>, 2019. # StarFang208 <polaritymanx@yahoo.it>, 2019. @@ -52,15 +52,16 @@ # Anonymous <noreply@weblate.org>, 2020. # riccardo boffelli <riccardo.boffelli.96@gmail.com>, 2020. # Lorenzo Asolan <brixiumx@gmail.com>, 2020. -# Lorenzo Cerqua <lorenzocerqua@tutanota.com>, 2020. +# Lorenzo Cerqua <lorenzocerqua@tutanota.com>, 2020, 2021. # Federico Manzella <ferdiu.manzella@gmail.com>, 2020. # Ziv D <wizdavid@gmail.com>, 2020. +# Riteo Siuga <lorenzocerqua@tutanota.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-12-22 21:12+0000\n" -"Last-Translator: Lorenzo Cerqua <lorenzocerqua@tutanota.com>\n" +"PO-Revision-Date: 2021-02-16 13:40+0000\n" +"Last-Translator: Riteo Siuga <lorenzocerqua@tutanota.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" "Language: it\n" @@ -68,7 +69,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.4.1-dev\n" +"X-Generator: Weblate 4.5\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -190,9 +191,8 @@ msgid "Anim Delete Keys" msgstr "Elimina delle chiavi d'animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Cambia il tempo di un fotogramma chiave" +msgstr "Cambia Intervallo Fotogramma Principale Animazione" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" @@ -203,49 +203,41 @@ msgid "Anim Change Transform" msgstr "Cambia la trasformazione di un'animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Cambia il valore del fotogramma chiave di un'animazione" +msgstr "Cambia Valore Fotogramma Principale Animazione" #: editor/animation_track_editor.cpp msgid "Anim Change Call" msgstr "Cambia la chiamata di un'animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Time" -msgstr "Cambia il tempo di più fotogrammi chiave" +msgstr "Cambia Multipli Intervalli Fotogramma Principale Animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transition" -msgstr "Cambia la transizione di più animazioni" +msgstr "Cambi Multipli Transizione Animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transform" -msgstr "Cambia le trasformazioni di più animazioni" +msgstr "Cambi Multipli Trasformazione Animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Value" -msgstr "Cambia il valore di più fotogrammi chiave di un'Animazione" +msgstr "Cambia Multipli Valori Fotogramma Principale Animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Call" -msgstr "Cambia la chiamata di metodo di più animazioni" +msgstr "Cambi Multipli Chiamata Animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Length" -msgstr "Cambia la lunghezza di un'animazione" +msgstr "Cambia Lunghezza Animazione" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Change Animation Loop" -msgstr "Commuta ciclicità animazione" +msgstr "Cambia Loop Animazione" #: editor/animation_track_editor.cpp msgid "Property Track" @@ -317,9 +309,8 @@ msgid "Interpolation Mode" msgstr "Modalità d'interpolazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" -msgstr "Modalità ciclo ad anello (interpola la fine con l'inizio del ciclo)" +msgstr "Modalità Ciclo ad Anello (interpola la fine con l'inizio a ciclo)" #: editor/animation_track_editor.cpp msgid "Remove this track." @@ -342,17 +333,14 @@ msgid "Discrete" msgstr "Discreta" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Trigger" -msgstr "Attivazione" +msgstr "Attivatore" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Capture" msgstr "Cattura" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Nearest" msgstr "Più vicino" @@ -366,30 +354,25 @@ msgid "Cubic" msgstr "Cubica" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Clamp Loop Interp" -msgstr "Blocca l'interpolazione d'un ciclo" +msgstr "Blocca Interpolazione Ciclo" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Wrap Loop Interp" -msgstr "Continua l'interpolazione d'un ciclo" +msgstr "Avvolgi Interpolazione Ciclo" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Insert Key" -msgstr "Inserisci un fotogramma chiave" +msgstr "Inserisci Fotogramma Chiave" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Duplicate Key(s)" -msgstr "Duplica i fotogrammi chiave selezionati" +msgstr "Duplica Fotogrammi Chiave Selezionati" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Key(s)" -msgstr "Elimina i fotogrammi chiave selezionati" +msgstr "Elimina Fotogrammi Chiave Selezionati" #: editor/animation_track_editor.cpp msgid "Change Animation Update Mode" @@ -408,14 +391,12 @@ msgid "Remove Anim Track" msgstr "Rimuovi la traccia di un'animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Create NEW track for %s and insert key?" -msgstr "Creare una NUOVA traccia per %s e inserirci il fotogramma chiave?" +msgstr "Crea NUOVA traccia per %s ed inserire fotogramma chiave?" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Create %d NEW tracks and insert keys?" -msgstr "Creare %d NUOVE tracce e inserirci i fotogrammi chiavi?" +msgstr "Crea %d NUOVE tracce ed inserire fotogrammi chiave?" #: editor/animation_track_editor.cpp editor/create_dialog.cpp #: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp @@ -434,24 +415,20 @@ msgid "Anim Insert" msgstr "Inserisci un'animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "AnimationPlayer can't animate itself, only other players." -msgstr "AnimationPlayer non può animarsi, solo altri nodi." +msgstr "AnimationPlayer può solo animare altri riproduttori, non se stesso." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Create & Insert" -msgstr "Crea un'animazione e inserisci un fotogramma chiave" +msgstr "Crea & Inserisci Animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Insert Track & Key" -msgstr "Inserisci un traccia con un fotogramma chiave in un'animazione" +msgstr "Inserisci Traccia e Fotogramma Chiave Animazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Insert Key" -msgstr "Inserisci un fotogramma chiave in un'animazione" +msgstr "Inserisci Fotogramma Chiave Animazione" #: editor/animation_track_editor.cpp msgid "Change Animation Step" @@ -462,13 +439,12 @@ msgid "Rearrange Tracks" msgstr "Riordina delle tracce" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Transform tracks only apply to Spatial-based nodes." msgstr "" -"Le tracce di trasformazioni 3D si applicano solo a nodi di tipo Spatial." +"Le tracce di trasformazione possono essere applicate soltanto ai nodi basati " +"sul nodo Spatial." #: editor/animation_track_editor.cpp -#, fuzzy msgid "" "Audio tracks can only point to nodes of type:\n" "-AudioStreamPlayer\n" @@ -487,26 +463,28 @@ msgstr "" "AnimationPlayer." #: editor/animation_track_editor.cpp -#, fuzzy msgid "An animation player can't animate itself, only other players." -msgstr "Un AnimationPlayer non può animare se stesso, solo altri riproduttori." +msgstr "" +"Un riproduttore di animazioni può solo animare altri riproduttori, non se " +"stesso." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Not possible to add a new track without a root" msgstr "Non è possibile aggiungere una nuova traccia senza un nodo radice" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Invalid track for Bezier (no suitable sub-properties)" -msgstr "Traccia non valida per la curva Bézier (nessuna sottoproprietà adatta)" +msgstr "" +"Traccia non valida per una curva di Bézier (nessuna sotto-proprietà adatta)" #: editor/animation_track_editor.cpp msgid "Add Bezier Track" -msgstr "Aggiungi traccia Bézier" +msgstr "Aggiungi una traccia di curve di Bézier" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." -msgstr "Il tracciato non è valido, non è possibile aggiungere una chiave." +msgstr "La traccia non è valida, quindi è impossibile aggiungere una chiave." #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" @@ -514,21 +492,22 @@ msgstr "La traccia non è di tipo Spatial, impossibile aggiungere la chiave" #: editor/animation_track_editor.cpp msgid "Add Transform Track Key" -msgstr "Aggiungi chiave traccia Transform" +msgstr "Aggiungi una chiave a una traccia di trasformazioni" #: editor/animation_track_editor.cpp msgid "Add Track Key" -msgstr "Aggiungi chiave traccia" +msgstr "Aggiungi una chiave a una traccia" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Track path is invalid, so can't add a method key." msgstr "" -"Il tracciato non è valido, non è possibile aggiungere una chiave di chiamata " -"di funzione." +"La traccia non è valida, quindi non è possibile aggiungere una chiave di " +"chiamata di metodo." #: editor/animation_track_editor.cpp msgid "Add Method Track Key" -msgstr "Aggiungi chiave alla traccia metodo" +msgstr "Aggiungi una chiave a una traccia di chiamate di metodi" #: editor/animation_track_editor.cpp msgid "Method not found in object: " @@ -536,7 +515,7 @@ msgstr "Metodo non trovato nell'oggetto: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" -msgstr "Sposta chiavi animazione" +msgstr "Sposta delle chiavi d'animazione" #: editor/animation_track_editor.cpp msgid "Clipboard is empty" @@ -544,20 +523,21 @@ msgstr "Gli appunti sono vuoti" #: editor/animation_track_editor.cpp msgid "Paste Tracks" -msgstr "Incolla tracce" +msgstr "Incolla delle tracce" #: editor/animation_track_editor.cpp msgid "Anim Scale Keys" -msgstr "Scala chiavi animazione" +msgstr "Scala delle chiavi d'animazione" #: editor/animation_track_editor.cpp msgid "" "This option does not work for Bezier editing, as it's only a single track." msgstr "" -"Questa opzione non funziona per modificare curve di Bézier, dato che si " -"tratta di una traccia singola." +"Questa opzione non funziona per modificare delle curve di Bézier, dato che " +"si tratta di una singola traccia." #: editor/animation_track_editor.cpp +#, fuzzy msgid "" "This animation belongs to an imported scene, so changes to imported tracks " "will not be saved.\n" @@ -569,14 +549,14 @@ msgid "" "Alternatively, use an import preset that imports animations to separate " "files." msgstr "" -"Questa animazione appartiene a una scena importata, eventuali modifiche alle " -"tracce importate non saranno salvate.\n" +"Quest'animazione appartiene a una scena importata, eventuali modifiche fatte " +"alle tracce importate non verranno salvate.\n" "\n" -"Per abilitare la possibilità di aggiungere ulteriori tracce, vai alle " -"impostazioni di importazione della scena e imposta\n" -"\"Animation > Storage\" su \"Files\", abilita \"Animation > Keep Custom " -"Tracks\", e infine reimporta la scena.\n" -"Altrimenti, usa un preset di importazione che importa le animazioni in file " +"Per abilitare la possibilità di aggiungere ulteriori tracce, andare nelle " +"impostazioni d'importazione della scena, impostare\n" +"\"Animation > Storage\" su \"Files\", attivare \"Animation > Keep Custom " +"Tracks\" e infine reimportare la scena.\n" +"Altrimenti, usare una preimpostazione che importi le animazioni in file " "separati." #: editor/animation_track_editor.cpp @@ -593,11 +573,11 @@ msgstr "Mostra solo le tracce dei nodi selezionati nell'albero." #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." -msgstr "Raggruppa le tracce per nodo o mostra una lista semplice." +msgstr "Raggruppa le tracce per nodo o le visualizza in una lista semplice." #: editor/animation_track_editor.cpp msgid "Snap:" -msgstr "Snap:" +msgstr "Scatto:" #: editor/animation_track_editor.cpp msgid "Animation step value." @@ -624,25 +604,26 @@ msgstr "Modifica" #: editor/animation_track_editor.cpp msgid "Animation properties." -msgstr "Proprietà animazione." +msgstr "Proprietà dell'animazione." #: editor/animation_track_editor.cpp msgid "Copy Tracks" -msgstr "Copia tracce" +msgstr "Copia le tracce" #: editor/animation_track_editor.cpp msgid "Scale Selection" -msgstr "Scala selezione" +msgstr "Scala la selezione" #: editor/animation_track_editor.cpp msgid "Scale From Cursor" -msgstr "Scala da cursore" +msgstr "Scala a partire dal cursore" #: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "Duplica selezione" +msgstr "Duplica la selezione" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Duplicate Transposed" msgstr "Duplica trasposto" @@ -651,20 +632,22 @@ msgid "Delete Selection" msgstr "Elimina la selezione" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Go to Next Step" msgstr "Va' al passo successivo" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Go to Previous Step" msgstr "Va' al passo precedente" #: editor/animation_track_editor.cpp msgid "Optimize Animation" -msgstr "Ottimizza animazione" +msgstr "Ottimizza l'animazione" #: editor/animation_track_editor.cpp msgid "Clean-Up Animation" -msgstr "Pulisci animazione" +msgstr "Pulisci l'animazione" #: editor/animation_track_editor.cpp msgid "Pick the node that will be animated:" @@ -672,7 +655,7 @@ msgstr "Seleziona il nodo che verrà animato:" #: editor/animation_track_editor.cpp msgid "Use Bezier Curves" -msgstr "Usa curve di Bézier" +msgstr "Usa le curve di Bézier" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" @@ -680,15 +663,15 @@ msgstr "Ottimizzatore anim." #: editor/animation_track_editor.cpp msgid "Max. Linear Error:" -msgstr "Max. errore lineare:" +msgstr "Max errore lineare:" #: editor/animation_track_editor.cpp msgid "Max. Angular Error:" -msgstr "Max. errore angolare:" +msgstr "Max errore angolare:" #: editor/animation_track_editor.cpp msgid "Max Optimizable Angle:" -msgstr "Max. angolo ottimizzabile:" +msgstr "Max angolo ottimizzabile:" #: editor/animation_track_editor.cpp msgid "Optimize" @@ -696,11 +679,11 @@ msgstr "Ottimizza" #: editor/animation_track_editor.cpp msgid "Remove invalid keys" -msgstr "Rimuovi chiavi non valide" +msgstr "Rimuovi le chiavi non valide" #: editor/animation_track_editor.cpp msgid "Remove unresolved and empty tracks" -msgstr "Rimuovi tracce irrisolte e vuote" +msgstr "Rimuovi le tracce irrisolte e vuote" #: editor/animation_track_editor.cpp msgid "Clean-up all animations" @@ -708,7 +691,7 @@ msgstr "Pulisci tutte le animazioni" #: editor/animation_track_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "Pulisci animazione(i) (NON ANNULLABILE!)" +msgstr "Pulisci le animazioni (NON ANNULLABILE!)" #: editor/animation_track_editor.cpp msgid "Clean-Up" @@ -733,31 +716,33 @@ msgstr "Copia" #: editor/animation_track_editor.cpp msgid "Select All/None" -msgstr "Seleziona Tutto/Nulla" +msgstr "Seleziona tutto/nulla" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" -msgstr "Aggiungi traccia clip audio" +msgstr "Aggiungi audio in una traccia di riproduzione audio" #: editor/animation_track_editor_plugins.cpp +#, fuzzy msgid "Change Audio Track Clip Start Offset" -msgstr "Cambia Offset di Inizio della Clip della Traccia Audio" +msgstr "Cambia lo scostamento dell'inizio della traccia audio" #: editor/animation_track_editor_plugins.cpp +#, fuzzy msgid "Change Audio Track Clip End Offset" -msgstr "Cambia offset di fine della clip della traccia audio" +msgstr "Cambia lo scostamento della fine della traccia audio" #: editor/array_property_edit.cpp msgid "Resize Array" -msgstr "Ridimensiona array" +msgstr "Ridimensiona lista" #: editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "Cambia tipo del valore dell'array" +msgstr "Cambia il tipo del valore della lista" #: editor/array_property_edit.cpp msgid "Change Array Value" -msgstr "Cambia valore array" +msgstr "Cambia il valore della lista" #: editor/code_editor.cpp msgid "Go to Line" @@ -765,7 +750,7 @@ msgstr "Vai alla linea" #: editor/code_editor.cpp msgid "Line Number:" -msgstr "Numero linea:" +msgstr "Numero della linea:" #: editor/code_editor.cpp msgid "%d replaced." @@ -777,11 +762,11 @@ msgstr "%d corrispondenza." #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d matches." -msgstr "%d corrispondenza/e." +msgstr "%d corrispondenze." #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" -msgstr "Distingui maiuscole" +msgstr "Distingui le maiuscole" #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Whole Words" @@ -797,7 +782,7 @@ msgstr "Rimpiazza tutti" #: editor/code_editor.cpp msgid "Selection Only" -msgstr "Solo selezione" +msgstr "Solo nella selezione" #: editor/code_editor.cpp editor/plugins/script_text_editor.cpp #: editor/plugins/text_editor.cpp @@ -805,6 +790,7 @@ msgid "Standard" msgstr "Standard" #: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +#, fuzzy msgid "Toggle Scripts Panel" msgstr "Commuta pannello degli script" @@ -822,15 +808,16 @@ msgstr "Rimpicciolisci" #: editor/code_editor.cpp msgid "Reset Zoom" -msgstr "Resetta ingrandimento" +msgstr "Reimposta ingrandimento" #: editor/code_editor.cpp +#, fuzzy msgid "Warnings" msgstr "Avvertenze" #: editor/code_editor.cpp msgid "Line and column numbers." -msgstr "Numeri di riga e colonna." +msgstr "Numeri di riga e di colonna." #: editor/connections_dialog.cpp msgid "Method in target node must be specified." @@ -838,7 +825,7 @@ msgstr "Il metodo del nodo designato deve essere specificato." #: editor/connections_dialog.cpp msgid "Method name must be a valid identifier." -msgstr "Il nome del metodo dev'essere un identificatore valido." +msgstr "Il nome del metodo deve essere un identificatore valido." #: editor/connections_dialog.cpp msgid "" @@ -2470,7 +2457,7 @@ msgstr "Non c'è nessuna scena definita da eseguire." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Salva scena prima di eseguire..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3231,6 +3218,25 @@ msgid "Open & Run a Script" msgstr "Apri ed esegui uno script" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"I file seguenti sono più recenti su disco.\n" +"Che azione deve essere intrapresa?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Ricarica" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Risalva" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Nuova ereditata" @@ -4002,19 +4008,16 @@ msgid "Searching..." msgstr "Ricerca..." #: editor/find_in_files.cpp -#, fuzzy msgid "%d match in %d file." -msgstr "%d corrispondenza/e." +msgstr "%d corrispondenza in %d file." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d file." -msgstr "%d corrispondenza/e." +msgstr "%d corrispondenze in %d file." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d files." -msgstr "%d corrispondenza/e." +msgstr "%d corrispondenze in %d file." #: editor/groups_editor.cpp msgid "Add to Group" @@ -5256,15 +5259,13 @@ msgid "Assets ZIP File" msgstr "ZIP File degli Asset" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" -"Impossibile determinare un percorso di salvataggio per le immagini di " +"Impossibile determinare un percorso di salvataggio per le immagini " "lightmap.\n" -"Salva la scena (per salvare le immagini nella stessa directory), o scegli un " -"percorso di salvataggio nelle proprietà di BackedLightmap." +"Salva la scena e riprova." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5283,26 +5284,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Impossibile determinare la dimensione della lightmap. La dimensione massima " +"(della lightmap) è troppo piccola?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Alcune mesh non sono valide. Sii sicuro che i valori dei canali UV2 siano " +"all'interno nella regione [0.0,1.0] quadra." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Godot Editor è stato costruito senza il supporto per il ray tracing, quindi " +"il baking delle lightmaps non è possibile." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Preprocessa Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Seleziona file template" +msgstr "Seleziona il file bake della lightmap:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6408,9 +6414,8 @@ msgstr "" "ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Converti in CPUParticles" +msgstr "Converti in CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -7118,16 +7123,6 @@ msgstr "" "I file seguenti sono più recenti su disco.\n" "Che azione deve essere intrapresa?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Ricarica" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Risalva" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Debugger" @@ -7447,6 +7442,11 @@ msgid "Yaw" msgstr "Imbardata" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Dimensione: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Oggetti disegnati" @@ -10147,6 +10147,11 @@ msgid "Projects" msgstr "Progetti" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Recupero dei mirror, attendi..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Ultima Modifica" @@ -11701,36 +11706,31 @@ msgstr "Dai una risorsa MeshLibrary a questa GridMap per usare le sue mesh." #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Inizia il Baking" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Preparando le strutture dati" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Genera AABB" +msgstr "Genera buffers" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Direzioni" +msgstr "Luci dirette" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Indenta a destra" +msgstr "Luci indirette" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" -msgstr "Post-Processo" +msgstr "Post processing" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "Stampando Luci:" +msgstr "Stampando le lightmap" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12250,7 +12250,7 @@ msgstr "Seleziona il dispositivo dall'elenco" #: platform/android/export/export.cpp msgid "Unable to find the 'apksigner' tool." -msgstr "" +msgstr "Impossibile trovare lo strumento 'apksigner'." #: platform/android/export/export.cpp msgid "" @@ -12271,18 +12271,13 @@ msgstr "" "Release keystore non configurato correttamente nel preset di esportazione." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." msgstr "" -"Percorso per Android SDK per build personalizzata nelle impostazioni " -"dell'editor non è valido." +"Un percorso valido per il SDK Android è richiesto nelle Impostazioni Editor." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "" -"Percorso per Android SDK per build personalizzata nelle impostazioni " -"dell'editor non è valido." +msgstr "Un percorso invalido per il SDK Android nelle Impostazioni Editor." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -12291,22 +12286,24 @@ msgstr "Cartella 'platform-tools' inesistente!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." msgstr "" +"Impossibile trovare il comando adb negli strumenti di piattaforma del SDK " +"Android." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." msgstr "" -"Percorso per Android SDK per build personalizzata nelle impostazioni " -"dell'editor non è valido." +"Per favore, controlla la directory specificata del SDK Android nelle " +"Impostazioni Editor." #: platform/android/export/export.cpp -#, fuzzy msgid "Missing 'build-tools' directory!" -msgstr "Cartella 'platform-tools' inesistente!" +msgstr "Cartella 'build-tools' inesistente!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." msgstr "" +"Impossibile trovare il comando apksigner negli strumenti di piattaforma del " +"SDK Android." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12795,27 +12792,23 @@ msgstr "ARVROrigin richiede un nodo figlio di tipo ARVRCamera." #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Cercando mesh e luci" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "Elaborazione Geometria..." +msgstr "Elaborazione Geometria (%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Mostra Ambiente" +msgstr "Preparazione Ambiente" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "Generando Lightmap" +msgstr "Generando cattura" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "Generando Lightmap" +msgstr "Salvando Lightmap" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -13161,9 +13154,8 @@ msgid "Must use a valid extension." msgstr "È necessaria un'estensione valida." #: scene/gui/graph_edit.cpp -#, fuzzy msgid "Enable grid minimap." -msgstr "Abilita Snap" +msgstr "Abilita mini-mappa griglia." #: scene/gui/popup.cpp msgid "" @@ -13224,6 +13216,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"La porta del sampler è connessa ma mai usata. Considera cambiare la sorgente " +"a 'SamplerPort'." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/ja.po b/editor/translations/ja.po index 99ce63a6d1..8ed2a31d77 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -31,13 +31,13 @@ # Akihiro Ogoshi <technical@palsystem-game.com>, 2019, 2020. # Wataru Onuki <bettawat@yahoo.co.jp>, 2020, 2021. # sporeball <sporeballdev@gmail.com>, 2020. -# BinotaLIU <me@binota.org>, 2020. +# BinotaLIU <me@binota.org>, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-01-06 18:29+0000\n" -"Last-Translator: nitenook <admin@alterbaum.net>\n" +"PO-Revision-Date: 2021-02-07 05:50+0000\n" +"Last-Translator: BinotaLIU <me@binota.org>\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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2410,7 +2410,7 @@ msgstr "実行するシーンが定義されていません。" #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "実行前にシーンを保存..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3161,6 +3161,25 @@ msgid "Open & Run a Script" msgstr "スクリプトを開いて実行" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"以下のファイルより新しいものがディスク上に存在します。\n" +"どうしますか?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "再読込" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "再保存" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "新規の継承" @@ -5168,14 +5187,12 @@ msgid "Assets ZIP File" msgstr "アセットのzipファイル" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" "ライトマップ画像の保存パスを確定できません。\n" -"シーンを保存する (画像が同じディレクトリに保存される) か、BakedLightmapプロパ" -"ティから保存パスを選択してください。" +"シーンを保存してから再度行ってください。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5194,26 +5211,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"ライトマップサイズの確定に失敗しました。ライトマップの最大サイズが小さすぎま" +"すか?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"一部のメッシュが無効です。UV2チャンネルの値が [0.0,1.0] の正方形領域内にある" +"ことを確認してください。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Godotエディタがレイトレーシングに対応せずにビルドされており、ライトマップのベ" +"イクができません。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "ライトマップを焼き込む" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "テンプレートファイルを選択" +msgstr "ライトマップベイクファイルを選択:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6307,9 +6329,8 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "ParticlesMaterialプロセスマテリアルにのみ点を設定できます" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "CPUパーティクルに変換" +msgstr "CPUParticles2D に変換" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -7013,16 +7034,6 @@ msgstr "" "以下のファイルより新しいものがディスク上に存在します。\n" "どうしますか?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "再読込" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "再保存" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "デバッガ" @@ -7343,6 +7354,10 @@ msgid "Yaw" msgstr "ヨー" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "サイズ" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "描画されたオブジェクト" @@ -10019,6 +10034,11 @@ msgid "Projects" msgstr "プロジェクト" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "ミラーを取得しています。しばらくお待ちください..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "最終更新" @@ -11572,16 +11592,15 @@ msgstr "" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "ベイク開始" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "データ構造の準備" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "AABBを生成" +msgstr "バッファを生成" #: modules/lightmapper_cpu/lightmapper_cpu.cpp #, fuzzy diff --git a/editor/translations/ka.po b/editor/translations/ka.po index c35aebac02..92ab76e773 100644 --- a/editor/translations/ka.po +++ b/editor/translations/ka.po @@ -3111,6 +3111,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6969,16 +6985,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7307,6 +7313,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9908,6 +9918,11 @@ msgid "Projects" msgstr "პროექტის დამფუძნებლები" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "ძებნა:" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/ko.po b/editor/translations/ko.po index 8c15195d24..b8b9eed468 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -3127,6 +3127,25 @@ msgid "Open & Run a Script" msgstr "스크립트 열기 & 실행" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"해당 파일은 디스크에 있는 게 더 최신입니다.\n" +"어떻게 할 건가요?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "새로고침" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "다시 저장" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "새 상속 씬" @@ -6974,16 +6993,6 @@ msgstr "" "해당 파일은 디스크에 있는 게 더 최신입니다.\n" "어떻게 할 건가요?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "새로고침" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "다시 저장" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "디버거" @@ -7303,6 +7312,11 @@ msgid "Yaw" msgstr "요" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "크기: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "그려진 객체" @@ -9958,6 +9972,11 @@ msgid "Projects" msgstr "프로젝트" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "미러를 검색 중입니다. 기다려주세요..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "마지막으로 수정됨" diff --git a/editor/translations/lt.po b/editor/translations/lt.po index f8c6d6acc9..f9353c1acc 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -3062,6 +3062,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6939,16 +6955,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7269,6 +7275,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9881,6 +9891,11 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Atsiųsti" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/lv.po b/editor/translations/lv.po index e7abc2a6e7..85519ccb59 100644 --- a/editor/translations/lv.po +++ b/editor/translations/lv.po @@ -3028,6 +3028,23 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "Sekojošie faili netika izvilkti no paketes:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6793,16 +6810,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7126,6 +7133,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9704,6 +9715,11 @@ msgid "Projects" msgstr "Projekta Dibinātāji" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Ielādēt..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/mi.po b/editor/translations/mi.po index 33153ba3a5..d9edd212bd 100644 --- a/editor/translations/mi.po +++ b/editor/translations/mi.po @@ -2974,6 +2974,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6726,16 +6742,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7050,6 +7056,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9570,6 +9580,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/mk.po b/editor/translations/mk.po index 9c1f076910..561adc90ff 100644 --- a/editor/translations/mk.po +++ b/editor/translations/mk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2021-01-15 03:43+0000\n" +"PO-Revision-Date: 2021-01-22 10:21+0000\n" "Last-Translator: Kristijan Fremen Velkovski <me@krisfremen.com>\n" "Language-Team: Macedonian <https://hosted.weblate.org/projects/godot-engine/" "godot/mk/>\n" @@ -138,11 +138,11 @@ msgstr "Избриши Клучеви" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Time" -msgstr "" +msgstr "Анимација Промени Време на клучниот кадар" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" -msgstr "" +msgstr "Анимација Промени Прелаз" #: editor/animation_track_editor.cpp msgid "Anim Change Transform" @@ -150,11 +150,11 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" -msgstr "" +msgstr "Анимација Промени Клучен Кадар Вредност" #: editor/animation_track_editor.cpp msgid "Anim Change Call" -msgstr "" +msgstr "Анимација Промени Позив" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Time" @@ -162,7 +162,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Transition" -msgstr "" +msgstr "Анимација Многукратно Променување на Прелози" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Transform" @@ -2981,6 +2981,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6733,16 +6749,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7057,6 +7063,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9577,6 +9587,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" @@ -10914,27 +10928,27 @@ msgstr "" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Libraries: " -msgstr "" +msgstr "Библиотеки: " #: modules/gdnative/register_types.cpp msgid "GDNative" -msgstr "" +msgstr "GDNative(ГДДомороден)" #: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" -msgstr "" +msgstr "Корак аргумент е нула!" #: modules/gdscript/gdscript_functions.cpp msgid "Not a script with an instance" -msgstr "" +msgstr "Не е скрипта со инстанца" #: modules/gdscript/gdscript_functions.cpp msgid "Not based on a script" -msgstr "" +msgstr "Не е основано на скрипта" #: modules/gdscript/gdscript_functions.cpp msgid "Not based on a resource file" -msgstr "" +msgstr "Не е основано на ресурс фајл" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (missing @path)" diff --git a/editor/translations/ml.po b/editor/translations/ml.po index a72cd78ca2..22fdc508ae 100644 --- a/editor/translations/ml.po +++ b/editor/translations/ml.po @@ -2986,6 +2986,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6742,16 +6758,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7066,6 +7072,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9587,6 +9597,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/mr.po b/editor/translations/mr.po index 6f019300ff..660429c147 100644 --- a/editor/translations/mr.po +++ b/editor/translations/mr.po @@ -2981,6 +2981,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6733,16 +6749,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7057,6 +7063,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9578,6 +9588,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/ms.po b/editor/translations/ms.po index 2f3e1481a2..01539c3fb7 100644 --- a/editor/translations/ms.po +++ b/editor/translations/ms.po @@ -3214,6 +3214,23 @@ msgstr "Buka & Jalankan Skrip" #: editor/editor_node.cpp #, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "Fail berikut gagal diekstrak dari pakej:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp +#, fuzzy msgid "New Inherited" msgstr "Baru Diwarisi" @@ -7063,16 +7080,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7388,6 +7395,11 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Saiz: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9924,6 +9936,11 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Mengambil maklumat cermin, sila tunggu..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/nb.po b/editor/translations/nb.po index 90f033ad39..3c54f55e99 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -3287,6 +3287,23 @@ msgstr "Åpne & Kjør et Skript" #: editor/editor_node.cpp #, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "De følgende filene feilet ekstrahering fra pakke:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Gjeninnlat" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Lagre på nytt" + +#: editor/editor_node.cpp +#, fuzzy msgid "New Inherited" msgstr "Ny Arvet" @@ -7381,16 +7398,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Gjeninnlat" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Lagre på nytt" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Feilsøking" @@ -7732,6 +7739,11 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Størrelse: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -10438,6 +10450,11 @@ msgid "Projects" msgstr "Prosjekter" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Henter fillager, vennligst vent..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/nl.po b/editor/translations/nl.po index 22b3202945..c73520f563 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -28,7 +28,7 @@ # rxadmin <r.van.eeghem@gmail.com>, 2018. # Peter Goelst <muis24@gmail.com>, 2019. # Wouter Buckens <wou.buc@gmail.com>, 2019. -# Stijn Hinlopen <f.a.hinlopen@gmail.com>, 2019, 2020. +# Stijn Hinlopen <f.a.hinlopen@gmail.com>, 2019, 2020, 2021. # jef dered <themen098s@vivaldi.net>, 2019. # Alex H. <sandertjeh13@hotmail.com>, 2019. # edouardgr <edouard.gruyters@gmail.com>, 2019. @@ -47,7 +47,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-12-25 12:29+0000\n" +"PO-Revision-Date: 2021-02-05 23:44+0000\n" "Last-Translator: Stijn Hinlopen <f.a.hinlopen@gmail.com>\n" "Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/" "nl/>\n" @@ -56,7 +56,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1703,7 +1703,7 @@ msgstr "Script Editor" #: editor/editor_feature_profile.cpp msgid "Asset Library" -msgstr "Asset bibliotheek" +msgstr "Materiaalbibliotheek" #: editor/editor_feature_profile.cpp msgid "Scene Tree Editing" @@ -2430,7 +2430,7 @@ msgstr "Er is geen startscène ingesteld." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Scène opslaan voor het afspelen..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -2901,7 +2901,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Visible Collision Shapes" -msgstr "Toon collision shapes" +msgstr "Botsingsvormen tonen" #: editor/editor_node.cpp #, fuzzy @@ -3185,6 +3185,25 @@ msgid "Open & Run a Script" msgstr "Voer Een Script Uit" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"De volgende bestanden zijn nieuwer op de schijf.\n" +"Welke aktie moet worden genomen?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Herladen" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Heropslaan" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Nieuw afgeleid type" @@ -3210,7 +3229,7 @@ msgstr "Open Script Bewerker" #: editor/editor_node.cpp editor/project_manager.cpp msgid "Open Asset Library" -msgstr "Open Asset Bibliotheek" +msgstr "Open Materiaalbibliotheek" #: editor/editor_node.cpp msgid "Open the next Editor" @@ -3758,6 +3777,11 @@ msgid "" "\n" "Do you wish to overwrite them?" msgstr "" +"De volgende bestanden of mappen conflicteren met elementen in '%s':\n" +"\n" +"%s\n" +"\n" +"Wil je deze overschrijven?" #: editor/filesystem_dock.cpp msgid "Renaming file:" @@ -3950,19 +3974,16 @@ msgid "Searching..." msgstr "Aan het zoeken..." #: editor/find_in_files.cpp -#, fuzzy msgid "%d match in %d file." -msgstr "%d overeenkomst(en) gevonden." +msgstr "%d overeenkomst in %d bestand." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d file." -msgstr "%d overeenkomst(en) gevonden." +msgstr "%d overeenkomsten in %d bestand." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d files." -msgstr "%d overeenkomst(en) gevonden." +msgstr "%d overeenkomsten in %d bestanden." #: editor/groups_editor.cpp msgid "Add to Group" @@ -5242,9 +5263,8 @@ msgid "Bake Lightmaps" msgstr "Bak Lichtmappen" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Selecteer sjabloonbestand" +msgstr "Selecteer lightmap bake-bestand" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5313,7 +5333,7 @@ msgstr "Maak nieuwe horizontale en verticale gidsen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Draaipuntverschuiving van het CanvasItem „%s“ op (%d, %d) zetten" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotate %d CanvasItems" @@ -5336,24 +5356,20 @@ msgid "Resize Control \"%s\" to (%d, %d)" msgstr "Control \"%s\" vergrootten tot (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "Schaal CanvasItem" +msgstr "Schaal %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "Schaal CanvasItem" +msgstr "Schaal CanvasItem \"%s\" naar (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "Verplaats CanvasItem" +msgstr "Verplaats %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "Verplaats CanvasItem" +msgstr "CanvasItem \"%s\" naar (%d, %d) verplaatsen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6347,9 +6363,8 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Kan punt alleen plaatsen in een PartikelsMateriaal proces materiaal" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Zet om in CPUParticles" +msgstr "Omzetten naar CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6640,9 +6655,8 @@ msgid "Move Points" msgstr "Beweeg Punten" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "Sleep: Roteer" +msgstr "Ctrl: Roteer" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" @@ -6700,14 +6714,12 @@ msgid "Radius:" msgstr "Radius:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "Creëer Polygon & UV" +msgstr "Kopieer Polygon naar UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "Naar Polygon2D omzetten" +msgstr "Kopieer UV naar Polygon2D" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -7062,16 +7074,6 @@ msgstr "" "De volgende bestanden zijn nieuwer op de schijf.\n" "Welke aktie moet worden genomen?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Herladen" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Heropslaan" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Debugger" @@ -7389,6 +7391,11 @@ msgid "Yaw" msgstr "Yaw" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Grootte: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Objecten Getekend" @@ -7801,7 +7808,7 @@ msgstr "Polygon2D Voorbeeldweergave" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" -msgstr "Creëer CollisionPolygon2D" +msgstr "CollisionPolygon2D aanmaken" #: editor/plugins/sprite_editor_plugin.cpp msgid "CollisionPolygon2D Preview" @@ -7843,11 +7850,11 @@ msgstr "Naar Polygon2D omzetten" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create collision polygon." -msgstr "Ongeldige geometrie, kan geen collision polygoon creëren." +msgstr "Ongeldige geometrie, kan geen botsingspolygoon aanmaken." #: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D Sibling" -msgstr "Creëer CollisionPolygon2D Sibling" +msgstr "CollisionPolygon2D aanmaken" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create light occluder." @@ -8253,13 +8260,12 @@ msgid "Paint Tile" msgstr "Teken Tegel" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" -"Shift+LMB: Lijn Tekenen\n" -"Shift+Ctrl+LMB: Vierkant Tekenen" +"Shift+LMB: Lijn tekenen\n" +"Shift+Ctrl+LMB: Vierkant tekenen" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8414,23 +8420,20 @@ msgid "Create a new rectangle." msgstr "Creëer nieuwe driehoek." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "New Rectangle" -msgstr "Teken Driehoek" +msgstr "Nieuwe rechthoek" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Nieuwe veelhoek aanmaken." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "New Polygon" -msgstr "Beweeg Polygon" +msgstr "Nieuwe veelhoek" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete Selected Shape" -msgstr "Geselecteerde Verwijderen" +msgstr "Geselecteerde vormen verwijderen" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." @@ -8557,7 +8560,7 @@ msgstr "Tegelbitmasker bewerken" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Collision Polygon" -msgstr "Bewerk Collision Polygon" +msgstr "Botsingspolygoon aanpassen" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Occlusion Polygon" @@ -8589,7 +8592,7 @@ msgstr "Verwijder Tile" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Collision Polygon" -msgstr "Verwijder Collision Polygon" +msgstr "Botsingsvorm verwijderen" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Occlusion Polygon" @@ -8617,7 +8620,7 @@ msgstr "Maak concaaf" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" -msgstr "Creëer Collision Polygon" +msgstr "Botsingsvorm aanmaken" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Occlusion Polygon" @@ -8795,9 +8798,8 @@ msgid "Add Node to Visual Shader" msgstr "VisualShader-knoop toevoegen" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "Knoop verplaatst" +msgstr "Knoop/knopen verplaatst" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8817,9 +8819,8 @@ msgid "Visual Shader Input Type Changed" msgstr "Visuele Shader Invoertype Gewijzigd" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "Uniforme naam instellen" +msgstr "UniformRef naam veranderd" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9547,7 +9548,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "Een verwijzing naar een bestaande uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -9914,7 +9915,7 @@ msgstr "OpenGL ES 3.0" #: editor/project_manager.cpp msgid "Not supported by your GPU drivers." -msgstr "" +msgstr "Niet ondersteund door de GPU drivers op dit systeem." #: editor/project_manager.cpp msgid "" @@ -10093,6 +10094,11 @@ msgid "Projects" msgstr "Projecten" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Mirrors ophalen, even wachten a.u.b..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Laatst bewerkt" @@ -10130,7 +10136,7 @@ msgid "" "Would you like to explore official example projects in the Asset Library?" msgstr "" "U heeft momenteel geen projecten.\n" -"Wilt u de officiële voorbeeldprojecten verkennen in de Asset Library?" +"Wilt u officiële voorbeeldprojecten verkennen in de Materiaalbibliotheek?" #: editor/project_manager.cpp msgid "" @@ -10524,19 +10530,16 @@ msgid "Batch Rename" msgstr "Bulk hernoemen" #: editor/rename_dialog.cpp -#, fuzzy msgid "Replace:" -msgstr "Vervangen: " +msgstr "Vervangen:" #: editor/rename_dialog.cpp -#, fuzzy msgid "Prefix:" -msgstr "Voorvoegsel" +msgstr "Voorvoegsel:" #: editor/rename_dialog.cpp -#, fuzzy msgid "Suffix:" -msgstr "Achtervoegsel" +msgstr "Achtervoegsel:" #: editor/rename_dialog.cpp msgid "Use Regular Expressions" @@ -10583,11 +10586,10 @@ msgid "Per-level Counter" msgstr "Per niveau teller" #: editor/rename_dialog.cpp -#, fuzzy msgid "If set, the counter restarts for each group of child nodes." msgstr "" -"Indien ingesteld: herstart de teller voor iedere groep van onderliggende " -"knopen" +"Indien ingesteld, zal de teller voor iedere groep van onderliggende knopen " +"opnieuw starten." #: editor/rename_dialog.cpp msgid "Initial value for the counter" @@ -10646,9 +10648,8 @@ msgid "Reset" msgstr "Resetten" #: editor/rename_dialog.cpp -#, fuzzy msgid "Regular Expression Error:" -msgstr "Fout in reguliere expressie" +msgstr "Fout in reguliere expressie:" #: editor/rename_dialog.cpp msgid "At character %s" @@ -11653,36 +11654,31 @@ msgstr "Voeg een MeshLibrary aan deze GridMap toe om meshes te gebruiken." #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Begin lichtberekening" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Datastructuren worden voorbereid" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Genereer AABB" +msgstr "Genereer buffers" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Richtingen" +msgstr "Directe verlichting" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Rechts Inspringen" +msgstr "Indirecte verlichting" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" -msgstr "Post-Process" +msgstr "Nabewerking" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "Plotten Light:" +msgstr "Lightmaps plotten" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12202,7 +12198,7 @@ msgstr "Selecteer apparaat uit de lijst" #: platform/android/export/export.cpp msgid "Unable to find the 'apksigner' tool." -msgstr "" +msgstr "Het hulpmiddel 'apksigner' kon niet gevonden worden." #: platform/android/export/export.cpp msgid "" @@ -12221,18 +12217,17 @@ msgid "Release keystore incorrectly configured in the export preset." msgstr "Release-Keystore is verkeerd ingesteld in de exportinstelingen." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." -msgstr "Ongeldig Android SDK pad voor custom build in Editor Settings." +msgstr "" +"Een geldig Android SDK-pad moet in de Editorinstellingen ingesteld zijn." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "Ongeldig Android SDK pad voor custom build in Editor Settings." +msgstr "Ongeldig Android SDK-pad in Editorinstellingen." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" +msgstr "'platform-tools' map ontbreekt!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." @@ -12491,10 +12486,10 @@ msgid "" "Consider adding a CollisionShape2D or CollisionPolygon2D as a child to " "define its shape." msgstr "" -"Deze knoop heeft geen vorm (Shape), dus kan het niet met andere objecten " -"botsen of interactie hebben.\n" -"Overweeg om een CollisionShape2D of CollisionPolygon2D als kind toe te " -"voegen om de vorm ervan vast te leggen." +"Deze knoop heeft geen botsingsvorm als onderliggende knoop en kan dus niet " +"met andere objecten botsen of interageren.\n" +"Plaats hieronder een knoop als CollisionShape2D of CollisionPolygon2D om " +"deze vorm vast te leggen." #: scene/2d/collision_polygon_2d.cpp msgid "" @@ -12502,13 +12497,14 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionPolygon2D dient enkel om een botsingsvorm te koppelen aan een knoop " -"afgeleid van CollisionObject2D. Plaats hem onder een Area2D-, StaticBody2D-, " -"RigidBody2D- of KinematicBody2D-knoop." +"Een knooppunt van het type CollisionPolygon2D kan alleen een botsingsvorm " +"keveren aan knopen die zijn afgeleid van CollisionObject2D. Plaats het dus " +"alleen onder een knoop als Area2D, StaticBody2D, RigidBody2D of " +"KinematicBody2D." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." -msgstr "Een lege CollisionPolygon2D heeft geen effect op botsingen." +msgstr "Lege CollisionPolygon2D hebben geen botsingsfunctie." #: scene/2d/collision_shape_2d.cpp msgid "" @@ -12516,15 +12512,16 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionShape2D dient enkel om een botsingsvorm te koppelen aan een knoop " -"afgeleid van CollisionObject2D. Plaats hem onder een Area2D-, StaticBody2D-, " -"RigidBody2D- of KinematicBody2D-knoop." +"Een knooppunt van het type CollisionShape2D kan alleen een botsingsvorm " +"keveren aan knopen die zijn afgeleid van CollisionObject2D. Plaats het dus " +"alleen onder een knoop als Area2D, StaticBody2D, RigidBody2D of " +"KinematicBody2D." #: scene/2d/collision_shape_2d.cpp msgid "" "A shape must be provided for CollisionShape2D to function. Please create a " "shape resource for it!" -msgstr "Een CollisionShape2D heeft een vorm nodig in de Shape-eigenschap!" +msgstr "Een CollisionShape2D heeft een vorm nodig." #: scene/2d/collision_shape_2d.cpp msgid "" @@ -12640,9 +12637,9 @@ msgid "" "by the physics engine when running.\n" "Change the size in children collision shapes instead." msgstr "" -"Grootteveranderingen van een RigidBody2D (in Character- of Rigidmodus) zal " -"overschreven worden door de physics engine als het spel start.\n" -"Verander in plaats daarvan de grootte van CollisionShapes in de kinderen." +"De grootte van een RigidBody2D (in Character- of Rigidmodus) wordt " +"overschreven wanneer het spel start.\n" +"Verander in plaats daarvan de grootte van de onderliggende botsingsvormen." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." @@ -12671,10 +12668,9 @@ msgid "" "to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, " "KinematicBody2D, etc. to give them a shape." msgstr "" -"TileMap met de optie \"Use Parent\" aan heeft een CollisionShape2D-ouder " -"nodig om vormen aan te geven. De TileMap hoort een kind van een Area2D, " -"StaticBody2D, RigidBody2D, KinematicBody2D enz. knoop te zijn om ze een vorm " -"te geven." +"Een TileMap met de optie \"Use Parent\" ingeschakeld moet knoop afgeleid van " +"CollisionObject2D (Area2D, StaticBody2D, RigidBody2D of KinematicBody2D) als " +"ouder hebben." #: scene/2d/visibility_notifier_2d.cpp msgid "" @@ -12751,10 +12747,10 @@ msgid "" "Consider adding a CollisionShape or CollisionPolygon as a child to define " "its shape." msgstr "" -"Deze knoop heeft geen vorm (Shape), dus het kan niet met andere objecten " -"botsen of interactie hebben.\n" -"Overweeg om een CollisionShape of CollisionPolygon als kind toe te voegen om " -"de vorm ervan vast te leggen." +"Deze knoop heeft geen botsingsvorm als onderliggende knoop en kan dus niet " +"met andere objecten botsen of interageren.\n" +"Plaats hieronder een knoop als CollisionShape of CollisionPolygon om deze " +"vorm vast te leggen." #: scene/3d/collision_polygon.cpp msgid "" @@ -12762,13 +12758,13 @@ msgid "" "CollisionObject derived node. Please only use it as a child of Area, " "StaticBody, RigidBody, KinematicBody, etc. to give them a shape." msgstr "" -"CollisionPolygon dient enkel om een botsingsvorm te koppelen aan een knoop " -"afgeleid van CollisionObject. Plaats hem onder een Area-, StaticBody-, " -"RigidBody- of KinematicBody-knoop." +"Een knooppunt van het type CollisionPolygon kan alleen een botsingsvorm " +"keveren aan knopen die zijn afgeleid van CollisionObject. Plaats het dus " +"alleen onder een knoop als Area, StaticBody, RigidBody of KinematicBody." #: scene/3d/collision_polygon.cpp msgid "An empty CollisionPolygon has no effect on collision." -msgstr "Een lege CollisionPolygon heeft geen effect op botsingen." +msgstr "Lege CollisionPolygon hebben geen botsingsfunctie." #: scene/3d/collision_shape.cpp msgid "" @@ -12776,17 +12772,15 @@ msgid "" "derived node. Please only use it as a child of Area, StaticBody, RigidBody, " "KinematicBody, etc. to give them a shape." msgstr "" -"CollisionShape dient enkel om een botsingsvorm te koppelen aan een knoop " -"afgeleid van CollisionObject. Plaats hem onder een Area-, StaticBody-, " -"RigidBody- of KinematicBody-knoop." +"Een knooppunt van het type CollisionShape kan alleen een botsingsvorm " +"keveren aan knopen die zijn afgeleid van CollisionObject2D. Plaats het dus " +"alleen onder een knoop als Area, StaticBody, RigidBody of KinematicBody." #: scene/3d/collision_shape.cpp msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it." -msgstr "" -"Om CollisionShape te laten werken, hoort het een Shape te hebben. Maak " -"hiervoor alstublieft een Shape bron aan." +msgstr "Een CollisionShape heeft een vorm nodig." #: scene/3d/collision_shape.cpp msgid "" @@ -12895,9 +12889,9 @@ msgid "" "by the physics engine when running.\n" "Change the size in children collision shapes instead." msgstr "" -"Grootteveranderingen van een RigidBody (in Character- of Rigidmodus) zal " -"overschreven worden door de physics engine als het spel start.\n" -"Verander in plaats daarvan de grootte van CollisionShapes in de kinderen." +"De grootte van een RigidBody (in Character- of Rigidmodus) wordt " +"overschreven wanneer het spel start.\n" +"Verander in plaats daarvan de grootte van de onderliggende botsingsvormen." #: scene/3d/physics_joint.cpp msgid "Node A and Node B must be PhysicsBodies" @@ -12937,9 +12931,8 @@ msgid "" "running.\n" "Change the size in children collision shapes instead." msgstr "" -"Grootteveranderingen van een SoftBody (in Character- of Rigidmodus) zal " -"overschreven worden door de physics engine als het spel start.\n" -"Verander de grootte van CollisionShapes in de kinderen." +"De grootte van een SoftBody wordt overschreven wanneer het spel start.\n" +"Verander in plaats daarvan de grootte van de onderliggende botsingsvormen." #: scene/3d/sprite_3d.cpp msgid "" @@ -13084,9 +13077,8 @@ msgid "Must use a valid extension." msgstr "Een geldige extensie moet gebruikt worden." #: scene/gui/graph_edit.cpp -#, fuzzy msgid "Enable grid minimap." -msgstr "Aan raster kleven" +msgstr "Rasteroverzicht inschakelen." #: scene/gui/popup.cpp msgid "" diff --git a/editor/translations/or.po b/editor/translations/or.po index c1bc32d40f..a95df2885d 100644 --- a/editor/translations/or.po +++ b/editor/translations/or.po @@ -2980,6 +2980,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6732,16 +6748,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7056,6 +7062,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9576,6 +9586,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/pl.po b/editor/translations/pl.po index 8de826e897..26ff92e60e 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -45,12 +45,14 @@ # Piotr Grodzki <ziemniakglados@gmail.com>, 2020. # Dzejkop <jakubtrad@gmail.com>, 2020. # Mateusz Grzonka <alpinus4@gmail.com>, 2020. +# gnu-ewm <gnu.ewm@protonmail.com>, 2021. +# vrid <patryksoon@live.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-01-12 13:32+0000\n" -"Last-Translator: Tomek <kobewi4e@gmail.com>\n" +"PO-Revision-Date: 2021-02-15 10:51+0000\n" +"Last-Translator: vrid <patryksoon@live.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" "Language: pl\n" @@ -59,7 +61,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -903,7 +905,7 @@ msgstr "Sygnał:" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" -msgstr "Połącz \"%s\" z \"%s\"" +msgstr "Połącz '%s' z '%s'" #: editor/connections_dialog.cpp msgid "Disconnect '%s' from '%s'" @@ -2416,7 +2418,7 @@ msgstr "Nie ma zdefiniowanej sceny do uruchomienia." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Zapisz scenę przed uruchomieniem..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3163,6 +3165,25 @@ msgid "Open & Run a Script" msgstr "Otwórz i Uruchom Skrypt" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Następujące pliki są nowsze na dysku.\n" +"Jakie działania powinny zostać podjęte?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Przeładuj" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Zapisz ponownie" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Nowa dziedzicząca scena" @@ -5180,14 +5201,12 @@ msgid "Assets ZIP File" msgstr "Plik ZIP assetów" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" -"Nie można określić ścieżki zapisu dla lightmapy obrazu.\n" -"Zapisz scenę (obrazy będą zapisane w tym samym katalogu), lub przepisz " -"ścieżkę zapisu z właściwości BakedLightmap." +"Nie można określić ścieżki zapisu dla obrazów mapy światła.\n" +"Zapisz scenę i spróbuj ponownie." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5206,26 +5225,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Nie udało się określić rozmiaru mapy światła. Maksymalny rozmiar jest za " +"mały?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Jakaś siatka jest nieprawidłowa. Upewnij się, że wartości kanału UV2 " +"mieszczą się w kwadratowym obszarze [0.0, 1.0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Godot został zbudowany bez wsparcia ray tracingu, mapy światła nie mogą być " +"wypalone." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Stwórz Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Wybierz plik szablonu" +msgstr "Wybierz plik wypalenia mapy światła:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6322,9 +6346,8 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Punkt można wstawić tylko w materiał przetwarzania ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Przekonwertuj na cząsteczki CPU" +msgstr "Przekonwertuj na CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -7029,16 +7052,6 @@ msgstr "" "Następujące pliki są nowsze na dysku.\n" "Jakie działania powinny zostać podjęte?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Przeładuj" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Zapisz ponownie" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Debugger" @@ -7358,6 +7371,10 @@ msgid "Yaw" msgstr "Odchylenie" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "Rozmiar" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Narysowane obiekty" @@ -10043,6 +10060,11 @@ msgid "Projects" msgstr "Projekty" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Pobieranie informacji o serwerach lustrzanych, proszę czekać..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Data modyfikacji" @@ -10151,15 +10173,15 @@ msgstr "Indeks przycisku myszy:" #: editor/project_settings_editor.cpp msgid "Left Button" -msgstr "Lewy guzik" +msgstr "Lewy przycisk" #: editor/project_settings_editor.cpp msgid "Right Button" -msgstr "Prawy guzik" +msgstr "Prawy przycisk" #: editor/project_settings_editor.cpp msgid "Middle Button" -msgstr "Środkowy guzik" +msgstr "Środkowy przycisk" #: editor/project_settings_editor.cpp msgid "Wheel Up Button" @@ -11597,36 +11619,31 @@ msgstr "" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Zacznij wypalanie" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Przygotowywanie struktur danych" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Generuj AABB" +msgstr "Generuj bufory" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Kierunki" +msgstr "Oświetlenie bezpośrednie" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Wcięcie w prawo" +msgstr "Oświetlenie pośrednie" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" msgstr "Przetwarzanie końcowe" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "Kreślenie świateł:" +msgstr "Kreślenie map światła" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12139,9 +12156,8 @@ msgid "Select device from the list" msgstr "Wybierz urządzenie z listy" #: platform/android/export/export.cpp -#, fuzzy msgid "Unable to find the 'apksigner' tool." -msgstr "Nie udało się znaleźć narzędzia zipalign." +msgstr "Nie udało się znaleźć narzędzia \"apksigner\"." #: platform/android/export/export.cpp msgid "" @@ -12163,18 +12179,12 @@ msgstr "" "Wydaniowy keystore jest niepoprawnie skonfigurowany w profilu eksportu." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." -msgstr "" -"Niepoprawna ścieżka do SDK Androida dla własnego builda w Ustawieniach " -"Edytora." +msgstr "Wymagana jest poprawna ścieżka SDK Androida w Ustawieniach Edytora." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "" -"Niepoprawna ścieżka do SDK Androida dla własnego builda w Ustawieniach " -"Edytora." +msgstr "Niepoprawna ścieżka do SDK Androida w Ustawieniach Edytora." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -12183,13 +12193,11 @@ msgstr "Folder \"platform-tools\" nie istnieje!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." msgstr "" +"Nie udało się znaleźć komendy adb z narzędzi platformowych SDK Androida." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." -msgstr "" -"Niepoprawna ścieżka do SDK Androida dla własnego builda w Ustawieniach " -"Edytora." +msgstr "Sprawdź w folderze SDK Androida podanych w Ustawieniach Edytora." #: platform/android/export/export.cpp msgid "Missing 'build-tools' directory!" @@ -12197,7 +12205,7 @@ msgstr "Brakuje folderu \"build-tools\"!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." -msgstr "" +msgstr "Nie udało się znaleźć komendy apksigner z narzędzi SDK Androida." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12675,27 +12683,23 @@ msgstr "ARVROrigin wymaga węzła potomnego typu ARVRCamera." #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Szukanie siatek i świateł" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "Parsowanie Geometrii..." +msgstr "Przygotowywanie geometrii (%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Wyświetlaj środowisko" +msgstr "Przygotowywanie środowiska" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "Generowanie Lightmapy" +msgstr "Generowanie przechwycenia" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "Generowanie Lightmapy" +msgstr "Zapisywanie map światła" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -13102,6 +13106,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"Port samplera jest podłączony, ale nieużyty. Rozważ zmianę źródła na " +"\"SamplerPort\"." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/pr.po b/editor/translations/pr.po index 9f6933a077..2d2ecf41b6 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -3075,6 +3075,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6953,16 +6969,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7293,6 +7299,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9911,6 +9921,10 @@ msgid "Projects" msgstr "Rename Function" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/pt.po b/editor/translations/pt.po index 32686314bc..49f2ff19c1 100644 --- a/editor/translations/pt.po +++ b/editor/translations/pt.po @@ -6,7 +6,7 @@ # Carlos Vieira <carlos.vieira@gmail.com>, 2017. # João <joao@nogordio.com>, 2018. # João Graça <jgraca95@gmail.com>, 2017. -# João Lopes <linux-man@hotmail.com>, 2017-2018, 2019, 2020. +# João Lopes <linux-man@hotmail.com>, 2017-2018, 2019, 2020, 2021. # Miguel Gomes <miggas09@gmail.com>, 2017. # Paulo Caldeira <paucal@gmail.com>, 2018. # Pedro Gomes <pedrogomes1698@gmail.com>, 2017. @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-12-31 07:09+0000\n" +"PO-Revision-Date: 2021-01-26 03:28+0000\n" "Last-Translator: João Lopes <linux-man@hotmail.com>\n" "Language-Team: Portuguese <https://hosted.weblate.org/projects/godot-engine/" "godot/pt/>\n" @@ -31,7 +31,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -566,7 +566,7 @@ msgstr "Copiar Pistas" #: editor/animation_track_editor.cpp msgid "Scale Selection" -msgstr "Escalar Selecção" +msgstr "Escalar Seleção" #: editor/animation_track_editor.cpp msgid "Scale From Cursor" @@ -622,7 +622,7 @@ msgstr "Máximo de Erros Angulares:" #: editor/animation_track_editor.cpp msgid "Max Optimizable Angle:" -msgstr "Angulo Máximo Otimizável:" +msgstr "Ângulo Máximo Otimizável:" #: editor/animation_track_editor.cpp msgid "Optimize" @@ -630,7 +630,7 @@ msgstr "Otimizar" #: editor/animation_track_editor.cpp msgid "Remove invalid keys" -msgstr "Remover Chaves inválidas" +msgstr "Remover chaves inválidas" #: editor/animation_track_editor.cpp msgid "Remove unresolved and empty tracks" @@ -1132,7 +1132,7 @@ msgstr "Agradecimentos da Comunidade Godot!" #: editor/editor_about.cpp msgid "Godot Engine contributors" -msgstr "Contribuidores da engine Godot" +msgstr "Contribuidores do Godot Engine" #: editor/editor_about.cpp msgid "Project Founders" @@ -2268,7 +2268,7 @@ msgstr "A guardar Cena" #: editor/editor_node.cpp msgid "Analyzing" -msgstr "A analizar" +msgstr "A analisar" #: editor/editor_node.cpp msgid "Creating Thumbnail" @@ -2397,7 +2397,7 @@ msgstr "Não existe cena definida para execução." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Guardar cena antes de executar..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -2756,7 +2756,7 @@ msgstr "Converter Para..." #: editor/editor_node.cpp msgid "MeshLibrary..." -msgstr "Bib. de Meshes..." +msgstr "MeshLibrary..." #: editor/editor_node.cpp msgid "TileSet..." @@ -2886,7 +2886,7 @@ msgid "" "When this option is enabled, navigation meshes and polygons will be visible " "in the running project." msgstr "" -"Com esta opção ativa, Meshes e Polígonos de navegação serão visíveis no " +"Com esta opção ativa, malhas de navegação e polígonos serão visíveis no " "projeto em execução." #: editor/editor_node.cpp @@ -2907,7 +2907,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Synchronize Script Changes" -msgstr "Sicronizar alterações de script" +msgstr "Sincronizar Alterações de Script" #: editor/editor_node.cpp msgid "" @@ -3147,6 +3147,25 @@ msgid "Open & Run a Script" msgstr "Abrir & Executar um Script" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Os seguintes Ficheiros são mais recentes no disco.\n" +"Que ação deve ser tomada?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Recarregar" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Guardar novamente" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Novo Herdado" @@ -3192,7 +3211,7 @@ msgstr "Sub-recurso não encontrado." #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" -msgstr "A criar pré-visualizações de Malha" +msgstr "A criar Pré-visualizações de Malha" #: editor/editor_plugin.cpp msgid "Thumbnail..." @@ -3427,7 +3446,7 @@ msgstr "Não consegui executar o script:" #: editor/editor_run_script.cpp msgid "Did you forget the '_run' method?" -msgstr "Esqueceu-se do médodo '_run'?" +msgstr "Esqueceu-se do método '_run'?" #: editor/editor_spin_slider.cpp msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes." @@ -3721,7 +3740,7 @@ msgid "" "\n" "Do you wish to overwrite them?" msgstr "" -"Os seguintes ficheiros ou pastas estão em conflito com os items na " +"Os seguintes ficheiros ou pastas estão em conflito com os itens na " "localização '%s':\n" "\n" "%s\n" @@ -4319,7 +4338,7 @@ msgid "" "Activate to enable playback, check node warnings if activation fails." msgstr "" "AnimationTree está inativa.\n" -"Active-a para permitir a reprodução, verifique avisos do nó se a ativação " +"Ative-a para permitir a reprodução, verifique avisos do nó se a ativação " "falhar." #: editor/plugins/animation_blend_space_1d_editor.cpp @@ -5019,7 +5038,7 @@ msgstr "Tempo expirado." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." -msgstr "Mau hash na transferência, assume-se que o Ficheiro foi manipulado." +msgstr "Mau hash na transferência, assume-se que o ficheiro foi manipulado." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Expected:" @@ -5163,21 +5182,19 @@ msgid "Assets ZIP File" msgstr "Ficheiro ZIP de Ativos" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" "Não consigo determinar um caminho para guardar imagens lightmap.\n" -"Guarde a sua cena (para as imagens serem guardadas na mesma diretoria), ou " -"escolha um caminho nas propriedades BakedLightmap." +"Guarde a sua cena e tente novamente." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake " "Light' flag is on." msgstr "" -"Não há Meshes para consolidar. Assegure-se que contêm um canal UV2 e que a " +"Não há malhas para consolidar. Assegure-se que contêm um canal UV2 e que a " "referência 'Bake Light' flag está on." #: editor/plugins/baked_lightmap_editor_plugin.cpp @@ -5187,26 +5204,31 @@ msgstr "Falha ao criar imagens lightmap, assegure-se que o caminho é gravável. #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Falha na determinação do tamanho do lightmap. Tamanho máximo do lightmap " +"demasiado pequeno?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Alguma malha é inválida. Certifique-se que os valores do canal UV2 estão " +"contidos na região quadrada [0.0,1.0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Editor Godot foi compilado sem suporte para ray tracing, lightmaps não podem " +"ser consolidados." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Consolidar Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Selecionar Ficheiro de Modelo" +msgstr "Selecionar ficheiro de consolidação de lightmap:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5319,7 +5341,7 @@ msgid "" "their parent." msgstr "" "As âncoras e margens de filhos de um contentores são sobrescritas pelo seu " -"pai." +"progenitor." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Presets for the anchors and margins values of a Control node." @@ -5419,8 +5441,8 @@ msgid "" "Game Camera Override\n" "Overrides game camera with editor viewport camera." msgstr "" -"Sobreposição de Câmara de Jogo\n" -"Sobrepõe câmara de jogo com câmara viewport do editor." +"Sobreposição de Câmera de Jogo\n" +"Sobrepõe câmara de jogo com câmera viewport do editor." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5428,7 +5450,7 @@ msgid "" "Game Camera Override\n" "No game instance running." msgstr "" -"Sobreposição de Câmara de Jogo\n" +"Sobreposição de Câmera de Jogo\n" "Nenhuma instância de jogo em execução." #: editor/plugins/canvas_item_editor_plugin.cpp @@ -5481,7 +5503,7 @@ msgid "" "by their parent." msgstr "" "Atenção: as crianças de um contentor obtêm a sua posição e tamanho " -"determinados apenas pelos seus pais." +"determinados apenas pelos seus progenitores." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -5594,7 +5616,7 @@ msgstr "Configurar Ajuste..." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Parent" -msgstr "Ajustar ao Parente" +msgstr "Ajustar ao Progenitor" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Node Anchor" @@ -5982,7 +6004,7 @@ msgstr "Não consegui criar uma forma de colisão Trimesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Trimesh Body" -msgstr "Criar corpo estático Trimesh" +msgstr "Criar Corpo Estático Trimesh" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "This doesn't work on scene root!" @@ -6027,7 +6049,7 @@ msgstr "Malha contida não é do tipo ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "Falhou o desempacotamento UV, a Malha pode não ser múltipla?" +msgstr "Falhou o desempacotamento UV, a malha pode não ser múltipla?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." @@ -6047,7 +6069,7 @@ msgstr "A Malha não tem superfície para criar contornos!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" -msgstr "Tipo primitivo de Malha não é PRIMITIVE_TRIANGLES!" +msgstr "Tipo primitivo de malha não é PRIMITIVE_TRIANGLES!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" @@ -6063,7 +6085,7 @@ msgstr "Malha" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" -msgstr "Criar corpo estático Trimesh" +msgstr "Criar Corpo Estático Trimesh" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" @@ -6149,7 +6171,7 @@ msgstr "Tamanho do contorno:" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Channel Debug" -msgstr "Debug Canal UV" +msgstr "Depuração Canal UV" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" @@ -6165,7 +6187,7 @@ msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Mesh Library" -msgstr "Bib. de Meshes" +msgstr "Bib. de Malhas" #: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp @@ -6186,11 +6208,11 @@ msgstr "Atualizar a partir da Cena" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "Fonte da Malha não especificada (nem MultiMesh no nó)." +msgstr "Fonte da malha não especificada (nem MultiMesh definido no nó)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "Fonte da Malha não especificada (e MultiMesh não contêm Malha)." +msgstr "Fonte da malha não especificada (e MultiMesh não contêm Malha)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." @@ -6222,7 +6244,7 @@ msgstr "A fonte de superfície é inválida (sem faces)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" -msgstr "Selecione uma fonte Malha:" +msgstr "Selecione uma Fonte Malha:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" @@ -6299,9 +6321,8 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Só pode definir um Ponto num Material ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Converter em CPUParticles" +msgstr "Converter em CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6521,7 +6542,7 @@ msgstr "Criar mapa UV" msgid "" "Polygon 2D has internal vertices, so it can no longer be edited in the " "viewport." -msgstr "Polygon 2D tem vértices internos, não poder ser editado no viewport." +msgstr "Polígono 2D tem vértices internos, não pode ser editado no viewport." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Polygon & UV" @@ -6561,7 +6582,7 @@ msgstr "Pintar pesos dos ossos" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Open Polygon 2D UV editor." -msgstr "Abrir editor UV de Polygon2D." +msgstr "Abrir editor UV de Polígono 2D." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" @@ -6813,7 +6834,7 @@ msgstr "Não consigo obter o script para executar." #: editor/plugins/script_editor_plugin.cpp msgid "Script failed reloading, check console for errors." -msgstr "Falhou a re-leitura do script, analise os erros na consola." +msgstr "Falhou a releitura do script, analise os erros na consola." #: editor/plugins/script_editor_plugin.cpp msgid "Script is not in tool mode, will not be able to run." @@ -7006,16 +7027,6 @@ msgstr "" "Os seguintes Ficheiros são mais recentes no disco.\n" "Que ação deve ser tomada?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Recarregar" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Reguardar" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Depurador" @@ -7030,7 +7041,7 @@ msgstr "Limpar Scripts Recentes" #: editor/plugins/script_text_editor.cpp msgid "Connections to method:" -msgstr "Conecções ao método:" +msgstr "Conexões ao método:" #: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp msgid "Source" @@ -7332,6 +7343,11 @@ msgid "Yaw" msgstr "Direção" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Tamanho: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Objetos desenhados" @@ -7409,7 +7425,7 @@ msgstr "Alinhar Rotação com Vista" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "No parent to instance a child at." -msgstr "Sem parente para criar instância de filho." +msgstr "Sem progenitor para criar instância de filho." #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "This operation requires a single selected node." @@ -7429,7 +7445,7 @@ msgstr "Vista normal" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Wireframe" -msgstr "Vista wireframe" +msgstr "Vista Wireframe" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Overdraw" @@ -7981,7 +7997,7 @@ msgstr "TextureRegion" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" -msgstr "Adicionar todos os itens" +msgstr "Adicionar Todos os Itens" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All" @@ -7989,7 +8005,7 @@ msgstr "Adicionar tudo" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove All Items" -msgstr "Remover todos os itens" +msgstr "Remover Todos os Itens" #: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp msgid "Remove All" @@ -8005,11 +8021,11 @@ msgstr "Menu edição de tema." #: editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" -msgstr "Adicionar itens de classe" +msgstr "Adicionar Itens de Classe" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove Class Items" -msgstr "Remover itens de classe" +msgstr "Remover Itens de Classe" #: editor/plugins/theme_editor_plugin.cpp msgid "Create Empty Template" @@ -8423,7 +8439,7 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Delete selected Rect." -msgstr "Eliminar Rect seleccionado." +msgstr "Eliminar Rect selecionado." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -9149,8 +9165,8 @@ msgstr "" "Função SmoothStep( escalar(limite0), escalar(limite1), escalar(x) ).\n" "\n" "Devolve 0.0 se 'x' for menor que 'limite0' e 1.0 se 'x' for maior que " -"'limite1'. Caso contrário o valor devolvido é interpolado entre 0.0 and 1.0 " -"a usar polinomiais Hermite." +"'limite1'. Caso contrário o valor devolvido é interpolado entre 0.0 e 1.0 " +"usando polinomiais Hermite." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9367,8 +9383,8 @@ msgstr "" "Função SmoothStep( vetor(limite0), vetor(limite1), vetor(x) ).\n" "\n" "Devolve 0.0 se 'x' for menor que 'limite0' e 1.0 se 'x' for maior que " -"'limite1'. Caso contrário o valor devolvido é interpolado entre 0.0 and 1.0 " -"a usar polinomiais Hermite." +"'limite1'. Caso contrário o valor devolvido é interpolado entre 0.0 e 1.0 " +"usando polinomiais Hermite." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9381,8 +9397,8 @@ msgstr "" "Função SmoothStep( escalar(limite0), escalar(limite1), vetor(x) ).\n" "\n" "Devolve 0.0 se 'x' for menor que 'limite0' e 1.0 se 'x' for maior que " -"'limite1'. Caso contrário o valor devolvido é interpolado entre 0.0 and 1.0 " -"a usar polinomiais Hermite." +"'limite1'. Caso contrário o valor devolvido é interpolado entre 0.0 e 1.0 " +"usando polinomiais Hermite." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9449,7 +9465,7 @@ msgid "" "direction of camera (pass associated inputs to it)." msgstr "" "Devolve queda baseada no produto escalar da normal à superfície e da direção " -"da câmara (passa entradas associadas)." +"da câmera (passa entradas associadas)." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -10011,6 +10027,11 @@ msgid "Projects" msgstr "Projetos" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "A readquirir servidores, espere por favor..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Última modificação" @@ -10471,7 +10492,7 @@ msgstr "Nome do nó" #: editor/rename_dialog.cpp msgid "Node's parent name, if available" -msgstr "Nome do parente do nó, se disponível" +msgstr "Nome do progenitor do nó, se disponível" #: editor/rename_dialog.cpp msgid "Node type" @@ -10567,11 +10588,11 @@ msgstr "No carácter %s" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent Node" -msgstr "Repôr Nó" +msgstr "Reassociar Nó" #: editor/reparent_dialog.cpp msgid "Reparent Location (Select new Parent):" -msgstr "Repôr localização (selecionar novo Parente):" +msgstr "Reassociar Localização (Selecionar novo Progenitor):" #: editor/reparent_dialog.cpp msgid "Keep Global Transform" @@ -10579,7 +10600,7 @@ msgstr "Manter transformação global" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent" -msgstr "Repôr" +msgstr "Reassociar" #: editor/run_settings_dialog.cpp msgid "Run Mode:" @@ -10603,7 +10624,7 @@ msgstr "Configurações de Execução da Cena" #: editor/scene_tree_dock.cpp msgid "No parent to instance the scenes at." -msgstr "Nenhum parente para instância das cenas." +msgstr "Nenhum progenitor para instância das cenas." #: editor/scene_tree_dock.cpp msgid "Error loading scene from %s" @@ -10639,11 +10660,11 @@ msgstr "Esta operação não pode ser feita na raiz da árvore." #: editor/scene_tree_dock.cpp msgid "Move Node In Parent" -msgstr "Mover Nó no Parente" +msgstr "Mover Nó no Progenitor" #: editor/scene_tree_dock.cpp msgid "Move Nodes In Parent" -msgstr "Mover Nós no Parente" +msgstr "Mover Nós no Progenitor" #: editor/scene_tree_dock.cpp msgid "Duplicate Node(s)" @@ -10652,7 +10673,7 @@ msgstr "Duplicar Nó(s)" #: editor/scene_tree_dock.cpp msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." msgstr "" -"Não consigo mudar nó em cenas herdadas, a ordem dos nós não pode mudar." +"Não consigo reassociar nós em cenas herdadas, a ordem dos nós não pode mudar." #: editor/scene_tree_dock.cpp msgid "Node must belong to the edited scene to become root." @@ -10823,7 +10844,7 @@ msgstr "Mudar tipo" #: editor/scene_tree_dock.cpp msgid "Reparent to New Node" -msgstr "Repôr o Novo Nó" +msgstr "Reassociar a Novo Nó" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" @@ -11047,7 +11068,7 @@ msgstr "Nome de classe inválido." #: editor/script_create_dialog.cpp msgid "Invalid inherited parent name or path." -msgstr "Nome ou caminho de parente herdado inválido." +msgstr "Nome ou caminho herdado do progenitor inválido." #: editor/script_create_dialog.cpp msgid "Script path/name is valid." @@ -11171,11 +11192,11 @@ msgstr "Empilhar Frames" #: editor/script_editor_debugger.cpp msgid "Profiler" -msgstr "Profiler" +msgstr "Analisador" #: editor/script_editor_debugger.cpp msgid "Network Profiler" -msgstr "Traçador de Rede" +msgstr "Analisador de Rede" #: editor/script_editor_debugger.cpp msgid "Monitor" @@ -11279,11 +11300,11 @@ msgstr "Mudar ângulo de emissão de AudioStreamPlayer3D" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera FOV" -msgstr "Mudar FOV da câmara" +msgstr "Mudar FOV da Câmera" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera Size" -msgstr "Mudar tamanho da câmara" +msgstr "Mudar tamanho da Câmera" #: editor/spatial_editor_gizmos.cpp msgid "Change Notifier AABB" @@ -11331,7 +11352,7 @@ msgstr "Mudar Raio do Cilindro" #: modules/csg/csg_gizmos.cpp msgid "Change Cylinder Height" -msgstr "Mudar Altura do CIlindro" +msgstr "Mudar Altura do Cilindro" #: modules/csg/csg_gizmos.cpp msgid "Change Torus Inner Radius" @@ -11557,44 +11578,39 @@ msgstr "Distância de escolha:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Filter meshes" -msgstr "Meshes de filtro" +msgstr "Filtrar malhas" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Give a MeshLibrary resource to this GridMap to use its meshes." -msgstr "Dá um recurso MeshLibrary a este GridMap para usar os seus meshes." +msgstr "Dê um recurso MeshLibrary a este GridMap para usar as suas malhas." #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Começar Consolidação" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "A preparar estruturas de dados" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Gerar AABB" +msgstr "Gerar buffers" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Direções" +msgstr "Iluminação direta" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Indentar à direita" +msgstr "Iluminação indireta" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" msgstr "Pós-processamento" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "A traçar Luzes:" +msgstr "A Traçar lightmaps" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -11610,7 +11626,7 @@ msgstr "Consolidar NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." -msgstr "Limpar a Malha de navegação." +msgstr "Limpar a malha de navegação." #: modules/recast/navigation_mesh_generator.cpp msgid "Setting up Configuration..." @@ -11634,7 +11650,7 @@ msgstr "A construir heightfield compacto..." #: modules/recast/navigation_mesh_generator.cpp msgid "Eroding walkable area..." -msgstr "A corroer a Área caminhável..." +msgstr "A corroer a área caminhável..." #: modules/recast/navigation_mesh_generator.cpp msgid "Partitioning..." @@ -11650,11 +11666,11 @@ msgstr "A criar polymesh..." #: modules/recast/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." -msgstr "A converter para Malha de navegação nativa..." +msgstr "A converter para malha de navegação nativa..." #: modules/recast/navigation_mesh_generator.cpp msgid "Navigation Mesh Generator Setup:" -msgstr "Configuração do gerador da Malha de navegação:" +msgstr "Configuração do Gerador da Malha de Navegação:" #: modules/recast/navigation_mesh_generator.cpp msgid "Parsing Geometry..." @@ -12110,9 +12126,8 @@ msgid "Select device from the list" msgstr "Selecionar aparelho da lista" #: platform/android/export/export.cpp -#, fuzzy msgid "Unable to find the 'apksigner' tool." -msgstr "Incapaz de localizar a ferramenta zipalign." +msgstr "Incapaz de localizar a ferramenta 'apksigner'." #: platform/android/export/export.cpp msgid "" @@ -12125,7 +12140,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Debug keystore not configured in the Editor Settings nor in the preset." msgstr "" -"Depuração de keystore não configurada nas Configurações do Editor e nem na " +"Keystore de depuração não configurada nas Configurações do Editor e nem na " "predefinição." #: platform/android/export/export.cpp @@ -12134,18 +12149,13 @@ msgstr "" "Lançamento de keystore configurado incorretamente na predefinição exportada." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." msgstr "" -"Caminho inválido de Android SDK para compilação personalizada no Editor de " -"Configurações." +"É necessário um caminho válido para o Android SDK no Editor de Configurações." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "" -"Caminho inválido de Android SDK para compilação personalizada no Editor de " -"Configurações." +msgstr "Caminho inválido para o Android SDK no Editor de Configurações." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -12153,13 +12163,12 @@ msgstr "Diretoria 'platform-tools' em falta!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." -msgstr "" +msgstr "Incapaz de encontrar o comando adb das ferramentas Android SDK." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." msgstr "" -"Caminho inválido de Android SDK para compilação personalizada no Editor de " +"Por favor confirme a pasta do Android SDK especificada no Editor de " "Configurações." #: platform/android/export/export.cpp @@ -12168,7 +12177,7 @@ msgstr "Diretoria 'build-tools' em falta!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." -msgstr "" +msgstr "Incapaz de encontrar o comando apksigner das ferramentas Android SDK." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12360,7 +12369,7 @@ msgstr "Cor de fundo inválida." #: platform/uwp/export/export.cpp msgid "Invalid Store Logo image dimensions (should be 50x50)." -msgstr "Inválidas dimensões da imagem do logotipo do Store (deve ser 50x50)." +msgstr "Dimensões inválidas da imagem do logotipo do Store (deve ser 50x50)." #: platform/uwp/export/export.cpp msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." @@ -12481,7 +12490,7 @@ msgstr "Nó B tem de ser um PhysicsBody2D" #: scene/2d/joints_2d.cpp msgid "Joint is not connected to two PhysicsBody2Ds" -msgstr "Junção não está conetada a dois PhysicsBody2Ds" +msgstr "Junção não está conectada a dois PhysicsBody2Ds" #: scene/2d/joints_2d.cpp msgid "Node A and Node B must be different PhysicsBody2Ds" @@ -12582,7 +12591,7 @@ msgstr "Esta corrente de Bone2D deve terminar num nó Skeleton2D." #: scene/2d/skeleton_2d.cpp msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node." -msgstr "Um Bone2D só funciona com um nó parente Skeleton2D ou Bone2D." +msgstr "Um Bone2D só funciona com um nó progenitor Skeleton2D ou Bone2D." #: scene/2d/skeleton_2d.cpp msgid "" @@ -12595,25 +12604,25 @@ msgid "" "to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, " "KinematicBody2D, etc. to give them a shape." msgstr "" -"TileMap com Usar Parente ativo precisa de um parente CollisionObject2D para " -"lhe dar formas. Use-o como um filho de Area2D, StaticBody2D, RigidBody2D, " -"KinematicBody2D, etc. para lhes dar uma forma." +"TileMap com Usar Progenitor ativo precisa de um progenitor CollisionObject2D " +"para lhe dar formas. Use-o como um filho de Area2D, StaticBody2D, " +"RigidBody2D, KinematicBody2D, etc. para lhes dar uma forma." #: scene/2d/visibility_notifier_2d.cpp msgid "" "VisibilityEnabler2D works best when used with the edited scene root directly " "as parent." msgstr "" -"VisibilityEnabler2D funciona melhor quando usado diretamente como parente na " -"cena raiz editada." +"VisibilityEnabler2D funciona melhor quando usado diretamente como progenitor " +"na cena raiz editada." #: scene/3d/arvr_nodes.cpp msgid "ARVRCamera must have an ARVROrigin node as its parent." -msgstr "ARVRCamera precisa de um nó ARVROrigin como parente." +msgstr "ARVRCamera precisa de um nó ARVROrigin como progenitor." #: scene/3d/arvr_nodes.cpp msgid "ARVRController must have an ARVROrigin node as its parent." -msgstr "ARVRController precisa de um nó ARVROrigin como parente." +msgstr "ARVRController precisa de um nó ARVROrigin como progenitor." #: scene/3d/arvr_nodes.cpp msgid "" @@ -12625,7 +12634,7 @@ msgstr "" #: scene/3d/arvr_nodes.cpp msgid "ARVRAnchor must have an ARVROrigin node as its parent." -msgstr "ARVRAnchor precisa de um nó ARVROrigin como parente." +msgstr "ARVRAnchor precisa de um nó ARVROrigin como progenitor." #: scene/3d/arvr_nodes.cpp msgid "" @@ -12641,27 +12650,23 @@ msgstr "ARVROrigin exige um nó filho ARVRCamera." #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "A procurar malhas e luzes" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "A analisar geometria..." +msgstr "A preparar geometria (%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Ver ambiente" +msgstr "A preparar ambiente" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "A gerar Lightmaps" +msgstr "A gerar captura" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "A gerar Lightmaps" +msgstr "A guardar lightmaps" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -12724,7 +12729,7 @@ msgstr "ConcavePolygonShape apenas suporta RigidBody no modo estático." #: scene/3d/cpu_particles.cpp msgid "Nothing is visible because no mesh has been assigned." -msgstr "Nada é visível porque nenhuma Malha foi atribuída." +msgstr "Nada é visível porque nenhuma malha foi atribuída." #: scene/3d/cpu_particles.cpp msgid "" @@ -12736,7 +12741,7 @@ msgstr "" #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" -msgstr "A desenhar Meshes" +msgstr "A Traçar Malhas" #: scene/3d/gi_probe.cpp msgid "Finishing Plot" @@ -12753,7 +12758,7 @@ msgstr "" #: scene/3d/interpolated_camera.cpp msgid "" "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." -msgstr "A InterpolatedCamerda foi deprecada e será removida no Godot 4.0." +msgstr "InterpolatedCamerda foi descontinuada e será removida no Godot 4.0." #: scene/3d/light.cpp msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." @@ -12787,7 +12792,7 @@ msgstr "" msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" -"Nada é visível porque não foram atribuídas Meshes aos passos de desenho." +"Nada é visível porque não foram atribuídas malhas aos passos de desenho." #: scene/3d/particles.cpp msgid "" @@ -12807,7 +12812,7 @@ msgid "" "parent Path's Curve resource." msgstr "" "ROTATION_ORIENTED de PathFollow requer \"Up Vector\" ativado no recurso de " -"Curva do Caminho do seu pai." +"Curva do Caminho do seu progenitor." #: scene/3d/physics_body.cpp msgid "" @@ -12833,7 +12838,7 @@ msgstr "Nó B tem de ser um PhysicsBody" #: scene/3d/physics_joint.cpp msgid "Joint is not connected to any PhysicsBodies" -msgstr "Junção não está conetada a quaisquer PhysicsBodies" +msgstr "Junção não está conectada a quaisquer PhysicsBodies" #: scene/3d/physics_joint.cpp msgid "Node A and Node B must be different PhysicsBodies" @@ -12897,7 +12902,7 @@ msgid "" "This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set " "this environment's Background Mode to Canvas (for 2D scenes)." msgstr "" -"Este WorldEnvironment ė ignorado. Pode adicionar uma Camera (para cenas 3D) " +"Este WorldEnvironment é ignorado. Pode adicionar uma Câmera (para cenas 3D) " "ou definir o Modo Background deste ambiente como Canvas (para cenas 2D)." #: scene/animation/animation_blend_tree.cpp @@ -13064,6 +13069,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"A porta coletora está conectada mas não é usada. Considere mudar a origem " +"para 'SamplerPort'." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index 838a4e2f29..025ae380fd 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -106,12 +106,18 @@ # ThiagoCTN <thiagocampostn@gmail.com>, 2020. # Alec Santos <alecsantos96@gmail.com>, 2020. # Augusto Milão <augusto.milao01@gmail.com>, 2021. +# Gabriel Gavazzi Felix <mutcholoko32@gmail.com>, 2021. +# Lucas Dantas <lucas.lucantas38@gmail.com>, 2021. +# Carlos Bonifacio <carlosboni.sa@gmail.com>, 2021. +# Lucas Castro <castroclucas@gmail.com>, 2021. +# Ricardo Zamarrenho Carvalho Correa <ricardozcc17@gmail.com>, 2021. +# Diego dos Reis Macedo <diego_dragon97@hotmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2021-01-06 18:29+0000\n" -"Last-Translator: Augusto Milão <augusto.milao01@gmail.com>\n" +"PO-Revision-Date: 2021-02-15 10:51+0000\n" +"Last-Translator: Carlos Bonifacio <carlosboni.sa@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -119,7 +125,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1856,7 +1862,7 @@ msgstr "Novo" #: editor/editor_feature_profile.cpp editor/editor_node.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "Import" +msgstr "Importar" #: editor/editor_feature_profile.cpp editor/project_export.cpp msgid "Export" @@ -2482,7 +2488,7 @@ msgstr "Não há cena definida para rodar." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Salvar a cena antes de executar..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3237,6 +3243,25 @@ msgid "Open & Run a Script" msgstr "Abrir e Rodar um Script" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Os seguintes arquivos são mais recentes no disco.\n" +"Que ação deve ser tomada?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Recarregar" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Salve novamente" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Novo Herdado" @@ -4010,19 +4035,16 @@ msgid "Searching..." msgstr "Procurando..." #: editor/find_in_files.cpp -#, fuzzy msgid "%d match in %d file." -msgstr "%d correspondências." +msgstr "%d correspondência em %d arquivo." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d file." -msgstr "%d correspondências." +msgstr "%d correspondências em %d arquivo." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d files." -msgstr "%d correspondências." +msgstr "%d correspondências em %d arquivos." #: editor/groups_editor.cpp msgid "Add to Group" @@ -5263,14 +5285,12 @@ msgid "Assets ZIP File" msgstr "Arquivo ZIP de Assets" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" "Não foi possível determinar um caminho para salvar as imagens do lightmap.\n" -"Salve sua cena (para que as imagens sejam salvas no mesmo diretório), ou " -"escolha um caminho nas propriedades do BakedLightmap." +"Salve sua cena e tente novamente." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5289,26 +5309,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Falha ao determinar o tamanho do lightmap. Tamanho máximo do lightmap é " +"muito baixo?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Alguma malha é inválida. Certifique-se de que os valores do canal UV2 estão " +"contidos na região quadrada [0.0,1.0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"O editor Godot foi construído sem suporte à ray tracing, os lightmaps não " +"podem ser bakeados." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" -msgstr "Preparar Lightmaps" +msgstr "Bake Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Selecionar o Arquivo de Modelo" +msgstr "Selecione o arquivo de lightmap bake:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6404,9 +6429,8 @@ msgstr "" "Só é permitido colocar um ponto em um material processador ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Converter para Particulas CPU" +msgstr "Converter para CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -7113,16 +7137,6 @@ msgstr "" "Os seguintes arquivos são mais recentes no disco.\n" "Que ação deve ser tomada?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Recarregar" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Salve novamente" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Depurador" @@ -7440,6 +7454,11 @@ msgid "Yaw" msgstr "Guinada" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Tamanho: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Objetos Desenhados" @@ -8858,9 +8877,8 @@ msgid "Visual Shader Input Type Changed" msgstr "Tipo de Entrada de Shader Visual Alterado" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "Definir Nome Uniforme" +msgstr "UniformRef Name foi altearado" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9575,7 +9593,6 @@ msgstr "" "uniformes e constantes." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "A reference to an existing uniform." msgstr "Uma referência a um uniforme existente." @@ -10125,6 +10142,11 @@ msgid "Projects" msgstr "Projetos" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Reconectando, por favor aguarde." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Ultima Modificação" @@ -11679,36 +11701,33 @@ msgstr "Atribua um recurso MeshLibrary a este GridMap para usar seus meshes." #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Iniciar pré-cálculo" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Preparando estruturas de dados" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Gerar AABB" +msgstr "Gerar buffers" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Direções" +msgstr "Direct lightning" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Recuar Direita" +msgstr "Iluminação indireta" #: modules/lightmapper_cpu/lightmapper_cpu.cpp #, fuzzy msgid "Post processing" -msgstr "Pós-Processamento" +msgstr "Pós-processamento" #: modules/lightmapper_cpu/lightmapper_cpu.cpp #, fuzzy msgid "Plotting lightmaps" -msgstr "Planejando Luzes:" +msgstr "Traçando mapas de luz" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12227,7 +12246,7 @@ msgstr "Selecione um dispositivo da lista" #: platform/android/export/export.cpp msgid "Unable to find the 'apksigner' tool." -msgstr "" +msgstr "Não foi possível encontrar a ferramenta 'apksigner'." #: platform/android/export/export.cpp msgid "" @@ -12250,18 +12269,12 @@ msgstr "" "exportação." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." -msgstr "" -"Caminho do Android SDK inválido para o build personalizado em Configurações " -"do Editor." +msgstr "Um caminho Android SDK é necessário nas Configurações do Editor." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "" -"Caminho do Android SDK inválido para o build personalizado em Configurações " -"do Editor." +msgstr "Caminho do Android SDK está inválido para Configurações do Editor." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -12270,22 +12283,23 @@ msgstr "Diretório 'ferramentas-da-plataforma' ausente!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." msgstr "" +"Não foi possível encontrar o comando adb nas ferramentas do Android SDK." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." msgstr "" -"Caminho do Android SDK inválido para o build personalizado em Configurações " +"Por favor, verifique o caminho do Android SDK especificado nas Configurações " "do Editor." #: platform/android/export/export.cpp -#, fuzzy msgid "Missing 'build-tools' directory!" -msgstr "Diretório 'ferramentas-da-plataforma' ausente!" +msgstr "Diretório 'ferramentas-da-plataforma' está faltando !" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." msgstr "" +"Não foi possível encontrar o comando apksigner nas ferramentas de build do " +"Android SDK." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12755,7 +12769,7 @@ msgstr "ARVROrigin necessita um nó ARVRCamera como filho." #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Encontrando malhas e luzes" #: scene/3d/baked_lightmap.cpp #, fuzzy @@ -12763,19 +12777,17 @@ msgid "Preparing geometry (%d/%d)" msgstr "Analisando Geometria..." #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Visualizar Ambiente" +msgstr "Preparando ambiente" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "Generando Lightmaps" +msgstr "Gerando captura" #: scene/3d/baked_lightmap.cpp #, fuzzy msgid "Saving lightmaps" -msgstr "Generando Lightmaps" +msgstr "Salvando mapas de luz" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -13121,9 +13133,8 @@ msgid "Must use a valid extension." msgstr "Deve usar uma extensão válida." #: scene/gui/graph_edit.cpp -#, fuzzy msgid "Enable grid minimap." -msgstr "Ativar Snap" +msgstr "Ativar minimapa de grade." #: scene/gui/popup.cpp msgid "" @@ -13184,6 +13195,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"A porta sampler está conectada mas não está sendo usada. Considere alterar a " +"fonte para 'SamplerPort'." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/ro.po b/editor/translations/ro.po index 8cdaef5b59..6497621bc8 100644 --- a/editor/translations/ro.po +++ b/editor/translations/ro.po @@ -3148,6 +3148,23 @@ msgid "Open & Run a Script" msgstr "Deschide și Execută un Script" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "Următoarele file au eșuat extragerea din pachet:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Derivare Nouă" @@ -7083,16 +7100,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7427,6 +7434,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -10065,6 +10076,11 @@ msgid "Projects" msgstr "Proiect" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Se recuperează oglinzile, te rog așteaptă..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/ru.po b/editor/translations/ru.po index 6482a315a9..e079c49e3f 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -91,12 +91,13 @@ # Roman Tolkachyov <roman@tolkachyov.name>, 2020. # Igor Grachev <igorecha.9999@gmail.com>, 2020. # Dmytro Meleshko <dmytro.meleshko@gmail.com>, 2021. +# narrnika <narr13niki@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-01-08 19:32+0000\n" -"Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n" +"PO-Revision-Date: 2021-02-05 23:44+0000\n" +"Last-Translator: narrnika <narr13niki@gmail.com>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" "Language: ru\n" @@ -105,7 +106,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2468,7 +2469,7 @@ msgstr "Нет открытой сцены для запуска." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Сохранение сцены перед запуском..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3219,6 +3220,25 @@ msgid "Open & Run a Script" msgstr "Открыть и запустить скрипт" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Следующие файлы новее на диске.\n" +"Какие меры должны быть приняты?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Перезагрузить" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Пересохранить" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Новая унаследованная сцена" @@ -5232,14 +5252,12 @@ msgid "Assets ZIP File" msgstr "ZIP файл ассетов" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" -"Не удается определить путь для сохранения lightmap.\n" -"Сохраните ваши сцены (чтобы изображения были сохранены в том же разделе), " -"или выберите путь сохранения в свойствах BakedLightmap." +"Не удалось определить путь для сохранения изображений карты освещения.\n" +"Сохраните сцену и попробуйте ещё раз." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5257,26 +5275,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Не удалось определить размер карты освещения. Максимальный размер карты " +"освещения слишком мал?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Некоторая полисетка некорректна. Убедитесь, что значения канала UV2 " +"находятся в квадратной области [0.0,1.0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Редактор Godot был собран без поддержки трассировки лучей, карты освещения " +"невозможно запечь." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Запекать карты освещения" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Выбрать файл шаблона" +msgstr "Выберите файл запекания карты освещения:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5724,7 +5747,7 @@ msgstr "Очистить пользовательские кости" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "View" -msgstr "Обзор" +msgstr "Вид" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Always Show Grid" @@ -5764,7 +5787,7 @@ msgstr "Кадрировать выбранное" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Preview Canvas Scale" -msgstr "Просмотреть Canvas Scale" +msgstr "Предпросмотр Canvas Scale" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Translation mask for inserting keys." @@ -6368,9 +6391,8 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Возможно установить точку только в ParticlesMaterial материал" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Преобразовать в CPUParticles" +msgstr "Преобразовать в CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -7076,16 +7098,6 @@ msgstr "" "Следующие файлы новее на диске.\n" "Какие меры должны быть приняты?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Перезагрузить" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Пересохранить" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Отладчик" @@ -7406,8 +7418,12 @@ msgid "Yaw" msgstr "Рыскание" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "Размер" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" -msgstr "Нарисовано обьектов" +msgstr "Нарисовано объектов" #: editor/plugins/spatial_editor_plugin.cpp msgid "Material Changes" @@ -10089,6 +10105,11 @@ msgid "Projects" msgstr "Проекты" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Получение зеркал, пожалуйста подождите..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Последнее изменение" @@ -11646,36 +11667,31 @@ msgstr "" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Начать запекание" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Подготовка структур данных" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Генерировать AABB" +msgstr "Генерировать буфферы" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Направления" +msgstr "Прямое освещение" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Отступ вправо" +msgstr "Непрямое освещение" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" -msgstr "Пост-обработка" +msgstr "Постобработка" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "Построение света:" +msgstr "Построение карт освещения" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12189,9 +12205,8 @@ msgid "Select device from the list" msgstr "Выберите устройство из списка" #: platform/android/export/export.cpp -#, fuzzy msgid "Unable to find the 'apksigner' tool." -msgstr "Не удалось найти инструмент zipalign." +msgstr "Не удалось найти инструмент «apksigner»." #: platform/android/export/export.cpp msgid "" @@ -12212,18 +12227,13 @@ msgstr "" "Хранилище ключей не настроено ни в настройках редактора, ни в предустановках." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." msgstr "" -"Неправильный путь к Android SDK для пользовательской сборки в настройках " -"редактора." +"Требуется указать действительный путь к Android SDK в Настройках редактора." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "" -"Неправильный путь к Android SDK для пользовательской сборки в настройках " -"редактора." +msgstr "Недействительный путь Android SDK в Настройках редактора." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -12231,14 +12241,12 @@ msgstr "Директория «platform-tools» отсутствует!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." -msgstr "" +msgstr "Не удалось найти команду adb в Android SDK platform-tools." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." msgstr "" -"Неправильный путь к Android SDK для пользовательской сборки в настройках " -"редактора." +"Пожалуйста, проверьте каталог Android SDK, указанный в Настройках редактора." #: platform/android/export/export.cpp msgid "Missing 'build-tools' directory!" @@ -12246,7 +12254,7 @@ msgstr "Директория «build-tools» отсутствует!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." -msgstr "" +msgstr "Не удалось найти команду apksigner в Android SDK build-tools." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12719,27 +12727,23 @@ msgstr "ARVROrigin требует дочерний узел ARVRCamera." #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Поиск полисеток и источников света" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "Анализ геометрии..." +msgstr "Подготовка геометрии (%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Окружение" +msgstr "Подготовка окружения" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "Создание карт освещения" +msgstr "Создание захвата" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "Создание карт освещения" +msgstr "Сохранение карт освещения" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -13143,6 +13147,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"Порт сэмплера подключен, но не используется. Рассмотрите возможность " +"изменения источника на «SamplerPort»." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/si.po b/editor/translations/si.po index 46e606d935..2e5a6f0f81 100644 --- a/editor/translations/si.po +++ b/editor/translations/si.po @@ -3,12 +3,13 @@ # Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Yohan Sandun <Yohan99ysk@gmail.com>, 2018. +# thushariii <thusharipahalage@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-13 14:42+0100\n" -"Last-Translator: Yohan Sandun <Yohan99ysk@gmail.com>\n" +"PO-Revision-Date: 2021-02-05 09:20+0000\n" +"Last-Translator: thushariii <thusharipahalage@gmail.com>\n" "Language-Team: Sinhala <https://hosted.weblate.org/projects/godot-engine/" "godot/si/>\n" "Language: si\n" @@ -16,7 +17,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: Poedit 2.2\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -103,11 +104,11 @@ msgstr "කැඩපත" #: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp msgid "Time:" -msgstr "" +msgstr "කාලය:" #: editor/animation_bezier_editor.cpp msgid "Value:" -msgstr "" +msgstr "වටිනාකම:" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" @@ -190,7 +191,7 @@ msgstr "සජීවීකරණ පුනරාවර්ථනය" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "" +msgstr "සජීවිකරණ ලූපය වෙනස් කරන්න" #: editor/animation_track_editor.cpp msgid "Property Track" @@ -249,7 +250,7 @@ msgstr "Anim පසුරු:" #: editor/animation_track_editor.cpp msgid "Change Track Path" -msgstr "" +msgstr "පථය වෙනස් කරන්න" #: editor/animation_track_editor.cpp msgid "Toggle this track on/off." @@ -331,7 +332,7 @@ msgstr "යතුරු මකා දමන්න" #: editor/animation_track_editor.cpp msgid "Change Animation Update Mode" -msgstr "" +msgstr "සජීවිකරණ යාවත්කාලීන ප්රකාරය වෙනස් කරන්න" #: editor/animation_track_editor.cpp #, fuzzy @@ -435,7 +436,7 @@ msgstr "ලුහුබදින්නෙක් එක් කරන්න" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." -msgstr "" +msgstr "පථය අවලංගු බැවින් යතුරක් එක් කළ නොහැක." #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" @@ -3006,6 +3007,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6784,16 +6801,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7109,6 +7116,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9654,6 +9665,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/sk.po b/editor/translations/sk.po index c9133c8d7c..7a8b132fbd 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -3122,6 +3122,23 @@ msgid "Open & Run a Script" msgstr "Otvoriť a vykonať skript" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "Nasledovné súbory sa nepodarilo extrahovať z balíka:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Novo Zdedené" @@ -6984,16 +7001,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7321,6 +7328,11 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Veľkosť: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9958,6 +9970,11 @@ msgid "Projects" msgstr "Zakladatelia Projektu" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Načítavanie zrkadiel, prosím čakajte..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/sl.po b/editor/translations/sl.po index a953258d3f..bdee4655ab 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -12,12 +12,13 @@ # Arnold Marko <arnold.marko@gmail.com>, 2019. # Alex <alexrixhardson@gmail.com>, 2019. # Andrew Poženel <andrej.pozenel@outlook.com>, 2020. +# Jakob Tadej Vrtačnik <minecraftalka2@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-07-15 02:42+0000\n" -"Last-Translator: Andrew Poženel <andrej.pozenel@outlook.com>\n" +"PO-Revision-Date: 2021-02-01 20:54+0000\n" +"Last-Translator: Jakob Tadej Vrtačnik <minecraftalka2@gmail.com>\n" "Language-Team: Slovenian <https://hosted.weblate.org/projects/godot-engine/" "godot/sl/>\n" "Language: sl\n" @@ -26,7 +27,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" "%100==4 ? 2 : 3;\n" -"X-Generator: Weblate 4.2-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -370,7 +371,7 @@ msgstr "Odstrani animacijsko sled" #: editor/animation_track_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "Ustvarim NOVO sled za %s in vstavim ključ?" +msgstr "Ustvarim NOVO sled za %s in vstavi ključ?" #: editor/animation_track_editor.cpp msgid "Create %d NEW tracks and insert keys?" @@ -3255,6 +3256,22 @@ msgid "Open & Run a Script" msgstr "Odpri & Zaženi Skripto" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Novo Podedovano" @@ -7280,16 +7297,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Razhroščevalnik" @@ -7626,6 +7633,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -10301,6 +10312,11 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Pridobivanje virov, počakajte..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/sq.po b/editor/translations/sq.po index 7dcc32735d..73c3b1cb43 100644 --- a/editor/translations/sq.po +++ b/editor/translations/sq.po @@ -3191,6 +3191,22 @@ msgid "Open & Run a Script" msgstr "Hap & Fillo një Shkrim" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "E Trashëguar e Re" @@ -7047,16 +7063,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7380,6 +7386,11 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Madhësia: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9958,6 +9969,11 @@ msgid "Projects" msgstr "Projekti" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Duke marrë pasqyrat, ju lutem prisni..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index b07bc4e1c9..e56d9fd650 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -3400,6 +3400,25 @@ msgid "Open & Run a Script" msgstr "Отвори и покрени скриптицу" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Следеће датотеке су нове на диску.\n" +"Која акција се треба предузети?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Освежи" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Поново сачувај" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Нова наслеђена" @@ -7674,16 +7693,6 @@ msgstr "" "Следеће датотеке су нове на диску.\n" "Која акција се треба предузети?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Освежи" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Поново сачувај" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Дебагер" @@ -8041,6 +8050,11 @@ msgid "Yaw" msgstr "Горе-Доле" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Величина:" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Нацртани објекти" @@ -11142,6 +11156,11 @@ msgstr "Пројекти" #: editor/project_manager.cpp #, fuzzy +msgid "Loading, please wait..." +msgstr "Прихватам одредишта, молим сачекајте..." + +#: editor/project_manager.cpp +#, fuzzy msgid "Last Modified" msgstr "Задњи Измењен" diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po index 232c53da80..c177f0983b 100644 --- a/editor/translations/sr_Latn.po +++ b/editor/translations/sr_Latn.po @@ -3022,6 +3022,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6822,16 +6838,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7153,6 +7159,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9733,6 +9743,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/sv.po b/editor/translations/sv.po index cab4b7e5bc..4e08c39b9d 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -3193,6 +3193,23 @@ msgid "Open & Run a Script" msgstr "Öppna & Kör ett Skript" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "Följande filer gick inte att packa upp från tillägget:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Ladda om" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Spara om" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -7166,16 +7183,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Ladda om" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Spara om" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7515,6 +7522,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -10192,6 +10203,11 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Laddar..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Senast Ändrad" diff --git a/editor/translations/ta.po b/editor/translations/ta.po index 45de03bdb3..407ab40dc8 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -3012,6 +3012,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6789,16 +6805,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7114,6 +7120,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9654,6 +9664,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/te.po b/editor/translations/te.po index aa703812fe..eff6151683 100644 --- a/editor/translations/te.po +++ b/editor/translations/te.po @@ -2983,6 +2983,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6735,16 +6751,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7059,6 +7065,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9580,6 +9590,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/th.po b/editor/translations/th.po index 4b1d938c54..090e7388a2 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -7,13 +7,13 @@ # Thanachart Monpassorn <nunf_2539@hotmail.com>, 2020. # Anonymous <noreply@weblate.org>, 2020. # Lon3r <mptube.p@gmail.com>, 2020. -# Kongfa Warorot <gongpha@hotmail.com>, 2020. +# Kongfa Warorot <gongpha@hotmail.com>, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-12-31 07:09+0000\n" -"Last-Translator: Thanachart Monpassorn <nunf_2539@hotmail.com>\n" +"PO-Revision-Date: 2021-02-15 10:51+0000\n" +"Last-Translator: Kongfa Warorot <gongpha@hotmail.com>\n" "Language-Team: Thai <https://hosted.weblate.org/projects/godot-engine/godot/" "th/>\n" "Language: th\n" @@ -21,7 +21,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2347,7 +2347,7 @@ msgstr "ยังไม่ได้เลือกฉากที่จะเล #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "บันทึกฉากก่อนที่จะทำงาน..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3076,6 +3076,25 @@ msgid "Open & Run a Script" msgstr "เปิดและรันสคริปต์" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"ไฟล์ต่อไปนี้ในดิสก์ใหม่กว่า\n" +"จะทำอย่างไรต่อไป?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "โหลดใหม่" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "บันทึกอีกครั้ง" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "สืบทอด" @@ -6887,16 +6906,6 @@ msgstr "" "ไฟล์ต่อไปนี้ในดิสก์ใหม่กว่า\n" "จะทำอย่างไรต่อไป?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "โหลดใหม่" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "บันทึกอีกครั้ง" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "ตัวดีบัก" @@ -7213,6 +7222,11 @@ msgid "Yaw" msgstr "Yaw" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "ขนาด: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "ออบเจกต์ที่วาด" @@ -9846,6 +9860,11 @@ msgid "Projects" msgstr "โปรเจกต์" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "กำลังเรียกข้อมูล โปรดรอ..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "แก้ไขล่าสุด" diff --git a/editor/translations/tr.po b/editor/translations/tr.po index 916e81ec01..624f32aa42 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -46,7 +46,7 @@ # Kaan Genç <kaan@kaangenc.me>, 2020. # Anonymous <noreply@weblate.org>, 2020. # Güneş Gümüş <gunes.gumus.001@gmail.com>, 2020. -# Oğuz Ersen <oguzersen@protonmail.com>, 2020. +# Oğuz Ersen <oguzersen@protonmail.com>, 2020, 2021. # Vedat Günel <gunel15@itu.edu.tr>, 2020. # Ahmet Elgün <ahmetelgn@gmail.com>, 2020. # Efruz Yıldırır <efruzyildirir@gmail.com>, 2020. @@ -55,11 +55,12 @@ # Yusuf Osman YILMAZ <wolfkan4219@gmail.com>, 2020. # furkan atalar <fatalar55@gmail.com>, 2020. # Suleyman Poyraz <zaryob.dev@gmail.com>, 2020. +# Çağlar KOPARIR <ckoparir@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-12-14 11:03+0000\n" +"PO-Revision-Date: 2021-02-05 23:44+0000\n" "Last-Translator: Oğuz Ersen <oguzersen@protonmail.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/" "godot/tr/>\n" @@ -68,7 +69,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.4-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2430,7 +2431,7 @@ msgstr "Çalıştırmak için herhangi bir sahne seçilmedi." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Çalıştırmadan önce sahneyi kaydedin..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3181,6 +3182,25 @@ msgid "Open & Run a Script" msgstr "Aç & Bir Betik Çalıştır" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Aşağıdaki dosyalar diskte daha yeni.\n" +"Hangi eylem yapılsın?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Yeniden Yükle" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Yeniden Kaydet" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Yeni Örnekleme" @@ -3951,19 +3971,16 @@ msgid "Searching..." msgstr "Aranıyor..." #: editor/find_in_files.cpp -#, fuzzy msgid "%d match in %d file." -msgstr "%d eşleşme." +msgstr "%d eşleşme %d dosyada." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d file." -msgstr "%d eşleşme." +msgstr "%d eşleşme %d dosyada." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d files." -msgstr "%d eşleşme." +msgstr "%d eşleşme %d dosyada." #: editor/groups_editor.cpp msgid "Add to Group" @@ -5201,14 +5218,12 @@ msgid "Assets ZIP File" msgstr "Varlıkların ZIP Dosyası" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" -"Lightmap resimleri için kaydetme yolu belirlenemiyor.\n" -"Sahneni kaydet (resimler aynı klasöre kaydedilmeli), ya da BakedLightmap " -"özelliklerinden bir kayıt yolu seçin." +"Lightmap dosyaları için kaydetme yolu belirlenemiyor.\n" +"Sahneyi kaydedip tekrar deneyin." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5226,27 +5241,30 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" -msgstr "" +msgstr "Lightmap boyutu belirlenemedi. Lightmap boyutu mu çok küçuk?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Bazı örgüler geçersiz. [0.0,1.0] bölgesinin UV2 kanal değerlerini " +"içerdiğinden emin olun." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Godot editör ışın yansıma desteği olmadan derlenmiş, ışık haritaları " +"pişirilemez." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Işık-Haritalarını Pişir" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Şablon Dosyası Seç" +msgstr "Işık Haritası pişirme dosyası seçiniz:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6338,9 +6356,8 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Nokta sadece ParçacıkMateryal işlem materyalinin içinde ayarlanabilir" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "CPUParçacıklar 'a dönüştür" +msgstr "2BİşlemciPartikül'e dönüştür" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -7045,16 +7062,6 @@ msgstr "" "Aşağıdaki dosyalar diskte daha yeni.\n" "Hangi eylem yapılsın?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Yeniden Yükle" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Yeniden Kaydet" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Hata Ayıklayıcı" @@ -7373,6 +7380,10 @@ msgid "Yaw" msgstr "Yalpala" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "Boyut" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Çizilmiş Nesneler" @@ -10053,6 +10064,11 @@ msgid "Projects" msgstr "Projeler" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Aynalar alınıyor, lütfen bekleyin..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Son Değişiklik" @@ -11603,36 +11619,31 @@ msgstr "Model olarak kullanması için bu GridMap'e MeshLibrary kaynağı atayı #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Pişirmeye Başla" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Veri yapıları hazırlanıyor" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "AABB Üret" +msgstr "Arabellek Oluştur" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Yönler" +msgstr "Doğrudan aydınlatma" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Sağa Girintile" +msgstr "Dolaylı aydınlatma" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" -msgstr "Artçıl-İşlem" +msgstr "Rötuş" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "Örüntüler Haritalanıyor:" +msgstr "Işık haritalarını çizme" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12144,9 +12155,8 @@ msgid "Select device from the list" msgstr "Listeden aygıt seç" #: platform/android/export/export.cpp -#, fuzzy msgid "Unable to find the 'apksigner' tool." -msgstr "Zipalign aracı bulunamıyor." +msgstr "'apksigner' aracı bulunamıyor." #: platform/android/export/export.cpp msgid "" @@ -12168,14 +12178,12 @@ msgstr "" "serbest bırakın." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." -msgstr "Editör Ayarlarında özel derleme için geçersiz Android SDK yolu." +msgstr "Editör Ayarlarında geçerli bir Android SDK yolu gerekli." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "Editör Ayarlarında özel derleme için geçersiz Android SDK yolu." +msgstr "Editör Ayarlarında geçersiz Android SDK yolu." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -12183,12 +12191,12 @@ msgstr "Eksik 'platform araçları' dizini!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." -msgstr "" +msgstr "Android SDK platform-tools'un adb komutu bulunamıyor." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." -msgstr "Editör Ayarlarında özel derleme için geçersiz Android SDK yolu." +msgstr "" +"Lütfen Editör Ayarlarında girilen Android SDK klasörünü kontrol ediniz." #: platform/android/export/export.cpp msgid "Missing 'build-tools' directory!" @@ -12196,7 +12204,7 @@ msgstr "Eksik 'inşa-araçları' dizini!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." -msgstr "" +msgstr "Android SDK platform-tools'un apksigner komutu bulunamıyor." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12668,27 +12676,23 @@ msgstr "ARVROrigin bir ARVRCamera alt düğümü gerektirir." #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Örgü ve ışıkları bulmak" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "Geometri Ayrıştırılıyor..." +msgstr "Geometri hazırlanıyor (%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Ortamı Göster" +msgstr "Ortam hazırlanıyor" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "Işık-haritaları Üretiliyor" +msgstr "Yakalama oluşturuluyor" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "Işık-haritaları Üretiliyor" +msgstr "Işık-haritaları kaydediliyor" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -13037,9 +13041,8 @@ msgid "Must use a valid extension." msgstr "Geçerli bir uzantı kullanılmalı." #: scene/gui/graph_edit.cpp -#, fuzzy msgid "Enable grid minimap." -msgstr "Yapışmayı Enkinleştir" +msgstr "Izgara haritasını etkinleştir." #: scene/gui/popup.cpp msgid "" @@ -13099,6 +13102,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"Örnekleyici bağlantı noktası bağlandı ama kullanılmadı. Kaynağı " +"'ÖrnekleyiciBağlantıNoktası' olarak değiştirmeyi düşünün." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/tzm.po b/editor/translations/tzm.po index 7853cd3b8c..bbd4822fbd 100644 --- a/editor/translations/tzm.po +++ b/editor/translations/tzm.po @@ -2981,6 +2981,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "" @@ -6733,16 +6749,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7057,6 +7063,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9577,6 +9587,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/uk.po b/editor/translations/uk.po index 320c85be54..6b94e70e43 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -3,7 +3,7 @@ # Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Aleksandr <XpycT.TOP@gmail.com>, 2017. -# Yuri Chornoivan <yurchor@ukr.net>, 2018, 2019, 2020. +# Yuri Chornoivan <yurchor@ukr.net>, 2018, 2019, 2020, 2021. # Андрій Бандура <andriykopanytsia@gmail.com>, 2018. # Гидеон Теон <t.kudely94@gmail.com>, 2017. # Максим Якимчук <xpinovo@gmail.com>, 2018, 2019. @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: Ukrainian (Godot Engine)\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-12-29 21:52+0000\n" +"PO-Revision-Date: 2021-02-05 23:44+0000\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/" "godot/uk/>\n" @@ -30,7 +30,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2401,7 +2401,7 @@ msgstr "Немає визначеної сцени для виконання." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Зберегти сцену перед запуском…" #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3157,6 +3157,25 @@ msgid "Open & Run a Script" msgstr "Відкрити і запустити скрипт" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Такі файли на диску новіші.\n" +"Що робити?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "Перезавантажити" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "Перезаписати" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Новий успадкований" @@ -5178,14 +5197,12 @@ msgid "Assets ZIP File" msgstr "ZIP файл ресурсів" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" "Не вдається визначити шлях для збереження карт освітлення.\n" -"Збережіть вашу сцену (щоб зображення були збережені в одній теці), або " -"виберіть шлях зберігання у властивостях BakedLightmap." +"Збережіть вашу сцену і повторіть спробу." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5204,26 +5221,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Не вдалося визначити розмір карти освітлення. Максимальний розмір карти " +"освітлення є надто малим?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Частина сітки є некоректною. Переконайтеся, що значення каналів UV2 " +"потрапляють до квадратної області [0.0,1.0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Редактор Godot було зібрано без підтримки трасування променів. Карти " +"освітлення не вдасться побудувати." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Запікати карти освітлення" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Виберіть файл шаблону" +msgstr "Виберіть файл приготування карти освітлення:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6318,9 +6340,8 @@ msgstr "" "Поставити точку можна тільки в процедурному матеріалі ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "Перетворити на CPUParticles" +msgstr "Перетворити на CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -7028,16 +7049,6 @@ msgstr "" "Такі файли на диску новіші.\n" "Що робити?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "Перезавантажити" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "Перезаписати" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "Зневаджувач" @@ -7358,6 +7369,10 @@ msgid "Yaw" msgstr "Відхилення" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "Розмір" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "Намальовано об'єктів" @@ -10049,6 +10064,11 @@ msgid "Projects" msgstr "Проєкти" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "Отримання дзеркал, будь ласка, зачекайте..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "Востаннє змінено" @@ -11605,36 +11625,31 @@ msgstr "" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "Почати обробку" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "Готуємо структури даних" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "Генерувати AABB" +msgstr "Створити буфери" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "Напрямки" +msgstr "Безпосереднє освітлення" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "Збільшити відступ" +msgstr "Опосередковане освітлення" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" msgstr "Пост-обробка" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "Побудова світла:" +msgstr "Креслення карт освітлення" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -12150,9 +12165,8 @@ msgid "Select device from the list" msgstr "Вибрати пристрій зі списку" #: platform/android/export/export.cpp -#, fuzzy msgid "Unable to find the 'apksigner' tool." -msgstr "Не вдалося знайти програму zipalign." +msgstr "Не вдалося знайти програму apksigner." #: platform/android/export/export.cpp msgid "" @@ -12174,18 +12188,13 @@ msgstr "" "У шаблоні експортування неправильно налаштовано сховище ключів випуску." #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." msgstr "" -"Некоректний шлях до SDK для Android для нетипового збирання у параметрах " -"редактора." +"У параметрах редактора має бути вказано коректний шлях до SDK для Android." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "" -"Некоректний шлях до SDK для Android для нетипового збирання у параметрах " -"редактора." +msgstr "Некоректний шлях до SDK для Android у параметрах редактора." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -12194,13 +12203,13 @@ msgstr "Не знайдено каталогу «platform-tools»!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." msgstr "" +"Не вдалося знайти програми adb із інструментів платформи SDK для Android." #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." msgstr "" -"Некоректний шлях до SDK для Android для нетипового збирання у параметрах " -"редактора." +"Будь ласка, перевірте, чи правильно вказано каталог SDK для Android у " +"параметрах редактора." #: platform/android/export/export.cpp msgid "Missing 'build-tools' directory!" @@ -12209,6 +12218,7 @@ msgstr "Не знайдено каталогу «build-tools»!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." msgstr "" +"Не вдалося знайти програми apksigner з інструментів збирання SDK для Android." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12696,27 +12706,23 @@ msgstr "ARVROrigin повинен мати дочірній вузол ARVRCamer #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "Пошук сіток та джерел світла" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "Аналіз геометрії..." +msgstr "Приготування геометрії (%d з %d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "Перегляд середовища" +msgstr "Приготування середовища" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "Створення карт освітлення" +msgstr "Створення захоплення" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "Створення карт освітлення" +msgstr "Збереження карт освітлення" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -13128,6 +13134,8 @@ msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." msgstr "" +"Порт засобу семплювання з'єднано, але не використано. Вам варто змінити " +"джерело на «SamplerPort»." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index c7722c84c4..14ece3e011 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -3037,6 +3037,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp #, fuzzy msgid "New Inherited" msgstr "سب سکریپشن بنائیں" @@ -6886,16 +6902,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7218,6 +7224,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -9822,6 +9832,10 @@ msgid "Projects" msgstr ".تمام کا انتخاب" #: editor/project_manager.cpp +msgid "Loading, please wait..." +msgstr "" + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/vi.po b/editor/translations/vi.po index 97c2be742e..c88429c3d4 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -3140,6 +3140,22 @@ msgid "Open & Run a Script" msgstr "Mở & Chạy mã lệnh" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "Kế thừa mới" @@ -7025,16 +7041,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7366,6 +7372,11 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Size" +msgstr "Kích thước: " + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -10026,6 +10037,13 @@ msgid "Projects" msgstr "Dự án" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "" +"Đang quét các tệp tin,\n" +"Chờ một chút ..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index ac62631b92..20e4c929ac 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -58,7 +58,7 @@ # idleman <1524328475@qq.com>, 2019. # king <wangding1992@126.com>, 2019. # silentbird <silentbird520@outlook.com>, 2019. -# Haoyu Qiu <timothyqiu32@gmail.com>, 2019, 2020. +# Haoyu Qiu <timothyqiu32@gmail.com>, 2019, 2020, 2021. # Revan Ji <jiruifancr@gmail.com>, 2020. # nieyuanhong <15625988003@163.com>, 2020. # binotaliu <binota@protonmail.ch>, 2020. @@ -71,14 +71,16 @@ # MintSoda <lionlxh@qq.com>, 2020. # Gardner Belgrade <hapenia@sina.com>, 2020. # godhidden <z2zz2zz@yahoo.com>, 2020. -# BinotaLIU <me@binota.org>, 2020. +# BinotaLIU <me@binota.org>, 2020, 2021. # TakWolf <takwolf@foxmail.com>, 2020. +# twoBornottwoB <305766341@qq.com>, 2021. +# Magian <magian1127@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2020-12-31 07:09+0000\n" -"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n" +"PO-Revision-Date: 2021-02-07 05:50+0000\n" +"Last-Translator: BinotaLIU <me@binota.org>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hans/>\n" "Language: zh_CN\n" @@ -86,7 +88,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2410,7 +2412,7 @@ msgstr "没有设置要运行的场景。" #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "运行前保存场景..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3132,6 +3134,25 @@ msgid "Open & Run a Script" msgstr "打开并运行脚本" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"磁盘中的下列文件已更新。\n" +"请选择执行哪项操作?:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "重新加载" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "重新保存" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "新建继承" @@ -3772,7 +3793,7 @@ msgstr "全部折叠" #: editor/filesystem_dock.cpp msgid "Duplicate..." -msgstr "重复..." +msgstr "复制为..." #: editor/filesystem_dock.cpp msgid "Move to Trash" @@ -5118,7 +5139,6 @@ msgid "Assets ZIP File" msgstr "素材 ZIP 文件" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." @@ -5139,27 +5159,26 @@ msgstr "创建光照贴图失败,切确保文件是可写的。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" -msgstr "" +msgstr "无法确定光照贴图大小。最大光照贴图大小太小?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." -msgstr "" +msgstr "某些网格无效。确保UV2通道值包含在[0.0,1.0]平方区域内。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." -msgstr "" +msgstr "Godot编辑器是在没有光线跟踪支持的情况下构建的,光照贴图无法烘焙。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "烘焙光照贴图" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "选择模板文件" +msgstr "选择光照贴图烘焙文件:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6239,9 +6258,8 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "只可设为指向 ParticlesMaterial 处理材料" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "转换为 CPUParticles" +msgstr "转换为CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6940,16 +6958,6 @@ msgstr "" "磁盘中的下列文件已更新。\n" "请选择执行哪项操作?:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "重新加载" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "重新保存" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "调试器" @@ -7266,6 +7274,10 @@ msgid "Yaw" msgstr "偏航角" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "大小" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "绘制对象" @@ -9891,6 +9903,11 @@ msgid "Projects" msgstr "项目" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "检索镜像,请等待..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "修改时间" @@ -11425,36 +11442,31 @@ msgstr "向此 GridMap 提供网格库资源以使用其网格。" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "开始烘焙" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "准备数据结构" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "生成 AABB" +msgstr "生成缓冲区" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "方向" +msgstr "直接照明" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "向右缩进" +msgstr "间接照明" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" -msgstr "后期处理" +msgstr "后处理" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "正在绘制灯光:" +msgstr "绘制光照图" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -11955,9 +11967,8 @@ msgid "Select device from the list" msgstr "从列表中选择设备" #: platform/android/export/export.cpp -#, fuzzy msgid "Unable to find the 'apksigner' tool." -msgstr "未找到 zipalign 工具。" +msgstr "找不到“apksigner”工具。" #: platform/android/export/export.cpp msgid "" @@ -11974,14 +11985,12 @@ msgid "Release keystore incorrectly configured in the export preset." msgstr "用于发布的密钥存储在导出预设中未被正确设置。" #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." -msgstr "用于 “编辑器设置” 中自定义构建的 Android SDK 路径是无效的。" +msgstr "编辑器设置中需要有效的Android SDK路径。" #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "用于 “编辑器设置” 中自定义构建的 Android SDK 路径是无效的。" +msgstr "编辑器设置中的Android SDK路径无效。" #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -11989,12 +11998,11 @@ msgstr "缺失“platform-tools”目录!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." -msgstr "" +msgstr "找不到Android SDK平台工具的adb命令。" #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." -msgstr "用于 “编辑器设置” 中自定义构建的 Android SDK 路径是无效的。" +msgstr "请签入编辑器设置中指定的Android SDK目录。" #: platform/android/export/export.cpp msgid "Missing 'build-tools' directory!" @@ -12002,7 +12010,7 @@ msgstr "缺失“build-tools”目录!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." -msgstr "" +msgstr "找不到Android SDK生成工具的apksigner命令。" #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12432,27 +12440,23 @@ msgstr "ARVROrigin 需要一个 ARVRCamera 子节点。" #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "正在查找网格和灯光" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "解析多边形中..." +msgstr "正在准备几何体(%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "查看环境" +msgstr "正在准备环境" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "正在生成光照贴图" +msgstr "正在生成捕获" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "正在生成光照贴图" +msgstr "正在保存光照贴图" #: scene/3d/baked_lightmap.cpp msgid "Done" @@ -12834,7 +12838,7 @@ msgstr "Viewport 大小大于 0 时才能进行渲染。" msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." -msgstr "" +msgstr "采样器端口已连接但未使用。考虑将源更改为“SamplerPort”。" #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po index 99d673b0fa..c3fbf65005 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -3199,6 +3199,22 @@ msgid "Open & Run a Script" msgstr "" #: editor/editor_node.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/editor_node.cpp #, fuzzy msgid "New Inherited" msgstr "下一個腳本" @@ -7218,16 +7234,6 @@ msgid "" "What action should be taken?:" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "" @@ -7569,6 +7575,10 @@ msgid "Yaw" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "" @@ -10251,6 +10261,11 @@ msgid "Projects" msgstr "專案" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "接收 mirrors中, 請稍侯..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "" diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po index a1228463b9..c6241b6ffe 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -29,7 +29,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-01-01 10:30+0000\n" +"PO-Revision-Date: 2021-02-07 05:50+0000\n" "Last-Translator: BinotaLIU <me@binota.org>\n" "Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hant/>\n" @@ -38,7 +38,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.4.1-dev\n" +"X-Generator: Weblate 4.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -2364,7 +2364,7 @@ msgstr "未定義欲執行之場景。" #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "執行前先保存場景..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -3086,6 +3086,25 @@ msgid "Open & Run a Script" msgstr "開啟並執行腳本" #: editor/editor_node.cpp +#, fuzzy +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"磁碟中的下列檔案已更新。\n" +"請選擇於執行之操作:" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "重新載入" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "重新保存" + +#: editor/editor_node.cpp msgid "New Inherited" msgstr "新增繼承" @@ -5072,14 +5091,12 @@ msgid "Assets ZIP File" msgstr "素材 ZIP 檔" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "" "Can't determine a save path for lightmap images.\n" "Save your scene and try again." msgstr "" "無法判斷光照圖的保存路徑。\n" -"請保存場景(圖片將保存於相同資料夾),或是在 BackedLightmap 屬性內選擇一個保" -"存路徑。" +"請保存場景並重試。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5094,27 +5111,27 @@ msgstr "建立光照圖失敗,請確保該路徑可寫入。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" -msgstr "" +msgstr "無法判斷光照圖大小。最大光照圖大小是否過小?" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." -msgstr "" +msgstr "部分網格無效。請確保 UV2 通道的值位於 [0.0,1.0] 矩形內。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Godot 編輯器在建制時未啟用光線追蹤 (Ray Tracing) 支援,無法烘焙光照圖。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "烘焙光照圖" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "選擇樣板檔案" +msgstr "選擇光照圖烘焙檔案:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -6194,9 +6211,8 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "僅可設為指向 ProticlesMaterial 處理材料" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles2D" -msgstr "轉換為 CPUParticles" +msgstr "轉換為 CPUParticles2D" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6895,16 +6911,6 @@ msgstr "" "磁碟中的下列檔案已更新。\n" "請選擇於執行之操作:" -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Reload" -msgstr "重新載入" - -#: editor/plugins/script_editor_plugin.cpp -#: editor/plugins/shader_editor_plugin.cpp -msgid "Resave" -msgstr "重新保存" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" msgstr "除錯工具" @@ -7221,6 +7227,10 @@ msgid "Yaw" msgstr "偏航" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Size" +msgstr "大小" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" msgstr "繪製的物件" @@ -9847,6 +9857,11 @@ msgid "Projects" msgstr "專案" #: editor/project_manager.cpp +#, fuzzy +msgid "Loading, please wait..." +msgstr "正在取得鏡像,請稍後..." + +#: editor/project_manager.cpp msgid "Last Modified" msgstr "最後修改時間" @@ -11380,36 +11395,31 @@ msgstr "提供 MeshLibrary 予該 GridMap 以使用其網格。" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Begin Bake" -msgstr "" +msgstr "開始烘焙" #: modules/lightmapper_cpu/lightmapper_cpu.cpp msgid "Preparing data structures" -msgstr "" +msgstr "正在準備資料結構" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Generate buffers" -msgstr "產生 AABB" +msgstr "產生緩衝" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Direct lighting" -msgstr "方向" +msgstr "向性光照" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Indirect lighting" -msgstr "向右縮排" +msgstr "非向性光照" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Post processing" msgstr "後處理" #: modules/lightmapper_cpu/lightmapper_cpu.cpp -#, fuzzy msgid "Plotting lightmaps" -msgstr "正在繪製光照:" +msgstr "正在繪製光照" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -11909,9 +11919,8 @@ msgid "Select device from the list" msgstr "自清單中選擇裝置" #: platform/android/export/export.cpp -#, fuzzy msgid "Unable to find the 'apksigner' tool." -msgstr "找不到 zipalign 工具。" +msgstr "找不到「apksigner」工具。" #: platform/android/export/export.cpp msgid "" @@ -11928,14 +11937,12 @@ msgid "Release keystore incorrectly configured in the export preset." msgstr "發行金鑰儲存區中不正確之組態設定至匯出預設設定。" #: platform/android/export/export.cpp -#, fuzzy msgid "A valid Android SDK path is required in Editor Settings." -msgstr "編輯器設定中用於自定義設定之 Android SDK 路徑無效。" +msgstr "必須於 [編輯器設定] 中提供一個有效的 Android SDK 路徑。" #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path in Editor Settings." -msgstr "編輯器設定中用於自定義設定之 Android SDK 路徑無效。" +msgstr "[編輯器設定] 中所指定的 Android SDK 路徑無效。" #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" @@ -11943,12 +11950,11 @@ msgstr "缺少「platform-tools」資料夾!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK platform-tools' adb command." -msgstr "" +msgstr "找不到 Android SDK platform-tools 的 adb 指令。" #: platform/android/export/export.cpp -#, fuzzy msgid "Please check in the Android SDK directory specified in Editor Settings." -msgstr "編輯器設定中用於自定義設定之 Android SDK 路徑無效。" +msgstr "請檢查 [編輯器設定] 中所指定的 Android SDK 資料夾。" #: platform/android/export/export.cpp msgid "Missing 'build-tools' directory!" @@ -11956,7 +11962,7 @@ msgstr "缺少「build-tools」資料夾!" #: platform/android/export/export.cpp msgid "Unable to find Android SDK build-tools' apksigner command." -msgstr "" +msgstr "找不到 Android SDK build-tools 的 apksigner 指令。" #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -12391,32 +12397,27 @@ msgstr "ARVROrigin 必須有一個 ARVRCamera 子節點。" #: scene/3d/baked_lightmap.cpp msgid "Finding meshes and lights" -msgstr "" +msgstr "正在尋找網格與光照" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing geometry (%d/%d)" -msgstr "正在解析多邊形..." +msgstr "正在解析幾何 (%d/%d)" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Preparing environment" -msgstr "檢視環境" +msgstr "正在準備環境" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Generating capture" -msgstr "正在產生光照圖" +msgstr "正在產生捕捉" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Saving lightmaps" -msgstr "正在產生光照圖" +msgstr "正在保存光照圖" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Done" -msgstr "完成!" +msgstr "完成" #: scene/3d/collision_object.cpp msgid "" @@ -12794,7 +12795,7 @@ msgstr "Viewport 大小必須大於 0 才可進行算繪。" msgid "" "The sampler port is connected but not used. Consider changing the source to " "'SamplerPort'." -msgstr "" +msgstr "已連線至取樣器連結埠但並未使用。建議將來源設為「SamplerPort」。" #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." |