diff options
Diffstat (limited to 'editor')
168 files changed, 5868 insertions, 4548 deletions
diff --git a/editor/SCsub b/editor/SCsub index 651dd5fffd..a976c4ed12 100644 --- a/editor/SCsub +++ b/editor/SCsub @@ -7,7 +7,6 @@ env.editor_sources = [] import os import os.path import glob -from platform_methods import run_in_subprocess import editor_builders @@ -61,7 +60,11 @@ if env["tools"]: docs = sorted(docs) env.Depends("#editor/doc_data_compressed.gen.h", docs) - env.CommandNoCache("#editor/doc_data_compressed.gen.h", docs, run_in_subprocess(editor_builders.make_doc_header)) + env.CommandNoCache( + "#editor/doc_data_compressed.gen.h", + docs, + env.Run(editor_builders.make_doc_header, "Generating documentation header."), + ) path = env.Dir(".").abspath @@ -69,14 +72,18 @@ if env["tools"]: tlist = glob.glob(path + "/translations/*.po") env.Depends("#editor/editor_translations.gen.h", tlist) env.CommandNoCache( - "#editor/editor_translations.gen.h", tlist, run_in_subprocess(editor_builders.make_editor_translations_header) + "#editor/editor_translations.gen.h", + tlist, + env.Run(editor_builders.make_editor_translations_header, "Generating editor translations header."), ) # Documentation translations tlist = glob.glob(env.Dir("#doc").abspath + "/translations/*.po") env.Depends("#editor/doc_translations.gen.h", tlist) env.CommandNoCache( - "#editor/doc_translations.gen.h", tlist, run_in_subprocess(editor_builders.make_doc_translations_header) + "#editor/doc_translations.gen.h", + tlist, + env.Run(editor_builders.make_doc_translations_header, "Generating translations header."), ) # Fonts @@ -84,7 +91,11 @@ if env["tools"]: flist.extend(glob.glob(path + "/../thirdparty/fonts/*.otf")) flist.sort() env.Depends("#editor/builtin_fonts.gen.h", flist) - env.CommandNoCache("#editor/builtin_fonts.gen.h", flist, run_in_subprocess(editor_builders.make_fonts_header)) + env.CommandNoCache( + "#editor/builtin_fonts.gen.h", + flist, + env.Run(editor_builders.make_fonts_header, "Generating builtin fonts header."), + ) env.add_source_files(env.editor_sources, "*.cpp") diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp index 1d6770a32e..d569a2ca0a 100644 --- a/editor/animation_track_editor.cpp +++ b/editor/animation_track_editor.cpp @@ -3363,9 +3363,9 @@ void AnimationTrackEditor::_query_insert(const InsertData &p_id) { } if (num_tracks == 1) { - insert_confirm_text->set_text(vformat(TTR("Create NEW track for %s and insert key?"), p_id.query)); + insert_confirm_text->set_text(vformat(TTR("Create new track for %s and insert key?"), p_id.query)); } else { - insert_confirm_text->set_text(vformat(TTR("Create %d NEW tracks and insert keys?"), num_tracks)); + insert_confirm_text->set_text(vformat(TTR("Create %d new tracks and insert keys?"), num_tracks)); } insert_confirm_bezier->set_visible(all_bezier); @@ -4370,7 +4370,7 @@ void AnimationTrackEditor::_add_track(int p_type) { return; } adding_track_type = p_type; - pick_track->popup_centered_ratio(); + pick_track->popup_scenetree_dialog(); } void AnimationTrackEditor::_new_track_property_selected(String p_name) { @@ -5731,7 +5731,7 @@ AnimationTrackEditor::AnimationTrackEditor() { pick_track = memnew(SceneTreeDialog); add_child(pick_track); - pick_track->set_title(TTR("Pick the node that will be animated:")); + pick_track->set_title(TTR("Pick a node to animate:")); pick_track->connect("selected", callable_mp(this, &AnimationTrackEditor::_new_track_node_selected)); prop_selector = memnew(PropertySelector); add_child(prop_selector); diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp index d8648310b6..37db3ba780 100644 --- a/editor/code_editor.cpp +++ b/editor/code_editor.cpp @@ -1456,8 +1456,6 @@ void CodeTextEditor::set_edit_state(const Variant &p_state) { text_editor->set_line_as_bookmark(bookmarks[i], true); } } - - text_editor->grab_focus(); } void CodeTextEditor::set_error(const String &p_error) { @@ -1778,6 +1776,7 @@ CodeTextEditor::CodeTextEditor() { cs.push_back("("); cs.push_back("="); cs.push_back("$"); + cs.push_back("@"); text_editor->set_completion(true, cs); idle->connect("timeout", callable_mp(this, &CodeTextEditor::_text_changed_idle_timeout)); diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index facd57418d..d3dff3f375 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -477,11 +477,6 @@ ConnectDialog::ConnectDialog() { advanced->set_text(TTR("Advanced")); advanced->connect("pressed", callable_mp(this, &ConnectDialog::_advanced_pressed)); - // Add spacing so the tree and inspector are the same size. - Control *spacing = memnew(Control); - spacing->set_custom_minimum_size(Size2(0, 4) * EDSCALE); - vbc_right->add_child(spacing); - deferred = memnew(CheckBox); deferred->set_h_size_flags(0); deferred->set_text(TTR("Deferred")); @@ -528,6 +523,10 @@ struct _ConnectionsDockMethodInfoSort { } }; +void ConnectionsDock::_filter_changed(const String &p_text) { + update_tree(); +} + /* * Post-ConnectDialog callback for creating/editing connections. * Creates or edits connections based on state of the ConnectDialog when "Connect" is pressed. @@ -903,6 +902,7 @@ void ConnectionsDock::update_tree() { String name; if (!did_script) { + // Get script signals (including signals from any base scripts). Ref<Script> scr = selectedNode->get_script(); if (scr.is_valid()) { scr->get_script_signal_list(&node_signals2); @@ -928,15 +928,16 @@ void ConnectionsDock::update_tree() { icon = get_theme_icon("Object", "EditorIcons"); } - TreeItem *pitem = nullptr; + TreeItem *section_item = nullptr; + // Create subsections. if (node_signals2.size()) { - pitem = tree->create_item(root); - pitem->set_text(0, name); - pitem->set_icon(0, icon); - pitem->set_selectable(0, false); - pitem->set_editable(0, false); - pitem->set_custom_bg_color(0, get_theme_color("prop_subsection", "Editor")); + section_item = tree->create_item(root); + section_item->set_text(0, name); + section_item->set_icon(0, icon); + section_item->set_selectable(0, false); + section_item->set_editable(0, false); + section_item->set_custom_bg_color(0, get_theme_color("prop_subsection", "Editor")); node_signals2.sort(); } @@ -946,6 +947,12 @@ void ConnectionsDock::update_tree() { StringName signal_name = mi.name; String signaldesc = "("; PackedStringArray argnames; + + String filter_text = search_box->get_text(); + if (!filter_text.is_subsequence_ofi(signal_name)) { + continue; + } + if (mi.arguments.size()) { for (int i = 0; i < mi.arguments.size(); i++) { PropertyInfo &pi = mi.arguments[i]; @@ -965,13 +972,14 @@ void ConnectionsDock::update_tree() { } signaldesc += ")"; - TreeItem *item = tree->create_item(pitem); - item->set_text(0, String(signal_name) + signaldesc); + // Create the children of the subsection - the actual list of signals. + TreeItem *signal_item = tree->create_item(section_item); + signal_item->set_text(0, String(signal_name) + signaldesc); Dictionary sinfo; sinfo["name"] = signal_name; sinfo["args"] = argnames; - item->set_metadata(0, sinfo); - item->set_icon(0, get_theme_icon("Signal", "EditorIcons")); + signal_item->set_metadata(0, sinfo); + signal_item->set_icon(0, get_theme_icon("Signal", "EditorIcons")); // Set tooltip with the signal's documentation. { @@ -1007,7 +1015,7 @@ void ConnectionsDock::update_tree() { } // "::" separators used in make_custom_tooltip for formatting. - item->set_tooltip(0, String(signal_name) + "::" + signaldesc + "::" + descr); + signal_item->set_tooltip(0, String(signal_name) + "::" + signaldesc + "::" + descr); } // List existing connections @@ -1044,11 +1052,11 @@ void ConnectionsDock::update_tree() { path += ")"; } - TreeItem *item2 = tree->create_item(item); - item2->set_text(0, path); + TreeItem *connection_item = tree->create_item(signal_item); + connection_item->set_text(0, path); Connection cd = c; - item2->set_metadata(0, cd); - item2->set_icon(0, get_theme_icon("Slot", "EditorIcons")); + connection_item->set_metadata(0, cd); + connection_item->set_icon(0, get_theme_icon("Slot", "EditorIcons")); } } @@ -1069,6 +1077,14 @@ ConnectionsDock::ConnectionsDock(EditorNode *p_editor) { VBoxContainer *vbc = this; + search_box = memnew(LineEdit); + search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); + search_box->set_placeholder(TTR("Filter signals")); + search_box->set_right_icon(get_theme_icon("Search", "EditorIcons")); + search_box->set_clear_button_enabled(true); + search_box->connect("text_changed", callable_mp(this, &ConnectionsDock::_filter_changed)); + vbc->add_child(search_box); + tree = memnew(ConnectionsDockTree); tree->set_columns(1); tree->set_select_mode(Tree::SELECT_ROW); diff --git a/editor/connections_dialog.h b/editor/connections_dialog.h index 9da9a8fb2c..48fdb91f5a 100644 --- a/editor/connections_dialog.h +++ b/editor/connections_dialog.h @@ -169,9 +169,12 @@ class ConnectionsDock : public VBoxContainer { PopupMenu *signal_menu; PopupMenu *slot_menu; UndoRedo *undo_redo; + LineEdit *search_box; Map<StringName, Map<StringName, String>> descr_cache; + void _filter_changed(const String &p_text); + void _make_or_edit_connection(); void _connect(ConnectDialog::ConnectionData cToMake); void _disconnect(TreeItem &item); diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp index 99a2a73a75..1e3dc01112 100644 --- a/editor/create_dialog.cpp +++ b/editor/create_dialog.cpp @@ -674,7 +674,7 @@ CreateDialog::CreateDialog() { favorites->connect("item_activated", callable_mp(this, &CreateDialog::_favorite_activated)); favorites->add_theme_constant_override("draw_guides", 1); #ifndef _MSC_VER -#warning cant forward drag data to a non control, must be fixed +#warning cannot forward drag data to a non control, must be fixed #endif //favorites->set_drag_forwarding(this); fav_vb->add_margin_child(TTR("Favorites:"), favorites, true); @@ -707,6 +707,7 @@ CreateDialog::CreateDialog() { favorite = memnew(Button); favorite->set_flat(true); favorite->set_toggle_mode(true); + favorite->set_tooltip(TTR("(Un)favorite selected item.")); favorite->connect("pressed", callable_mp(this, &CreateDialog::_favorite_toggled)); search_hb->add_child(favorite); vbc->add_margin_child(TTR("Search:"), search_hb); diff --git a/editor/debugger/editor_debugger_node.cpp b/editor/debugger/editor_debugger_node.cpp index a9c18138d8..b461ac4f35 100644 --- a/editor/debugger/editor_debugger_node.cpp +++ b/editor/debugger/editor_debugger_node.cpp @@ -34,6 +34,7 @@ #include "editor/debugger/script_editor_debugger.h" #include "editor/editor_log.h" #include "editor/editor_node.h" +#include "editor/plugins/editor_debugger_plugin.h" #include "editor/plugins/script_editor_plugin.h" #include "scene/gui/menu_button.h" #include "scene/gui/tab_container.h" @@ -114,6 +115,12 @@ ScriptEditorDebugger *EditorDebuggerNode::_add_debugger() { tabs->add_theme_style_override("panel", EditorNode::get_singleton()->get_gui_base()->get_theme_stylebox("DebuggerPanel", "EditorStyles")); } + if (!debugger_plugins.empty()) { + for (Set<Ref<Script>>::Element *i = debugger_plugins.front(); i; i = i->next()) { + node->add_debugger_plugin(i->get()); + } + } + return node; } @@ -618,3 +625,23 @@ void EditorDebuggerNode::live_debug_reparent_node(const NodePath &p_at, const No dbg->live_debug_reparent_node(p_at, p_new_place, p_new_name, p_at_pos); }); } + +void EditorDebuggerNode::add_debugger_plugin(const Ref<Script> &p_script) { + ERR_FAIL_COND_MSG(debugger_plugins.has(p_script), "Debugger plugin already exists."); + ERR_FAIL_COND_MSG(p_script.is_null(), "Debugger plugin script is null"); + ERR_FAIL_COND_MSG(String(p_script->get_instance_base_type()) == "", "Debugger plugin script has error."); + ERR_FAIL_COND_MSG(String(p_script->get_instance_base_type()) != "EditorDebuggerPlugin", "Base type of debugger plugin is not 'EditorDebuggerPlugin'."); + ERR_FAIL_COND_MSG(!p_script->is_tool(), "Debugger plugin script is not in tool mode."); + debugger_plugins.insert(p_script); + for (int i = 0; get_debugger(i); i++) { + get_debugger(i)->add_debugger_plugin(p_script); + } +} + +void EditorDebuggerNode::remove_debugger_plugin(const Ref<Script> &p_script) { + ERR_FAIL_COND_MSG(!debugger_plugins.has(p_script), "Debugger plugin doesn't exists."); + debugger_plugins.erase(p_script); + for (int i = 0; get_debugger(i); i++) { + get_debugger(i)->remove_debugger_plugin(p_script); + } +} diff --git a/editor/debugger/editor_debugger_node.h b/editor/debugger/editor_debugger_node.h index ff9601c026..8d70a7f961 100644 --- a/editor/debugger/editor_debugger_node.h +++ b/editor/debugger/editor_debugger_node.h @@ -103,6 +103,8 @@ private: CameraOverride camera_override = OVERRIDE_NONE; Map<Breakpoint, bool> breakpoints; + Set<Ref<Script>> debugger_plugins; + ScriptEditorDebugger *_add_debugger(); EditorDebuggerRemoteObject *get_inspected_remote_object(); @@ -186,5 +188,8 @@ public: Error start(const String &p_protocol = "tcp://"); void stop(); + + void add_debugger_plugin(const Ref<Script> &p_script); + void remove_debugger_plugin(const Ref<Script> &p_script); }; #endif // EDITOR_DEBUGGER_NODE_H diff --git a/editor/debugger/editor_debugger_tree.cpp b/editor/debugger/editor_debugger_tree.cpp index 0b5f865a98..ebac9b3482 100644 --- a/editor/debugger/editor_debugger_tree.cpp +++ b/editor/debugger/editor_debugger_tree.cpp @@ -238,7 +238,7 @@ void EditorDebuggerTree::_item_menu_id_pressed(int p_option) { file_dialog->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper()); } - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); } break; case ITEM_MENU_COPY_NODE_PATH: { String text = get_selected_path(); diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp index a828e29558..1fca95b6da 100644 --- a/editor/debugger/script_editor_debugger.cpp +++ b/editor/debugger/script_editor_debugger.cpp @@ -44,6 +44,7 @@ #include "editor/editor_scale.h" #include "editor/editor_settings.h" #include "editor/plugins/canvas_item_editor_plugin.h" +#include "editor/plugins/editor_debugger_plugin.h" #include "editor/plugins/node_3d_editor_plugin.h" #include "editor/property_editor.h" #include "main/performance.h" @@ -282,7 +283,7 @@ void ScriptEditorDebugger::_video_mem_export() { file_dialog->set_access(EditorFileDialog::ACCESS_FILESYSTEM); file_dialog->clear_filters(); file_dialog_purpose = SAVE_VRAM_CSV; - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); } Size2 ScriptEditorDebugger::get_minimum_size() const { @@ -701,7 +702,28 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da performance_profiler->update_monitors(monitors); } else { - WARN_PRINT("unknown message " + p_msg); + int colon_index = p_msg.find_char(':'); + ERR_FAIL_COND_MSG(colon_index < 1, "Invalid message received"); + + bool parsed = false; + const String cap = p_msg.substr(0, colon_index); + Map<StringName, Callable>::Element *element = captures.find(cap); + if (element) { + Callable &c = element->value(); + ERR_FAIL_COND_MSG(c.is_null(), "Invalid callable registered: " + cap); + Variant cmd = p_msg.substr(colon_index + 1), data = p_data; + const Variant *args[2] = { &cmd, &data }; + Variant retval; + Callable::CallError err; + c.call(args, 2, retval, err); + ERR_FAIL_COND_MSG(err.error != Callable::CallError::CALL_OK, "Error calling 'capture' to callable: " + Variant::get_callable_error_text(c, args, 2, err)); + ERR_FAIL_COND_MSG(retval.get_type() != Variant::BOOL, "Error calling 'capture' to callable: " + String(c) + ". Return type is not bool."); + parsed = retval; + } + + if (!parsed) { + WARN_PRINT("unknown message " + p_msg); + } } } @@ -847,6 +869,7 @@ void ScriptEditorDebugger::start(Ref<RemoteDebuggerPeer> p_peer) { tabs->set_current_tab(0); _set_reason_text(TTR("Debug session started."), MESSAGE_SUCCESS); _update_buttons_state(); + emit_signal("started"); } void ScriptEditorDebugger::_update_buttons_state() { @@ -944,7 +967,7 @@ void ScriptEditorDebugger::_export_csv() { file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE); file_dialog->set_access(EditorFileDialog::ACCESS_FILESYSTEM); file_dialog_purpose = SAVE_MONITORS_CSV; - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); } String ScriptEditorDebugger::get_var_value(const String &p_var) const { @@ -1395,6 +1418,7 @@ void ScriptEditorDebugger::_bind_methods() { ClassDB::bind_method(D_METHOD("request_remote_object", "id"), &ScriptEditorDebugger::request_remote_object); ClassDB::bind_method(D_METHOD("update_remote_object", "id", "property", "value"), &ScriptEditorDebugger::update_remote_object); + ADD_SIGNAL(MethodInfo("started")); ADD_SIGNAL(MethodInfo("stopped")); ADD_SIGNAL(MethodInfo("stop_requested")); ADD_SIGNAL(MethodInfo("stack_frame_selected", PropertyInfo(Variant::INT, "frame"))); @@ -1408,6 +1432,43 @@ void ScriptEditorDebugger::_bind_methods() { ADD_SIGNAL(MethodInfo("remote_tree_updated")); } +void ScriptEditorDebugger::add_debugger_plugin(const Ref<Script> &p_script) { + if (!debugger_plugins.has(p_script)) { + EditorDebuggerPlugin *plugin = memnew(EditorDebuggerPlugin()); + plugin->attach_debugger(this); + plugin->set_script(p_script); + tabs->add_child(plugin); + debugger_plugins.insert(p_script, plugin); + } +} + +void ScriptEditorDebugger::remove_debugger_plugin(const Ref<Script> &p_script) { + if (debugger_plugins.has(p_script)) { + tabs->remove_child(debugger_plugins[p_script]); + debugger_plugins[p_script]->detach_debugger(false); + memdelete(debugger_plugins[p_script]); + debugger_plugins.erase(p_script); + } +} + +void ScriptEditorDebugger::send_message(const String &p_message, const Array &p_args) { + _put_msg(p_message, p_args); +} + +void ScriptEditorDebugger::register_message_capture(const StringName &p_name, const Callable &p_callable) { + ERR_FAIL_COND_MSG(has_capture(p_name), "Capture already registered: " + p_name); + captures.insert(p_name, p_callable); +} + +void ScriptEditorDebugger::unregister_message_capture(const StringName &p_name) { + ERR_FAIL_COND_MSG(!has_capture(p_name), "Capture not registered: " + p_name); + captures.erase(p_name); +} + +bool ScriptEditorDebugger::has_capture(const StringName &p_name) { + return captures.has(p_name); +} + ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) { editor = p_editor; diff --git a/editor/debugger/script_editor_debugger.h b/editor/debugger/script_editor_debugger.h index 6e5699e929..56b34e8e8c 100644 --- a/editor/debugger/script_editor_debugger.h +++ b/editor/debugger/script_editor_debugger.h @@ -54,6 +54,7 @@ class EditorVisualProfiler; class EditorNetworkProfiler; class EditorPerformanceProfiler; class SceneDebuggerTree; +class EditorDebuggerPlugin; class ScriptEditorDebugger : public MarginContainer { GDCLASS(ScriptEditorDebugger, MarginContainer); @@ -146,6 +147,10 @@ private: EditorDebuggerNode::CameraOverride camera_override; + Map<Ref<Script>, EditorDebuggerPlugin *> debugger_plugins; + + Map<StringName, Callable> captures; + void _stack_dump_frame_selected(); void _file_selected(const String &p_file); @@ -253,6 +258,16 @@ public: bool is_skip_breakpoints(); virtual Size2 get_minimum_size() const override; + + void add_debugger_plugin(const Ref<Script> &p_script); + void remove_debugger_plugin(const Ref<Script> &p_script); + + void send_message(const String &p_message, const Array &p_args); + + void register_message_capture(const StringName &p_name, const Callable &p_callable); + void unregister_message_capture(const StringName &p_name); + bool has_capture(const StringName &p_name); + ScriptEditorDebugger(EditorNode *p_editor = nullptr); ~ScriptEditorDebugger(); }; diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp index c6977779bd..cbf39c209a 100644 --- a/editor/dependency_editor.cpp +++ b/editor/dependency_editor.cpp @@ -58,7 +58,7 @@ void DependencyEditor::_load_pressed(Object *p_item, int p_cell, int p_button) { for (List<String>::Element *E = ext.front(); E; E = E->next()) { search->add_filter("*" + E->get()); } - search->popup_centered_ratio(0.65); // So it doesn't completely cover the dialog below it. + search->popup_file_dialog(); } void DependencyEditor::_fix_and_find(EditorFileSystemDirectory *efsd, Map<String, Map<String, String>> &candidates) { @@ -205,7 +205,7 @@ void DependencyEditor::edit(const String &p_path) { set_title(TTR("Dependencies For:") + " " + p_path.get_file()); _update_list(); - popup_centered_ratio(0.7); // So it doesn't completely cover the dialog below it. + popup_centered_ratio(0.4); if (EditorNode::get_singleton()->is_scene_open(p_path)) { EditorNode::get_singleton()->show_warning(vformat(TTR("Scene '%s' is currently being edited.\nChanges will only take effect when reloaded."), p_path.get_file())); @@ -323,7 +323,7 @@ void DependencyEditorOwners::show(const String &p_path) { editing = p_path; owners->clear(); _fill_owners(EditorFileSystem::get_singleton()->get_filesystem()); - popup_centered_ratio(); + popup_centered_ratio(0.3); set_title(TTR("Owners Of:") + " " + p_path.get_file()); } @@ -714,7 +714,7 @@ void OrphanResourcesDialog::refresh() { void OrphanResourcesDialog::show() { refresh(); - popup_centered_ratio(); + popup_centered_ratio(0.4); } void OrphanResourcesDialog::_find_to_delete(TreeItem *p_item, List<String> &paths) { diff --git a/editor/doc_data.cpp b/editor/doc_data.cpp index 54acbe9559..791b49319a 100644 --- a/editor/doc_data.cpp +++ b/editor/doc_data.cpp @@ -316,17 +316,17 @@ void DocData::generate(bool p_basic_types) { if (name == "ProjectSettings") { // Special case for project settings, so that settings are not taken from the current project's settings - if (E->get().name == "script" || - ProjectSettings::get_singleton()->get_order(E->get().name) >= ProjectSettings::NO_BUILTIN_ORDER_BASE) { + if (E->get().name == "script" || !ProjectSettings::get_singleton()->is_builtin_setting(E->get().name)) { continue; } if (E->get().usage & PROPERTY_USAGE_EDITOR) { - default_value = ProjectSettings::get_singleton()->property_get_revert(E->get().name); - default_value_valid = true; + if (!ProjectSettings::get_singleton()->get_ignore_value_in_docs(E->get().name)) { + default_value = ProjectSettings::get_singleton()->property_get_revert(E->get().name); + default_value_valid = true; + } } } else { default_value = get_documentation_default_value(name, E->get().name, default_value_valid); - if (inherited) { bool base_default_value_valid = false; Variant base_default_value = get_documentation_default_value(ClassDB::get_parent_class(name), E->get().name, base_default_value_valid); @@ -478,6 +478,7 @@ void DocData::generate(bool p_basic_types) { ConstantDoc constant; constant.name = E->get(); constant.value = itos(ClassDB::get_integer_constant(name, E->get())); + constant.is_value_valid = true; constant.enumeration = ClassDB::get_integer_constant_enum(name, E->get()); c.constants.push_back(constant); } @@ -620,6 +621,7 @@ void DocData::generate(bool p_basic_types) { constant.name = E->get(); Variant value = Variant::get_constant_value(Variant::Type(i), E->get()); constant.value = value.get_type() == Variant::INT ? itos(value) : value.get_construct_string(); + constant.is_value_valid = true; c.constants.push_back(constant); } } @@ -635,7 +637,12 @@ void DocData::generate(bool p_basic_types) { for (int i = 0; i < GlobalConstants::get_global_constant_count(); i++) { ConstantDoc cd; cd.name = GlobalConstants::get_global_constant_name(i); - cd.value = itos(GlobalConstants::get_global_constant_value(i)); + if (!GlobalConstants::get_ignore_value_in_docs(i)) { + cd.value = itos(GlobalConstants::get_global_constant_value(i)); + cd.is_value_valid = true; + } else { + cd.is_value_valid = false; + } cd.enumeration = GlobalConstants::get_global_constant_enum(i); c.constants.push_back(cd); } @@ -715,6 +722,7 @@ void DocData::generate(bool p_basic_types) { ConstantDoc cd; cd.name = E->get().first; cd.value = E->get().second; + cd.is_value_valid = true; c.constants.push_back(cd); } @@ -989,6 +997,7 @@ Error DocData::_load(Ref<XMLParser> parser) { constant2.name = parser->get_attribute_value("name"); ERR_FAIL_COND_V(!parser->has_attribute("value"), ERR_FILE_CORRUPT); constant2.value = parser->get_attribute_value("value"); + constant2.is_value_valid = true; if (parser->has_attribute("enum")) { constant2.enumeration = parser->get_attribute_value("enum"); } @@ -1178,10 +1187,18 @@ Error DocData::save_classes(const String &p_default_path, const Map<String, Stri for (int i = 0; i < c.constants.size(); i++) { const ConstantDoc &k = c.constants[i]; - if (k.enumeration != String()) { - _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"" + k.value + "\" enum=\"" + k.enumeration + "\">"); + if (k.is_value_valid) { + if (k.enumeration != String()) { + _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"" + k.value + "\" enum=\"" + k.enumeration + "\">"); + } else { + _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"" + k.value + "\">"); + } } else { - _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"" + k.value + "\">"); + if (k.enumeration != String()) { + _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"platform-dependent\" enum=\"" + k.enumeration + "\">"); + } else { + _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"platform-dependent\">"); + } } _write_string(f, 3, k.description.strip_edges().xml_escape()); _write_string(f, 2, "</constant>"); diff --git a/editor/doc_data.h b/editor/doc_data.h index 1880be81ed..a35cfb59c7 100644 --- a/editor/doc_data.h +++ b/editor/doc_data.h @@ -62,6 +62,7 @@ public: struct ConstantDoc { String name; String value; + bool is_value_valid; String enumeration; String description; bool operator<(const ConstantDoc &p_const) const { diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp index d99726c57c..aae476ccf4 100644 --- a/editor/editor_about.cpp +++ b/editor/editor_about.cpp @@ -155,12 +155,15 @@ EditorAbout::EditorAbout() { List<String> donor_sections; donor_sections.push_back(TTR("Platinum Sponsors")); donor_sections.push_back(TTR("Gold Sponsors")); + donor_sections.push_back(TTR("Silver Sponsors")); + donor_sections.push_back(TTR("Bronze Sponsors")); donor_sections.push_back(TTR("Mini Sponsors")); donor_sections.push_back(TTR("Gold Donors")); donor_sections.push_back(TTR("Silver Donors")); donor_sections.push_back(TTR("Bronze Donors")); - const char *const *donor_src[] = { DONORS_SPONSOR_PLAT, DONORS_SPONSOR_GOLD, - DONORS_SPONSOR_MINI, DONORS_GOLD, DONORS_SILVER, DONORS_BRONZE }; + const char *const *donor_src[] = { DONORS_SPONSOR_PLATINUM, DONORS_SPONSOR_GOLD, + DONORS_SPONSOR_SILVER, DONORS_SPONSOR_BRONZE, DONORS_SPONSOR_MINI, + DONORS_GOLD, DONORS_SILVER, DONORS_BRONZE }; tc->add_child(_populate_list(TTR("Donors"), donor_sections, donor_src, 3)); // License diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp index 669868c632..adb09532eb 100644 --- a/editor/editor_audio_buses.cpp +++ b/editor/editor_audio_buses.cpp @@ -1176,7 +1176,7 @@ void EditorAudioBuses::_save_as_layout() { file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE); file_dialog->set_title(TTR("Save Audio Bus Layout As...")); file_dialog->set_current_path(edited_path); - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); new_layout = false; } @@ -1184,7 +1184,7 @@ void EditorAudioBuses::_new_layout() { file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE); file_dialog->set_title(TTR("Location for New Layout...")); file_dialog->set_current_path(edited_path); - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); new_layout = true; } @@ -1192,7 +1192,7 @@ void EditorAudioBuses::_load_layout() { file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE); file_dialog->set_title(TTR("Open Audio Bus Layout")); file_dialog->set_current_path(edited_path); - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); new_layout = false; } diff --git a/editor/editor_autoload_settings.cpp b/editor/editor_autoload_settings.cpp index 4cd4f68fa2..5d101ff2c2 100644 --- a/editor/editor_autoload_settings.cpp +++ b/editor/editor_autoload_settings.cpp @@ -688,12 +688,12 @@ bool EditorAutoloadSettings::autoload_add(const String &p_name, const String &p_ const String &path = p_path; if (!FileAccess::exists(path)) { - EditorNode::get_singleton()->show_warning(TTR("Can't add autoload:") + "\n" + TTR(vformat("%s is an invalid path. File does not exist.", path))); + EditorNode::get_singleton()->show_warning(TTR("Can't add autoload:") + "\n" + vformat(TTR("%s is an invalid path. File does not exist."), path)); return false; } if (!path.begins_with("res://")) { - EditorNode::get_singleton()->show_warning(TTR("Can't add autoload:") + "\n" + TTR(vformat("%s is an invalid path. Not in resource path (res://).", path))); + EditorNode::get_singleton()->show_warning(TTR("Can't add autoload:") + "\n" + vformat(TTR("%s is an invalid path. Not in resource path (res://)."), path)); return false; } @@ -919,5 +919,5 @@ void EditorAutoloadSettings::_set_autoload_add_path(const String &p_text) { } void EditorAutoloadSettings::_browse_autoload_add_path() { - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); } diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp index 130c330f5a..5118ccacad 100644 --- a/editor/editor_data.cpp +++ b/editor/editor_data.cpp @@ -262,7 +262,9 @@ EditorHistory::EditorHistory() { } EditorPlugin *EditorData::get_editor(Object *p_object) { - for (int i = 0; i < editor_plugins.size(); i++) { + // We need to iterate backwards so that we can check user-created plugins first. + // Otherwise, it would not be possible for plugins to handle CanvasItem and Spatial nodes. + 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]; } @@ -272,7 +274,7 @@ EditorPlugin *EditorData::get_editor(Object *p_object) { } EditorPlugin *EditorData::get_subeditor(Object *p_object) { - for (int i = 0; i < editor_plugins.size(); i++) { + 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]; } @@ -283,7 +285,7 @@ EditorPlugin *EditorData::get_subeditor(Object *p_object) { Vector<EditorPlugin *> EditorData::get_subeditors(Object *p_object) { Vector<EditorPlugin *> sub_plugins; - for (int i = 0; i < editor_plugins.size(); i++) { + for (int i = editor_plugins.size() - 1; i > -1; i--) { if (!editor_plugins[i]->has_main_screen() && editor_plugins[i]->handles(p_object)) { sub_plugins.push_back(editor_plugins[i]); } @@ -292,7 +294,7 @@ Vector<EditorPlugin *> EditorData::get_subeditors(Object *p_object) { } EditorPlugin *EditorData::get_editor(String p_name) { - for (int i = 0; i < editor_plugins.size(); i++) { + for (int i = editor_plugins.size() - 1; i > -1; i--) { if (editor_plugins[i]->get_name() == p_name) { return editor_plugins[i]; } diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp index 951bec2c83..16e69734d3 100644 --- a/editor/editor_export.cpp +++ b/editor/editor_export.cpp @@ -512,10 +512,18 @@ void EditorExportPlugin::add_ios_framework(const String &p_path) { ios_frameworks.push_back(p_path); } +void EditorExportPlugin::add_ios_embedded_framework(const String &p_path) { + ios_embedded_frameworks.push_back(p_path); +} + Vector<String> EditorExportPlugin::get_ios_frameworks() const { return ios_frameworks; } +Vector<String> EditorExportPlugin::get_ios_embedded_frameworks() const { + return ios_embedded_frameworks; +} + void EditorExportPlugin::add_ios_plist_content(const String &p_plist_content) { ios_plist_content += p_plist_content + "\n"; } @@ -592,6 +600,7 @@ void EditorExportPlugin::_bind_methods() { ClassDB::bind_method(D_METHOD("add_ios_project_static_lib", "path"), &EditorExportPlugin::add_ios_project_static_lib); ClassDB::bind_method(D_METHOD("add_file", "path", "file", "remap"), &EditorExportPlugin::add_file); ClassDB::bind_method(D_METHOD("add_ios_framework", "path"), &EditorExportPlugin::add_ios_framework); + ClassDB::bind_method(D_METHOD("add_ios_embedded_framework", "path"), &EditorExportPlugin::add_ios_embedded_framework); ClassDB::bind_method(D_METHOD("add_ios_plist_content", "plist_content"), &EditorExportPlugin::add_ios_plist_content); ClassDB::bind_method(D_METHOD("add_ios_linker_flags", "flags"), &EditorExportPlugin::add_ios_linker_flags); ClassDB::bind_method(D_METHOD("add_ios_bundle_file", "path"), &EditorExportPlugin::add_ios_bundle_file); diff --git a/editor/editor_export.h b/editor/editor_export.h index e31b53ad67..bb701b94ec 100644 --- a/editor/editor_export.h +++ b/editor/editor_export.h @@ -290,6 +290,7 @@ class EditorExportPlugin : public Reference { bool skipped; Vector<String> ios_frameworks; + Vector<String> ios_embedded_frameworks; Vector<String> ios_project_static_libs; String ios_plist_content; String ios_linker_flags; @@ -304,6 +305,7 @@ class EditorExportPlugin : public Reference { _FORCE_INLINE_ void _export_end() { ios_frameworks.clear(); + ios_embedded_frameworks.clear(); ios_bundle_files.clear(); ios_plist_content = ""; ios_linker_flags = ""; @@ -322,6 +324,7 @@ protected: void add_shared_object(const String &p_path, const Vector<String> &tags); void add_ios_framework(const String &p_path); + void add_ios_embedded_framework(const String &p_path); void add_ios_project_static_lib(const String &p_path); void add_ios_plist_content(const String &p_plist_content); void add_ios_linker_flags(const String &p_flags); @@ -337,6 +340,7 @@ protected: public: Vector<String> get_ios_frameworks() const; + Vector<String> get_ios_embedded_frameworks() const; Vector<String> get_ios_project_static_libs() const; String get_ios_plist_content() const; String get_ios_linker_flags() const; diff --git a/editor/editor_feature_profile.cpp b/editor/editor_feature_profile.cpp index 0d349eb247..418370a7c3 100644 --- a/editor/editor_feature_profile.cpp +++ b/editor/editor_feature_profile.cpp @@ -41,9 +41,9 @@ const char *EditorFeatureProfile::feature_names[FEATURE_MAX] = { TTRC("Script Editor"), TTRC("Asset Library"), TTRC("Scene Tree Editing"), - TTRC("Import Dock"), TTRC("Node Dock"), - TTRC("FileSystem and Import Docks") + TTRC("FileSystem Dock"), + TTRC("Import Dock"), }; const char *EditorFeatureProfile::feature_identifiers[FEATURE_MAX] = { @@ -51,9 +51,9 @@ const char *EditorFeatureProfile::feature_identifiers[FEATURE_MAX] = { "script", "asset_lib", "scene_tree", - "import_dock", "node_dock", - "filesystem_dock" + "filesystem_dock", + "import_dock", }; void EditorFeatureProfile::set_disable_class(const StringName &p_class, bool p_disabled) { @@ -403,10 +403,10 @@ void EditorFeatureProfileManager::_profile_action(int p_action) { _emit_current_profile_changed(); } break; case PROFILE_IMPORT: { - import_profiles->popup_centered_ratio(); + import_profiles->popup_file_dialog(); } break; case PROFILE_EXPORT: { - export_profile->popup_centered_ratio(); + export_profile->popup_file_dialog(); export_profile->set_current_file(_get_selected_profile() + ".profile"); } break; case PROFILE_NEW: { @@ -678,9 +678,16 @@ void EditorFeatureProfileManager::_update_selected_profile() { TreeItem *root = class_list->create_item(); TreeItem *features = class_list->create_item(root); + TreeItem *last_feature; features->set_text(0, TTR("Enabled Features:")); for (int i = 0; i < EditorFeatureProfile::FEATURE_MAX; i++) { - TreeItem *feature = class_list->create_item(features); + TreeItem *feature; + if (i == EditorFeatureProfile::FEATURE_IMPORT_DOCK) { + feature = class_list->create_item(last_feature); + } else { + feature = class_list->create_item(features); + last_feature = feature; + } feature->set_cell_mode(0, TreeItem::CELL_MODE_CHECK); feature->set_text(0, TTRGET(EditorFeatureProfile::get_feature_name(EditorFeatureProfile::Feature(i)))); feature->set_selectable(0, true); diff --git a/editor/editor_feature_profile.h b/editor/editor_feature_profile.h index 38413e35a2..d0d08c61f4 100644 --- a/editor/editor_feature_profile.h +++ b/editor/editor_feature_profile.h @@ -49,9 +49,9 @@ public: FEATURE_SCRIPT, FEATURE_ASSET_LIB, FEATURE_SCENE_TREE, - FEATURE_IMPORT_DOCK, FEATURE_NODE_DOCK, FEATURE_FILESYSTEM_DOCK, + FEATURE_IMPORT_DOCK, FEATURE_MAX }; diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp index 50be291c91..0e851734a7 100644 --- a/editor/editor_file_dialog.cpp +++ b/editor/editor_file_dialog.cpp @@ -50,6 +50,10 @@ EditorFileDialog::GetIconFunc EditorFileDialog::get_large_icon_func = nullptr; EditorFileDialog::RegisterFunc EditorFileDialog::register_func = nullptr; EditorFileDialog::RegisterFunc EditorFileDialog::unregister_func = nullptr; +void EditorFileDialog::popup_file_dialog() { + popup_centered_clamped(Size2(1050, 700) * EDSCALE, 0.8); +} + VBoxContainer *EditorFileDialog::get_vbox() { return vbox; } @@ -436,7 +440,7 @@ void EditorFileDialog::_action_pressed() { } if (dir_access->file_exists(f) && !disable_overwrite_warning) { - confirm_save->set_text(TTR("File Exists, Overwrite?")); + confirm_save->set_text(TTR("File exists, overwrite?")); confirm_save->popup_centered(Size2(200, 80)); } else { _save_to_recent(); diff --git a/editor/editor_file_dialog.h b/editor/editor_file_dialog.h index 40906ab42b..df5b41ae1d 100644 --- a/editor/editor_file_dialog.h +++ b/editor/editor_file_dialog.h @@ -203,6 +203,7 @@ protected: static void _bind_methods(); //bind helpers public: + void popup_file_dialog(); void clear_filters(); void add_filter(const String &p_filter); diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index 2a59aadd61..bce34db740 100644 --- a/editor/editor_help.cpp +++ b/editor/editor_help.cpp @@ -1252,6 +1252,55 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) { String bbcode = p_bbcode.dedent().replace("\t", "").replace("\r", "").strip_edges(); + // Select the correct code examples + switch ((int)EDITOR_GET("text_editor/help/class_reference_examples")) { + case 0: // GDScript + bbcode = bbcode.replace("[gdscript]", "[codeblock]"); + bbcode = bbcode.replace("[/gdscript]", "[/codeblock]"); + + for (int pos = bbcode.find("[csharp]"); pos != -1; pos = bbcode.find("[csharp]")) { + if (bbcode.find("[/csharp]") == -1) { + WARN_PRINT("Unclosed [csharp] block or parse fail in code (search for tag errors)"); + break; + } + + bbcode.erase(pos, bbcode.find("[/csharp]") + 9 - pos); + while (bbcode[pos] == '\n') { + bbcode.erase(pos, 1); + } + } + break; + case 1: // C# + bbcode = bbcode.replace("[csharp]", "[codeblock]"); + bbcode = bbcode.replace("[/csharp]", "[/codeblock]"); + + for (int pos = bbcode.find("[gdscript]"); pos != -1; pos = bbcode.find("[gdscript]")) { + if (bbcode.find("[/gdscript]") == -1) { + WARN_PRINT("Unclosed [gdscript] block or parse fail in code (search for tag errors)"); + break; + } + + bbcode.erase(pos, bbcode.find("[/gdscript]") + 11 - pos); + while (bbcode[pos] == '\n') { + bbcode.erase(pos, 1); + } + } + break; + case 2: // GDScript and C# + bbcode = bbcode.replace("[csharp]", "[b]C#:[/b]\n[codeblock]"); + bbcode = bbcode.replace("[gdscript]", "[b]GDScript:[/b]\n[codeblock]"); + + bbcode = bbcode.replace("[/csharp]", "[/codeblock]"); + bbcode = bbcode.replace("[/gdscript]", "[/codeblock]"); + break; + } + + // Remove codeblocks (they would be printed otherwise) + bbcode = bbcode.replace("[codeblocks]\n", ""); + bbcode = bbcode.replace("\n[/codeblocks]", ""); + bbcode = bbcode.replace("[codeblocks]", ""); + bbcode = bbcode.replace("[/codeblocks]", ""); + // remove extra new lines around code blocks bbcode = bbcode.replace("[codeblock]\n", "[codeblock]"); bbcode = bbcode.replace("\n[/codeblock]", "[/codeblock]"); diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index cf32ffb4e0..2e716a636e 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -1174,6 +1174,47 @@ void EditorInspectorSection::_notification(int p_what) { if (arrow.is_valid()) { draw_texture(arrow, Point2(Math::round(arrow_margin * EDSCALE), (h - arrow->get_height()) / 2).floor()); } + + if (dropping && !vbox->is_visible_in_tree()) { + Color accent_color = get_theme_color("accent_color", "Editor"); + draw_rect(Rect2(Point2(), get_size()), accent_color, false); + } + } + + if (p_what == NOTIFICATION_DRAG_BEGIN) { + Dictionary dd = get_viewport()->gui_get_drag_data(); + + // Only allow dropping if the section contains properties which can take the dragged data. + bool children_can_drop = false; + for (int child_idx = 0; child_idx < vbox->get_child_count(); child_idx++) { + Control *editor_property = Object::cast_to<Control>(vbox->get_child(child_idx)); + + // Test can_drop_data and can_drop_data_fw, since can_drop_data only works if set up with forwarding or if script attached. + if (editor_property && (editor_property->can_drop_data(Point2(), dd) || editor_property->call("can_drop_data_fw", Point2(), dd, this))) { + children_can_drop = true; + break; + } + } + + dropping = children_can_drop; + update(); + } + + if (p_what == NOTIFICATION_DRAG_END) { + dropping = false; + update(); + } + + if (p_what == NOTIFICATION_MOUSE_ENTER) { + if (dropping) { + dropping_unfold_timer->start(); + } + } + + if (p_what == NOTIFICATION_MOUSE_EXIT) { + if (dropping) { + dropping_unfold_timer->stop(); + } } } @@ -1236,14 +1277,11 @@ void EditorInspectorSection::_gui_input(const Ref<InputEvent> &p_event) { return; } - _test_unfold(); - - bool unfold = !object->editor_is_section_unfolded(section); - object->editor_set_section_unfold(section, unfold); - if (unfold) { - vbox->show(); + bool should_unfold = !object->editor_is_section_unfolded(section); + if (should_unfold) { + unfold(); } else { - vbox->hide(); + fold(); } } } @@ -1291,6 +1329,13 @@ EditorInspectorSection::EditorInspectorSection() { foldable = false; vbox = memnew(VBoxContainer); vbox_added = false; + + dropping = false; + dropping_unfold_timer = memnew(Timer); + dropping_unfold_timer->set_wait_time(0.6); + dropping_unfold_timer->set_one_shot(true); + add_child(dropping_unfold_timer); + dropping_unfold_timer->connect("timeout", callable_mp(this, &EditorInspectorSection::unfold)); } EditorInspectorSection::~EditorInspectorSection() { diff --git a/editor/editor_inspector.h b/editor/editor_inspector.h index 95072fd703..36b80a7dd4 100644 --- a/editor/editor_inspector.h +++ b/editor/editor_inspector.h @@ -231,6 +231,9 @@ class EditorInspectorSection : public Container { Color bg_color; bool foldable; + Timer *dropping_unfold_timer; + bool dropping; + void _test_unfold(); protected: diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 3c53eab94e..16b8c6e0ac 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -123,6 +123,7 @@ #include "editor/plugins/cpu_particles_3d_editor_plugin.h" #include "editor/plugins/curve_editor_plugin.h" #include "editor/plugins/debugger_editor_plugin.h" +#include "editor/plugins/editor_debugger_plugin.h" #include "editor/plugins/editor_preview_plugins.h" #include "editor/plugins/gi_probe_editor_plugin.h" #include "editor/plugins/gpu_particles_2d_editor_plugin.h" @@ -456,8 +457,6 @@ void EditorNode::_notification(int p_what) { editor_selection->update(); - //scene_root->set_size_override(true, Size2(ProjectSettings::get_singleton()->get("display/window/size/width"), ProjectSettings::get_singleton()->get("display/window/size/height"))); - { //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()) { @@ -479,6 +478,8 @@ void EditorNode::_notification(int p_what) { 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"))); @@ -498,6 +499,10 @@ void EditorNode::_notification(int p_what) { 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")); } ResourceImporterTexture::get_singleton()->update_imports(); @@ -994,8 +999,8 @@ void EditorNode::save_resource_as(const Ref<Resource> &p_resource, const String } file->set_current_path(existing); } - file->popup_centered_ratio(); file->set_title(TTR("Save Resource As...")); + file->popup_file_dialog(); } void EditorNode::_menu_option(int p_option) { @@ -1236,7 +1241,10 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) { img.instance(); img->create(1, 1, 0, Image::FORMAT_RGB8); } else if (c3d < c2d) { - img = scene_root->get_texture()->get_data(); + Ref<ViewportTexture> viewport_texture = scene_root->get_texture(); + if (viewport_texture->get_width() > 0 && viewport_texture->get_height() > 0) { + img = viewport_texture->get_data(); + } } else { // The 3D editor may be disabled as a feature, but scenes can still be opened. // This check prevents the preview from regenerating in case those scenes are then saved. @@ -1246,7 +1254,7 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) { } } - if (img.is_valid()) { + if (img.is_valid() && img->get_width() > 0 && img->get_height() > 0) { img = img->duplicate(); save.step(TTR("Creating Thumbnail"), 2); @@ -2052,7 +2060,7 @@ void EditorNode::_run(bool p_current, const String &p_custom) { String args; bool skip_breakpoints; - if (p_current || (editor_data.get_edited_scene_root() && p_custom == editor_data.get_edited_scene_root()->get_filename())) { + if (p_current || (editor_data.get_edited_scene_root() && p_custom != String() && p_custom == editor_data.get_edited_scene_root()->get_filename())) { Node *scene = editor_data.get_edited_scene_root(); if (!scene) { @@ -2082,13 +2090,7 @@ void EditorNode::_run(bool p_current, const String &p_custom) { if (unsaved_cache) { Node *scene = editor_data.get_edited_scene_root(); - if (scene) { //only autosave if there is a scene obviously - - if (scene->get_filename() == "") { - show_accept(TTR("Current scene was never saved, please save it prior to running."), TTR("OK")); - return; - } - + if (scene && scene->get_filename() != "") { // Only autosave if there is a scene and if it has a path. _save_scene_with_preview(scene->get_filename()); } } @@ -2182,7 +2184,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { file->set_current_path(scene->get_filename()); }; file->set_title(p_option == FILE_OPEN_SCENE ? TTR("Open Scene") : TTR("Open Base Scene")); - file->popup_centered_ratio(); + file->popup_file_dialog(); } break; case FILE_QUICK_OPEN: { @@ -2318,7 +2320,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { } file->set_current_path(existing); } - file->popup_centered_ratio(); + file->popup_file_dialog(); file->set_title(TTR("Save Scene As...")); } break; @@ -2357,7 +2359,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { file_export_lib->add_filter("*." + E->get()); } - file_export_lib->popup_centered_ratio(); + file_export_lib->popup_file_dialog(); file_export_lib->set_title(TTR("Export Mesh Library")); } break; @@ -2376,7 +2378,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { file_export_lib->add_filter("*." + E->get()); } - file_export_lib->popup_centered_ratio(); + file_export_lib->popup_file_dialog(); file_export_lib->set_title(TTR("Export Tile Set")); } break; @@ -2623,7 +2625,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { case SETTINGS_TOGGLE_CONSOLE: { bool was_visible = DisplayServer::get_singleton()->is_console_visible(); DisplayServer::get_singleton()->console_set_visible(!was_visible); - EditorSettings::get_singleton()->set_setting("interface/editor/hide_console_window", was_visible); } break; case EDITOR_SCREENSHOT: { screenshot_timer->start(); @@ -2642,7 +2643,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { file->set_current_path(scene->get_filename()); }; file->set_title(TTR("Pick a Main Scene")); - file->popup_centered_ratio(); + file->popup_file_dialog(); } break; case HELP_SEARCH: { @@ -3622,6 +3623,7 @@ void EditorNode::register_editor_types() { // FIXME: Is this stuff obsolete, or should it be ported to new APIs? ClassDB::register_class<EditorScenePostImport>(); //ClassDB::register_type<EditorImportExport>(); + ClassDB::register_class<EditorDebuggerPlugin>(); } void EditorNode::unregister_editor_types() { @@ -5344,9 +5346,11 @@ void EditorNode::_feature_profile_changed() { TabContainer *node_tabs = cast_to<TabContainer>(node_dock->get_parent()); TabContainer *fs_tabs = cast_to<TabContainer>(filesystem_dock->get_parent()); if (profile.is_valid()) { - import_tabs->set_tab_hidden(import_dock->get_index(), profile->is_feature_disabled(EditorFeatureProfile::FEATURE_IMPORT_DOCK)); node_tabs->set_tab_hidden(node_dock->get_index(), profile->is_feature_disabled(EditorFeatureProfile::FEATURE_NODE_DOCK)); - fs_tabs->set_tab_hidden(filesystem_dock->get_index(), profile->is_feature_disabled(EditorFeatureProfile::FEATURE_FILESYSTEM_DOCK)); + // The Import dock is useless without the FileSystem dock. Ensure the configuration is valid. + bool fs_dock_disabled = profile->is_feature_disabled(EditorFeatureProfile::FEATURE_FILESYSTEM_DOCK); + fs_tabs->set_tab_hidden(filesystem_dock->get_index(), fs_dock_disabled); + import_tabs->set_tab_hidden(import_dock->get_index(), fs_dock_disabled || profile->is_feature_disabled(EditorFeatureProfile::FEATURE_IMPORT_DOCK)); main_editor_buttons[EDITOR_3D]->set_visible(!profile->is_feature_disabled(EditorFeatureProfile::FEATURE_3D)); main_editor_buttons[EDITOR_SCRIPT]->set_visible(!profile->is_feature_disabled(EditorFeatureProfile::FEATURE_SCRIPT)); @@ -6321,7 +6325,7 @@ EditorNode::EditorNode() { right_menu_hb->add_child(video_driver); #ifndef _MSC_VER -#warning neeeds to be reimplemented +#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; @@ -6802,6 +6806,7 @@ EditorNode::EditorNode() { EditorNode::~EditorNode() { EditorInspector::cleanup_plugins(); + EditorTranslationParser::get_singleton()->clean_parsers(); remove_print_handler(&print_handler); memdelete(EditorHelp::get_doc_data()); diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp index da0a0827d2..bce46b719a 100644 --- a/editor/editor_plugin.cpp +++ b/editor/editor_plugin.cpp @@ -811,6 +811,14 @@ ScriptCreateDialog *EditorPlugin::get_script_create_dialog() { return EditorNode::get_singleton()->get_script_create_dialog(); } +void EditorPlugin::add_debugger_plugin(const Ref<Script> &p_script) { + EditorDebuggerNode::get_singleton()->add_debugger_plugin(p_script); +} + +void EditorPlugin::remove_debugger_plugin(const Ref<Script> &p_script) { + EditorDebuggerNode::get_singleton()->remove_debugger_plugin(p_script); +} + 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); @@ -851,6 +859,8 @@ void EditorPlugin::_bind_methods() { ClassDB::bind_method(D_METHOD("get_editor_interface"), &EditorPlugin::get_editor_interface); ClassDB::bind_method(D_METHOD("get_script_create_dialog"), &EditorPlugin::get_script_create_dialog); + ClassDB::bind_method(D_METHOD("add_debugger_plugin", "script"), &EditorPlugin::add_debugger_plugin); + ClassDB::bind_method(D_METHOD("remove_debugger_plugin", "script"), &EditorPlugin::remove_debugger_plugin); ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "forward_canvas_gui_input", PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent"))); ClassDB::add_virtual_method(get_class_static(), MethodInfo("forward_canvas_draw_over_viewport", PropertyInfo(Variant::OBJECT, "overlay", PROPERTY_HINT_RESOURCE_TYPE, "Control"))); diff --git a/editor/editor_plugin.h b/editor/editor_plugin.h index 685f69bf3f..c7803f73c9 100644 --- a/editor/editor_plugin.h +++ b/editor/editor_plugin.h @@ -33,6 +33,7 @@ #include "core/io/config_file.h" #include "core/undo_redo.h" +#include "editor/debugger/editor_debugger_node.h" #include "editor/editor_inspector.h" #include "editor/editor_translation_parser.h" #include "editor/import/editor_import_plugin.h" @@ -249,6 +250,9 @@ public: void add_autoload_singleton(const String &p_name, const String &p_path); void remove_autoload_singleton(const String &p_name); + void add_debugger_plugin(const Ref<Script> &p_script); + void remove_debugger_plugin(const Ref<Script> &p_script); + void enable_plugin(); void disable_plugin(); diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index 48f1a1f134..4c8af615b4 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -36,6 +36,7 @@ #include "editor_properties_array_dict.h" #include "editor_scale.h" #include "scene/main/window.h" +#include "scene/resources/dynamic_font.h" ///////////////////// NULL ///////////////////////// @@ -253,7 +254,7 @@ void EditorPropertyPath::_path_pressed() { dialog->set_current_path(full_path); } - dialog->popup_centered_ratio(); + dialog->popup_file_dialog(); } void EditorPropertyPath::update_property() { @@ -946,14 +947,11 @@ void EditorPropertyEasing::_drag_easing(const Ref<InputEvent> &p_ev) { } float val = get_edited_object()->get(get_edited_property()); - if (val == 0) { - return; - } bool sg = val < 0; val = Math::absf(val); val = Math::log(val) / Math::log((float)2.0); - //logspace + // Logarithmic space. val += rel * 0.05; val = Math::pow(2.0f, val); @@ -961,6 +959,16 @@ void EditorPropertyEasing::_drag_easing(const Ref<InputEvent> &p_ev) { val = -val; } + // 0 is a singularity, but both positive and negative values + // are otherwise allowed. Enforce 0+ as workaround. + if (Math::is_zero_approx(val)) { + val = 0.00001; + } + + // Limit to a reasonable value to prevent the curve going into infinity, + // which can cause crashes and other issues. + val = CLAMP(val, -1'000'000, 1'000'000); + emit_changed(get_edited_property(), val); easing_draw->update(); } @@ -1003,7 +1011,18 @@ void EditorPropertyEasing::_draw_easing() { } easing_draw->draw_multiline(lines, line_color, 1.0); - f->draw(ci, Point2(10, 10 + f->get_ascent()), String::num(exp, 2), font_color); + // Draw more decimals for small numbers since higher precision is usually required for fine adjustments. + int decimals; + if (Math::abs(exp) < 0.1 - CMP_EPSILON) { + decimals = 4; + } else if (Math::abs(exp) < 1 - CMP_EPSILON) { + decimals = 3; + } else if (Math::abs(exp) < 10 - CMP_EPSILON) { + decimals = 2; + } else { + decimals = 1; + } + f->draw(ci, Point2(10, 10 + f->get_ascent()), rtos(exp).pad_decimals(decimals), font_color); } void EditorPropertyEasing::update_property() { @@ -1035,6 +1054,11 @@ void EditorPropertyEasing::_spin_value_changed(double p_value) { if (Math::is_zero_approx(p_value)) { p_value = 0.00001; } + + // Limit to a reasonable value to prevent the curve going into infinity, + // which can cause crashes and other issues. + p_value = CLAMP(p_value, -1'000'000, 1'000'000); + emit_changed(get_edited_property(), p_value); _spin_focus_exited(); } @@ -2108,6 +2132,11 @@ EditorPropertyTransform::EditorPropertyTransform() { ////////////// COLOR PICKER ////////////////////// void EditorPropertyColor::_color_changed(const Color &p_color) { + // Cancel the color change if the current color is identical to the new one. + if (get_edited_object()->get(get_edited_property()) == p_color) { + return; + } + emit_changed(get_edited_property(), p_color, "", true); } @@ -2207,7 +2236,7 @@ void EditorPropertyNodePath::_node_assign() { add_child(scene_tree); scene_tree->connect("selected", callable_mp(this, &EditorPropertyNodePath::_node_selected)); } - scene_tree->popup_centered_ratio(); + scene_tree->popup_scenetree_dialog(); } void EditorPropertyNodePath::_node_clear() { @@ -2343,7 +2372,7 @@ void EditorPropertyResource::_file_selected(const String &p_path) { } void EditorPropertyResource::_menu_option(int p_which) { - // scene_tree->popup_centered_ratio(); + //scene_tree->popup_scenetree_dialog(); switch (p_which) { case OBJ_MENU_LOAD: { if (!file) { @@ -2369,7 +2398,7 @@ void EditorPropertyResource::_menu_option(int p_which) { file->add_filter("*." + E->get() + " ; " + E->get().to_upper()); } - file->popup_centered_ratio(); + file->popup_file_dialog(); } break; case OBJ_MENU_EDIT: { @@ -2507,7 +2536,7 @@ void EditorPropertyResource::_menu_option(int p_which) { scene_tree->connect("selected", callable_mp(this, &EditorPropertyResource::_viewport_selected)); scene_tree->set_title(TTR("Pick a Viewport")); } - scene_tree->popup_centered_ratio(); + scene_tree->popup_scenetree_dialog(); return; } @@ -2919,11 +2948,9 @@ void EditorPropertyResource::_notification(int p_what) { } if (p_what == NOTIFICATION_DRAG_BEGIN) { - if (is_visible_in_tree()) { - if (_is_drop_valid(get_viewport()->gui_get_drag_data())) { - dropping = true; - assign->update(); - } + if (_is_drop_valid(get_viewport()->gui_get_drag_data())) { + dropping = true; + assign->update(); } } @@ -2980,7 +3007,18 @@ Variant EditorPropertyResource::get_drag_data_fw(const Point2 &p_point, Control } bool EditorPropertyResource::_is_drop_valid(const Dictionary &p_drag_data) const { - String allowed_type = base_type; + Vector<String> allowed_types = base_type.split(","); + int size = allowed_types.size(); + for (int i = 0; i < size; i++) { + String at = allowed_types[i].strip_edges(); + if (at == "StandardMaterial3D") { + allowed_types.append("Texture2D"); + } else if (at == "ShaderMaterial") { + allowed_types.append("Shader"); + } else if (at == "Font") { + allowed_types.append("DynamicFontData"); + } + } Dictionary drag_data = p_drag_data; @@ -2993,9 +3031,9 @@ bool EditorPropertyResource::_is_drop_valid(const Dictionary &p_drag_data) const } if (res.is_valid()) { - for (int i = 0; i < allowed_type.get_slice_count(","); i++) { - String at = allowed_type.get_slice(",", i).strip_edges(); - if (res.is_valid() && ClassDB::is_parent_class(res->get_class(), at)) { + for (int i = 0; i < allowed_types.size(); i++) { + String at = allowed_types[i].strip_edges(); + if (ClassDB::is_parent_class(res->get_class(), at)) { return true; } } @@ -3009,8 +3047,8 @@ bool EditorPropertyResource::_is_drop_valid(const Dictionary &p_drag_data) const String ftype = EditorFileSystem::get_singleton()->get_file_type(file); if (ftype != "") { - for (int i = 0; i < allowed_type.get_slice_count(","); i++) { - String at = allowed_type.get_slice(",", i).strip_edges(); + for (int i = 0; i < allowed_types.size(); i++) { + String at = allowed_types[i].strip_edges(); if (ClassDB::is_parent_class(ftype, at)) { return true; } @@ -3039,24 +3077,56 @@ void EditorPropertyResource::drop_data_fw(const Point2 &p_point, const Variant & res = drag_data["resource"]; } - if (res.is_valid()) { - emit_changed(get_edited_property(), res); - update_property(); - return; - } - - if (drag_data.has("type") && String(drag_data["type"]) == "files") { + if (!res.is_valid() && drag_data.has("type") && String(drag_data["type"]) == "files") { Vector<String> files = drag_data["files"]; if (files.size() == 1) { String file = files[0]; - RES file_res = ResourceLoader::load(file); - if (file_res.is_valid()) { - emit_changed(get_edited_property(), file_res); - update_property(); - return; + res = ResourceLoader::load(file); + } + } + + if (res.is_valid()) { + bool need_convert = true; + + Vector<String> allowed_types = base_type.split(","); + for (int i = 0; i < allowed_types.size(); i++) { + String at = allowed_types[i].strip_edges(); + if (ClassDB::is_parent_class(res->get_class(), at)) { + need_convert = false; + break; } } + + if (need_convert) { + for (int i = 0; i < allowed_types.size(); i++) { + String at = allowed_types[i].strip_edges(); + if (at == "StandardMaterial3D" && ClassDB::is_parent_class(res->get_class(), "Texture2D")) { + Ref<StandardMaterial3D> mat = memnew(StandardMaterial3D); + mat->set_texture(StandardMaterial3D::TextureParam::TEXTURE_ALBEDO, res); + res = mat; + break; + } + + if (at == "ShaderMaterial" && ClassDB::is_parent_class(res->get_class(), "Shader")) { + Ref<ShaderMaterial> mat = memnew(ShaderMaterial); + mat->set_shader(res); + res = mat; + break; + } + + if (at == "Font" && ClassDB::is_parent_class(res->get_class(), "DynamicFontData")) { + Ref<DynamicFont> font = memnew(DynamicFont); + font->set_font_data(res); + res = font; + break; + } + } + } + + emit_changed(get_edited_property(), res); + update_property(); + return; } } @@ -3241,10 +3311,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ if ((p_hint == PROPERTY_HINT_RANGE || p_hint == PROPERTY_HINT_EXP_RANGE) && p_hint_text.get_slice_count(",") >= 2) { greater = false; //if using ranged, assume false by default lesser = false; - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); if (p_hint_text.get_slice_count(",") >= 3) { - step = p_hint_text.get_slice(",", 2).to_double(); + step = p_hint_text.get_slice(",", 2).to_float(); } hide_slider = false; exp_range = p_hint == PROPERTY_HINT_EXP_RANGE; @@ -3344,10 +3414,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); if (p_hint_text.get_slice_count(",") >= 3) { - step = p_hint_text.get_slice(",", 2).to_double(); + step = p_hint_text.get_slice(",", 2).to_float(); } hide_slider = false; } @@ -3362,8 +3432,8 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); hide_slider = false; } @@ -3377,10 +3447,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); if (p_hint_text.get_slice_count(",") >= 3) { - step = p_hint_text.get_slice(",", 2).to_double(); + step = p_hint_text.get_slice(",", 2).to_float(); } hide_slider = false; } @@ -3394,8 +3464,8 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); hide_slider = false; } @@ -3408,10 +3478,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); if (p_hint_text.get_slice_count(",") >= 3) { - step = p_hint_text.get_slice(",", 2).to_double(); + step = p_hint_text.get_slice(",", 2).to_float(); } hide_slider = false; } @@ -3426,8 +3496,8 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); hide_slider = false; } @@ -3442,10 +3512,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); if (p_hint_text.get_slice_count(",") >= 3) { - step = p_hint_text.get_slice(",", 2).to_double(); + step = p_hint_text.get_slice(",", 2).to_float(); } hide_slider = false; } @@ -3460,10 +3530,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); if (p_hint_text.get_slice_count(",") >= 3) { - step = p_hint_text.get_slice(",", 2).to_double(); + step = p_hint_text.get_slice(",", 2).to_float(); } hide_slider = false; } @@ -3477,10 +3547,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); if (p_hint_text.get_slice_count(",") >= 3) { - step = p_hint_text.get_slice(",", 2).to_double(); + step = p_hint_text.get_slice(",", 2).to_float(); } hide_slider = false; } @@ -3494,10 +3564,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); if (p_hint_text.get_slice_count(",") >= 3) { - step = p_hint_text.get_slice(",", 2).to_double(); + step = p_hint_text.get_slice(",", 2).to_float(); } hide_slider = false; } @@ -3511,10 +3581,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); if (p_hint_text.get_slice_count(",") >= 3) { - step = p_hint_text.get_slice(",", 2).to_double(); + step = p_hint_text.get_slice(",", 2).to_float(); } hide_slider = false; } @@ -3528,10 +3598,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ bool hide_slider = true; if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) { - min = p_hint_text.get_slice(",", 0).to_double(); - max = p_hint_text.get_slice(",", 1).to_double(); + min = p_hint_text.get_slice(",", 0).to_float(); + max = p_hint_text.get_slice(",", 1).to_float(); if (p_hint_text.get_slice_count(",") >= 3) { - step = p_hint_text.get_slice(",", 2).to_double(); + step = p_hint_text.get_slice(",", 2).to_float(); } hide_slider = false; } diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 3a1a0d5b01..7b24e6967a 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -334,7 +334,6 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { _initial_set("interface/editor/automatically_open_screenshots", true); _initial_set("interface/editor/single_window_mode", false); hints["interface/editor/single_window_mode"] = PropertyInfo(Variant::BOOL, "interface/editor/single_window_mode", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); - _initial_set("interface/editor/hide_console_window", false); _initial_set("interface/editor/save_each_scene_on_quit", true); // Regression _initial_set("interface/editor/quit_confirmation", true); @@ -495,6 +494,8 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { hints["text_editor/help/help_source_font_size"] = PropertyInfo(Variant::INT, "text_editor/help/help_source_font_size", PROPERTY_HINT_RANGE, "8,48,1"); _initial_set("text_editor/help/help_title_font_size", 23); hints["text_editor/help/help_title_font_size"] = PropertyInfo(Variant::INT, "text_editor/help/help_title_font_size", PROPERTY_HINT_RANGE, "8,48,1"); + _initial_set("text_editor/help/class_reference_examples", 0); + hints["text_editor/help/class_reference_examples"] = PropertyInfo(Variant::INT, "text_editor/help/class_reference_examples", PROPERTY_HINT_ENUM, "GDScript,C#,GDScript and C#"); /* Editors */ @@ -542,6 +543,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { // 3D: Navigation _initial_set("editors/3d/navigation/navigation_scheme", 0); _initial_set("editors/3d/navigation/invert_y_axis", false); + _initial_set("editors/3d/navigation/invert_x_axis", false); hints["editors/3d/navigation/navigation_scheme"] = PropertyInfo(Variant::INT, "editors/3d/navigation/navigation_scheme", PROPERTY_HINT_ENUM, "Godot,Maya,Modo"); _initial_set("editors/3d/navigation/zoom_style", 0); hints["editors/3d/navigation/zoom_style"] = PropertyInfo(Variant::INT, "editors/3d/navigation/zoom_style", PROPERTY_HINT_ENUM, "Vertical, Horizontal"); diff --git a/editor/editor_sub_scene.cpp b/editor/editor_sub_scene.cpp index a9b1a28092..f794babc24 100644 --- a/editor/editor_sub_scene.cpp +++ b/editor/editor_sub_scene.cpp @@ -66,7 +66,7 @@ void EditorSubScene::_path_changed(const String &p_path) { } void EditorSubScene::_path_browse() { - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); } void EditorSubScene::_notification(int p_what) { diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index a93763810b..8d54bc8021 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -85,7 +85,8 @@ static Ref<StyleBoxLine> make_line_stylebox(Color p_color, int p_thickness = 1, return style; } -Ref<ImageTexture> editor_generate_icon(int p_index, bool p_convert_color, float p_scale = EDSCALE, bool p_force_filter = 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) { Ref<ImageTexture> icon = memnew(ImageTexture); Ref<Image> img = memnew(Image); @@ -99,6 +100,7 @@ Ref<ImageTexture> editor_generate_icon(int p_index, bool p_convert_color, float return icon; } +#endif #ifndef ADD_CONVERT_COLOR #define ADD_CONVERT_COLOR(dictionary, old_color, new_color) dictionary[Color::html(old_color)] = Color::html(new_color) diff --git a/editor/editor_translation_parser.cpp b/editor/editor_translation_parser.cpp index 3f4864ad1e..7a90d20000 100644 --- a/editor/editor_translation_parser.cpp +++ b/editor/editor_translation_parser.cpp @@ -37,15 +37,30 @@ EditorTranslationParser *EditorTranslationParser::singleton = nullptr; -Error EditorTranslationParserPlugin::parse_file(const String &p_path, Vector<String> *r_extracted_strings) { +Error EditorTranslationParserPlugin::parse_file(const String &p_path, Vector<String> *r_ids, Vector<Vector<String>> *r_ids_ctx_plural) { if (!get_script_instance()) return ERR_UNAVAILABLE; if (get_script_instance()->has_method("parse_file")) { - Array extracted_strings; - get_script_instance()->call("parse_file", p_path, extracted_strings); - for (int i = 0; i < extracted_strings.size(); i++) { - r_extracted_strings->append(extracted_strings[i]); + Array ids; + Array ids_ctx_plural; + get_script_instance()->call("parse_file", p_path, ids, ids_ctx_plural); + + // Add user's extracted translatable messages. + for (int i = 0; i < ids.size(); i++) { + r_ids->append(ids[i]); + } + + // Add user's collected translatable messages with context or plurals. + for (int i = 0; i < ids_ctx_plural.size(); i++) { + Array arr = ids_ctx_plural[i]; + ERR_FAIL_COND_V_MSG(arr.size() != 3, ERR_INVALID_DATA, "Array entries written into `msgids_context_plural` in `parse_file()` method should have the form [\"message\", \"context\", \"plural message\"]"); + + Vector<String> id_ctx_plural; + id_ctx_plural.push_back(arr[0]); + id_ctx_plural.push_back(arr[1]); + id_ctx_plural.push_back(arr[2]); + r_ids_ctx_plural->append(id_ctx_plural); } return OK; } else { @@ -69,7 +84,7 @@ void EditorTranslationParserPlugin::get_recognized_extensions(List<String> *r_ex } void EditorTranslationParserPlugin::_bind_methods() { - ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::NIL, "parse_file", PropertyInfo(Variant::STRING, "path"), PropertyInfo(Variant::ARRAY, "extracted_strings"))); + ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::NIL, "parse_file", PropertyInfo(Variant::STRING, "path"), PropertyInfo(Variant::ARRAY, "msgids"), PropertyInfo(Variant::ARRAY, "msgids_context_plural"))); ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::ARRAY, "get_recognized_extensions")); } @@ -147,6 +162,11 @@ void EditorTranslationParser::remove_parser(const Ref<EditorTranslationParserPlu } } +void EditorTranslationParser::clean_parsers() { + standard_parsers.clear(); + custom_parsers.clear(); +} + EditorTranslationParser *EditorTranslationParser::get_singleton() { if (!singleton) { singleton = memnew(EditorTranslationParser); diff --git a/editor/editor_translation_parser.h b/editor/editor_translation_parser.h index 6d00bedfa4..18f49b3803 100644 --- a/editor/editor_translation_parser.h +++ b/editor/editor_translation_parser.h @@ -41,7 +41,7 @@ protected: static void _bind_methods(); public: - virtual Error parse_file(const String &p_path, Vector<String> *r_extracted_strings); + virtual Error parse_file(const String &p_path, Vector<String> *r_ids, Vector<Vector<String>> *r_ids_ctx_plural); virtual void get_recognized_extensions(List<String> *r_extensions) const; }; @@ -64,6 +64,7 @@ public: Ref<EditorTranslationParserPlugin> get_parser(const String &p_extension) const; void add_parser(const Ref<EditorTranslationParserPlugin> &p_parser, ParserType p_type); void remove_parser(const Ref<EditorTranslationParserPlugin> &p_parser, ParserType p_type); + void clean_parsers(); EditorTranslationParser(); ~EditorTranslationParser(); diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp index fb12c15913..84517f36ea 100644 --- a/editor/export_template_manager.cpp +++ b/editor/export_template_manager.cpp @@ -334,7 +334,7 @@ void ExportTemplateManager::popup_manager() { } void ExportTemplateManager::ok_pressed() { - template_open->popup_centered_ratio(); + template_open->popup_file_dialog(); } void ExportTemplateManager::_http_download_mirror_completed(int p_status, int p_code, const PackedStringArray &headers, const PackedByteArray &p_data) { diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index 4f37fcf39c..31903c89be 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -2430,11 +2430,31 @@ void FileSystemDock::_file_list_gui_input(Ref<InputEvent> p_event) { } } -void FileSystemDock::_update_import_dock() { - if (!import_dock_needs_update) { +void FileSystemDock::_get_imported_files(const String &p_path, Vector<String> &files) const { + if (!p_path.ends_with("/")) { + if (FileAccess::exists(p_path + ".import")) { + files.push_back(p_path); + } return; } + DirAccess *da = DirAccess::open(p_path); + da->list_dir_begin(); + String n = da->get_next(); + while (n != String()) { + if (n != "." && n != ".." && !n.ends_with(".import")) { + String npath = p_path + n + (da->current_is_dir() ? "/" : ""); + _get_imported_files(npath, files); + } + n = da->get_next(); + } + da->list_dir_end(); +} + +void FileSystemDock::_update_import_dock() { + if (!import_dock_needs_update) + return; + // List selected. Vector<String> selected; if (display_mode == DISPLAY_MODE_TREE_ONLY) { @@ -2444,29 +2464,24 @@ void FileSystemDock::_update_import_dock() { } else { // Use the file list. for (int i = 0; i < files->get_item_count(); i++) { - if (!files->is_selected(i)) { + if (!files->is_selected(i)) continue; - } selected.push_back(files->get_item_metadata(i)); } } + // Expand directory selection + Vector<String> efiles; + for (int i = 0; i < selected.size(); i++) { + _get_imported_files(selected[i], efiles); + } + // Check import. Vector<String> imports; String import_type; - for (int i = 0; i < selected.size(); i++) { - String fpath = selected[i]; - - if (fpath.ends_with("/")) { - imports.clear(); - break; - } - - if (!FileAccess::exists(fpath + ".import")) { - imports.clear(); - break; - } + for (int i = 0; i < efiles.size(); i++) { + String fpath = efiles[i]; Ref<ConfigFile> cf; cf.instance(); Error err = cf->load(fpath + ".import"); diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h index b0118f11aa..ec2a075834 100644 --- a/editor/filesystem_dock.h +++ b/editor/filesystem_dock.h @@ -195,6 +195,7 @@ private: void _file_multi_selected(int p_index, bool p_selected); void _tree_multi_selected(Object *p_item, int p_column, bool p_selected); + void _get_imported_files(const String &p_path, Vector<String> &files) const; void _update_import_dock(); void _get_all_items_in_dir(EditorFileSystemDirectory *efsd, Vector<String> &files, Vector<String> &folders) const; diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp index 53c52b94cc..bd4bb57dcf 100644 --- a/editor/find_in_files.cpp +++ b/editor/find_in_files.cpp @@ -483,7 +483,7 @@ void FindInFilesDialog::_notification(int p_what) { } void FindInFilesDialog::_on_folder_button_pressed() { - _folder_dialog->popup_centered_ratio(); + _folder_dialog->popup_file_dialog(); } void FindInFilesDialog::custom_action(const String &p_action) { diff --git a/editor/icons/GuiToggleOff.svg b/editor/icons/GuiToggleOff.svg index 928b55b201..9644ef176c 100644 --- a/editor/icons/GuiToggleOff.svg +++ b/editor/icons/GuiToggleOff.svg @@ -1 +1 @@ -<svg height="26" viewBox="0 0 42 25.999998" width="42" xmlns="http://www.w3.org/2000/svg"><g fill="#e0e0e0"><rect fill-opacity=".188235" height="16" rx="9" stroke-width="55.8958" width="38" x="2" y="5"/><circle cx="10" cy="13" r="5" stroke-width="97.3613"/></g></svg> +<svg height="16" viewBox="0 0 38 15.999999" width="38" xmlns="http://www.w3.org/2000/svg"><g fill="#e0e0e0"><rect fill-opacity=".188235" height="14" rx="7" stroke-width="55.8958" width="36" x="1" y="1"/><circle cx="8" cy="8" r="5" stroke-width="97.3613"/></g></svg> diff --git a/editor/icons/GuiToggleOn.svg b/editor/icons/GuiToggleOn.svg index a79a8290b1..8ab0998f71 100644 --- a/editor/icons/GuiToggleOn.svg +++ b/editor/icons/GuiToggleOn.svg @@ -1 +1 @@ -<svg height="26" viewBox="0 0 42 25.999998" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m11 5c-4.986 0-9 3.568-9 8s4.014 8 9 8h20c4.986 0 9-3.568 9-8s-4.014-8-9-8zm21 3a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5-5 5 5 0 0 1 5-5z" fill="#e0e0e0" stroke-width="55.8958"/></svg> +<svg height="16" viewBox="0 0 38 15.999999" width="38" xmlns="http://www.w3.org/2000/svg"><path d="m8 1c-3.878 0-7 3.122-7 7s3.122 7 7 7h22c3.878 0 7-3.122 7-7s-3.122-7-7-7zm22 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5-5 5 5 0 0 1 5-5z" fill="#e0e0e0" stroke-width="55.8958"/></svg> diff --git a/editor/icons/SCsub b/editor/icons/SCsub index e143276259..dd4243d750 100644 --- a/editor/icons/SCsub +++ b/editor/icons/SCsub @@ -4,14 +4,14 @@ Import("env") import os -from platform_methods import run_in_subprocess import editor_icons_builders -make_editor_icons_builder = Builder( - action=run_in_subprocess(editor_icons_builders.make_editor_icons_action), suffix=".h", src_suffix=".svg" -) -env["BUILDERS"]["MakeEditorIconsBuilder"] = make_editor_icons_builder +env["BUILDERS"]["MakeEditorIconsBuilder"] = Builder( + action=env.Run(editor_icons_builders.make_editor_icons_action, "Generating editor icons header."), + suffix=".h", + src_suffix=".svg", +) # Editor's own icons icon_sources = Glob("*.svg") diff --git a/editor/import/collada.cpp b/editor/import/collada.cpp index 41e71248a9..8eb68ecdcf 100644 --- a/editor/import/collada.cpp +++ b/editor/import/collada.cpp @@ -262,7 +262,7 @@ void Collada::_parse_asset(XMLParser &parser) { COLLADA_PRINT("up axis: " + parser.get_node_data()); } else if (name == "unit") { - state.unit_scale = parser.get_attribute_value("meter").to_double(); + state.unit_scale = parser.get_attribute_value("meter").to_float(); COLLADA_PRINT("unit scale: " + rtos(state.unit_scale)); } @@ -433,7 +433,7 @@ Transform Collada::_read_transform(XMLParser &parser) { Vector<float> farr; farr.resize(16); for (int i = 0; i < 16; i++) { - farr.write[i] = array[i].to_double(); + farr.write[i] = array[i].to_float(); } return _read_transform_from_array(farr); @@ -469,7 +469,7 @@ Variant Collada::_parse_param(XMLParser &parser) { if (parser.get_node_name() == "float") { parser.read(); if (parser.get_node_type() == XMLParser::NODE_TEXT) { - data = parser.get_node_data().to_double(); + data = parser.get_node_data().to_float(); } } else if (parser.get_node_name() == "float2") { Vector<float> v2 = _read_float_array(parser); @@ -735,29 +735,29 @@ void Collada::_parse_camera(XMLParser &parser) { camera.mode = CameraData::MODE_ORTHOGONAL; } else if (name == "xfov") { parser.read(); - camera.perspective.x_fov = parser.get_node_data().to_double(); + camera.perspective.x_fov = parser.get_node_data().to_float(); } else if (name == "yfov") { parser.read(); - camera.perspective.y_fov = parser.get_node_data().to_double(); + camera.perspective.y_fov = parser.get_node_data().to_float(); } else if (name == "xmag") { parser.read(); - camera.orthogonal.x_mag = parser.get_node_data().to_double(); + camera.orthogonal.x_mag = parser.get_node_data().to_float(); } else if (name == "ymag") { parser.read(); - camera.orthogonal.y_mag = parser.get_node_data().to_double(); + camera.orthogonal.y_mag = parser.get_node_data().to_float(); } else if (name == "aspect_ratio") { parser.read(); - camera.aspect = parser.get_node_data().to_double(); + camera.aspect = parser.get_node_data().to_float(); } else if (name == "znear") { parser.read(); - camera.z_near = parser.get_node_data().to_double(); + camera.z_near = parser.get_node_data().to_float(); } else if (name == "zfar") { parser.read(); - camera.z_far = parser.get_node_data().to_double(); + camera.z_far = parser.get_node_data().to_float(); } } else if (parser.get_node_type() == XMLParser::NODE_ELEMENT_END && parser.get_node_name() == "camera") { @@ -806,20 +806,20 @@ void Collada::_parse_light(XMLParser &parser) { } else if (name == "constant_attenuation") { parser.read(); - light.constant_att = parser.get_node_data().to_double(); + light.constant_att = parser.get_node_data().to_float(); } else if (name == "linear_attenuation") { parser.read(); - light.linear_att = parser.get_node_data().to_double(); + light.linear_att = parser.get_node_data().to_float(); } else if (name == "quadratic_attenuation") { parser.read(); - light.quad_att = parser.get_node_data().to_double(); + light.quad_att = parser.get_node_data().to_float(); } else if (name == "falloff_angle") { parser.read(); - light.spot_angle = parser.get_node_data().to_double(); + light.spot_angle = parser.get_node_data().to_float(); } else if (name == "falloff_exponent") { parser.read(); - light.spot_exp = parser.get_node_data().to_double(); + light.spot_exp = parser.get_node_data().to_float(); } } else if (parser.get_node_type() == XMLParser::NODE_ELEMENT_END && parser.get_node_name() == "light") { @@ -1877,10 +1877,10 @@ void Collada::_parse_animation_clip(XMLParser &parser) { clip.name = parser.get_attribute_value("id"); } if (parser.has_attribute("start")) { - clip.begin = parser.get_attribute_value("start").to_double(); + clip.begin = parser.get_attribute_value("start").to_float(); } if (parser.has_attribute("end")) { - clip.end = parser.get_attribute_value("end").to_double(); + clip.end = parser.get_attribute_value("end").to_float(); } while (parser.read() == OK) { diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp index 683db0e31d..bb144d2ed6 100644 --- a/editor/import/editor_scene_importer_gltf.cpp +++ b/editor/import/editor_scene_importer_gltf.cpp @@ -1229,10 +1229,14 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) { } } + mesh.blend_weights.resize(mesh.mesh->get_blend_shape_count()); + for (int32_t weight_i = 0; weight_i < mesh.blend_weights.size(); weight_i++) { + mesh.blend_weights.write[weight_i] = 0.0f; + } + if (d.has("weights")) { const Array &weights = d["weights"]; - ERR_FAIL_COND_V(mesh.mesh->get_blend_shape_count() != weights.size(), ERR_PARSE_ERROR); - mesh.blend_weights.resize(weights.size()); + ERR_FAIL_COND_V(mesh.blend_weights.size() != weights.size(), ERR_PARSE_ERROR); for (int j = 0; j < weights.size(); j++) { mesh.blend_weights.write[j] = weights[j]; } diff --git a/editor/import/resource_importer_layered_texture.cpp b/editor/import/resource_importer_layered_texture.cpp index b57ea3745d..f954931cee 100644 --- a/editor/import/resource_importer_layered_texture.cpp +++ b/editor/import/resource_importer_layered_texture.cpp @@ -180,7 +180,7 @@ void ResourceImporterLayeredTexture::_save_tex(Vector<Ref<Image>> p_images, cons f->store_32(0); //dataformat f->store_32(0); //mipmap limit - //reserverd + //reserved f->store_32(0); f->store_32(0); f->store_32(0); diff --git a/editor/input_map_editor.cpp b/editor/input_map_editor.cpp index 70c354e55a..52cf9c1869 100644 --- a/editor/input_map_editor.cpp +++ b/editor/input_map_editor.cpp @@ -36,44 +36,44 @@ #include "editor/editor_scale.h" static const char *_button_descriptions[JOY_SDL_BUTTONS] = { - "Face Bottom, DualShock Cross, Xbox A, Nintendo B", - "Face Right, DualShock Circle, Xbox B, Nintendo A", - "Face Left, DualShock Square, Xbox X, Nintendo Y", - "Face Top, DualShock Triangle, Xbox Y, Nintendo X", - "DualShock Select, Xbox Back, Nintendo -", - "Home, DualShock PS, Guide", - "Start, Nintendo +", - "Left Stick, DualShock L3, Xbox L/LS", - "Right Stick, DualShock R3, Xbox R/RS", - "Left Shoulder, DualShock L1, Xbox LB", - "Right Shoulder, DualShock R1, Xbox RB", - "D-Pad Up", - "D-Pad Down", - "D-Pad Left", - "D-Pad Right" + TTRC("Face Bottom, DualShock Cross, Xbox A, Nintendo B"), + TTRC("Face Right, DualShock Circle, Xbox B, Nintendo A"), + TTRC("Face Left, DualShock Square, Xbox X, Nintendo Y"), + TTRC("Face Top, DualShock Triangle, Xbox Y, Nintendo X"), + TTRC("DualShock Select, Xbox Back, Nintendo -"), + TTRC("Home, DualShock PS, Guide"), + TTRC("Start, Nintendo +"), + TTRC("Left Stick, DualShock L3, Xbox L/LS"), + TTRC("Right Stick, DualShock R3, Xbox R/RS"), + TTRC("Left Shoulder, DualShock L1, Xbox LB"), + TTRC("Right Shoulder, DualShock R1, Xbox RB"), + TTRC("D-Pad Up"), + TTRC("D-Pad Down"), + TTRC("D-Pad Left"), + TTRC("D-Pad Right") }; static const char *_axis_descriptions[JOY_AXIS_MAX * 2] = { - "Left Stick Left", - "Left Stick Right", - "Left Stick Up", - "Left Stick Down", - "Right Stick Left", - "Right Stick Right", - "Right Stick Up", - "Right Stick Down", - "Joystick 2 Left", - "Joystick 2 Right, Left Trigger, L2, LT", - "Joystick 2 Up", - "Joystick 2 Down, Right Trigger, R2, RT", - "Joystick 3 Left", - "Joystick 3 Right", - "Joystick 3 Up", - "Joystick 3 Down", - "Joystick 4 Left", - "Joystick 4 Right", - "Joystick 4 Up", - "Joystick 4 Down", + TTRC("Left Stick Left"), + TTRC("Left Stick Right"), + TTRC("Left Stick Up"), + TTRC("Left Stick Down"), + TTRC("Right Stick Left"), + TTRC("Right Stick Right"), + TTRC("Right Stick Up"), + TTRC("Right Stick Down"), + TTRC("Joystick 2 Left"), + TTRC("Joystick 2 Right, Left Trigger, L2, LT"), + TTRC("Joystick 2 Up"), + TTRC("Joystick 2 Down, Right Trigger, R2, RT"), + TTRC("Joystick 3 Left"), + TTRC("Joystick 3 Right"), + TTRC("Joystick 3 Up"), + TTRC("Joystick 3 Down"), + TTRC("Joystick 4 Left"), + TTRC("Joystick 4 Right"), + TTRC("Joystick 4 Up"), + TTRC("Joystick 4 Down"), }; void InputMapEditor::_notification(int p_what) { diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp index 903d9a2d31..8f1b8838d8 100644 --- a/editor/inspector_dock.cpp +++ b/editor/inspector_dock.cpp @@ -150,7 +150,7 @@ void InspectorDock::_load_resource(const String &p_type) { load_resource_dialog->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper()); } - load_resource_dialog->popup_centered_ratio(); + load_resource_dialog->popup_file_dialog(); } void InspectorDock::_resource_file_selected(String p_file) { diff --git a/editor/localization_editor.cpp b/editor/localization_editor.cpp index 98b6d32ae3..6764f70d9b 100644 --- a/editor/localization_editor.cpp +++ b/editor/localization_editor.cpp @@ -82,7 +82,7 @@ void LocalizationEditor::_translation_add(const String &p_path) { } void LocalizationEditor::_translation_file_open() { - translation_file_open->popup_centered_ratio(); + translation_file_open->popup_file_dialog(); } void LocalizationEditor::_translation_delete(Object *p_item, int p_column, int p_button) { @@ -108,7 +108,7 @@ void LocalizationEditor::_translation_delete(Object *p_item, int p_column, int p } void LocalizationEditor::_translation_res_file_open() { - translation_res_file_open_dialog->popup_centered_ratio(); + translation_res_file_open_dialog->popup_file_dialog(); } void LocalizationEditor::_translation_res_add(const String &p_path) { @@ -137,7 +137,7 @@ void LocalizationEditor::_translation_res_add(const String &p_path) { } void LocalizationEditor::_translation_res_option_file_open() { - translation_res_option_file_open_dialog->popup_centered_ratio(); + translation_res_option_file_open_dialog->popup_file_dialog(); } void LocalizationEditor::_translation_res_option_add(const String &p_path) { @@ -406,11 +406,11 @@ void LocalizationEditor::_pot_delete(Object *p_item, int p_column, int p_button) } void LocalizationEditor::_pot_file_open() { - pot_file_open_dialog->popup_centered_ratio(); + pot_file_open_dialog->popup_file_dialog(); } void LocalizationEditor::_pot_generate_open() { - pot_generate_dialog->popup_centered_ratio(); + pot_generate_dialog->popup_file_dialog(); } void LocalizationEditor::_pot_generate(const String &p_file) { diff --git a/editor/plugins/animation_blend_space_1d_editor.cpp b/editor/plugins/animation_blend_space_1d_editor.cpp index 959301907c..d335b29c2f 100644 --- a/editor/plugins/animation_blend_space_1d_editor.cpp +++ b/editor/plugins/animation_blend_space_1d_editor.cpp @@ -375,7 +375,7 @@ void AnimationNodeBlendSpace1DEditor::_add_menu_type(int p_index) { for (List<String>::Element *E = filters.front(); E; E = E->next()) { open_file->add_filter("*." + E->get()); } - open_file->popup_centered_ratio(); + open_file->popup_file_dialog(); return; } else if (p_index == MENU_LOAD_FILE_CONFIRM) { node = file_loaded; diff --git a/editor/plugins/animation_blend_space_2d_editor.cpp b/editor/plugins/animation_blend_space_2d_editor.cpp index 1ab114fc01..805df0cbb9 100644 --- a/editor/plugins/animation_blend_space_2d_editor.cpp +++ b/editor/plugins/animation_blend_space_2d_editor.cpp @@ -298,7 +298,7 @@ void AnimationNodeBlendSpace2DEditor::_add_menu_type(int p_index) { for (List<String>::Element *E = filters.front(); E; E = E->next()) { open_file->add_filter("*." + E->get()); } - open_file->popup_centered_ratio(); + open_file->popup_file_dialog(); return; } else if (p_index == MENU_LOAD_FILE_CONFIRM) { node = file_loaded; diff --git a/editor/plugins/animation_blend_tree_editor_plugin.cpp b/editor/plugins/animation_blend_tree_editor_plugin.cpp index 82d942821f..6419f62343 100644 --- a/editor/plugins/animation_blend_tree_editor_plugin.cpp +++ b/editor/plugins/animation_blend_tree_editor_plugin.cpp @@ -276,7 +276,7 @@ void AnimationNodeBlendTreeEditor::_add_node(int p_idx) { for (List<String>::Element *E = filters.front(); E; E = E->next()) { open_file->add_filter("*." + E->get()); } - open_file->popup_centered_ratio(); + open_file->popup_file_dialog(); return; } else if (p_idx == MENU_LOAD_FILE_CONFIRM) { anode = file_loaded; diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp index be220fb30c..6e4a39d3f0 100644 --- a/editor/plugins/animation_player_editor_plugin.cpp +++ b/editor/plugins/animation_player_editor_plugin.cpp @@ -340,7 +340,7 @@ void AnimationPlayerEditor::_animation_load() { file->add_filter("*." + E->get() + " ; " + E->get().to_upper()); } - file->popup_centered_ratio(); + file->popup_file_dialog(); current_option = RESOURCE_LOAD; } @@ -399,8 +399,8 @@ void AnimationPlayerEditor::_animation_save_as(const Ref<Resource> &p_resource) } } file->set_current_path(path); - file->popup_centered_ratio(); file->set_title(TTR("Save Resource As...")); + file->popup_file_dialog(); current_option = RESOURCE_SAVE; } @@ -411,7 +411,7 @@ void AnimationPlayerEditor::_animation_remove() { String current = animation->get_item_text(animation->get_selected()); - delete_dialog->set_text(TTR("Delete Animation '" + current + "'?")); + delete_dialog->set_text(vformat(TTR("Delete Animation '%s'?"), current)); delete_dialog->popup_centered(); } @@ -744,7 +744,7 @@ void AnimationPlayerEditor::_dialog_action(String p_path) { } void AnimationPlayerEditor::_scale_changed(const String &p_scale) { - player->set_speed_scale(p_scale.to_double()); + player->set_speed_scale(p_scale.to_float()); } void AnimationPlayerEditor::_update_animation() { diff --git a/editor/plugins/animation_state_machine_editor.cpp b/editor/plugins/animation_state_machine_editor.cpp index 0970608853..26006d85c9 100644 --- a/editor/plugins/animation_state_machine_editor.cpp +++ b/editor/plugins/animation_state_machine_editor.cpp @@ -406,7 +406,7 @@ void AnimationNodeStateMachineEditor::_add_menu_type(int p_index) { for (List<String>::Element *E = filters.front(); E; E = E->next()) { open_file->add_filter("*." + E->get()); } - open_file->popup_centered_ratio(); + open_file->popup_file_dialog(); return; } else if (p_index == MENU_LOAD_FILE_CONFIRM) { node = file_loaded; diff --git a/editor/plugins/animation_tree_editor_plugin.cpp b/editor/plugins/animation_tree_editor_plugin.cpp index dc813896ff..269c54ba2b 100644 --- a/editor/plugins/animation_tree_editor_plugin.cpp +++ b/editor/plugins/animation_tree_editor_plugin.cpp @@ -79,7 +79,7 @@ void AnimationTreeEditor::_update_path() { group.instance(); Button *b = memnew(Button); - b->set_text("root"); + b->set_text("Root"); b->set_toggle_mode(true); b->set_button_group(group); b->set_pressed(true); diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp index da170cd498..28ac85457b 100644 --- a/editor/plugins/asset_library_editor_plugin.cpp +++ b/editor/plugins/asset_library_editor_plugin.cpp @@ -1260,7 +1260,7 @@ void EditorAssetLibrary::_asset_file_selected(const String &p_file) { } void EditorAssetLibrary::_asset_open() { - asset_open->popup_centered_ratio(); + asset_open->popup_file_dialog(); } void EditorAssetLibrary::_manage_plugins() { diff --git a/editor/plugins/baked_lightmap_editor_plugin.cpp b/editor/plugins/baked_lightmap_editor_plugin.cpp index ee9feb7f74..e5d4e4a761 100644 --- a/editor/plugins/baked_lightmap_editor_plugin.cpp +++ b/editor/plugins/baked_lightmap_editor_plugin.cpp @@ -54,7 +54,7 @@ void BakedLightmapEditorPlugin::_bake_select_file(const String &p_file) { scene_path = scene_path.get_basename() + ".lmbake"; file_dialog->set_current_path(scene_path); - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); } break; case BakedLightmap::BAKE_ERROR_NO_MESHES: diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index 44913abe8b..3f9f159d7f 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -2045,10 +2045,10 @@ bool CanvasItemEditor::_gui_input_move(const Ref<InputEvent> &p_event) { if ((b->get_alt() && !b->get_control()) || tool == TOOL_MOVE) { List<CanvasItem *> selection = _get_edited_canvas_items(); - // Remove not movable nodes + drag_selection.clear(); for (int i = 0; i < selection.size(); i++) { - if (!_is_node_movable(selection[i], true)) { - selection.erase(selection[i]); + if (_is_node_movable(selection[i], true)) { + drag_selection.push_back(selection[i]); } } @@ -2073,7 +2073,6 @@ bool CanvasItemEditor::_gui_input_move(const Ref<InputEvent> &p_event) { } drag_from = transform.affine_inverse().xform(b->get_position()); - drag_selection = selection; _save_canvas_item_state(drag_selection); } return true; @@ -2395,16 +2394,15 @@ bool CanvasItemEditor::_gui_input_select(const Ref<InputEvent> &p_event) { // Drag the node(s) if requested List<CanvasItem *> selection2 = _get_edited_canvas_items(); - // Remove not movable nodes + drag_selection.clear(); for (int i = 0; i < selection2.size(); i++) { - if (!_is_node_movable(selection2[i], true)) { - selection2.erase(selection2[i]); + if (_is_node_movable(selection2[i], true)) { + drag_selection.push_back(selection2[i]); } } if (selection2.size() > 0) { drag_type = DRAG_MOVE; - drag_selection = selection2; drag_from = click; _save_canvas_item_state(drag_selection); } @@ -2591,7 +2589,21 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) { _gui_input_hover(p_event); // Change the cursor + _update_cursor(); + + // Grab focus + if (!viewport->has_focus() && (!get_focus_owner() || !get_focus_owner()->is_text_field())) { + viewport->call_deferred("grab_focus"); + } +} + +void CanvasItemEditor::_update_cursor() { CursorShape c = CURSOR_ARROW; + bool should_switch = false; + if (drag_selection.size() != 0) { + float angle = drag_selection[0]->_edit_get_rotation(); + should_switch = abs(Math::cos(angle)) < Math_SQRT12; + } switch (drag_type) { case DRAG_NONE: switch (tool) { @@ -2614,21 +2626,37 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) { case DRAG_LEFT: case DRAG_RIGHT: case DRAG_V_GUIDE: - c = CURSOR_HSIZE; + if (should_switch) { + c = CURSOR_VSIZE; + } else { + c = CURSOR_HSIZE; + } break; case DRAG_TOP: case DRAG_BOTTOM: case DRAG_H_GUIDE: - c = CURSOR_VSIZE; + if (should_switch) { + c = CURSOR_HSIZE; + } else { + c = CURSOR_VSIZE; + } break; case DRAG_TOP_LEFT: case DRAG_BOTTOM_RIGHT: case DRAG_DOUBLE_GUIDE: - c = CURSOR_FDIAGSIZE; + if (should_switch) { + c = CURSOR_BDIAGSIZE; + } else { + c = CURSOR_FDIAGSIZE; + } break; case DRAG_TOP_RIGHT: case DRAG_BOTTOM_LEFT: - c = CURSOR_BDIAGSIZE; + if (should_switch) { + c = CURSOR_FDIAGSIZE; + } else { + c = CURSOR_BDIAGSIZE; + } break; case DRAG_MOVE: c = CURSOR_MOVE; @@ -2644,11 +2672,6 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) { } viewport->set_default_cursor_shape(c); - - // Grab focus - if (!viewport->has_focus() && (!get_focus_owner() || !get_focus_owner()->is_text_field())) { - viewport->call_deferred("grab_focus"); - } } void CanvasItemEditor::_draw_text_at_position(Point2 p_position, String p_string, Margin p_side) { @@ -4466,7 +4489,13 @@ void CanvasItemEditor::_button_tool_select(int p_index) { } tool = (Tool)p_index; + viewport->update(); + _update_cursor(); + + // Request immediate refresh of cursor when using hot-keys to switch between tools + DisplayServer::CursorShape ds_cursor_shape = (DisplayServer::CursorShape)viewport->get_default_cursor_shape(); + DisplayServer::get_singleton()->cursor_set_shape(ds_cursor_shape); } void CanvasItemEditor::_insert_animation_keys(bool p_location, bool p_rotation, bool p_scale, bool p_on_existing) { diff --git a/editor/plugins/canvas_item_editor_plugin.h b/editor/plugins/canvas_item_editor_plugin.h index 12abf05cf9..ea58fb1e36 100644 --- a/editor/plugins/canvas_item_editor_plugin.h +++ b/editor/plugins/canvas_item_editor_plugin.h @@ -492,6 +492,7 @@ private: bool _gui_input_hover(const Ref<InputEvent> &p_event); void _gui_input_viewport(const Ref<InputEvent> &p_event); + void _update_cursor(); void _selection_changed(); diff --git a/editor/plugins/cpu_particles_2d_editor_plugin.cpp b/editor/plugins/cpu_particles_2d_editor_plugin.cpp index 008de7cfb4..32f7d02af2 100644 --- a/editor/plugins/cpu_particles_2d_editor_plugin.cpp +++ b/editor/plugins/cpu_particles_2d_editor_plugin.cpp @@ -60,7 +60,7 @@ void CPUParticles2DEditorPlugin::_file_selected(const String &p_file) { void CPUParticles2DEditorPlugin::_menu_callback(int p_idx) { switch (p_idx) { case MENU_LOAD_EMISSION_MASK: { - file->popup_centered_ratio(); + file->popup_file_dialog(); } break; case MENU_CLEAR_EMISSION_MASK: { diff --git a/editor/plugins/cpu_particles_3d_editor_plugin.cpp b/editor/plugins/cpu_particles_3d_editor_plugin.cpp index ef26ecd767..d44e487ae4 100644 --- a/editor/plugins/cpu_particles_3d_editor_plugin.cpp +++ b/editor/plugins/cpu_particles_3d_editor_plugin.cpp @@ -48,7 +48,7 @@ void CPUParticles3DEditor::_notification(int p_notification) { void CPUParticles3DEditor::_menu_option(int p_option) { switch (p_option) { case MENU_OPTION_CREATE_EMISSION_VOLUME_FROM_NODE: { - emission_tree_dialog->popup_centered_ratio(); + emission_tree_dialog->popup_scenetree_dialog(); } break; diff --git a/editor/plugins/editor_debugger_plugin.cpp b/editor/plugins/editor_debugger_plugin.cpp new file mode 100644 index 0000000000..b775e871e2 --- /dev/null +++ b/editor/plugins/editor_debugger_plugin.cpp @@ -0,0 +1,124 @@ +/*************************************************************************/ +/* editor_debugger_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 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_debugger_plugin.h" + +#include "editor/debugger/script_editor_debugger.h" + +void EditorDebuggerPlugin::_breaked(bool p_really_did, bool p_can_debug) { + if (p_really_did) { + emit_signal("breaked", p_can_debug); + } else { + emit_signal("continued"); + } +} + +void EditorDebuggerPlugin::_started() { + emit_signal("started"); +} + +void EditorDebuggerPlugin::_stopped() { + emit_signal("stopped"); +} + +void EditorDebuggerPlugin::_bind_methods() { + ClassDB::bind_method(D_METHOD("send_message", "message", "data"), &EditorDebuggerPlugin::send_message); + ClassDB::bind_method(D_METHOD("register_message_capture", "name", "callable"), &EditorDebuggerPlugin::register_message_capture); + ClassDB::bind_method(D_METHOD("unregister_message_capture", "name"), &EditorDebuggerPlugin::unregister_message_capture); + ClassDB::bind_method(D_METHOD("has_capture", "name"), &EditorDebuggerPlugin::has_capture); + ClassDB::bind_method(D_METHOD("is_breaked"), &EditorDebuggerPlugin::is_breaked); + ClassDB::bind_method(D_METHOD("is_debuggable"), &EditorDebuggerPlugin::is_debuggable); + ClassDB::bind_method(D_METHOD("is_session_active"), &EditorDebuggerPlugin::is_session_active); + + ADD_SIGNAL(MethodInfo("started")); + ADD_SIGNAL(MethodInfo("stopped")); + ADD_SIGNAL(MethodInfo("breaked", PropertyInfo(Variant::BOOL, "can_debug"))); + ADD_SIGNAL(MethodInfo("continued")); +} + +void EditorDebuggerPlugin::attach_debugger(ScriptEditorDebugger *p_debugger) { + debugger = p_debugger; + if (debugger) { + debugger->connect("started", callable_mp(this, &EditorDebuggerPlugin::_started)); + debugger->connect("stopped", callable_mp(this, &EditorDebuggerPlugin::_stopped)); + debugger->connect("breaked", callable_mp(this, &EditorDebuggerPlugin::_breaked)); + } +} + +void EditorDebuggerPlugin::detach_debugger(bool p_call_debugger) { + if (debugger) { + debugger->disconnect("started", callable_mp(this, &EditorDebuggerPlugin::_started)); + debugger->disconnect("stopped", callable_mp(this, &EditorDebuggerPlugin::_stopped)); + debugger->disconnect("breaked", callable_mp(this, &EditorDebuggerPlugin::_breaked)); + if (p_call_debugger && get_script_instance()) { + debugger->remove_debugger_plugin(get_script_instance()->get_script()); + } + debugger = nullptr; + } +} + +void EditorDebuggerPlugin::send_message(const String &p_message, const Array &p_args) { + ERR_FAIL_COND_MSG(!debugger, "Plugin is not attached to debugger"); + debugger->send_message(p_message, p_args); +} + +void EditorDebuggerPlugin::register_message_capture(const StringName &p_name, const Callable &p_callable) { + ERR_FAIL_COND_MSG(!debugger, "Plugin is not attached to debugger"); + debugger->register_message_capture(p_name, p_callable); +} + +void EditorDebuggerPlugin::unregister_message_capture(const StringName &p_name) { + ERR_FAIL_COND_MSG(!debugger, "Plugin is not attached to debugger"); + debugger->unregister_message_capture(p_name); +} + +bool EditorDebuggerPlugin::has_capture(const StringName &p_name) { + ERR_FAIL_COND_V_MSG(!debugger, false, "Plugin is not attached to debugger"); + return debugger->has_capture(p_name); +} + +bool EditorDebuggerPlugin::is_breaked() { + ERR_FAIL_COND_V_MSG(!debugger, false, "Plugin is not attached to debugger"); + return debugger->is_breaked(); +} + +bool EditorDebuggerPlugin::is_debuggable() { + ERR_FAIL_COND_V_MSG(!debugger, false, "Plugin is not attached to debugger"); + return debugger->is_debuggable(); +} + +bool EditorDebuggerPlugin::is_session_active() { + ERR_FAIL_COND_V_MSG(!debugger, false, "Plugin is not attached to debugger"); + return debugger->is_session_active(); +} + +EditorDebuggerPlugin::~EditorDebuggerPlugin() { + detach_debugger(true); +} diff --git a/editor/plugins/editor_debugger_plugin.h b/editor/plugins/editor_debugger_plugin.h new file mode 100644 index 0000000000..10fd1151de --- /dev/null +++ b/editor/plugins/editor_debugger_plugin.h @@ -0,0 +1,64 @@ +/*************************************************************************/ +/* editor_debugger_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 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_DEBUGGER_PLUGIN_H +#define EDITOR_DEBUGGER_PLUGIN_H + +#include "scene/gui/control.h" + +class ScriptEditorDebugger; + +class EditorDebuggerPlugin : public Control { + GDCLASS(EditorDebuggerPlugin, Control); + +private: + ScriptEditorDebugger *debugger = nullptr; + + void _breaked(bool p_really_did, bool p_can_debug); + void _started(); + void _stopped(); + +protected: + static void _bind_methods(); + +public: + void attach_debugger(ScriptEditorDebugger *p_debugger); + void detach_debugger(bool p_call_debugger); + void send_message(const String &p_message, const Array &p_args); + void register_message_capture(const StringName &p_name, const Callable &p_callable); + void unregister_message_capture(const StringName &p_name); + bool has_capture(const StringName &p_name); + bool is_breaked(); + bool is_debuggable(); + bool is_session_active(); + ~EditorDebuggerPlugin(); +}; + +#endif // EDITOR_DEBUGGER_PLUGIN_H diff --git a/editor/plugins/gi_probe_editor_plugin.cpp b/editor/plugins/gi_probe_editor_plugin.cpp index 1b48e17772..2f5dd36ef1 100644 --- a/editor/plugins/gi_probe_editor_plugin.cpp +++ b/editor/plugins/gi_probe_editor_plugin.cpp @@ -41,7 +41,7 @@ void GIProbeEditorPlugin::_bake() { path = path.get_basename() + "." + gi_probe->get_name() + "_data.res"; } probe_file->set_current_path(path); - probe_file->popup_centered_ratio(); + probe_file->popup_file_dialog(); return; } gi_probe->bake(); diff --git a/editor/plugins/gpu_particles_2d_editor_plugin.cpp b/editor/plugins/gpu_particles_2d_editor_plugin.cpp index 01420dac3e..d27df1d063 100644 --- a/editor/plugins/gpu_particles_2d_editor_plugin.cpp +++ b/editor/plugins/gpu_particles_2d_editor_plugin.cpp @@ -69,7 +69,7 @@ void GPUParticles2DEditorPlugin::_menu_callback(int p_idx) { generate_visibility_rect->popup_centered(); } break; case MENU_LOAD_EMISSION_MASK: { - file->popup_centered_ratio(); + file->popup_file_dialog(); } break; case MENU_CLEAR_EMISSION_MASK: { diff --git a/editor/plugins/gpu_particles_3d_editor_plugin.cpp b/editor/plugins/gpu_particles_3d_editor_plugin.cpp index fa507dd3d7..c98ba25db5 100644 --- a/editor/plugins/gpu_particles_3d_editor_plugin.cpp +++ b/editor/plugins/gpu_particles_3d_editor_plugin.cpp @@ -254,7 +254,7 @@ void GPUParticles3DEditor::_menu_option(int p_option) { return; } - emission_tree_dialog->popup_centered_ratio(); + emission_tree_dialog->popup_scenetree_dialog(); } break; case MENU_OPTION_CONVERT_TO_CPU_PARTICLES: { diff --git a/editor/plugins/mesh_library_editor_plugin.cpp b/editor/plugins/mesh_library_editor_plugin.cpp index 7690beeee8..374a8c8290 100644 --- a/editor/plugins/mesh_library_editor_plugin.cpp +++ b/editor/plugins/mesh_library_editor_plugin.cpp @@ -224,7 +224,7 @@ void MeshLibraryEditor::_menu_cbk(int p_option) { } } break; case MENU_OPTION_IMPORT_FROM_SCENE: { - file->popup_centered_ratio(); + file->popup_file_dialog(); } break; case MENU_OPTION_UPDATE_FROM_SCENE: { cd->set_text(vformat(TTR("Update from existing scene?:\n%s"), String(mesh_library->get_meta("_editor_source_scene")))); diff --git a/editor/plugins/multimesh_editor_plugin.cpp b/editor/plugins/multimesh_editor_plugin.cpp index 3904389e09..bd1384967f 100644 --- a/editor/plugins/multimesh_editor_plugin.cpp +++ b/editor/plugins/multimesh_editor_plugin.cpp @@ -251,7 +251,7 @@ void MultiMeshEditor::edit(MultiMeshInstance3D *p_multimesh) { void MultiMeshEditor::_browse(bool p_source) { browsing_source = p_source; std->get_scene_tree()->set_marked(node, false); - std->popup_centered_ratio(); + std->popup_scenetree_dialog(); if (p_source) { std->set_title(TTR("Select a Source Mesh:")); } else { diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index 6165f39561..21a75c2f5d 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -1928,22 +1928,22 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) { switch (nav_mode) { case NAVIGATION_PAN: { - _nav_pan(m, pan_gesture->get_delta()); + _nav_pan(pan_gesture, pan_gesture->get_delta()); } break; case NAVIGATION_ZOOM: { - _nav_zoom(m, pan_gesture->get_delta()); + _nav_zoom(pan_gesture, pan_gesture->get_delta()); } break; case NAVIGATION_ORBIT: { - _nav_orbit(m, pan_gesture->get_delta()); + _nav_orbit(pan_gesture, pan_gesture->get_delta()); } break; case NAVIGATION_LOOK: { - _nav_look(m, pan_gesture->get_delta()); + _nav_look(pan_gesture, pan_gesture->get_delta()); } break; @@ -2059,7 +2059,12 @@ void Node3DEditorViewport::_nav_pan(Ref<InputEventWithModifiers> p_event, const camera_transform.translate(cursor.pos); camera_transform.basis.rotate(Vector3(1, 0, 0), -cursor.x_rot); camera_transform.basis.rotate(Vector3(0, 1, 0), -cursor.y_rot); - Vector3 translation(-p_relative.x * pan_speed, p_relative.y * pan_speed, 0); + const bool invert_x_axis = EditorSettings::get_singleton()->get("editors/3d/navigation/invert_x_axis"); + const bool invert_y_axis = EditorSettings::get_singleton()->get("editors/3d/navigation/invert_y_axis"); + Vector3 translation( + (invert_x_axis ? -1 : 1) * -p_relative.x * pan_speed, + (invert_y_axis ? -1 : 1) * p_relative.y * pan_speed, + 0); translation *= cursor.distance / DISTANCE_DEFAULT; camera_transform.translate(translation); cursor.pos = camera_transform.origin; @@ -2100,17 +2105,24 @@ void Node3DEditorViewport::_nav_orbit(Ref<InputEventWithModifiers> p_event, cons _menu_option(VIEW_PERSPECTIVE); } - real_t degrees_per_pixel = EditorSettings::get_singleton()->get("editors/3d/navigation_feel/orbit_sensitivity"); - real_t radians_per_pixel = Math::deg2rad(degrees_per_pixel); - bool invert_y_axis = EditorSettings::get_singleton()->get("editors/3d/navigation/invert_y_axis"); + const real_t degrees_per_pixel = EditorSettings::get_singleton()->get("editors/3d/navigation_feel/orbit_sensitivity"); + const real_t radians_per_pixel = Math::deg2rad(degrees_per_pixel); + const bool invert_y_axis = EditorSettings::get_singleton()->get("editors/3d/navigation/invert_y_axis"); + const bool invert_x_axis = EditorSettings::get_singleton()->get("editors/3d/navigation/invert_x_axis"); if (invert_y_axis) { cursor.x_rot -= p_relative.y * radians_per_pixel; } else { cursor.x_rot += p_relative.y * radians_per_pixel; } - cursor.y_rot += p_relative.x * radians_per_pixel; + // Clamp the Y rotation to roughly -90..90 degrees so the user can't look upside-down and end up disoriented. cursor.x_rot = CLAMP(cursor.x_rot, -1.57, 1.57); + + if (invert_x_axis) { + cursor.y_rot -= p_relative.x * radians_per_pixel; + } else { + cursor.y_rot += p_relative.x * radians_per_pixel; + } name = ""; _update_name(); } @@ -2125,21 +2137,23 @@ void Node3DEditorViewport::_nav_look(Ref<InputEventWithModifiers> p_event, const _menu_option(VIEW_PERSPECTIVE); } - real_t degrees_per_pixel = EditorSettings::get_singleton()->get("editors/3d/freelook/freelook_sensitivity"); - real_t radians_per_pixel = Math::deg2rad(degrees_per_pixel); - bool invert_y_axis = EditorSettings::get_singleton()->get("editors/3d/navigation/invert_y_axis"); + const real_t degrees_per_pixel = EditorSettings::get_singleton()->get("editors/3d/freelook/freelook_sensitivity"); + const real_t radians_per_pixel = Math::deg2rad(degrees_per_pixel); + const bool invert_y_axis = EditorSettings::get_singleton()->get("editors/3d/navigation/invert_y_axis"); // Note: do NOT assume the camera has the "current" transform, because it is interpolated and may have "lag". - Transform prev_camera_transform = to_camera_transform(cursor); + const Transform prev_camera_transform = to_camera_transform(cursor); if (invert_y_axis) { cursor.x_rot -= p_relative.y * radians_per_pixel; } else { cursor.x_rot += p_relative.y * radians_per_pixel; } - cursor.y_rot += p_relative.x * radians_per_pixel; + // Clamp the Y rotation to roughly -90..90 degrees so the user can't look upside-down and end up disoriented. cursor.x_rot = CLAMP(cursor.x_rot, -1.57, 1.57); + cursor.y_rot += p_relative.x * radians_per_pixel; + // Look is like the opposite of Orbit: the focus point rotates around the camera Transform camera_transform = to_camera_transform(cursor); Vector3 pos = camera_transform.xform(Vector3(0, 0, 0)); @@ -4689,9 +4703,9 @@ void Node3DEditor::edit(Node3D *p_spatial) { } void Node3DEditor::_snap_changed() { - snap_translate_value = snap_translate->get_text().to_double(); - snap_rotate_value = snap_rotate->get_text().to_double(); - snap_scale_value = snap_scale->get_text().to_double(); + snap_translate_value = snap_translate->get_text().to_float(); + snap_rotate_value = snap_rotate->get_text().to_float(); + snap_scale_value = snap_scale->get_text().to_float(); } void Node3DEditor::_snap_update() { @@ -4708,9 +4722,9 @@ void Node3DEditor::_xform_dialog_action() { Vector3 translate; for (int i = 0; i < 3; i++) { - translate[i] = xform_translate[i]->get_text().to_double(); - rotate[i] = Math::deg2rad(xform_rotate[i]->get_text().to_double()); - scale[i] = xform_scale[i]->get_text().to_double(); + translate[i] = xform_translate[i]->get_text().to_float(); + rotate[i] = Math::deg2rad(xform_rotate[i]->get_text().to_float()); + scale[i] = xform_scale[i]->get_text().to_float(); } t.basis.scale(scale); @@ -5407,7 +5421,7 @@ void Node3DEditor::_update_gizmos_menu() { } String plugin_name = gizmo_plugins_by_name[i]->get_name(); const int plugin_state = gizmo_plugins_by_name[i]->get_state(); - gizmos_menu->add_multistate_item(TTR(plugin_name), 3, plugin_state, i); + gizmos_menu->add_multistate_item(plugin_name, 3, plugin_state, i); const int idx = gizmos_menu->get_item_index(i); gizmos_menu->set_item_tooltip( idx, @@ -6432,9 +6446,9 @@ Vector3 Node3DEditor::snap_point(Vector3 p_target, Vector3 p_start) const { float Node3DEditor::get_translate_snap() const { float snap_value; if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) { - snap_value = snap_translate->get_text().to_double() / 10.0; + snap_value = snap_translate->get_text().to_float() / 10.0; } else { - snap_value = snap_translate->get_text().to_double(); + snap_value = snap_translate->get_text().to_float(); } return snap_value; @@ -6443,9 +6457,9 @@ float Node3DEditor::get_translate_snap() const { float Node3DEditor::get_rotate_snap() const { float snap_value; if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) { - snap_value = snap_rotate->get_text().to_double() / 3.0; + snap_value = snap_rotate->get_text().to_float() / 3.0; } else { - snap_value = snap_rotate->get_text().to_double(); + snap_value = snap_rotate->get_text().to_float(); } return snap_value; @@ -6454,9 +6468,9 @@ float Node3DEditor::get_rotate_snap() const { float Node3DEditor::get_scale_snap() const { float snap_value; if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) { - snap_value = snap_scale->get_text().to_double() / 2.0; + snap_value = snap_scale->get_text().to_float() / 2.0; } else { - snap_value = snap_scale->get_text().to_double(); + snap_value = snap_scale->get_text().to_float(); } return snap_value; diff --git a/editor/plugins/packed_scene_translation_parser_plugin.cpp b/editor/plugins/packed_scene_translation_parser_plugin.cpp index 52af0008b7..608b5c3104 100644 --- a/editor/plugins/packed_scene_translation_parser_plugin.cpp +++ b/editor/plugins/packed_scene_translation_parser_plugin.cpp @@ -37,7 +37,7 @@ void PackedSceneEditorTranslationParserPlugin::get_recognized_extensions(List<St ResourceLoader::get_recognized_extensions_for_type("PackedScene", r_extensions); } -Error PackedSceneEditorTranslationParserPlugin::parse_file(const String &p_path, Vector<String> *r_extracted_strings) { +Error PackedSceneEditorTranslationParserPlugin::parse_file(const String &p_path, Vector<String> *r_ids, Vector<Vector<String>> *r_ids_ctx_plural) { // Parse specific scene Node's properties (see in constructor) that are auto-translated by the engine when set. E.g Label's text property. // These properties are translated with the tr() function in the C++ code when being set or updated. @@ -71,8 +71,10 @@ Error PackedSceneEditorTranslationParserPlugin::parse_file(const String &p_path, String extension = s->get_language()->get_extension(); if (EditorTranslationParser::get_singleton()->can_parse(extension)) { Vector<String> temp; - EditorTranslationParser::get_singleton()->get_parser(extension)->parse_file(s->get_path(), &temp); + Vector<Vector<String>> ids_context_plural; + EditorTranslationParser::get_singleton()->get_parser(extension)->parse_file(s->get_path(), &temp, &ids_context_plural); parsed_strings.append_array(temp); + r_ids_ctx_plural->append_array(ids_context_plural); } } else if (property_name == "filters") { // Extract FileDialog's filters property with values in format "*.png ; PNG Images","*.gd ; GDScript Files". @@ -93,7 +95,7 @@ Error PackedSceneEditorTranslationParserPlugin::parse_file(const String &p_path, } } - r_extracted_strings->append_array(parsed_strings); + r_ids->append_array(parsed_strings); return OK; } diff --git a/editor/plugins/packed_scene_translation_parser_plugin.h b/editor/plugins/packed_scene_translation_parser_plugin.h index 2bd4dae995..a0ffdf692c 100644 --- a/editor/plugins/packed_scene_translation_parser_plugin.h +++ b/editor/plugins/packed_scene_translation_parser_plugin.h @@ -40,7 +40,7 @@ class PackedSceneEditorTranslationParserPlugin : public EditorTranslationParserP Set<String> lookup_properties; public: - virtual Error parse_file(const String &p_path, Vector<String> *r_extracted_strings) override; + virtual Error parse_file(const String &p_path, Vector<String> *r_ids, Vector<Vector<String>> *r_ids_ctx_plural) override; virtual void get_recognized_extensions(List<String> *r_extensions) const override; PackedSceneEditorTranslationParserPlugin(); diff --git a/editor/plugins/resource_preloader_editor_plugin.cpp b/editor/plugins/resource_preloader_editor_plugin.cpp index 75cb93ee76..9ab5bfd8a3 100644 --- a/editor/plugins/resource_preloader_editor_plugin.cpp +++ b/editor/plugins/resource_preloader_editor_plugin.cpp @@ -95,8 +95,7 @@ void ResourcePreloaderEditor::_load_pressed() { } file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILES); - - file->popup_centered_ratio(); + file->popup_file_dialog(); } void ResourcePreloaderEditor::_item_edited() { diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 2d92638cda..20eef1cebd 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -696,18 +696,21 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save, bool p_history_back) { Node *tselected = tab_container->get_child(selected); - ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected)); + ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tselected); if (current) { Ref<Script> script = current->get_edited_resource(); - if (p_save) { - // Do not try to save internal scripts - if (!(script->get_path() == "" || script->get_path().find("local://") != -1 || script->get_path().find("::") != -1)) { + if (p_save && script.is_valid()) { + // Do not try to save internal scripts, but prompt to save in-memory + // scripts which are not saved to disk yet (have empty path). + if (script->get_path().find("local://") == -1 && script->get_path().find("::") == -1) { _menu_option(FILE_SAVE); } } - - if (script != nullptr) { - previous_scripts.push_back(script->get_path()); + if (script.is_valid()) { + if (!script->get_path().empty()) { + // Only saved scripts can be restored. + previous_scripts.push_back(script->get_path()); + } notify_script_close(script); } } @@ -779,8 +782,10 @@ void ScriptEditor::_close_docs_tab() { void ScriptEditor::_copy_script_path() { ScriptEditorBase *se = _get_current_editor(); - RES script = se->get_edited_resource(); - DisplayServer::get_singleton()->clipboard_set(script->get_path()); + if (se) { + RES script = se->get_edited_resource(); + DisplayServer::get_singleton()->clipboard_set(script->get_path()); + } } void ScriptEditor::_close_other_tabs() { @@ -1038,17 +1043,19 @@ void ScriptEditor::_file_dialog_action(String p_file) { } break; case FILE_SAVE_AS: { ScriptEditorBase *current = _get_current_editor(); + if (current) { + RES resource = current->get_edited_resource(); + String path = ProjectSettings::get_singleton()->localize_path(p_file); + Error err = _save_text_file(resource, path); - String path = ProjectSettings::get_singleton()->localize_path(p_file); - Error err = _save_text_file(current->get_edited_resource(), path); + if (err != OK) { + editor->show_accept(TTR("Error saving file!"), TTR("OK")); + return; + } - if (err != OK) { - editor->show_accept(TTR("Error saving file!"), TTR("OK")); - return; + resource->set_path(path); + _update_script_names(); } - - ((Resource *)current->get_edited_resource().ptr())->set_path(path); - _update_script_names(); } break; case THEME_SAVE_AS: { if (!EditorSettings::get_singleton()->save_text_editor_theme_as(p_file)) { @@ -1107,7 +1114,7 @@ void ScriptEditor::_menu_option(int p_option) { file_dialog_option = FILE_NEW_TEXTFILE; file_dialog->clear_filters(); - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); file_dialog->set_title(TTR("New Text File...")); } break; case FILE_OPEN: { @@ -1122,7 +1129,7 @@ void ScriptEditor::_menu_option(int p_option) { file_dialog->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper()); } - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); file_dialog->set_title(TTR("Open File")); return; } break; @@ -1240,13 +1247,14 @@ void ScriptEditor::_menu_option(int p_option) { } } - Ref<TextFile> text_file = current->get_edited_resource(); + RES resource = current->get_edited_resource(); + Ref<TextFile> text_file = resource; if (text_file != nullptr) { current->apply_code(); _save_text_file(text_file, text_file->get_path()); break; } - editor->save_resource(current->get_edited_resource()); + editor->save_resource(resource); } break; case FILE_SAVE_AS: { @@ -1264,7 +1272,8 @@ void ScriptEditor::_menu_option(int p_option) { } } - Ref<TextFile> text_file = current->get_edited_resource(); + RES resource = current->get_edited_resource(); + Ref<TextFile> text_file = resource; if (text_file != nullptr) { file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE); file_dialog->set_access(EditorFileDialog::ACCESS_FILESYSTEM); @@ -1275,13 +1284,13 @@ void ScriptEditor::_menu_option(int p_option) { file_dialog->clear_filters(); file_dialog->set_current_dir(text_file->get_path().get_base_dir()); file_dialog->set_current_file(text_file->get_path().get_file()); - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); file_dialog->set_title(TTR("Save File As...")); break; } - editor->push_item(Object::cast_to<Object>(current->get_edited_resource().ptr())); - editor->save_resource_as(current->get_edited_resource()); + editor->push_item(resource.ptr()); + editor->save_resource_as(resource); } break; @@ -1425,7 +1434,7 @@ void ScriptEditor::_theme_option(int p_option) { file_dialog_option = THEME_IMPORT; file_dialog->clear_filters(); file_dialog->add_filter("*.tet"); - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); file_dialog->set_title(TTR("Import Theme")); } break; case THEME_RELOAD: { @@ -1451,7 +1460,7 @@ void ScriptEditor::_show_save_theme_as_dialog() { file_dialog->clear_filters(); file_dialog->add_filter("*.tet"); file_dialog->set_current_path(EditorSettings::get_singleton()->get_text_editor_themes_dir().plus_file(EditorSettings::get_singleton()->get("text_editor/theme/color_theme"))); - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); file_dialog->set_title(TTR("Save Theme As...")); } @@ -1465,6 +1474,7 @@ void ScriptEditor::_notification(int p_what) { editor->connect("stop_pressed", callable_mp(this, &ScriptEditor::_editor_stop)); editor->connect("script_add_function_request", callable_mp(this, &ScriptEditor::_add_callback)); editor->connect("resource_saved", callable_mp(this, &ScriptEditor::_res_saved_callback)); + editor->get_filesystem_dock()->connect("file_removed", callable_mp(this, &ScriptEditor::_file_removed)); script_list->connect("item_selected", callable_mp(this, &ScriptEditor::_script_selected)); members_overview->connect("item_selected", callable_mp(this, &ScriptEditor::_members_overview_selected)); @@ -1472,6 +1482,7 @@ void ScriptEditor::_notification(int p_what) { script_split->connect("dragged", callable_mp(this, &ScriptEditor::_script_split_dragged)); EditorSettings::get_singleton()->connect("settings_changed", callable_mp(this, &ScriptEditor::_editor_settings_changed)); + EditorFileSystem::get_singleton()->connect("filesystem_changed", callable_mp(this, &ScriptEditor::_filesystem_changed)); [[fallthrough]]; } case NOTIFICATION_THEME_CHANGED: { @@ -1577,7 +1588,9 @@ void ScriptEditor::get_breakpoints(List<String> *p_breakpoints) { List<int> bpoints; se->get_breakpoints(&bpoints); String base = script->get_path(); - ERR_CONTINUE(base.begins_with("local://") || base == ""); + if (base.begins_with("local://") || base == "") { + continue; + } for (List<int>::Element *E = bpoints.front(); E; E = E->next()) { p_breakpoints->push_back(base + ":" + itos(E->get() + 1)); @@ -1630,6 +1643,8 @@ void ScriptEditor::ensure_select_current() { if (tab_container->get_child_count() && tab_container->get_current_tab() >= 0) { ScriptEditorBase *se = _get_current_editor(); if (se) { + se->enable_editor(); + if (!grab_focus_block && is_visible_in_tree()) { se->ensure_focus(); } @@ -1840,6 +1855,12 @@ void ScriptEditor::_update_script_names() { if (se) { Ref<Texture2D> icon = se->get_theme_icon(); String path = se->get_edited_resource()->get_path(); + bool saved = !path.empty(); + if (saved) { + // The script might be deleted, moved, or renamed, so make sure + // to update original path to previously edited resource. + se->set_meta("_edit_res_path", path); + } bool built_in = !path.is_resource_file(); String name; @@ -1858,7 +1879,7 @@ void ScriptEditor::_update_script_names() { _ScriptEditorItemData sd; sd.icon = icon; sd.name = name; - sd.tooltip = path; + sd.tooltip = saved ? path : TTR("Unsaved file."); sd.index = i; sd.used = used.has(se->get_edited_resource()); sd.category = 0; @@ -1891,6 +1912,9 @@ void ScriptEditor::_update_script_names() { sd.name = path; } break; } + if (!saved) { + sd.name = se->get_name(); + } sedata.push_back(sd); } @@ -1898,14 +1922,18 @@ void ScriptEditor::_update_script_names() { Vector<String> disambiguated_script_names; Vector<String> full_script_paths; for (int j = 0; j < sedata.size(); j++) { - disambiguated_script_names.append(sedata[j].name); + disambiguated_script_names.append(sedata[j].name.replace("(*)", "")); full_script_paths.append(sedata[j].tooltip); } EditorNode::disambiguate_filenames(full_script_paths, disambiguated_script_names); for (int j = 0; j < sedata.size(); j++) { - sedata.write[j].name = disambiguated_script_names[j]; + if (sedata[j].name.ends_with("(*)")) { + sedata.write[j].name = disambiguated_script_names[j] + "(*)"; + } else { + sedata.write[j].name = disambiguated_script_names[j]; + } } EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(i)); @@ -1974,6 +2002,11 @@ void ScriptEditor::_update_script_names() { script_list->select(index); script_name_label->set_text(sedata_filtered[i].name); script_icon->set_texture(sedata_filtered[i].icon); + ScriptEditorBase *se = _get_current_editor(); + if (se) { + se->enable_editor(); + _update_selected_editor_menu(); + } } } @@ -2062,15 +2095,15 @@ bool ScriptEditor::edit(const RES &p_resource, int p_line, int p_col, bool p_gra Ref<Script> script = p_resource; - // refuse to open built-in if scene is not loaded - - // see if already has it + // Don't open dominant script if using an external editor. + const bool use_external_editor = + EditorSettings::get_singleton()->get("text_editor/external/use_external_editor") || + (script.is_valid() && script->get_language()->overrides_external_editor()); + const bool open_dominant = EditorSettings::get_singleton()->get("text_editor/files/open_dominant_script_on_scene_change"); - bool open_dominant = EditorSettings::get_singleton()->get("text_editor/files/open_dominant_script_on_scene_change"); + const bool should_open = (open_dominant && !use_external_editor) || !EditorNode::get_singleton()->is_changing_scene(); - const bool should_open = open_dominant || !EditorNode::get_singleton()->is_changing_scene(); - - if (script != nullptr && script->get_language()->overrides_external_editor()) { + if (script.is_valid() && script->get_language()->overrides_external_editor()) { if (should_open) { Error err = script->get_language()->open_in_external_editor(script, p_line >= 0 ? p_line : 0, p_col); if (err != OK) { @@ -2080,10 +2113,10 @@ bool ScriptEditor::edit(const RES &p_resource, int p_line, int p_col, bool p_gra return false; } - if ((EditorDebuggerNode::get_singleton()->get_dump_stack_script() != p_resource || EditorDebuggerNode::get_singleton()->get_debug_with_external_editor()) && + if (use_external_editor && + (EditorDebuggerNode::get_singleton()->get_dump_stack_script() != p_resource || EditorDebuggerNode::get_singleton()->get_debug_with_external_editor()) && p_resource->get_path().is_resource_file() && - p_resource->get_class_name() != StringName("VisualScript") && - bool(EditorSettings::get_singleton()->get("text_editor/external/use_external_editor"))) { + p_resource->get_class_name() != StringName("VisualScript")) { String path = EditorSettings::get_singleton()->get("text_editor/external/exec_path"); String flags = EditorSettings::get_singleton()->get("text_editor/external/exec_flags"); @@ -2148,6 +2181,8 @@ bool ScriptEditor::edit(const RES &p_resource, int p_line, int p_col, bool p_gra if ((script != nullptr && se->get_edited_resource() == p_resource) || se->get_edited_resource()->get_path() == p_resource->get_path()) { if (should_open) { + se->enable_editor(); + if (tab_container->get_current_tab() != i) { _go_to_tab(i); _update_script_names(); @@ -2178,6 +2213,8 @@ bool ScriptEditor::edit(const RES &p_resource, int p_line, int p_col, bool p_gra } ERR_FAIL_COND_V(!se, false); + se->set_edited_resource(p_resource); + if (p_resource->get_class_name() != StringName("VisualScript")) { bool highlighter_set = false; for (int i = 0; i < syntax_highlighters.size(); i++) { @@ -2198,7 +2235,14 @@ bool ScriptEditor::edit(const RES &p_resource, int p_line, int p_col, bool p_gra } tab_container->add_child(se); - se->set_edited_resource(p_resource); + + if (p_grab_focus) { + se->enable_editor(); + } + + // If we delete a script within the filesystem, the original resource path + // is lost, so keep it as metadata to figure out the exact tab to delete. + se->set_meta("_edit_res_path", p_resource->get_path()); se->set_tooltip_request_func("_get_debug_tooltip", this); if (se->get_edit_menu()) { se->get_edit_menu()->hide(); @@ -2208,6 +2252,7 @@ bool ScriptEditor::edit(const RES &p_resource, int p_line, int p_col, bool p_gra if (p_grab_focus) { _go_to_tab(tab_container->get_tab_count() - 1); + _add_recent_script(p_resource->get_path()); } _sort_list_on_update = true; @@ -2232,7 +2277,6 @@ bool ScriptEditor::edit(const RES &p_resource, int p_line, int p_col, bool p_gra } notify_script_changed(p_resource); - _add_recent_script(p_resource->get_path()); return true; } @@ -2373,6 +2417,23 @@ void ScriptEditor::_editor_settings_changed() { ScriptServer::set_reload_scripts_on_save(EDITOR_DEF("text_editor/files/auto_reload_and_parse_scripts_on_save", true)); } +void ScriptEditor::_filesystem_changed() { + _update_script_names(); +} + +void ScriptEditor::_file_removed(const String &p_removed_file) { + for (int i = 0; i < tab_container->get_child_count(); i++) { + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); + if (!se) { + continue; + } + if (se->get_meta("_edit_res_path") == p_removed_file) { + // The script is deleted with no undo, so just close the tab. + _close_tab(i, false, false); + } + } +} + void ScriptEditor::_autosave_scripts() { save_all_scripts(); } @@ -2704,7 +2765,7 @@ void ScriptEditor::set_window_layout(Ref<ConfigFile> p_layout) { if (!scr.is_valid()) { continue; } - if (!edit(scr)) { + if (!edit(scr, false)) { continue; } } else { @@ -2713,7 +2774,7 @@ void ScriptEditor::set_window_layout(Ref<ConfigFile> p_layout) { if (error != OK || !text_file.is_valid()) { continue; } - if (!edit(text_file)) { + if (!edit(text_file, false)) { continue; } } @@ -2945,13 +3006,13 @@ Array ScriptEditor::_get_open_script_editors() const { } void ScriptEditor::set_scene_root_script(Ref<Script> p_script) { - bool open_dominant = EditorSettings::get_singleton()->get("text_editor/files/open_dominant_script_on_scene_change"); - - if (bool(EditorSettings::get_singleton()->get("text_editor/external/use_external_editor"))) { - return; - } + // Don't open dominant script if using an external editor. + const bool use_external_editor = + EditorSettings::get_singleton()->get("text_editor/external/use_external_editor") || + (p_script.is_valid() && p_script->get_language()->overrides_external_editor()); + const bool open_dominant = EditorSettings::get_singleton()->get("text_editor/files/open_dominant_script_on_scene_change"); - if (open_dominant && p_script.is_valid()) { + if (open_dominant && !use_external_editor && p_script.is_valid()) { edit(p_script); } } diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h index 3891af4091..1234ebd267 100644 --- a/editor/plugins/script_editor_plugin.h +++ b/editor/plugins/script_editor_plugin.h @@ -134,6 +134,7 @@ public: virtual RES get_edited_resource() const = 0; virtual Vector<String> get_functions() = 0; virtual void set_edited_resource(const RES &p_res) = 0; + virtual void enable_editor() = 0; virtual void reload_text() = 0; virtual String get_name() = 0; virtual Ref<Texture2D> get_theme_icon() = 0; @@ -370,6 +371,8 @@ class ScriptEditor : public PanelContainer { void _save_layout(); void _editor_settings_changed(); + void _filesystem_changed(); + void _file_removed(const String &p_file); void _autosave_scripts(); void _update_autosave_timer(); diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index 1e03d9dfab..4b89ca1216 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -140,10 +140,10 @@ RES ScriptTextEditor::get_edited_resource() const { } void ScriptTextEditor::set_edited_resource(const RES &p_res) { - ERR_FAIL_COND(!script.is_null()); + ERR_FAIL_COND(script.is_valid()); + ERR_FAIL_COND(p_res.is_null()); script = p_res; - _set_theme_for_script(); code_editor->get_text_edit()->set_text(script->get_source_code()); code_editor->get_text_edit()->clear_undo_history(); @@ -151,6 +151,17 @@ void ScriptTextEditor::set_edited_resource(const RES &p_res) { emit_signal("name_changed"); code_editor->update_line_and_column(); +} + +void ScriptTextEditor::enable_editor() { + if (editor_enabled) { + return; + } + + editor_enabled = true; + + _enable_code_editor(); + _set_theme_for_script(); _validate_script(); } @@ -301,14 +312,6 @@ void ScriptTextEditor::reload_text() { code_editor->update_line_and_column(); } -void ScriptTextEditor::_notification(int p_what) { - switch (p_what) { - case NOTIFICATION_READY: - _load_theme_settings(); - break; - } -} - void ScriptTextEditor::add_callback(const String &p_function, PackedStringArray p_args) { String code = code_editor->get_text_edit()->get_text(); int pos = script->get_language()->find_function(p_function, code); @@ -335,7 +338,10 @@ void ScriptTextEditor::update_settings() { } bool ScriptTextEditor::is_unsaved() { - return code_editor->get_text_edit()->get_version() != code_editor->get_text_edit()->get_saved_version(); + const bool unsaved = + code_editor->get_text_edit()->get_version() != code_editor->get_text_edit()->get_saved_version() || + script->get_path().empty(); // In memory. + return unsaved; } Variant ScriptTextEditor::get_edit_state() { @@ -352,6 +358,10 @@ void ScriptTextEditor::set_edit_state(const Variant &p_state) { _change_syntax_highlighter(idx); } } + + if (editor_enabled) { + ensure_focus(); + } } void ScriptTextEditor::_convert_case(CodeTextEditor::CaseStyle p_case) { @@ -408,6 +418,9 @@ String ScriptTextEditor::get_name() { if (script->get_path().find("local://") == -1 && script->get_path().find("::") == -1) { name = script->get_path().get_file(); if (is_unsaved()) { + if (script->get_path().empty()) { + name = TTR("[unsaved]"); + } name += "(*)"; } } else if (script->get_name() != "") { @@ -494,7 +507,7 @@ void ScriptTextEditor::_validate_script() { ScriptLanguage::Warning w = E->get(); Dictionary ignore_meta; - ignore_meta["line"] = w.line; + ignore_meta["line"] = w.start_line; ignore_meta["code"] = w.string_code.to_lower(); warnings_panel->push_cell(); warnings_panel->push_meta(ignore_meta); @@ -506,9 +519,9 @@ void ScriptTextEditor::_validate_script() { warnings_panel->pop(); // Cell. warnings_panel->push_cell(); - warnings_panel->push_meta(w.line - 1); + warnings_panel->push_meta(w.start_line - 1); warnings_panel->push_color(warnings_panel->get_theme_color("warning_color", "Editor")); - warnings_panel->add_text(TTR("Line") + " " + itos(w.line)); + warnings_panel->add_text(TTR("Line") + " " + itos(w.start_line)); warnings_panel->add_text(" (" + w.string_code + "):"); warnings_panel->pop(); // Color. warnings_panel->pop(); // Meta goto. @@ -1274,23 +1287,28 @@ void ScriptTextEditor::_edit_option_toggle_inline_comment() { } void ScriptTextEditor::add_syntax_highlighter(Ref<EditorSyntaxHighlighter> p_highlighter) { + ERR_FAIL_COND(p_highlighter.is_null()); + highlighters[p_highlighter->_get_name()] = p_highlighter; highlighter_menu->add_radio_check_item(p_highlighter->_get_name()); } void ScriptTextEditor::set_syntax_highlighter(Ref<EditorSyntaxHighlighter> p_highlighter) { + ERR_FAIL_COND(p_highlighter.is_null()); + + Map<String, Ref<EditorSyntaxHighlighter>>::Element *el = highlighters.front(); + while (el != nullptr) { + int highlighter_index = highlighter_menu->get_item_idx_from_text(el->key()); + highlighter_menu->set_item_checked(highlighter_index, el->value() == p_highlighter); + el = el->next(); + } + TextEdit *te = code_editor->get_text_edit(); p_highlighter->_set_edited_resource(script); te->set_syntax_highlighter(p_highlighter); - highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(p_highlighter->_get_name()), true); } void ScriptTextEditor::_change_syntax_highlighter(int p_idx) { - Map<String, Ref<EditorSyntaxHighlighter>>::Element *el = highlighters.front(); - while (el != nullptr) { - highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(el->key()), false); - el = el->next(); - } set_syntax_highlighter(highlighters[highlighter_menu->get_item_text(p_idx)]); } @@ -1606,64 +1624,41 @@ void ScriptTextEditor::_make_context_menu(bool p_selection, bool p_color, bool p context_menu->popup(); } -ScriptTextEditor::ScriptTextEditor() { - theme_loaded = false; - script_is_valid = false; +void ScriptTextEditor::_enable_code_editor() { + ERR_FAIL_COND(code_editor->get_parent()); VSplitContainer *editor_box = memnew(VSplitContainer); add_child(editor_box); editor_box->set_anchors_and_margins_preset(Control::PRESET_WIDE); editor_box->set_v_size_flags(SIZE_EXPAND_FILL); - code_editor = memnew(CodeTextEditor); editor_box->add_child(code_editor); - code_editor->add_theme_constant_override("separation", 2); - code_editor->set_anchors_and_margins_preset(Control::PRESET_WIDE); + code_editor->connect("show_warnings_panel", callable_mp(this, &ScriptTextEditor::_show_warnings_panel)); code_editor->connect("validate_script", callable_mp(this, &ScriptTextEditor::_validate_script)); code_editor->connect("load_theme_settings", callable_mp(this, &ScriptTextEditor::_load_theme_settings)); - code_editor->set_code_complete_func(_code_complete_scripts, this); code_editor->get_text_edit()->connect("breakpoint_toggled", callable_mp(this, &ScriptTextEditor::_breakpoint_toggled)); code_editor->get_text_edit()->connect("symbol_lookup", callable_mp(this, &ScriptTextEditor::_lookup_symbol)); code_editor->get_text_edit()->connect("symbol_validate", callable_mp(this, &ScriptTextEditor::_validate_symbol)); code_editor->get_text_edit()->connect("info_clicked", callable_mp(this, &ScriptTextEditor::_lookup_connections)); - code_editor->set_v_size_flags(SIZE_EXPAND_FILL); + code_editor->get_text_edit()->connect("gui_input", callable_mp(this, &ScriptTextEditor::_text_edit_gui_input)); code_editor->show_toggle_scripts_button(); - warnings_panel = memnew(RichTextLabel); editor_box->add_child(warnings_panel); warnings_panel->add_theme_font_override( "normal_font", EditorNode::get_singleton()->get_gui_base()->get_theme_font("main", "EditorFonts")); - warnings_panel->set_custom_minimum_size(Size2(0, 100 * EDSCALE)); - warnings_panel->set_h_size_flags(SIZE_EXPAND_FILL); - warnings_panel->set_meta_underline(true); - warnings_panel->set_selection_enabled(true); - warnings_panel->set_focus_mode(FOCUS_CLICK); - warnings_panel->hide(); - - code_editor->connect("show_warnings_panel", callable_mp(this, &ScriptTextEditor::_show_warnings_panel)); warnings_panel->connect("meta_clicked", callable_mp(this, &ScriptTextEditor::_warning_clicked)); - update_settings(); - - code_editor->get_text_edit()->set_callhint_settings( - EditorSettings::get_singleton()->get("text_editor/completion/put_callhint_tooltip_below_current_line"), - EditorSettings::get_singleton()->get("text_editor/completion/callhint_tooltip_offset")); - - code_editor->get_text_edit()->set_select_identifiers_on_hover(true); - code_editor->get_text_edit()->set_context_menu_enabled(false); - code_editor->get_text_edit()->connect("gui_input", callable_mp(this, &ScriptTextEditor::_text_edit_gui_input)); - - context_menu = memnew(PopupMenu); add_child(context_menu); context_menu->connect("id_pressed", callable_mp(this, &ScriptTextEditor::_edit_option)); - color_panel = memnew(PopupPanel); add_child(color_panel); + color_picker = memnew(ColorPicker); color_picker->set_deferred_mode(true); - color_panel->add_child(color_picker); color_picker->connect("color_changed", callable_mp(this, &ScriptTextEditor::_color_changed)); + color_panel->add_child(color_picker); + // get default color picker mode from editor settings int default_color_mode = EDITOR_GET("interface/inspector/default_color_picker_mode"); if (default_color_mode == 1) { @@ -1672,12 +1667,27 @@ ScriptTextEditor::ScriptTextEditor() { color_picker->set_raw_mode(true); } - edit_hb = memnew(HBoxContainer); + quick_open = memnew(ScriptEditorQuickOpen); + quick_open->connect("goto_line", callable_mp(this, &ScriptTextEditor::_goto_line)); + add_child(quick_open); - edit_menu = memnew(MenuButton); - edit_menu->set_text(TTR("Edit")); - edit_menu->set_switch_on_hover(true); + goto_line_dialog = memnew(GotoLineDialog); + add_child(goto_line_dialog); + + add_child(connection_info_dialog); + edit_hb->add_child(search_menu); + search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find"), SEARCH_FIND); + search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find_next"), SEARCH_FIND_NEXT); + search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find_previous"), SEARCH_FIND_PREV); + search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/replace"), SEARCH_REPLACE); + search_menu->get_popup()->add_separator(); + search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find_in_files"), SEARCH_IN_FILES); + search_menu->get_popup()->add_separator(); + search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/contextual_help"), HELP_CONTEXTUAL); + 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_separator(); @@ -1707,8 +1717,6 @@ ScriptTextEditor::ScriptTextEditor() { edit_menu->get_popup()->connect("id_pressed", callable_mp(this, &ScriptTextEditor::_edit_option)); edit_menu->get_popup()->add_separator(); - PopupMenu *convert_case = memnew(PopupMenu); - convert_case->set_name("convert_case"); edit_menu->get_popup()->add_child(convert_case); edit_menu->get_popup()->add_submenu_item(TTR("Convert Case"), "convert_case"); convert_case->add_shortcut(ED_SHORTCUT("script_text_editor/convert_to_uppercase", TTR("Uppercase"), KEY_MASK_SHIFT | KEY_F4), EDIT_TO_UPPERCASE); @@ -1716,12 +1724,73 @@ ScriptTextEditor::ScriptTextEditor() { convert_case->add_shortcut(ED_SHORTCUT("script_text_editor/capitalize", TTR("Capitalize"), KEY_MASK_SHIFT | KEY_F6), EDIT_CAPITALIZE); convert_case->connect("id_pressed", callable_mp(this, &ScriptTextEditor::_edit_option)); - highlighter_menu = memnew(PopupMenu); - highlighter_menu->set_name("highlighter_menu"); edit_menu->get_popup()->add_child(highlighter_menu); edit_menu->get_popup()->add_submenu_item(TTR("Syntax Highlighter"), "highlighter_menu"); highlighter_menu->connect("id_pressed", callable_mp(this, &ScriptTextEditor::_change_syntax_highlighter)); + _load_theme_settings(); + + search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/replace_in_files"), REPLACE_IN_FILES); + edit_hb->add_child(goto_menu); + goto_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_function"), SEARCH_LOCATE_FUNCTION); + goto_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_line"), SEARCH_GOTO_LINE); + goto_menu->get_popup()->add_separator(); + + goto_menu->get_popup()->add_child(bookmarks_menu); + goto_menu->get_popup()->add_submenu_item(TTR("Bookmarks"), "Bookmarks"); + _update_bookmark_list(); + bookmarks_menu->connect("about_to_popup", callable_mp(this, &ScriptTextEditor::_update_bookmark_list)); + bookmarks_menu->connect("index_pressed", callable_mp(this, &ScriptTextEditor::_bookmark_item_pressed)); + + goto_menu->get_popup()->add_child(breakpoints_menu); + goto_menu->get_popup()->add_submenu_item(TTR("Breakpoints"), "Breakpoints"); + _update_breakpoint_list(); + breakpoints_menu->connect("about_to_popup", callable_mp(this, &ScriptTextEditor::_update_breakpoint_list)); + breakpoints_menu->connect("index_pressed", callable_mp(this, &ScriptTextEditor::_breakpoint_item_pressed)); + + goto_menu->get_popup()->connect("id_pressed", callable_mp(this, &ScriptTextEditor::_edit_option)); +} + +ScriptTextEditor::ScriptTextEditor() { + code_editor = memnew(CodeTextEditor); + code_editor->add_theme_constant_override("separation", 2); + code_editor->set_anchors_and_margins_preset(Control::PRESET_WIDE); + code_editor->set_code_complete_func(_code_complete_scripts, this); + code_editor->set_v_size_flags(SIZE_EXPAND_FILL); + + warnings_panel = memnew(RichTextLabel); + warnings_panel->set_custom_minimum_size(Size2(0, 100 * EDSCALE)); + warnings_panel->set_h_size_flags(SIZE_EXPAND_FILL); + warnings_panel->set_meta_underline(true); + warnings_panel->set_selection_enabled(true); + warnings_panel->set_focus_mode(FOCUS_CLICK); + warnings_panel->hide(); + + update_settings(); + + code_editor->get_text_edit()->set_callhint_settings( + EditorSettings::get_singleton()->get("text_editor/completion/put_callhint_tooltip_below_current_line"), + EditorSettings::get_singleton()->get("text_editor/completion/callhint_tooltip_offset")); + + code_editor->get_text_edit()->set_select_identifiers_on_hover(true); + code_editor->get_text_edit()->set_context_menu_enabled(false); + + context_menu = memnew(PopupMenu); + + color_panel = memnew(PopupPanel); + + edit_hb = memnew(HBoxContainer); + + edit_menu = memnew(MenuButton); + edit_menu->set_text(TTR("Edit")); + edit_menu->set_switch_on_hover(true); + + convert_case = memnew(PopupMenu); + convert_case->set_name("convert_case"); + + highlighter_menu = memnew(PopupMenu); + highlighter_menu->set_name("highlighter_menu"); + Ref<EditorPlainTextSyntaxHighlighter> plain_highlighter; plain_highlighter.instance(); add_syntax_highlighter(plain_highlighter); @@ -1732,64 +1801,42 @@ ScriptTextEditor::ScriptTextEditor() { set_syntax_highlighter(highlighter); search_menu = memnew(MenuButton); - edit_hb->add_child(search_menu); search_menu->set_text(TTR("Search")); search_menu->set_switch_on_hover(true); - search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find"), SEARCH_FIND); - search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find_next"), SEARCH_FIND_NEXT); - search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find_previous"), SEARCH_FIND_PREV); - search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/replace"), SEARCH_REPLACE); - search_menu->get_popup()->add_separator(); - search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/find_in_files"), SEARCH_IN_FILES); - search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/replace_in_files"), REPLACE_IN_FILES); - search_menu->get_popup()->add_separator(); - search_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/contextual_help"), HELP_CONTEXTUAL); - search_menu->get_popup()->connect("id_pressed", callable_mp(this, &ScriptTextEditor::_edit_option)); - - edit_hb->add_child(edit_menu); - - MenuButton *goto_menu = memnew(MenuButton); - edit_hb->add_child(goto_menu); + goto_menu = memnew(MenuButton); goto_menu->set_text(TTR("Go To")); goto_menu->set_switch_on_hover(true); - goto_menu->get_popup()->connect("id_pressed", callable_mp(this, &ScriptTextEditor::_edit_option)); - - goto_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_function"), SEARCH_LOCATE_FUNCTION); - goto_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/goto_line"), SEARCH_GOTO_LINE); - goto_menu->get_popup()->add_separator(); bookmarks_menu = memnew(PopupMenu); bookmarks_menu->set_name("Bookmarks"); - goto_menu->get_popup()->add_child(bookmarks_menu); - goto_menu->get_popup()->add_submenu_item(TTR("Bookmarks"), "Bookmarks"); - _update_bookmark_list(); - bookmarks_menu->connect("about_to_popup", callable_mp(this, &ScriptTextEditor::_update_bookmark_list)); - bookmarks_menu->connect("index_pressed", callable_mp(this, &ScriptTextEditor::_bookmark_item_pressed)); breakpoints_menu = memnew(PopupMenu); breakpoints_menu->set_name("Breakpoints"); - goto_menu->get_popup()->add_child(breakpoints_menu); - goto_menu->get_popup()->add_submenu_item(TTR("Breakpoints"), "Breakpoints"); - _update_breakpoint_list(); - breakpoints_menu->connect("about_to_popup", callable_mp(this, &ScriptTextEditor::_update_breakpoint_list)); - breakpoints_menu->connect("index_pressed", callable_mp(this, &ScriptTextEditor::_breakpoint_item_pressed)); - - quick_open = memnew(ScriptEditorQuickOpen); - add_child(quick_open); - quick_open->connect("goto_line", callable_mp(this, &ScriptTextEditor::_goto_line)); - - goto_line_dialog = memnew(GotoLineDialog); - add_child(goto_line_dialog); connection_info_dialog = memnew(ConnectionInfoDialog); - add_child(connection_info_dialog); code_editor->get_text_edit()->set_drag_forwarding(this); } ScriptTextEditor::~ScriptTextEditor() { highlighters.clear(); + + if (!editor_enabled) { + memdelete(code_editor); + memdelete(warnings_panel); + memdelete(context_menu); + memdelete(color_panel); + memdelete(edit_hb); + memdelete(edit_menu); + memdelete(convert_case); + memdelete(highlighter_menu); + memdelete(search_menu); + memdelete(goto_menu); + memdelete(bookmarks_menu); + memdelete(breakpoints_menu); + memdelete(connection_info_dialog); + } } static ScriptEditorBase *create_editor(const RES &p_resource) { diff --git a/editor/plugins/script_text_editor.h b/editor/plugins/script_text_editor.h index 6d7f84d746..e931c9fdc6 100644 --- a/editor/plugins/script_text_editor.h +++ b/editor/plugins/script_text_editor.h @@ -39,8 +39,8 @@ class ConnectionInfoDialog : public AcceptDialog { GDCLASS(ConnectionInfoDialog, AcceptDialog); - Label *method; - Tree *tree; + Label *method = nullptr; + Tree *tree = nullptr; virtual void ok_pressed() override; @@ -53,11 +53,12 @@ public: class ScriptTextEditor : public ScriptEditorBase { GDCLASS(ScriptTextEditor, ScriptEditorBase); - CodeTextEditor *code_editor; - RichTextLabel *warnings_panel; + CodeTextEditor *code_editor = nullptr; + RichTextLabel *warnings_panel = nullptr; Ref<Script> script; - bool script_is_valid; + bool script_is_valid = false; + bool editor_enabled = false; Vector<String> functions; @@ -65,25 +66,27 @@ class ScriptTextEditor : public ScriptEditorBase { Vector<String> member_keywords; - HBoxContainer *edit_hb; + HBoxContainer *edit_hb = nullptr; - MenuButton *edit_menu; - MenuButton *search_menu; - PopupMenu *bookmarks_menu; - PopupMenu *breakpoints_menu; - PopupMenu *highlighter_menu; - PopupMenu *context_menu; + MenuButton *edit_menu = nullptr; + MenuButton *search_menu = nullptr; + MenuButton *goto_menu = nullptr; + PopupMenu *bookmarks_menu = nullptr; + PopupMenu *breakpoints_menu = nullptr; + PopupMenu *highlighter_menu = nullptr; + PopupMenu *context_menu = nullptr; + PopupMenu *convert_case = nullptr; - GotoLineDialog *goto_line_dialog; - ScriptEditorQuickOpen *quick_open; - ConnectionInfoDialog *connection_info_dialog; + GotoLineDialog *goto_line_dialog = nullptr; + ScriptEditorQuickOpen *quick_open = nullptr; + ConnectionInfoDialog *connection_info_dialog = nullptr; - PopupPanel *color_panel; - ColorPicker *color_picker; + PopupPanel *color_panel = nullptr; + ColorPicker *color_picker = nullptr; Vector2 color_position; String color_args; - bool theme_loaded; + bool theme_loaded = false; enum { EDIT_UNDO, @@ -132,6 +135,8 @@ class ScriptTextEditor : public ScriptEditorBase { LOOKUP_SYMBOL, }; + void _enable_code_editor(); + protected: void _update_breakpoint_list(); void _breakpoint_item_pressed(int p_idx); @@ -149,7 +154,6 @@ protected: void _show_warnings_panel(bool p_show); void _warning_clicked(Variant p_line); - void _notification(int p_what); static void _bind_methods(); Map<String, Ref<EditorSyntaxHighlighter>> highlighters; @@ -185,6 +189,7 @@ public: virtual void apply_code() override; virtual RES get_edited_resource() const override; virtual void set_edited_resource(const RES &p_res) override; + virtual void enable_editor() override; virtual Vector<String> get_functions() override; virtual void reload_text() override; virtual String get_name() override; diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp index 60ba3802fb..2a7f3f0656 100644 --- a/editor/plugins/shader_editor_plugin.cpp +++ b/editor/plugins/shader_editor_plugin.cpp @@ -136,32 +136,43 @@ void ShaderTextEditor::_load_theme_settings() { syntax_highlighter->set_function_color(EDITOR_GET("text_editor/highlighting/function_color")); syntax_highlighter->set_member_variable_color(EDITOR_GET("text_editor/highlighting/member_variable_color")); + syntax_highlighter->clear_keyword_colors(); + List<String> keywords; ShaderLanguage::get_keyword_list(&keywords); + const Color keyword_color = EDITOR_GET("text_editor/highlighting/keyword_color"); + + for (List<String>::Element *E = keywords.front(); E; E = E->next()) { + syntax_highlighter->add_keyword_color(E->get(), keyword_color); + } + // Colorize built-ins like `COLOR` differently to make them easier + // to distinguish from keywords at a quick glance. + + List<String> built_ins; if (shader.is_valid()) { for (const Map<StringName, ShaderLanguage::FunctionInfo>::Element *E = ShaderTypes::get_singleton()->get_functions(RenderingServer::ShaderMode(shader->get_mode())).front(); E; E = E->next()) { for (const Map<StringName, ShaderLanguage::BuiltInInfo>::Element *F = E->get().built_ins.front(); F; F = F->next()) { - keywords.push_back(F->key()); + built_ins.push_back(F->key()); } } for (int i = 0; i < ShaderTypes::get_singleton()->get_modes(RenderingServer::ShaderMode(shader->get_mode())).size(); i++) { - keywords.push_back(ShaderTypes::get_singleton()->get_modes(RenderingServer::ShaderMode(shader->get_mode()))[i]); + built_ins.push_back(ShaderTypes::get_singleton()->get_modes(RenderingServer::ShaderMode(shader->get_mode()))[i]); } } - const Color keyword_color = EDITOR_GET("text_editor/highlighting/keyword_color"); - syntax_highlighter->clear_keyword_colors(); - for (List<String>::Element *E = keywords.front(); E; E = E->next()) { - syntax_highlighter->add_keyword_color(E->get(), keyword_color); + const Color member_variable_color = EDITOR_GET("text_editor/highlighting/member_variable_color"); + + for (List<String>::Element *E = built_ins.front(); E; E = E->next()) { + syntax_highlighter->add_keyword_color(E->get(), member_variable_color); } - //colorize comments + // Colorize comments. const Color comment_color = EDITOR_GET("text_editor/highlighting/comment_color"); syntax_highlighter->clear_color_regions(); syntax_highlighter->add_color_region("/*", "*/", comment_color, false); - syntax_highlighter->add_color_region("//", "", comment_color, false); + syntax_highlighter->add_color_region("//", "", comment_color, true); } void ShaderTextEditor::_check_shader_mode() { diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp index 7102faf58a..18942b371c 100644 --- a/editor/plugins/sprite_frames_editor_plugin.cpp +++ b/editor/plugins/sprite_frames_editor_plugin.cpp @@ -36,6 +36,8 @@ #include "editor/editor_settings.h" #include "scene/3d/sprite_3d.h" #include "scene/gui/center_container.h" +#include "scene/gui/margin_container.h" +#include "scene/gui/panel_container.h" void SpriteFramesEditor::_gui_input(Ref<InputEvent> p_event) { } @@ -48,7 +50,7 @@ void SpriteFramesEditor::_open_sprite_sheet() { file_split_sheet->add_filter("*." + extensions[i]); } - file_split_sheet->popup_centered_ratio(); + file_split_sheet->popup_file_dialog(); } void SpriteFramesEditor::_sheet_preview_draw() { @@ -140,8 +142,27 @@ void SpriteFramesEditor::_sheet_preview_input(const Ref<InputEvent> &p_event) { } } +void SpriteFramesEditor::_sheet_scroll_input(const Ref<InputEvent> &p_event) { + const Ref<InputEventMouseButton> mb = p_event; + + if (mb.is_valid()) { + // Zoom in/out using Ctrl + mouse wheel. This is done on the ScrollContainer + // to allow performing this action anywhere, even if the cursor isn't + // hovering the texture in the workspace. + if (mb->get_button_index() == BUTTON_WHEEL_UP && mb->is_pressed() && mb->get_control()) { + _sheet_zoom_in(); + // Don't scroll up after zooming in. + accept_event(); + } else if (mb->get_button_index() == BUTTON_WHEEL_DOWN && mb->is_pressed() && mb->get_control()) { + _sheet_zoom_out(); + // Don't scroll down after zooming out. + accept_event(); + } + } +} + void SpriteFramesEditor::_sheet_add_frames() { - Size2i size = split_sheet_preview->get_size(); + Size2i size = split_sheet_preview->get_texture()->get_size(); int h = split_sheet_h->get_value(); int v = split_sheet_v->get_value(); @@ -180,6 +201,28 @@ void SpriteFramesEditor::_sheet_add_frames() { undo_redo->commit_action(); } +void SpriteFramesEditor::_sheet_zoom_in() { + if (sheet_zoom < max_sheet_zoom) { + sheet_zoom *= scale_ratio; + Size2 texture_size = split_sheet_preview->get_texture()->get_size(); + split_sheet_preview->set_custom_minimum_size(texture_size * sheet_zoom); + } +} + +void SpriteFramesEditor::_sheet_zoom_out() { + if (sheet_zoom > min_sheet_zoom) { + sheet_zoom /= scale_ratio; + Size2 texture_size = split_sheet_preview->get_texture()->get_size(); + split_sheet_preview->set_custom_minimum_size(texture_size * sheet_zoom); + } +} + +void SpriteFramesEditor::_sheet_zoom_reset() { + sheet_zoom = 1.f; + Size2 texture_size = split_sheet_preview->get_texture()->get_size(); + split_sheet_preview->set_custom_minimum_size(texture_size * sheet_zoom); +} + void SpriteFramesEditor::_sheet_select_clear_all_frames() { bool should_clear = true; for (int i = 0; i < split_sheet_h->get_value() * split_sheet_v->get_value(); i++) { @@ -207,15 +250,18 @@ void SpriteFramesEditor::_prepare_sprite_sheet(const String &p_file) { EditorNode::get_singleton()->show_warning(TTR("Unable to load images")); ERR_FAIL_COND(!texture.is_valid()); } - if (texture != split_sheet_preview->get_texture()) { - //different texture, reset to 4x4 - split_sheet_h->set_value(4); - split_sheet_v->set_value(4); - } + bool new_texture = texture != split_sheet_preview->get_texture(); frames_selected.clear(); last_frame_selected = -1; split_sheet_preview->set_texture(texture); + if (new_texture) { + //different texture, reset to 4x4 + split_sheet_h->set_value(4); + split_sheet_v->set_value(4); + //reset zoom + _sheet_zoom_reset(); + } split_sheet_dialog->popup_centered_ratio(0.65); } @@ -231,8 +277,14 @@ void SpriteFramesEditor::_notification(int p_what) { move_up->set_icon(get_theme_icon("MoveLeft", "EditorIcons")); move_down->set_icon(get_theme_icon("MoveRight", "EditorIcons")); _delete->set_icon(get_theme_icon("Remove", "EditorIcons")); + zoom_out->set_icon(get_theme_icon("ZoomLess", "EditorIcons")); + zoom_1->set_icon(get_theme_icon("ZoomReset", "EditorIcons")); + zoom_in->set_icon(get_theme_icon("ZoomMore", "EditorIcons")); new_anim->set_icon(get_theme_icon("New", "EditorIcons")); remove_anim->set_icon(get_theme_icon("Remove", "EditorIcons")); + split_sheet_zoom_out->set_icon(get_theme_icon("ZoomLess", "EditorIcons")); + split_sheet_zoom_1->set_icon(get_theme_icon("ZoomReset", "EditorIcons")); + split_sheet_zoom_in->set_icon(get_theme_icon("ZoomMore", "EditorIcons")); [[fallthrough]]; } case NOTIFICATION_THEME_CHANGED: { @@ -298,8 +350,7 @@ void SpriteFramesEditor::_load_pressed() { } file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILES); - - file->popup_centered_ratio(); + file->popup_file_dialog(); } void SpriteFramesEditor::_paste_pressed() { @@ -459,7 +510,7 @@ void SpriteFramesEditor::_animation_select() { } if (frames->has_animation(edited_anim)) { - double value = anim_speed->get_line_edit()->get_text().to_double(); + double value = anim_speed->get_line_edit()->get_text().to_float(); if (!Math::is_equal_approx(value, frames->get_animation_speed(edited_anim))) { _animation_fps_changed(value); } @@ -637,6 +688,54 @@ void SpriteFramesEditor::_animation_fps_changed(double p_value) { undo_redo->commit_action(); } +void SpriteFramesEditor::_tree_input(const Ref<InputEvent> &p_event) { + const Ref<InputEventMouseButton> mb = p_event; + + if (mb.is_valid()) { + if (mb->get_button_index() == BUTTON_WHEEL_UP && mb->is_pressed() && mb->get_control()) { + _zoom_in(); + // Don't scroll up after zooming in. + accept_event(); + } else if (mb->get_button_index() == BUTTON_WHEEL_DOWN && mb->is_pressed() && mb->get_control()) { + _zoom_out(); + // Don't scroll down after zooming out. + accept_event(); + } + } +} + +void SpriteFramesEditor::_zoom_in() { + // Do not zoom in or out with no visible frames + if (frames->get_frame_count(edited_anim) <= 0) { + return; + } + if (thumbnail_zoom < max_thumbnail_zoom) { + thumbnail_zoom *= scale_ratio; + int thumbnail_size = (int)(thumbnail_default_size * thumbnail_zoom); + tree->set_fixed_column_width(thumbnail_size * 3 / 2); + tree->set_fixed_icon_size(Size2(thumbnail_size, thumbnail_size)); + } +} + +void SpriteFramesEditor::_zoom_out() { + // Do not zoom in or out with no visible frames + if (frames->get_frame_count(edited_anim) <= 0) { + return; + } + if (thumbnail_zoom > min_thumbnail_zoom) { + thumbnail_zoom /= scale_ratio; + int thumbnail_size = (int)(thumbnail_default_size * thumbnail_zoom); + tree->set_fixed_column_width(thumbnail_size * 3 / 2); + tree->set_fixed_icon_size(Size2(thumbnail_size, thumbnail_size)); + } +} + +void SpriteFramesEditor::_zoom_reset() { + thumbnail_zoom = 1.0f; + tree->set_fixed_column_width(thumbnail_default_size * 3 / 2); + tree->set_fixed_icon_size(Size2(thumbnail_default_size, thumbnail_default_size)); +} + void SpriteFramesEditor::_update_library(bool p_skip_selector) { updating = true; @@ -728,6 +827,9 @@ void SpriteFramesEditor::edit(SpriteFrames *p_frames) { } _update_library(); + // Clear zoom and split sheet texture + split_sheet_preview->set_texture(Ref<Texture2D>()); + _zoom_reset(); } else { hide(); } @@ -966,6 +1068,24 @@ SpriteFramesEditor::SpriteFramesEditor() { _delete->set_tooltip(TTR("Delete")); hbc->add_child(_delete); + hbc->add_spacer(); + + zoom_out = memnew(Button); + zoom_out->connect("pressed", callable_mp(this, &SpriteFramesEditor::_zoom_out)); + zoom_out->set_flat(true); + zoom_out->set_tooltip(TTR("Zoom Out")); + hbc->add_child(zoom_out); + zoom_1 = memnew(Button); + zoom_1->connect("pressed", callable_mp(this, &SpriteFramesEditor::_zoom_reset)); + zoom_1->set_flat(true); + zoom_1->set_tooltip(TTR("Zoom Reset")); + hbc->add_child(zoom_1); + zoom_in = memnew(Button); + zoom_in->connect("pressed", callable_mp(this, &SpriteFramesEditor::_zoom_in)); + zoom_in->set_flat(true); + zoom_in->set_tooltip(TTR("Zoom In")); + hbc->add_child(zoom_in); + file = memnew(EditorFileDialog); add_child(file); @@ -973,13 +1093,11 @@ SpriteFramesEditor::SpriteFramesEditor() { tree->set_v_size_flags(SIZE_EXPAND_FILL); tree->set_icon_mode(ItemList::ICON_MODE_TOP); - int thumbnail_size = 96; tree->set_max_columns(0); tree->set_icon_mode(ItemList::ICON_MODE_TOP); - tree->set_fixed_column_width(thumbnail_size * 3 / 2); tree->set_max_text_lines(2); - tree->set_fixed_icon_size(Size2(thumbnail_size, thumbnail_size)); tree->set_drag_forwarding(this); + tree->connect("gui_input", callable_mp(this, &SpriteFramesEditor::_tree_input)); sub_vb->add_child(tree); @@ -1043,8 +1161,13 @@ SpriteFramesEditor::SpriteFramesEditor() { split_sheet_vb->add_child(split_sheet_hb); + PanelContainer *split_sheet_panel = memnew(PanelContainer); + split_sheet_panel->set_h_size_flags(SIZE_EXPAND_FILL); + split_sheet_panel->set_v_size_flags(SIZE_EXPAND_FILL); + split_sheet_vb->add_child(split_sheet_panel); + split_sheet_preview = memnew(TextureRect); - split_sheet_preview->set_expand(false); + split_sheet_preview->set_expand(true); split_sheet_preview->set_mouse_filter(MOUSE_FILTER_PASS); split_sheet_preview->connect("draw", callable_mp(this, &SpriteFramesEditor::_sheet_preview_draw)); split_sheet_preview->connect("gui_input", callable_mp(this, &SpriteFramesEditor::_sheet_preview_input)); @@ -1052,20 +1175,58 @@ SpriteFramesEditor::SpriteFramesEditor() { splite_sheet_scroll = memnew(ScrollContainer); splite_sheet_scroll->set_enable_h_scroll(true); splite_sheet_scroll->set_enable_v_scroll(true); - splite_sheet_scroll->set_v_size_flags(SIZE_EXPAND_FILL); + splite_sheet_scroll->connect("gui_input", callable_mp(this, &SpriteFramesEditor::_sheet_scroll_input)); + split_sheet_panel->add_child(splite_sheet_scroll); CenterContainer *cc = memnew(CenterContainer); cc->add_child(split_sheet_preview); cc->set_h_size_flags(SIZE_EXPAND_FILL); cc->set_v_size_flags(SIZE_EXPAND_FILL); splite_sheet_scroll->add_child(cc); - split_sheet_vb->add_child(splite_sheet_scroll); + MarginContainer *split_sheet_zoom_margin = memnew(MarginContainer); + split_sheet_panel->add_child(split_sheet_zoom_margin); + split_sheet_zoom_margin->set_h_size_flags(0); + split_sheet_zoom_margin->set_v_size_flags(0); + split_sheet_zoom_margin->add_theme_constant_override("margin_top", 5); + split_sheet_zoom_margin->add_theme_constant_override("margin_left", 5); + HBoxContainer *split_sheet_zoom_hb = memnew(HBoxContainer); + split_sheet_zoom_margin->add_child(split_sheet_zoom_hb); + + split_sheet_zoom_out = memnew(Button); + split_sheet_zoom_out->set_flat(true); + split_sheet_zoom_out->set_focus_mode(FOCUS_NONE); + split_sheet_zoom_out->set_tooltip(TTR("Zoom Out")); + split_sheet_zoom_out->connect("pressed", callable_mp(this, &SpriteFramesEditor::_sheet_zoom_out)); + split_sheet_zoom_hb->add_child(split_sheet_zoom_out); + split_sheet_zoom_1 = memnew(Button); + split_sheet_zoom_1->set_flat(true); + split_sheet_zoom_1->set_focus_mode(FOCUS_NONE); + split_sheet_zoom_1->set_tooltip(TTR("Zoom Reset")); + split_sheet_zoom_1->connect("pressed", callable_mp(this, &SpriteFramesEditor::_sheet_zoom_reset)); + split_sheet_zoom_hb->add_child(split_sheet_zoom_1); + split_sheet_zoom_in = memnew(Button); + split_sheet_zoom_in->set_flat(true); + split_sheet_zoom_in->set_focus_mode(FOCUS_NONE); + split_sheet_zoom_in->set_tooltip(TTR("Zoom In")); + split_sheet_zoom_in->connect("pressed", callable_mp(this, &SpriteFramesEditor::_sheet_zoom_in)); + split_sheet_zoom_hb->add_child(split_sheet_zoom_in); file_split_sheet = memnew(EditorFileDialog); file_split_sheet->set_title(TTR("Create Frames from Sprite Sheet")); file_split_sheet->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE); add_child(file_split_sheet); file_split_sheet->connect("file_selected", callable_mp(this, &SpriteFramesEditor::_prepare_sprite_sheet)); + + // Config scale. + scale_ratio = 1.2f; + thumbnail_default_size = 96; + thumbnail_zoom = 1.0f; + max_thumbnail_zoom = 8.0f; + min_thumbnail_zoom = 0.1f; + sheet_zoom = 1.0f; + max_sheet_zoom = 16.0f; + min_sheet_zoom = 0.01f; + _zoom_reset(); } void SpriteFramesEditorPlugin::edit(Object *p_object) { diff --git a/editor/plugins/sprite_frames_editor_plugin.h b/editor/plugins/sprite_frames_editor_plugin.h index ee743fe60d..0dce93f55a 100644 --- a/editor/plugins/sprite_frames_editor_plugin.h +++ b/editor/plugins/sprite_frames_editor_plugin.h @@ -36,6 +36,7 @@ #include "scene/2d/animated_sprite_2d.h" #include "scene/gui/dialogs.h" #include "scene/gui/file_dialog.h" +#include "scene/gui/scroll_container.h" #include "scene/gui/split_container.h" #include "scene/gui/texture_rect.h" #include "scene/gui/tree.h" @@ -52,6 +53,9 @@ class SpriteFramesEditor : public HSplitContainer { Button *empty2; Button *move_up; Button *move_down; + Button *zoom_out; + Button *zoom_1; + Button *zoom_in; ItemList *tree; bool loading_scene; int sel; @@ -79,10 +83,22 @@ class SpriteFramesEditor : public HSplitContainer { TextureRect *split_sheet_preview; SpinBox *split_sheet_h; SpinBox *split_sheet_v; + Button *split_sheet_zoom_out; + Button *split_sheet_zoom_1; + Button *split_sheet_zoom_in; EditorFileDialog *file_split_sheet; Set<int> frames_selected; int last_frame_selected; + float scale_ratio; + int thumbnail_default_size; + float thumbnail_zoom; + float max_thumbnail_zoom; + float min_thumbnail_zoom; + float sheet_zoom; + float max_sheet_zoom; + float min_sheet_zoom; + void _load_pressed(); void _load_scene_pressed(); void _file_load_request(const Vector<String> &p_path, int p_at_pos = -1); @@ -103,6 +119,11 @@ class SpriteFramesEditor : public HSplitContainer { void _animation_loop_changed(); void _animation_fps_changed(double p_value); + void _tree_input(const Ref<InputEvent> &p_event); + void _zoom_in(); + void _zoom_out(); + void _zoom_reset(); + bool updating; UndoRedo *undo_redo; @@ -117,7 +138,11 @@ class SpriteFramesEditor : public HSplitContainer { void _sheet_preview_draw(); void _sheet_spin_changed(double); void _sheet_preview_input(const Ref<InputEvent> &p_event); + void _sheet_scroll_input(const Ref<InputEvent> &p_event); void _sheet_add_frames(); + void _sheet_zoom_in(); + void _sheet_zoom_out(); + void _sheet_zoom_reset(); void _sheet_select_clear_all_frames(); protected: diff --git a/editor/plugins/text_editor.cpp b/editor/plugins/text_editor.cpp index d602d152fe..82e231e396 100644 --- a/editor/plugins/text_editor.cpp +++ b/editor/plugins/text_editor.cpp @@ -34,22 +34,27 @@ #include "editor/editor_node.h" void TextEditor::add_syntax_highlighter(Ref<EditorSyntaxHighlighter> p_highlighter) { + ERR_FAIL_COND(p_highlighter.is_null()); + highlighters[p_highlighter->_get_name()] = p_highlighter; highlighter_menu->add_radio_check_item(p_highlighter->_get_name()); } void TextEditor::set_syntax_highlighter(Ref<EditorSyntaxHighlighter> p_highlighter) { - TextEdit *te = code_editor->get_text_edit(); - te->set_syntax_highlighter(p_highlighter); - highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(p_highlighter->_get_name()), true); -} + ERR_FAIL_COND(p_highlighter.is_null()); -void TextEditor::_change_syntax_highlighter(int p_idx) { Map<String, Ref<EditorSyntaxHighlighter>>::Element *el = highlighters.front(); while (el != nullptr) { - highlighter_menu->set_item_checked(highlighter_menu->get_item_idx_from_text(el->key()), false); + int highlighter_index = highlighter_menu->get_item_idx_from_text(el->key()); + highlighter_menu->set_item_checked(highlighter_index, el->value() == p_highlighter); el = el->next(); } + + TextEdit *te = code_editor->get_text_edit(); + te->set_syntax_highlighter(p_highlighter); +} + +void TextEditor::_change_syntax_highlighter(int p_idx) { set_syntax_highlighter(highlighters[highlighter_menu->get_item_text(p_idx)]); } @@ -114,6 +119,9 @@ String TextEditor::get_name() { if (text_file->get_path().find("local://") == -1 && text_file->get_path().find("::") == -1) { name = text_file->get_path().get_file(); if (is_unsaved()) { + if (text_file->get_path().empty()) { + name = TTR("[unsaved]"); + } name += "(*)"; } } else if (text_file->get_name() != "") { @@ -126,7 +134,7 @@ String TextEditor::get_name() { } Ref<Texture2D> TextEditor::get_theme_icon() { - return EditorNode::get_singleton()->get_object_icon(text_file.operator->(), ""); + return EditorNode::get_singleton()->get_object_icon(text_file.ptr(), ""); } RES TextEditor::get_edited_resource() const { @@ -134,7 +142,8 @@ RES TextEditor::get_edited_resource() const { } void TextEditor::set_edited_resource(const RES &p_res) { - ERR_FAIL_COND(!text_file.is_null()); + ERR_FAIL_COND(text_file.is_valid()); + ERR_FAIL_COND(p_res.is_null()); text_file = p_res; @@ -146,6 +155,16 @@ void TextEditor::set_edited_resource(const RES &p_res) { code_editor->update_line_and_column(); } +void TextEditor::enable_editor() { + if (editor_enabled) { + return; + } + + editor_enabled = true; + + _load_theme_settings(); +} + void TextEditor::add_callback(const String &p_function, PackedStringArray p_args) { } @@ -220,7 +239,10 @@ void TextEditor::apply_code() { } bool TextEditor::is_unsaved() { - return code_editor->get_text_edit()->get_version() != code_editor->get_text_edit()->get_saved_version(); + const bool unsaved = + code_editor->get_text_edit()->get_version() != code_editor->get_text_edit()->get_saved_version() || + text_file->get_path().empty(); // In memory. + return unsaved; } Variant TextEditor::get_edit_state() { @@ -237,6 +259,8 @@ void TextEditor::set_edit_state(const Variant &p_state) { _change_syntax_highlighter(idx); } } + + ensure_focus(); } void TextEditor::trim_trailing_whitespace() { @@ -303,14 +327,6 @@ void TextEditor::clear_edit_menu() { memdelete(edit_hb); } -void TextEditor::_notification(int p_what) { - switch (p_what) { - case NOTIFICATION_READY: - _load_theme_settings(); - break; - } -} - void TextEditor::_edit_option(int p_op) { TextEdit *tx = code_editor->get_text_edit(); diff --git a/editor/plugins/text_editor.h b/editor/plugins/text_editor.h index 5299776b56..f3e9e599cf 100644 --- a/editor/plugins/text_editor.h +++ b/editor/plugins/text_editor.h @@ -37,18 +37,19 @@ class TextEditor : public ScriptEditorBase { GDCLASS(TextEditor, ScriptEditorBase); private: - CodeTextEditor *code_editor; + CodeTextEditor *code_editor = nullptr; Ref<TextFile> text_file; + bool editor_enabled = false; - HBoxContainer *edit_hb; - MenuButton *edit_menu; - PopupMenu *highlighter_menu; - MenuButton *search_menu; - PopupMenu *bookmarks_menu; - PopupMenu *context_menu; + HBoxContainer *edit_hb = nullptr; + MenuButton *edit_menu = nullptr; + PopupMenu *highlighter_menu = nullptr; + MenuButton *search_menu = nullptr; + PopupMenu *bookmarks_menu = nullptr; + PopupMenu *context_menu = nullptr; - GotoLineDialog *goto_line_dialog; + GotoLineDialog *goto_line_dialog = nullptr; enum { EDIT_UNDO, @@ -88,8 +89,6 @@ private: protected: static void _bind_methods(); - void _notification(int p_what); - void _edit_option(int p_op); void _make_context_menu(bool p_selection, bool p_can_fold, bool p_is_folded, Vector2 p_position); void _text_edit_gui_input(const Ref<InputEvent> &ev); @@ -113,7 +112,7 @@ public: virtual Ref<Texture2D> get_theme_icon() override; virtual RES get_edited_resource() const override; virtual void set_edited_resource(const RES &p_res) override; - void set_edited_file(const Ref<TextFile> &p_file); + virtual void enable_editor() override; virtual void reload_text() override; virtual void apply_code() override; virtual bool is_unsaved() override; diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp index 762f42abeb..6e722607f7 100644 --- a/editor/plugins/texture_region_editor_plugin.cpp +++ b/editor/plugins/texture_region_editor_plugin.cpp @@ -875,7 +875,7 @@ void TextureRegionEditor::_changed_callback(Object *p_changed, const char *p_pro if (!is_visible()) { return; } - if (p_prop == StringName("atlas") || p_prop == StringName("texture")) { + if (p_prop == StringName("atlas") || p_prop == StringName("texture") || p_prop == StringName("region")) { _edit_region(); } } diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp index 43ace737c0..932ded6938 100644 --- a/editor/plugins/theme_editor_plugin.cpp +++ b/editor/plugins/theme_editor_plugin.cpp @@ -206,8 +206,8 @@ void ThemeEditor::_save_template_cbk(String fname) { file->store_line("; [value] examples:"); file->store_line("; "); file->store_line("; Type.item = 6 ; numeric constant. "); - file->store_line("; Type.item = #FF00FF ; HTML color "); - file->store_line("; Type.item = #55FF00FF ; HTML color with alpha 55."); + file->store_line("; Type.item = #FF00FF ; HTML color (magenta)."); + file->store_line("; Type.item = #FF00FF55 ; HTML color (magenta with alpha 0x55)."); file->store_line("; Type.item = icon(image.png) ; icon in a png file (relative to theme file)."); file->store_line("; Type.item = font(font.xres) ; font in a resource (relative to theme file)."); file->store_line("; Type.item = sbox(stylebox.xres) ; stylebox in a resource (relative to theme file)."); @@ -629,7 +629,7 @@ ThemeEditor::ThemeEditor() { ScrollContainer *scroll = memnew(ScrollContainer); add_child(scroll); scroll->set_enable_v_scroll(true); - scroll->set_enable_h_scroll(false); + scroll->set_enable_h_scroll(true); scroll->set_v_size_flags(SIZE_EXPAND_FILL); MarginContainer *root_container = memnew(MarginContainer); @@ -828,7 +828,7 @@ ThemeEditor::ThemeEditor() { type_hbc->add_child(type_edit); type_menu = memnew(MenuButton); type_menu->set_flat(false); - type_menu->set_text(".."); + type_menu->set_text("..."); type_hbc->add_child(type_menu); type_menu->get_popup()->connect("id_pressed", callable_mp(this, &ThemeEditor::_type_menu_cbk)); @@ -846,7 +846,7 @@ ThemeEditor::ThemeEditor() { name_hbc->add_child(name_edit); name_menu = memnew(MenuButton); type_menu->set_flat(false); - name_menu->set_text(".."); + name_menu->set_text("..."); name_hbc->add_child(name_menu); name_menu->get_popup()->connect("about_to_popup", callable_mp(this, &ThemeEditor::_name_menu_about_to_show)); diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp index 307a8a9001..e71485e9fc 100644 --- a/editor/plugins/tile_map_editor_plugin.cpp +++ b/editor/plugins/tile_map_editor_plugin.cpp @@ -886,17 +886,17 @@ void TileMapEditor::_draw_cell(Control *p_viewport, int p_cell, const Point2i &p rect.position += tile_ofs; } - rect.position = p_xform.xform(rect.position); - rect.size *= sc; - Color modulate = node->get_tileset()->tile_get_modulate(p_cell); modulate.a = 0.5; + Transform2D old_transform = p_viewport->get_viewport_transform(); + p_viewport->draw_set_transform_matrix(p_xform); // Take into account TileMap transformation when displaying cell if (r.has_no_area()) { p_viewport->draw_texture_rect(t, rect, false, modulate, p_transpose); } else { p_viewport->draw_texture_rect_region(t, rect, r, modulate, p_transpose); } + p_viewport->draw_set_transform_matrix(old_transform); } void TileMapEditor::_draw_fill_preview(Control *p_viewport, int p_cell, const Point2i &p_point, bool p_flip_h, bool p_flip_v, bool p_transpose, const Point2i &p_autotile_coord, const Transform2D &p_xform) { diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp index a37cf7e426..274c64263f 100644 --- a/editor/plugins/tile_set_editor_plugin.cpp +++ b/editor/plugins/tile_set_editor_plugin.cpp @@ -342,11 +342,13 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { left_container->add_child(tileset_toolbar_container); tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE] = memnew(Button); + tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE]->set_flat(true); tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tileset_toolbar_button_pressed), varray(TOOL_TILESET_ADD_TEXTURE)); tileset_toolbar_container->add_child(tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE]); tileset_toolbar_buttons[TOOL_TILESET_ADD_TEXTURE]->set_tooltip(TTR("Add Texture(s) to TileSet.")); tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE] = memnew(Button); + tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE]->set_flat(true); tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tileset_toolbar_button_pressed), varray(TOOL_TILESET_REMOVE_TEXTURE)); tileset_toolbar_container->add_child(tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE]); tileset_toolbar_buttons[TOOL_TILESET_REMOVE_TEXTURE]->set_tooltip(TTR("Remove selected Texture from TileSet.")); @@ -405,12 +407,14 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { tools[SELECT_NEXT] = memnew(Button); tool_hb->add_child(tools[SELECT_NEXT]); tool_hb->move_child(tools[SELECT_NEXT], WORKSPACE_CREATE_SINGLE); + tools[SELECT_NEXT]->set_flat(true); tools[SELECT_NEXT]->set_shortcut(ED_SHORTCUT("tileset_editor/next_shape", TTR("Next Coordinate"), KEY_PAGEDOWN)); tools[SELECT_NEXT]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tool_clicked), varray(SELECT_NEXT)); tools[SELECT_NEXT]->set_tooltip(TTR("Select the next shape, subtile, or Tile.")); tools[SELECT_PREVIOUS] = memnew(Button); tool_hb->add_child(tools[SELECT_PREVIOUS]); tool_hb->move_child(tools[SELECT_PREVIOUS], WORKSPACE_CREATE_SINGLE); + tools[SELECT_PREVIOUS]->set_flat(true); tools[SELECT_PREVIOUS]->set_shortcut(ED_SHORTCUT("tileset_editor/previous_shape", TTR("Previous Coordinate"), KEY_PAGEUP)); tools[SELECT_PREVIOUS]->set_tooltip(TTR("Select the previous shape, subtile, or Tile.")); tools[SELECT_PREVIOUS]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tool_clicked), varray(SELECT_PREVIOUS)); @@ -467,6 +471,7 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { tools[TOOL_SELECT] = memnew(Button); toolbar->add_child(tools[TOOL_SELECT]); + tools[TOOL_SELECT]->set_flat(true); tools[TOOL_SELECT]->set_toggle_mode(true); tools[TOOL_SELECT]->set_button_group(tg); tools[TOOL_SELECT]->set_pressed(true); @@ -475,20 +480,24 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { separator_bitmask = memnew(VSeparator); toolbar->add_child(separator_bitmask); tools[BITMASK_COPY] = memnew(Button); + tools[BITMASK_COPY]->set_flat(true); tools[BITMASK_COPY]->set_tooltip(TTR("Copy bitmask.")); tools[BITMASK_COPY]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tool_clicked), varray(BITMASK_COPY)); toolbar->add_child(tools[BITMASK_COPY]); tools[BITMASK_PASTE] = memnew(Button); + tools[BITMASK_PASTE]->set_flat(true); tools[BITMASK_PASTE]->set_tooltip(TTR("Paste bitmask.")); tools[BITMASK_PASTE]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tool_clicked), varray(BITMASK_PASTE)); toolbar->add_child(tools[BITMASK_PASTE]); tools[BITMASK_CLEAR] = memnew(Button); + tools[BITMASK_CLEAR]->set_flat(true); tools[BITMASK_CLEAR]->set_tooltip(TTR("Erase bitmask.")); tools[BITMASK_CLEAR]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tool_clicked), varray(BITMASK_CLEAR)); toolbar->add_child(tools[BITMASK_CLEAR]); tools[SHAPE_NEW_RECTANGLE] = memnew(Button); toolbar->add_child(tools[SHAPE_NEW_RECTANGLE]); + tools[SHAPE_NEW_RECTANGLE]->set_flat(true); tools[SHAPE_NEW_RECTANGLE]->set_toggle_mode(true); tools[SHAPE_NEW_RECTANGLE]->set_button_group(tg); tools[SHAPE_NEW_RECTANGLE]->set_tooltip(TTR("Create a new rectangle.")); @@ -496,6 +505,7 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { tools[SHAPE_NEW_POLYGON] = memnew(Button); toolbar->add_child(tools[SHAPE_NEW_POLYGON]); + tools[SHAPE_NEW_POLYGON]->set_flat(true); tools[SHAPE_NEW_POLYGON]->set_toggle_mode(true); tools[SHAPE_NEW_POLYGON]->set_button_group(tg); tools[SHAPE_NEW_POLYGON]->set_tooltip(TTR("Create a new polygon.")); @@ -504,12 +514,14 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { separator_shape_toggle = memnew(VSeparator); toolbar->add_child(separator_shape_toggle); tools[SHAPE_TOGGLE_TYPE] = memnew(Button); + tools[SHAPE_TOGGLE_TYPE]->set_flat(true); tools[SHAPE_TOGGLE_TYPE]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tool_clicked), varray(SHAPE_TOGGLE_TYPE)); toolbar->add_child(tools[SHAPE_TOGGLE_TYPE]); separator_delete = memnew(VSeparator); toolbar->add_child(separator_delete); tools[SHAPE_DELETE] = memnew(Button); + tools[SHAPE_DELETE]->set_flat(true); tools[SHAPE_DELETE]->connect("pressed", callable_mp(this, &TileSetEditor::_on_tool_clicked), varray(SHAPE_DELETE)); toolbar->add_child(tools[SHAPE_DELETE]); @@ -534,11 +546,13 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { separator_grid = memnew(VSeparator); toolbar->add_child(separator_grid); tools[SHAPE_KEEP_INSIDE_TILE] = memnew(Button); + tools[SHAPE_KEEP_INSIDE_TILE]->set_flat(true); tools[SHAPE_KEEP_INSIDE_TILE]->set_toggle_mode(true); tools[SHAPE_KEEP_INSIDE_TILE]->set_pressed(true); tools[SHAPE_KEEP_INSIDE_TILE]->set_tooltip(TTR("Keep polygon inside region Rect.")); toolbar->add_child(tools[SHAPE_KEEP_INSIDE_TILE]); tools[TOOL_GRID_SNAP] = memnew(Button); + tools[TOOL_GRID_SNAP]->set_flat(true); tools[TOOL_GRID_SNAP]->set_toggle_mode(true); tools[TOOL_GRID_SNAP]->set_tooltip(TTR("Enable snap and show grid (configurable via the Inspector).")); tools[TOOL_GRID_SNAP]->connect("toggled", callable_mp(this, &TileSetEditor::_on_grid_snap_toggled)); @@ -549,19 +563,23 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { toolbar->add_child(separator); tools[ZOOM_OUT] = memnew(Button); + tools[ZOOM_OUT]->set_flat(true); tools[ZOOM_OUT]->connect("pressed", callable_mp(this, &TileSetEditor::_zoom_out)); toolbar->add_child(tools[ZOOM_OUT]); tools[ZOOM_OUT]->set_tooltip(TTR("Zoom Out")); tools[ZOOM_1] = memnew(Button); + tools[ZOOM_1]->set_flat(true); tools[ZOOM_1]->connect("pressed", callable_mp(this, &TileSetEditor::_zoom_reset)); toolbar->add_child(tools[ZOOM_1]); tools[ZOOM_1]->set_tooltip(TTR("Zoom Reset")); tools[ZOOM_IN] = memnew(Button); + tools[ZOOM_IN]->set_flat(true); tools[ZOOM_IN]->connect("pressed", callable_mp(this, &TileSetEditor::_zoom_in)); toolbar->add_child(tools[ZOOM_IN]); tools[ZOOM_IN]->set_tooltip(TTR("Zoom In")); tools[VISIBLE_INFO] = memnew(Button); + tools[VISIBLE_INFO]->set_flat(true); tools[VISIBLE_INFO]->set_toggle_mode(true); tools[VISIBLE_INFO]->set_tooltip(TTR("Display Tile Names (Hold Alt Key)")); toolbar->add_child(tools[VISIBLE_INFO]); @@ -646,7 +664,7 @@ void TileSetEditor::_on_tileset_toolbar_button_pressed(int p_index) { option = p_index; switch (option) { case TOOL_TILESET_ADD_TEXTURE: { - texture_dialog->popup_centered_ratio(); + texture_dialog->popup_file_dialog(); } break; case TOOL_TILESET_REMOVE_TEXTURE: { if (get_current_texture().is_valid()) { @@ -698,7 +716,7 @@ void TileSetEditor::_on_tileset_toolbar_confirm() { List<int> ids; tileset->get_tile_list(&ids); - undo_redo->create_action(TTR(option == TOOL_TILESET_MERGE_SCENE ? "Merge Tileset from Scene" : "Create Tileset from Scene")); + undo_redo->create_action(option == TOOL_TILESET_MERGE_SCENE ? TTR("Merge Tileset from Scene") : TTR("Create Tileset from Scene")); undo_redo->add_do_method(this, "_undo_redo_import_scene", scene, option == TOOL_TILESET_MERGE_SCENE); undo_redo->add_undo_method(tileset.ptr(), "clear"); for (List<int>::Element *E = ids.front(); E; E = E->next()) { @@ -1977,7 +1995,7 @@ void TileSetEditor::_set_edited_shape_points(const Vector<Vector2> &points) { if (convex.is_valid()) { undo_redo->add_do_method(convex.ptr(), "set_points", points); undo_redo->add_undo_method(convex.ptr(), "set_points", _get_edited_shape_points()); - } else if (concave.is_valid()) { + } else if (concave.is_valid() && points.size() > 1) { PackedVector2Array segments; for (int i = 0; i < points.size() - 1; i++) { segments.push_back(points[i]); @@ -2669,7 +2687,7 @@ void TileSetEditor::draw_polygon_shapes() { workspace->draw_polygon(polygon, colors); if (coord == edited_shape_coord || tileset->tile_get_tile_mode(get_current_tile()) == TileSet::SINGLE_TILE) { - if (!creating_shape) { + if (!creating_shape && polygon.size() > 1) { for (int j = 0; j < polygon.size() - 1; j++) { workspace->draw_line(polygon[j], polygon[j + 1], c_border, 1); } @@ -2706,13 +2724,11 @@ void TileSetEditor::draw_polygon_shapes() { } workspace->draw_polygon(polygon, colors); - if (!creating_shape) { - if (polygon.size() > 1) { - for (int j = 0; j < polygon.size() - 1; j++) { - workspace->draw_line(polygon[j], polygon[j + 1], c_border, 1); - } - workspace->draw_line(polygon[polygon.size() - 1], polygon[0], c_border, 1); + if (!creating_shape && polygon.size() > 1) { + for (int j = 0; j < polygon.size() - 1; j++) { + workspace->draw_line(polygon[j], polygon[j + 1], c_border, 1); } + workspace->draw_line(polygon[polygon.size() - 1], polygon[0], c_border, 1); } if (shape == edited_occlusion_shape) { draw_handles = true; @@ -2756,7 +2772,7 @@ void TileSetEditor::draw_polygon_shapes() { workspace->draw_polygon(polygon, colors); if (coord == edited_shape_coord) { - if (!creating_shape) { + if (!creating_shape && polygon.size() > 1) { for (int j = 0; j < polygon.size() - 1; j++) { workspace->draw_line(polygon[j], polygon[j + 1], c_border, 1); } @@ -2796,7 +2812,7 @@ void TileSetEditor::draw_polygon_shapes() { } workspace->draw_polygon(polygon, colors); - if (!creating_shape) { + if (!creating_shape && polygon.size() > 1) { for (int j = 0; j < polygon.size() - 1; j++) { workspace->draw_line(polygon[j], polygon[j + 1], c_border, 1); } @@ -2845,7 +2861,7 @@ void TileSetEditor::draw_polygon_shapes() { workspace->draw_polygon(polygon, colors); if (coord == edited_shape_coord) { - if (!creating_shape) { + if (!creating_shape && polygon.size() > 1) { for (int j = 0; j < polygon.size() - 1; j++) { workspace->draw_line(polygon[j], polygon[j + 1], c_border, 1); } @@ -2863,7 +2879,7 @@ void TileSetEditor::draw_polygon_shapes() { } } - if (creating_shape) { + if (creating_shape && current_shape.size() > 1) { for (int j = 0; j < current_shape.size() - 1; j++) { workspace->draw_line(current_shape[j], current_shape[j + 1], Color(0, 1, 1), 1); } diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index d987f6f7c0..53bd1150ec 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -489,6 +489,45 @@ void VisualShaderEditor::_update_graph() { Vector<int> nodes = visual_shader->get_node_list(type); + VisualShaderNodeUniformRef::clear_uniforms(); + + // scan for all uniforms + + for (int t = 0; t < VisualShader::TYPE_MAX; t++) { + Vector<int> tnodes = visual_shader->get_node_list((VisualShader::Type)t); + for (int i = 0; i < tnodes.size(); i++) { + Ref<VisualShaderNode> vsnode = visual_shader->get_node((VisualShader::Type)t, tnodes[i]); + Ref<VisualShaderNodeUniform> uniform = vsnode; + + if (uniform.is_valid()) { + Ref<VisualShaderNodeFloatUniform> float_uniform = vsnode; + Ref<VisualShaderNodeIntUniform> int_uniform = vsnode; + Ref<VisualShaderNodeVec3Uniform> vec3_uniform = vsnode; + Ref<VisualShaderNodeColorUniform> color_uniform = vsnode; + Ref<VisualShaderNodeBooleanUniform> bool_uniform = vsnode; + Ref<VisualShaderNodeTransformUniform> transform_uniform = vsnode; + + VisualShaderNodeUniformRef::UniformType uniform_type; + if (float_uniform.is_valid()) { + uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_FLOAT; + } else if (int_uniform.is_valid()) { + uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_INT; + } else if (bool_uniform.is_valid()) { + uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_BOOLEAN; + } else if (vec3_uniform.is_valid()) { + uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_VECTOR; + } else if (transform_uniform.is_valid()) { + uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_TRANSFORM; + } else if (color_uniform.is_valid()) { + uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_COLOR; + } else { + uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_SAMPLER; + } + VisualShaderNodeUniformRef::add_uniform(uniform->get_uniform_name(), uniform_type); + } + } + } + Control *offset; for (int n_i = 0; n_i < nodes.size(); n_i++) { @@ -834,6 +873,9 @@ void VisualShaderEditor::_update_graph() { Color keyword_color = EDITOR_GET("text_editor/highlighting/keyword_color"); Color comment_color = EDITOR_GET("text_editor/highlighting/comment_color"); Color symbol_color = EDITOR_GET("text_editor/highlighting/symbol_color"); + Color function_color = EDITOR_GET("text_editor/highlighting/function_color"); + Color number_color = EDITOR_GET("text_editor/highlighting/number_color"); + Color members_color = EDITOR_GET("text_editor/highlighting/member_variable_color"); expression_box->set_syntax_highlighter(expression_syntax_highlighter); expression_box->add_theme_color_override("background_color", background_color); @@ -844,9 +886,12 @@ void VisualShaderEditor::_update_graph() { expression_box->add_theme_font_override("font", get_theme_font("expression", "EditorFonts")); expression_box->add_theme_color_override("font_color", text_color); + expression_syntax_highlighter->set_number_color(number_color); expression_syntax_highlighter->set_symbol_color(symbol_color); + expression_syntax_highlighter->set_function_color(function_color); + expression_syntax_highlighter->set_member_variable_color(members_color); expression_syntax_highlighter->add_color_region("/*", "*/", comment_color, false); - expression_syntax_highlighter->add_color_region("//", "", comment_color, false); + expression_syntax_highlighter->add_color_region("//", "", comment_color, true); expression_box->set_text(expression); expression_box->set_context_menu_enabled(false); @@ -1701,6 +1746,9 @@ void VisualShaderEditor::_notification(int p_what) { Color keyword_color = EDITOR_GET("text_editor/highlighting/keyword_color"); Color comment_color = EDITOR_GET("text_editor/highlighting/comment_color"); Color symbol_color = EDITOR_GET("text_editor/highlighting/symbol_color"); + Color function_color = EDITOR_GET("text_editor/highlighting/function_color"); + Color number_color = EDITOR_GET("text_editor/highlighting/number_color"); + Color members_color = EDITOR_GET("text_editor/highlighting/member_variable_color"); preview_text->add_theme_color_override("background_color", background_color); @@ -1710,10 +1758,13 @@ void VisualShaderEditor::_notification(int p_what) { preview_text->add_theme_font_override("font", get_theme_font("expression", "EditorFonts")); preview_text->add_theme_color_override("font_color", text_color); + syntax_highlighter->set_number_color(number_color); syntax_highlighter->set_symbol_color(symbol_color); + syntax_highlighter->set_function_color(function_color); + syntax_highlighter->set_member_variable_color(members_color); syntax_highlighter->clear_color_regions(); syntax_highlighter->add_color_region("/*", "*/", comment_color, false); - syntax_highlighter->add_color_region("//", "", comment_color, false); + syntax_highlighter->add_color_region("//", "", comment_color, true); error_text->add_theme_font_override("font", get_theme_font("status_source", "EditorFonts")); error_text->add_theme_color_override("font_color", get_theme_color("error_color", "Editor")); @@ -2035,6 +2086,41 @@ void VisualShaderEditor::_input_select_item(Ref<VisualShaderNodeInput> input, St undo_redo->commit_action(); } +void VisualShaderEditor::_uniform_select_item(Ref<VisualShaderNodeUniformRef> p_uniform_ref, String p_name) { + String prev_name = p_uniform_ref->get_uniform_name(); + + if (p_name == prev_name) { + return; + } + + bool type_changed = p_uniform_ref->get_uniform_type_by_name(p_name) != p_uniform_ref->get_uniform_type_by_name(prev_name); + + UndoRedo *undo_redo = EditorNode::get_singleton()->get_undo_redo(); + undo_redo->create_action(TTR("UniformRef Name Changed")); + + undo_redo->add_do_method(p_uniform_ref.ptr(), "set_uniform_name", p_name); + undo_redo->add_undo_method(p_uniform_ref.ptr(), "set_uniform_name", prev_name); + + if (type_changed) { + //restore connections if type changed + VisualShader::Type type = VisualShader::Type(edit_type->get_selected()); + int id = visual_shader->find_node_id(type, p_uniform_ref); + List<VisualShader::Connection> conns; + visual_shader->get_node_connections(type, &conns); + for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) { + if (E->get().from_node == id) { + undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port); + undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port); + } + } + } + + undo_redo->add_do_method(VisualShaderEditor::get_singleton(), "_update_graph"); + undo_redo->add_undo_method(VisualShaderEditor::get_singleton(), "_update_graph"); + + undo_redo->commit_action(); +} + void VisualShaderEditor::_member_filter_changed(const String &p_text) { _update_options_menu(); } @@ -2260,6 +2346,7 @@ void VisualShaderEditor::_bind_methods() { ClassDB::bind_method("_add_node", &VisualShaderEditor::_add_node); ClassDB::bind_method("_node_changed", &VisualShaderEditor::_node_changed); ClassDB::bind_method("_input_select_item", &VisualShaderEditor::_input_select_item); + ClassDB::bind_method("_uniform_select_item", &VisualShaderEditor::_uniform_select_item); ClassDB::bind_method("_set_node_size", &VisualShaderEditor::_set_node_size); ClassDB::bind_method("_clear_buffer", &VisualShaderEditor::_clear_buffer); @@ -2862,6 +2949,7 @@ VisualShaderEditor::VisualShaderEditor() { add_options.push_back(AddOption("Expression", "Special", "", "VisualShaderNodeExpression", TTR("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."))); add_options.push_back(AddOption("Fresnel", "Special", "", "VisualShaderNodeFresnel", TTR("Returns falloff based on the dot product of surface normal and view direction of camera (pass associated inputs to it)."), -1, VisualShaderNode::PORT_TYPE_SCALAR)); add_options.push_back(AddOption("GlobalExpression", "Special", "", "VisualShaderNodeGlobalExpression", TTR("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."))); + add_options.push_back(AddOption("UniformRef", "Special", "", "VisualShaderNodeUniformRef", TTR("A reference to an existing uniform."))); add_options.push_back(AddOption("ScalarDerivativeFunc", "Special", "Common", "VisualShaderNodeScalarDerivativeFunc", TTR("(Fragment/Light mode only) Scalar derivative function."), -1, VisualShaderNode::PORT_TYPE_SCALAR, VisualShader::TYPE_FRAGMENT | VisualShader::TYPE_LIGHT, -1, -1, true)); add_options.push_back(AddOption("VectorDerivativeFunc", "Special", "Common", "VisualShaderNodeVectorDerivativeFunc", TTR("(Fragment/Light mode only) Vector derivative function."), -1, VisualShaderNode::PORT_TYPE_VECTOR, VisualShader::TYPE_FRAGMENT | VisualShader::TYPE_LIGHT, -1, -1, true)); @@ -2980,6 +3068,54 @@ public: } }; +//////////////// + +class VisualShaderNodePluginUniformRefEditor : public OptionButton { + GDCLASS(VisualShaderNodePluginUniformRefEditor, OptionButton); + + Ref<VisualShaderNodeUniformRef> uniform_ref; + +public: + void _notification(int p_what) { + if (p_what == NOTIFICATION_READY) { + connect("item_selected", callable_mp(this, &VisualShaderNodePluginUniformRefEditor::_item_selected)); + } + } + + void _item_selected(int p_item) { + VisualShaderEditor::get_singleton()->call_deferred("_uniform_select_item", uniform_ref, get_item_text(p_item)); + } + + void setup(const Ref<VisualShaderNodeUniformRef> &p_uniform_ref) { + uniform_ref = p_uniform_ref; + + Ref<Texture2D> type_icon[7] = { + EditorNode::get_singleton()->get_gui_base()->get_theme_icon("float", "EditorIcons"), + EditorNode::get_singleton()->get_gui_base()->get_theme_icon("int", "EditorIcons"), + EditorNode::get_singleton()->get_gui_base()->get_theme_icon("bool", "EditorIcons"), + EditorNode::get_singleton()->get_gui_base()->get_theme_icon("Vector3", "EditorIcons"), + EditorNode::get_singleton()->get_gui_base()->get_theme_icon("Transform", "EditorIcons"), + EditorNode::get_singleton()->get_gui_base()->get_theme_icon("Color", "EditorIcons"), + EditorNode::get_singleton()->get_gui_base()->get_theme_icon("ImageTexture", "EditorIcons"), + }; + + add_item("[None]"); + int to_select = -1; + for (int i = 0; i < p_uniform_ref->get_uniforms_count(); i++) { + if (p_uniform_ref->get_uniform_name() == p_uniform_ref->get_uniform_name_by_index(i)) { + to_select = i + 1; + } + add_icon_item(type_icon[p_uniform_ref->get_uniform_type_by_index(i)], p_uniform_ref->get_uniform_name_by_index(i)); + } + + if (to_select >= 0) { + select(to_select); + } + } +}; + +//////////////// + class VisualShaderNodePluginDefaultEditor : public VBoxContainer { GDCLASS(VisualShaderNodePluginDefaultEditor, VBoxContainer); Ref<Resource> parent_resource; @@ -3095,6 +3231,13 @@ public: }; Control *VisualShaderNodePluginDefault::create_editor(const Ref<Resource> &p_parent_resource, const Ref<VisualShaderNode> &p_node) { + if (p_node->is_class("VisualShaderNodeUniformRef")) { + //create input + VisualShaderNodePluginUniformRefEditor *uniform_editor = memnew(VisualShaderNodePluginUniformRefEditor); + uniform_editor->setup(p_node); + return uniform_editor; + } + if (p_node->is_class("VisualShaderNodeInput")) { //create input VisualShaderNodePluginInputEditor *input_editor = memnew(VisualShaderNodePluginInputEditor); diff --git a/editor/plugins/visual_shader_editor_plugin.h b/editor/plugins/visual_shader_editor_plugin.h index 0601b35131..9b80488b22 100644 --- a/editor/plugins/visual_shader_editor_plugin.h +++ b/editor/plugins/visual_shader_editor_plugin.h @@ -232,6 +232,7 @@ class VisualShaderEditor : public VBoxContainer { void _rebuild(); void _input_select_item(Ref<VisualShaderNodeInput> input, String name); + void _uniform_select_item(Ref<VisualShaderNodeUniformRef> p_uniform, String p_name); void _add_input_port(int p_node, int p_port, int p_port_type, const String &p_name); void _remove_input_port(int p_node, int p_port); diff --git a/editor/pot_generator.cpp b/editor/pot_generator.cpp index f9b8722aad..f09750efdc 100644 --- a/editor/pot_generator.cpp +++ b/editor/pot_generator.cpp @@ -31,23 +31,25 @@ #include "pot_generator.h" #include "core/error_macros.h" -#include "core/os/file_access.h" #include "core/project_settings.h" #include "editor_translation_parser.h" #include "plugins/packed_scene_translation_parser_plugin.h" POTGenerator *POTGenerator::singleton = nullptr; -//#define DEBUG_POT - #ifdef DEBUG_POT -void _print_all_translation_strings(const OrderedHashMap<String, Set<String>> &p_all_translation_strings) { - for (auto E_pair = p_all_translation_strings.front(); E_pair; E_pair = E_pair.next()) { - String msg = static_cast<String>(E_pair.key()) + " : "; - for (Set<String>::Element *E = E_pair.value().front(); E; E = E->next()) { - msg += E->get() + " "; +void POTGenerator::_print_all_translation_strings() { + for (auto E = all_translation_strings.front(); E; E = E.next()) { + Vector<MsgidData> v_md = all_translation_strings[E.key()]; + for (int i = 0; i < v_md.size(); i++) { + print_line("++++++"); + print_line("msgid: " + E.key()); + print_line("context: " + v_md[i].ctx); + print_line("msgid_plural: " + v_md[i].plural); + for (Set<String>::Element *E = v_md[i].locations.front(); E; E = E->next()) { + print_line("location: " + E->get()); + } } - print_line(msg); } } #endif @@ -65,27 +67,27 @@ void POTGenerator::generate_pot(const String &p_file) { // Collect all translatable strings according to files order in "POT Generation" setting. for (int i = 0; i < files.size(); i++) { - Vector<String> translation_strings; + Vector<String> msgids; + Vector<Vector<String>> msgids_context_plural; String file_path = files[i]; String file_extension = file_path.get_extension(); if (EditorTranslationParser::get_singleton()->can_parse(file_extension)) { - EditorTranslationParser::get_singleton()->get_parser(file_extension)->parse_file(file_path, &translation_strings); + EditorTranslationParser::get_singleton()->get_parser(file_extension)->parse_file(file_path, &msgids, &msgids_context_plural); } else { ERR_PRINT("Unrecognized file extension " + file_extension + " in generate_pot()"); return; } - // Store translation strings parsed in this iteration along with their corresponding source file - to write into POT later on. - for (int j = 0; j < translation_strings.size(); j++) { - all_translation_strings[translation_strings[j]].insert(file_path); + for (int j = 0; j < msgids_context_plural.size(); j++) { + Vector<String> entry = msgids_context_plural[j]; + _add_new_msgid(entry[0], entry[1], entry[2], file_path); + } + for (int j = 0; j < msgids.size(); j++) { + _add_new_msgid(msgids[j], "", "", file_path); } } -#ifdef DEBUG_POT - _print_all_translation_strings(all_translation_strings); -#endif - _write_to_pot(p_file); } @@ -119,35 +121,86 @@ void POTGenerator::_write_to_pot(const String &p_file) { file->store_string(header); - for (OrderedHashMap<String, Set<String>>::Element E_pair = all_translation_strings.front(); E_pair; E_pair = E_pair.next()) { - String msg = E_pair.key(); + for (OrderedHashMap<String, Vector<MsgidData>>::Element E_pair = all_translation_strings.front(); E_pair; E_pair = E_pair.next()) { + String msgid = E_pair.key(); + Vector<MsgidData> v_msgid_data = E_pair.value(); + for (int i = 0; i < v_msgid_data.size(); i++) { + String context = v_msgid_data[i].ctx; + String plural = v_msgid_data[i].plural; + const Set<String> &locations = v_msgid_data[i].locations; + + // Write file locations. + for (Set<String>::Element *E = locations.front(); E; E = E->next()) { + file->store_line("#: " + E->get().trim_prefix("res://")); + } - // Write file locations. - for (Set<String>::Element *E = E_pair.value().front(); E; E = E->next()) { - file->store_line("#: " + E->get().trim_prefix("res://")); - } + // Write context. + if (!context.empty()) { + file->store_line("msgctxt \"" + context + "\""); + } - // Split \\n and \n. - Vector<String> temp = msg.split("\\n"); - Vector<String> msg_lines; - for (int i = 0; i < temp.size(); i++) { - msg_lines.append_array(temp[i].split("\n")); - if (i < temp.size() - 1) { - // Add \n. - msg_lines.set(msg_lines.size() - 1, msg_lines[msg_lines.size() - 1] + "\\n"); + // Write msgid. + _write_msgid(file, msgid, false); + + // Write msgid_plural + if (!plural.empty()) { + _write_msgid(file, plural, true); + file->store_line("msgstr[0] \"\""); + file->store_line("msgstr[1] \"\"\n"); + } else { + file->store_line("msgstr \"\"\n"); } } + } - // Write msgid. - file->store_string("msgid "); - for (int i = 0; i < msg_lines.size(); i++) { - file->store_line("\"" + msg_lines[i] + "\""); + file->close(); +} + +void POTGenerator::_write_msgid(FileAccess *r_file, const String &p_id, bool p_plural) { + // Split \\n and \n. + Vector<String> temp = p_id.split("\\n"); + Vector<String> msg_lines; + for (int i = 0; i < temp.size(); i++) { + msg_lines.append_array(temp[i].split("\n")); + if (i < temp.size() - 1) { + // Add \n. + msg_lines.set(msg_lines.size() - 1, msg_lines[msg_lines.size() - 1] + "\\n"); } + } - file->store_line("msgstr \"\"\n"); + if (p_plural) { + r_file->store_string("msgid_plural "); + } else { + r_file->store_string("msgid "); } - file->close(); + for (int i = 0; i < msg_lines.size(); i++) { + r_file->store_line("\"" + msg_lines[i] + "\""); + } +} + +void POTGenerator::_add_new_msgid(const String &p_msgid, const String &p_context, const String &p_plural, const String &p_location) { + // Insert new location if msgid under same context exists already. + if (all_translation_strings.has(p_msgid)) { + Vector<MsgidData> &v_mdata = all_translation_strings[p_msgid]; + for (int i = 0; i < v_mdata.size(); i++) { + if (v_mdata[i].ctx == p_context) { + if (!v_mdata[i].plural.empty() && !p_plural.empty() && v_mdata[i].plural != p_plural) { + WARN_PRINT("Redefinition of plural message (msgid_plural), under the same message (msgid) and context (msgctxt)"); + } + v_mdata.write[i].locations.insert(p_location); + return; + } + } + } + + // Add a new entry of msgid, context, plural and location - context and plural might be empty if the inserted msgid doesn't associated + // context or plurals. + MsgidData mdata; + mdata.ctx = p_context; + mdata.plural = p_plural; + mdata.locations.insert(p_location); + all_translation_strings[p_msgid].push_back(mdata); } POTGenerator *POTGenerator::get_singleton() { diff --git a/editor/pot_generator.h b/editor/pot_generator.h index abe1a21d41..8853b784ed 100644 --- a/editor/pot_generator.h +++ b/editor/pot_generator.h @@ -32,14 +32,29 @@ #define POT_GENERATOR_H #include "core/ordered_hash_map.h" +#include "core/os/file_access.h" #include "core/set.h" +//#define DEBUG_POT + class POTGenerator { static POTGenerator *singleton; - // Stores all translatable strings and the source files containing them. - OrderedHashMap<String, Set<String>> all_translation_strings; + + struct MsgidData { + String ctx; + String plural; + Set<String> locations; + }; + // Store msgid as key and the additional data around the msgid - if it's under a context, has plurals and its file locations. + OrderedHashMap<String, Vector<MsgidData>> all_translation_strings; void _write_to_pot(const String &p_file); + void _write_msgid(FileAccess *r_file, const String &p_id, bool p_plural); + void _add_new_msgid(const String &p_msgid, const String &p_context, const String &p_plural, const String &p_location); + +#ifdef DEBUG_POT + void _print_all_translation_strings(); +#endif public: static POTGenerator *get_singleton(); diff --git a/editor/project_export.cpp b/editor/project_export.cpp index a7be81414f..f45161d87b 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -397,7 +397,7 @@ void ProjectExportDialog::_patch_button_pressed(Object *p_item, int p_column, in patch_erase->set_text(vformat(TTR("Delete patch '%s' from list?"), patches[patch_index].get_file())); patch_erase->popup_centered(); } else { - patch_dialog->popup_centered_ratio(); + patch_dialog->popup_file_dialog(); } } @@ -876,7 +876,7 @@ void ProjectExportDialog::_tree_changed() { } void ProjectExportDialog::_export_pck_zip() { - export_pck_zip->popup_centered_ratio(); + export_pck_zip->popup_file_dialog(); } void ProjectExportDialog::_export_pck_zip_selected(const String &p_path) { @@ -952,7 +952,7 @@ void ProjectExportDialog::_export_project() { } export_project->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE); - export_project->popup_centered_ratio(); + export_project->popup_file_dialog(); } void ProjectExportDialog::_export_project_to_path(const String &p_path) { diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index cd85817622..a316756808 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -330,6 +330,7 @@ private: return; } } + String sp = p.simplify_path(); project_path->set_text(sp); _path_text_changed(sp); @@ -365,13 +366,13 @@ private: } else { fdialog->set_file_mode(FileDialog::FILE_MODE_OPEN_DIR); } - fdialog->popup_centered_ratio(); + fdialog->popup_file_dialog(); } void _browse_install_path() { fdialog_install->set_current_dir(install_path->get_text()); fdialog_install->set_file_mode(FileDialog::FILE_MODE_OPEN_DIR); - fdialog_install->popup_centered_ratio(); + fdialog_install->popup_file_dialog(); } void _create_folder() { @@ -475,10 +476,12 @@ private: set_message(TTR("Couldn't create project.godot in project path."), MESSAGE_ERROR); } else { f->store_line("[gd_resource type=\"Environment\" load_steps=2 format=2]"); + f->store_line(""); f->store_line("[sub_resource type=\"Sky\" id=1]"); + f->store_line(""); f->store_line("[resource]"); f->store_line("background_mode = 2"); - f->store_line("background_sky = SubResource( 1 )"); + f->store_line("sky = SubResource( 1 )"); memdelete(f); } } @@ -1010,7 +1013,7 @@ public: void update_dock_menu(); void load_projects(); void set_search_term(String p_search_term); - void set_order_option(ProjectListFilter::FilterOption p_option); + void set_order_option(int p_option); void sort_projects(); int get_project_count() const; void select_project(int p_index); @@ -1043,7 +1046,7 @@ private: static void load_project_data(const String &p_property_key, Item &p_item, bool p_favorite); String _search_term; - ProjectListFilter::FilterOption _order_option; + FilterOption _order_option; Set<String> _selected_project_keys; String _last_clicked; // Project key VBoxContainer *_scroll_children; @@ -1053,7 +1056,7 @@ private: }; struct ProjectListComparator { - ProjectListFilter::FilterOption order_option; + FilterOption order_option; // operator< _FORCE_INLINE_ bool operator()(const ProjectList::Item &a, const ProjectList::Item &b) const { @@ -1064,9 +1067,9 @@ struct ProjectListComparator { return false; } switch (order_option) { - case ProjectListFilter::FILTER_PATH: + case PATH: return a.project_key < b.project_key; - case ProjectListFilter::FILTER_EDIT_DATE: + case EDIT_DATE: return a.last_edited > b.last_edited; default: return a.project_name < b.project_name; @@ -1075,8 +1078,7 @@ struct ProjectListComparator { }; ProjectList::ProjectList() { - _order_option = ProjectListFilter::FILTER_EDIT_DATE; - + _order_option = FilterOption::NAME; _scroll_children = memnew(VBoxContainer); _scroll_children->set_h_size_flags(Control::SIZE_EXPAND_FILL); add_child(_scroll_children); @@ -1236,8 +1238,6 @@ void ProjectList::load_projects() { create_project_item_control(i); } - sort_projects(); - set_v_scroll(0); update_icons_async(); @@ -1389,12 +1389,13 @@ void ProjectList::set_search_term(String p_search_term) { _search_term = p_search_term; } -void ProjectList::set_order_option(ProjectListFilter::FilterOption p_option) { - if (_order_option != p_option) { - _order_option = p_option; - EditorSettings::get_singleton()->set("project_manager/sorting_order", (int)_order_option); - EditorSettings::get_singleton()->save(); - } +void ProjectList::set_order_option(int p_option) { + FilterOption selected = (FilterOption)p_option; + EditorSettings::get_singleton()->set("project_manager/sorting_order", p_option); + EditorSettings::get_singleton()->save(); + _order_option = selected; + + sort_projects(); } void ProjectList::sort_projects() { @@ -1796,6 +1797,9 @@ void ProjectList::_bind_methods() { void ProjectManager::_notification(int p_what) { switch (p_what) { case NOTIFICATION_ENTER_TREE: { + search_box->set_right_icon(get_theme_icon("Search", "EditorIcons")); + search_box->set_clear_button_enabled(true); + Engine::get_singleton()->set_editor_hint(false); } break; case NOTIFICATION_RESIZED: { @@ -1804,6 +1808,10 @@ void ProjectManager::_notification(int p_what) { } } break; case NOTIFICATION_READY: { + int default_sorting = (int)EditorSettings::get_singleton()->get("project_manager/sorting_order"); + filter_option->select(default_sorting); + _project_list->set_order_option(default_sorting); + if (_project_list->get_project_count() == 0 && StreamPeerSSL::is_available()) { open_templates->popup_centered(); } @@ -1811,7 +1819,7 @@ void ProjectManager::_notification(int p_what) { if (_project_list->get_project_count() >= 1) { // Focus on the search box immediately to allow the user // to search without having to reach for their mouse - project_filter->search_box->grab_focus(); + search_box->grab_focus(); } } break; case NOTIFICATION_VISIBILITY_CHANGED: { @@ -1831,7 +1839,7 @@ void ProjectManager::_dim_window() { // No transition is applied, as the effect needs to be visible immediately float c = 0.5f; Color dim_color = Color(c, c, c); - gui_base->set_modulate(dim_color); + set_modulate(dim_color); } void ProjectManager::_update_project_buttons() { @@ -1851,7 +1859,7 @@ void ProjectManager::_update_project_buttons() { rename_btn->set_disabled(empty_selection || is_missing_project_selected); run_btn->set_disabled(empty_selection || is_missing_project_selected); - erase_missing_btn->set_visible(_project_list->is_any_project_missing()); + erase_missing_btn->set_disabled(!_project_list->is_any_project_missing()); } void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) { @@ -1928,7 +1936,7 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) { } break; case KEY_F: { if (k->get_command()) { - this->project_filter->search_box->grab_focus(); + this->search_box->grab_focus(); } else { keycode_handled = false; } @@ -1945,8 +1953,7 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) { } void ProjectManager::_load_recent_projects() { - _project_list->set_order_option(project_order_filter->get_filter_option()); - _project_list->set_search_term(project_filter->get_search_term()); + _project_list->set_search_term(search_box->get_text().strip_edges()); _project_list->load_projects(); _update_project_buttons(); @@ -1968,7 +1975,7 @@ void ProjectManager::_on_projects_updated() { } void ProjectManager::_on_project_created(const String &dir) { - project_filter->clear(); + search_box->clear(); int i = _project_list->refresh_project(dir); _project_list->select_project(i); _project_list->ensure_project_visible(i); @@ -2111,7 +2118,6 @@ void ProjectManager::_run_project_confirm() { } } -// When you press the "Run" button void ProjectManager::_run_project() { const Set<String> &selected_list = _project_list->get_selected_project_keys(); @@ -2159,7 +2165,7 @@ void ProjectManager::_scan_begin(const String &p_base) { } void ProjectManager::_scan_projects() { - scan_dir->popup_centered_ratio(); + scan_dir->popup_file_dialog(); } void ProjectManager::_new_project() { @@ -2224,8 +2230,6 @@ void ProjectManager::_erase_missing_projects() { void ProjectManager::_language_selected(int p_id) { String lang = language_btn->get_item_metadata(p_id); EditorSettings::get_singleton()->set("interface/editor/editor_language", lang); - language_btn->set_text(lang); - language_btn->set_icon(get_theme_icon("Environment", "EditorIcons")); language_restart_ask->set_text(TTR("Language changed.\nThe interface will update after restarting the editor or project manager.")); language_restart_ask->popup_centered(); @@ -2302,13 +2306,14 @@ void ProjectManager::_scan_multiple_folders(PackedStringArray p_files) { } } -void ProjectManager::_on_order_option_changed() { - _project_list->set_order_option(project_order_filter->get_filter_option()); - _project_list->sort_projects(); +void ProjectManager::_on_order_option_changed(int p_idx) { + if (is_inside_tree()) { + _project_list->set_order_option(p_idx); + } } -void ProjectManager::_on_filter_option_changed() { - _project_list->set_search_term(project_filter->get_search_term()); +void ProjectManager::_on_search_term_changed(const String &p_term) { + _project_list->set_search_term(p_term); _project_list->sort_projects(); // Select the first visible project in the list. @@ -2339,7 +2344,6 @@ ProjectManager::ProjectManager() { { int display_scale = EditorSettings::get_singleton()->get("interface/editor/display_scale"); - float custom_display_scale = EditorSettings::get_singleton()->get("interface/editor/custom_display_scale"); switch (display_scale) { case 0: { @@ -2370,9 +2374,8 @@ ProjectManager::ProjectManager() { case 6: editor_set_scale(2.0); break; - default: { - editor_set_scale(custom_display_scale); + editor_set_scale(EditorSettings::get_singleton()->get("interface/editor/custom_display_scale")); } break; } @@ -2383,28 +2386,26 @@ ProjectManager::ProjectManager() { DisplayServer::get_singleton()->window_set_size(DisplayServer::get_singleton()->window_get_size() * MAX(1, EDSCALE)); } + String cp; + cp += 0xA9; + DisplayServer::get_singleton()->window_set_title(VERSION_NAME + String(" - ") + TTR("Project Manager") + " - " + cp + " 2007-2020 Juan Linietsky, Ariel Manzur & Godot Contributors"); + FileDialog::set_default_show_hidden_files(EditorSettings::get_singleton()->get("filesystem/file_dialog/show_hidden_files")); set_anchors_and_margins_preset(Control::PRESET_WIDE); set_theme(create_custom_theme()); - gui_base = memnew(Control); - add_child(gui_base); - gui_base->set_anchors_and_margins_preset(Control::PRESET_WIDE); + set_anchors_and_margins_preset(Control::PRESET_WIDE); Panel *panel = memnew(Panel); - gui_base->add_child(panel); + add_child(panel); panel->set_anchors_and_margins_preset(Control::PRESET_WIDE); - panel->add_theme_style_override("panel", gui_base->get_theme_stylebox("Background", "EditorStyles")); + panel->add_theme_style_override("panel", get_theme_stylebox("Background", "EditorStyles")); VBoxContainer *vb = memnew(VBoxContainer); panel->add_child(vb); vb->set_anchors_and_margins_preset(Control::PRESET_WIDE, Control::PRESET_MODE_MINSIZE, 8 * EDSCALE); - String cp; - cp += 0xA9; - DisplayServer::get_singleton()->window_set_title(VERSION_NAME + String(" - ") + TTR("Project Manager") + " - " + cp + " 2007-2020 Juan Linietsky, Ariel Manzur & Godot Contributors"); - Control *center_box = memnew(Control); center_box->set_v_size_flags(Control::SIZE_EXPAND_FILL); vb->add_child(center_box); @@ -2414,218 +2415,231 @@ ProjectManager::ProjectManager() { tabs->set_anchors_and_margins_preset(Control::PRESET_WIDE); tabs->set_tab_align(TabContainer::ALIGN_LEFT); - HBoxContainer *tree_hb = memnew(HBoxContainer); - projects_hb = tree_hb; - + HBoxContainer *projects_hb = memnew(HBoxContainer); projects_hb->set_name(TTR("Projects")); + tabs->add_child(projects_hb); - tabs->add_child(tree_hb); - - VBoxContainer *search_tree_vb = memnew(VBoxContainer); - tree_hb->add_child(search_tree_vb); - search_tree_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL); - - HBoxContainer *sort_filters = memnew(HBoxContainer); - Label *sort_label = memnew(Label); - sort_label->set_text(TTR("Sort:")); - sort_filters->add_child(sort_label); - Vector<String> sort_filter_titles; - sort_filter_titles.push_back(TTR("Name")); - sort_filter_titles.push_back(TTR("Path")); - sort_filter_titles.push_back(TTR("Last Edited")); - project_order_filter = memnew(ProjectListFilter); - project_order_filter->add_filter_option(); - project_order_filter->_setup_filters(sort_filter_titles); - project_order_filter->set_filter_size(150); - sort_filters->add_child(project_order_filter); - project_order_filter->connect("filter_changed", callable_mp(this, &ProjectManager::_on_order_option_changed)); - project_order_filter->set_custom_minimum_size(Size2(180, 10) * EDSCALE); - - int projects_sorting_order = (int)EditorSettings::get_singleton()->get("project_manager/sorting_order"); - project_order_filter->set_filter_option((ProjectListFilter::FilterOption)projects_sorting_order); - - sort_filters->add_spacer(true); - - project_filter = memnew(ProjectListFilter); - project_filter->add_search_box(); - project_filter->connect("filter_changed", callable_mp(this, &ProjectManager::_on_filter_option_changed)); - project_filter->set_custom_minimum_size(Size2(280, 10) * EDSCALE); - sort_filters->add_child(project_filter); - - search_tree_vb->add_child(sort_filters); - - PanelContainer *pc = memnew(PanelContainer); - pc->add_theme_style_override("panel", gui_base->get_theme_stylebox("bg", "Tree")); - search_tree_vb->add_child(pc); - pc->set_v_size_flags(Control::SIZE_EXPAND_FILL); - - _project_list = memnew(ProjectList); - _project_list->connect(ProjectList::SIGNAL_SELECTION_CHANGED, callable_mp(this, &ProjectManager::_update_project_buttons)); - _project_list->connect(ProjectList::SIGNAL_PROJECT_ASK_OPEN, callable_mp(this, &ProjectManager::_open_selected_projects_ask)); - pc->add_child(_project_list); - _project_list->set_enable_h_scroll(false); - - VBoxContainer *tree_vb = memnew(VBoxContainer); - tree_hb->add_child(tree_vb); - - Button *open = memnew(Button); - open->set_text(TTR("Edit")); - tree_vb->add_child(open); - open->connect("pressed", callable_mp(this, &ProjectManager::_open_selected_projects_ask)); - open_btn = open; - - Button *run = memnew(Button); - run->set_text(TTR("Run")); - tree_vb->add_child(run); - run->connect("pressed", callable_mp(this, &ProjectManager::_run_project)); - run_btn = run; - - tree_vb->add_child(memnew(HSeparator)); - - Button *scan = memnew(Button); - scan->set_text(TTR("Scan")); - tree_vb->add_child(scan); - scan->connect("pressed", callable_mp(this, &ProjectManager::_scan_projects)); - - tree_vb->add_child(memnew(HSeparator)); - - scan_dir = memnew(FileDialog); - scan_dir->set_access(FileDialog::ACCESS_FILESYSTEM); - scan_dir->set_file_mode(FileDialog::FILE_MODE_OPEN_DIR); - scan_dir->set_title(TTR("Select a Folder to Scan")); // must be after mode or it's overridden - scan_dir->set_current_dir(EditorSettings::get_singleton()->get("filesystem/directories/default_project_path")); - gui_base->add_child(scan_dir); - scan_dir->connect("dir_selected", callable_mp(this, &ProjectManager::_scan_begin)); - - Button *create = memnew(Button); - create->set_text(TTR("New Project")); - tree_vb->add_child(create); - create->connect("pressed", callable_mp(this, &ProjectManager::_new_project)); - - Button *import = memnew(Button); - import->set_text(TTR("Import")); - tree_vb->add_child(import); - import->connect("pressed", callable_mp(this, &ProjectManager::_import_project)); - - Button *rename = memnew(Button); - rename->set_text(TTR("Rename")); - tree_vb->add_child(rename); - rename->connect("pressed", callable_mp(this, &ProjectManager::_rename_project)); - rename_btn = rename; - - Button *erase = memnew(Button); - erase->set_text(TTR("Remove")); - tree_vb->add_child(erase); - erase->connect("pressed", callable_mp(this, &ProjectManager::_erase_project)); - erase_btn = erase; - - Button *erase_missing = memnew(Button); - erase_missing->set_text(TTR("Remove Missing")); - tree_vb->add_child(erase_missing); - erase_missing->connect("pressed", callable_mp(this, &ProjectManager::_erase_missing_projects)); - erase_missing_btn = erase_missing; - - tree_vb->add_spacer(); + { + // Projects + search bar + VBoxContainer *search_tree_vb = memnew(VBoxContainer); + projects_hb->add_child(search_tree_vb); + search_tree_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL); - if (StreamPeerSSL::is_available()) { - asset_library = memnew(EditorAssetLibrary(true)); - asset_library->set_name(TTR("Templates")); - tabs->add_child(asset_library); - asset_library->connect("install_asset", callable_mp(this, &ProjectManager::_install_project)); - } else { - WARN_PRINT("Asset Library not available, as it requires SSL to work."); - } + HBoxContainer *hb = memnew(HBoxContainer); + hb->set_h_size_flags(Control::SIZE_EXPAND_FILL); + search_tree_vb->add_child(hb); - HBoxContainer *settings_hb = memnew(HBoxContainer); - settings_hb->set_alignment(BoxContainer::ALIGN_END); - settings_hb->set_h_grow_direction(Control::GROW_DIRECTION_BEGIN); + search_box = memnew(LineEdit); + search_box->set_placeholder(TTR("Search")); + search_box->set_tooltip(TTR("The search box filters projects by name and last path component.\nTo filter projects by name and full path, the query must contain at least one `/` character.")); + search_box->connect("text_changed", callable_mp(this, &ProjectManager::_on_search_term_changed)); + search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); + hb->add_child(search_box); - Label *version_label = memnew(Label); - String hash = String(VERSION_HASH); - if (hash.length() != 0) { - hash = "." + hash.left(9); - } - version_label->set_text("v" VERSION_FULL_BUILD "" + hash); - // Fade out the version label to be less prominent, but still readable - version_label->set_self_modulate(Color(1, 1, 1, 0.6)); - version_label->set_align(Label::ALIGN_CENTER); - settings_hb->add_child(version_label); + hb->add_spacer(); - language_btn = memnew(OptionButton); - language_btn->set_flat(true); - language_btn->set_focus_mode(Control::FOCUS_NONE); + Label *sort_label = memnew(Label); + sort_label->set_text(TTR("Sort:")); + hb->add_child(sort_label); - Vector<String> editor_languages; - List<PropertyInfo> editor_settings_properties; - EditorSettings::get_singleton()->get_property_list(&editor_settings_properties); - for (List<PropertyInfo>::Element *E = editor_settings_properties.front(); E; E = E->next()) { - PropertyInfo &pi = E->get(); - if (pi.name == "interface/editor/editor_language") { - editor_languages = pi.hint_string.split(","); - } - } - String current_lang = EditorSettings::get_singleton()->get("interface/editor/editor_language"); - for (int i = 0; i < editor_languages.size(); i++) { - String lang = editor_languages[i]; - String lang_name = TranslationServer::get_singleton()->get_locale_name(lang); - language_btn->add_item(lang_name + " [" + lang + "]", i); - language_btn->set_item_metadata(i, lang); - if (current_lang == lang) { - language_btn->select(i); - language_btn->set_text(lang); - } - } - language_btn->set_icon(get_theme_icon("Environment", "EditorIcons")); + filter_option = memnew(OptionButton); + filter_option->set_clip_text(true); + filter_option->set_custom_minimum_size(Size2(150 * EDSCALE, 10 * EDSCALE)); + filter_option->connect("item_selected", callable_mp(this, &ProjectManager::_on_order_option_changed)); + hb->add_child(filter_option); - settings_hb->add_child(language_btn); - language_btn->connect("item_selected", callable_mp(this, &ProjectManager::_language_selected)); + Vector<String> sort_filter_titles; + sort_filter_titles.push_back(TTR("Name")); + sort_filter_titles.push_back(TTR("Path")); + sort_filter_titles.push_back(TTR("Last Edited")); - center_box->add_child(settings_hb); - settings_hb->set_anchors_and_margins_preset(Control::PRESET_TOP_RIGHT); + for (int i = 0; i < sort_filter_titles.size(); i++) { + filter_option->add_item(sort_filter_titles[i]); + } - ////////////////////////////////////////////////////////////// + PanelContainer *pc = memnew(PanelContainer); + pc->add_theme_style_override("panel", get_theme_stylebox("bg", "Tree")); + pc->set_v_size_flags(Control::SIZE_EXPAND_FILL); + search_tree_vb->add_child(pc); - language_restart_ask = memnew(ConfirmationDialog); - language_restart_ask->get_ok()->set_text(TTR("Restart Now")); - language_restart_ask->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_restart_confirm)); - language_restart_ask->get_cancel()->set_text(TTR("Continue")); - gui_base->add_child(language_restart_ask); + _project_list = memnew(ProjectList); + _project_list->connect(ProjectList::SIGNAL_SELECTION_CHANGED, callable_mp(this, &ProjectManager::_update_project_buttons)); + _project_list->connect(ProjectList::SIGNAL_PROJECT_ASK_OPEN, callable_mp(this, &ProjectManager::_open_selected_projects_ask)); + _project_list->set_enable_h_scroll(false); + pc->add_child(_project_list); + } - erase_missing_ask = memnew(ConfirmationDialog); - erase_missing_ask->get_ok()->set_text(TTR("Remove All")); - erase_missing_ask->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_erase_missing_projects_confirm)); - gui_base->add_child(erase_missing_ask); + { + // Project tab side bar + VBoxContainer *tree_vb = memnew(VBoxContainer); + tree_vb->set_custom_minimum_size(Size2(120, 120)); + projects_hb->add_child(tree_vb); + + Button *create = memnew(Button); + create->set_text(TTR("New Project")); + create->connect("pressed", callable_mp(this, &ProjectManager::_new_project)); + tree_vb->add_child(create); + + Button *import = memnew(Button); + import->set_text(TTR("Import")); + import->connect("pressed", callable_mp(this, &ProjectManager::_import_project)); + tree_vb->add_child(import); + + Button *scan = memnew(Button); + scan->set_text(TTR("Scan")); + scan->connect("pressed", callable_mp(this, &ProjectManager::_scan_projects)); + tree_vb->add_child(scan); + + tree_vb->add_child(memnew(HSeparator)); + + open_btn = memnew(Button); + open_btn->set_text(TTR("Edit")); + open_btn->connect("pressed", callable_mp(this, &ProjectManager::_open_selected_projects_ask)); + tree_vb->add_child(open_btn); + + run_btn = memnew(Button); + run_btn->set_text(TTR("Run")); + run_btn->connect("pressed", callable_mp(this, &ProjectManager::_run_project)); + tree_vb->add_child(run_btn); + + rename_btn = memnew(Button); + rename_btn->set_text(TTR("Rename")); + rename_btn->connect("pressed", callable_mp(this, &ProjectManager::_rename_project)); + tree_vb->add_child(rename_btn); + + erase_btn = memnew(Button); + erase_btn->set_text(TTR("Remove")); + erase_btn->connect("pressed", callable_mp(this, &ProjectManager::_erase_project)); + tree_vb->add_child(erase_btn); + + erase_missing_btn = memnew(Button); + erase_missing_btn->set_text(TTR("Remove Missing")); + erase_missing_btn->connect("pressed", callable_mp(this, &ProjectManager::_erase_missing_projects)); + tree_vb->add_child(erase_missing_btn); + } - erase_ask = memnew(ConfirmationDialog); - erase_ask->get_ok()->set_text(TTR("Remove")); - erase_ask->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_erase_project_confirm)); - gui_base->add_child(erase_ask); + { + // Version info and language options + HBoxContainer *settings_hb = memnew(HBoxContainer); + settings_hb->set_alignment(BoxContainer::ALIGN_END); + settings_hb->set_h_grow_direction(Control::GROW_DIRECTION_BEGIN); + + Label *version_label = memnew(Label); + String hash = String(VERSION_HASH); + if (hash.length() != 0) { + hash = "." + hash.left(9); + } + version_label->set_text("v" VERSION_FULL_BUILD "" + hash); + version_label->set_self_modulate(Color(1, 1, 1, 0.6)); + version_label->set_align(Label::ALIGN_CENTER); + settings_hb->add_child(version_label); + + language_btn = memnew(OptionButton); + language_btn->set_flat(true); + language_btn->set_icon(get_theme_icon("Environment", "EditorIcons")); + language_btn->set_focus_mode(Control::FOCUS_NONE); + language_btn->connect("item_selected", callable_mp(this, &ProjectManager::_language_selected)); + + Vector<String> editor_languages; + List<PropertyInfo> editor_settings_properties; + EditorSettings::get_singleton()->get_property_list(&editor_settings_properties); + for (List<PropertyInfo>::Element *E = editor_settings_properties.front(); E; E = E->next()) { + PropertyInfo &pi = E->get(); + if (pi.name == "interface/editor/editor_language") { + editor_languages = pi.hint_string.split(","); + break; + } + } - multi_open_ask = memnew(ConfirmationDialog); - multi_open_ask->get_ok()->set_text(TTR("Edit")); - multi_open_ask->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_open_selected_projects)); - gui_base->add_child(multi_open_ask); + String current_lang = EditorSettings::get_singleton()->get("interface/editor/editor_language"); + language_btn->set_text(current_lang); - multi_run_ask = memnew(ConfirmationDialog); - multi_run_ask->get_ok()->set_text(TTR("Run")); - multi_run_ask->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_run_project_confirm)); - gui_base->add_child(multi_run_ask); + for (int i = 0; i < editor_languages.size(); i++) { + String lang = editor_languages[i]; + String lang_name = TranslationServer::get_singleton()->get_locale_name(lang); + language_btn->add_item(lang_name + " [" + lang + "]", i); + language_btn->set_item_metadata(i, lang); + if (current_lang == lang) { + language_btn->select(i); + } + } - multi_scan_ask = memnew(ConfirmationDialog); - multi_scan_ask->get_ok()->set_text(TTR("Scan")); - gui_base->add_child(multi_scan_ask); + settings_hb->add_child(language_btn); + center_box->add_child(settings_hb); + settings_hb->set_anchors_and_margins_preset(Control::PRESET_TOP_RIGHT); + } - ask_update_settings = memnew(ConfirmationDialog); - ask_update_settings->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_confirm_update_settings)); - gui_base->add_child(ask_update_settings); + if (StreamPeerSSL::is_available()) { + asset_library = memnew(EditorAssetLibrary(true)); + asset_library->set_name(TTR("Templates")); + tabs->add_child(asset_library); + asset_library->connect("install_asset", callable_mp(this, &ProjectManager::_install_project)); + } else { + WARN_PRINT("Asset Library not available, as it requires SSL to work."); + } - OS::get_singleton()->set_low_processor_usage_mode(true); + { + // Dialogs + language_restart_ask = memnew(ConfirmationDialog); + language_restart_ask->get_ok()->set_text(TTR("Restart Now")); + language_restart_ask->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_restart_confirm)); + language_restart_ask->get_cancel()->set_text(TTR("Continue")); + add_child(language_restart_ask); + + scan_dir = memnew(FileDialog); + scan_dir->set_access(FileDialog::ACCESS_FILESYSTEM); + scan_dir->set_file_mode(FileDialog::FILE_MODE_OPEN_DIR); + scan_dir->set_title(TTR("Select a Folder to Scan")); // must be after mode or it's overridden + scan_dir->set_current_dir(EditorSettings::get_singleton()->get("filesystem/directories/default_project_path")); + add_child(scan_dir); + scan_dir->connect("dir_selected", callable_mp(this, &ProjectManager::_scan_begin)); + + erase_missing_ask = memnew(ConfirmationDialog); + erase_missing_ask->get_ok()->set_text(TTR("Remove All")); + erase_missing_ask->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_erase_missing_projects_confirm)); + add_child(erase_missing_ask); + + erase_ask = memnew(ConfirmationDialog); + erase_ask->get_ok()->set_text(TTR("Remove")); + erase_ask->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_erase_project_confirm)); + add_child(erase_ask); + + multi_open_ask = memnew(ConfirmationDialog); + multi_open_ask->get_ok()->set_text(TTR("Edit")); + multi_open_ask->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_open_selected_projects)); + add_child(multi_open_ask); + + multi_run_ask = memnew(ConfirmationDialog); + multi_run_ask->get_ok()->set_text(TTR("Run")); + multi_run_ask->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_run_project_confirm)); + add_child(multi_run_ask); + + multi_scan_ask = memnew(ConfirmationDialog); + multi_scan_ask->get_ok()->set_text(TTR("Scan")); + add_child(multi_scan_ask); + + ask_update_settings = memnew(ConfirmationDialog); + ask_update_settings->get_ok()->connect("pressed", callable_mp(this, &ProjectManager::_confirm_update_settings)); + add_child(ask_update_settings); + + npdialog = memnew(ProjectDialog); + npdialog->connect("projects_updated", callable_mp(this, &ProjectManager::_on_projects_updated)); + npdialog->connect("project_created", callable_mp(this, &ProjectManager::_on_project_created)); + add_child(npdialog); + + run_error_diag = memnew(AcceptDialog); + run_error_diag->set_title(TTR("Can't run project")); + add_child(run_error_diag); - npdialog = memnew(ProjectDialog); - gui_base->add_child(npdialog); + dialog_error = memnew(AcceptDialog); + add_child(dialog_error); - npdialog->connect("projects_updated", callable_mp(this, &ProjectManager::_on_projects_updated)); - npdialog->connect("project_created", callable_mp(this, &ProjectManager::_on_project_created)); + open_templates = memnew(ConfirmationDialog); + open_templates->set_text(TTR("You currently don't have any projects.\nWould you like to explore official example projects in the Asset Library?")); + open_templates->get_ok()->set_text(TTR("Open Asset Library")); + open_templates->connect("confirmed", callable_mp(this, &ProjectManager::_open_asset_library)); + add_child(open_templates); + } _load_recent_projects(); @@ -2635,18 +2649,7 @@ ProjectManager::ProjectManager() { SceneTree::get_singleton()->get_root()->connect("files_dropped", callable_mp(this, &ProjectManager::_files_dropped)); - run_error_diag = memnew(AcceptDialog); - gui_base->add_child(run_error_diag); - run_error_diag->set_title(TTR("Can't run project")); - - dialog_error = memnew(AcceptDialog); - gui_base->add_child(dialog_error); - - open_templates = memnew(ConfirmationDialog); - open_templates->set_text(TTR("You currently don't have any projects.\nWould you like to explore official example projects in the Asset Library?")); - open_templates->get_ok()->set_text(TTR("Open Asset Library")); - open_templates->connect("confirmed", callable_mp(this, &ProjectManager::_open_asset_library)); - add_child(open_templates); + OS::get_singleton()->set_low_processor_usage_mode(true); } ProjectManager::~ProjectManager() { @@ -2654,82 +2657,3 @@ ProjectManager::~ProjectManager() { EditorSettings::destroy(); } } - -void ProjectListFilter::_setup_filters(Vector<String> options) { - filter_option->clear(); - for (int i = 0; i < options.size(); i++) { - filter_option->add_item(options[i]); - } -} - -void ProjectListFilter::_search_text_changed(const String &p_newtext) { - emit_signal("filter_changed"); -} - -String ProjectListFilter::get_search_term() { - return search_box->get_text().strip_edges(); -} - -ProjectListFilter::FilterOption ProjectListFilter::get_filter_option() { - return _current_filter; -} - -void ProjectListFilter::set_filter_option(FilterOption option) { - filter_option->select((int)option); - _filter_option_selected(0); -} - -void ProjectListFilter::_filter_option_selected(int p_idx) { - FilterOption selected = (FilterOption)(filter_option->get_selected()); - if (_current_filter != selected) { - _current_filter = selected; - if (is_inside_tree()) { - emit_signal("filter_changed"); - } - } -} - -void ProjectListFilter::_notification(int p_what) { - if (p_what == NOTIFICATION_ENTER_TREE && has_search_box) { - search_box->set_right_icon(get_theme_icon("Search", "EditorIcons")); - search_box->set_clear_button_enabled(true); - } -} - -void ProjectListFilter::_bind_methods() { - ADD_SIGNAL(MethodInfo("filter_changed")); -} - -void ProjectListFilter::add_filter_option() { - filter_option = memnew(OptionButton); - filter_option->set_clip_text(true); - filter_option->connect("item_selected", callable_mp(this, &ProjectListFilter::_filter_option_selected)); - add_child(filter_option); -} - -void ProjectListFilter::add_search_box() { - search_box = memnew(LineEdit); - search_box->set_placeholder(TTR("Search")); - search_box->set_tooltip( - TTR("The search box filters projects by name and last path component.\nTo filter projects by name and full path, the query must contain at least one `/` character.")); - search_box->connect("text_changed", callable_mp(this, &ProjectListFilter::_search_text_changed)); - search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); - add_child(search_box); - - has_search_box = true; -} - -void ProjectListFilter::set_filter_size(int h_size) { - filter_option->set_custom_minimum_size(Size2(h_size * EDSCALE, 10 * EDSCALE)); -} - -ProjectListFilter::ProjectListFilter() { - _current_filter = FILTER_NAME; - has_search_box = false; -} - -void ProjectListFilter::clear() { - if (has_search_box) { - search_box->clear(); - } -} diff --git a/editor/project_manager.h b/editor/project_manager.h index 66b38d0746..407dba0c94 100644 --- a/editor/project_manager.h +++ b/editor/project_manager.h @@ -39,22 +39,31 @@ class ProjectDialog; class ProjectList; -class ProjectListFilter; + +enum FilterOption { + NAME, + PATH, + EDIT_DATE, +}; class ProjectManager : public Control { GDCLASS(ProjectManager, Control); - Button *erase_btn; - Button *erase_missing_btn; + TabContainer *tabs; + + ProjectList *_project_list; + + LineEdit *search_box; + OptionButton *filter_option; + + Button *run_btn; Button *open_btn; Button *rename_btn; - Button *run_btn; + Button *erase_btn; + Button *erase_missing_btn; EditorAssetLibrary *asset_library; - ProjectListFilter *project_filter; - ProjectListFilter *project_order_filter; - FileDialog *scan_dir; ConfirmationDialog *language_restart_ask; ConfirmationDialog *erase_ask; @@ -64,18 +73,12 @@ class ProjectManager : public Control { ConfirmationDialog *multi_scan_ask; ConfirmationDialog *ask_update_settings; ConfirmationDialog *open_templates; + AcceptDialog *run_error_diag; AcceptDialog *dialog_error; ProjectDialog *npdialog; - HBoxContainer *projects_hb; - TabContainer *tabs; - ProjectList *_project_list; - OptionButton *language_btn; - Control *gui_base; - - bool importing; void _open_asset_library(); void _scan_projects(); @@ -94,14 +97,13 @@ class ProjectManager : public Control { void _language_selected(int p_id); void _restart_confirm(); void _exit_dialog(); - void _scan_begin(const String &p_base); - void _confirm_update_settings(); void _load_recent_projects(); void _on_project_created(const String &dir); void _on_projects_updated(); - void _update_scroll_position(const String &dir); + void _scan_multiple_folders(PackedStringArray p_files); + void _scan_begin(const String &p_base); void _scan_dir(const String &path, List<String> *r_projects); void _install_project(const String &p_zip_path, const String &p_title); @@ -109,10 +111,9 @@ class ProjectManager : public Control { void _dim_window(); void _unhandled_input(const Ref<InputEvent> &p_ev); void _files_dropped(PackedStringArray p_files, int p_screen); - void _scan_multiple_folders(PackedStringArray p_files); - void _on_order_option_changed(); - void _on_filter_option_changed(); + void _on_order_option_changed(int p_idx); + void _on_search_term_changed(const String &p_term); protected: void _notification(int p_what); @@ -123,41 +124,4 @@ public: ~ProjectManager(); }; -class ProjectListFilter : public HBoxContainer { - GDCLASS(ProjectListFilter, HBoxContainer); - -public: - enum FilterOption { - FILTER_NAME, - FILTER_PATH, - FILTER_EDIT_DATE, - }; - -private: - friend class ProjectManager; - - OptionButton *filter_option; - LineEdit *search_box; - bool has_search_box; - FilterOption _current_filter; - - void _search_text_changed(const String &p_newtext); - void _filter_option_selected(int p_idx); - -protected: - void _notification(int p_what); - static void _bind_methods(); - -public: - void _setup_filters(Vector<String> options); - void add_filter_option(); - void add_search_box(); - void set_filter_size(int h_size); - String get_search_term(); - FilterOption get_filter_option(); - void set_filter_option(FilterOption); - ProjectListFilter(); - void clear(); -}; - #endif // PROJECT_MANAGER_H diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp index 0257e31ee7..b6621d0d1e 100644 --- a/editor/project_settings_editor.cpp +++ b/editor/project_settings_editor.cpp @@ -30,8 +30,6 @@ #include "project_settings_editor.h" -#include "core/global_constants.h" -#include "core/os/keyboard.h" #include "core/project_settings.h" #include "editor/editor_export.h" #include "editor/editor_node.h" @@ -48,175 +46,163 @@ void ProjectSettingsEditor::popup_project_settings() { popup_centered_clamped(Size2(900, 700) * EDSCALE, 0.8); } - globals_editor->update_category_list(); + _add_feature_overrides(); + inspector->update_category_list(); + localization_editor->update_translations(); autoload_settings->update_autoload(); plugin_settings->update_plugins(); - set_process_unhandled_input(true); } -void ProjectSettingsEditor::_unhandled_input(const Ref<InputEvent> &p_event) { - const Ref<InputEventKey> k = p_event; - - if (k.is_valid() && k->is_pressed()) { - if (k->get_keycode_with_modifiers() == (KEY_MASK_CMD | KEY_F)) { - if (search_button->is_pressed()) { - search_box->grab_focus(); - search_box->select_all(); - } else { - // This toggles the search bar display while giving the button its "pressed" appearance - search_button->set_pressed(true); - } - - set_input_as_handled(); - } - } +void ProjectSettingsEditor::queue_save() { + timer->start(); } -void ProjectSettingsEditor::_notification(int p_what) { - switch (p_what) { - case NOTIFICATION_VISIBILITY_CHANGED: { - if (!is_visible()) { - EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "project_settings", Rect2(get_position(), get_size())); - set_process_unhandled_input(false); - } - } break; - case NOTIFICATION_ENTER_TREE: { - globals_editor->edit(ProjectSettings::get_singleton()); - - search_button->set_icon(get_theme_icon("Search", "EditorIcons")); - search_box->set_right_icon(get_theme_icon("Search", "EditorIcons")); - search_box->set_clear_button_enabled(true); - - restart_close_button->set_icon(get_theme_icon("Close", "EditorIcons")); - restart_container->add_theme_style_override("panel", get_theme_stylebox("bg", "Tree")); - restart_icon->set_texture(get_theme_icon("StatusWarning", "EditorIcons")); - restart_label->add_theme_color_override("font_color", get_theme_color("warning_color", "Editor")); - - } break; - case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - search_button->set_icon(get_theme_icon("Search", "EditorIcons")); - search_box->set_right_icon(get_theme_icon("Search", "EditorIcons")); - search_box->set_clear_button_enabled(true); - } break; - } +void ProjectSettingsEditor::set_plugins_page() { + tab_container->set_current_tab(plugin_settings->get_index()); } void ProjectSettingsEditor::update_plugins() { plugin_settings->update_plugins(); } -void ProjectSettingsEditor::_item_selected(const String &p_path) { - const String &selected_path = p_path; - if (selected_path == String()) { - return; - } - category->set_text(globals_editor->get_current_section()); - property->set_text(selected_path); - popup_copy_to_feature->set_disabled(false); +void ProjectSettingsEditor::_setting_edited(const String &p_name) { + queue_save(); } -void ProjectSettingsEditor::_item_adds(String) { - _item_add(); +void ProjectSettingsEditor::_advanced_pressed() { + if (advanced->is_pressed()) { + _update_advanced_bar(); + advanced_bar->show(); + } else { + advanced_bar->hide(); + } } -void ProjectSettingsEditor::_item_add() { - // Initialize the property with the default value for the given type. - // The type list starts at 1 (as we exclude Nil), so add 1 to the selected value. - Callable::CallError ce; - const Variant value = Variant::construct(Variant::Type(type->get_selected() + 1), nullptr, 0, ce); - - String catname = category->get_text().strip_edges(); - String propname = property->get_text().strip_edges(); - - if (propname.empty()) { +void ProjectSettingsEditor::_setting_selected(const String &p_path) { + if (p_path == String()) { return; } - if (catname.empty()) { - catname = "global"; - } + category_box->set_text(inspector->get_current_section()); + property_box->set_text(p_path); - String name = catname + "/" + propname; + if (advanced_bar->is_visible()) { + _update_advanced_bar(); // set_text doesn't trigger text_changed + } +} - undo_redo->create_action(TTR("Add Global Property")); +void ProjectSettingsEditor::_add_setting() { + String setting = _get_setting_name(); - undo_redo->add_do_property(ProjectSettings::get_singleton(), name, value); + // Initialize the property with the default value for the given type. + // The type list starts at 1 (as we exclude Nil), so add 1 to the selected value. + Callable::CallError ce; + const Variant value = Variant::construct(Variant::Type(type->get_selected() + 1), nullptr, 0, ce); - if (ProjectSettings::get_singleton()->has_setting(name)) { - undo_redo->add_undo_property(ProjectSettings::get_singleton(), name, ProjectSettings::get_singleton()->get(name)); - } else { - undo_redo->add_undo_property(ProjectSettings::get_singleton(), name, Variant()); - } + undo_redo->create_action(TTR("Add Project Setting")); + undo_redo->add_do_property(ps, setting, value); + undo_redo->add_undo_property(ps, setting, ps->has_setting(setting) ? ps->get(setting) : Variant()); - undo_redo->add_do_method(globals_editor, "update_category_list"); - undo_redo->add_undo_method(globals_editor, "update_category_list"); - undo_redo->add_do_method(this, "_settings_changed"); - undo_redo->add_undo_method(this, "_settings_changed"); + undo_redo->add_do_method(inspector, "update_category_list"); + undo_redo->add_undo_method(inspector, "update_category_list"); + undo_redo->add_do_method(this, "queue_save"); + undo_redo->add_undo_method(this, "queue_save"); undo_redo->commit_action(); - globals_editor->set_current_section(catname); - - _settings_changed(); + inspector->set_current_section(setting.get_slice("/", 1)); } -void ProjectSettingsEditor::_item_del() { - String path = globals_editor->get_inspector()->get_selected_path(); - if (path == String()) { - EditorNode::get_singleton()->show_warning(TTR("Select a setting item first!")); - return; - } - - String property = globals_editor->get_current_section().plus_file(path); - - if (!ProjectSettings::get_singleton()->has_setting(property)) { - EditorNode::get_singleton()->show_warning(vformat(TTR("No property '%s' exists."), property)); - return; - } +void ProjectSettingsEditor::_delete_setting(bool p_confirmed) { + String setting = _get_setting_name(); + Variant value = ps->get(setting); + int order = ps->get_order(setting); - if (ProjectSettings::get_singleton()->get_order(property) < ProjectSettings::NO_BUILTIN_ORDER_BASE) { - EditorNode::get_singleton()->show_warning(vformat(TTR("Setting '%s' is internal, and it can't be deleted."), property)); + if (!p_confirmed) { + del_confirmation->set_text(vformat(TTR("Are you sure you want to delete '%s'?"), setting)); + del_confirmation->popup_centered(); return; } undo_redo->create_action(TTR("Delete Item")); - Variant value = ProjectSettings::get_singleton()->get(property); - int order = ProjectSettings::get_singleton()->get_order(property); + undo_redo->add_do_method(ps, "clear", setting); + undo_redo->add_undo_method(ps, "set", setting, value); + undo_redo->add_undo_method(ps, "set_order", setting, order); - undo_redo->add_do_method(ProjectSettings::get_singleton(), "clear", property); - undo_redo->add_undo_method(ProjectSettings::get_singleton(), "set", property, value); - undo_redo->add_undo_method(ProjectSettings::get_singleton(), "set_order", property, order); - - undo_redo->add_do_method(globals_editor, "update_category_list"); - undo_redo->add_undo_method(globals_editor, "update_category_list"); - - undo_redo->add_do_method(this, "_settings_changed"); - undo_redo->add_undo_method(this, "_settings_changed"); + undo_redo->add_do_method(inspector, "update_category_list"); + undo_redo->add_undo_method(inspector, "update_category_list"); + undo_redo->add_do_method(this, "queue_save"); + undo_redo->add_undo_method(this, "queue_save"); undo_redo->commit_action(); + + property_box->clear(); } -void ProjectSettingsEditor::_save() { - Error err = ProjectSettings::get_singleton()->save(); - message->set_text(err != OK ? TTR("Error saving settings.") : TTR("Settings saved OK.")); - message->popup_centered(Size2(300, 100) * EDSCALE); +void ProjectSettingsEditor::_text_field_changed(const String &p_text) { + _update_advanced_bar(); } -void ProjectSettingsEditor::_settings_prop_edited(const String &p_name) { - // Method needed to discard the mandatory argument of the property_edited signal - _settings_changed(); +void ProjectSettingsEditor::_feature_selected(int p_index) { + _update_advanced_bar(); } -void ProjectSettingsEditor::_settings_changed() { - timer->start(); +void ProjectSettingsEditor::_update_advanced_bar() { + const String property_text = property_box->get_text().strip_edges(); + + String error_msg = ""; + bool disable_add = true; + bool disable_del = true; + + if (!property_box->get_text().empty()) { + const String setting = _get_setting_name(); + bool setting_exists = ps->has_setting(setting); + if (setting_exists) { + error_msg = TTR(" - Cannot add already existing setting."); + + disable_del = ps->is_builtin_setting(setting); + if (disable_del) { + String msg = TTR(" - Cannot delete built-in setting."); + error_msg += (error_msg == "") ? msg : "\n" + msg; + } + } else { + bool bad_category = false; // Allow empty string. + Vector<String> cats = category_box->get_text().strip_edges().split("/"); + for (int i = 0; i < cats.size(); i++) { + if (!cats[i].is_valid_identifier()) { + bad_category = true; + error_msg = TTR(" - Invalid category name."); + break; + } + } + + disable_add = bad_category; + + if (!property_text.is_valid_identifier()) { + disable_add = true; + String msg = TTR(" - Invalid property name."); + error_msg += (error_msg == "") ? msg : "\n" + msg; + } + } + } + + add_button->set_disabled(disable_add); + del_button->set_disabled(disable_del); + + error_label->set_text(error_msg); + error_label->set_visible(error_msg != ""); } -void ProjectSettingsEditor::queue_save() { - _settings_changed(); +String ProjectSettingsEditor::_get_setting_name() const { + const String cat = category_box->get_text(); + const String name = (cat.empty() ? "global" : cat.strip_edges()).plus_file(property_box->get_text().strip_edges()); + const String feature = feature_override->get_item_text(feature_override->get_selected()); + + return (feature == "") ? name : (name + "." + feature); } -void ProjectSettingsEditor::_copy_to_platform_about_to_show() { +void ProjectSettingsEditor::_add_feature_overrides() { Set<String> presets; presets.insert("bptc"); @@ -230,25 +216,26 @@ void ProjectSettingsEditor::_copy_to_platform_about_to_show() { presets.insert("standalone"); presets.insert("32"); presets.insert("64"); - // Not available as an export platform yet, so it needs to be added manually - presets.insert("Server"); + presets.insert("Server"); // Not available as an export platform yet, so it needs to be added manually + + EditorExport *ee = EditorExport::get_singleton(); - for (int i = 0; i < EditorExport::get_singleton()->get_export_platform_count(); i++) { + for (int i = 0; i < ee->get_export_platform_count(); i++) { List<String> p; - EditorExport::get_singleton()->get_export_platform(i)->get_platform_features(&p); + ee->get_export_platform(i)->get_platform_features(&p); for (List<String>::Element *E = p.front(); E; E = E->next()) { presets.insert(E->get()); } } - for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); i++) { + for (int i = 0; i < ee->get_export_preset_count(); i++) { List<String> p; - EditorExport::get_singleton()->get_export_preset(i)->get_platform()->get_preset_features(EditorExport::get_singleton()->get_export_preset(i), &p); + ee->get_export_preset(i)->get_platform()->get_preset_features(ee->get_export_preset(i), &p); for (List<String>::Element *E = p.front(); E; E = E->next()) { presets.insert(E->get()); } - String custom = EditorExport::get_singleton()->get_export_preset(i)->get_custom_features(); + String custom = ee->get_export_preset(i)->get_custom_features(); Vector<String> custom_list = custom.split(","); for (int j = 0; j < custom_list.size(); j++) { String f = custom_list[j].strip_edges(); @@ -258,70 +245,14 @@ void ProjectSettingsEditor::_copy_to_platform_about_to_show() { } } - popup_copy_to_feature->get_popup()->clear(); - int id = 0; + feature_override->clear(); + feature_override->add_item("", 0); // So it is always on top. + int id = 1; for (Set<String>::Element *E = presets.front(); E; E = E->next()) { - popup_copy_to_feature->get_popup()->add_item(E->get(), id++); + feature_override->add_item(E->get(), id++); } } -void ProjectSettingsEditor::_copy_to_platform(int p_which) { - String path = globals_editor->get_inspector()->get_selected_path(); - if (path == String()) { - EditorNode::get_singleton()->show_warning(TTR("Select a setting item first!")); - return; - } - - String property = globals_editor->get_current_section().plus_file(path); - - undo_redo->create_action(TTR("Override for Feature")); - - Variant value = ProjectSettings::get_singleton()->get(property); - if (property.find(".") != -1) { //overwriting overwrite, keep overwrite - undo_redo->add_do_method(ProjectSettings::get_singleton(), "clear", property); - undo_redo->add_undo_method(ProjectSettings::get_singleton(), "set", property, value); - } - - String feature = popup_copy_to_feature->get_popup()->get_item_text(p_which); - String new_path = property + "." + feature; - - undo_redo->add_do_method(ProjectSettings::get_singleton(), "set", new_path, value); - if (ProjectSettings::get_singleton()->has_setting(new_path)) { - undo_redo->add_undo_method(ProjectSettings::get_singleton(), "set", new_path, ProjectSettings::get_singleton()->get(new_path)); - } - - undo_redo->add_do_method(globals_editor, "update_category_list"); - undo_redo->add_undo_method(globals_editor, "update_category_list"); - - undo_redo->add_do_method(this, "_settings_changed"); - undo_redo->add_undo_method(this, "_settings_changed"); - - undo_redo->commit_action(); -} - -void ProjectSettingsEditor::_toggle_search_bar(bool p_pressed) { - globals_editor->get_inspector()->set_use_filter(p_pressed); - - if (p_pressed) { - search_bar->show(); - add_prop_bar->hide(); - search_box->grab_focus(); - search_box->select_all(); - } else { - search_box->clear(); - search_bar->hide(); - add_prop_bar->show(); - } -} - -void ProjectSettingsEditor::set_plugins_page() { - tab_container->set_current_tab(plugin_settings->get_index()); -} - -TabContainer *ProjectSettingsEditor::get_tabs() { - return tab_container; -} - void ProjectSettingsEditor::_editor_restart() { EditorNode::get_singleton()->save_all_scenes(); EditorNode::get_singleton()->restart_editor(); @@ -335,17 +266,48 @@ void ProjectSettingsEditor::_editor_restart_close() { restart_container->hide(); } -void ProjectSettingsEditor::_bind_methods() { - ClassDB::bind_method(D_METHOD("_unhandled_input"), &ProjectSettingsEditor::_unhandled_input); - ClassDB::bind_method(D_METHOD("_save"), &ProjectSettingsEditor::_save); +void ProjectSettingsEditor::_notification(int p_what) { + switch (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")); + + search_box->set_right_icon(get_theme_icon("Search", "EditorIcons")); + search_box->set_clear_button_enabled(true); - ClassDB::bind_method(D_METHOD("get_tabs"), &ProjectSettingsEditor::get_tabs); + restart_close_button->set_icon(get_theme_icon("Close", "EditorIcons")); + restart_container->add_theme_style_override("panel", get_theme_stylebox("bg", "Tree")); + restart_icon->set_texture(get_theme_icon("StatusWarning", "EditorIcons")); + restart_label->add_theme_color_override("font_color", get_theme_color("warning_color", "Editor")); + } break; + case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { + search_box->set_right_icon(get_theme_icon("Search", "EditorIcons")); + search_box->set_clear_button_enabled(true); + } break; + } +} + +void ProjectSettingsEditor::_bind_methods() { + ClassDB::bind_method(D_METHOD("queue_save"), &ProjectSettingsEditor::queue_save); } ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) { singleton = this; set_title(TTR("Project Settings (project.godot)")); + ps = ProjectSettings::get_singleton(); undo_redo = &p_data->get_undo_redo(); data = p_data; @@ -354,103 +316,109 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) { tab_container->set_use_hidden_tabs_for_min_size(true); add_child(tab_container); - VBoxContainer *props_base = memnew(VBoxContainer); - props_base->set_name(TTR("General")); - props_base->set_alignment(BoxContainer::ALIGN_BEGIN); - props_base->set_v_size_flags(Control::SIZE_EXPAND_FILL); - tab_container->add_child(props_base); - - HBoxContainer *hbc = memnew(HBoxContainer); - hbc->set_h_size_flags(Control::SIZE_EXPAND_FILL); - props_base->add_child(hbc); - - search_button = memnew(Button); - search_button->set_text(TTR("Search")); - search_button->set_toggle_mode(true); - search_button->set_pressed(false); - search_button->connect("toggled", callable_mp(this, &ProjectSettingsEditor::_toggle_search_bar)); - hbc->add_child(search_button); - - hbc->add_child(memnew(VSeparator)); - - add_prop_bar = memnew(HBoxContainer); - add_prop_bar->set_h_size_flags(Control::SIZE_EXPAND_FILL); - hbc->add_child(add_prop_bar); - - Label *l = memnew(Label); - l->set_text(TTR("Category:")); - add_prop_bar->add_child(l); - - category = memnew(LineEdit); - category->set_h_size_flags(Control::SIZE_EXPAND_FILL); - category->connect("text_entered", callable_mp(this, &ProjectSettingsEditor::_item_adds)); - add_prop_bar->add_child(category); - - l = memnew(Label); - l->set_text(TTR("Property:")); - add_prop_bar->add_child(l); - - property = memnew(LineEdit); - property->set_h_size_flags(Control::SIZE_EXPAND_FILL); - property->connect("text_entered", callable_mp(this, &ProjectSettingsEditor::_item_adds)); - add_prop_bar->add_child(property); - - l = memnew(Label); - l->set_text(TTR("Type:")); - add_prop_bar->add_child(l); - - type = memnew(OptionButton); - type->set_h_size_flags(Control::SIZE_EXPAND_FILL); - add_prop_bar->add_child(type); - - // Start at 1 to avoid adding "Nil" as an option - for (int i = 1; i < Variant::VARIANT_MAX; i++) { - type->add_item(Variant::get_type_name(Variant::Type(i))); + VBoxContainer *general_editor = memnew(VBoxContainer); + general_editor->set_name(TTR("General")); + general_editor->set_alignment(BoxContainer::ALIGN_BEGIN); + general_editor->set_v_size_flags(Control::SIZE_EXPAND_FILL); + tab_container->add_child(general_editor); + + VBoxContainer *header = memnew(VBoxContainer); + header->set_h_size_flags(Control::SIZE_EXPAND_FILL); + general_editor->add_child(header); + + { + // Search bar. + search_bar = memnew(HBoxContainer); + search_bar->set_h_size_flags(Control::SIZE_EXPAND_FILL); + header->add_child(search_bar); + + search_box = memnew(LineEdit); + search_box->set_placeholder(TTR("Search")); + search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); + search_bar->add_child(search_box); + + advanced = memnew(CheckButton); + advanced->set_text(TTR("Advanced")); + advanced->connect("pressed", callable_mp(this, &ProjectSettingsEditor::_advanced_pressed)); + search_bar->add_child(advanced); } - Button *add = memnew(Button); - add->set_text(TTR("Add")); - add->connect("pressed", callable_mp(this, &ProjectSettingsEditor::_item_add)); - add_prop_bar->add_child(add); - - search_bar = memnew(HBoxContainer); - search_bar->set_h_size_flags(Control::SIZE_EXPAND_FILL); - search_bar->hide(); - hbc->add_child(search_bar); - - search_box = memnew(LineEdit); - search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); - search_bar->add_child(search_box); + { + // Advanced bar. + advanced_bar = memnew(VBoxContainer); + advanced_bar->set_h_size_flags(Control::SIZE_EXPAND_FILL); + advanced_bar->hide(); + header->add_child(advanced_bar); + + advanced_bar->add_child(memnew(HSeparator)); + + HBoxContainer *hbc = memnew(HBoxContainer); + 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); + category_box->connect("text_changed", callable_mp(this, &ProjectSettingsEditor::_text_field_changed)); + category_box->set_placeholder(TTR("Category")); + hbc->add_child(category_box); + + Label *l = memnew(Label); + l->set_text("/"); + hbc->add_child(l); + + property_box = memnew(LineEdit); + property_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); + property_box->set_placeholder(TTR("Property")); + property_box->connect("text_changed", callable_mp(this, &ProjectSettingsEditor::_text_field_changed)); + hbc->add_child(property_box); + + l = memnew(Label); + l->set_text(TTR("Type:")); + hbc->add_child(l); + + type = memnew(OptionButton); + type->set_custom_minimum_size(Size2(100, 0) * EDSCALE); + hbc->add_child(type); + + // Start at 1 to avoid adding "Nil" as an option + for (int i = 1; i < Variant::VARIANT_MAX; i++) { + type->add_item(Variant::get_type_name(Variant::Type(i))); + } - globals_editor = memnew(SectionedInspector); - globals_editor->get_inspector()->set_undo_redo(EditorNode::get_singleton()->get_undo_redo()); - globals_editor->set_v_size_flags(Control::SIZE_EXPAND_FILL); - globals_editor->register_search_box(search_box); - globals_editor->get_inspector()->connect("property_selected", callable_mp(this, &ProjectSettingsEditor::_item_selected)); - globals_editor->get_inspector()->connect("property_edited", callable_mp(this, &ProjectSettingsEditor::_settings_prop_edited)); - globals_editor->get_inspector()->connect("restart_requested", callable_mp(this, &ProjectSettingsEditor::_editor_restart_request)); - props_base->add_child(globals_editor); + l = memnew(Label); + l->set_text(TTR("Feature Override:")); + hbc->add_child(l); - Button *del = memnew(Button); - del->set_text(TTR("Delete")); - del->connect("pressed", callable_mp(this, &ProjectSettingsEditor::_item_del)); - hbc->add_child(del); + feature_override = memnew(OptionButton); + feature_override->set_custom_minimum_size(Size2(100, 0) * EDSCALE); + feature_override->connect("item_selected", callable_mp(this, &ProjectSettingsEditor::_feature_selected)); + hbc->add_child(feature_override); - add_prop_bar->add_child(memnew(VSeparator)); + add_button = memnew(Button); + add_button->set_flat(true); + add_button->connect("pressed", callable_mp(this, &ProjectSettingsEditor::_add_setting)); + hbc->add_child(add_button); - popup_copy_to_feature = memnew(MenuButton); - popup_copy_to_feature->set_text(TTR("Override For...")); - popup_copy_to_feature->set_disabled(true); - add_prop_bar->add_child(popup_copy_to_feature); + del_button = memnew(Button); + del_button->set_flat(true); + del_button->connect("pressed", callable_mp(this, &ProjectSettingsEditor::_delete_setting), varray(false)); + hbc->add_child(del_button); - popup_copy_to_feature->get_popup()->connect("id_pressed", callable_mp(this, &ProjectSettingsEditor::_copy_to_platform)); - popup_copy_to_feature->get_popup()->connect("about_to_popup", callable_mp(this, &ProjectSettingsEditor::_copy_to_platform_about_to_show)); + error_label = memnew(Label); + advanced_bar->add_child(error_label); + } - get_ok()->set_text(TTR("Close")); - set_hide_on_ok(true); + inspector = memnew(SectionedInspector); + inspector->get_inspector()->set_undo_redo(EditorNode::get_singleton()->get_undo_redo()); + inspector->set_v_size_flags(Control::SIZE_EXPAND_FILL); + inspector->register_search_box(search_box); + inspector->get_inspector()->connect("property_selected", callable_mp(this, &ProjectSettingsEditor::_setting_selected)); + inspector->get_inspector()->connect("property_edited", callable_mp(this, &ProjectSettingsEditor::_setting_edited)); + inspector->get_inspector()->connect("restart_requested", callable_mp(this, &ProjectSettingsEditor::_editor_restart_request)); + general_editor->add_child(inspector); restart_container = memnew(PanelContainer); - props_base->add_child(restart_container); + general_editor->add_child(restart_container); HBoxContainer *restart_hb = memnew(HBoxContainer); restart_container->hide(); @@ -475,27 +443,24 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) { restart_close_button->connect("pressed", callable_mp(this, &ProjectSettingsEditor::_editor_restart_close)); restart_hb->add_child(restart_close_button); - message = memnew(AcceptDialog); - add_child(message); - inputmap_editor = memnew(InputMapEditor); inputmap_editor->set_name(TTR("Input Map")); - inputmap_editor->connect("inputmap_changed", callable_mp(this, &ProjectSettingsEditor::_settings_changed)); + inputmap_editor->connect("inputmap_changed", callable_mp(this, &ProjectSettingsEditor::queue_save)); tab_container->add_child(inputmap_editor); localization_editor = memnew(LocalizationEditor); localization_editor->set_name(TTR("Localization")); - localization_editor->connect("localization_changed", callable_mp(this, &ProjectSettingsEditor::_settings_changed)); + localization_editor->connect("localization_changed", callable_mp(this, &ProjectSettingsEditor::queue_save)); tab_container->add_child(localization_editor); autoload_settings = memnew(EditorAutoloadSettings); autoload_settings->set_name(TTR("AutoLoad")); - autoload_settings->connect("autoload_changed", callable_mp(this, &ProjectSettingsEditor::_settings_changed)); + autoload_settings->connect("autoload_changed", callable_mp(this, &ProjectSettingsEditor::queue_save)); tab_container->add_child(autoload_settings); shaders_global_variables_editor = memnew(ShaderGlobalsEditor); shaders_global_variables_editor->set_name(TTR("Shader Globals")); - shaders_global_variables_editor->connect("globals_changed", callable_mp(this, &ProjectSettingsEditor::_settings_changed)); + shaders_global_variables_editor->connect("globals_changed", callable_mp(this, &ProjectSettingsEditor::queue_save)); tab_container->add_child(shaders_global_variables_editor); plugin_settings = memnew(EditorPluginSettings); @@ -504,7 +469,14 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) { timer = memnew(Timer); timer->set_wait_time(1.5); - timer->connect("timeout", callable_mp(ProjectSettings::get_singleton(), &ProjectSettings::save)); + timer->connect("timeout", callable_mp(ps, &ProjectSettings::save)); timer->set_one_shot(true); add_child(timer); + + del_confirmation = memnew(ConfirmationDialog); + del_confirmation->connect("confirmed", callable_mp(this, &ProjectSettingsEditor::_delete_setting), varray(true)); + add_child(del_confirmation); + + get_ok()->set_text(TTR("Close")); + set_hide_on_ok(true); } diff --git a/editor/project_settings_editor.h b/editor/project_settings_editor.h index c99c2fe9a2..4ecd28e514 100644 --- a/editor/project_settings_editor.h +++ b/editor/project_settings_editor.h @@ -35,12 +35,11 @@ #include "editor/editor_data.h" #include "editor/editor_plugin_settings.h" #include "editor/editor_sectioned_inspector.h" +#include "editor/input_map_editor.h" +#include "editor/localization_editor.h" +#include "editor/shader_globals_editor.h" #include "editor_autoload_settings.h" -#include "input_map_editor.h" -#include "localization_editor.h" -#include "scene/gui/dialogs.h" #include "scene/gui/tab_container.h" -#include "shader_globals_editor.h" class ProjectSettingsEditor : public AcceptDialog { GDCLASS(ProjectSettingsEditor, AcceptDialog); @@ -53,28 +52,33 @@ class ProjectSettingsEditor : public AcceptDialog { INPUT_MOUSE_BUTTON }; - TabContainer *tab_container; - AcceptDialog *message; + static ProjectSettingsEditor *singleton; + ProjectSettings *ps; Timer *timer; - HBoxContainer *search_bar; - Button *search_button; - LineEdit *search_box; - HBoxContainer *add_prop_bar; - LineEdit *category; - LineEdit *property; - OptionButton *type; - - SectionedInspector *globals_editor; - - MenuButton *popup_copy_to_feature; - + TabContainer *tab_container; + SectionedInspector *inspector; InputMapEditor *inputmap_editor; LocalizationEditor *localization_editor; EditorAutoloadSettings *autoload_settings; ShaderGlobalsEditor *shaders_global_variables_editor; EditorPluginSettings *plugin_settings; + HBoxContainer *search_bar; + LineEdit *search_box; + CheckButton *advanced; + + VBoxContainer *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; + Label *restart_label; TextureRect *restart_icon; PanelContainer *restart_container; @@ -83,30 +87,25 @@ class ProjectSettingsEditor : public AcceptDialog { EditorData *data; UndoRedo *undo_redo; - void _item_selected(const String &); - void _item_adds(String); - void _item_add(); - void _item_del(); - void _save(); - - void _settings_prop_edited(const String &p_name); - void _settings_changed(); - - void _copy_to_platform(int p_which); - void _copy_to_platform_about_to_show(); - - void _toggle_search_bar(bool p_pressed); + void _advanced_pressed(); + void _update_advanced_bar(); + void _text_field_changed(const String &p_text); + void _feature_selected(int p_index); - ProjectSettingsEditor(); - - static ProjectSettingsEditor *singleton; + String _get_setting_name() const; + void _setting_edited(const String &p_name); + void _setting_selected(const String &p_path); + void _add_setting(); + void _delete_setting(bool p_confirmed); void _editor_restart_request(); void _editor_restart(); void _editor_restart_close(); + void _add_feature_overrides(); + ProjectSettingsEditor(); + protected: - void _unhandled_input(const Ref<InputEvent> &p_event); void _notification(int p_what); static void _bind_methods(); @@ -117,8 +116,7 @@ public: void update_plugins(); EditorAutoloadSettings *get_autoload_settings() { return autoload_settings; } - - TabContainer *get_tabs(); + TabContainer *get_tabs() { return tab_container; } void queue_save(); diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp index f4838d336f..cb56358ae6 100644 --- a/editor/property_editor.cpp +++ b/editor/property_editor.cpp @@ -152,7 +152,7 @@ void CustomPropertyEditor::_menu_option(int p_which) { file->add_filter("*." + E->get() + " ; " + E->get().to_upper()); } - file->popup_centered_ratio(); + file->popup_file_dialog(); } break; case OBJ_MENU_EDIT: { @@ -257,7 +257,7 @@ void CustomPropertyEditor::_menu_option(int p_which) { if (intype == "ViewportTexture") { scene_tree->set_title(TTR("Pick a Viewport")); - scene_tree->popup_centered_ratio(); + scene_tree->popup_scenetree_dialog(); picking_viewport = true; return; } @@ -368,18 +368,18 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant:: float min = 0, max = 100, step = type == Variant::FLOAT ? .01 : 1; if (c >= 1) { if (!hint_text.get_slice(",", 0).empty()) { - min = hint_text.get_slice(",", 0).to_double(); + min = hint_text.get_slice(",", 0).to_float(); } } if (c >= 2) { if (!hint_text.get_slice(",", 1).empty()) { - max = hint_text.get_slice(",", 1).to_double(); + max = hint_text.get_slice(",", 1).to_float(); } } if (c >= 3) { if (!hint_text.get_slice(",", 2).empty()) { - step = hint_text.get_slice(",", 2).to_double(); + step = hint_text.get_slice(",", 2).to_float(); } } @@ -1198,7 +1198,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) { file->add_filter(filter + " ; " + extensions[i].to_upper()); } } - file->popup_centered_ratio(); + file->popup_file_dialog(); } else { v = ""; emit_signal("variant_changed"); @@ -1214,7 +1214,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) { } file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_DIR); file->clear_filters(); - file->popup_centered_ratio(); + file->popup_file_dialog(); } else { v = ""; emit_signal("variant_changed"); @@ -1227,7 +1227,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) { if (p_which == 0) { picking_viewport = false; scene_tree->set_title(TTR("Pick a Node")); - scene_tree->popup_centered_ratio(); + scene_tree->popup_scenetree_dialog(); } else if (p_which == 1) { v = NodePath(); @@ -1281,7 +1281,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) { file->add_filter("*." + E->get() + " ; " + E->get().to_upper()); } - file->popup_centered_ratio(); + file->popup_file_dialog(); } else if (p_which == 2) { RES r = v; @@ -1590,7 +1590,7 @@ real_t CustomPropertyEditor::_parse_real_expression(String text) { Error err = expr->parse(text); real_t out; if (err != OK) { - out = value_editor[0]->get_text().to_double(); + out = value_editor[0]->get_text().to_float(); } else { out = expr->execute(Array(), nullptr, false); } diff --git a/editor/property_selector.cpp b/editor/property_selector.cpp index c6c93fae83..27b11e4fb5 100644 --- a/editor/property_selector.cpp +++ b/editor/property_selector.cpp @@ -84,6 +84,9 @@ void PropertySelector::_update_search() { TreeItem *root = search_options->create_item(); + // Allow using spaces in place of underscores in the search string (makes the search more fault-tolerant). + const String search_text = search_box->get_text().replace(" ", "_"); + if (properties) { List<PropertyInfo> props; @@ -167,7 +170,7 @@ void PropertySelector::_update_search() { continue; } - if (search_box->get_text() != String() && E->get().name.find(search_box->get_text()) == -1) { + if (search_box->get_text() != String() && E->get().name.findn(search_text) == -1) { continue; } @@ -180,7 +183,7 @@ void PropertySelector::_update_search() { item->set_metadata(0, E->get().name); item->set_icon(0, type_icons[E->get().type]); - if (!found && search_box->get_text() != String() && E->get().name.find(search_box->get_text()) != -1) { + if (!found && search_box->get_text() != String() && E->get().name.findn(search_text) != -1) { item->select(0); found = true; } @@ -255,7 +258,7 @@ void PropertySelector::_update_search() { continue; } - if (search_box->get_text() != String() && name.find(search_box->get_text()) == -1) { + if (search_box->get_text() != String() && name.findn(search_text) == -1) { continue; } @@ -270,29 +273,29 @@ void PropertySelector::_update_search() { } else if (mi.return_val.type != Variant::NIL) { desc = Variant::get_type_name(mi.return_val.type); } else { - desc = "void "; + desc = "void"; } - desc += " " + mi.name + " ( "; + desc += vformat(" %s(", mi.name); for (int i = 0; i < mi.arguments.size(); i++) { if (i > 0) { desc += ", "; } + desc += mi.arguments[i].name; + if (mi.arguments[i].type == Variant::NIL) { - desc += "var "; + desc += ": Variant"; } else if (mi.arguments[i].name.find(":") != -1) { - desc += mi.arguments[i].name.get_slice(":", 1) + " "; + desc += vformat(": %s", mi.arguments[i].name.get_slice(":", 1)); mi.arguments[i].name = mi.arguments[i].name.get_slice(":", 0); } else { - desc += Variant::get_type_name(mi.arguments[i].type) + " "; + desc += vformat(": %s", Variant::get_type_name(mi.arguments[i].type)); } - - desc += mi.arguments[i].name; } - desc += " )"; + desc += ")"; if (E->get().flags & METHOD_FLAG_CONST) { desc += " const"; @@ -306,7 +309,7 @@ void PropertySelector::_update_search() { item->set_metadata(0, name); item->set_selectable(0, true); - if (!found && search_box->get_text() != String() && name.find(search_box->get_text()) != -1) { + if (!found && search_box->get_text() != String() && name.findn(search_text) != -1) { item->select(0); found = true; } diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp index 4af6fb2053..e1308b4895 100644 --- a/editor/quick_open.cpp +++ b/editor/quick_open.cpp @@ -34,183 +34,184 @@ void EditorQuickOpen::popup_dialog(const StringName &p_base, bool p_enable_multi, bool p_dontclear) { base_type = p_base; - search_options->set_select_mode(p_enable_multi ? Tree::SELECT_MULTI : Tree::SELECT_SINGLE); - popup_centered_ratio(0.4); + allow_multi_select = p_enable_multi; + search_options->set_select_mode(allow_multi_select ? Tree::SELECT_MULTI : Tree::SELECT_SINGLE); + popup_centered_clamped(Size2i(600, 440), 0.8f); + + EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->get_filesystem(); + _build_search_cache(efsd); if (p_dontclear) { search_box->select_all(); + _update_search(); } else { - search_box->clear(); + search_box->clear(); // This will emit text_changed. } - search_box->grab_focus(); - _update_search(); } -String EditorQuickOpen::get_selected() const { - TreeItem *ti = search_options->get_selected(); - if (!ti) { - return String(); +void EditorQuickOpen::_build_search_cache(EditorFileSystemDirectory *p_efsd) { + for (int i = 0; i < p_efsd->get_subdir_count(); i++) { + _build_search_cache(p_efsd->get_subdir(i)); } - return "res://" + ti->get_text(0); -} + for (int i = 0; i < p_efsd->get_file_count(); i++) { + String file_type = p_efsd->get_file_type(i); + if (ClassDB::is_parent_class(file_type, base_type)) { + String file = p_efsd->get_file_path(i); + files.push_back(file.substr(6, file.length())); -Vector<String> EditorQuickOpen::get_selected_files() const { - Vector<String> files; + // Store refs to used icons. + String ext = file.get_extension(); + if (!icons.has(ext)) { + icons.insert(ext, get_theme_icon((has_theme_icon(file_type, "EditorIcons") ? file_type : "Object"), "EditorIcons")); + } + } + } +} - TreeItem *item = search_options->get_next_selected(search_options->get_root()); - while (item) { - files.push_back("res://" + item->get_text(0)); - item = search_options->get_next_selected(item); +void EditorQuickOpen::_update_search() { + const String search_text = search_box->get_text(); + const bool empty_search = search_text == ""; + + // Filter possible candidates. + Vector<Entry> entries; + for (int i = 0; i < files.size(); i++) { + if (empty_search || search_text.is_subsequence_ofi(files[i])) { + Entry r; + r.path = files[i]; + r.score = empty_search ? 0 : _score_path(search_text, files[i].to_lower()); + entries.push_back(r); + } } - return files; -} + // Display results + TreeItem *root = search_options->get_root(); + root->clear_children(); -void EditorQuickOpen::_text_changed(const String &p_newtext) { - _update_search(); -} + if (entries.size() > 0) { + if (!empty_search) { + SortArray<Entry, EntryComparator> sorter; + sorter.sort(entries.ptrw(), entries.size()); + } -void EditorQuickOpen::_sbox_input(const Ref<InputEvent> &p_ie) { - Ref<InputEventKey> k = p_ie; - if (k.is_valid()) { - switch (k->get_keycode()) { - case KEY_UP: - case KEY_DOWN: - case KEY_PAGEUP: - case KEY_PAGEDOWN: { - search_options->call("_gui_input", k); - search_box->accept_event(); + const int entry_limit = MIN(entries.size(), 300); + for (int i = 0; i < entry_limit; i++) { + TreeItem *ti = search_options->create_item(root); + ti->set_text(0, entries[i].path); + ti->set_icon(0, *icons.lookup_ptr(entries[i].path.get_extension())); + } - TreeItem *root = search_options->get_root(); - if (!root->get_children()) { - break; - } + TreeItem *to_select = root->get_children(); + to_select->select(0); + to_select->set_as_cursor(0); + search_options->scroll_to_item(to_select); - TreeItem *current = search_options->get_selected(); - TreeItem *item = search_options->get_next_selected(root); - while (item) { - item->deselect(0); - item = search_options->get_next_selected(item); - } + get_ok()->set_disabled(false); + } else { + search_options->deselect_all(); - current->select(0); - current->set_as_cursor(0); - } break; - } + get_ok()->set_disabled(true); } } -float EditorQuickOpen::_score_path(String search, String path) const { - // Positive bias for matches close to the _beginning of the file name_. - String file = path.get_file(); - int pos = file.findn(search); +float EditorQuickOpen::_score_path(const String &p_search, const String &p_path) { + float score = 0.9f + .1f * (p_search.length() / (float)p_path.length()); + + // Positive bias for matches close to the beginning of the file name. + String file = p_path.get_file(); + int pos = file.findn(p_search); if (pos != -1) { - return 1.0f - 0.1f * (float(pos) / file.length()); + return score * (1.0f - 0.1f * (float(pos) / file.length())); } - // Positive bias for matches close to the _end of the path_. - String base = path.get_base_dir(); - pos = base.rfindn(search); + // Positive bias for matches close to the end of the path. + pos = p_path.rfindn(p_search); if (pos != -1) { - return 0.9f - 0.1f * (float(base.length() - pos) / base.length()); + return score * (0.8f - 0.1f * (float(p_path.length() - pos) / p_path.length())); } - // Results that contain all characters but not the string. - return path.similarity(search) * 0.8f; + // Remaining results belong to the same class of results. + return score * 0.69f; } -void EditorQuickOpen::_parse_fs(EditorFileSystemDirectory *efsd, Vector<Pair<String, Ref<Texture2D>>> &list) { - for (int i = 0; i < efsd->get_subdir_count(); i++) { - _parse_fs(efsd->get_subdir(i), list); - } - - for (int i = 0; i < efsd->get_file_count(); i++) { - StringName file_type = efsd->get_file_type(i); - - if (ClassDB::is_parent_class(file_type, base_type)) { - String file = efsd->get_file_path(i); - file = file.substr(6, file.length()); - - if (search_box->get_text().is_subsequence_ofi(file)) { - Pair<String, Ref<Texture2D>> pair; - pair.first = file; - pair.second = search_options->get_theme_icon(search_options->has_theme_icon(file_type, ei) ? file_type : ot, ei); - list.push_back(pair); - } - } +void EditorQuickOpen::_confirmed() { + if (!search_options->get_selected()) { + return; } + _cleanup(); + emit_signal("quick_open"); + hide(); } -Vector<Pair<String, Ref<Texture2D>>> EditorQuickOpen::_sort_fs(Vector<Pair<String, Ref<Texture2D>>> &list) { - String search_text = search_box->get_text().to_lower(); - Vector<Pair<String, Ref<Texture2D>>> sorted_list; +void EditorQuickOpen::cancel_pressed() { + _cleanup(); +} - if (search_text == String() || list.size() == 0) { - return list; - } +void EditorQuickOpen::_cleanup() { + files.clear(); + icons.clear(); +} - Vector<float> scores; - scores.resize(list.size()); - for (int i = 0; i < list.size(); i++) { - scores.write[i] = _score_path(search_text, list[i].first.to_lower()); - } +void EditorQuickOpen::_text_changed(const String &p_newtext) { + _update_search(); +} - while (list.size() > 0) { - float best_score = 0.0f; - int best_idx = 0; +void EditorQuickOpen::_sbox_input(const Ref<InputEvent> &p_ie) { + Ref<InputEventKey> k = p_ie; + if (k.is_valid()) { + switch (k->get_keycode()) { + case KEY_UP: + case KEY_DOWN: + case KEY_PAGEUP: + case KEY_PAGEDOWN: { + search_options->call("_gui_input", k); + search_box->accept_event(); - for (int i = 0; i < list.size(); i++) { - float current_score = scores[i]; - if (current_score > best_score) { - best_score = current_score; - best_idx = i; - } + if (allow_multi_select) { + TreeItem *root = search_options->get_root(); + if (!root->get_children()) { + break; + } + + TreeItem *current = search_options->get_selected(); + TreeItem *item = search_options->get_next_selected(root); + while (item) { + item->deselect(0); + item = search_options->get_next_selected(item); + } + + current->select(0); + current->set_as_cursor(0); + } + } break; } - - sorted_list.push_back(list[best_idx]); - list.remove(best_idx); - scores.remove(best_idx); } - - return sorted_list; } -void EditorQuickOpen::_update_search() { - search_options->clear(); - TreeItem *root = search_options->create_item(); - EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->get_filesystem(); - Vector<Pair<String, Ref<Texture2D>>> list; - - _parse_fs(efsd, list); - list = _sort_fs(list); - - for (int i = 0; i < list.size(); i++) { - TreeItem *ti = search_options->create_item(root); - ti->set_text(0, list[i].first); - ti->set_icon(0, list[i].second); - } - - TreeItem *result = root->get_children(); - if (result) { - result->select(0); - result->set_as_cursor(0); +String EditorQuickOpen::get_selected() const { + TreeItem *ti = search_options->get_selected(); + if (!ti) { + return String(); } - get_ok()->set_disabled(!result); + return "res://" + ti->get_text(0); } -void EditorQuickOpen::_confirmed() { - if (!search_options->get_selected()) { - return; +Vector<String> EditorQuickOpen::get_selected_files() const { + Vector<String> selected_files; + + TreeItem *item = search_options->get_next_selected(search_options->get_root()); + while (item) { + selected_files.push_back("res://" + item->get_text(0)); + item = search_options->get_next_selected(item); } - emit_signal("quick_open"); - hide(); + + return selected_files; } -void EditorQuickOpen::_theme_changed() { - search_box->set_right_icon(search_options->get_theme_icon("Search", ei)); +StringName EditorQuickOpen::get_base_type() const { + return base_type; } void EditorQuickOpen::_notification(int p_what) { @@ -226,8 +227,8 @@ void EditorQuickOpen::_notification(int p_what) { } } -StringName EditorQuickOpen::get_base_type() const { - return base_type; +void EditorQuickOpen::_theme_changed() { + search_box->set_right_icon(search_options->get_theme_icon("Search", "EditorIcons")); } void EditorQuickOpen::_bind_methods() { @@ -235,6 +236,8 @@ void EditorQuickOpen::_bind_methods() { } EditorQuickOpen::EditorQuickOpen() { + allow_multi_select = false; + VBoxContainer *vbc = memnew(VBoxContainer); vbc->connect("theme_changed", callable_mp(this, &EditorQuickOpen::_theme_changed)); add_child(vbc); @@ -243,18 +246,16 @@ EditorQuickOpen::EditorQuickOpen() { search_box->connect("text_changed", callable_mp(this, &EditorQuickOpen::_text_changed)); search_box->connect("gui_input", callable_mp(this, &EditorQuickOpen::_sbox_input)); vbc->add_margin_child(TTR("Search:"), search_box); + register_text_enter(search_box); search_options = memnew(Tree); search_options->connect("item_activated", callable_mp(this, &EditorQuickOpen::_confirmed)); + search_options->create_item(); search_options->set_hide_root(true); search_options->set_hide_folding(true); search_options->add_theme_constant_override("draw_guides", 1); vbc->add_margin_child(TTR("Matches:"), search_options, true); get_ok()->set_text(TTR("Open")); - register_text_enter(search_box); set_hide_on_ok(false); - - ei = "EditorIcons"; - ot = "Object"; } diff --git a/editor/quick_open.h b/editor/quick_open.h index 5bcdfc7bf2..6486ee0221 100644 --- a/editor/quick_open.h +++ b/editor/quick_open.h @@ -31,7 +31,7 @@ #ifndef EDITOR_QUICK_OPEN_H #define EDITOR_QUICK_OPEN_H -#include "core/pair.h" +#include "core/oa_hash_map.h" #include "editor_file_system.h" #include "scene/gui/dialogs.h" #include "scene/gui/tree.h" @@ -41,19 +41,32 @@ class EditorQuickOpen : public ConfirmationDialog { LineEdit *search_box; Tree *search_options; - StringName base_type; - StringName ei; - StringName ot; + bool allow_multi_select; - void _update_search(); + Vector<String> files; + OAHashMap<String, Ref<Texture2D>> icons; - void _sbox_input(const Ref<InputEvent> &p_ie); - void _parse_fs(EditorFileSystemDirectory *efsd, Vector<Pair<String, Ref<Texture2D>>> &list); - Vector<Pair<String, Ref<Texture2D>>> _sort_fs(Vector<Pair<String, Ref<Texture2D>>> &list); - float _score_path(String search, String path) const; + struct Entry { + String path; + float score; + }; + + struct EntryComparator { + _FORCE_INLINE_ bool operator()(const Entry &A, const Entry &B) const { + return A.score > B.score; + } + }; + + void _update_search(); + void _build_search_cache(EditorFileSystemDirectory *p_efsd); + float _score_path(const String &p_search, const String &p_path); void _confirmed(); + virtual void cancel_pressed() override; + void _cleanup(); + + void _sbox_input(const Ref<InputEvent> &p_ie); void _text_changed(const String &p_newtext); void _theme_changed(); diff --git a/editor/rename_dialog.cpp b/editor/rename_dialog.cpp index 6a54894f40..23990bca07 100644 --- a/editor/rename_dialog.cpp +++ b/editor/rename_dialog.cpp @@ -61,18 +61,16 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und // ---- 1st & 2nd row Label *lbl_search = memnew(Label); - lbl_search->set_text(TTR("Search")); + lbl_search->set_text(TTR("Search:")); lne_search = memnew(LineEdit); - lne_search->set_placeholder(TTR("Search")); lne_search->set_name("lne_search"); lne_search->set_h_size_flags(Control::SIZE_EXPAND_FILL); Label *lbl_replace = memnew(Label); - lbl_replace->set_text(TTR("Replace")); + lbl_replace->set_text(TTR("Replace:")); lne_replace = memnew(LineEdit); - lne_replace->set_placeholder(TTR("Replace")); lne_replace->set_name("lne_replace"); lne_replace->set_h_size_flags(Control::SIZE_EXPAND_FILL); @@ -84,18 +82,16 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und // ---- 3rd & 4th row Label *lbl_prefix = memnew(Label); - lbl_prefix->set_text(TTR("Prefix")); + lbl_prefix->set_text(TTR("Prefix:")); lne_prefix = memnew(LineEdit); - lne_prefix->set_placeholder(TTR("Prefix")); lne_prefix->set_name("lne_prefix"); lne_prefix->set_h_size_flags(Control::SIZE_EXPAND_FILL); Label *lbl_suffix = memnew(Label); - lbl_suffix->set_text(TTR("Suffix")); + lbl_suffix->set_text(TTR("Suffix:")); lne_suffix = memnew(LineEdit); - lne_suffix->set_placeholder(TTR("Suffix")); lne_suffix->set_name("lne_suffix"); lne_suffix->set_h_size_flags(Control::SIZE_EXPAND_FILL); @@ -106,8 +102,6 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und // -- Feature Tabs - const int feature_min_height = 160 * EDSCALE; - cbut_regex = memnew(CheckButton); cbut_regex->set_text(TTR("Use Regular Expressions")); vbc->add_child(cbut_regex); @@ -118,13 +112,13 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und tabc_features = memnew(TabContainer); tabc_features->set_tab_align(TabContainer::ALIGN_LEFT); + tabc_features->set_use_hidden_tabs_for_min_size(true); vbc->add_child(tabc_features); // ---- Tab Substitute VBoxContainer *vbc_substitute = memnew(VBoxContainer); vbc_substitute->set_h_size_flags(Control::SIZE_EXPAND_FILL); - vbc_substitute->set_custom_minimum_size(Size2(0, feature_min_height)); vbc_substitute->set_name(TTR("Substitute")); tabc_features->add_child(vbc_substitute); @@ -141,7 +135,7 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und but_insert_name = memnew(Button); but_insert_name->set_text("NAME"); - but_insert_name->set_tooltip(String("${NAME}\n") + TTR("Node name")); + but_insert_name->set_tooltip(String("${NAME}\n") + TTR("Node name.")); but_insert_name->set_focus_mode(Control::FOCUS_NONE); but_insert_name->connect("pressed", callable_mp(this, &RenameDialog::_insert_text), make_binds("${NAME}")); but_insert_name->set_h_size_flags(Control::SIZE_EXPAND_FILL); @@ -151,7 +145,7 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und but_insert_parent = memnew(Button); but_insert_parent->set_text("PARENT"); - but_insert_parent->set_tooltip(String("${PARENT}\n") + TTR("Node's parent name, if available")); + but_insert_parent->set_tooltip(String("${PARENT}\n") + TTR("Node's parent name, if available.")); but_insert_parent->set_focus_mode(Control::FOCUS_NONE); but_insert_parent->connect("pressed", callable_mp(this, &RenameDialog::_insert_text), make_binds("${PARENT}")); but_insert_parent->set_h_size_flags(Control::SIZE_EXPAND_FILL); @@ -161,7 +155,7 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und but_insert_type = memnew(Button); but_insert_type->set_text("TYPE"); - but_insert_type->set_tooltip(String("${TYPE}\n") + TTR("Node type")); + but_insert_type->set_tooltip(String("${TYPE}\n") + TTR("Node type.")); but_insert_type->set_focus_mode(Control::FOCUS_NONE); but_insert_type->connect("pressed", callable_mp(this, &RenameDialog::_insert_text), make_binds("${TYPE}")); but_insert_type->set_h_size_flags(Control::SIZE_EXPAND_FILL); @@ -171,7 +165,7 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und but_insert_scene = memnew(Button); but_insert_scene->set_text("SCENE"); - but_insert_scene->set_tooltip(String("${SCENE}\n") + TTR("Current scene name")); + but_insert_scene->set_tooltip(String("${SCENE}\n") + TTR("Current scene name.")); but_insert_scene->set_focus_mode(Control::FOCUS_NONE); but_insert_scene->connect("pressed", callable_mp(this, &RenameDialog::_insert_text), make_binds("${SCENE}")); but_insert_scene->set_h_size_flags(Control::SIZE_EXPAND_FILL); @@ -181,7 +175,7 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und but_insert_root = memnew(Button); but_insert_root->set_text("ROOT"); - but_insert_root->set_tooltip(String("${ROOT}\n") + TTR("Root node name")); + but_insert_root->set_tooltip(String("${ROOT}\n") + TTR("Root node name.")); but_insert_root->set_focus_mode(Control::FOCUS_NONE); but_insert_root->connect("pressed", callable_mp(this, &RenameDialog::_insert_text), make_binds("${ROOT}")); but_insert_root->set_h_size_flags(Control::SIZE_EXPAND_FILL); @@ -199,7 +193,7 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und chk_per_level_counter = memnew(CheckBox); chk_per_level_counter->set_text(TTR("Per-level Counter")); - chk_per_level_counter->set_tooltip(TTR("If set the counter restarts for each group of child nodes")); + chk_per_level_counter->set_tooltip(TTR("If set, the counter restarts for each group of child nodes.")); vbc_substitute->add_child(chk_per_level_counter); HBoxContainer *hbc_count_options = memnew(HBoxContainer); @@ -207,22 +201,22 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und Label *lbl_count_start = memnew(Label); lbl_count_start->set_text(TTR("Start")); - lbl_count_start->set_tooltip(TTR("Initial value for the counter")); + lbl_count_start->set_tooltip(TTR("Initial value for the counter.")); hbc_count_options->add_child(lbl_count_start); spn_count_start = memnew(SpinBox); - spn_count_start->set_tooltip(TTR("Initial value for the counter")); + spn_count_start->set_tooltip(TTR("Initial value for the counter.")); spn_count_start->set_step(1); spn_count_start->set_min(0); hbc_count_options->add_child(spn_count_start); Label *lbl_count_step = memnew(Label); lbl_count_step->set_text(TTR("Step")); - lbl_count_step->set_tooltip(TTR("Amount by which counter is incremented for each node")); + lbl_count_step->set_tooltip(TTR("Amount by which counter is incremented for each node.")); hbc_count_options->add_child(lbl_count_step); spn_count_step = memnew(SpinBox); - spn_count_step->set_tooltip(TTR("Amount by which counter is incremented for each node")); + spn_count_step->set_tooltip(TTR("Amount by which counter is incremented for each node.")); spn_count_step->set_step(1); hbc_count_options->add_child(spn_count_step); @@ -241,7 +235,6 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und VBoxContainer *vbc_process = memnew(VBoxContainer); vbc_process->set_h_size_flags(Control::SIZE_EXPAND_FILL); vbc_process->set_name(TTR("Post-Process")); - vbc_process->set_custom_minimum_size(Size2(0, feature_min_height)); tabc_features->add_child(vbc_process); cbut_process = memnew(CheckBox); @@ -285,18 +278,14 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und vbc->add_child(sep_preview); lbl_preview_title = memnew(Label); - lbl_preview_title->set_text(TTR("Preview")); vbc->add_child(lbl_preview_title); lbl_preview = memnew(Label); - lbl_preview->set_text(""); - lbl_preview->add_theme_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_theme_color("error_color", "Editor")); vbc->add_child(lbl_preview); // ---- Dialog related set_min_size(Size2(383, 0)); - //set_as_toplevel(true); get_ok()->set_text(TTR("Rename")); Button *but_reset = add_button(TTR("Reset")); @@ -307,7 +296,7 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und cbut_collapse_features->connect("toggled", callable_mp(this, &RenameDialog::_features_toggled)); - // Substitite Buttons + // Substitute Buttons lne_search->connect("focus_entered", callable_mp(this, &RenameDialog::_update_substitute)); lne_search->connect("focus_exited", callable_mp(this, &RenameDialog::_update_substitute)); @@ -391,7 +380,7 @@ void RenameDialog::_update_preview(String new_text) { String new_name = _apply_rename(preview_node, spn_count_start->get_value()); if (!has_errors) { - lbl_preview_title->set_text(TTR("Preview")); + lbl_preview_title->set_text(TTR("Preview:")); lbl_preview->set_text(new_name); if (new_name == preview_node->get_name()) { @@ -482,7 +471,7 @@ void RenameDialog::_error_handler(void *p_self, const char *p_func, const char * } self->has_errors = true; - self->lbl_preview_title->set_text(TTR("Regular Expression Error")); + self->lbl_preview_title->set_text(TTR("Regular Expression Error:")); self->lbl_preview->add_theme_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_theme_color("error_color", "Editor")); self->lbl_preview->set_text(vformat(TTR("At character %s"), err_str)); } diff --git a/editor/reparent_dialog.cpp b/editor/reparent_dialog.cpp index e5ae09f5ff..1615336a4b 100644 --- a/editor/reparent_dialog.cpp +++ b/editor/reparent_dialog.cpp @@ -75,14 +75,8 @@ ReparentDialog::ReparentDialog() { tree = memnew(SceneTreeEditor(false)); tree->set_show_enabled_subscene(true); - - vbc->add_margin_child(TTR("Reparent Location (Select new Parent):"), tree, true); - tree->get_scene_tree()->connect("item_activated", callable_mp(this, &ReparentDialog::_reparent)); - - //Label *label = memnew( Label ); - //label->set_position( Point2( 15,8) ); - //label->set_text("Reparent Location (Select new Parent):"); + vbc->add_margin_child(TTR("Select new parent:"), tree, true); keep_transform = memnew(CheckBox); keep_transform->set_text(TTR("Keep Global Transform")); diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 41b8baeb2f..ce869feddd 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -645,9 +645,8 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { for (List<Node *>::Element *E = nodes.front(); E; E = E->next()) { nodeset.insert(E->get()); } - reparent_dialog->popup_centered_ratio(); reparent_dialog->set_current(nodeset); - + reparent_dialog->popup_centered_clamped(Size2(350, 700) * EDSCALE); } break; case TOOL_MAKE_ROOT: { if (!profile_allow_editing) { @@ -834,8 +833,8 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { } new_scene_from_dialog->set_current_path(existing); - new_scene_from_dialog->popup_centered_ratio(); new_scene_from_dialog->set_title(TTR("Save New Scene As...")); + new_scene_from_dialog->popup_file_dialog(); } break; case TOOL_COPY_NODE_PATH: { List<Node *> selection = editor_selection->get_selected_node_list(); @@ -1101,6 +1100,7 @@ void SceneTreeDock::_notification(int p_what) { node_shortcuts_toggle->set_name("NodeShortcutsToggle"); node_shortcuts_toggle->set_icon(get_theme_icon("Favorites", "EditorIcons")); node_shortcuts_toggle->set_toggle_mode(true); + node_shortcuts_toggle->set_tooltip(TTR("Switch to Favorite Nodes")); node_shortcuts_toggle->set_pressed(EDITOR_GET("_use_favorites_root_selection")); node_shortcuts_toggle->set_anchors_and_margins_preset(Control::PRESET_CENTER_RIGHT); node_shortcuts_toggle->connect("pressed", callable_mp(this, &SceneTreeDock::_update_create_root_dialog)); @@ -1218,7 +1218,6 @@ void SceneTreeDock::_node_selected() { Node *node = scene_tree->get_selected(); if (!node) { - editor->push_item(nullptr); return; } @@ -1903,11 +1902,10 @@ void SceneTreeDock::_selection_changed() { if (selection_size > 1) { //automatically turn on multi-edit _tool_selected(TOOL_MULTI_EDIT); - } else if (selection_size == 1) { - editor->push_item(EditorNode::get_singleton()->get_editor_selection()->get_selected_node_list()[0]); - } else { + } else if (selection_size == 0) { editor->push_item(nullptr); } + _update_script_button(); } @@ -2720,7 +2718,7 @@ void SceneTreeDock::_update_create_root_dialog() { if (l != String()) { Button *button = memnew(Button); favorite_nodes->add_child(button); - button->set_text(TTR(l)); + button->set_text(l); String name = l.get_slicec(' ', 0); if (ScriptServer::is_global_class(name)) { name = ScriptServer::get_global_class_native_base(name); diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp index f30e57579f..a62448169d 100644 --- a/editor/scene_tree_editor.cpp +++ b/editor/scene_tree_editor.cpp @@ -33,6 +33,7 @@ #include "core/message_queue.h" #include "core/print_string.h" #include "editor/editor_node.h" +#include "editor/editor_scale.h" #include "editor/node_dock.h" #include "editor/plugins/animation_player_editor_plugin.h" #include "editor/plugins/canvas_item_editor_plugin.h" @@ -257,27 +258,35 @@ bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) { int num_connections = p_node->get_persistent_signal_connection_count(); int num_groups = p_node->get_persistent_group_count(); + String msg_temp; + if (num_connections >= 1) { + Array arr; + arr.push_back(num_connections); + msg_temp += TTRN("Node has one connection.", "Node has {num} connections.", num_connections).format(arr, "{num}"); + msg_temp += " "; + } + if (num_groups >= 1) { + Array arr; + arr.push_back(num_groups); + msg_temp += TTRN("Node is in one group.", "Node is in {num} groups.", num_groups).format(arr, "{num}"); + } + if (num_connections >= 1 || num_groups >= 1) { + msg_temp += "\n" + TTR("Click to show signals dock."); + } + + Ref<Texture2D> icon_temp; + auto signal_temp = BUTTON_SIGNALS; if (num_connections >= 1 && num_groups >= 1) { - item->add_button( - 0, - get_theme_icon("SignalsAndGroups", "EditorIcons"), - BUTTON_SIGNALS, - false, - vformat(TTR("Node has %s connection(s) and %s group(s).\nClick to show signals dock."), num_connections, num_groups)); + icon_temp = get_theme_icon("SignalsAndGroups", "EditorIcons"); } else if (num_connections >= 1) { - item->add_button( - 0, - get_theme_icon("Signals", "EditorIcons"), - BUTTON_SIGNALS, - false, - vformat(TTR("Node has %s connection(s).\nClick to show signals dock."), num_connections)); + icon_temp = get_theme_icon("Signals", "EditorIcons"); } else if (num_groups >= 1) { - item->add_button( - 0, - get_theme_icon("Groups", "EditorIcons"), - BUTTON_GROUPS, - false, - vformat(TTR("Node is in %s group(s).\nClick to show groups dock."), num_groups)); + icon_temp = get_theme_icon("Groups", "EditorIcons"); + signal_temp = BUTTON_GROUPS; + } + + if (num_connections >= 1 || num_groups >= 1) { + item->add_button(0, icon_temp, signal_temp, false, msg_temp); } } @@ -1194,6 +1203,10 @@ SceneTreeEditor::~SceneTreeEditor() { /******** DIALOG *********/ +void SceneTreeDialog::popup_scenetree_dialog() { + popup_centered_clamped(Size2(350, 700) * EDSCALE); +} + void SceneTreeDialog::_notification(int p_what) { switch (p_what) { case NOTIFICATION_VISIBILITY_CHANGED: { diff --git a/editor/scene_tree_editor.h b/editor/scene_tree_editor.h index 106837f69a..21bb0ec062 100644 --- a/editor/scene_tree_editor.h +++ b/editor/scene_tree_editor.h @@ -179,6 +179,7 @@ protected: static void _bind_methods(); public: + void popup_scenetree_dialog(); SceneTreeEditor *get_scene_tree() { return tree; } SceneTreeDialog(); ~SceneTreeDialog(); diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp index 40e0582046..90efb11b7d 100644 --- a/editor/script_create_dialog.cpp +++ b/editor/script_create_dialog.cpp @@ -540,7 +540,7 @@ void ScriptCreateDialog::_browse_path(bool browse_parent, bool p_save) { } file_browse->set_current_path(file_path->get_text()); - file_browse->popup_centered_ratio(); + file_browse->popup_file_dialog(); } void ScriptCreateDialog::_file_selected(const String &p_file) { @@ -603,7 +603,7 @@ void ScriptCreateDialog::_path_entered(const String &p_path) { } void ScriptCreateDialog::_msg_script_valid(bool valid, const String &p_msg) { - error_label->set_text("- " + TTR(p_msg)); + error_label->set_text("- " + p_msg); if (valid) { error_label->add_theme_color_override("font_color", gc->get_theme_color("success_color", "Editor")); } else { @@ -612,7 +612,7 @@ void ScriptCreateDialog::_msg_script_valid(bool valid, const String &p_msg) { } void ScriptCreateDialog::_msg_path_valid(bool valid, const String &p_msg) { - path_error_label->set_text("- " + TTR(p_msg)); + path_error_label->set_text("- " + p_msg); if (valid) { path_error_label->add_theme_color_override("font_color", gc->get_theme_color("success_color", "Editor")); } else { @@ -722,6 +722,15 @@ void ScriptCreateDialog::_update_dialog() { } get_ok()->set_disabled(!script_ok); + + Callable entered_call = callable_mp(this, &ScriptCreateDialog::_path_entered); + if (script_ok) { + if (!file_path->is_connected("text_entered", entered_call)) { + file_path->connect("text_entered", entered_call); + } + } else if (file_path->is_connected("text_entered", entered_call)) { + file_path->disconnect("text_entered", entered_call); + } } void ScriptCreateDialog::_bind_methods() { @@ -849,7 +858,6 @@ ScriptCreateDialog::ScriptCreateDialog() { hb->connect("sort_children", callable_mp(this, &ScriptCreateDialog::_path_hbox_sorted)); file_path = memnew(LineEdit); file_path->connect("text_changed", callable_mp(this, &ScriptCreateDialog::_path_changed)); - file_path->connect("text_entered", callable_mp(this, &ScriptCreateDialog::_path_entered)); file_path->set_h_size_flags(Control::SIZE_EXPAND_FILL); hb->add_child(file_path); path_button = memnew(Button); diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index 9f286bd8f6..35610ef71b 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -405,6 +405,7 @@ EditorSettingsDialog::EditorSettingsDialog() { tab_general->add_child(hbc); search_box = memnew(LineEdit); + search_box->set_placeholder(TTR("Search")); search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); hbc->add_child(search_box); @@ -449,6 +450,7 @@ EditorSettingsDialog::EditorSettingsDialog() { tab_shortcuts->add_child(hbc); shortcut_search_box = memnew(LineEdit); + shortcut_search_box->set_placeholder(TTR("Search")); shortcut_search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); hbc->add_child(shortcut_search_box); shortcut_search_box->connect("text_changed", callable_mp(this, &EditorSettingsDialog::_filter_shortcuts)); diff --git a/editor/translations/af.po b/editor/translations/af.po index daa0737106..90dca850de 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -2403,10 +2403,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10565,6 +10561,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Skrap" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Skrap" @@ -12232,6 +12233,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/ar.po b/editor/translations/ar.po index 5a0b6d1e17..075bc25f6e 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -41,12 +41,15 @@ # Anas <anas.ghamdi61@gmail.com>, 2020. # R-K <raouf9005@gmail.com>, 2020. # HeroFight dev <abdkafi2002@gmail.com>, 2020. +# أحمد مصطفى الطبراني <eltabaraniahmed@gmail.com>, 2020. +# ChemicalInk <aladdinalkhafaji@gmail.com>, 2020. +# Musab Alasaifer <mousablasefer@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" -"Last-Translator: Airbus5717 <Abdussamadf350@gmail.com>\n" +"PO-Revision-Date: 2020-08-11 14:04+0000\n" +"Last-Translator: Musab Alasaifer <mousablasefer@gmail.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" "godot/ar/>\n" "Language: ar\n" @@ -2342,10 +2345,6 @@ msgid "There is no defined scene to run." msgstr "ليس هناك مشهد محدد ليتم تشغيله." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "المشهد الحالي لم يتم حفظه. الرجاء حفظ المشهد قبل تشغيله و اختباره." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "لا يمكن بدء عملية جانبية!" @@ -4722,17 +4721,16 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp msgid "Transition: " -msgstr "التحريك " +msgstr "الانتقال: " #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Play Mode:" -msgstr "وضع السحب" +msgstr "وضع اللعب:" #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" -msgstr "مسارات التحريك" +msgstr "شجرة التحريك" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "New name:" @@ -4899,14 +4897,12 @@ msgid "Request failed, return code:" msgstr "فشل إتمام الطلب٫ الرمز الذي تم إرجاعه:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed." 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." @@ -4917,19 +4913,16 @@ msgid "Request failed, too many redirects" msgstr "فشل الطلب٫ السبب هو اعادة التحويل مرات اكثر من اللازم" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Redirect loop." msgstr "اعادة توجيه حلقة التكرار." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed, timeout" -msgstr "فشل إتمام الطلب٫ الرمز الذي تم إرجاعه:" +msgstr "فشل الطلب ، انتهت المهلة" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Timeout." -msgstr "الوقت" +msgstr "إنتهى الوقت" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." @@ -4952,14 +4945,12 @@ msgid "Asset Download Error:" msgstr "خطأ في تنزيل الأصول:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Downloading (%s / %s)..." -msgstr "جاري التنزيل" +msgstr "جاري التنزيل (%s / %s)..." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Downloading..." -msgstr "جاري التنزيل" +msgstr "جاري التنزيل..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Resolving..." @@ -4974,9 +4965,8 @@ msgid "Idle" msgstr "عاطل" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Install..." -msgstr "تثبيت" +msgstr "تثبيت..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Retry" @@ -5007,24 +4997,20 @@ 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 -#, fuzzy msgid "First" msgstr "الأول" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Previous" -msgstr "التبويب السابق" +msgstr "السابق" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Next" @@ -5043,14 +5029,12 @@ msgid "No results for \"%s\"." msgstr "لا نتائج من أجل \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Import..." -msgstr "إستيراد" +msgstr "استيراد..." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Plugins..." -msgstr "إضافات" +msgstr "إضافات..." #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" @@ -5066,9 +5050,8 @@ msgid "Site:" msgstr "الموقع:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support" -msgstr "الدعم..." +msgstr "الدعم" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Official" @@ -5079,9 +5062,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" @@ -5594,9 +5576,8 @@ msgid "Scale mask for inserting keys." msgstr "قناع التحجيم لأجل إدخال المفاتيح." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Insert keys (based on mask)." -msgstr "أدخل مفتاح (مسارات موجودة بالفعل)" +msgstr "أدخل المفاتيح (على أساس القناع)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5639,9 +5620,8 @@ msgid "Divide grid step by 2" msgstr "قسم خطوة الشبكة بـ 2" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Pan View" -msgstr "أظهر" +msgstr "إظهار شامل" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Add %s" @@ -5666,9 +5646,8 @@ msgid "Error instancing scene from %s" msgstr "خطأ في توضيح المشهد من %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Change Default Type" -msgstr "غير النوع الإفتراضي" +msgstr "تغير النوع الإفتراضي" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5753,9 +5732,8 @@ msgid "Emission Colors" msgstr "الوان الإنبعاث" #: editor/plugins/cpu_particles_editor_plugin.cpp -#, fuzzy msgid "CPUParticles" -msgstr "جسيمات" +msgstr "جزيئات وحدة المعالجة المركزية" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -5816,9 +5794,8 @@ msgid "Right Linear" msgstr "الخط اليميني" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Load Preset" -msgstr "تحميل الإعداد المعد مسبقاً" +msgstr "تحميل إعداد مسبق" #: editor/plugins/curve_editor_plugin.cpp msgid "Remove Curve Point" @@ -5974,9 +5951,8 @@ msgstr "" "هذا هو الخيار الأكثر دقة (لكنه الأبطئ) لأجل للكشف عن وقوع التصادم." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Single Convex Collision Sibling" -msgstr "إنشاء متصادم محدب قريب" +msgstr "إنشاء شقيق تصادم محدب مفرد" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" @@ -5987,9 +5963,8 @@ msgstr "" "هذا هو الخيار الأسرع (لكنه الأقل دقة) للكشف عن وقوع التصادم." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Multiple Convex Collision Siblings" -msgstr "إنشاء متصادم محدب قريب" +msgstr "إنشاء أشقاء تصادم محدب متعددة" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "" @@ -6044,16 +6019,16 @@ msgid "Remove item %d?" msgstr "مسح العنصر %d؟" #: editor/plugins/mesh_library_editor_plugin.cpp -#, fuzzy msgid "" "Update from existing scene?:\n" "%s" -msgstr "تحديث من المشهد" +msgstr "" +"التحديث من المشهد المتواجد؟:\n" +"%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 @@ -6171,12 +6146,10 @@ msgstr "إنشاء مُضلع التنقل" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles" -msgstr "تحويل إلي %s" +msgstr "تحويل إلى %s" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" msgstr "توليد Rect الرؤية" @@ -6198,23 +6171,20 @@ 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." msgstr "\"%s\" لا يرث الفراغي Spatial." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "\"%s\" doesn't contain geometry." -msgstr "العقدة لا تحتوي على هندسة." +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" @@ -6274,9 +6244,8 @@ msgid "Add Point to Curve" msgstr "أضف نقطة للمنحنى" #: editor/plugins/path_2d_editor_plugin.cpp -#, fuzzy msgid "Split Curve" -msgstr "تحرير منحنى العقدة" +msgstr "تقسيم المنحنى" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Move Point in Curve" @@ -6907,49 +6876,42 @@ msgid "Debugger" msgstr "مُنقح الأخطاء" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" -msgstr "إبحث في المساعدة" +msgstr "نتائج البحث" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Clear Recent Scripts" -msgstr "إخلاء المشاهد الحالية" +msgstr "إخلاء النصوص البرمجية الحديثة" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Connections to method:" -msgstr "صلها بالعقدة:" +msgstr "الاتصالات لدالة:" #: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Source" -msgstr "مورد" +msgstr "مصدر" #: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "الهدف" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "" "Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." -msgstr "قطع إتصال'%s' من '%s'" +msgstr "" +"الدالة المتصلة '%s' للاشارة '%s' مفقودة من العقدة '%s' إلى العقدة '%s'." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "[Ignore]" msgstr "(تجاهل)" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Line" -msgstr "الخط:" +msgstr "خط" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function" -msgstr "مسح المهمة" +msgstr "انتقل الى الوظيفة البرمجية" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." @@ -6999,9 +6961,8 @@ msgid "Bookmarks" msgstr "المحفوظات" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Breakpoints" -msgstr "مسح النقاط" +msgstr "نقاط التكسّر" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp @@ -7050,66 +7011,56 @@ msgid "Complete Symbol" msgstr "رمز التمام" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Evaluate Selection" -msgstr "تكبير المحدد" +msgstr "تقييم الاختيار" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" msgstr "تشذيب الفراغات البيضاء الزائدة" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" -msgstr "تحويل إلي %s" +msgstr "تحويل المسافة البادئة إلى مسافات" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" -msgstr "تحويل إلي %s" +msgstr "تحويل المسافة البادئة إلى تبويبات" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" msgstr "مسافة بادئة تلقائية" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." -msgstr "فلتر الملفات..." +msgstr "جِد في الملفات..." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" msgstr "مساعدة سياقية" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Toggle Bookmark" -msgstr "إلغاء/تفعيل وضع النظرة الحرة" +msgstr "تبديل العلامة المرجعية" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Bookmark" -msgstr "إذهب إلي الخطوة التالية" +msgstr "الانتقال إلى العلامة المرجعية التالية" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Bookmark" -msgstr "إذهب إلي الخطوة السابقة" +msgstr "الانتقال إلى العلامة المرجعية السابقة" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Remove All Bookmarks" -msgstr "مسح الكل" +msgstr "إزالة جميع الإشارات المرجعية" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." -msgstr "مسح المهمة" +msgstr "الذهاب إلى وظيفة برمجية..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." -msgstr "إذهب إلي الخط" +msgstr "الذهاب إلى خط..." #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -7121,14 +7072,12 @@ msgid "Remove All Breakpoints" msgstr "إزالة جميع نقاط التكسّر" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" -msgstr "إذهب إلي الخطوة التالية" +msgstr "الذهاب إلى نقطة التكسّر التالية" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" -msgstr "إذهب إلي الخطوة السابقة" +msgstr "الذهاب إلى نقطة التكسّر السابقة" #: editor/plugins/shader_editor_plugin.cpp msgid "" @@ -7147,9 +7096,8 @@ msgid "This skeleton has no bones, create some children Bone2D nodes." msgstr "لا يملك هذا الهكيل أيّة عظام، أنشئ بعض عُقد العظام ثنائية البُعد كأبناء." #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Create Rest Pose from Bones" -msgstr "أنشئ نقاط إنبعاث من الشبكة" +msgstr "إنشاء وضعية الراحة من العظام" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Rest Pose to Bones" @@ -7168,23 +7116,20 @@ msgid "Set Bones to Rest Pose" msgstr "تحديد العظام لتكون في وضعية الراحة" #: editor/plugins/skeleton_editor_plugin.cpp -#, fuzzy msgid "Create physical bones" -msgstr "أنشئ ميش التنقل" +msgstr "إنشاء عظام مادية" #: editor/plugins/skeleton_editor_plugin.cpp msgid "Skeleton" msgstr "الهيكل" #: editor/plugins/skeleton_editor_plugin.cpp -#, fuzzy msgid "Create physical skeleton" -msgstr "إنشاء حل C#" +msgstr "إنشاء هيكل عظمي مادي" #: editor/plugins/skeleton_ik_editor_plugin.cpp -#, fuzzy msgid "Play IK" -msgstr "تشغيل" +msgstr "تشغيل IK" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orthogonal" @@ -7377,12 +7322,11 @@ msgstr "المستمع الصوتي" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Enable Doppler" -msgstr "تغيير خط الحركة" +msgstr "تفعيل دوبلر" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Cinematic Preview" -msgstr "يُنشئ مستعرضات الميش" +msgstr "معاينة سينمائية" #: editor/plugins/spatial_editor_plugin.cpp msgid "Not available when using the GLES2 renderer." @@ -7444,6 +7388,12 @@ msgid "" "Closed eye: Gizmo is hidden.\n" "Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")." msgstr "" +"انقر للتبديل بين حالات الرؤية.\n" +"\n" +"العين المفتوحة: الأداة مرئية.\n" +"العين المغلقة: الأداة مخفية.\n" +"العين نصف مفتوحة: الأداة مرئية أيضا من خلال الأسطح المعتمة (\"الأشعة السينية" +"\")." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Nodes To Floor" @@ -7521,9 +7471,8 @@ msgid "Transform" msgstr "التحوّل" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Object to Floor" -msgstr "الكبس إلي الشبكة" +msgstr "محاذاة الشيء إلى الأرض" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." @@ -7567,9 +7516,8 @@ msgstr "إظهار الشبكة" #: editor/plugins/spatial_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Settings..." -msgstr "جاري الإعداد..." +msgstr "اعدادات..." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -7637,48 +7585,40 @@ msgid "Nameless gizmo" msgstr "أداة (gizmo) غير مسماة" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create Mesh2D" -msgstr "إنشاء شبكة الخطوط العريضة" +msgstr "إنشاء Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Mesh2D Preview" -msgstr "يُنشئ مستعرضات الميش" +msgstr "معاينة Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create Polygon2D" -msgstr "إنشاء بولي" +msgstr "إنشاء مُضلع ثنائي الأبعاد" #: editor/plugins/sprite_editor_plugin.cpp msgid "Polygon2D Preview" msgstr "مُعاينة المُضلع ثنائي الأبعاد" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create CollisionPolygon2D" -msgstr "إنشاء مُضلع التنقل" +msgstr "إنشاء مُضلع تصادم ثنائي الأبعاد" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "CollisionPolygon2D Preview" -msgstr "إنشاء مُضلع التنقل" +msgstr "معاينة مُضلع التصادم ثنائي الأبعاد" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create LightOccluder2D" -msgstr "أنشئ شكل مُطبق" +msgstr "إنشاء LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "LightOccluder2D Preview" -msgstr "أنشئ شكل مُطبق" +msgstr "معاينة LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Sprite is empty!" -msgstr "الميش فارغ!" +msgstr "الرسومية فارغة!" #: editor/plugins/sprite_editor_plugin.cpp msgid "Can't convert a sprite using animation frames to mesh." @@ -7691,27 +7631,24 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "هندسياً غير صالح، لا يمكن استبداله بسطح (mesh)." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to Mesh2D" -msgstr "تحويل إلي %s" +msgstr "تحويل إلى Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create polygon." msgstr "هندسياصً غير صالح، لا يمكن إنشاء مُضلّع." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to Polygon2D" -msgstr "تحويل إلي %s" +msgstr "تحويل إلى مُضلع ثنائي الأبعاد" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create collision polygon." msgstr "هندسياً غير صالح، لا يمكن إنشاء مُضلع تصادم." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create CollisionPolygon2D Sibling" -msgstr "إنشاء مُضلع التنقل" +msgstr "إنشاء شقيق لمُضلع التصادم ثنائي الأبعاد" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create light occluder." @@ -7739,9 +7676,8 @@ msgid "Grow (Pixels): " msgstr "التكبير (Pixels): " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Update Preview" -msgstr "إستعراض" +msgstr "تحديث المُعاينة" #: editor/plugins/sprite_editor_plugin.cpp msgid "Settings:" @@ -7812,9 +7748,8 @@ msgid "Animation Frames:" msgstr "إطارات الرسومات المتحركة:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Add a Texture from File" -msgstr "التقط من البيكسل" +msgstr "إضافة ملمس من الملف" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frames from a Sprite Sheet" @@ -7837,9 +7772,8 @@ msgid "Move (After)" msgstr "تحريك (للتالي)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Select Frames" -msgstr "تحديد الوضع" +msgstr "تحديد الإطارات" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Horizontal:" @@ -7951,23 +7885,20 @@ msgid "Create From Current Editor Theme" msgstr "إنشاء مستمد من موضوع Theme المحرر الحالي" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Toggle Button" -msgstr "إلغاء/تفعيل التشغيل التلقائي" +msgstr "زر التبديل" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled Button" -msgstr "معطّل" +msgstr "زر معطّل" #: editor/plugins/theme_editor_plugin.cpp msgid "Item" msgstr "عنصر" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled Item" -msgstr "معطّل" +msgstr "عنصر معطّل" #: editor/plugins/theme_editor_plugin.cpp msgid "Check Item" @@ -7994,14 +7925,12 @@ msgid "Submenu" msgstr "القائمة الفرعية" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 1" -msgstr "عنصر" +msgstr "العنصر الفرعي 1" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 2" -msgstr "عنصر" +msgstr "العنصر الفرعي 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" @@ -8012,9 +7941,8 @@ msgid "Many" msgstr "العديد" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled LineEdit" -msgstr "معطّل" +msgstr "تعديل الخط معطّل" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" @@ -8029,18 +7957,16 @@ msgid "Tab 3" msgstr "علامة التبويب 3" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Editable Item" -msgstr "عنصر انتقاء" +msgstr "عنصر قابل للتعديل" #: editor/plugins/theme_editor_plugin.cpp msgid "Subtree" msgstr "الشجرة الفرعية" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Has,Many,Options" -msgstr "بكثير، خيارات عديدة،!" +msgstr "يمتلك، خيارات، عديدة" #: editor/plugins/theme_editor_plugin.cpp msgid "Data Type:" @@ -8064,9 +7990,8 @@ msgid "Color" msgstr "اللون" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Theme File" -msgstr "إفتح ملف" +msgstr "ملف الثيم" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -8079,9 +8004,8 @@ msgstr "اسم غير صالح." #: editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "نصف المُحدد" +msgstr "قص المُحدد" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -8117,9 +8041,8 @@ msgid "Disable Autotile" msgstr "تعطيل البلاط التلقائي Autotile" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Enable Priority" -msgstr "تعديل المصافي" +msgstr "تمكين الأولوية" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy @@ -8148,14 +8071,12 @@ msgid "Pick Tile" msgstr "اختيار البلاط" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate Left" -msgstr "وضع التدوير" +msgstr "تدوير لليسار" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate Right" -msgstr "وضع التدوير" +msgstr "تدوير لليمين" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip Horizontally" @@ -8166,9 +8087,8 @@ msgid "Flip Vertically" msgstr "القلب عموديًا" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Clear Transform" -msgstr "تحويل تغيير التحريك" +msgstr "محو التَحَوّل" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Add Texture(s) to TileSet." @@ -8209,9 +8129,8 @@ msgid "Select the next shape, subtile, or Tile." msgstr "اختر الشكل أو البلاط الفرعي أو البلاط التالي." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Previous Coordinate" -msgstr "التبويب السابق" +msgstr "الإحداثيات السابقة" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the previous shape, subtile, or Tile." @@ -8292,9 +8211,8 @@ msgid "Erase bitmask." msgstr "زر الفأرة الأيمن: مسح النقطة." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create a new rectangle." -msgstr "إنشاء %s جديد" +msgstr "إنشاء مستطيل جديد." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." @@ -8569,9 +8487,8 @@ msgid "Add a commit message" msgstr "إضافة رسالة إجراء" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit Changes" -msgstr "مزامنة تغييرات الكود" +msgstr "اقتراف التعديلا" #: editor/plugins/version_control_editor_plugin.cpp #: modules/gdnative/gdnative_library_singleton_editor.cpp @@ -9367,9 +9284,8 @@ msgid "Vector constant." msgstr "ثابت المُتجه." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector uniform." -msgstr "التعين للإنتظام." +msgstr "مُتجهات موحدة." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -10189,9 +10105,8 @@ msgid "Settings saved OK." msgstr "تيسّر حفظ الإعدادات." #: editor/project_settings_editor.cpp -#, fuzzy msgid "Moved Input Action Event" -msgstr "حرك النقطة داخل المنحنى" +msgstr "حدث إجراء إدخال الذي تم نقله" #: editor/project_settings_editor.cpp msgid "Override for Feature" @@ -10386,9 +10301,8 @@ msgid "Select Method" msgstr "إختر طريقة" #: editor/rename_dialog.cpp editor/scene_tree_dock.cpp -#, fuzzy msgid "Batch Rename" -msgstr "إعادة التسمية" +msgstr "إعادة تسمية الدفعة" #: editor/rename_dialog.cpp msgid "Prefix" @@ -10411,9 +10325,8 @@ msgid "Substitute" msgstr "استبدال" #: editor/rename_dialog.cpp -#, fuzzy msgid "Node name" -msgstr "إسم العقدة:" +msgstr "إسم العقدة" #: editor/rename_dialog.cpp msgid "Node's parent name, if available" @@ -10452,9 +10365,8 @@ msgid "Initial value for the counter" msgstr "القيمة المبدئية للعداد" #: editor/rename_dialog.cpp -#, fuzzy msgid "Step" -msgstr "خطوة (ثانية):" +msgstr "الخطوة" #: editor/rename_dialog.cpp msgid "Amount by which counter is incremented for each node" @@ -10501,9 +10413,8 @@ msgid "To Uppercase" msgstr "لأحرف كبيرة Uppercase" #: editor/rename_dialog.cpp -#, fuzzy msgid "Reset" -msgstr "إرجاع التكبير" +msgstr "إعادة تعيين" #: editor/rename_dialog.cpp msgid "Regular Expression Error" @@ -10576,9 +10487,8 @@ msgid "Instance Child Scene" msgstr "نمذجة المشهد الابن" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Detach Script" -msgstr "إلحاق نص برمجي" +msgstr "فصل النص البرمجي" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." @@ -10611,14 +10521,16 @@ msgid "Instantiated scenes can't become root" msgstr "لا يمكن أن تصبح المشاهد المنمذجة مشاهد رئيسة (جذر)" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make node as Root" -msgstr "حفظ المشهد" +msgstr "جعل العقدة المشهد الرئيس" + +#: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "حذف العُقدة %d مع جميع أبنائها؟" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete %d nodes?" -msgstr "إنشاء عقدة" +msgstr "حذف العُقد %d" #: editor/scene_tree_dock.cpp msgid "Delete the root node \"%s\"?" @@ -10629,9 +10541,8 @@ msgid "Delete node \"%s\" and its children?" msgstr "حذف العُقدة \"%s\" مع جميع أبنائها؟" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete node \"%s\"?" -msgstr "إنشاء عقدة" +msgstr "حذف العقدة \"%s\"؟" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." @@ -10687,9 +10598,8 @@ msgid "User Interface" msgstr "واجهة المستخدم" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Other Node" -msgstr "إنشاء عقدة" +msgstr "عقدة أخرى" #: editor/scene_tree_dock.cpp msgid "Can't operate on nodes from a foreign scene!" @@ -10742,9 +10652,8 @@ msgid "Load As Placeholder" msgstr "تحميله كعنصر نائب" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open Documentation" -msgstr "فُتح مؤخراً" +msgstr "فتح الوثائق" #: editor/scene_tree_dock.cpp msgid "" @@ -10752,15 +10661,16 @@ msgid "" "This is probably because this editor was built with all language modules " "disabled." msgstr "" +"لا يمكن إرفاق نص برمجي: لا توجد لغات مسجلة.\n" +"ربما يكون هذا بسبب أن المحرر تم إنشاؤه مع تعطيل جميع وحدات اللغة." #: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "إضافة عُقدة ابن" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Expand/Collapse All" -msgstr "طوي الكل" +msgstr "توسيع / طي الكل" #: editor/scene_tree_dock.cpp msgid "Change Type" @@ -10772,9 +10682,8 @@ msgid "Reparent to New Node" msgstr "إنشاء %s جديد" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make Scene Root" -msgstr "حفظ المشهد" +msgstr "جعل المشهد الرئيس" #: editor/scene_tree_dock.cpp msgid "Merge From Scene" @@ -10793,9 +10702,8 @@ msgid "Delete (No Confirm)" msgstr "حذف (دون تأكيد)" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Add/Create a New Node." -msgstr "إنشاء %s جديد" +msgstr "إضافة/إنشاء عقدة جديدة." #: editor/scene_tree_dock.cpp msgid "" @@ -10806,14 +10714,12 @@ msgstr "" "موروث." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Attach a new or existing script to the selected node." msgstr "إلحاق نص برمجي موجود أو جديد للعُقدة المختارة." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Detach the script from the selected node." -msgstr "مسح النص البرمجي للعُقدة المختارة." +msgstr "فصل النص البرمجي من العُقدة المختارة." #: editor/scene_tree_dock.cpp msgid "Remote" @@ -10828,9 +10734,8 @@ msgid "Clear Inheritance? (No Undo!)" msgstr "مسح الموروث؟ (لا تراجع!)" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Toggle Visible" -msgstr "أظهر الملفات المخفية" +msgstr "تشغيل/إطفاء الوضوحية" #: editor/scene_tree_editor.cpp #, fuzzy @@ -12372,6 +12277,12 @@ msgstr "" "يجب تزويد ال CollisionShape2D بإحدى الأشكال (من نوع Shape2D) لتعمل بالشكل " "المطلوب. الرجاء تكوين و ضبط الشكل لها اولا!" +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12851,6 +12762,9 @@ msgstr "يمكن تعيين المتغيرات فقط في الذروة ." msgid "Constants cannot be modified." msgstr "لا يمكن تعديل الثوابت." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "المشهد الحالي لم يتم حفظه. الرجاء حفظ المشهد قبل تشغيله و اختباره." + #~ msgid "Not in resource path." #~ msgstr "ليس في مسار الموارد." diff --git a/editor/translations/bg.po b/editor/translations/bg.po index c9f38d518a..b0378d612c 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -2262,11 +2262,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"Текущата сцена никога не е била запазена. Моля, запазете я преди изпълнение." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10293,6 +10288,11 @@ msgid "Make node as Root" msgstr "Превръщане на възела в корен" #: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Изтриване на %d възела?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Изтриване на %d възела?" @@ -11996,6 +11996,12 @@ msgstr "" "За да работи CollisionShape2D, е нужно да му се даде форма. Моля, създайте " "му Shape2D ресурс." +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12484,6 +12490,11 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Текущата сцена никога не е била запазена. Моля, запазете я преди " +#~ "изпълнение." + #~ msgid "Not in resource path." #~ msgstr "Не е в пътя на ресурсите." diff --git a/editor/translations/bn.po b/editor/translations/bn.po index c438934246..5fdcfb385b 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -2490,11 +2490,6 @@ msgid "There is no defined scene to run." msgstr "চালানোর জন্য কোনো দৃশ্য নির্দিষ্ট করা নেই।" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"বর্তমান দৃশ্যটি কখনোই সংরক্ষণ করা হয় নি, অনুগ্রহ করে চালানোর পূর্বে এটি সংরক্ষণ করুন।" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "উপ-প্রক্রিয়াকে শুরু করা সম্ভব হয়নি!" @@ -11217,6 +11212,11 @@ msgstr "অর্থপূর্ন!" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "নোড(সমূহ) অপসারণ করুন" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "নোড(সমূহ) অপসারণ করুন" @@ -13032,6 +13032,12 @@ msgstr "" "সফল্ভাবে কাজ করতে CollisionShape2D এর একটি আকৃতি প্রয়োজন। অনুগ্রহ করে তার জন্য " "একটি আকৃতি তৈরি করুন!" +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -13552,6 +13558,11 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "বর্তমান দৃশ্যটি কখনোই সংরক্ষণ করা হয় নি, অনুগ্রহ করে চালানোর পূর্বে এটি সংরক্ষণ " +#~ "করুন।" + #~ msgid "Not in resource path." #~ msgstr "রিসোর্সের পথে নয়।" diff --git a/editor/translations/ca.po b/editor/translations/ca.po index 5fb91db7b4..359aea8184 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -2338,11 +2338,6 @@ msgid "There is no defined scene to run." msgstr "No s'ha definit cap escena per executar." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"L'escena actual no s'ha desat encara. Desa l'escena abans d'executar-la." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "No s'ha pogut començar el subprocés!" @@ -10818,6 +10813,11 @@ msgid "Make node as Root" msgstr "Convertir node en arrel" #: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Voleu suprimir el node \"%s\" i els seus fills?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Suprimir %d nodes?" @@ -12585,6 +12585,12 @@ msgstr "" "S'ha de proporcionar una forma perquè *CollisionShape2D pugui funcionar. " "Creeu-li un recurs de forma (shape)!" +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -13161,6 +13167,10 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Les constants no es poden modificar." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "L'escena actual no s'ha desat encara. Desa l'escena abans d'executar-la." + #~ msgid "Not in resource path." #~ msgstr "Fora del camí dels recursos." diff --git a/editor/translations/cs.po b/editor/translations/cs.po index 722fa52d92..0d2ae15065 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -20,12 +20,13 @@ # Filip Vincůrek <vincurek.f@gmail.com>, 2020. # Ondrej Pavelka <ondrej.pavelka@outlook.com>, 2020. # Zbyněk <zbynek.fiala@gmail.com>, 2020. +# Daniel Kříž <Daniel.kriz@protonmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" -"Last-Translator: Zbyněk <zbynek.fiala@gmail.com>\n" +"PO-Revision-Date: 2020-08-11 14:04+0000\n" +"Last-Translator: Daniel Kříž <Daniel.kriz@protonmail.com>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" "Language: cs\n" @@ -773,9 +774,8 @@ msgid "Method in target node must be specified." msgstr "Je nutné zadat metodu v cílovém uzlu." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Jméno není platný identifikátor:" +msgstr "Jméno metody musí být platný identifikátor." #: editor/connections_dialog.cpp msgid "" @@ -828,7 +828,7 @@ msgstr "Další argumenty volání:" #: editor/connections_dialog.cpp msgid "Receiver Method:" -msgstr "Metoda přijímače:" +msgstr "Metoda příjemce:" #: editor/connections_dialog.cpp msgid "Advanced" @@ -1296,7 +1296,7 @@ msgstr "Přetažením uspořádejte." #: editor/editor_audio_buses.cpp msgid "Solo" -msgstr "Solo" +msgstr "Sólo" #: editor/editor_audio_buses.cpp msgid "Mute" @@ -1496,7 +1496,7 @@ msgstr "Název" #: editor/editor_autoload_settings.cpp msgid "Singleton" -msgstr "Singleton" +msgstr "Singleton (jedináček)" #: editor/editor_data.cpp editor/inspector_dock.cpp msgid "Paste Params" @@ -1961,9 +1961,8 @@ msgid "Properties" msgstr "Vlastnosti" #: editor/editor_help.cpp -#, fuzzy msgid "override:" -msgstr "Přepsat" +msgstr "přepsat:" #: editor/editor_help.cpp msgid "default:" @@ -2339,10 +2338,6 @@ msgid "There is no defined scene to run." msgstr "Neexistuje žádná scéna pro spuštění." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "Aktuální scéna nebyla nikdy uložena, prosím uložte jí před spuštěním." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Nelze spustit podproces!" @@ -2427,9 +2422,8 @@ msgid "Can't reload a scene that was never saved." msgstr "Nelze načíst scénu, která nebyla nikdy uložena." #: editor/editor_node.cpp -#, fuzzy msgid "Reload Saved Scene" -msgstr "Uložit scénu" +msgstr "Znovunačíst uloženou scénu" #: editor/editor_node.cpp msgid "" @@ -2929,9 +2923,8 @@ msgid "Q&A" msgstr "Otázky a odpovědi" #: editor/editor_node.cpp -#, fuzzy msgid "Report a Bug" -msgstr "Znovu importovat" +msgstr "Nahlásit chybu" #: editor/editor_node.cpp msgid "Send Docs Feedback" @@ -3662,7 +3655,7 @@ msgstr "Otevřít scény" #: editor/filesystem_dock.cpp msgid "Instance" -msgstr "Instance" +msgstr "Instance:" #: editor/filesystem_dock.cpp msgid "Add to Favorites" @@ -5731,7 +5724,7 @@ msgstr "" #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" -msgstr "CPUParticles" +msgstr "CPUParticles (částice)" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6589,7 +6582,7 @@ msgstr "Vložit zdroj" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/scene_tree_editor.cpp msgid "Instance:" -msgstr "Instance:" +msgstr "Instance" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp @@ -7091,13 +7084,12 @@ msgid "Go to Previous Breakpoint" msgstr "Přejít na předchozí breakpoint" #: editor/plugins/shader_editor_plugin.cpp -#, fuzzy msgid "" "This shader has been modified on 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?:" +"Tento shader byl na disku upraven.\n" +"Jaká akce se má vykonat?" #: editor/plugins/shader_editor_plugin.cpp msgid "Shader" @@ -7118,7 +7110,7 @@ msgstr "" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Skeleton2D" -msgstr "Skeleton2D" +msgstr "Skeleton2D (Kostra 2D)" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Make Rest Pose (From Bones)" @@ -7857,7 +7849,7 @@ msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Offset:" -msgstr "Offset:" +msgstr "Offset(Posun):" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Step:" @@ -8193,9 +8185,8 @@ msgid "Occlusion" msgstr "Editovat polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Navigation" -msgstr "Vytvořit Navigation Mesh" +msgstr "Navigace" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8464,7 +8455,7 @@ msgstr "Tato vlastnost nemůže být změněna." #: editor/plugins/tile_set_editor_plugin.cpp msgid "TileSet" -msgstr "TileSet" +msgstr "TileSet (Sada dlaždic)" #: editor/plugins/version_control_editor_plugin.cpp #, fuzzy @@ -8974,7 +8965,7 @@ msgstr "Vrátí hyperbolický kosinus parametru." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in radians to degrees." -msgstr "Konvertuje množství v radiánech na stupně." +msgstr "Konvertuje hodnotu v radiánech na stupně." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-e Exponential." @@ -9031,7 +9022,7 @@ msgstr "Vrátí hodnotu prvního parametru umocněného druhým." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in degrees to radians." -msgstr "Konvertuje množství ve stupních na radiány." +msgstr "Konvertuje hodnotu ve stupních na radiány." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 / scalar" @@ -9530,7 +9521,7 @@ msgstr "Soubour balíčk" #: editor/project_export.cpp msgid "Features" -msgstr "Funkce" +msgstr "Vlastnosti" #: editor/project_export.cpp msgid "Custom (comma-separated):" @@ -9855,11 +9846,12 @@ msgid "" msgstr "Odstranit projekt ze seznamu? (Obsah složky zůstane nedotčen)" #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove this project from the list?\n" "The project folder's contents won't be modified." -msgstr "Odstranit projekt ze seznamu? (Obsah složky zůstane nedotčen)" +msgstr "" +"Odstranit projekt ze seznamu?\n" +"Obsah složky zůstane nedotčen." #: editor/project_manager.cpp #, fuzzy @@ -9960,9 +9952,8 @@ msgstr "" "nebo '\"'" #: editor/project_settings_editor.cpp -#, fuzzy msgid "An action with the name '%s' already exists." -msgstr "Akce '%s' již existuje!" +msgstr "Akce s názvem \"%s\" již existuje." #: editor/project_settings_editor.cpp msgid "Rename Input Action Event" @@ -10396,7 +10387,7 @@ msgstr "" #: editor/rename_dialog.cpp msgid "Padding" -msgstr "" +msgstr "Odsazení" #: editor/rename_dialog.cpp msgid "" @@ -10484,7 +10475,7 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "No parent to instance the scenes at." -msgstr "" +msgstr "Chybí rodič pro instancování scény." #: editor/scene_tree_dock.cpp msgid "Error loading scene from %s" @@ -10498,7 +10489,7 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "Instance Scene(s)" -msgstr "" +msgstr "Scéna/Scény instance" #: editor/scene_tree_dock.cpp #, fuzzy @@ -10510,9 +10501,8 @@ msgid "Instance Child Scene" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Detach Script" -msgstr "Připojit skript" +msgstr "Odpojit skript" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." @@ -10543,14 +10533,17 @@ msgid "Instantiated scenes can't become root" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make node as Root" -msgstr "Dává smysl!" +msgstr "Nastavit uzel jako zdrojový" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Smazat %d uzlů?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" -msgstr "Smazat uzel" +msgstr "Smazat %d uzlů?" #: editor/scene_tree_dock.cpp msgid "Delete the root node \"%s\"?" @@ -10561,9 +10554,8 @@ msgid "Delete node \"%s\" and its children?" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete node \"%s\"?" -msgstr "Smazat uzel" +msgstr "Smazat uzel \"%s\"?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." @@ -10699,9 +10691,8 @@ msgid "Reparent to New Node" msgstr "Přidat/Vytvořit nový uzel" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make Scene Root" -msgstr "Dává smysl!" +msgstr "Nastav scénu jako zdrojovou" #: editor/scene_tree_dock.cpp msgid "Merge From Scene" @@ -10801,6 +10792,8 @@ msgid "" "Node is locked.\n" "Click to unlock it." msgstr "" +"Uzel je zamčený.\n" +"Klikněte pro odemčení." #: editor/scene_tree_editor.cpp msgid "" @@ -11225,16 +11218,15 @@ msgstr "" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" -msgstr "" +msgstr "Vyberte závislosti knihovny pro tento vstup" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Remove current entry" -msgstr "Odstranit signál" +msgstr "Odstranit aktuální vstup" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" -msgstr "" +msgstr "Stiskněte dvakrát pro vytvoření nového vstupu" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" @@ -12234,6 +12226,12 @@ msgid "" "shape resource for it!" msgstr "CollisionShape2D musí obsahovat tvar. Prosím vytvořte zdrojový tvar." +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12647,16 +12645,15 @@ msgstr "HSV" #: scene/gui/color_picker.cpp msgid "Raw" -msgstr "" +msgstr "Raw" #: scene/gui/color_picker.cpp msgid "Switch between hexadecimal and code values." -msgstr "" +msgstr "Přepni mezi hexadecimálními a kódovými hodnotami." #: scene/gui/color_picker.cpp -#, fuzzy msgid "Add current color as a preset." -msgstr "Přidat aktuální barvu jako předvolbu" +msgstr "Přidat aktuální barvu jako předvolbu." #: scene/gui/container.cpp msgid "" @@ -12730,11 +12727,11 @@ msgstr "" #: scene/main/viewport.cpp msgid "Viewport size must be greater than 0 to render anything." msgstr "" +"Velikost pohledu musí být větší než 0, aby bylo možné cokoliv renderovat." #: scene/resources/visual_shader_nodes.cpp -#, fuzzy msgid "Invalid source for preview." -msgstr "Neplatný zdroj pro shader." +msgstr "Neplatný zdroj pro náhled." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for shader." @@ -12747,20 +12744,24 @@ msgstr "Neplatný zdroj pro shader." #: servers/visual/shader_language.cpp msgid "Assignment to function." -msgstr "" +msgstr "Přiřazeno funkci." #: servers/visual/shader_language.cpp msgid "Assignment to uniform." -msgstr "" +msgstr "Přiřazeno uniformu." #: servers/visual/shader_language.cpp msgid "Varyings can only be assigned in vertex function." -msgstr "" +msgstr "Odlišnosti mohou být přiřazeny pouze ve vertex funkci." #: servers/visual/shader_language.cpp msgid "Constants cannot be modified." msgstr "Konstanty není možné upravovat." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Aktuální scéna nebyla nikdy uložena, prosím uložte jí před spuštěním." + #~ msgid "Not in resource path." #~ msgstr "Není v cestě ke zdroji." diff --git a/editor/translations/da.po b/editor/translations/da.po index 70b05c08ff..da54615917 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -2426,10 +2426,6 @@ msgid "There is no defined scene to run." msgstr "Der er ingen defineret scene at køre." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "Den nuværende scene er aldrig gemt, venligst gem før du kører den." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Kunne ikke starte underproces!" @@ -10784,6 +10780,11 @@ msgstr "Gem Scene" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Vælg Node" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Vælg Node" @@ -12512,6 +12513,12 @@ msgstr "" "En figur skal gives CollisionShape2D for at det fungerer. Opret venligst en " "figur ressource for den!" +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -13030,6 +13037,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstanter kan ikke ændres." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "Den nuværende scene er aldrig gemt, venligst gem før du kører den." + #~ msgid "Not in resource path." #~ msgstr "Ikke i stien for ressource." diff --git a/editor/translations/de.po b/editor/translations/de.po index eb533ff15e..081dfb8e4f 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -52,12 +52,15 @@ # artism90 <artism90@googlemail.com>, 2020. # Jaigskim <filzstift112@gmail.com>, 2020. # Jacqueline Ulken <Jacqueline.Ulken@protonmail.com>, 2020. +# Günther Bohn <ciscouser@gmx.de>, 2020. +# Tom Wor <mail@tomwor.com>, 2020. +# Bjarne Hiller <bjarne.hiller@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" -"Last-Translator: So Wieso <sowieso@dukun.de>\n" +"PO-Revision-Date: 2020-08-05 16:58+0000\n" +"Last-Translator: Bjarne Hiller <bjarne.hiller@gmail.com>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" "Language: de\n" @@ -775,7 +778,7 @@ msgstr "Standard" #: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" -msgstr "Seitenleiste umschalten" +msgstr "Skript-Panel umschalten" #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -2382,12 +2385,6 @@ msgid "There is no defined scene to run." msgstr "Es ist keine abzuspielende Szene definiert." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"Die aktuelle Szene wurde noch nicht gespeichert, bitte vor dem Abspielen " -"sichern." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Unterprozess konnte nicht gestartet werden!" @@ -5438,7 +5435,7 @@ msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp msgid "Zoom Reset" -msgstr "Zoom Zurücksetzen" +msgstr "Zoom zurücksetzen" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -9614,7 +9611,7 @@ msgstr "Pack-Datei" #: editor/project_export.cpp msgid "Features" -msgstr "Funktionen" +msgstr "Eigenschaften" #: editor/project_export.cpp msgid "Custom (comma-separated):" @@ -10153,7 +10150,7 @@ msgstr "Ereignis hinzufügen" #: editor/project_settings_editor.cpp msgid "Button" -msgstr "\"Button\"" +msgstr "Schaltfläche (Button)" #: editor/project_settings_editor.cpp msgid "Left Button." @@ -10641,6 +10638,10 @@ msgid "Make node as Root" msgstr "Node zur Szenenwurzel machen" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "%d Nodes und ihre Unterobjekte löschen?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "%d Nodes löschen?" @@ -10759,7 +10760,7 @@ msgstr "Leere Vererbung" #: editor/scene_tree_dock.cpp msgid "Editable Children" -msgstr "bearbeitbare Unterobjekte" +msgstr "Bearbeitbare Unterobjekte" #: editor/scene_tree_dock.cpp msgid "Load As Placeholder" @@ -12340,6 +12341,15 @@ msgstr "" "Damit CollisionShape2D funktionieren kann, muss eine Form angegeben werden. " "Bitte erzeuge eine Shape-Ressource dafür!" +#: 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 "" +"Polygon basierte Formen sollten nicht direkt in CollisionShape2D-Nodes " +"genutzt oder bearbeitet werden. Zu diesem Zweck sollte das CollsionPolygon2D-" +"Node verwendet werden." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12939,6 +12949,11 @@ msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden." msgid "Constants cannot be modified." msgstr "Konstanten können nicht verändert werden." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Die aktuelle Szene wurde noch nicht gespeichert, bitte vor dem Abspielen " +#~ "sichern." + #~ msgid "Not in resource path." #~ msgstr "Nicht im Ressourcen-Pfad." diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index 01121a8156..87dca17afd 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -2245,10 +2245,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10109,6 +10105,10 @@ 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 "" @@ -11710,6 +11710,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/el.po b/editor/translations/el.po index 8ff5881a9e..7c2a202767 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -8,12 +8,13 @@ # Eternal Death <eternaldeath0001@gmail.com>, 2019. # Overloaded @ Orama Interactive http://orama-interactive.com/ <manoschool@yahoo.gr>, 2020. # pandektis <pandektis@gmail.com>, 2020. +# KostasMSC <kargyris@athtech.gr>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" -"Last-Translator: pandektis <pandektis@gmail.com>\n" +"PO-Revision-Date: 2020-08-11 14:04+0000\n" +"Last-Translator: George Tsiamasiotis <gtsiam@windowslive.com>\n" "Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/" "el/>\n" "Language: el\n" @@ -502,8 +503,8 @@ msgstr "" "εισαγωγής της σκηνής και θέστε\n" "το «Animation > Storage» σε «Files», ενεργοποιήστε το «Animation > Keep " "Custom Tracks», και κάντε επαν-εισαγωγή.\n" -"Εναλλακτικά, χρησιμοποιήστε μία διαμόρφωση εισαγωγής που εισάγει κινήσεις " -"σε ξεχωριστά αρχεία." +"Εναλλακτικά, χρησιμοποιήστε μία διαμόρφωση εισαγωγής που εισάγει κινήσεις σε " +"ξεχωριστά αρχεία." #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" @@ -1596,7 +1597,7 @@ msgstr "Δεν βρέθηκε προσαρμοσμένο πακέτο αποσφ #: 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 "Δεν βρέθηκε προσαρμοσμένο πακέτο παραγωγής." +msgstr "Δεν βρέθηκε προσαρμοσμένο πακέτο διανομής." #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" @@ -1785,7 +1786,7 @@ msgstr "Νέος φάκελος..." #: editor/editor_file_dialog.cpp editor/find_in_files.cpp #: editor/plugins/version_control_editor_plugin.cpp msgid "Refresh" -msgstr "Αναναίωση" +msgstr "Ανανέωση" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Recognized" @@ -2336,12 +2337,6 @@ msgid "There is no defined scene to run." msgstr "Δεν υπάρχει καθορισμένη σκηνή για εκτελέση." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"Η τρέχουσα σκηνή δεν έχει αποθηκευτεί, αποθηκεύστε πριν να τρέξετε το " -"πρόγραμμα." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Αδύνατη η εκκίνηση της υπό-εργασίας!" @@ -2461,13 +2456,13 @@ msgstr "Αποθήκευση & Έξοδος" #: editor/editor_node.cpp msgid "Save changes to the following scene(s) before quitting?" -msgstr "Αποθήκευση αλλαγών στις ακόλουθες σκηνές σκηνές πριν την έξοδο;" +msgstr "Αποθήκευση αλλαγών στις ακόλουθες σκηνές πριν την έξοδο;" #: editor/editor_node.cpp msgid "Save changes the following scene(s) before opening Project Manager?" msgstr "" -"Αποθήκευση αλλαγών στις ακόλουθες σκηνές σκηνές πριν το άνοιγμα του " -"διαχειριστή έργων;" +"Αποθήκευση αλλαγών στις ακόλουθες σκηνές πριν το άνοιγμα του Διαχειριστή " +"Έργων;" #: editor/editor_node.cpp msgid "" @@ -2703,7 +2698,7 @@ msgstr "Άνοιγμα πρόσφατων" #: editor/editor_node.cpp msgid "Save Scene" -msgstr "Αποθηκεύσετε σκηνής" +msgstr "Αποθηκεύση σκηνής" #: editor/editor_node.cpp msgid "Save All Scenes" @@ -3133,7 +3128,7 @@ msgstr "Άνοιγμα βιβλιοθήκης" #: editor/editor_node.cpp msgid "Open the next Editor" -msgstr "Άνοιγμα του επόμενου επεξεργαστή" +msgstr "Άνοιγμα του επόμενου Επεξεργαστή" #: editor/editor_node.cpp msgid "Open the previous Editor" @@ -3483,7 +3478,7 @@ msgid "" "for official releases." msgstr "" "Δεν βρέθηκαν συνδέσμοι λήψης για την τρέχουσα έκδοση. Η απευθείας λήψη είναι " -"διαθέσιμη μόνο για τις επίσημες εκδόσεις." +"διαθέσιμη μόνο για τις επίσημες διανομές." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -3992,6 +3987,7 @@ msgstr "Σφάλμα κατά την εκτέλεση της δέσμης ενε #: editor/import/resource_importer_scene.cpp msgid "Did you return a Node-derived object in the `post_import()` method?" msgstr "" +"Μήπως επιστρέψατε ένα αντικείμενο τύπου κόμβου στην μέθοδο `post_import()`;" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -5581,7 +5577,7 @@ msgstr "Εμφάνιση Χαράκων" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "Εμφάνιση Οδηγών" +msgstr "Εμφάνιση Οδηγιών" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" @@ -6218,7 +6214,7 @@ msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" -msgstr "Χρόνος παραγωγής (sec):" +msgstr "Χρόνος Παραγωγής (sec):" #: editor/plugins/particles_editor_plugin.cpp msgid "The geometry's faces don't contain any area." @@ -6861,7 +6857,7 @@ msgstr "Κλείσιμο όλων" #: editor/plugins/script_editor_plugin.cpp msgid "Close Docs" -msgstr "Κλείσιμο τεκμηρίωσης" +msgstr "Κλείσιμο Τεκμηρίωσης" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp msgid "Run" @@ -6962,9 +6958,8 @@ msgstr "" "κόμβο «%s»." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "[Ignore]" -msgstr "(Παράβλεψη)" +msgstr "[Παράβλεψη]" #: editor/plugins/script_text_editor.cpp msgid "Line" @@ -7454,6 +7449,11 @@ msgid "" "Closed eye: Gizmo is hidden.\n" "Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")." msgstr "" +"Πατήστε για εναλλαγή λειτουργίας ορατότητας.\n" +"\n" +"Ανοιχτό μάτι: Ορατό μαραφέτι.\n" +"Κλειστό μάτι: Κρυμμένο μαραφέτι.\n" +"Ημι-ανοιχτό μάτι: Μαραφέτι ορατό και μέσα από στερεές επιφάνειες (\"x-ray\")." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Nodes To Floor" @@ -8366,7 +8366,9 @@ msgstr "" msgid "" "Select sub-tile to change its priority.\n" "Click on another Tile to edit it." -msgstr "Επιλέξτε υποπλακίδιο για να αλλάξετε την προτεραιότητα του." +msgstr "" +"Επιλέξτε υποπλακίδιο για να αλλάξετε την προτεραιότητα του.\n" +"Πατήστε σε άλλο Πλακίδιο για να το επεξεργαστείτε." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -9074,7 +9076,7 @@ msgstr "Επιστρέφει την υπερβολική εφαπτομένη τ #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the truncated value of the parameter." -msgstr "Βρίσκει την περικομμένη τιμή της παραμέτρου." +msgstr "Βρίσκει την περικομμένη τιμή της παραμέτρου." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Adds scalar to scalar." @@ -9473,7 +9475,7 @@ msgstr "" #: editor/project_export.cpp msgid "Release" -msgstr "Κυκλοφορία" +msgstr "Διανομή" #: editor/project_export.cpp msgid "Exporting All" @@ -9976,6 +9978,10 @@ msgid "" "To filter projects by name and full path, the query must contain at least " "one `/` character." msgstr "" +"Το κουτί αναζήτησης φιλτράρει έργα βάσει ονόματος και τελικού μέρους της " +"διαδρομής τους.\n" +"Για φιλτράρισμα βάσει ονόματος και πλήρης διαδρομής, το ερώτημα πρέπει να " +"περιέχει τουλάχιστον έναν χαρακτήρα `/`." #: editor/project_settings_editor.cpp msgid "Key " @@ -10147,7 +10153,7 @@ msgstr "" #: editor/project_settings_editor.cpp msgid "Add Input Action" -msgstr "Προσθήκη συμβάντος ενέργειας εισόδου" +msgstr "Προσθήκη Ενέργειας Εισόδου" #: editor/project_settings_editor.cpp msgid "Error saving settings." @@ -10542,9 +10548,8 @@ msgid "Instance Child Scene" msgstr "Αρχικοποίηση σκηνής ως παιδί" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Detach Script" -msgstr "Σύνδεση Δέσμης Ενεργειών" +msgstr "Αποσύνδεση Δέσμης Ενεργειών" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." @@ -10582,6 +10587,10 @@ msgid "Make node as Root" msgstr "Κάνε κόμβο ρίζα" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "Διαγραφή %d κόμβων και τυχών παιδιών τους;" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Διαγραφή %d κόμβων;" @@ -10720,6 +10729,9 @@ msgid "" "This is probably because this editor was built with all language modules " "disabled." msgstr "" +"Αδυναμία σύνδεσης δέσμης ενεργειών: Καμία γλώσσα στο μητρώο.\n" +"Αυτό μπορεί να προκληθεί αν ο επεξεργαστής χτιστεί χωρίς καμία λειτουργική " +"μονάδα γλώσσας." #: editor/scene_tree_dock.cpp msgid "Add Child Node" @@ -10770,14 +10782,12 @@ msgstr "" "υπάρχει πηγαίος κόμβος." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Attach a new or existing script to the selected node." -msgstr "Σύνδεση νέας ή υπαρκτής δέσμης ενεργειών για τον επιλεγμένο κόμβο." +msgstr "Σύνδεση νέας ή υπαρκτής δέσμης ενεργειών στον επιλεγμένο κόμβο." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Detach the script from the selected node." -msgstr "Εκκαθάριση δέσμης ενεργειών για τον επιλεγμένο κόμβο." +msgstr "Αποσύνδεση της δέσμης ενεργειών από τον επιλεγμένο κόμβο." #: editor/scene_tree_dock.cpp msgid "Remote" @@ -11118,9 +11128,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" @@ -12016,11 +12025,9 @@ msgstr "" "διαμόρφωση." #: platform/android/export/export.cpp -#, fuzzy msgid "Release keystore incorrectly configured in the export preset." msgstr "" -"Το «debug keystore» δεν έχει καθοριστεί στις Ρυθμίσεις Επεξεργαστή ή την " -"διαμόρφωση." +"Εσφαλμένη ρύθμιση αποθετηρίου κλειδιών διανομής στην διαμόρφωση εξαγωγής." #: platform/android/export/export.cpp msgid "Custom build requires a valid Android SDK path in Editor Settings." @@ -12055,26 +12062,35 @@ msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" msgstr "" +"Εσφαλμένη λειτουργική μονάδα «GodotPaymentV3» στην ρύθμιση εργου «Android/" +"Modules» (άλλαξε στην Godot 3.2.2).\n" #: platform/android/export/export.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." msgstr "" +"Η επιλογή «Use Custom Build» πρέπει να ενεργοποιηθεί για χρήση προσθέτων." #: platform/android/export/export.cpp msgid "" "\"Degrees Of Freedom\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR" "\"." msgstr "" +"Το «Degrees Of Freedom» είναι έγκυρο μόνο όταν το «Xr Mode» είναι «Oculus " +"Mobile VR»." #: platform/android/export/export.cpp msgid "" "\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." msgstr "" +"Το «Hand Tracking» είναι έγκυρο μόνο όταν το «Xr Mode» είναι «Oculus Mobile " +"VR»." #: platform/android/export/export.cpp msgid "" "\"Focus Awareness\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." msgstr "" +"Το «Focus Awareness» είναι έγκυρο μόνο όταν το «Xr Mode» είναι «Oculus " +"Mobile VR»." #: platform/android/export/export.cpp msgid "" @@ -12286,6 +12302,14 @@ msgstr "" "Ένα σχήμα πρέπει να δοθεί στο CollisionShape2D για να λειτουργήσει. " "Δημιουργήστε ένα πόρο σχήματος για αυτό!" +#: 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 "" +"Τα σχήματα βασισμένα σε πολύγωνα δεν σχεδιάστικαν ώστε να είναι επεξεργάσιμα " +"από τον κόμβο CollisionShape2D. Χρησιμοποιήστε τον κόμβο CollisionPolygon2D." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12870,6 +12894,11 @@ msgstr "Τα «varying» μπορούν να ανατεθούν μόνο στη msgid "Constants cannot be modified." msgstr "Οι σταθερές δεν μπορούν να τροποποιηθούν." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Η τρέχουσα σκηνή δεν έχει αποθηκευτεί, αποθηκεύστε πριν να τρέξετε το " +#~ "πρόγραμμα." + #~ msgid "Not in resource path." #~ msgstr "Δεν υπάρχει στην διαδρομή πόρων." diff --git a/editor/translations/eo.po b/editor/translations/eo.po index f98f043118..e740ea7d7a 100644 --- a/editor/translations/eo.po +++ b/editor/translations/eo.po @@ -2309,10 +2309,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10261,6 +10257,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Forigi Ŝlosilo(j)n" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Forigi Ŝlosilo(j)n" @@ -11882,6 +11883,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/es.po b/editor/translations/es.po index a200653685..172ce58604 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -18,7 +18,7 @@ # 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. +# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2017, 2019, 2020. # Lonsfor <lotharw@protonmail.com>, 2017-2018. # Mario Nachbaur <manachbaur@gmail.com>, 2018. # Oscar Carballal <oscar.carballal@protonmail.com>, 2017-2018. @@ -49,12 +49,13 @@ # Serk Lintur <serk.lintur@gmail.com>, 2020. # Pedro J. Estébanez <pedrojrulez@gmail.com>, 2020. # paco <pacosoftfree@protonmail.com>, 2020. +# Jonatan <arandajonatan94@tuta.io>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" -"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n" +"PO-Revision-Date: 2020-07-31 03:47+0000\n" +"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" "Language: es\n" @@ -84,7 +85,7 @@ msgstr "" #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "Entrada inválida %i (no se pasó) en la expresión" +msgstr "Entrada inválida %i (no aprobada) en la expresión" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -853,7 +854,7 @@ msgstr "Eliminar" #: editor/connections_dialog.cpp msgid "Add Extra Call Argument:" -msgstr "Añadir Argumento de Llamada Extra:" +msgstr "Añadir Argumento Extra de Llamada:" #: editor/connections_dialog.cpp msgid "Extra Call Arguments:" @@ -1763,7 +1764,7 @@ msgstr "Nuevo" #: editor/editor_feature_profile.cpp editor/editor_node.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "Importar" +msgstr "Importación" #: editor/editor_feature_profile.cpp editor/project_export.cpp msgid "Export" @@ -2383,11 +2384,6 @@ msgid "There is no defined scene to run." msgstr "No hay escena definida para ejecutar." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"La escena actual nunca se guardó. Por favor, guárdela antes de ejecutar." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "¡No se pudo comenzar el subproceso!" @@ -4369,7 +4365,7 @@ msgstr "No hay ningún triángulo, así que no se puede hacer blending." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Toggle Auto Triangles" -msgstr "Act./Desact. Auto Triángulos" +msgstr "Act./Desact. Triángulos Automáticos" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Create triangles by connecting points." @@ -4381,7 +4377,8 @@ msgstr "Borrar puntos y triángulos." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Generate blend triangles automatically (instead of manually)" -msgstr "Generar triángulos de blending automáticamente (en vez de manualmente)" +msgstr "" +"Generar triángulos combinados automáticamente (en lugar de manualmente)" #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -8947,7 +8944,7 @@ msgstr "Devuelve el valor absoluto del parámetro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-cosine of the parameter." -msgstr "Devuelve el arcocoseno del parámetro." +msgstr "Devuelve el arco-coseno del parámetro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic cosine of the parameter." @@ -8955,7 +8952,7 @@ msgstr "Devuelve el coseno hiperbólico inverso del parámetro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-sine of the parameter." -msgstr "Devuelve el arcoseno del parámetro." +msgstr "Devuelve el arco-seno del parámetro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic sine of the parameter." @@ -8963,11 +8960,11 @@ msgstr "Devuelve el seno hiperbólico inverso del parámetro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-tangent of the parameter." -msgstr "Devuelve el arcotangente del parámetro." +msgstr "Devuelve el arco-tangente del parámetro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-tangent of the parameters." -msgstr "Devuelve el arcotangente de los parámetros." +msgstr "Devuelve el arco-tangente de los parámetros." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic tangent of the parameter." @@ -8996,11 +8993,11 @@ msgstr "Convierte una cantidad en radianes a grados." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-e Exponential." -msgstr "Exponencial en base e." +msgstr "Exponencial con Base-e." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-2 Exponential." -msgstr "Exponencial en base 2." +msgstr "Exponencial con base 2." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest integer less than or equal to the parameter." @@ -9020,7 +9017,7 @@ msgstr "Logaritmo natural." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-2 logarithm." -msgstr "Logaritmo de la base 2." +msgstr "Logaritmo Base-2." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the greater of two values." @@ -10630,6 +10627,10 @@ msgid "Make node as Root" msgstr "Convertir nodo como Raíz" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "¿Eliminar %d nodos y sus hijos?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "¿Eliminar %d nodos?" @@ -12345,6 +12346,15 @@ msgstr "" "Para que funcione CollisionShape2D se debe proporcionar una forma. Por " "favor, ¡crea un recurso de forma para ello!" +#: 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 "" +"Las formas basadas en polígonos no están pensadas para ser usadas ni " +"editadas directamente a través del nodo CollisionShape2D. Por favor, usa el " +"nodo CollisionPolygon2D en su lugar." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12927,6 +12937,10 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." msgid "Constants cannot be modified." msgstr "Las constantes no pueden modificarse." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "La escena actual nunca se guardó. Por favor, guárdela antes de ejecutar." + #~ msgid "Not in resource path." #~ msgstr "No está en la ruta de recursos." diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index ca9f5a7a49..f2c72ce1be 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"PO-Revision-Date: 2020-07-31 03:47+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" @@ -2345,11 +2345,6 @@ msgid "There is no defined scene to run." msgstr "No hay escena definida para ejecutar." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"La escena actual nunca se guardó. Favor de guardarla antes de ejecutar." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "No se pudo comenzar el subproceso!" @@ -10583,12 +10578,16 @@ msgid "Make node as Root" msgstr "Convertir nodo en Raíz" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "¿Eliminar %d nodos y sus hijos?" + +#: 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 "¿Eliminar el nodo raiz \"%s\"?" +msgstr "¿Eliminar el nodo raíz \"%s\"?" #: editor/scene_tree_dock.cpp msgid "Delete node \"%s\" and its children?" @@ -12293,6 +12292,15 @@ msgstr "" "Se debe proveer un shape para que CollisionShape2D funcione. Creale un " "recurso shape!" +#: 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 "" +"Las formas basadas en polígonos no están pensadas para ser usadas ni " +"editadas directamente a través del nodo CollisionShape2D. Por favor, usá el " +"nodo CollisionPolygon2D en su lugar." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12870,6 +12878,10 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." msgid "Constants cannot be modified." msgstr "Las constantes no pueden modificarse." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "La escena actual nunca se guardó. Favor de guardarla antes de ejecutar." + #~ msgid "Not in resource path." #~ msgstr "No está en la ruta de recursos." diff --git a/editor/translations/et.po b/editor/translations/et.po index 5fd61347e1..504de558d5 100644 --- a/editor/translations/et.po +++ b/editor/translations/et.po @@ -9,15 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2020-05-31 12:39+0000\n" -"Last-Translator: René <renepiik@gmail.com>\n" +"PO-Revision-Date: 2020-08-11 14:04+0000\n" +"Last-Translator: StReef <streef.gtx@gmail.com>\n" "Language-Team: Estonian <https://hosted.weblate.org/projects/godot-engine/" "godot/et/>\n" "Language: et\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.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -409,8 +409,7 @@ msgstr "Animatsiooni rajad võivad osutada ainult AnimationPlayer sõlmedele." #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." -msgstr "" -"Animatsiooni mängija ei saa animeerida iseennast, ainult teisi mängijaid." +msgstr "AnimationPlayer ei saa animeerida iseennast, ainult teisi mängijaid." #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" @@ -492,7 +491,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Select an AnimationPlayer node to create and edit animations." -msgstr "" +msgstr "Vali AnimationPlayer sõlm, et luua ja redigeerida animatsioone." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." @@ -503,12 +502,13 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Snap:" -msgstr "" +msgstr "Intervall:" #: editor/animation_track_editor.cpp msgid "Animation step value." -msgstr "" +msgstr "Animatsiooni sammu väärtus." #: editor/animation_track_editor.cpp msgid "Seconds" @@ -516,7 +516,7 @@ msgstr "Sekundid" #: editor/animation_track_editor.cpp msgid "FPS" -msgstr "Kaadrit/Sekundis" +msgstr "K/S" #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp @@ -530,7 +530,7 @@ msgstr "Muuda" #: editor/animation_track_editor.cpp msgid "Animation properties." -msgstr "" +msgstr "Animatsiooni atribuudid." #: editor/animation_track_editor.cpp msgid "Copy Tracks" @@ -638,9 +638,8 @@ msgid "Copy" msgstr "Kopeeri" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Tühista Valik" +msgstr "Vali kõik/mitte ükski" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -773,7 +772,7 @@ msgstr "" #: 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 "" +msgstr "Lisa" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/editor_feature_profile.cpp editor/groups_editor.cpp @@ -784,7 +783,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp #: editor/project_settings_editor.cpp msgid "Remove" -msgstr "" +msgstr "Eemalda" #: editor/connections_dialog.cpp msgid "Add Extra Call Argument:" @@ -835,7 +834,7 @@ msgstr "" #: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Close" -msgstr "" +msgstr "Sulge" #: editor/connections_dialog.cpp msgid "Connect" @@ -880,7 +879,7 @@ msgstr "" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" -msgstr "" +msgstr "Signaalid" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" @@ -997,7 +996,7 @@ msgstr "" #: modules/visual_script/visual_script_property_selector.cpp #: scene/gui/file_dialog.cpp msgid "Open" -msgstr "" +msgstr "Ava" #: editor/dependency_editor.cpp msgid "Owners Of:" @@ -1080,67 +1079,67 @@ msgstr "" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" -msgstr "" +msgstr "Tänu Godot kogukonnale!" #: editor/editor_about.cpp msgid "Godot Engine contributors" -msgstr "" +msgstr "Godot mängumootori panustajad" #: editor/editor_about.cpp msgid "Project Founders" -msgstr "" +msgstr "Projekti asutajad" #: editor/editor_about.cpp msgid "Lead Developer" -msgstr "" +msgstr "Juhtiv arendaja" #: editor/editor_about.cpp msgid "Project Manager " -msgstr "" +msgstr "Projekti juht " #: editor/editor_about.cpp msgid "Developers" -msgstr "" +msgstr "Arendajad" #: editor/editor_about.cpp msgid "Authors" -msgstr "" +msgstr "Autorid" #: editor/editor_about.cpp msgid "Platinum Sponsors" -msgstr "" +msgstr "Plaatinumsponsorid" #: editor/editor_about.cpp msgid "Gold Sponsors" -msgstr "" +msgstr "Kuldsponsorid" #: editor/editor_about.cpp msgid "Mini Sponsors" -msgstr "" +msgstr "Väikesponsorid" #: editor/editor_about.cpp msgid "Gold Donors" -msgstr "" +msgstr "Kuldannetajad" #: editor/editor_about.cpp msgid "Silver Donors" -msgstr "" +msgstr "Hõbennetajad" #: editor/editor_about.cpp msgid "Bronze Donors" -msgstr "" +msgstr "Pronksannetajad" #: editor/editor_about.cpp msgid "Donors" -msgstr "" +msgstr "Annetajad" #: editor/editor_about.cpp msgid "License" -msgstr "" +msgstr "Litsents" #: editor/editor_about.cpp msgid "Third-party Licenses" -msgstr "" +msgstr "Kolmanda osapoole litsents" #: editor/editor_about.cpp msgid "" @@ -1160,7 +1159,7 @@ msgstr "" #: editor/editor_about.cpp msgid "Licenses" -msgstr "" +msgstr "Litsensid" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Error opening package file, not in ZIP format." @@ -1209,7 +1208,7 @@ msgstr "" #: editor/editor_audio_buses.cpp msgid "Add Effect" -msgstr "" +msgstr "Lisa efekt" #: editor/editor_audio_buses.cpp msgid "Rename Audio Bus" @@ -1237,7 +1236,7 @@ msgstr "" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus Effect" -msgstr "" +msgstr "Lisa helisiini efekt" #: editor/editor_audio_buses.cpp msgid "Move Bus Effect" @@ -1356,7 +1355,7 @@ msgstr "Lae olemasolev siini paigutus." #: editor/editor_audio_buses.cpp msgid "Save As" -msgstr "Salvesta kui…" +msgstr "Salvesta kui" #: editor/editor_audio_buses.cpp msgid "Save this Bus Layout to a file." @@ -1510,7 +1509,6 @@ msgid "Choose" msgstr "Vali" #: editor/editor_export.cpp -#, fuzzy msgid "Storing File:" msgstr "Salvestan faili:" @@ -1571,7 +1569,7 @@ msgstr "" #: editor/editor_feature_profile.cpp msgid "3D Editor" -msgstr "3D-redigeerija" +msgstr "3D-redaktor" #: editor/editor_feature_profile.cpp msgid "Script Editor" @@ -1715,7 +1713,7 @@ msgstr "Ekspordi profiil" #: editor/editor_feature_profile.cpp msgid "Manage Editor Feature Profiles" -msgstr "Halda redigeerija funktsioonide profiile" +msgstr "Halda redaktori funktsioonide profiile" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Select Current Folder" @@ -1823,14 +1821,12 @@ msgid "Move Favorite Down" msgstr "Liiguta lemmikud alla" #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to previous folder." -msgstr "Mine Eelmisele Sammule" +msgstr "Mine eelmisesse kausta." #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to next folder." -msgstr "Mine Järgmisele Sammule" +msgstr "Mine järmisesse kausta." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Go to parent folder." @@ -1887,7 +1883,6 @@ msgstr "" "katkestati" #: editor/editor_file_system.cpp -#, fuzzy msgid "(Re)Importing Assets" msgstr "(Taas)impordin varasid" @@ -1906,7 +1901,7 @@ msgstr "Pärib:" #: editor/editor_help.cpp msgid "Inherited by:" -msgstr "Päritud %s poolt" +msgstr "Päritud %s poolt:" #: editor/editor_help.cpp msgid "Description" @@ -2073,15 +2068,13 @@ msgstr "Puhasta väljund" #: editor/editor_network_profiler.cpp editor/editor_node.cpp #: editor/editor_profiler.cpp -#, fuzzy msgid "Stop" -msgstr "Peatu/Stopp" +msgstr "Lõpeta" #: editor/editor_network_profiler.cpp editor/editor_profiler.cpp #: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp -#, fuzzy msgid "Start" -msgstr "Start/Käivita" +msgstr "Käivita" #: editor/editor_network_profiler.cpp msgid "%s/s" @@ -2281,16 +2274,12 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" #: editor/editor_node.cpp editor/filesystem_dock.cpp msgid "Open Scene" -msgstr "" +msgstr "Ava stseen" #: editor/editor_node.cpp msgid "Open Base Scene" @@ -2326,7 +2315,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Save Scene As..." -msgstr "" +msgstr "Salvesta stseen kui..." #: editor/editor_node.cpp msgid "No" @@ -2369,9 +2358,8 @@ msgid "Can't reload a scene that was never saved." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Reload Saved Scene" -msgstr "Stseeni salvestamine" +msgstr "Taaslae salvestatud stseen" #: editor/editor_node.cpp msgid "" @@ -2385,19 +2373,19 @@ msgstr "" #: editor/editor_node.cpp msgid "Quit" -msgstr "" +msgstr "Välju" #: editor/editor_node.cpp msgid "Exit the editor?" -msgstr "" +msgstr "Välju redaktorist?" #: editor/editor_node.cpp msgid "Open Project Manager?" -msgstr "" +msgstr "Ava projekti juht?" #: editor/editor_node.cpp msgid "Save & Quit" -msgstr "" +msgstr "Salvesta ja välju" #: editor/editor_node.cpp msgid "Save changes to the following scene(s) before quitting?" @@ -2419,11 +2407,11 @@ msgstr "" #: editor/editor_node.cpp msgid "Close Scene" -msgstr "" +msgstr "Sule stseen" #: editor/editor_node.cpp msgid "Reopen Closed Scene" -msgstr "" +msgstr "Taasava suletud stseen" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." @@ -2504,7 +2492,7 @@ msgstr "" #: editor/editor_node.cpp editor/import_dock.cpp #: editor/script_create_dialog.cpp msgid "Default" -msgstr "" +msgstr "Vaikimisi" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp @@ -2513,7 +2501,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Play This Scene" -msgstr "" +msgstr "Mängi seda stseeni" #: editor/editor_node.cpp msgid "Close Tab" @@ -2553,7 +2541,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Dock Position" -msgstr "" +msgstr "Doki asukoht" #: editor/editor_node.cpp msgid "Distraction Free Mode" @@ -2565,20 +2553,19 @@ msgstr "" #: editor/editor_node.cpp msgid "Add a new scene." -msgstr "" +msgstr "Lisa uus stseen." #: editor/editor_node.cpp msgid "Scene" -msgstr "" +msgstr "Stseen" #: editor/editor_node.cpp msgid "Go to previously opened scene." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Copy Text" -msgstr "Kopeeri" +msgstr "Kopeeri tekst" #: editor/editor_node.cpp msgid "Next tab" @@ -2598,27 +2585,27 @@ msgstr "" #: editor/editor_node.cpp msgid "New Scene" -msgstr "" +msgstr "Uus stseen" #: editor/editor_node.cpp msgid "New Inherited Scene..." -msgstr "" +msgstr "Uus päritud stseen..." #: editor/editor_node.cpp msgid "Open Scene..." -msgstr "" +msgstr "Ava stseen..." #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Open Recent" -msgstr "" +msgstr "Hiljuti avatud" #: editor/editor_node.cpp msgid "Save Scene" -msgstr "" +msgstr "Salvesta stseen" #: editor/editor_node.cpp msgid "Save All Scenes" -msgstr "" +msgstr "Salvesta kõik stseenid" #: editor/editor_node.cpp msgid "Convert To..." @@ -2635,12 +2622,12 @@ msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Undo" -msgstr "" +msgstr "Võta tagasi" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" -msgstr "" +msgstr "Tee uuesti" #: editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." @@ -2649,11 +2636,11 @@ msgstr "" #: editor/editor_node.cpp editor/project_manager.cpp #: editor/script_create_dialog.cpp msgid "Project" -msgstr "" +msgstr "Projekt" #: editor/editor_node.cpp msgid "Project Settings..." -msgstr "" +msgstr "Projekti sätted..." #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp msgid "Version Control" @@ -2669,7 +2656,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Export..." -msgstr "" +msgstr "Ekspordi..." #: editor/editor_node.cpp msgid "Install Android Build Template..." @@ -2681,7 +2668,7 @@ msgstr "" #: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp msgid "Tools" -msgstr "" +msgstr "Tööriistad" #: editor/editor_node.cpp msgid "Orphan Resource Explorer..." @@ -2694,7 +2681,7 @@ msgstr "" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: editor/project_export.cpp msgid "Debug" -msgstr "" +msgstr "Silumine" #: editor/editor_node.cpp msgid "Deploy with Remote Debug" @@ -2766,19 +2753,19 @@ msgstr "" #: editor/editor_node.cpp editor/script_create_dialog.cpp msgid "Editor" -msgstr "" +msgstr "Redaktor" #: editor/editor_node.cpp msgid "Editor Settings..." -msgstr "" +msgstr "Redaktori sätted..." #: editor/editor_node.cpp msgid "Editor Layout" -msgstr "" +msgstr "Redaktori paigutus" #: editor/editor_node.cpp msgid "Take Screenshot" -msgstr "" +msgstr "Tee ekraanipilt" #: editor/editor_node.cpp msgid "Screenshots are stored in the Editor Data/Settings Folder." @@ -2814,7 +2801,7 @@ msgstr "" #: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp msgid "Help" -msgstr "" +msgstr "Abi" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp #: editor/plugins/script_editor_plugin.cpp @@ -2823,68 +2810,68 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp #: editor/project_settings_editor.cpp editor/rename_dialog.cpp msgid "Search" -msgstr "" +msgstr "Otsi" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/shader_editor_plugin.cpp msgid "Online Docs" -msgstr "" +msgstr "Veebidokumentatsioonid" #: editor/editor_node.cpp msgid "Q&A" -msgstr "" +msgstr "Küsimused & vastused" #: editor/editor_node.cpp msgid "Report a Bug" -msgstr "" +msgstr "Teavita veast" #: editor/editor_node.cpp msgid "Send Docs Feedback" -msgstr "" +msgstr "Saada dokumentatsioonide tagasisede" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "Kogukond" #: editor/editor_node.cpp msgid "About" -msgstr "" +msgstr "Teave" #: editor/editor_node.cpp msgid "Play the project." -msgstr "" +msgstr "Mängi projekti." #: editor/editor_node.cpp msgid "Play" -msgstr "" +msgstr "Mängi" #: editor/editor_node.cpp msgid "Pause the scene execution for debugging." -msgstr "" +msgstr "Peata stseeni töö selle silumiseks." #: editor/editor_node.cpp msgid "Pause Scene" -msgstr "" +msgstr "Peata stseen" #: editor/editor_node.cpp msgid "Stop the scene." -msgstr "" +msgstr "Lõpeta stseen." #: editor/editor_node.cpp msgid "Play the edited scene." -msgstr "" +msgstr "Mängi redigeeritud stseeni." #: editor/editor_node.cpp msgid "Play Scene" -msgstr "" +msgstr "Mängi stseeni" #: editor/editor_node.cpp msgid "Play custom scene" -msgstr "" +msgstr "Mängi kohandatud stseeni" #: editor/editor_node.cpp msgid "Play Custom Scene" -msgstr "" +msgstr "Mängi kohandatud stseeni" #: editor/editor_node.cpp msgid "Changing the video driver requires restarting the editor." @@ -2913,19 +2900,19 @@ msgstr "" #: editor/editor_node.cpp msgid "FileSystem" -msgstr "" +msgstr "Failikuvaja" #: editor/editor_node.cpp msgid "Inspector" -msgstr "" +msgstr "Ülevaataja" #: editor/editor_node.cpp msgid "Expand Bottom Panel" -msgstr "" +msgstr "Laienda alumist paneeli" #: editor/editor_node.cpp msgid "Output" -msgstr "" +msgstr "Väljund" #: editor/editor_node.cpp msgid "Don't Save" @@ -3016,7 +3003,7 @@ msgstr "" #: editor/editor_node.h msgid "Warning!" -msgstr "" +msgstr "Hoiatus!" #: editor/editor_path.cpp msgid "No sub-resources found." @@ -3606,7 +3593,7 @@ msgstr "" #: editor/project_manager.cpp editor/rename_dialog.cpp #: editor/scene_tree_dock.cpp msgid "Rename" -msgstr "" +msgstr "Nimeta ümber" #: editor/filesystem_dock.cpp msgid "Previous Folder/File" @@ -3626,7 +3613,7 @@ msgstr "" #: editor/filesystem_dock.cpp msgid "Search files" -msgstr "" +msgstr "Otsi faile" #: editor/filesystem_dock.cpp msgid "" @@ -3647,9 +3634,8 @@ msgid "Overwrite" msgstr "" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Create Scene" -msgstr "Loo" +msgstr "Loo stseen" #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "Create Script" @@ -3688,7 +3674,7 @@ msgstr "" #: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" -msgstr "" +msgstr "Tühista" #: editor/find_in_files.cpp msgid "Find: " @@ -3704,7 +3690,7 @@ msgstr "" #: editor/find_in_files.cpp msgid "Searching..." -msgstr "" +msgstr "Otsin..." #: editor/find_in_files.cpp msgid "Search complete" @@ -3736,7 +3722,7 @@ msgstr "" #: editor/groups_editor.cpp editor/node_dock.cpp msgid "Groups" -msgstr "" +msgstr "Rühmad" #: editor/groups_editor.cpp msgid "Nodes Not in Group" @@ -3745,7 +3731,7 @@ msgstr "" #: editor/groups_editor.cpp editor/scene_tree_dock.cpp #: editor/scene_tree_editor.cpp msgid "Filter nodes" -msgstr "" +msgstr "Filtreeri sõlmed" #: editor/groups_editor.cpp msgid "Nodes in Group" @@ -3761,7 +3747,7 @@ msgstr "" #: editor/groups_editor.cpp msgid "Manage Groups" -msgstr "" +msgstr "Halda gruppe" #: editor/import/resource_importer_scene.cpp msgid "Import as Single Scene" @@ -3858,15 +3844,15 @@ msgstr "" #: editor/import_dock.cpp msgid "Import As:" -msgstr "" +msgstr "Impordi kui:" #: editor/import_dock.cpp msgid "Preset" -msgstr "" +msgstr "Eelseadistus" #: editor/import_dock.cpp msgid "Reimport" -msgstr "" +msgstr "Taasimpordi" #: editor/import_dock.cpp msgid "Save Scenes, Re-Import, and Restart" @@ -3932,7 +3918,7 @@ msgstr "" #: editor/inspector_dock.cpp msgid "Save the currently edited resource." -msgstr "" +msgstr "Salvesta käesolevalt muudetud ressurss." #: editor/inspector_dock.cpp msgid "Go to the previous edited object in history." @@ -3944,15 +3930,15 @@ msgstr "" #: editor/inspector_dock.cpp msgid "History of recently edited objects." -msgstr "" +msgstr "Hiljuti muudetud objektide ajalugu." #: editor/inspector_dock.cpp msgid "Object properties." -msgstr "" +msgstr "Objekti atribuudid." #: editor/inspector_dock.cpp msgid "Filter properties" -msgstr "" +msgstr "Filtreeri atribuudid" #: editor/inspector_dock.cpp msgid "Changes may be lost!" @@ -4254,19 +4240,16 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Anim Clips" -msgstr "Animatsiooni Klipid:" +msgstr "Animatsiooniklipid" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Audio Clips" -msgstr "Heliklipid:" +msgstr "Heliklipid" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Functions" -msgstr "Funktsioonid:" +msgstr "Funktsioonid" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp @@ -4306,16 +4289,16 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Delete Animation?" -msgstr "" +msgstr "Kustuta animatsioon?" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Remove Animation" -msgstr "" +msgstr "Eemalda animatioon" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Invalid animation name!" -msgstr "" +msgstr "Vigane animatsiooni nimi!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation name already exists!" @@ -4392,7 +4375,7 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" -msgstr "" +msgstr "Animatsiooni tööriistad" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation" @@ -4404,7 +4387,7 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Open in Inspector" -msgstr "" +msgstr "Ava ülevaatajas" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." @@ -4779,9 +4762,8 @@ msgid "Request failed, timeout" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Timeout." -msgstr "Aeg:" +msgstr "Aeg maha." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." @@ -4841,11 +4823,11 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Recently Updated" -msgstr "" +msgstr "Hiljuti uuendatud" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Least Recently Updated" -msgstr "" +msgstr "Vanim uuendus" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Name (A-Z)" @@ -4857,11 +4839,11 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "License (A-Z)" -msgstr "" +msgstr "Litsents (A-Z)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "License (Z-A)" -msgstr "" +msgstr "Litsents (Z-A)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "First" @@ -4897,28 +4879,28 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" -msgstr "" +msgstr "Sordi:" #: editor/plugins/asset_library_editor_plugin.cpp #: editor/project_settings_editor.cpp msgid "Category:" -msgstr "" +msgstr "Kategooria:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Site:" -msgstr "" +msgstr "Veebisait:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Support" -msgstr "" +msgstr "Toetus" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Official" -msgstr "" +msgstr "Ametlik" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Testing" -msgstr "" +msgstr "Testimine" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Loading..." @@ -4995,9 +4977,8 @@ msgid "Create Vertical Guide" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Vertical Guide" -msgstr "Eemalda kehtetud võtmed" +msgstr "Eemalda vertikaalne juht" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Horizontal Guide" @@ -5008,9 +4989,8 @@ msgid "Create Horizontal Guide" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Horizontal Guide" -msgstr "Eemalda kehtetud võtmed" +msgstr "Eemalda horisontaalne juht" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create Horizontal and Vertical Guides" @@ -6625,7 +6605,7 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp msgid "Run" -msgstr "" +msgstr "Käivita" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" @@ -6690,7 +6670,7 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" -msgstr "" +msgstr "Siluja" #: editor/plugins/script_editor_plugin.cpp msgid "Search Results" @@ -6827,9 +6807,8 @@ msgid "Complete Symbol" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Evaluate Selection" -msgstr "Kustuta Valim" +msgstr "Hinda valikut" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" @@ -6853,7 +6832,7 @@ msgstr "" #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" -msgstr "" +msgstr "Kontekstuaalne abi" #: editor/plugins/script_text_editor.cpp msgid "Toggle Bookmark" @@ -6952,7 +6931,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective" -msgstr "" +msgstr "Perspektiiv" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Aborted." @@ -6996,35 +6975,35 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Pitch" -msgstr "" +msgstr "Frontaal" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "Sagitaal" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" -msgstr "" +msgstr "Objekte kuvatud" #: editor/plugins/spatial_editor_plugin.cpp msgid "Material Changes" -msgstr "" +msgstr "Materjali muutused" #: editor/plugins/spatial_editor_plugin.cpp msgid "Shader Changes" -msgstr "" +msgstr "Varjutaja muutused" #: editor/plugins/spatial_editor_plugin.cpp msgid "Surface Changes" -msgstr "" +msgstr "Pinna muutused" #: editor/plugins/spatial_editor_plugin.cpp msgid "Draw Calls" -msgstr "" +msgstr "Kuvamise kutsungid" #: editor/plugins/spatial_editor_plugin.cpp msgid "Vertices" -msgstr "" +msgstr "Tipud" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View." @@ -7112,7 +7091,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Environment" -msgstr "" +msgstr "Kuva keskkond" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Gizmos" @@ -7120,7 +7099,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Information" -msgstr "" +msgstr "Kuva informatsioon" #: editor/plugins/spatial_editor_plugin.cpp msgid "View FPS" @@ -7128,7 +7107,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Half Resolution" -msgstr "" +msgstr "Poolresolutioon" #: editor/plugins/spatial_editor_plugin.cpp msgid "Audio Listener" @@ -7140,7 +7119,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Cinematic Preview" -msgstr "" +msgstr "Kinemaatiline eelvaade" #: editor/plugins/spatial_editor_plugin.cpp msgid "Not available when using the GLES2 renderer." @@ -7226,27 +7205,27 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" -msgstr "" +msgstr "Altvaade" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View" -msgstr "" +msgstr "Ülavaade" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rear View" -msgstr "" +msgstr "Tagavaade" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front View" -msgstr "" +msgstr "Eesvaade" #: editor/plugins/spatial_editor_plugin.cpp msgid "Left View" -msgstr "" +msgstr "Vasakvaade" #: editor/plugins/spatial_editor_plugin.cpp msgid "Right View" -msgstr "" +msgstr "Paremvaade" #: editor/plugins/spatial_editor_plugin.cpp msgid "Switch Perspective/Orthogonal View" @@ -7258,11 +7237,11 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Origin" -msgstr "" +msgstr "Fookuse alge" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" -msgstr "" +msgstr "Fookuse valik" #: editor/plugins/spatial_editor_plugin.cpp msgid "Toggle Freelook" @@ -7540,7 +7519,7 @@ msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" -msgstr "" +msgstr "Kordus" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animation Frames:" @@ -8240,9 +8219,8 @@ msgid "Renamed" msgstr "" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Deleted" -msgstr "Kustuta Võti (Võtmed)" +msgstr "Kustutatud" #: editor/plugins/version_control_editor_plugin.cpp msgid "Typechange" @@ -9516,11 +9494,11 @@ msgstr "" #: editor/project_manager.cpp msgid "Project Manager" -msgstr "" +msgstr "projektihaldur" #: editor/project_manager.cpp msgid "Projects" -msgstr "" +msgstr "Projektid" #: editor/project_manager.cpp msgid "Last Modified" @@ -9528,7 +9506,7 @@ msgstr "" #: editor/project_manager.cpp msgid "Scan" -msgstr "" +msgstr "Otsi" #: editor/project_manager.cpp msgid "Select a Folder to Scan" @@ -9536,7 +9514,7 @@ msgstr "" #: editor/project_manager.cpp msgid "New Project" -msgstr "" +msgstr "Uus projekt" #: editor/project_manager.cpp msgid "Remove Missing" @@ -9544,7 +9522,7 @@ msgstr "" #: editor/project_manager.cpp msgid "Templates" -msgstr "" +msgstr "Mallid" #: editor/project_manager.cpp msgid "Restart Now" @@ -9789,11 +9767,11 @@ msgstr "" #: editor/project_settings_editor.cpp msgid "Project Settings (project.godot)" -msgstr "" +msgstr "Projekti sätted (project.godot)" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "General" -msgstr "" +msgstr "Üldine" #: editor/project_settings_editor.cpp msgid "Override For..." @@ -10159,8 +10137,12 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Kustuta %d sõlmed ja iga alamsõlm?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" -msgstr "Kustuta Võti (Võtmed)" +msgstr "Kustuta %d sõlmed?" #: editor/scene_tree_dock.cpp msgid "Delete the root node \"%s\"?" @@ -10171,9 +10153,8 @@ msgid "Delete node \"%s\" and its children?" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete node \"%s\"?" -msgstr "Kustuta Võti (Võtmed)" +msgstr "Kustuta sõlm \"%s\"?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." @@ -10221,7 +10202,7 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "User Interface" -msgstr "" +msgstr "Kasutajaliides" #: editor/scene_tree_dock.cpp msgid "Other Node" @@ -10290,7 +10271,7 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "Add Child Node" -msgstr "" +msgstr "Lisa alamsõlm" #: editor/scene_tree_dock.cpp msgid "Expand/Collapse All" @@ -10326,7 +10307,7 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "Add/Create a New Node." -msgstr "" +msgstr "Lisa/loo uus sõlm." #: editor/scene_tree_dock.cpp msgid "" @@ -10336,7 +10317,7 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "Attach a new or existing script to the selected node." -msgstr "" +msgstr "Kinnita uus või olemasolev skript valitud sõlmele." #: editor/scene_tree_dock.cpp msgid "Detach the script from the selected node." @@ -10573,9 +10554,8 @@ msgid "Warning:" msgstr "" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Error:" -msgstr "Peegel" +msgstr "Viga:" #: editor/script_editor_debugger.cpp msgid "C++ Error" @@ -10723,15 +10703,15 @@ msgstr "" #: editor/settings_config_dialog.cpp msgid "Editor Settings" -msgstr "" +msgstr "Redaktori sätted" #: editor/settings_config_dialog.cpp msgid "Shortcuts" -msgstr "" +msgstr "Kiirklahvid" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "Kombinatsioon" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -10998,9 +10978,8 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Paste Selects" -msgstr "Kustuta Valitud Võti (Võtmed)" +msgstr "Kleebi valikud" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" @@ -11347,9 +11326,8 @@ msgid "Try to only have one sequence input in selection." msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "Loo" +msgstr "Loo funktsioon" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11388,14 +11366,12 @@ msgid "Add Nodes..." msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function..." -msgstr "Funktsioonid:" +msgstr "Lisa funktsioon..." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "function_name" -msgstr "Funktsioonid:" +msgstr "funktsiooni_nimi" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -11418,9 +11394,8 @@ msgid "Cut Nodes" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Funktsioonid:" +msgstr "Loo funktsioon" #: modules/visual_script/visual_script_editor.cpp msgid "Refresh Graph" @@ -11767,6 +11742,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12160,7 +12141,7 @@ msgstr "" #: scene/gui/dialogs.cpp msgid "Please Confirm..." -msgstr "" +msgstr "Palun kinnita..." #: scene/gui/popup.cpp msgid "" diff --git a/editor/translations/eu.po b/editor/translations/eu.po index e461c0f1ec..906a258f32 100644 --- a/editor/translations/eu.po +++ b/editor/translations/eu.po @@ -2255,10 +2255,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10132,6 +10128,10 @@ 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 "" @@ -11735,6 +11735,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/extract.py b/editor/translations/extract.py index 749bad5fff..02ed65131f 100755 --- a/editor/translations/extract.py +++ b/editor/translations/extract.py @@ -33,6 +33,7 @@ matches.sort() unique_str = [] unique_loc = {} +ctx_group = {} # Store msgctx, msg, and locations. main_po = """ # LANGUAGE translation of the Godot Engine editor. # Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. @@ -52,6 +53,34 @@ msgstr "" """ +def _write_message(msgctx, msg, msg_plural, location): + global main_po + main_po += "\n#: " + location + "\n" + if msgctx != "": + main_po += 'msgctxt "' + msgctx + '"\n' + main_po += 'msgid "' + msg + '"\n' + if msg_plural != "": + main_po += 'msgid_plural "' + msg_plural + '"\n' + main_po += 'msgstr[0] ""\n' + main_po += 'msgstr[1] ""\n' + else: + main_po += 'msgstr ""\n' + + +def _add_additional_location(msgctx, msg, location): + global main_po + # Add additional location to previous occurrence + msg_pos = -1 + if msgctx != "": + msg_pos = main_po.find('\nmsgctxt "' + msgctx + '"\nmsgid "' + msg + '"') + else: + msg_pos = main_po.find('\nmsgid "' + msg + '"') + + if msg_pos == -1: + print("Someone apparently thought writing Python was as easy as GDScript. Ping Akien.") + main_po = main_po[:msg_pos] + " " + location + main_po[msg_pos:] + + def process_file(f, fname): global main_po, unique_str, unique_loc @@ -60,10 +89,11 @@ def process_file(f, fname): lc = 1 while l: - patterns = ['RTR("', 'TTR("', 'TTRC("'] + patterns = ['RTR("', 'TTR("', 'TTRC("', 'TTRN("', 'RTRN("'] idx = 0 pos = 0 while pos >= 0: + # Loop until a pattern is found. If not, next line. pos = l.find(patterns[idx], pos) if pos == -1: if idx < len(patterns) - 1: @@ -72,29 +102,64 @@ def process_file(f, fname): continue pos += len(patterns[idx]) + # Read msg until " msg = "" while pos < len(l) and (l[pos] != '"' or l[pos - 1] == "\\"): msg += l[pos] pos += 1 + # Read plural. + msg_plural = "" + if patterns[idx] in ['TTRN("', 'RTRN("']: + pos = l.find('"', pos + 1) + pos += 1 + while pos < len(l) and (l[pos] != '"' or l[pos - 1] == "\\"): + msg_plural += l[pos] + pos += 1 + + # Read context. + msgctx = "" + pos += 1 + read_ctx = False + while pos < len(l): + if l[pos] == ")": + break + elif l[pos] == '"': + read_ctx = True + break + pos += 1 + + pos += 1 + if read_ctx: + while pos < len(l) and (l[pos] != '"' or l[pos - 1] == "\\"): + msgctx += l[pos] + pos += 1 + + # File location. location = os.path.relpath(fname).replace("\\", "/") if line_nb: location += ":" + str(lc) - if not msg in unique_str: - main_po += "\n#: " + location + "\n" - main_po += 'msgid "' + msg + '"\n' - main_po += 'msgstr ""\n' - unique_str.append(msg) - unique_loc[msg] = [location] - elif not location in unique_loc[msg]: - # Add additional location to previous occurrence too - msg_pos = main_po.find('\nmsgid "' + msg + '"') - if msg_pos == -1: - print("Someone apparently thought writing Python was as easy as GDScript. Ping Akien.") - main_po = main_po[:msg_pos] + " " + location + main_po[msg_pos:] - unique_loc[msg].append(location) - + if msgctx != "": + # If it's a new context or a new message within an existing context, then write new msgid. + # Else add location to existing msgid. + if not msgctx in ctx_group: + _write_message(msgctx, msg, msg_plural, location) + ctx_group[msgctx] = {msg: [location]} + elif not msg in ctx_group[msgctx]: + _write_message(msgctx, msg, msg_plural, location) + ctx_group[msgctx][msg] = [location] + elif not location in ctx_group[msgctx][msg]: + _add_additional_location(msgctx, msg, location) + ctx_group[msgctx][msg].append(location) + else: + if not msg in unique_str: + _write_message(msgctx, msg, msg_plural, location) + unique_str.append(msg) + unique_loc[msg] = [location] + elif not location in unique_loc[msg]: + _add_additional_location(msgctx, msg, location) + unique_loc[msg].append(location) l = f.readline() lc += 1 @@ -102,7 +167,7 @@ def process_file(f, fname): print("Updating the editor.pot template...") for fname in matches: - with open(fname, "r") as f: + with open(fname, "r", encoding="utf8") as f: process_file(f, fname) with open("editor.pot", "w") as f: diff --git a/editor/translations/fa.po b/editor/translations/fa.po index 428b69062a..dc7ae9ec69 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -13,12 +13,13 @@ # hpn33 <hamed.hpn332@gmail.com>, 2019, 2020. # Focus <saeeddashticlash@gmail.com>, 2019, 2020. # mohamad por <mohamad24xx@gmail.com>, 2020. +# Tetra Homer <tetrahomer@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-04-23 20:21+0000\n" -"Last-Translator: Focus <saeeddashticlash@gmail.com>\n" +"PO-Revision-Date: 2020-07-21 13:41+0000\n" +"Last-Translator: Tetra Homer <tetrahomer@gmail.com>\n" "Language-Team: Persian <https://hosted.weblate.org/projects/godot-engine/" "godot/fa/>\n" "Language: fa\n" @@ -26,14 +27,12 @@ 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.0.2-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "" -"نوع ورودی برای متد ()convert نامعتبر است ، از ثابت های *_TYPE استفاده " -"کنید ." +msgstr "نوع ورودی برای ()convert نامعتبر است, ثوابت *_TYPE بکار گیرید ." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." @@ -53,61 +52,59 @@ msgstr "ورودی نامعتبر i% (تایید نشده) در عبارت" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "نمی توان از self استفاده کرد چون instance = null هست (تایید نشده)" +msgstr "نمی توان self را بکار گرفت چون instance = null هست (تایید نشده)" #: core/math/expression.cpp -#, fuzzy msgid "Invalid operands to operator %s, %s and %s." -msgstr "نام دارایی ایندکس نامعتبر 's%' در گره s%." +msgstr "عملگر های نامعتبر به عملگر %s, %s و %s." #: core/math/expression.cpp -#, fuzzy msgid "Invalid index of type %s for base type %s" -msgstr "نام دارایی ایندکس نامعتبر 's%' در گره s%." +msgstr "نوع ایندکس %s برای نوع اصلی %s نامعتبر است" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -msgstr "شاخص نامگذاری شده \"٪ s\" برای نوع پایه٪ s نامعتبر است" +msgstr "ایندکس اسمی '%s' برای نوع اصلی %s نامعتبر است" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" -msgstr ": آرگومان نوع نامعتبر آرگومان های نامعتبر برای ساخت '٪ s'" +msgstr "آرگومان های نامعتبر برای ساخت '%s'" #: core/math/expression.cpp msgid "On call to '%s':" -msgstr "در تماس با '٪ s':" +msgstr "به هنگام فراخوان تابع'%s':" #: core/ustring.cpp msgid "B" -msgstr "" +msgstr "بایت" #: core/ustring.cpp msgid "KiB" -msgstr "" +msgstr "کیلوبایت" #: core/ustring.cpp msgid "MiB" -msgstr "" +msgstr "مگابایت" #: core/ustring.cpp msgid "GiB" -msgstr "" +msgstr "گیگابایت" #: core/ustring.cpp msgid "TiB" -msgstr "" +msgstr "ترابایت" #: core/ustring.cpp msgid "PiB" -msgstr "" +msgstr "پتابایت" #: core/ustring.cpp msgid "EiB" -msgstr "" +msgstr "اگزابایت" #: editor/animation_bezier_editor.cpp msgid "Free" -msgstr "ازاد کردن" +msgstr "آزاد کردن" #: editor/animation_bezier_editor.cpp msgid "Balanced" @@ -123,90 +120,84 @@ msgstr "زمان:" #: editor/animation_bezier_editor.cpp msgid "Value:" -msgstr "ارزش:" +msgstr "مقدار:" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" -msgstr "کلید را اینجا وارد کن" +msgstr "کلید را اینجا وارد کنید" #: editor/animation_bezier_editor.cpp msgid "Duplicate Selected Key(s)" -msgstr "کلیدهای انتخاب شده تکراری درست کن" +msgstr "تکرار کلید(های) منتخب" #: editor/animation_bezier_editor.cpp msgid "Delete Selected Key(s)" -msgstr "کلیدهای انخاب شده را پاک کن" +msgstr "حذف کلید(های) منتخب" #: editor/animation_bezier_editor.cpp msgid "Add Bezier Point" -msgstr "Bezier Point را اضافه کن" +msgstr "افزودن نقطه بِزیِر" #: editor/animation_bezier_editor.cpp msgid "Move Bezier Points" -msgstr "Bezier Points را جابجا کن" +msgstr "انتقال نقاط بِزیِر" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "تکرار کلیدهای انیمیشن" +msgstr "تکرار کلید های متحرک" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" -msgstr "کلیدها را در انیمیشن حذف کن" +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" -msgstr "انتقال را در انیمیشن تغییر بده" +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 -#, fuzzy msgid "Anim Multi Change Keyframe Time" -msgstr "تغییر زمان فریم کلید در انیمیشن" +msgstr "تغییرات زمان لحظهکلید متحرک" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transition" -msgstr "انتقال را در انیمیشن تغییر بده" +msgstr "تغییرات انتقالی متحرک" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transform" -msgstr "انتقال را در انیمیشن تغییر بده" +msgstr "تغییرات دگرشکل متحرک" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Value" -msgstr "تغییر مقدار فریم کلید در انیمیشن" +msgstr "تغییرات مقدار لحظهکلید متحرک" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Call" -msgstr "فراخوانی را در انیمیشن تغییر بده" +msgstr "تغییرات فراخوان متحرک" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Length" -msgstr "طول انیمیشن را تغییر بده" +msgstr "تغییر طول انیمیشن" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "حلقه(loop) انیمیشن را تغییر دهید" +msgstr "تغییر حلقه(loop) انیمیشن" #: editor/animation_track_editor.cpp msgid "Property Track" @@ -214,15 +205,15 @@ msgstr "ویژگی مسیر" #: editor/animation_track_editor.cpp msgid "3D Transform Track" -msgstr "مسیر 3D Transform" +msgstr "مسیر دگرشکل 3D" #: editor/animation_track_editor.cpp msgid "Call Method Track" -msgstr "صدا زدن Method Track" +msgstr "فراخوان تابع مسیر" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" -msgstr "" +msgstr "مسیر منحنی بِزیِر" #: editor/animation_track_editor.cpp msgid "Audio Playback Track" @@ -267,7 +258,7 @@ msgstr "تغییرمیسر path" #: editor/animation_track_editor.cpp msgid "Toggle this track on/off." -msgstr "روشن / خاموش کردن این Track." +msgstr "دِگرحالتِ روشن/خاموش این قطعه." #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" @@ -336,9 +327,8 @@ msgid "Insert Key" msgstr "درج کلید" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Duplicate Key(s)" -msgstr "نسخه همانند (Duplicate ) کلید(key)" +msgstr "تکرار کلید(ها)" #: editor/animation_track_editor.cpp msgid "Delete Key(s)" @@ -366,7 +356,7 @@ msgstr "یک ترک جدید برای s% بساز و کلید را درج کن؟ #: editor/animation_track_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "ساختن تعداد d% ترک جدید، ودرج کلیدها؟" +msgstr "ساختن %d قطعه جدید و درج کلیدها؟" #: editor/animation_track_editor.cpp editor/create_dialog.cpp #: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp @@ -430,7 +420,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." -msgstr "" +msgstr "یک مجری انیمیشن نمی تواند خود را محرک کند، فقط سایر مجریان." #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" @@ -438,66 +428,60 @@ msgstr "بدون ریشه اضافه کردن مسیر امکان پذیر نی #: editor/animation_track_editor.cpp msgid "Invalid track for Bezier (no suitable sub-properties)" -msgstr "" +msgstr "مسیر نامعتبر برای بِزیِر( زیر-خواص نامناسب)" #: editor/animation_track_editor.cpp msgid "Add Bezier Track" -msgstr "ترک Bezier را اضافه کن" +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" msgstr "" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Transform Track Key" -msgstr "درج ترک و کلید در انیمیشن" +msgstr "افزودن کلید مسیر دگرشکل" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Track Key" -msgstr "ترک را اضافه کن" +msgstr "افزودن کلید مسیر" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a method key." msgstr "" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Method Track Key" -msgstr "درج ترک و کلید در انیمیشن" +msgstr "افزودن تابع کلید میسر" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Method not found in object: " -msgstr "VariableGet در اسکریپت پیدا نشد: " +msgstr "تابع در شئ یافت نشد: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" msgstr "کلیدها را در انیمیشن جابجا کن" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Clipboard is empty" -msgstr "حافظه پنهان خالی است!" +msgstr "حافظه پنهان خالی است" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Paste Tracks" -msgstr "مسیر به سمت گره:" +msgstr "جاگذاری مسیر ها" #: editor/animation_track_editor.cpp msgid "Anim Scale Keys" -msgstr "کلیدها را در انیمیشن تغییر مقیاس بده" +msgstr "اندازه کلید های متحرک" #: editor/animation_track_editor.cpp msgid "" "This option does not work for Bezier editing, as it's only a single track." -msgstr "" +msgstr "این گزینه برای اصلاح بِزیِر کار نمی کند, چون تنها یک مسیر واحد است." #: editor/animation_track_editor.cpp msgid "" @@ -511,42 +495,47 @@ 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 "هشدار: در حال ویرایش انیمیشن وارد شده" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select an AnimationPlayer node to create and edit animations." -msgstr "" -"یک AnimationPlayer از درخت صحنه انتخاب کنید تا انیمیشنها را ویرایش کنید." +msgstr "یک گره AnimationPlayer را برای ایجاد و ویرایش انیمیشن ها برگزینید." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." -msgstr "" +msgstr "فقط مسیرهای از گره های انتخاب شده در درخت نشان داده شود." #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." msgstr "" +"مسیرها را بر اساس گره گروهبندی کنید یا آنها را به عنوان لیست ساده نمایش دهید." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Snap:" -msgstr "گام(ها):" +msgstr "چفت:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation step value." -msgstr "گره انیمیشن" +msgstr "مقدار مرحله انیمیشن." #: editor/animation_track_editor.cpp msgid "Seconds" -msgstr "" +msgstr "ثانیه ها" #: editor/animation_track_editor.cpp msgid "FPS" -msgstr "" +msgstr "لحظه بر ثانیه" #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp @@ -559,9 +548,8 @@ msgid "Edit" msgstr "ویرایش" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation properties." -msgstr "گره انیمیشن" +msgstr "خصوصیات انیمیشن." #: editor/animation_track_editor.cpp msgid "Copy Tracks" @@ -577,26 +565,23 @@ msgstr "از مکاننما تغییر مقیاس بده" #: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "انتخاب شده را به دو تا تکثیر کن" +msgstr "تکثیر برگزیده" #: editor/animation_track_editor.cpp msgid "Duplicate Transposed" -msgstr "ترانهاده را به دو تا تکثیر کن" +msgstr "تکثیر جابجایی" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Selection" -msgstr "انتخاب شده را حذف کن" +msgstr "حذف برگزیده" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" -msgstr "به گام بعدی برو" +msgstr "برو به گام بعد" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" -msgstr "به گام قبلی برو" +msgstr "برو به گام پیشین" #: editor/animation_track_editor.cpp msgid "Optimize Animation" @@ -612,7 +597,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Use Bezier Curves" -msgstr "" +msgstr "بکارگیری منحنی بِزیِر" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" @@ -659,9 +644,8 @@ msgid "Scale Ratio:" msgstr "نسبت تغییر مقیاس:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "دارایی Setter را اضافه کن" +msgstr "انتخاب میسرها جهت تکثیر" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -670,17 +654,15 @@ msgstr "دارایی Setter را اضافه کن" #: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Copy" -msgstr "کپی کردن" +msgstr "کپی" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "گره انتخاب" +msgstr "انتخاب همه/هیچ" #: editor/animation_track_editor_plugins.cpp -#, fuzzy msgid "Add Audio Track Clip" -msgstr "ترک را اضافه کن" +msgstr "افزودن کلیپ آهنگ صوتی" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip Start Offset" @@ -711,18 +693,16 @@ 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 -#, fuzzy msgid "%d matches." -msgstr "تطبیقی ندارد" +msgstr "%d همخوانی." #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" @@ -747,7 +727,7 @@ msgstr "تنها در قسمت انتخاب شده" #: editor/code_editor.cpp editor/plugins/script_text_editor.cpp #: editor/plugins/text_editor.cpp msgid "Standard" -msgstr "" +msgstr "استاندارد" #: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" @@ -757,17 +737,17 @@ msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp msgid "Zoom In" -msgstr "بزرگنمایی بیشتر" +msgstr "بزرگنمایی" #: 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 "بزرگنمایی کمتر" +msgstr "کوچکنمایی" #: editor/code_editor.cpp msgid "Reset Zoom" -msgstr "بازنشانی بزرگنمایی" +msgstr "بازنشانی مقیاس" #: editor/code_editor.cpp msgid "Warnings" @@ -778,38 +758,31 @@ msgid "Line and column numbers." msgstr "" #: editor/connections_dialog.cpp -#, fuzzy msgid "Method in target node must be specified." -msgstr "متد در گره مقصد باید مشخص شده باشد!" +msgstr "تابع در گره مقصد باید مشخص شده باشد." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "نام یک شناسهی معتبر نیست:" +msgstr "اسم تابع باید یک شناسهی معتبر باشد." #: editor/connections_dialog.cpp -#, fuzzy msgid "" "Target method not found. Specify a valid method or attach a script to the " "target node." msgstr "" -"متد هدف پیدا نشد! لطفا یک متد صحیح مشخص کنید یا یک اسکریپت به گره هدف الحاق " -"کنید." +"متد هدف پیدا نشد. یک تابع معتبر تعیین کنید یا یک اسکریپت به گره هدف وصل کنید." #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect to Node:" msgstr "اتصال به گره:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect to Script:" -msgstr "اتصال به گره:" +msgstr "اتصال به اسکریپت:" #: editor/connections_dialog.cpp -#, fuzzy msgid "From Signal:" -msgstr "سیگنال ها:" +msgstr "از سیگنال:" #: editor/connections_dialog.cpp msgid "Scene does not contain any script." @@ -841,14 +814,12 @@ msgid "Extra Call Arguments:" msgstr "آرگومانهای اضافی فراخوانی:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Receiver Method:" -msgstr "انتخاب حالت" +msgstr "روش گیرنده:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Advanced" -msgstr "متعادل شده" +msgstr "پیشرفته" #: editor/connections_dialog.cpp msgid "Deferred" @@ -868,9 +839,8 @@ msgid "Disconnects the signal after its first emission." msgstr "" #: editor/connections_dialog.cpp -#, fuzzy msgid "Cannot connect signal" -msgstr "اتصال سیگنال:" +msgstr "نمی توان سیگنال را متصل کرد" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/export_template_manager.cpp editor/groups_editor.cpp @@ -891,9 +861,8 @@ msgid "Connect" msgstr "اتصال" #: editor/connections_dialog.cpp -#, fuzzy msgid "Signal:" -msgstr "سیگنال ها:" +msgstr "سیگنال:" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" @@ -904,9 +873,8 @@ msgid "Disconnect '%s' from '%s'" msgstr "'s%' را از 's%' جدا کن" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect all from signal: '%s'" -msgstr "'s%' را از 's%' جدا کن" +msgstr "جدا کردن همه از سیگنال: '%s'" #: editor/connections_dialog.cpp msgid "Connect..." @@ -918,14 +886,12 @@ msgid "Disconnect" msgstr "عدم اتصال" #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect a Signal to a Method" -msgstr "اتصال سیگنال:" +msgstr "وصل یک سیگنال به یک تابع" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit Connection:" -msgstr "خطای اتصال" +msgstr "ویرایش اتصال:" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from the \"%s\" signal?" @@ -940,19 +906,16 @@ msgid "Are you sure you want to remove all connections from this signal?" msgstr "" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect All" -msgstr "عدم اتصال" +msgstr "جدا کردن همه" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit..." -msgstr "ویرایش" +msgstr "ویرایش..." #: editor/connections_dialog.cpp -#, fuzzy msgid "Go To Method" -msgstr "روش ها" +msgstr "برو به تابع" #: editor/create_dialog.cpp msgid "Change %s Type" @@ -1004,22 +967,20 @@ msgid "Dependencies For:" msgstr "بستگیها برای:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Scene '%s' is currently being edited.\n" "Changes will only take effect when reloaded." msgstr "" -"صحنهی 's%' در حال حاضر ویرایش شده است.\n" -"تغییرات مؤثر نخواهد بود مگر با بارگذاری مجدد." +"ویرایش صحنه 's%' شروع شده است.\n" +"تغییرات تنها وقتی جلوه گرند که از نو بارگیری شوند." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Resource '%s' is in use.\n" "Changes will only take effect when reloaded." msgstr "" -"منابع 's%' در حال استفاده است.\n" -"تغییرات با بارگذاری مجدد مؤثر خواهد بود." +"منابع 's%' بکار رفتهاند.\n" +"تغییرات تنها وقتی جلوه گرند که از نو بارگیری شوند." #: editor/dependency_editor.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -1066,9 +1027,8 @@ msgid "Owners Of:" msgstr "مالکانِ:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Remove selected files from the project? (Can't be restored)" -msgstr "آیا پروندههای انتخاب شده از پروژه حذف شوند؟ (بدون undo)" +msgstr "آیا پروندههای انتخاب شده از طرح حذف شوند؟ (نمیتوان بازیابی کرد)" #: editor/dependency_editor.cpp msgid "" @@ -1089,9 +1049,8 @@ msgid "Error loading:" msgstr "خطا در بارگذاری:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Load failed due to missing dependencies:" -msgstr "خطا در بارگذاری صحنه به دلیل بستگیهای مفقود:" +msgstr "به دلیل مفقود شدن وابستگیها بارگیری انجام نشد:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -1114,9 +1073,8 @@ msgid "Permanently delete %d item(s)? (No undo!)" msgstr "به طور دائمی تعداد 'd%' آیتم را حذف کند؟ (بدون undo !)" #: editor/dependency_editor.cpp -#, fuzzy msgid "Show Dependencies" -msgstr "بستگیها" +msgstr "نمایش وابستگیها" #: editor/dependency_editor.cpp msgid "Orphan Resource Explorer" @@ -1176,11 +1134,11 @@ msgstr "مؤلفان" #: editor/editor_about.cpp msgid "Platinum Sponsors" -msgstr "اسپانسرهای پلاتینیوم (درجه ۱)" +msgstr "حامیان پلاتینیُم (درجه ۱)" #: editor/editor_about.cpp msgid "Gold Sponsors" -msgstr "اسپانسرهای طلایی (درجه ۲)" +msgstr "حامیان طلایی (درجه ۲)" #: editor/editor_about.cpp msgid "Mini Sponsors" @@ -1207,9 +1165,8 @@ msgid "License" msgstr "مجوز" #: editor/editor_about.cpp -#, fuzzy msgid "Third-party Licenses" -msgstr "مجوزهای شخص ثالث" +msgstr "مجوز های شخص-ثالث" #: editor/editor_about.cpp msgid "" @@ -1218,6 +1175,9 @@ msgid "" "is an exhaustive list of all such third-party components with their " "respective copyright statements and license terms." msgstr "" +"Godot Engine به تعدادی از کتابخانه های منبع باز و شخص-ثالث رایگان متکی است " +"که همگی با شرایط مجوز MIT سازگار هستند. در زیر لیستی جامع از کلیه مؤلفه های " +"شخص ثالث با بیانیه های حق کپی برداری مربوطه و شرایط مجوز آنها قرار دارد." #: editor/editor_about.cpp msgid "All Components" @@ -1233,29 +1193,27 @@ msgstr "گواهینامه" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Error opening package file, not in ZIP format." -msgstr "" +msgstr "خطای گشودن بسته بندی پرونده، به شکل ZIP نیست." #: editor/editor_asset_installer.cpp -#, fuzzy msgid "%s (Already Exists)" -msgstr "پیش از این وجود داشته است" +msgstr "%s (موجود است)" #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" -msgstr "عست های غیر فشرده" +msgstr "فشرده نشدن اَسِت ها" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "The following files failed extraction from package:" -msgstr "" +msgstr "استخراج پرونده های زیر از بسته بندی انجام نشد:" #: editor/editor_asset_installer.cpp -#, fuzzy msgid "And %s more files." -msgstr "نمیتواند یک پوشه ایجاد شود." +msgstr "و %s بیش تر پرونده ها." #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Package installed successfully!" -msgstr "" +msgstr "بسته با موفقیت نصب شد!" #: editor/editor_asset_installer.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -1263,9 +1221,8 @@ msgid "Success!" msgstr "موفقیت!" #: editor/editor_asset_installer.cpp -#, fuzzy msgid "Package Contents:" -msgstr "محتواها:" +msgstr "درون مایه های بسته بندی:" #: editor/editor_asset_installer.cpp editor/editor_node.cpp msgid "Install" @@ -1277,52 +1234,51 @@ msgstr "نصب کننده پکیج ها" #: editor/editor_audio_buses.cpp msgid "Speakers" -msgstr "" +msgstr "بلندگوها" #: editor/editor_audio_buses.cpp msgid "Add Effect" -msgstr "" +msgstr "افزودن جلوه" #: editor/editor_audio_buses.cpp msgid "Rename Audio Bus" -msgstr "" +msgstr "تغییر نام صوت گذرا" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "مقدار آرایه را تغییر بده" +msgstr "تغییر مقدار صدای خطی" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" -msgstr "" +msgstr "دِگرحالتِ صدای تکی خطی" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Mute" -msgstr "" +msgstr "دِگرحالتِ صدای سکوت خطی" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Bypass Effects" -msgstr "" +msgstr "دِگرحالتِ صدای جلوه های میان بر خطی" #: editor/editor_audio_buses.cpp msgid "Select Audio Bus Send" -msgstr "" +msgstr "انتخاب صدای ارسال گذرا" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus Effect" -msgstr "" +msgstr "افزودن صدای جلوه خطی" #: editor/editor_audio_buses.cpp msgid "Move Bus Effect" -msgstr "" +msgstr "انتقال جلوه خطی" #: editor/editor_audio_buses.cpp msgid "Delete Bus Effect" -msgstr "حذف اثر گذرا" +msgstr "حذف جلوه خطی" #: editor/editor_audio_buses.cpp msgid "Drag & drop to rearrange." -msgstr "" +msgstr "برای چینش مجدد، بکشید و رها کنید." #: editor/editor_audio_buses.cpp msgid "Solo" @@ -1351,7 +1307,7 @@ msgstr "بازنشانی حجم" #: editor/editor_audio_buses.cpp msgid "Delete Effect" -msgstr "حذف اثر" +msgstr "حذف جلوه" #: editor/editor_audio_buses.cpp msgid "Audio" @@ -1366,24 +1322,20 @@ msgid "Master bus can't be deleted!" msgstr "" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Delete Audio Bus" -msgstr "انیمیشن را بهینهسازی کن" +msgstr "حذف صدای خطی" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Duplicate Audio Bus" -msgstr "انتخاب شده را به دو تا تکثیر کن" +msgstr "تکثیر صدای خطی" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Reset Bus Volume" -msgstr "بازنشانی بزرگنمایی" +msgstr "بازنشانی مقدار خطی" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Move Audio Bus" -msgstr "کلید Add را جابجا کن" +msgstr "انتقال صدای خطی" #: editor/editor_audio_buses.cpp msgid "Save Audio Bus Layout As..." @@ -1410,9 +1362,8 @@ msgid "Invalid file, not an audio bus layout." msgstr "" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Error saving file: %s" -msgstr "خطا در بارگذاری:" +msgstr "خطای ذخیره کردن پرونده: %s" #: editor/editor_audio_buses.cpp msgid "Add Bus" @@ -1461,23 +1412,20 @@ msgid "Valid characters:" msgstr "کاراکترهای معتبر:" #: editor/editor_autoload_settings.cpp -#, fuzzy msgid "Must not collide with an existing engine class name." -msgstr "نام نامعتبر. نباید با یک نام کلاس موجود در موتور برخوردی داشته باشد." +msgstr "نباید با یک نام کلاس موتور موجود برخورد کند." #: editor/editor_autoload_settings.cpp -#, fuzzy msgid "Must not collide with an existing built-in type name." -msgstr "نام نامعتبر. نباید یا یک نام نوع توکار برخوردی داشته باشد." +msgstr "نباید با یک نام نوع درون-ساز موجود برخورد کند." #: editor/editor_autoload_settings.cpp -#, fuzzy msgid "Must not collide with an existing global constant name." -msgstr "نام نامعتبر. نباید با نام یک ثابت سراسری موجود برخوردی داشته باشد." +msgstr "نباید با نام یک ثابت سراسری موجود برخوردی کند." #: editor/editor_autoload_settings.cpp msgid "Keyword cannot be used as an autoload name." -msgstr "" +msgstr "کلمه کلیدی نمی تواند به عنوان یک نام خودبارگیر بکار برده شود." #: editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" @@ -1553,9 +1501,8 @@ msgid "Updating scene..." msgstr "" #: editor/editor_data.cpp editor/editor_properties.cpp -#, fuzzy msgid "[empty]" -msgstr "(خالی)" +msgstr "[پوچ]" #: editor/editor_data.cpp msgid "[unsaved]" @@ -1644,91 +1591,76 @@ msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." msgstr "" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "3D Editor" -msgstr "ویرایشگر" +msgstr "ویرایشگر 3بعدی" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Script Editor" -msgstr "گشودن ویرایشگر اسکریپت" +msgstr "ویرایشگر اسکریپت" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Asset Library" -msgstr "گشودن کتابخانه عست" +msgstr "کتابخانه دارایی" #: editor/editor_feature_profile.cpp msgid "Scene Tree Editing" msgstr "" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Import Dock" -msgstr "وارد کردن" +msgstr "وارد کردن لنگرگاه" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Node Dock" -msgstr "نام گره:" +msgstr "لنگرگاه گره:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "FileSystem and Import Docks" -msgstr "سامانه پرونده" +msgstr "فایلسیستم و واردکردن لنگرگاه" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Erase profile '%s'? (no undo)" -msgstr "جایگزینی همه" +msgstr "پاککردن نمایه '%s'? (عدم بازگردانی)" #: editor/editor_feature_profile.cpp msgid "Profile must be a valid filename and must not contain '.'" msgstr "" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Profile with this name already exists." -msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!" +msgstr "نمایه با این نام در حال حاضر وجود دارد." #: editor/editor_feature_profile.cpp msgid "(Editor Disabled, Properties Disabled)" msgstr "" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "(Properties Disabled)" -msgstr "ویژگی:" +msgstr "(خصوصیات غیرفعال شده)" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "(Editor Disabled)" -msgstr "غیرفعال شده" +msgstr "(ویرایشگر غیرفعال شده)" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Class Options:" -msgstr "توضیح:" +msgstr "گزینههای کلاس:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enable Contextual Editor" -msgstr "گشودن ویرایشگر متن" +msgstr "فعال کردن ویرایشگر متنی" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enabled Properties:" -msgstr "صافی کردن گرهها" +msgstr "خصوصیات فعال شده:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enabled Features:" -msgstr "فهرست متدها:" +msgstr "ویژگی های فعال شده:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enabled Classes:" -msgstr "جستجوی کلاسها" +msgstr "کلاس های فعال شده:" #: editor/editor_feature_profile.cpp msgid "File '%s' format is invalid, import aborted." @@ -1741,23 +1673,20 @@ msgid "" msgstr "" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Error saving profile to path: '%s'." -msgstr "خطای بارگذاری قلم." +msgstr "خطای ذخیره نمایه در مسیر: '%s'." #: editor/editor_feature_profile.cpp msgid "Unset" msgstr "" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Current Profile:" -msgstr "نسخه اخیر:" +msgstr "نمایه موجود:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Make Current" -msgstr "تابع را بساز" +msgstr "ساختن جریان" #: editor/editor_feature_profile.cpp #: editor/plugins/animation_player_editor_plugin.cpp @@ -1775,73 +1704,61 @@ msgid "Export" msgstr "صدور" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Available Profiles:" -msgstr "گره های موجود:" +msgstr "نمایههای موجود:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Class Options" -msgstr "توضیحات" +msgstr "گزینه های کلاس" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "New profile name:" -msgstr "نام گره:" +msgstr "نام نمایه جدید:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Erase Profile" -msgstr "کُندی در آغاز" +msgstr "پاک کردن نمایه" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Godot Feature Profile" -msgstr "مدیریت صدور قالب ها" +msgstr "ویژگی نمایه Godot" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Import Profile(s)" -msgstr "پروژه واردشده" +msgstr "وارد کردن نمایه(ها)" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Export Profile" -msgstr "صدور پروژه" +msgstr "صادر کردن نمایه" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Manage Editor Feature Profiles" -msgstr "مدیریت صدور قالب ها" +msgstr "مدیریت ویژگی نمایههای ویرایشگر" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select Current Folder" -msgstr "ساختن پوشه" +msgstr "برگزیدن پوشه موجود" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" msgstr "فایل وجود دارد، آیا بازنویسی شود؟" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select This Folder" -msgstr "انتخاب حالت" +msgstr "برگزیدن این پوشه" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" msgstr "" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "Open in File Manager" -msgstr "باز شدن مدیر پروژه؟" +msgstr "گشودن در مدیر پرونده" #: editor/editor_file_dialog.cpp editor/editor_node.cpp #: editor/filesystem_dock.cpp editor/project_manager.cpp -#, fuzzy msgid "Show in File Manager" -msgstr "باز شدن مدیر پروژه؟" +msgstr "نمایش در مدیر پرونده" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "New Folder..." @@ -1924,29 +1841,24 @@ msgid "Move Favorite Down" msgstr "" #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to previous folder." -msgstr "رفتن به پوشه والد" +msgstr "برو به پوشه پیشین." #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to next folder." -msgstr "رفتن به پوشه والد" +msgstr "برو به پوشه بعد." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Go to parent folder." -msgstr "رفتن به پوشه والد" +msgstr "برو به پوشه والد." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Refresh files." -msgstr "جستجوی کلاسها" +msgstr "نوسازی پروندهها." #: editor/editor_file_dialog.cpp -#, fuzzy msgid "(Un)favorite current folder." -msgstr "ناتوان در ساختن پوشه." +msgstr "پوشه موجود (غیر)محبوب." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Toggle the visibility of hidden files." @@ -1976,7 +1888,7 @@ msgstr "پرونده:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Must use a valid extension." -msgstr "باید از یک پسوند معتبر استفاده شود." +msgstr "باید یک پسوند معتبر بکار گیرید." #: editor/editor_file_system.cpp msgid "ScanSources" @@ -2010,9 +1922,8 @@ msgid "Inherited by:" msgstr "به ارث رسیده به وسیله:" #: editor/editor_help.cpp -#, fuzzy msgid "Description" -msgstr "توضیح:" +msgstr "توضیح" #: editor/editor_help.cpp msgid "Online Tutorials" @@ -2020,25 +1931,23 @@ msgstr "" #: editor/editor_help.cpp msgid "Properties" -msgstr "" +msgstr "خصوصیات" #: editor/editor_help.cpp msgid "override:" msgstr "" #: editor/editor_help.cpp -#, fuzzy msgid "default:" -msgstr "پیشفرض" +msgstr "پیش فرض:" #: editor/editor_help.cpp msgid "Methods" -msgstr "روش ها" +msgstr "توابع" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "صافی کردن گرهها" +msgstr "خصوصیات زمینه" #: editor/editor_help.cpp msgid "Enumerations" @@ -2046,17 +1955,15 @@ msgstr "شمارش ها" #: editor/editor_help.cpp msgid "Constants" -msgstr "ثابت ها" +msgstr "ثوابت" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" -msgstr "توضیحات مشخصه:" +msgstr "توضیحات خصیصه" #: editor/editor_help.cpp -#, fuzzy msgid "(value)" -msgstr "ارزش:" +msgstr "(مقدار)" #: editor/editor_help.cpp msgid "" @@ -2065,9 +1972,8 @@ msgid "" msgstr "" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "توضیحات" +msgstr "توضیحات تابع" #: editor/editor_help.cpp msgid "" @@ -2082,80 +1988,67 @@ msgstr "جستجوی راهنما" #: editor/editor_help_search.cpp msgid "Case Sensitive" -msgstr "حساس به حالت (حروف لاتین)" +msgstr "حساس به حروف کوچک و بزرگ" #: editor/editor_help_search.cpp -#, fuzzy msgid "Show Hierarchy" -msgstr "جستجو" +msgstr "نمایش سلسلهمراتب" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "جایگزینی همه" +msgstr "نشان دادن همه" #: editor/editor_help_search.cpp msgid "Classes Only" -msgstr "" +msgstr "تنها کلاسها" #: editor/editor_help_search.cpp -#, fuzzy msgid "Methods Only" -msgstr "روش ها" +msgstr "تنها روشها" #: editor/editor_help_search.cpp -#, fuzzy msgid "Signals Only" -msgstr "سیگنالها" +msgstr "تنها سیگنالها" #: editor/editor_help_search.cpp -#, fuzzy msgid "Constants Only" -msgstr "ثابت ها" +msgstr "تنها ثوابت" #: editor/editor_help_search.cpp -#, fuzzy msgid "Properties Only" -msgstr "ویژگی:" +msgstr "تنها خصوصیات" #: editor/editor_help_search.cpp -#, fuzzy msgid "Theme Properties Only" -msgstr "دارایی Setter را اضافه کن" +msgstr "تنها خصوصیات زمینه" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "عضوها" +msgstr "نوع عضو" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "کلاس:" +msgstr "کلاس" #: editor/editor_help_search.cpp -#, fuzzy msgid "Method" -msgstr "روش ها" +msgstr "روش" #: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Signal" -msgstr "سیگنالها" +msgstr "سیگنال" #: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp msgid "Constant" msgstr "ثابت" #: editor/editor_help_search.cpp -#, fuzzy msgid "Property" -msgstr "ویژگی:" +msgstr "خصیصه" #: editor/editor_help_search.cpp -#, fuzzy msgid "Theme Property" -msgstr "صافی کردن گرهها" +msgstr "ویژگی زمینه" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" @@ -2163,20 +2056,19 @@ msgstr "ویژگی:" #: editor/editor_inspector.cpp msgid "Set" -msgstr "" +msgstr "تعیین" #: editor/editor_inspector.cpp msgid "Set Multiple:" -msgstr "" +msgstr "تعیین چندگانه:" #: editor/editor_log.cpp msgid "Output:" msgstr "خروجی:" #: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "برداشتن انتخاب شده" +msgstr "کپی برگزیده" #: editor/editor_log.cpp editor/editor_network_profiler.cpp #: editor/editor_profiler.cpp editor/editor_properties.cpp @@ -2189,31 +2081,30 @@ msgid "Clear" msgstr "پاک کردن" #: editor/editor_log.cpp -#, fuzzy msgid "Clear Output" -msgstr "خروجی" +msgstr "پاک کردن خروجی" #: editor/editor_network_profiler.cpp editor/editor_node.cpp #: editor/editor_profiler.cpp msgid "Stop" -msgstr "" +msgstr "توقف" #: editor/editor_network_profiler.cpp editor/editor_profiler.cpp #: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp msgid "Start" -msgstr "" +msgstr "شروع" #: editor/editor_network_profiler.cpp msgid "%s/s" -msgstr "" +msgstr "%s/ثانیه" #: editor/editor_network_profiler.cpp msgid "Down" -msgstr "" +msgstr "پایین" #: editor/editor_network_profiler.cpp msgid "Up" -msgstr "" +msgstr "بالا" #: editor/editor_network_profiler.cpp editor/editor_node.cpp msgid "Node" @@ -2237,7 +2128,7 @@ msgstr "" #: editor/editor_node.cpp editor/project_manager.cpp msgid "New Window" -msgstr "" +msgstr "چارچوب جدید" #: editor/editor_node.cpp msgid "Imported resources can't be saved." @@ -2246,11 +2137,11 @@ msgstr "" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: scene/gui/dialogs.cpp msgid "OK" -msgstr "موافقت" +msgstr "قبول" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" -msgstr "" +msgstr "خطای ذخیره سازی منبع!" #: editor/editor_node.cpp msgid "" @@ -2279,9 +2170,8 @@ msgid "Can't open '%s'. The file could have been moved or deleted." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Error while parsing '%s'." -msgstr "خطای بارگذاری قلم." +msgstr "خطا هنگام تجزیه '%s'." #: editor/editor_node.cpp msgid "Unexpected end of file '%s'." @@ -2292,9 +2182,8 @@ msgid "Missing '%s' or its dependencies." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Error while loading '%s'." -msgstr "خطای بارگذاری قلم." +msgstr "خطا هنگام تجزیه '%s'." #: editor/editor_node.cpp msgid "Saving Scene" @@ -2399,33 +2288,28 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" #: editor/editor_node.cpp editor/filesystem_dock.cpp msgid "Open Scene" -msgstr "باز کردن صحنه" +msgstr "گشودن صحنه" #: editor/editor_node.cpp msgid "Open Base Scene" -msgstr "" +msgstr "گشودن صحنه اصلی" #: editor/editor_node.cpp -#, fuzzy msgid "Quick Open..." -msgstr "باز کن" +msgstr "گشودن فوری..." #: editor/editor_node.cpp msgid "Quick Open Scene..." -msgstr "" +msgstr "گشودن فوری صحنه..." #: editor/editor_node.cpp msgid "Quick Open Script..." -msgstr "" +msgstr "گشودن سریع اسکریپت..." #: editor/editor_node.cpp msgid "Save & Close" @@ -2449,27 +2333,27 @@ msgstr "ذخیره صحنه در ..." #: editor/editor_node.cpp msgid "No" -msgstr "" +msgstr "نه" #: editor/editor_node.cpp msgid "Yes" -msgstr "تایید" +msgstr "بله" #: editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" -msgstr "" +msgstr "این صحنه هرگز ذخیره نشده است. ذخیره قبل از اجرا؟" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "This operation can't be done without a scene." -msgstr "" +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." -msgstr "" +msgstr "این عملیات بدون یک گره ریشه ای انجام نمی شود." #: editor/editor_node.cpp msgid "Export Tile Set" @@ -2488,9 +2372,8 @@ msgid "Can't reload a scene that was never saved." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Reload Saved Scene" -msgstr "باز کردن صحنه" +msgstr "بازیابی صحنه ذخیره شده" #: editor/editor_node.cpp msgid "" @@ -2500,7 +2383,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Quick Run Scene..." -msgstr "" +msgstr "اجرا فوری صحنه…" #: editor/editor_node.cpp msgid "Quit" @@ -2508,7 +2391,7 @@ msgstr "خروج" #: editor/editor_node.cpp msgid "Exit the editor?" -msgstr "از ویرایشگر خارج می شوید؟" +msgstr "خروج از ویرایشگر؟" #: editor/editor_node.cpp msgid "Open Project Manager?" @@ -2538,12 +2421,11 @@ msgstr "" #: editor/editor_node.cpp msgid "Close Scene" -msgstr "" +msgstr "بستن صحنه" #: editor/editor_node.cpp -#, fuzzy msgid "Reopen Closed Scene" -msgstr "باز کردن صحنه" +msgstr "بازگشودن صحنه بسته شده" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." @@ -2554,9 +2436,8 @@ msgid "Unable to find script field for addon plugin at: 'res://addons/%s'." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Unable to load addon script from path: '%s'." -msgstr "خطای بارگذاری قلم." +msgstr "امکان بارگیری اسکریپت افزونه از مسیر وجود ندارد: '%s'." #: editor/editor_node.cpp msgid "" @@ -2616,7 +2497,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Save Layout" -msgstr "" +msgstr "ذخیره لایه" #: editor/editor_node.cpp msgid "Delete Layout" @@ -2629,50 +2510,44 @@ msgstr "پیشفرض" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp -#, fuzzy msgid "Show in FileSystem" -msgstr "سامانه پرونده" +msgstr "نمایش در فایلسیستم" #: editor/editor_node.cpp -#, fuzzy msgid "Play This Scene" -msgstr "پخش صحنه" +msgstr "اجرای این صحنه" #: editor/editor_node.cpp -#, fuzzy msgid "Close Tab" -msgstr "بستن" +msgstr "بستن زبانه" #: editor/editor_node.cpp -#, fuzzy msgid "Undo Close Tab" -msgstr "بستن" +msgstr "برگرداندن زبانه" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Close Other Tabs" -msgstr "" +msgstr "بستن زبانه های دیگر" #: editor/editor_node.cpp msgid "Close Tabs to the Right" -msgstr "" +msgstr "بستن زبانه ها به طرف راست" #: editor/editor_node.cpp -#, fuzzy msgid "Close All Tabs" -msgstr "بستن" +msgstr "بستن تمام زبانه ها" #: editor/editor_node.cpp msgid "Switch Scene Tab" -msgstr "" +msgstr "جاگرداندن زبانه صحنه" #: editor/editor_node.cpp msgid "%d more files or folders" msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "%d more folders" -msgstr "نمیتواند یک پوشه ایجاد شود." +msgstr "%d پوشههای بیش تر" #: editor/editor_node.cpp msgid "%d more files" @@ -2703,9 +2578,8 @@ msgid "Go to previously opened scene." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Copy Text" -msgstr "کپی کردن" +msgstr "کپی متن" #: editor/editor_node.cpp msgid "Next tab" @@ -2744,9 +2618,8 @@ msgid "Save Scene" msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" -msgstr "ذخیره صحنه در ..." +msgstr "ذخیره صحنه" #: editor/editor_node.cpp msgid "Convert To..." @@ -2763,12 +2636,12 @@ msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Undo" -msgstr "خنثی کردن (Undo)" +msgstr "عقبگرد" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" -msgstr "" +msgstr "جلوگرد" #: editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." @@ -2780,14 +2653,12 @@ msgid "Project" msgstr "پروژه" #: editor/editor_node.cpp -#, fuzzy msgid "Project Settings..." -msgstr "ترجیحات پروژه" +msgstr "تنظیمات طرح…" #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Version Control" -msgstr "نسخه:" +msgstr "مهار نسخه" #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp msgid "Set Up Version Control" @@ -2798,27 +2669,24 @@ msgid "Shut Down Version Control" msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Export..." -msgstr "صدور" +msgstr "صدور…" #: editor/editor_node.cpp msgid "Install Android Build Template..." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Open Project Data Folder" -msgstr "باز شدن مدیر پروژه؟" +msgstr "گشودن پوشه اطلاعات طرح" #: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp msgid "Tools" msgstr "ابزارها" #: editor/editor_node.cpp -#, fuzzy msgid "Orphan Resource Explorer..." -msgstr "پویندهی منبع جدا افتاده" +msgstr "پویندهی منبع جاافتاده" #: editor/editor_node.cpp msgid "Quit to Project List" @@ -2898,14 +2766,12 @@ msgid "" msgstr "" #: editor/editor_node.cpp editor/script_create_dialog.cpp -#, fuzzy msgid "Editor" msgstr "ویرایشگر" #: editor/editor_node.cpp -#, fuzzy msgid "Editor Settings..." -msgstr "ویرایشگر ترجیحات" +msgstr "تنظیمات ویرایشگر…" #: editor/editor_node.cpp msgid "Editor Layout" @@ -10070,9 +9936,8 @@ msgid "Project Manager" msgstr "مدیر پروژه" #: editor/project_manager.cpp -#, fuzzy msgid "Projects" -msgstr "پروژه" +msgstr "طرح ها" #: editor/project_manager.cpp msgid "Last Modified" @@ -10112,6 +9977,8 @@ msgid "" "You currently don't have any projects.\n" "Would you like to explore official example projects in the Asset Library?" msgstr "" +"شما فعلا هیچ طرحی ندارید.\n" +"آیا می خواهید طرح های نمونه رسمی را در کتابخانه دارایی کاوش کنید؟" #: editor/project_manager.cpp msgid "" @@ -10119,6 +9986,9 @@ msgid "" "To filter projects by name and full path, the query must contain at least " "one `/` character." msgstr "" +"کادر جستجو طرح ها را با نام و مسیر اجزا گذشته تصفیه می کند.\n" +"برای تصفیه کردن طرح ها با نام و مسیر کامل، پرس و جو باید حداقل دارای یک `/" +"`کاراکتر باشد." #: editor/project_settings_editor.cpp msgid "Key " @@ -10363,7 +10233,7 @@ msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "The editor must be restarted for changes to take effect." -msgstr "" +msgstr "باید ویرایشگر از نو شروع شود تا تغییرات جلوه کنند." #: editor/project_settings_editor.cpp msgid "Input Map" @@ -10739,6 +10609,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "حذف گره(ها)" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "حذف گره(ها)" @@ -12469,7 +12344,7 @@ msgstr "" #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." -msgstr "یک CollisionPolygon2D خالی اثری بر برخورد ندارد." +msgstr "یک CollisionPolygon2D خالی جلوه بر برخورد ندارد." #: scene/2d/collision_shape_2d.cpp msgid "" @@ -12490,6 +12365,12 @@ msgstr "" "یک شکل باید برای CollisionShape2D فراهم شده باشد تا عمل کند. لطفا یک شکل " "منبع برای آن ایجاد کنید!" +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12506,9 +12387,7 @@ msgstr "یک بافت با شکل نور باید برای دارایی texture #: scene/2d/light_occluder_2d.cpp msgid "" "An occluder polygon must be set (or drawn) for this occluder to take effect." -msgstr "" -"یک چندضلعی مسدود باید برای این مسدودکننده (occluder) تنظیم (یا ترسیم) شود تا " -"تأثیرگذار باشد." +msgstr "یک چندضلعی انسدادی باید تنظیم (یا ترسیم) شود تا جلوه کننده باشد." #: scene/2d/light_occluder_2d.cpp #, fuzzy @@ -12680,7 +12559,7 @@ msgstr "" #: scene/3d/collision_polygon.cpp msgid "An empty CollisionPolygon has no effect on collision." -msgstr "یک CollisionPolygon خالی تأثیری بر برخورد ندارد." +msgstr "یک CollisionPolygon خالی جلوه بر برخورد ندارد." #: scene/3d/collision_shape.cpp msgid "" @@ -12825,6 +12704,8 @@ msgid "" "WorldEnvironment requires its \"Environment\" property to contain an " "Environment to have a visible effect." msgstr "" +"محیط جهان نیاز به ویژگی \"محیط\" خود دارد تا دارای یک محیط باشد تا جلوه ای " +"قابل دیدن داشته باشد." #: scene/3d/world_environment.cpp msgid "" @@ -13009,7 +12890,7 @@ msgstr "" #: servers/visual/shader_language.cpp msgid "Constants cannot be modified." -msgstr "" +msgstr "ثوابت قابل تغییر نیستند." #~ msgid "Not in resource path." #~ msgstr "در مسیرِ منبع نیست." diff --git a/editor/translations/fi.po b/editor/translations/fi.po index 8ea9a940f0..124ae4f2e0 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"PO-Revision-Date: 2020-08-05 16:58+0000\n" "Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/" "godot/fi/>\n" @@ -1710,7 +1710,7 @@ msgstr "Uusi" #: editor/editor_feature_profile.cpp editor/editor_node.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "Tuo" +msgstr "Tuonti" #: editor/editor_feature_profile.cpp editor/project_export.cpp msgid "Export" @@ -2327,11 +2327,6 @@ msgid "There is no defined scene to run." msgstr "Suoritettavaa skeneä ei ole määritetty." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"Nykyistä skeneä ei ole vielä tallennettu. Tallenna se ennen suorittamista." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Aliprosessia ei voitu käynnistää!" @@ -8152,7 +8147,7 @@ msgstr "Peitto" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Navigation" -msgstr "Siirtyminen" +msgstr "Navigointi" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Bitmask" @@ -8642,7 +8637,7 @@ msgstr "Muuntaa HSV-vektorin RGB-vastaavaksi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts RGB vector to HSV equivalent." -msgstr "Muuntaa RGB-vektori HSV-vastaavaksi." +msgstr "Muuntaa RGB-vektorin HSV-vastaavaksi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sepia function." @@ -10530,6 +10525,10 @@ msgid "Make node as Root" msgstr "Tee solmusta juurisolmu" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "Poista %d solmua ja kaikki alisolmut?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Poista %d solmua?" @@ -12223,6 +12222,15 @@ msgstr "" "CollisionShape2D solmulla täytyy olla muoto, jotta se toimisi. Ole hyvä ja " "luo sille muotoresurssi!" +#: 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 "" +"Polygonipohjaisia muotoja ei ole tarkoitus käyttää tai muokata suoraan " +"CollisionShape2D solmun kautta. Ole hyvä ja käytä sen sijaan " +"CollisionPolygon2D solmua." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12797,6 +12805,10 @@ msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa." msgid "Constants cannot be modified." msgstr "Vakioita ei voi muokata." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Nykyistä skeneä ei ole vielä tallennettu. Tallenna se ennen suorittamista." + #~ msgid "Not in resource path." #~ msgstr "Ei löytynyt resurssipolusta." diff --git a/editor/translations/fil.po b/editor/translations/fil.po index ceda61c802..490d9d92ec 100644 --- a/editor/translations/fil.po +++ b/editor/translations/fil.po @@ -2259,10 +2259,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10133,6 +10129,10 @@ 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 "" @@ -11739,6 +11739,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/fr.po b/editor/translations/fr.po index 9dd9b3e166..9bb04cb2b0 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -35,7 +35,7 @@ # Rémi Verschelde <rverschelde@gmail.com>, 2016-2017. # Robin Arys <robinarys@hotmail.com>, 2017. # Roger BR <drai_kin@hotmail.com>, 2016. -# salty64 <cedric.arrabie@univ-pau.fr>, 2018. +# salty64 <cedric.arrabie@univ-pau.fr>, 2018, 2020. # Thomas Baijot <thomasbaijot@gmail.com>, 2016, 2019. # Tommy Melançon-Roy <tommel1234@hotmail.com>, 2017-2018. # Willow <theotimefd@aol.com>, 2018. @@ -79,8 +79,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" -"Last-Translator: Nathan <bonnemainsnathan@gmail.com>\n" +"PO-Revision-Date: 2020-08-01 11:14+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" @@ -384,7 +384,7 @@ msgstr "Envelopper l’interp. de la boucle" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "Insérer clés" +msgstr "Insérer clé" #: editor/animation_track_editor.cpp msgid "Duplicate Key(s)" @@ -1787,7 +1787,7 @@ msgstr "Nouveau" #: editor/editor_feature_profile.cpp editor/editor_node.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "Importer" +msgstr "Importation" #: editor/editor_feature_profile.cpp editor/project_export.cpp msgid "Export" @@ -2409,12 +2409,6 @@ msgid "There is no defined scene to run." msgstr "Il n'y a pas de scène définie pour être lancée." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"La scène actuelle n'a jamais été sauvegardée, veuillez la sauvegarder avant " -"de la lancer." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Impossible de démarrer le sous-processus !" @@ -5543,7 +5537,7 @@ msgstr "Activer/Désactiver le magnétisme intelligent." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Smart Snap" -msgstr "Utiliser le magnétisme intelligent" +msgstr "Utiliser l'aimantation intelligente" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Toggle grid snapping." @@ -7311,7 +7305,7 @@ msgstr "Échelle : " #: editor/plugins/spatial_editor_plugin.cpp msgid "Translating: " -msgstr "Traduction : " +msgstr "Translation : " #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." @@ -7567,7 +7561,7 @@ msgstr "Utiliser les coordonées locales" #: editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" -msgstr "Aligner avec la grille" +msgstr "Utiliser l’aimantation" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -7599,11 +7593,11 @@ msgstr "Basculer entre la vue perspective et orthogonale" #: editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" -msgstr "Insérer une clef d'animation" +msgstr "Insérer une clé d'animation" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Origin" -msgstr "Focaliser sur l'origine" +msgstr "Focaliser l'origine" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" @@ -9026,8 +9020,7 @@ msgstr "Renvoie la tangente hyperbolique inverse du paramètre." msgid "" "Finds the nearest integer that is greater than or equal to the parameter." msgstr "" -"Recherche l'entier le plus proche qui est plus supérieur ou égal au " -"paramètre." +"Recherche l'entier le plus proche qui est supérieur ou égal au paramètre." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Constrains a value to lie between two further values." @@ -9043,7 +9036,7 @@ msgstr "Renvoie le cosinus hyperbolique du paramètre." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in radians to degrees." -msgstr "Convertit une quantité de radians en degrés." +msgstr "Convertit une quantité en radians en degrés." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-e Exponential." @@ -9109,11 +9102,11 @@ msgstr "1.0 / scalaire" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest integer to the parameter." -msgstr "Renvoie l'entier le plus proche de celui du paramètre." +msgstr "Renvoie l'entier le plus proche du paramètre." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest even integer to the parameter." -msgstr "Renvoie l'entier pair le plus proche de celui du paramètre." +msgstr "Renvoie l'entier pair le plus proche du paramètre." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Clamps the value between 0.0 and 1.0." @@ -10686,6 +10679,10 @@ msgid "Make node as Root" msgstr "Choisir le nœud comme racine de scène" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "Supprimer %d nœuds et leurs enfants potentiels ?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Supprimer %d nœuds ?" @@ -11130,11 +11127,11 @@ msgstr "Erreur :" #: editor/script_editor_debugger.cpp msgid "C++ Error" -msgstr "Erreur C ++" +msgstr "Erreur C++" #: editor/script_editor_debugger.cpp msgid "C++ Error:" -msgstr "Erreur C ++ :" +msgstr "Erreur C++ :" #: editor/script_editor_debugger.cpp msgid "C++ Source" @@ -11223,7 +11220,7 @@ msgstr "Exporter la liste vers un fichier CSV" #: editor/script_editor_debugger.cpp msgid "Resource Path" -msgstr "Chemin de la ressource" +msgstr "Chemin de ressource" #: editor/script_editor_debugger.cpp msgid "Type" @@ -12404,6 +12401,15 @@ msgstr "" "Une forme doit être créée afin qu'une CollisionShape2D fonctionne. Veuillez " "créer une ressource de forme !" +#: 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 "" +"Les formes à base de polygones ne sont pas prévues pour être utilisées ou " +"éditées via le nœud CollisionShape2D. Veuillez utiliser le nœud " +"CollisionPolygon2D à la place." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12984,7 +12990,7 @@ msgstr "Affectation à la fonction." #: servers/visual/shader_language.cpp msgid "Assignment to uniform." -msgstr "Affectation à l'uniforme." +msgstr "Affectation à la variable uniform." #: servers/visual/shader_language.cpp msgid "Varyings can only be assigned in vertex function." @@ -12994,6 +13000,11 @@ msgstr "Les variations ne peuvent être affectées que dans la fonction vertex." msgid "Constants cannot be modified." msgstr "Les constantes ne peuvent être modifiées." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "La scène actuelle n'a jamais été sauvegardée, veuillez la sauvegarder " +#~ "avant de la lancer." + #~ msgid "Not in resource path." #~ msgstr "Pas dans le chemin de la ressource." diff --git a/editor/translations/ga.po b/editor/translations/ga.po index 70dd5eada7..a496566c2e 100644 --- a/editor/translations/ga.po +++ b/editor/translations/ga.po @@ -2253,10 +2253,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10129,6 +10125,10 @@ 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 "" @@ -11737,6 +11737,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/he.po b/editor/translations/he.po index 7895ae48fe..0f9a19c842 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -14,12 +14,13 @@ # test test <ugbdvwpeikvyzwaadt@awdrt.org>, 2020. # Anonymous <noreply@weblate.org>, 2020. # Daniel Kariv <danielkariv98@gmail.com>, 2020. +# Ziv D <wizdavid@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-05-07 21:28+0000\n" -"Last-Translator: Anonymous <noreply@weblate.org>\n" +"PO-Revision-Date: 2020-08-11 14:04+0000\n" +"Last-Translator: Ziv D <wizdavid@gmail.com>\n" "Language-Team: Hebrew <https://hosted.weblate.org/projects/godot-engine/" "godot/he/>\n" "Language: he\n" @@ -28,7 +29,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " "n % 10 == 0) ? 2 : 3));\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -258,7 +259,7 @@ msgstr "החלפת נתיב רצועה" #: editor/animation_track_editor.cpp msgid "Toggle this track on/off." -msgstr "הפעל/כבה רצועה" +msgstr "הפעל/כבה רצועה." #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" @@ -340,9 +341,8 @@ msgid "Change Animation Update Mode" msgstr "שינוי מצב עדכון הנפשה" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Interpolation Mode" -msgstr "החלפת ערך מילון" +msgstr "שינוי מצב אינטרפולציה בהנפשה" #: editor/animation_track_editor.cpp msgid "Change Animation Loop Mode" @@ -554,9 +554,8 @@ msgid "Edit" msgstr "עריכה" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation properties." -msgstr "שקופיות ההנפשה" +msgstr "מאפייני ההנפשה." #: editor/animation_track_editor.cpp #, fuzzy @@ -712,12 +711,11 @@ msgstr "%d הוחלף." #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d match." -msgstr "d% התאמות." +msgstr "%d התאמות." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d matches." -msgstr "אין תוצאות" +msgstr "%d התאמות." #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" @@ -831,9 +829,8 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp -#, fuzzy msgid "Receiver Method:" -msgstr "מאפייני פריט." +msgstr "שיטת המקלט:" #: editor/connections_dialog.cpp msgid "Advanced" @@ -933,9 +930,8 @@ msgid "Disconnect All" msgstr "ניתוק" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit..." -msgstr "עריכה" +msgstr "עריכה..." #: editor/connections_dialog.cpp #, fuzzy @@ -1395,9 +1391,8 @@ msgid "Add Bus" msgstr "הוספת אפיק" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Add a new Audio Bus to this layout." -msgstr "שמירת פריסת אפיקי השמע בתור…" +msgstr "הוסף אפיק שמע חדש לפריסה זו." #: editor/editor_audio_buses.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp @@ -1603,9 +1598,8 @@ msgstr "" #: 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 -#, fuzzy msgid "Custom debug template not found." -msgstr "קובץ התבנית לא נמצא:" +msgstr "תבנית ניפוי שגיאות מותאמת אישית לא נמצאה." #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -1718,9 +1712,8 @@ msgid "" msgstr "" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Error saving profile to path: '%s'." -msgstr "שגיאה בשמירה" +msgstr "שגיאה בשמירת פרופיל לנתיב 's%'." #: editor/editor_feature_profile.cpp msgid "Unset" @@ -1899,14 +1892,12 @@ msgid "Move Favorite Down" msgstr "העברת מועדף למטה" #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to previous folder." -msgstr "מעבר לתיקייה שמעל" +msgstr "מעבר לתיקיה הקודמת." #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to next folder." -msgstr "מעבר לתיקייה שמעל" +msgstr "מעבר לתיקיה הבאה." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp #, fuzzy @@ -1914,9 +1905,8 @@ msgid "Go to parent folder." msgstr "מעבר לתיקייה שמעל" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Refresh files." -msgstr "חיפוש במחלקות" +msgstr "רענן קבצים." #: editor/editor_file_dialog.cpp #, fuzzy @@ -1924,19 +1914,16 @@ msgid "(Un)favorite current folder." msgstr "לא ניתן ליצור תיקייה." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Toggle the visibility of hidden files." -msgstr "החלפת מצב תצוגה לקבצים מוסתרים" +msgstr "הצג/הסתר קבצים מוסתרים." #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "View items as a grid of thumbnails." -msgstr "צפייה בפריטים כרשת של תמונות ממוזערות" +msgstr "הצג פריטים כרשת של תמונות ממוזערות." #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "View items as a list." -msgstr "הצגת פריטים כרשימה" +msgstr "הצג פריטים כרשימה." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Directories & Files:" @@ -2381,10 +2368,6 @@ msgid "There is no defined scene to run." msgstr "אין סצנה מוגדרת להרצה." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "הסצנה הנוכחית מעולם לא נשמרה, נא לשמור אותה בטרם ההרצה." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "לא ניתן להפעיל תהליך משנה!" @@ -2763,9 +2746,8 @@ msgid "Project" msgstr "מיזם" #: editor/editor_node.cpp -#, fuzzy msgid "Project Settings..." -msgstr "הגדרות מיזם" +msgstr "הגדרות מיזם..." #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp #, fuzzy @@ -2781,27 +2763,24 @@ msgid "Shut Down Version Control" msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Export..." -msgstr "ייצוא" +msgstr "ייצוא..." #: editor/editor_node.cpp msgid "Install Android Build Template..." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Open Project Data Folder" -msgstr "לפתוח את מנהל המיזמים?" +msgstr "פתיחת תיקיית נתוני המיזם" #: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp msgid "Tools" msgstr "כלים" #: editor/editor_node.cpp -#, fuzzy msgid "Orphan Resource Explorer..." -msgstr "דפדפן משאבים יתומים" +msgstr "סייר משאבים יתומים ..." #: editor/editor_node.cpp msgid "Quit to Project List" @@ -2887,9 +2866,8 @@ msgid "Editor" msgstr "עורך" #: editor/editor_node.cpp -#, fuzzy msgid "Editor Settings..." -msgstr "הגדרות עורך" +msgstr "הגדרות העורך..." #: editor/editor_node.cpp msgid "Editor Layout" @@ -2915,9 +2893,8 @@ msgid "Toggle System Console" msgstr "החלפת מצב" #: editor/editor_node.cpp -#, fuzzy msgid "Open Editor Data/Settings Folder" -msgstr "הגדרות עורך" +msgstr "פתח תיקיית נתונים/הגדרות של העורך" #: editor/editor_node.cpp msgid "Open Editor Data Folder" @@ -3531,9 +3508,8 @@ msgid "" msgstr "" #: editor/export_template_manager.cpp -#, fuzzy msgid "Error requesting URL:" -msgstr "שגיאה בבקשת כתובת: " +msgstr "שגיאה בבקשת כתובת:" #: editor/export_template_manager.cpp msgid "Connecting to Mirror..." @@ -3862,14 +3838,12 @@ msgid "Cancel" msgstr "" #: editor/find_in_files.cpp -#, fuzzy msgid "Find: " -msgstr "איתור" +msgstr "איתור " #: editor/find_in_files.cpp -#, fuzzy msgid "Replace: " -msgstr "להחליף" +msgstr "להחליף " #: editor/find_in_files.cpp #, fuzzy @@ -4816,9 +4790,8 @@ msgid "Set the end animation. This is useful for sub-transitions." msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition: " -msgstr "מעברון" +msgstr "מעברון: " #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy @@ -9683,9 +9656,8 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp -#, fuzzy msgid "Pack File" -msgstr " קבצים" +msgstr "קובץ ארכיון" #: editor/project_export.cpp msgid "Features" @@ -9738,9 +9710,8 @@ msgid "Export Project" msgstr "ייצוא מיזם" #: editor/project_export.cpp -#, fuzzy msgid "Export mode?" -msgstr "ייצוא מיזם" +msgstr "מצב הייצוא?" #: editor/project_export.cpp #, fuzzy @@ -9748,9 +9719,8 @@ msgid "Export All" msgstr "ייצוא" #: editor/project_export.cpp editor/project_manager.cpp -#, fuzzy msgid "ZIP File" -msgstr " קבצים" +msgstr "קובץ ZIP" #: editor/project_export.cpp msgid "Godot Game Pack" @@ -10492,9 +10462,8 @@ msgid "Node type" msgstr "איתור סוג מפרק" #: editor/rename_dialog.cpp -#, fuzzy msgid "Current scene name" -msgstr "הסצנה הנוכחית לא נשמרה. לפתוח בכל זאת?" +msgstr "שם סצנה נוכחית" #: editor/rename_dialog.cpp #, fuzzy @@ -10684,10 +10653,15 @@ msgstr "שמירת סצנה" #: editor/scene_tree_dock.cpp #, fuzzy -msgid "Delete %d nodes?" +msgid "Delete %d nodes and any children?" msgstr "מחיקת שורה" #: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete %d nodes?" +msgstr "מחק %d מפרקים?" + +#: editor/scene_tree_dock.cpp msgid "Delete the root node \"%s\"?" msgstr "" @@ -10696,9 +10670,8 @@ msgid "Delete node \"%s\" and its children?" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete node \"%s\"?" -msgstr "מחיקת שורה" +msgstr "מחק מפרק \"%s\"?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." @@ -12367,6 +12340,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12500,7 +12479,7 @@ msgstr "ARVROrigin דורש מפרק צאצא מסוג ARVRCamera" #: scene/3d/baked_lightmap.cpp msgid "%d%%" -msgstr "" +msgstr "%d%%" #: scene/3d/baked_lightmap.cpp msgid "(Time Left: %d:%02d s)" @@ -12842,6 +12821,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "הסצנה הנוכחית מעולם לא נשמרה, נא לשמור אותה בטרם ההרצה." + #~ msgid "Not in resource path." #~ msgstr "לא בנתיב המשאב." diff --git a/editor/translations/hi.po b/editor/translations/hi.po index e3ae2aabe5..70d7a4d6b3 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -2311,10 +2311,6 @@ msgid "There is no defined scene to run." msgstr "चलाने के लिए कोई परिभाषित दृश्य नहीं है ।" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "वर्तमान दृश्य कभी नहीं बचाया गया था, कृपया इसे चलाने से पहले बचाने के लिए ।" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "उपप्रक्रिया शुरू नहीं कर सका!" @@ -10329,6 +10325,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "को हटा दें" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "को हटा दें" @@ -11975,6 +11976,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12443,6 +12450,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "वर्तमान दृश्य कभी नहीं बचाया गया था, कृपया इसे चलाने से पहले बचाने के लिए ।" + #~ msgid "Not in resource path." #~ msgstr "रेसोर्स पाथ में नहीं." diff --git a/editor/translations/hr.po b/editor/translations/hr.po index 5355ee1dc9..a515a912b0 100644 --- a/editor/translations/hr.po +++ b/editor/translations/hr.po @@ -2271,10 +2271,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10179,6 +10175,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Obriši ključ(eve)" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Obriši ključ(eve)" @@ -11798,6 +11799,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/hu.po b/editor/translations/hu.po index b57028a426..c6828cc7d3 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -5,17 +5,18 @@ # Árpád Horváth <horvatha4@googlemail.com>, 2018. # Nagy Lajos <neutron9707@gmail.com>, 2017. # Sandor Domokos <sandor.domokos@gmail.com>, 2017-2018. -# Varga Dániel <danikah.danikah@gmail.com>, 2016-2018. -# Gabor Csordas <gaborcsordas@yahoo.com>, 2018, 2019. +# Varga Dániel <danikah.danikah@gmail.com>, 2016-2018, 2020. +# Gabor Csordas <gaborcsordas@yahoo.com>, 2018, 2019, 2020. # Tusa Gamer <tusagamer@mailinator.com>, 2018. # Máté Lugosi <mate.lugosi@gmail.com>, 2019. # sztrovacsek <magadeve@gmail.com>, 2019. +# Ács Zoltán <acszoltan111@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-01-30 03:56+0000\n" -"Last-Translator: Deleted User <noreply+18797@weblate.org>\n" +"PO-Revision-Date: 2020-08-11 14:04+0000\n" +"Last-Translator: Ács Zoltán <acszoltan111@gmail.com>\n" "Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/" "godot/hu/>\n" "Language: hu\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 3.11-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -44,7 +45,7 @@ msgstr "Nincs elég bájt a bájtok dekódolására, vagy hibás formátum." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "Érvénytelen bemenet %i (nem átadott) a kifejezésben." +msgstr "Érvénytelen bemenet %i (nem átadott) a kifejezésben" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -52,7 +53,7 @@ msgstr "self nem használható, mert a példány null (nincs átadva)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "Érvénytelen operandus a %s, %s és %s operátorokhoz." +msgstr "Érvénytelen operandusok az %s, %s és %s operátorhoz." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" @@ -102,7 +103,7 @@ msgstr "EiB" #: editor/animation_bezier_editor.cpp msgid "Free" -msgstr "Ingyenes" +msgstr "Szabad" #: editor/animation_bezier_editor.cpp msgid "Balanced" @@ -134,11 +135,11 @@ msgstr "Kiválasztott kulcsok törlése" #: editor/animation_bezier_editor.cpp msgid "Add Bezier Point" -msgstr "Bezier pont hozzáadása" +msgstr "Bézier pont hozzáadása" #: editor/animation_bezier_editor.cpp msgid "Move Bezier Points" -msgstr "Bezier pont Mozgatása" +msgstr "Bézier pont mozgatása" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" @@ -214,7 +215,7 @@ msgstr "UV Térkép Transzformálása" #: editor/animation_track_editor.cpp msgid "Call Method Track" -msgstr "" +msgstr "Hívás módszer követése" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" @@ -222,7 +223,7 @@ msgstr "Bezier Görbe Nyomvonal" #: editor/animation_track_editor.cpp msgid "Audio Playback Track" -msgstr "" +msgstr "Hang lejátszás követése" #: editor/animation_track_editor.cpp #, fuzzy @@ -265,9 +266,8 @@ msgid "Change Track Path" msgstr "Tömb Értékének Megváltoztatása" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Toggle this track on/off." -msgstr "Zavarmentes mód váltása." +msgstr "A sáv ki/be kapcsolása." #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" @@ -287,9 +287,8 @@ msgid "Remove this track." msgstr "Kiválasztott nyomvonal eltávolítása." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Time (s): " -msgstr "Áttűnési Idő (mp):" +msgstr "Idő (mp):" #: editor/animation_track_editor.cpp #, fuzzy @@ -618,7 +617,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Use Bezier Curves" -msgstr "" +msgstr "Bézier görbék használata" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" @@ -710,11 +709,11 @@ msgstr "Tömb Értékének Megváltoztatása" #: editor/code_editor.cpp msgid "Go to Line" -msgstr "Sorra Ugrás" +msgstr "Ugrás Sorra" #: editor/code_editor.cpp msgid "Line Number:" -msgstr "Sor Száma:" +msgstr "Sorszám:" #: editor/code_editor.cpp #, fuzzy @@ -736,7 +735,7 @@ msgstr "Pontos Egyezés" #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Whole Words" -msgstr "Teljes Szavak" +msgstr "Egész Szavak" #: editor/code_editor.cpp editor/rename_dialog.cpp msgid "Replace" @@ -826,7 +825,7 @@ msgstr "A Node nem tartalmaz geometriát." #: 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 "Hozzáad" +msgstr "Hozzáadás" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/editor_feature_profile.cpp editor/groups_editor.cpp @@ -837,7 +836,7 @@ msgstr "Hozzáad" #: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp #: editor/project_settings_editor.cpp msgid "Remove" -msgstr "Eltávolít" +msgstr "Eltávolítás" #: editor/connections_dialog.cpp msgid "Add Extra Call Argument:" @@ -922,7 +921,7 @@ msgstr "Kapcsolás..." #: editor/connections_dialog.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Disconnect" -msgstr "Szétkapcsol" +msgstr "Leválasztás" #: editor/connections_dialog.cpp #, fuzzy @@ -980,7 +979,7 @@ msgstr "Kedvencek:" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp msgid "Recent:" -msgstr "Legutóbbi:" +msgstr "Legutolsó:" #: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp #: editor/property_selector.cpp editor/quick_open.cpp @@ -1066,7 +1065,7 @@ msgstr "Csere Forrás Keresése:" #: modules/visual_script/visual_script_property_selector.cpp #: scene/gui/file_dialog.cpp msgid "Open" -msgstr "Megnyit" +msgstr "Megnyitás" #: editor/dependency_editor.cpp msgid "Owners Of:" @@ -2266,7 +2265,7 @@ msgstr "" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: scene/gui/dialogs.cpp msgid "OK" -msgstr "" +msgstr "OK" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" @@ -2441,11 +2440,6 @@ msgid "There is no defined scene to run." msgstr "Nincs meghatározva Scene a futtatáshoz." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"A jelenlegi Scene soha nem volt még mentve, mentse el a futtatás előtt." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Az alprocesszt nem lehetett elindítani!" @@ -4320,16 +4314,14 @@ msgid "Create points." msgstr "Pontok Törlése" #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "" "Edit points.\n" "LMB: Move Point\n" "RMB: Erase Point" msgstr "" -"Meglévő sokszög módosítása:\n" -"Bal Egérgomb: Pont Mozgatása.\n" -"Ctrl + Bal Egérgomb: Szakasz Felosztása.\n" -"Jobb Egérgomb: Pont Eltörlése." +"Pontok szerkesztése\n" +"Bal Egérgomb: Pont mozgatása\n" +"Jobb Egérgomb: Pont törlése" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/animation_blend_space_1d_editor.cpp @@ -5846,7 +5838,7 @@ msgstr "Nézet Megjelenítése" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "Csoport Megjelenítése és ikonok zárolása" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -8367,7 +8359,7 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" -msgstr "" +msgstr "Ikon" #: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp msgid "Style" @@ -8375,7 +8367,7 @@ msgstr "Stílus" #: editor/plugins/theme_editor_plugin.cpp msgid "Font" -msgstr "" +msgstr "Betűtípus" #: editor/plugins/theme_editor_plugin.cpp msgid "Color" @@ -8397,9 +8389,8 @@ msgstr "Érvénytelen név." #: editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "Kijelölés Középre" +msgstr "Kijelölés kivágása" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -8407,7 +8398,7 @@ msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Line Draw" -msgstr "" +msgstr "Vonal rajzolás" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rectangle Paint" @@ -8496,7 +8487,7 @@ msgstr "Jelenlegi tétel eltávolítása" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" -msgstr "" +msgstr "Létrehozás jelenetből" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from Scene" @@ -10053,7 +10044,7 @@ msgstr "" #: editor/project_manager.cpp msgid "Rename Project" -msgstr "" +msgstr "Projekt átnevezése" #: editor/project_manager.cpp msgid "Import Existing Project" @@ -10081,7 +10072,7 @@ msgstr "" #: editor/project_manager.cpp msgid "Project Name:" -msgstr "" +msgstr "Projekt neve:" #: editor/project_manager.cpp msgid "Project Path:" @@ -10125,7 +10116,7 @@ msgstr "" #: editor/project_manager.cpp msgid "Unnamed Project" -msgstr "" +msgstr "Névtelen projekt" #: editor/project_manager.cpp #, fuzzy @@ -10229,7 +10220,7 @@ msgstr "" #: editor/project_manager.cpp msgid "Project Manager" -msgstr "" +msgstr "Projektkezelő" #: editor/project_manager.cpp #, fuzzy @@ -10242,7 +10233,7 @@ msgstr "" #: editor/project_manager.cpp msgid "Scan" -msgstr "" +msgstr "Keresés" #: editor/project_manager.cpp msgid "Select a Folder to Scan" @@ -10894,6 +10885,11 @@ msgstr "Scene mentés" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Node létrehozás" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Node létrehozás" @@ -12589,6 +12585,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -13066,6 +13068,10 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "A jelenlegi Scene soha nem volt még mentve, mentse el a futtatás előtt." + #~ msgid "Not in resource path." #~ msgstr "Nincs az erőforrás elérési útban." diff --git a/editor/translations/id.po b/editor/translations/id.po index 92c0c25da9..cf4bd738fa 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -26,12 +26,13 @@ # Ade Fikri Malihuddin <ade.fm97@gmail.com>, 2020. # zephyroths <ridho.hikaru@gmail.com>, 2020. # Richard Urban <redasuio1@gmail.com>, 2020. +# yusuf afandi <afandi.yusuf.04@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-03 20:09+0000\n" -"Last-Translator: Sofyan Sugianto <sofyanartem@gmail.com>\n" +"PO-Revision-Date: 2020-07-06 04:41+0000\n" +"Last-Translator: yusuf afandi <afandi.yusuf.04@gmail.com>\n" "Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/" "godot/id/>\n" "Language: id\n" @@ -39,7 +40,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -778,9 +779,8 @@ msgid "Method in target node must be specified." msgstr "Method dalam node target harus ditentukan." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Nama bukan sebuah pengidentifikasi yang sah:" +msgstr "Nama bukan sebuah pengidentifikasi yang sah." #: editor/connections_dialog.cpp msgid "" @@ -2346,12 +2346,6 @@ msgid "There is no defined scene to run." msgstr "Tidak ada skena yang didefinisikan untuk dijalankan." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"Skena saat ini belum pernah disimpan, harap simpan terlebih dahulu sebelum " -"menjalankannya." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Tidak dapat memulai subproses!" @@ -10553,6 +10547,11 @@ msgid "Make node as Root" msgstr "Jadikan node sebagai Dasar" #: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Hapus node \"%s\" dan anak-anaknya?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Hapus %d node?" @@ -12240,6 +12239,12 @@ msgstr "" "Sebuah shape harus disediakan untuk CollisionShape2D supaya berfungsi. Mohon " "ciptakan resource shape untuknya!" +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12800,6 +12805,11 @@ msgstr "Variasi hanya bisa ditetapkan dalam fungsi vertex." msgid "Constants cannot be modified." msgstr "Konstanta tidak dapat dimodifikasi." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Skena saat ini belum pernah disimpan, harap simpan terlebih dahulu " +#~ "sebelum menjalankannya." + #~ msgid "Not in resource path." #~ msgstr "Tidak dalam lokasi resource." diff --git a/editor/translations/is.po b/editor/translations/is.po index f0d93d1242..d53a9d609d 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -2291,10 +2291,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10240,6 +10236,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Anim DELETE-lyklar" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Anim DELETE-lyklar" @@ -11858,6 +11859,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/it.po b/editor/translations/it.po index 7c929b7779..b2dac5ae0e 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -27,9 +27,9 @@ # Hairic95 <hairic95@gmail.com>, 2019. # Christian Biffi <creixx@virgilio.it>, 2019. # Giuseppe Guerra <me@nyodev.xyz>, 2019. -# RHC <rhc.throwaway@gmail.com>, 2019. -# Antonio Giungato <antonio.giungato@gmail.com>, 2019. -# Marco Galli <mrcgll98@gmail.com>, 2019. +# RHC <rhc.throwaway@gmail.com>, 2019, 2020. +# Antonio Giungato <antonio.giungato@gmail.com>, 2019, 2020. +# Marco Galli <mrcgll98@gmail.com>, 2019, 2020. # MassiminoilTrace <omino.gis@gmail.com>, 2019, 2020. # MARCO BANFI <mbanfi@gmail.com>, 2019. # Marco <rodomar705@gmail.com>, 2019. @@ -37,7 +37,7 @@ # Stefano Merazzi <asso99@hotmail.com>, 2019. # Sinapse X <sinapsex13@gmail.com>, 2019. # Micila Micillotto <micillotto@gmail.com>, 2019, 2020. -# Mirko Soppelsa <miknsop@gmail.com>, 2019. +# Mirko Soppelsa <miknsop@gmail.com>, 2019, 2020. # No <kingofwizards.kw7@gmail.com>, 2019. # StarFang208 <polaritymanx@yahoo.it>, 2019. # Katia Piazza <gydey@ridiculousglitch.com>, 2019. @@ -52,12 +52,14 @@ # 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. +# Federico Manzella <ferdiu.manzella@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" -"Last-Translator: Lorenzo Asolan <brixiumx@gmail.com>\n" +"PO-Revision-Date: 2020-08-05 16:58+0000\n" +"Last-Translator: Lorenzo Cerqua <lorenzocerqua@tutanota.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" "Language: it\n" @@ -70,23 +72,23 @@ msgstr "" #: 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 "Argomento non valido per convert(), usare le costanti TYPE_*." +msgstr "Argomento tipo non valido per convert(), usare le costanti TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "Prevista una stringa di lunghezza 1 (singolo carattere)." +msgstr "Prevista una stringa di lunghezza 1 (un singolo carattere)." #: 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 vi sono abbastanza byte per riuscire a decodificarli, oppure il formato " +"Non ci sono abbastanza byte per riuscire a decodificarli, oppure il formato " "non è valido." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "Input non valido %i (non passato) nell'espressione" +msgstr "Input non valido %i (assente) nell'espressione" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -98,7 +100,7 @@ msgstr "Operandi non validi per l'operatore %s, %s e %s." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" -msgstr "Indice del tipo %s non valido per il tipo base %s" +msgstr "Indice di tipo %s non valido per il tipo base %s" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" @@ -106,7 +108,7 @@ msgstr "Nome indice '%s' non valido per il tipo base %s" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" -msgstr "Argomenti non validi per il costrutto '%s'" +msgstr "Argomenti non validi per costruire '%s'" #: core/math/expression.cpp msgid "On call to '%s':" @@ -239,7 +241,7 @@ msgstr "Modifica ciclicità animazione" #: editor/animation_track_editor.cpp msgid "Property Track" -msgstr "Proprietà Traccia" +msgstr "Traccia proprietà" #: editor/animation_track_editor.cpp msgid "3D Transform Track" @@ -247,7 +249,7 @@ msgstr "Traccia trasformazione 3D" #: editor/animation_track_editor.cpp msgid "Call Method Track" -msgstr "Traccia di Chiamata di Metodi" +msgstr "Traccia chiamata metodo" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" @@ -263,7 +265,7 @@ msgstr "Traccia di riproduzione animazione" #: editor/animation_track_editor.cpp msgid "Animation length (frames)" -msgstr "Durata Animazione (frames)" +msgstr "Durata animazione (fotogrammi)" #: editor/animation_track_editor.cpp msgid "Animation length (seconds)" @@ -275,7 +277,7 @@ msgstr "Aggiungi Traccia" #: editor/animation_track_editor.cpp msgid "Animation Looping" -msgstr "Ciclicità Animazione" +msgstr "Ripeti Ciclicamente Animazione" #: editor/animation_track_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -288,7 +290,7 @@ msgstr "Clip Audio:" #: editor/animation_track_editor.cpp msgid "Anim Clips:" -msgstr "Clip Anim:" +msgstr "Clip Animazione:" #: editor/animation_track_editor.cpp msgid "Change Track Path" @@ -304,11 +306,11 @@ msgstr "Modalità di aggiornamento (Come viene impostata questa proprietà)" #: editor/animation_track_editor.cpp msgid "Interpolation Mode" -msgstr "Modalità di Interpolazione" +msgstr "Modalità Interpolazione" #: editor/animation_track_editor.cpp msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" -msgstr "Modalità Loop Wrap (Interpola la fine con l'inizio del loop)" +msgstr "Modalità Ciclo ad Anello (Interpola la fine con l'inizio del ciclo)" #: editor/animation_track_editor.cpp msgid "Remove this track." @@ -804,7 +806,6 @@ msgid "Method in target node must be specified." msgstr "Il metodo del nodo designato deve essere specificato." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." msgstr "Il nome del metodo dev'essere un identificatore valido." @@ -1048,11 +1049,11 @@ msgstr "Dipendenze:" #: editor/dependency_editor.cpp msgid "Fix Broken" -msgstr "Riparare rotti" +msgstr "Ripara rotti" #: editor/dependency_editor.cpp msgid "Dependency Editor" -msgstr "Editor dipendenze" +msgstr "Editor Dipendenze" #: editor/dependency_editor.cpp msgid "Search Replacement Resource:" @@ -1156,7 +1157,7 @@ msgstr "Grazie dalla comunità di Godot!" #: editor/editor_about.cpp msgid "Godot Engine contributors" -msgstr "Contributori a Godot Engine" +msgstr "Contributori di Godot engine" #: editor/editor_about.cpp msgid "Project Founders" @@ -1390,7 +1391,7 @@ msgstr "Salva disposizione del bus audio come..." #: editor/editor_audio_buses.cpp msgid "Location for New Layout..." -msgstr "Posizione della nuova disposizione…" +msgstr "Posizione per la nuova disposizione..." #: editor/editor_audio_buses.cpp msgid "Open Audio Bus Layout" @@ -1440,7 +1441,7 @@ msgstr "Salva questa disposizione bus in un file." #: editor/editor_audio_buses.cpp editor/import_dock.cpp msgid "Load Default" -msgstr "Carica predefiniti" +msgstr "Carica Predefiniti" #: editor/editor_audio_buses.cpp msgid "Load the default Bus Layout." @@ -1886,7 +1887,7 @@ msgstr "Attiva/disattiva preferito" #: editor/editor_file_dialog.cpp msgid "Toggle Mode" -msgstr "Modalità di Attivazione/Disattivazione" +msgstr "Commuta Modalità" #: editor/editor_file_dialog.cpp msgid "Focus Path" @@ -2380,12 +2381,6 @@ msgid "There is no defined scene to run." msgstr "Non c'è nessuna scena definita da eseguire." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"La scena attuale non è mai stata salvata, si prega di salvarla prima di " -"eseguirla." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Impossibile avviare il sottoprocesso!" @@ -2540,12 +2535,14 @@ msgstr "" #: editor/editor_node.cpp msgid "Unable to find script field for addon plugin at: 'res://addons/%s'." msgstr "" -"Impossibile trovare il campo per lo script del componente aggiuntivo in: " +"Impossibile trovare il campo dello script per il componente aggiuntivo in: " "'res://addons/%s'." #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s'." -msgstr "Impossibile caricare uno script aggiuntivo dal percorso: '%s'." +msgstr "" +"Impossibile caricare lo script di un componente aggiuntivo dal percorso: " +"'%s'." #: editor/editor_node.cpp msgid "" @@ -2565,8 +2562,8 @@ msgstr "" #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s' Script is not in tool mode." msgstr "" -"Impossibile caricare uno script aggiuntivo dal percorso: Lo script '%s' non " -"è in tool mode." +"Impossibile caricare lo script di un componente aggiuntivo dal percorso: " +"'%s' Lo script non è in modalità strumento." #: editor/editor_node.cpp msgid "" @@ -2635,7 +2632,7 @@ msgstr "Elimina disposizione" #: editor/editor_node.cpp editor/import_dock.cpp #: editor/script_create_dialog.cpp msgid "Default" -msgstr "Default" +msgstr "Predefinito" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp @@ -2684,7 +2681,7 @@ msgstr "%d altri file" #: editor/editor_node.cpp msgid "Dock Position" -msgstr "Posizione dock" +msgstr "Posizione Dock" #: editor/editor_node.cpp msgid "Distraction Free Mode" @@ -2803,7 +2800,7 @@ msgstr "Esporta..." #: editor/editor_node.cpp msgid "Install Android Build Template..." -msgstr "Installa il Build Template di Android…" +msgstr "Installa il Modello di Costruzione di Android…" #: editor/editor_node.cpp msgid "Open Project Data Folder" @@ -2950,7 +2947,7 @@ msgstr "Apri cartella dati/impostazioni editor" #: editor/editor_node.cpp msgid "Open Editor Data Folder" -msgstr "Apri la cartella dati dell'editor" +msgstr "Apri la Cartella dei Dati dell'Editor" #: editor/editor_node.cpp msgid "Open Editor Settings Folder" @@ -2962,7 +2959,7 @@ msgstr "Gestisci le funzionalità dell'editor…" #: editor/editor_node.cpp msgid "Manage Export Templates..." -msgstr "Gestisci template d'esportazione…" +msgstr "Gestisci Modello d'Esportazione…" #: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp msgid "Help" @@ -2988,11 +2985,11 @@ msgstr "Domande e risposte" #: editor/editor_node.cpp msgid "Report a Bug" -msgstr "Riporta un Bug" +msgstr "Segnala un problema" #: editor/editor_node.cpp msgid "Send Docs Feedback" -msgstr "Invia opinione sui documenti" +msgstr "Valuta documentazione" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "Community" @@ -3091,7 +3088,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Manage Templates" -msgstr "Gestisci i template d'esportazione" +msgstr "Gestisci i modelli d'esportazione" #: editor/editor_node.cpp msgid "" @@ -3119,7 +3116,7 @@ msgid "" "Remove the \"res://android/build\" directory manually before attempting this " "operation again." msgstr "" -"Il template della build Android è già installato in questo progetto e non " +"Il modello della build Android è già installato in questo progetto e non " "sarà sovrascritto.\n" "Rimuovi la cartella \"res://android/build\" manualmente prima di ritentare " "questa operazione." @@ -3247,7 +3244,7 @@ msgstr "Frame %" #: editor/editor_profiler.cpp msgid "Physics Frame %" -msgstr "Frame della Fisica %" +msgstr "Fotogramma della Fisica %" #: editor/editor_profiler.cpp msgid "Inclusive" @@ -3525,8 +3522,8 @@ msgid "" "No download links found for this version. Direct download is only available " "for official releases." msgstr "" -"Non sono stati trovati link di download per questa versione. Il download " -"diretto è disponibile solamente per rilasci ufficiali." +"Nessun collegamento di download trovato per questa versione. I download " +"diretti sono disponibili solo per i rilasci ufficiali." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -3620,7 +3617,7 @@ msgstr "Errore di Connessione" #: editor/export_template_manager.cpp msgid "SSL Handshake Error" -msgstr "Errore nell'Handshake SSL" +msgstr "Errore Handshake SSL" #: editor/export_template_manager.cpp msgid "Uncompressing Android Build Sources" @@ -3648,7 +3645,7 @@ msgstr "Seleziona file template" #: editor/export_template_manager.cpp msgid "Godot Export Templates" -msgstr "Template di Export" +msgstr "Modello di Esportazione Godot" #: editor/export_template_manager.cpp msgid "Export Template Manager" @@ -3656,7 +3653,7 @@ msgstr "Gestore Template Esportazione" #: editor/export_template_manager.cpp msgid "Download Templates" -msgstr "Scarica Template" +msgstr "Scarica Modelli" #: editor/export_template_manager.cpp msgid "Select mirror from list: (Shift+Click: Open in Browser)" @@ -4029,10 +4026,9 @@ msgid "Error running post-import script:" msgstr "Errore di esecuzione dello script di post-import:" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Did you return a Node-derived object in the `post_import()` method?" msgstr "" -"Avete restituito un oggetto derivato da un Nodo nel metodo `post_import()`?" +"Hai restituito un oggetto derivato da un Nodo nel metodo `post_import()`?" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -4044,11 +4040,11 @@ msgstr "%d File" #: editor/import_dock.cpp msgid "Set as Default for '%s'" -msgstr "Imposta come Default per '%s'" +msgstr "Imposta come Predefinito per '%s'" #: editor/import_dock.cpp msgid "Clear Default for '%s'" -msgstr "Elimina Default per '%s'" +msgstr "Elimina Predefinito per '%s'" #: editor/import_dock.cpp msgid "Import As:" @@ -4635,7 +4631,7 @@ msgstr "Opzioni dell'onion skinning" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Directions" -msgstr "Indicazioni" +msgstr "Direzioni" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Past" @@ -5731,7 +5727,7 @@ msgstr "Errore istanziamento scena da %s" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change Default Type" -msgstr "Cambia tipo di default" +msgstr "Cambia Tipo Predefinito" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -8675,7 +8671,7 @@ msgstr "Imposta Nome Uniforme" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Input Default Port" -msgstr "Imposta Porta Input di Default" +msgstr "Imposta Porta Input Predefinita" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add Node to Visual Shader" @@ -8720,7 +8716,7 @@ msgstr "Crea Nodo Shader" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color function." -msgstr "Colora funzione." +msgstr "Funzione colore." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color operator." @@ -8728,15 +8724,15 @@ msgstr "Operatore colore." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Grayscale function." -msgstr "Funzione Grayscale." +msgstr "Funzione scala di grigi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts HSV vector to RGB equivalent." -msgstr "Converti vettore HSV nell'equivalente RGB." +msgstr "Converte un vettore HSV nel suo equivalente RGB." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts RGB vector to HSV equivalent." -msgstr "Converti vettore RGB nell'equivalente HSV." +msgstr "Converte un vettore RGB nel suo equivalente HSV." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sepia function." @@ -8744,31 +8740,31 @@ msgstr "Funzione seppia." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Burn operator." -msgstr "Operatore Burn." +msgstr "Operatore brucia." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Darken operator." -msgstr "Operatore Darken." +msgstr "Operatore scurisci." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Difference operator." -msgstr "Operatore \"differenza\"." +msgstr "Operatore differenza." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Dodge operator." -msgstr "Operatore schivata." +msgstr "Operatore scherma." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "HardLight operator." -msgstr "Operatore HardLight." +msgstr "Operatore luce dura." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." -msgstr "Operatore \"schiarischi\"." +msgstr "Operatore schiarisci." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Overlay operator." -msgstr "Operatore overlay." +msgstr "Operatore sovrapponi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Screen operator." @@ -8776,7 +8772,7 @@ msgstr "Operatore schermo." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "SoftLight operator." -msgstr "Operatore SoftLight." +msgstr "Operatore luce morbida." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color constant." @@ -8788,7 +8784,8 @@ msgstr "Uniforme di colore." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the boolean result of the %s comparison between two parameters." -msgstr "Ritorna il risultato booleano del confronto di %s tra due parametri." +msgstr "" +"Restituisce il risultato booleano del confronto di %s tra due parametri." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Equal (==)" @@ -8800,29 +8797,31 @@ msgstr "Maggiore Di (>)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than or Equal (>=)" -msgstr "Maggiore o Uguale (>=)" +msgstr "Maggiore o uguale (>=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated vector if the provided scalars are equal, greater or " "less." msgstr "" -"Ritorna un vettore associato se gli scalari di quello fornito sono uguali, " -"maggiori o minori." +"Restituisce un vettore associato se gli scalari di quello fornito sono " +"uguali, maggiori o minori." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between INF and a scalar " "parameter." msgstr "" -"Ritorna il risultato booleano del confronto tra INF e un parametro scalare." +"Restituisce il risultato booleano del confronto tra INF e un parametro " +"scalare." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between NaN and a scalar " "parameter." msgstr "" -"Ritorna il risultato booleano del confronto tra NaN e un parametro scalare." +"Restituisce il risultato booleano del confronto tra NaN e un parametro " +"scalare." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Less Than (<)" @@ -8840,24 +8839,26 @@ msgstr "Non Uguale (!=)" msgid "" "Returns an associated vector if the provided boolean value is true or false." msgstr "" -"Ritorna un vettore associato se il valore booleano fornito è vero o falso." +"Restituisce un vettore associato se il valore booleano fornito è vero o " +"falso." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated scalar if the provided boolean value is true or false." -msgstr "Ritorna uno scalare associato se il booleano provvisto è vero o falso." +msgstr "" +"Restituisce uno scalare associato se il booleano fornito è vero o falso." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the boolean result of the comparison between two parameters." -msgstr "Ritorna il risultato booleano del confronto tra due parametri." +msgstr "Restituisce il risultato booleano del confronto tra due parametri." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between INF (or NaN) and a " "scalar parameter." msgstr "" -"Ritorna il risultato booleano del confronto tra INF (o NaN) e un parametro " -"scalare." +"Restituisce il risultato booleano del confronto tra INF (o NaN) e un " +"parametro scalare." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean constant." @@ -8877,27 +8878,27 @@ msgstr "Parametro di input." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader modes." -msgstr "Parametro di input '%s' per le modalità shader vertex e fragment." +msgstr "Parametro di input '%s' per le modalità shader vertice e frammento." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment and light shader modes." -msgstr "Parametro di input '%s' per le modalità shader fragment e light." +msgstr "Parametro di input '%s' per le modalità shader frammento e luce." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment shader mode." -msgstr "Parametro di input '%s' per la modalità shader fragment." +msgstr "Parametro di input '%s' per la modalità shader frammento." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for light shader mode." -msgstr "Parametro di input '%s' per la modalità shader light." +msgstr "Parametro di input '%s' per la modalità shader luce." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex shader mode." -msgstr "Parametro di input '%s' per la modalità shader vertex." +msgstr "Parametro di input '%s' per la modalità shader vertice." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader mode." -msgstr "Parametro di input '%s' per la modalità shader vertex e fragment." +msgstr "Parametro di input '%s' per la modalità shader vertice e frammento." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar function." @@ -8941,35 +8942,35 @@ msgstr "La costante Sqrt2 (1.414214). La radice quadrata di 2." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the absolute value of the parameter." -msgstr "Ritorna il valore assoluto del parametro." +msgstr "Restituisce il valore assoluto del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-cosine of the parameter." -msgstr "Ritorna l'arco-coseno del parametro." +msgstr "Restituisce l'arco-coseno del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic cosine of the parameter." -msgstr "Ritorna l'inversa del coseno iperbolico del parametro." +msgstr "Restituisce l'inversa del coseno iperbolico del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-sine of the parameter." -msgstr "Ritorna l'arco-seno del parametro." +msgstr "Restituisce l'arco-seno del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic sine of the parameter." -msgstr "Ritorna l'inversa del seno iperbolico del parametro." +msgstr "Restituisce l'inversa del seno iperbolico del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-tangent of the parameter." -msgstr "Ritorna l'arco-tangente del parametro." +msgstr "Restituisce l'arco-tangente del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-tangent of the parameters." -msgstr "Ritorna l'arco-tangente dei parametri." +msgstr "Restituisce l'arco-tangente dei parametri." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic tangent of the parameter." -msgstr "Ritorna l'inversa della tangente iperbolica del parametro." +msgstr "Restituisce l'inversa della tangente iperbolica del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8983,11 +8984,11 @@ msgstr "Vincola un valore tra due altri valori." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the cosine of the parameter." -msgstr "Ritorna il coseno del parametro." +msgstr "Restituisce il coseno del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic cosine of the parameter." -msgstr "Ritorna il coseno iperbolico del parametro." +msgstr "Restituisce il coseno iperbolico del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in radians to degrees." @@ -9012,7 +9013,7 @@ msgstr "Calcola la parte frazionaria dell'argomento." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse of the square root of the parameter." -msgstr "Ritorna l'inversa della radice quadrata del parametro." +msgstr "Restituisce l'inversa della radice quadrata del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Natural logarithm." @@ -9024,11 +9025,11 @@ msgstr "Logaritmo in base 2." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the greater of two values." -msgstr "Ritorna il maggiore di due valori." +msgstr "Restituisce il maggiore di due valori." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the lesser of two values." -msgstr "Ritorna il minore di due valori." +msgstr "Restituisce il minore di due valori." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Linear interpolation between two scalars." @@ -9036,7 +9037,7 @@ msgstr "Interpolazione lineare tra due scalari." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the opposite value of the parameter." -msgstr "Ritorna il valore opposto del parametro." +msgstr "Restituisce il valore opposto del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 - scalar" @@ -9046,7 +9047,7 @@ msgstr "1.0 - scalare" msgid "" "Returns the value of the first parameter raised to the power of the second." msgstr "" -"Ritorna il valore del primo parametro elevato alla potenza del secondo." +"Restituisce il valore del primo parametro elevato alla potenza del secondo." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in degrees to radians." @@ -9074,15 +9075,15 @@ msgstr "Estrae il segno del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the sine of the parameter." -msgstr "Ritorna il seno del parametro." +msgstr "Restituisce il seno del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic sine of the parameter." -msgstr "Ritorna il seno iperbolico del parametro." +msgstr "Restituisce il seno iperbolico del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the square root of the parameter." -msgstr "Ritorna la radice quadrata del parametro." +msgstr "Restituisce la radice quadrata del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9094,8 +9095,8 @@ msgid "" msgstr "" "SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n" "\n" -"Ritorna 0.0 se 'x' è più piccolo di 'edge0', o 1.0 se 'x' è più grande di " -"'edge1'. Altrimenti, il valore di ritorno è interpolato tra 0.0 ed 1.0 " +"Restituisce 0.0 se 'x' è più piccolo di 'edge0', o 1.0 se 'x' è più grande " +"di 'edge1'. Altrimenti, il valore di ritorno è interpolato tra 0.0 ed 1.0 " "usando i polinomi di Hermite." #: editor/plugins/visual_shader_editor_plugin.cpp @@ -9106,15 +9107,15 @@ msgid "" msgstr "" "Step function( scalar(edge), scalar(x) ).\n" "\n" -"Ritorna 0.0 se 'x' è più piccolo di 'edge', altrimenti 1.0." +"Restituisce 0.0 se 'x' è più piccolo di 'edge', altrimenti 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the tangent of the parameter." -msgstr "Ritorna la tangente del parametro." +msgstr "Restituisce la tangente del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic tangent of the parameter." -msgstr "Ritorna la tangente iperbolica del parametro." +msgstr "Restituisce la tangente iperbolica del parametro." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the truncated value of the parameter." @@ -9134,7 +9135,7 @@ msgstr "Moltiplica lo scalare per scalare." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the remainder of the two scalars." -msgstr "Ritorna il resto dei due scalari." +msgstr "Restituisce il resto dei due scalari." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Subtracts scalar from scalar." @@ -9244,11 +9245,11 @@ msgstr "Scompone il vettore a tre scalari." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the cross product of two vectors." -msgstr "Calcola il prodotto incrociato di due vettori." +msgstr "Calcola il prodotto vettoriale di due vettori." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the distance between two points." -msgstr "Ritorna la distanza tra due punti." +msgstr "Restituisce la distanza tra due punti." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the dot product of two vectors." @@ -9261,7 +9262,7 @@ msgid "" "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 "" -"Ritorna un vettore che punta nella stessa direzione di quello di " +"Restituisce un vettore che punta nella stessa direzione di quello di " "riferimento. La funzione ha tre vettori parametro: N, il vettore da " "orientare; I, quello incidente; ed Nref, il vettore di riferimento. Se il " "prodotto scalare di I ed Nref è minore di zero, il valore di ritorno è N. " @@ -9296,12 +9297,12 @@ msgid "" "Returns the vector that points in the direction of reflection ( a : incident " "vector, b : normal vector )." msgstr "" -"Ritorna un vettore che punta nella direzione della riflessione ( a : vettore " -"incidente, b : vettore normale )." +"Restituisce un vettore che punta nella direzione della riflessione ( a : " +"vettore incidente, b : vettore normale )." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the vector that points in the direction of refraction." -msgstr "Ritorna un vettore che punta nella direzione della refrazione." +msgstr "Restituisce un vettore che punta nella direzione della refrazione." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9313,7 +9314,7 @@ msgid "" msgstr "" "SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n" "\n" -"Ritorna 0.0 se 'x' è minore di 'edge0', ed 1.0 se 'x' è più grande di " +"Restituisce 0.0 se 'x' è minore di 'edge0', ed 1.0 se 'x' è più grande di " "'edge1'. Altrimenti, il valore di ritorno è interpolato tra 0.0 ed 1.0 " "usando i polinomiali di Hermite." @@ -9327,7 +9328,7 @@ msgid "" msgstr "" "SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n" "\n" -"Ritorna 0.0 se 'x' è minore di 'edge0', ed 1.0 se 'x' è più grande di " +"Restituisce 0.0 se 'x' è minore di 'edge0', ed 1.0 se 'x' è più grande di " "'edge1'. Altrimenti, il valore di ritorno è interpolato tra 0.0 ed 1.0 " "usando i polinomiali di Hermite." @@ -9339,7 +9340,7 @@ msgid "" msgstr "" "Step function( vector(edge), vector(x) ).\n" "\n" -"Ritorna 0.0 se 'x' è minore di 'edge', altrimenti 1.0." +"Restituisce 0.0 se 'x' è minore di 'edge', altrimenti 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9349,7 +9350,7 @@ msgid "" msgstr "" "Step function( scalar(edge), vector(x) ).\n" "\n" -"Ritorna 0.0 se 'x' è minore di 'edge', altrimenti 1.0." +"Restituisce 0.0 se 'x' è minore di 'edge', altrimenti 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Adds vector to vector." @@ -9357,7 +9358,7 @@ msgstr "Aggiunge un vettore al vettore." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Divides vector by vector." -msgstr "Divide vettore per vettore." +msgstr "Divide due vettori." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies vector by vector." @@ -9365,7 +9366,7 @@ msgstr "Moltiplica vettore per vettore." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the remainder of the two vectors." -msgstr "Ritorna il resto dei due vettori." +msgstr "Restituisce il resto dei due vettori." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Subtracts vector from vector." @@ -9395,7 +9396,7 @@ msgid "" "Returns falloff based on the dot product of surface normal and view " "direction of camera (pass associated inputs to it)." msgstr "" -"Ritorna il decadimento in base al prodotto scalare della normale della " +"Restituisce il decadimento in base al prodotto scalare della normale della " "superfice e direzione della telecamera (passa gli input associati ad essa)." #: editor/plugins/visual_shader_editor_plugin.cpp @@ -10631,6 +10632,10 @@ msgid "Make node as Root" msgstr "Rendi il nodo come Radice" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "Eliminare %d nodi ed eventuali figli?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Elimina %d nodi?" @@ -10671,9 +10676,8 @@ msgid "" "Enabling \"Load As Placeholder\" will disable \"Editable Children\" and " "cause all properties of the node to be reverted to their default." msgstr "" -"Abilitando \"Carica Come Placeholder\" disabiliterà \"Figlio Modificabile\" " -"e causerà tutte le proprietà del nodo di essere riportare ai loro valori " -"default." +"Abilitare \"Carica Come Placeholder\" disabiliterà \"Figlio Modificabile\" e " +"riporterà tutte le proprietà del nodo ai loro valori predefiniti." #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -10760,15 +10764,14 @@ msgid "Open Documentation" msgstr "Apri la documentazione" #: editor/scene_tree_dock.cpp -#, fuzzy 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 "" "Non è possibile allegare uno script: non ci sono linguaggi registrati.\n" -"Questo probabilmente perché questo editor è stato costruito con tutti i " -"moduli di lingua disabilitati." +"Probabilmente perché questo editor è stato costruito con tutti i moduli di " +"linguaggio disabilitati." #: editor/scene_tree_dock.cpp msgid "Add Child Node" @@ -11108,7 +11111,7 @@ msgstr "Processo Figlio Connesso." #: editor/script_editor_debugger.cpp msgid "Copy Error" -msgstr "Copia messaggio di errore" +msgstr "Copia Errore" #: editor/script_editor_debugger.cpp msgid "Video RAM" @@ -11641,7 +11644,7 @@ msgstr "Cambia nome Argomento" #: modules/visual_script/visual_script_editor.cpp msgid "Set Variable Default Value" -msgstr "Imposta Valore di Default della Variabile" +msgstr "Imposta Valore Predefinito della Variabile" #: modules/visual_script/visual_script_editor.cpp msgid "Set Variable Type" @@ -12053,11 +12056,9 @@ msgstr "" "Debug keystore non configurato nelle Impostazioni dell'Editor né nel preset." #: platform/android/export/export.cpp -#, fuzzy msgid "Release keystore incorrectly configured in the export preset." msgstr "" -"Debug keystore non configurato correttamente nelle Impostazioni dell'Editor " -"né nel preset." +"Debug keystore non configurato correttamente nel preset di esportazione." #: platform/android/export/export.cpp msgid "Custom build requires a valid Android SDK path in Editor Settings." @@ -12088,12 +12089,11 @@ msgid "Invalid package name:" msgstr "Nome del pacchetto non valido:" #: platform/android/export/export.cpp -#, fuzzy msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" msgstr "" -"Modulo \"GodotPaymentV3\" non valido incluso nell'impostazione del progetto " +"Modulo \"GodotPaymentV3\" non valido incluso nelle impostazione del progetto " "\"android/moduli\" (modificato in Godot 3.2.2).\n" #: platform/android/export/export.cpp @@ -12101,27 +12101,26 @@ msgid "\"Use Custom Build\" must be enabled to use the plugins." msgstr "Per utilizzare i plugin \"Use Custom Build\" deve essere abilitato." #: platform/android/export/export.cpp -#, fuzzy msgid "" "\"Degrees Of Freedom\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR" "\"." msgstr "" -"\"Degrees Of Freedom\" è valido solo quando \"Xr Mode\" è \"Oculus Mobile VR" -"\"." +"\"Degrees Of Freedom\" è valido solamente quando \"Xr Mode\" è \"Oculus " +"Mobile VR\"." #: platform/android/export/export.cpp -#, fuzzy msgid "" "\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." msgstr "" -"\"Hand Tracking\" è valido solo quando \"Xr Mode\" è \"Oculus Mobile VR\"." +"\"Hand Tracking\" è valido solo quando \"Xr Mode\" è impostato su \"Oculus " +"Mobile VR\"." #: platform/android/export/export.cpp -#, fuzzy msgid "" "\"Focus Awareness\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." msgstr "" -"\"Focus Awareness\" è valida solo quando \"Xr Mode\" è \"Oculus Mobile VR\"." +"\"Focus Awareness\" è valido solo quando \"Xr Mode\" è impostato su \"Oculus " +"Mobile VR\"." #: platform/android/export/export.cpp msgid "" @@ -12192,8 +12191,9 @@ msgid "Run in Browser" msgstr "Esegui nel Browser" #: platform/javascript/export/export.cpp +#, fuzzy msgid "Run exported HTML in the system's default browser." -msgstr "Esegui HTML esportato all'interno del browser di sistema di default." +msgstr "Esegui HTML esportato all'interno del browser di sistema predefinito." #: platform/javascript/export/export.cpp msgid "Could not write file:" @@ -12216,6 +12216,7 @@ msgid "Could not read boot splash image file:" msgstr "Impossibile leggere il file immagine di avvio splash:" #: platform/javascript/export/export.cpp +#, fuzzy msgid "Using default boot splash image." msgstr "Utilizzando l'immagine di splash di avvio predefinita." @@ -12346,6 +12347,15 @@ msgstr "" "Perché CollisionShape2D funzioni deve essere fornita una forma. Si prega di " "creare una risorsa forma (shape)!" +#: 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 "" +"Le forme basate sui poligoni non sono state fatte per essere usate nè " +"modificate direttamente tramite il nodo CollisionShape2D. Per piacere usa " +"invece il nodo CollisionPolygon2D." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12848,9 +12858,9 @@ msgid "" "functions. Making them visible for editing is fine, but they will hide upon " "running." msgstr "" -"I popup saranno nascosti per default affinché non chiami la funzione " -"popup(), oppure una delle funzioni popup*(). Farli diventare visibili per " -"modificarli va bene, ma scompariranno all'esecuzione." +"I popup saranno nascosti di predefinita finchè non chiami popup() o una " +"delle qualsiasi funzioni popup*(). Farli diventare visibili per modificarli " +"va bene, ma scompariranno all'esecuzione." #: scene/gui/range.cpp msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." @@ -12924,6 +12934,11 @@ msgstr "Varyings può essere assegnato soltanto nella funzione del vertice." msgid "Constants cannot be modified." msgstr "Le constanti non possono essere modificate." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "La scena attuale non è mai stata salvata, si prega di salvarla prima di " +#~ "eseguirla." + #~ msgid "Not in resource path." #~ msgstr "Non è nel percorso risorse." diff --git a/editor/translations/ja.po b/editor/translations/ja.po index 35e590d629..e0a1d4d909 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -36,7 +36,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"PO-Revision-Date: 2020-08-11 14:04+0000\n" "Last-Translator: Wataru Onuki <bettawat@yahoo.co.jp>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/" "godot/ja/>\n" @@ -331,11 +331,11 @@ msgstr "キュービック" #: editor/animation_track_editor.cpp msgid "Clamp Loop Interp" -msgstr "ループインタプリタを抑え込み(clamp)" +msgstr "ループ補間をクランプ" #: editor/animation_track_editor.cpp msgid "Wrap Loop Interp" -msgstr "ループインタプリタをラップ(wrap)" +msgstr "ループ補間をラップ" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp @@ -533,8 +533,7 @@ msgstr "警告:インポートしたアニメーションを編集していま #: editor/animation_track_editor.cpp msgid "Select an AnimationPlayer node to create and edit animations." msgstr "" -"アニメーションを作って編集するために AnimationPlayer ノードへのパスを選択して" -"下さい。" +"アニメーションを作って編集するには、 AnimationPlayer ノードを選択して下さい。" #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." @@ -840,7 +839,7 @@ msgstr "追加の呼出し引数:" #: editor/connections_dialog.cpp msgid "Receiver Method:" -msgstr "メソッドの選択:" +msgstr "受信側メソッド:" #: editor/connections_dialog.cpp msgid "Advanced" @@ -899,7 +898,7 @@ msgstr "'%s' を '%s' から切断" #: editor/connections_dialog.cpp msgid "Disconnect all from signal: '%s'" -msgstr "シグナル '%s' から全てを切断" +msgstr "シグナル '%s' からすべてを切断" #: editor/connections_dialog.cpp msgid "Connect..." @@ -920,7 +919,7 @@ msgstr "接続を編集:" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "シグナル %s から全ての接続を除去してもよろしいですか?" +msgstr "シグナル %s からすべての接続を除去してもよろしいですか?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -928,7 +927,7 @@ msgstr "シグナル" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" -msgstr "このシグナルから全ての接続を除去してもよろしいですか?" +msgstr "このシグナルからすべての接続を除去してもよろしいですか?" #: editor/connections_dialog.cpp msgid "Disconnect All" @@ -1482,7 +1481,7 @@ msgstr "自動読込みの並べ替え" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "" +msgstr "自動読み込みを追加出来ません:" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -1762,7 +1761,7 @@ msgstr "Godot機能プロファイル" #: editor/editor_feature_profile.cpp msgid "Import Profile(s)" -msgstr "プロファイルのインポート" +msgstr "プロファイルをインポート" #: editor/editor_feature_profile.cpp msgid "Export Profile" @@ -2353,10 +2352,6 @@ msgid "There is no defined scene to run." msgstr "実行するシーンが定義されていません。" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "現在のシーンは保存されませんでした。実行する前に保存してください。" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "サブプロセスを開始できませんでした!" @@ -2442,13 +2437,15 @@ msgstr "保存されていないシーンを読み込むことはできません #: editor/editor_node.cpp msgid "Reload Saved Scene" -msgstr "保存済みのシーンをリロード" +msgstr "保存済みシーンをリロード" #: editor/editor_node.cpp msgid "" "The current scene has unsaved changes.\n" "Reload the saved scene anyway? This action cannot be undone." msgstr "" +"現在のシーンには未保存の変更があります。\n" +"それでも保存済みシーンをリロードしますか? この動作は取り消せません。" #: editor/editor_node.cpp msgid "Quick Run Scene..." @@ -2905,7 +2902,7 @@ msgstr "システムコンソールの有効化 / 無効化" #: editor/editor_node.cpp msgid "Open Editor Data/Settings Folder" -msgstr "エディタのデータ・設定フォルダを開く" +msgstr "エディタのデータ / 設定フォルダを開く" #: editor/editor_node.cpp msgid "Open Editor Data Folder" @@ -3062,13 +3059,13 @@ msgid "" "the \"Use Custom Build\" option should be enabled in the Android export " "preset." msgstr "" -"この操作は \"res://android/build\" にソーステンプレートをインストールしアンド" -"ロイドのカスタムビルドを設定します。\n" -"後から設定に変更を加えたり、エクスポート時にカスタムAPKをビルドできます。(モ" -"ジュールを追加する、AndroidManifest.xmlを変更する等)\n" +"この操作は \"res://android/build\" にソーステンプレートをインストールし、アン" +"ドロイドのカスタムビルドを設定します。\n" +"後から設定に変更を加えたり、エクスポート時にカスタムAPKをビルドできます (モ" +"ジュールを追加する、AndroidManifest.xmlを変更する等)。\n" "APKビルドの初期設定の代わりにカスタムビルド設定を使うためには、アンドロイドの" -"エクスポート設定の「カスタムビルドを使用する」のオプションが有効化されている" -"必要があることに注意してください。" +"エクスポート設定の「Use Custom Build (カスタムビルドを使用する)」のオプション" +"が有効化されている必要があることに注意してください。" #: editor/editor_node.cpp msgid "" @@ -3980,6 +3977,7 @@ msgstr "インポート済スクリプトの実行中にエラー:" #: editor/import/resource_importer_scene.cpp msgid "Did you return a Node-derived object in the `post_import()` method?" msgstr "" +"`post_import()` メソッド内で、Nodeを継承したオブジェクトを返しましたか?" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -4742,7 +4740,7 @@ msgstr "プレイモード:" #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" -msgstr "AnimationTree(アニメーションツリー)" +msgstr "アニメーションツリー" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "New name:" @@ -5364,7 +5362,7 @@ msgstr "IKチェーンをクリア" msgid "" "Warning: Children of a container get their position and size determined only " "by their parent." -msgstr "警告:コンテナの子の位置とサイズは、親によってのみ決定されます。" +msgstr "注意:コンテナの子の位置とサイズは、親によってのみ決定されます。" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -7017,15 +7015,15 @@ msgstr "コメントの切り替え" #: editor/plugins/script_text_editor.cpp msgid "Fold/Unfold Line" -msgstr "行を折りたたむ/展開する" +msgstr "行を折りたたむ / 展開する" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" -msgstr "全ての行を折りたたむ" +msgstr "すべての行を折りたたむ" #: editor/plugins/script_text_editor.cpp msgid "Unfold All Lines" -msgstr "全ての行を展開する" +msgstr "すべての行を展開する" #: editor/plugins/script_text_editor.cpp msgid "Clone Down" @@ -7322,11 +7320,11 @@ msgstr "シェーディングなしで表示" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Environment" -msgstr "環境表示" +msgstr "環境を表示" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Gizmos" -msgstr "ギズモ(Gizmo)を表示" +msgstr "ギズモを表示" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Information" @@ -7412,6 +7410,11 @@ msgid "" "Closed eye: Gizmo is hidden.\n" "Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")." msgstr "" +"クリックで可視状態のオン / オフ。\n" +"\n" +"開いた目: ギズモは可視。\n" +"閉じた目: ギズモは非可視。\n" +"半開きの目: ギズモは非透明な面を通しても可視 (「X線」)。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Nodes To Floor" @@ -7526,7 +7529,7 @@ msgstr "ギズモ" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" -msgstr "原点の表示" +msgstr "ビューの原点" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Grid" @@ -7571,7 +7574,7 @@ msgstr "Z-Farを表示:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Change" -msgstr "変換の変更" +msgstr "トランスフォームの変更" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate:" @@ -8336,7 +8339,7 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Region" -msgstr "タイル領域の設定" +msgstr "タイル領域を設定" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Tile" @@ -8545,7 +8548,7 @@ msgstr "Sampler" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" -msgstr "入力ポートの追加" +msgstr "入力ポートを追加" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add output port" @@ -8577,7 +8580,7 @@ msgstr "出力ポートの削除" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set expression" -msgstr "式の設定" +msgstr "式を設定" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Resize VisualShader node" @@ -8646,11 +8649,11 @@ msgstr "グレースケール関数。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts HSV vector to RGB equivalent." -msgstr "HSVベクトルをRGBベクトルに変換します。" +msgstr "HSVベクトルをRGBベクトルに変換。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts RGB vector to HSV equivalent." -msgstr "RGBベクトルをHSVベクトルに変換します。" +msgstr "RGBベクトルをHSVベクトルに変換。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sepia function." @@ -8984,7 +8987,7 @@ msgstr "パラメータの符号を抽出します。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the sine of the parameter." -msgstr "パラメータの符号を返します。" +msgstr "パラメータのサインを返します。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic sine of the parameter." @@ -9044,7 +9047,7 @@ msgstr "スカラーをスカラーで乗算します。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the remainder of the two scalars." -msgstr "2つのスカラーの残りを返します。" +msgstr "2つのスカラーの剰余を返します。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Subtracts scalar from scalar." @@ -9272,7 +9275,7 @@ msgstr "ベクトルでベクトルを乗算します。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the remainder of the two vectors." -msgstr "2つのベクトルの残りを返します。" +msgstr "2つのベクトルの剰余を返します。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Subtracts vector from vector." @@ -9834,7 +9837,7 @@ msgid "" "Remove %d projects from the list?\n" "The project folders' contents won't be modified." msgstr "" -"%d プロジェクトを一覧から削除しますか?\n" +"%d プロジェクトを一覧から削除しますか?\n" "プロジェクトフォルダの内容は変更されません。" #: editor/project_manager.cpp @@ -9842,7 +9845,7 @@ msgid "" "Remove this project from the list?\n" "The project folder's contents won't be modified." msgstr "" -"このプロジェクトを一覧から削除しますか?\n" +"このプロジェクトを一覧から削除しますか?\n" "プロジェクトフォルダの内容は変更されません。" #: editor/project_manager.cpp @@ -9963,11 +9966,11 @@ msgstr "入力アクションイベントの名前を変更する" #: editor/project_settings_editor.cpp msgid "Change Action deadzone" -msgstr "アクションデッドゾーンの変更" +msgstr "アクション デッドゾーンを変更" #: editor/project_settings_editor.cpp msgid "Add Input Action Event" -msgstr "入力アクションイベントを追加" +msgstr "入力アクション イベントを追加" #: editor/project_settings_editor.cpp msgid "All Devices" @@ -10071,7 +10074,7 @@ msgstr "マウスホイールを下に。" #: editor/project_settings_editor.cpp msgid "Add Global Property" -msgstr "グローバルプロパティの追加" +msgstr "グローバルプロパティを追加" #: editor/project_settings_editor.cpp msgid "Select a setting item first!" @@ -10531,6 +10534,10 @@ msgid "Make node as Root" msgstr "ノードをルートにする" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "%d ノードとその子ノードすべてを削除しますか?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "%d ノードを削除しますか?" @@ -10664,6 +10671,9 @@ msgid "" "This is probably because this editor was built with all language modules " "disabled." msgstr "" +"スクリプトをアタッチできません: 言語がひとつも登録されていません。\n" +"おそらくこのエディタは、すべての言語モジュールを無効化してビルドされていま" +"す。" #: editor/scene_tree_dock.cpp msgid "Add Child Node" @@ -11977,26 +11987,36 @@ msgid "" "Invalid \"GodotPaymentV3\" module included in the \"android/modules\" " "project setting (changed in Godot 3.2.2).\n" msgstr "" +"「android/modules」に含まれる「GodotPaymentV3」モジュールのプロジェクト設定が" +"無効です (Godot 3.2.2 にて変更)。\n" #: platform/android/export/export.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." msgstr "" +"プラグインを利用するには「Use Custom Build (カスタムビルドを使用する)」が有効" +"になっている必要があります。" #: platform/android/export/export.cpp msgid "" "\"Degrees Of Freedom\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR" "\"." msgstr "" +"\"Degrees Of Freedom\" は \"Xr Mode\" が \"Oculus Mobile VR\" の場合にのみ有" +"効になります。" #: platform/android/export/export.cpp msgid "" "\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." msgstr "" +"\"Hand Tracking\" は \"Xr Mode\" が \"Oculus Mobile VR\" の場合にのみ有効にな" +"ります。" #: platform/android/export/export.cpp msgid "" "\"Focus Awareness\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." msgstr "" +"\"Focus Awareness\" は \"Xr Mode\" が \"Oculus Mobile VR\" の場合にのみ有効に" +"なります。" #: platform/android/export/export.cpp msgid "" @@ -12208,6 +12228,14 @@ msgstr "" "関数に対して CollisionShape2D の形状(シェイプ)を指定する必要があります。その" "ためのシェイプリソースを作成してください!" +#: 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 "" +"ポリゴンベースのシェイプは、CollisionShape2Dノードで使用したり直接編集したり" +"するには適しません。代わりにCollisionPolygon2Dノードを使用してください。" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12780,6 +12808,9 @@ msgstr "Varying変数は頂点関数にのみ割り当てることができま msgid "Constants cannot be modified." msgstr "定数は変更できません。" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "現在のシーンは保存されませんでした。実行する前に保存してください。" + #~ msgid "Not in resource path." #~ msgstr "リソースパスにありません。" diff --git a/editor/translations/ka.po b/editor/translations/ka.po index af03b1af9e..1bfd23080b 100644 --- a/editor/translations/ka.po +++ b/editor/translations/ka.po @@ -2365,10 +2365,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10441,6 +10437,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "წაშლა" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "წაშლა" @@ -12092,6 +12093,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/ko.po b/editor/translations/ko.po index 462c59d319..9b19450d58 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -18,11 +18,12 @@ # Tilto_ <tilto0822@develable.xyz>, 2020. # Myeongjin Lee <aranet100@gmail.com>, 2020. # Doyun Kwon <caen4516@gmail.com>, 2020. +# Jun Hyung Shin <shmishmi79@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"PO-Revision-Date: 2020-07-31 03:47+0000\n" "Last-Translator: Ch. <ccwpc@hanmail.net>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/" "godot/ko/>\n" @@ -2329,10 +2330,6 @@ msgid "There is no defined scene to run." msgstr "실행할 씬이 설정되지 않았습니다." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "현재 씬이 아직 저장되지 않았습니다. 실행하기 전에 저장해주세요." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "하위 프로세스를 시작할 수 없습니다!" @@ -4518,7 +4515,7 @@ msgstr "애니메이션 도구" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation" -msgstr "애니메이션(Animation)" +msgstr "애니메이션" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Edit Transitions..." @@ -7363,7 +7360,6 @@ msgid "XForm Dialog" msgstr "XForm 대화 상자" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "" "Click to toggle between visibility states.\n" "\n" @@ -7896,7 +7892,7 @@ msgstr "체크된 라디오 항목" #: editor/plugins/theme_editor_plugin.cpp msgid "Named Sep." -msgstr "이름있는 분기." +msgstr "이름있는 구분자." #: editor/plugins/theme_editor_plugin.cpp msgid "Submenu" @@ -10420,7 +10416,7 @@ msgstr "씬 인스턴스화" #: editor/scene_tree_dock.cpp msgid "Replace with Branch Scene" -msgstr "분기 씬으로 교체" +msgstr "가지 씬으로 교체" #: editor/scene_tree_dock.cpp msgid "Instance Child Scene" @@ -10465,6 +10461,10 @@ msgid "Make node as Root" msgstr "노드를 루트로 만들기" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "%d 개의 노드와 모든 자식 노드를 삭제할까요?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "%d개의 노드를 삭제할까요?" @@ -10625,7 +10625,7 @@ msgstr "다른 씬에서 병합하기" #: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp msgid "Save Branch as Scene" -msgstr "분기를 씬으로 저장" +msgstr "가지를 씬으로 저장" #: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp msgid "Copy Node Path" @@ -12135,6 +12135,14 @@ msgstr "" "CollisionShape2D가 작동하려면 반드시 Shape가 있어야 합니다. Shape 리소스를 만" "들어주세요!" +#: 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 "" +"폴리곤 기반 Shape는 CollisionShape2D에 추가하거나 거기서 편집하게끔 설계하지 " +"않았습니다. 대신 CollisionPolygon2D 노드를 사용하십시오." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12692,6 +12700,9 @@ msgstr "Varying은 꼭짓점 함수에만 지정할 수 있습니다." msgid "Constants cannot be modified." msgstr "상수는 수정할 수 없습니다." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "현재 씬이 아직 저장되지 않았습니다. 실행하기 전에 저장해주세요." + #~ msgid "Not in resource path." #~ msgstr "리소스 경로에 없습니다." diff --git a/editor/translations/lt.po b/editor/translations/lt.po index fdf9ef15ae..4d3884d5f8 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -4,12 +4,13 @@ # This file is distributed under the same license as the Godot source code. # Ignas Kiela <ignaskiela@super.lt>, 2017. # Kornelijus <kornelijus.github@gmail.com>, 2017, 2018. +# Ignotas Gražys <ignotas.gr@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-13 14:41+0100\n" -"Last-Translator: Kornelijus <kornelijus.github@gmail.com>\n" +"PO-Revision-Date: 2020-07-06 04:41+0000\n" +"Last-Translator: Ignotas Gražys <ignotas.gr@gmail.com>\n" "Language-Team: Lithuanian <https://hosted.weblate.org/projects/godot-engine/" "godot/lt/>\n" "Language: lt\n" @@ -18,34 +19,34 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 0 : n%10>=2 && (n%100<10 || n" "%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3;\n" -"X-Generator: Poedit 2.2\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "" +msgstr "Netinkamo tipo argumentas į convert(), naudoti TYPE_* konstantas." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "" +msgstr "Tikėtasi 1 (simbolio) ilgio eilutės." #: 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 "" +msgstr "Nepakanka baitų iššifruoti baitams, arba netinkamas formatas." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "" +msgstr "Netinkama įvestis išraiškoje %i (nepraleista)" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "" +msgstr "self nenaudojamas, nes atvejis yra null (nepraleistas)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "" +msgstr "Netinkami operatoriaus operandai %s, %s ir %s." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" @@ -57,7 +58,7 @@ msgstr "" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" -msgstr "" +msgstr "Netinkami argumentai sukurti '%s'" #: core/math/expression.cpp msgid "On call to '%s':" @@ -65,31 +66,31 @@ msgstr "" #: core/ustring.cpp msgid "B" -msgstr "" +msgstr "B" #: core/ustring.cpp msgid "KiB" -msgstr "" +msgstr "KiB" #: core/ustring.cpp msgid "MiB" -msgstr "" +msgstr "MiB" #: core/ustring.cpp msgid "GiB" -msgstr "" +msgstr "GiB" #: core/ustring.cpp msgid "TiB" -msgstr "" +msgstr "TiB" #: core/ustring.cpp msgid "PiB" -msgstr "" +msgstr "PiB" #: core/ustring.cpp msgid "EiB" -msgstr "" +msgstr "EiB" #: editor/animation_bezier_editor.cpp msgid "Free" @@ -97,40 +98,40 @@ msgstr "Nemokama" #: editor/animation_bezier_editor.cpp msgid "Balanced" -msgstr "" +msgstr "Subalansuotas" #: editor/animation_bezier_editor.cpp msgid "Mirror" -msgstr "" +msgstr "Atspindėti" #: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp +#, fuzzy msgid "Time:" msgstr "Trukmė:" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Value:" -msgstr "Naujas pavadinimas:" +msgstr "Reikšmė:" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" -msgstr "" +msgstr "Įrašyti raktažodį čia" #: editor/animation_bezier_editor.cpp msgid "Duplicate Selected Key(s)" -msgstr "" +msgstr "Kopijuoti pasirinktą (-us) raktažodį (-žius)" #: editor/animation_bezier_editor.cpp msgid "Delete Selected Key(s)" -msgstr "" +msgstr "Ištrinti pasirinktus raktažodžius" #: editor/animation_bezier_editor.cpp msgid "Add Bezier Point" -msgstr "" +msgstr "Pridėti Bezjė tašką" #: editor/animation_bezier_editor.cpp msgid "Move Bezier Points" -msgstr "" +msgstr "Judinti Bezjė taškus" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" @@ -188,22 +189,21 @@ msgid "Anim Multi Change Call" msgstr "Animacija: Pakeisti Iškvietimą" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Length" -msgstr "Animacijos Nodas" +msgstr "Pakeisti animacijos ilgį" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "" +msgstr "Pakeisti animacijos ciklą" #: editor/animation_track_editor.cpp msgid "Property Track" -msgstr "" +msgstr "Ypatybės seklys" #: editor/animation_track_editor.cpp msgid "3D Transform Track" -msgstr "" +msgstr "3D transformacijų seklys" #: editor/animation_track_editor.cpp msgid "Call Method Track" @@ -211,7 +211,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" -msgstr "" +msgstr "Bezjė kreivės seklys" #: editor/animation_track_editor.cpp msgid "Audio Playback Track" @@ -227,32 +227,29 @@ msgid "Animation length (frames)" msgstr "Animacija" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation length (seconds)" -msgstr "Animacijos Nodas" +msgstr "Animacijos ilgis (sekundėmis)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Track" -msgstr "Animacija: Pridėti Takelį" +msgstr "Pridėti įrašą" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation Looping" -msgstr "Animacijos Nodas" +msgstr "Animacijos ciklas" #: editor/animation_track_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Functions:" -msgstr "" +msgstr "Funkcijos:" #: editor/animation_track_editor.cpp msgid "Audio Clips:" -msgstr "" +msgstr "Garso įrašai:" #: editor/animation_track_editor.cpp msgid "Anim Clips:" -msgstr "" +msgstr "Animacijų įrašai:" #: editor/animation_track_editor.cpp msgid "Change Track Path" @@ -260,38 +257,35 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Toggle this track on/off." -msgstr "" +msgstr "Įrašo koregavimas: įjungtas/ išjungtas." #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" msgstr "" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Interpolation Mode" -msgstr "Animacijos Nodas" +msgstr "Interpoliacijos režimas" #: editor/animation_track_editor.cpp msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" msgstr "" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Remove this track." -msgstr "Animacija: Panaikinti Takelį" +msgstr "Panaikinti šį įrašą." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Time (s): " -msgstr "Trukmė:" +msgstr "Laikas (-ai): " #: editor/animation_track_editor.cpp msgid "Toggle Track Enabled" -msgstr "" +msgstr "Koreguoti įrašą į įjungtas" #: editor/animation_track_editor.cpp msgid "Continuous" -msgstr "" +msgstr "Tęstinis" #: editor/animation_track_editor.cpp msgid "Discrete" @@ -299,24 +293,24 @@ msgstr "Diskretus" #: editor/animation_track_editor.cpp msgid "Trigger" -msgstr "" +msgstr "Gaidukas" #: editor/animation_track_editor.cpp msgid "Capture" -msgstr "" +msgstr "Fiksuoti" #: editor/animation_track_editor.cpp msgid "Nearest" -msgstr "" +msgstr "Artimiausias" #: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp #: editor/property_editor.cpp msgid "Linear" -msgstr "" +msgstr "Linijinis" #: editor/animation_track_editor.cpp msgid "Cubic" -msgstr "" +msgstr "Kubinis" #: editor/animation_track_editor.cpp msgid "Clamp Loop Interp" @@ -329,36 +323,31 @@ msgstr "" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "" +msgstr "Įterpti raktažodį" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Duplicate Key(s)" -msgstr "Duplikuoti" +msgstr "Kopijuoti raktažodį (-ius)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Key(s)" -msgstr "Ištrinti Efektą" +msgstr "Ištrinti raktažodį (-ius)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Update Mode" -msgstr "Animacijos Nodas" +msgstr "Keisti animacijos atnaujinimo režimą" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Interpolation Mode" -msgstr "Animacijos Nodas" +msgstr "Keisti animacijos interpoliacijos režimą" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Loop Mode" -msgstr "Animacijos Nodas" +msgstr "Keiskite animacijos ciklo režimą" #: editor/animation_track_editor.cpp msgid "Remove Anim Track" -msgstr "Animacija: Panaikinti Takelį" +msgstr "Animacija: panaikinti įrašą" #: editor/animation_track_editor.cpp msgid "Create NEW track for %s and insert key?" @@ -382,7 +371,7 @@ msgstr "Sukurti" #: editor/animation_track_editor.cpp msgid "Anim Insert" -msgstr "" +msgstr "Animacija: įterpti" #: editor/animation_track_editor.cpp msgid "AnimationPlayer can't animate itself, only other players." @@ -401,13 +390,12 @@ msgid "Anim Insert Key" msgstr "" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Step" -msgstr "Animacijos Nodas" +msgstr "Keisti animacijos žingsnį" #: editor/animation_track_editor.cpp msgid "Rearrange Tracks" -msgstr "" +msgstr "Naujai sudėlioti įrašus" #: editor/animation_track_editor.cpp msgid "Transform tracks only apply to Spatial-based nodes." @@ -420,31 +408,34 @@ msgid "" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" msgstr "" +"Garso įrašai gali nurodyti tik į šiuos tipinius mazgus:\n" +"-GarsoSrautogrotuvas\n" +"-GarsoSrautogrotuvas2D\n" +"-GarsoSrautogrotuvas3D" #: editor/animation_track_editor.cpp msgid "Animation tracks can only point to AnimationPlayer nodes." -msgstr "" +msgstr "Animacijos įrašai gali nurodyti į AnimacijosGrotuvo mazgus." #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." -msgstr "" +msgstr "Animacijos grotuvas negali animuoti savęs, tik kitus grotuvus." #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" -msgstr "" +msgstr "Nėra galimybės pridėti naują įrašą be root" #: editor/animation_track_editor.cpp msgid "Invalid track for Bezier (no suitable sub-properties)" -msgstr "" +msgstr "Netinkamas Bezjė traktas (nėra tinkamų antrinių savybių)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Bezier Track" -msgstr "Animacija: Pridėti Takelį" +msgstr "Pridėti Bezjė traktą" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." -msgstr "" +msgstr "Trakto kelias yra negalimas, negalima pridėti raktažodžio." #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" @@ -2330,10 +2321,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10427,6 +10414,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Ištrinti Efektą" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Ištrinti Efektą" @@ -12077,6 +12069,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/lv.po b/editor/translations/lv.po index 8417a6b650..2612b441c6 100644 --- a/editor/translations/lv.po +++ b/editor/translations/lv.po @@ -2290,10 +2290,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10229,6 +10225,11 @@ msgid "Make node as Root" msgstr "" #: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Izdzēst %d mezglus?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Izdzēst %d mezglus?" @@ -11858,6 +11859,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/mi.po b/editor/translations/mi.po index ab68a71ee2..07a3bdae3c 100644 --- a/editor/translations/mi.po +++ b/editor/translations/mi.po @@ -2243,10 +2243,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10107,6 +10103,10 @@ 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 "" @@ -11708,6 +11708,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/ml.po b/editor/translations/ml.po index db5f5638f3..aa7844d7ab 100644 --- a/editor/translations/ml.po +++ b/editor/translations/ml.po @@ -2255,10 +2255,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10123,6 +10119,10 @@ 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 "" @@ -11725,6 +11725,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/mr.po b/editor/translations/mr.po index 1700bcb138..043d7e643e 100644 --- a/editor/translations/mr.po +++ b/editor/translations/mr.po @@ -2250,10 +2250,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10114,6 +10110,10 @@ 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 "" @@ -11715,6 +11715,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/ms.po b/editor/translations/ms.po index 160fa6e69f..ad70f291ca 100644 --- a/editor/translations/ms.po +++ b/editor/translations/ms.po @@ -2275,10 +2275,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10182,6 +10178,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Semua Pilihan" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Semua Pilihan" @@ -11795,6 +11796,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/nb.po b/editor/translations/nb.po index 4e7ca2dce1..dbad564d9a 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -2461,10 +2461,6 @@ msgid "There is no defined scene to run." msgstr "Det er ingen definert scene å kjøre." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "Gjeldende scene ble aldri lagret, vennligst lagre før kjøring." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Kunne ikke starta subprosess!" @@ -10978,6 +10974,11 @@ msgstr "Lagre Scene" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Kutt Noder" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Kutt Noder" @@ -12703,6 +12704,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -13173,6 +13180,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstanter kan ikke endres." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "Gjeldende scene ble aldri lagret, vennligst lagre før kjøring." + #~ msgid "Not in resource path." #~ msgstr "Ikke i resource path." diff --git a/editor/translations/nl.po b/editor/translations/nl.po index 3d560d3d6d..7f111ad901 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -40,12 +40,15 @@ # Tirrin <lensenjoe@gmail.com>, 2019. # Filip Van Raemdonck <arrawn@gmail.com>, 2019. # Julian <jdhoogvorst@gmail.com>, 2019, 2020. +# kitfka <philipthuijs@gmail.com>, 2020. +# Mike van Leeuwen <mkvanleeuwen@gmail.com>, 2020. +# marnicq van loon <marnicqvanloon@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-22 06:40+0000\n" -"Last-Translator: Stijn Hinlopen <f.a.hinlopen@gmail.com>\n" +"PO-Revision-Date: 2020-07-04 08:58+0000\n" +"Last-Translator: marnicq van loon <marnicqvanloon@gmail.com>\n" "Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/" "nl/>\n" "Language: nl\n" @@ -58,17 +61,17 @@ msgstr "" #: 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 "Ongeldig argumenttype voor convert(), gebruik TYPE_* constanten." +msgstr "Ongeldig type argument voor convert(), gebruik TYPE_* constanten." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "Tekenreeks met lengte 1 verwacht (één karakter)." +msgstr "Verwachtte een tekenreeks van lengte 1 (één karakter)." #: 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 "Niet genoeg bytes om te decoderen, of ongeldig formaat." +msgstr "Niet genoeg bytes voor het decoderen van bytes, of ongeldig formaat." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" @@ -525,10 +528,12 @@ msgid "" msgstr "" "Deze animatie behoort tot een geïmporteerde scène, dus veranderingen aan " "geïmporteerde tracks zullen niet worden opgeslagen.\n" +"\n" "Om aangepaste tracks toe te kunnen voegen, moet in de importinstellingen van " "de scène en de \"Animation→Storage\" naar \"Files\" zetten en " "\"Animation→Keep Custom Tracks\" inschakelen. Importeer de scène dan " "opnieuw.\n" +"\n" "Anders kan je een importvoorinstelling gebruiken die animaties importeert en " "in verschillende bestanden opslaat." @@ -775,7 +780,7 @@ msgstr "Uitzoomen" #: editor/code_editor.cpp msgid "Reset Zoom" -msgstr "Initialiseer Zoom" +msgstr "Herstel Zoom" #: editor/code_editor.cpp msgid "Warnings" @@ -790,9 +795,8 @@ msgid "Method in target node must be specified." msgstr "Methode in doelknoop moet gespecificeerd worden." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Naam is geen geldige identifier:" +msgstr "Methodenaam is geen geldige naam." #: editor/connections_dialog.cpp msgid "" @@ -1494,7 +1498,7 @@ msgstr "Autoloads opnieuw ordenen" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "Autoload kon niet toevoegd worden:" +msgstr "Autoload kan niet toevoegd worden:" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -1865,11 +1869,11 @@ msgstr "Ga Omhoog" #: editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" -msgstr "Toggle Verborgen Bestanden" +msgstr "Verborgen Bestanden Omschakelen" #: editor/editor_file_dialog.cpp msgid "Toggle Favorite" -msgstr "Toggle Favoriet" +msgstr "Favoriet Omschakelen" #: editor/editor_file_dialog.cpp msgid "Toggle Mode" @@ -2365,10 +2369,6 @@ msgid "There is no defined scene to run." msgstr "Er is geen startscène ingesteld." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "De huidige scène is nooit opgeslagen, sla het op voor het uitvoeren." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Kon het subproces niet opstarten!" @@ -10596,6 +10596,11 @@ msgid "Make node as Root" msgstr "Knoop tot wortelknoop maken" #: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Verwijder knoop \"%s\" en zijn kinderen?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Verwijder %d knopen?" @@ -12288,6 +12293,12 @@ msgid "" "shape resource for it!" msgstr "Een CollisionShape2D heeft een vorm nodig in de Shape-eigenschap!" +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12862,6 +12873,10 @@ msgstr "Varyings kunnen alleen worden toegewezenin vertex functies." msgid "Constants cannot be modified." msgstr "Constanten kunnen niet worden aangepast." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "De huidige scène is nooit opgeslagen, sla het op voor het uitvoeren." + #~ msgid "Not in resource path." #~ msgstr "Niet in bronpad." diff --git a/editor/translations/or.po b/editor/translations/or.po index d6678c2819..5859fe6b0a 100644 --- a/editor/translations/or.po +++ b/editor/translations/or.po @@ -2249,10 +2249,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10113,6 +10109,10 @@ 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 "" @@ -11714,6 +11714,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/pl.po b/editor/translations/pl.po index ed53a98bed..d7ff515b05 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -40,12 +40,13 @@ # Cezary Stasiak <cezary.p.stasiak@gmail.com>, 2019. # Jan Ligudziński <jan.ligudzinski@gmail.com>, 2020. # Adam Jagoda <kontakt@lukasz.xyz>, 2020. +# Filip Glura <mcmr.slendy@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" -"Last-Translator: Adam Jagoda <kontakt@lukasz.xyz>\n" +"PO-Revision-Date: 2020-07-31 03:47+0000\n" +"Last-Translator: Tomek <kobewi4e@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" "Language: pl\n" @@ -69,8 +70,7 @@ msgstr "Oczekiwano ciągu znaków o długości 1 (znaku)." #: 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 "" -"Niewystarczająca ilość bajtów dla bajtów dekodujących, albo zły format." +msgstr "Niewystarczająca ilość bajtów dla bajtów dekodujących lub zły format." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" @@ -79,7 +79,7 @@ msgstr "Niewłaściwe dane %i (nie przekazane) w wyrażeniu" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" msgstr "" -"self nie może być użyte ponieważ instancja jest równa zeru (nie przekazano)" +"self nie może być użyte, ponieważ instancja jest nullem (nie przekazano)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -2355,12 +2355,6 @@ msgid "There is no defined scene to run." msgstr "Nie ma zdefiniowanej sceny do uruchomienia." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"Aktualna scena nie została zapisana, proszę zapisać scenę przed " -"uruchomieniem." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Nie można było uruchomić podprocesu!" @@ -10566,6 +10560,10 @@ msgid "Make node as Root" msgstr "Zmień węzeł na Korzeń" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "Usunąć %d węzłów i ich węzły potomne?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Usunąć %d węzłów?" @@ -12262,6 +12260,15 @@ msgstr "" "Kształt jest niezbędny do działania CollisionShape2D. Proszę utworzyć zasób " "Shape!" +#: 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 "" +"Kształty oparte na wielokątach nie są przystosowane, by ich używać lub " +"edytować bezpośrednio przez węzeł CollisionShape2D. Zamiast tego użyj węzła " +"CollisionPolygon2D." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12834,6 +12841,11 @@ msgstr "Varying może być przypisane tylko w funkcji wierzchołków." msgid "Constants cannot be modified." msgstr "Stałe nie mogą być modyfikowane." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Aktualna scena nie została zapisana, proszę zapisać scenę przed " +#~ "uruchomieniem." + #~ msgid "Not in resource path." #~ msgstr "Nie znaleziono w ścieżce zasobów." diff --git a/editor/translations/pr.po b/editor/translations/pr.po index bfa3d0b52c..bf2d3ef0ad 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -2327,10 +2327,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10451,6 +10447,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Slit th' Node" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Slit th' Node" @@ -12146,6 +12147,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index 70878acad2..6c035decd5 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -94,12 +94,17 @@ # Kleyton Luiz de Sousa Vieira <kleytonluizdesouzavieira@gmail.com>, 2020. # Felipe Jesus Macedo <fmacedo746@gmail.com>, 2020. # José Paulo <jose.paulo1919@gmail.com>, 2020. +# Necco <necco@outlook.com>, 2020. +# Marcelo Silveira Hayden <mshayden.1998@gmail.com>, 2020. +# GUILHERME SOUZA REIS DE MELO LOPES <guilhermesrml@unipam.edu.br>, 2020. +# Gabriela Araújo <Gabirin@outlook.com.br>, 2020. +# Jairo Tuboi <tuboi.jairo@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" -"Last-Translator: José Paulo <jose.paulo1919@gmail.com>\n" +"PO-Revision-Date: 2020-08-11 14:04+0000\n" +"Last-Translator: Jairo Tuboi <tuboi.jairo@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -182,7 +187,7 @@ msgstr "EiB" #: editor/animation_bezier_editor.cpp msgid "Free" -msgstr "Livre" +msgstr "Gratuito" #: editor/animation_bezier_editor.cpp msgid "Balanced" @@ -238,7 +243,7 @@ msgstr "Alterar Transição da Animação" #: editor/animation_track_editor.cpp msgid "Anim Change Transform" -msgstr "Alterar Transformação da Anim" +msgstr "Alterar Transformação da Animação" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" @@ -246,7 +251,7 @@ msgstr "Alterar Valor de Quadro-Chave da Anim" #: editor/animation_track_editor.cpp msgid "Anim Change Call" -msgstr "Alterar Chamada da Anim" +msgstr "Alterar Chamada da Animação" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Time" @@ -1557,7 +1562,7 @@ msgstr "Caminho:" #: editor/editor_autoload_settings.cpp msgid "Node Name:" -msgstr "Nome do nó:" +msgstr "Nome do Nó:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp #: editor/editor_profiler.cpp editor/project_manager.cpp @@ -1705,7 +1710,7 @@ msgstr "Importar Dock" #: editor/editor_feature_profile.cpp msgid "Node Dock" -msgstr "Dock de Nós" +msgstr "Painel de Nós" #: editor/editor_feature_profile.cpp msgid "FileSystem and Import Docks" @@ -1791,7 +1796,7 @@ msgstr "Novo" #: editor/editor_feature_profile.cpp editor/editor_node.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "Importar" +msgstr "Import" #: editor/editor_feature_profile.cpp editor/project_export.cpp msgid "Export" @@ -2410,10 +2415,6 @@ msgid "There is no defined scene to run." msgstr "Não há cena definida para rodar." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "A cena atual nunca foi salva. Por favor salve antes de rodá-la." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Não se pôde iniciar sub-processo!" @@ -3869,7 +3870,7 @@ msgstr "Criar Script" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp msgid "Find in Files" -msgstr "Localizar nos Arquivos" +msgstr "Localizar nos arquivos" #: editor/find_in_files.cpp msgid "Find:" @@ -3954,7 +3955,7 @@ msgstr "Grupos" #: editor/groups_editor.cpp msgid "Nodes Not in Group" -msgstr "Nodes fora do Grupo" +msgstr "Nós fora do Grupo" #: editor/groups_editor.cpp editor/scene_tree_dock.cpp #: editor/scene_tree_editor.cpp @@ -4052,7 +4053,7 @@ msgstr "Erro ao rodar script pós-importação:" #: editor/import/resource_importer_scene.cpp msgid "Did you return a Node-derived object in the `post_import()` method?" -msgstr "Você retornou um objeto derivado de nó no método `post import ()`?" +msgstr "Você retornou um objeto derivado de Nó no método `post_import()`?" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -4177,7 +4178,7 @@ msgstr "Alterações podem ser perdidas!" #: editor/multi_node_edit.cpp msgid "MultiNode Set" -msgstr "Múltiplos Nodes definidos" +msgstr "Conjunto de Multi-Nós" #: editor/node_dock.cpp msgid "Select a single node to edit its signals and groups." @@ -4481,7 +4482,7 @@ msgid "" "Animation player has no valid root node path, so unable to retrieve track " "names." msgstr "" -"O reprodutor de animações não tem caminho de nó raiz válido, então não é " +"O reprodutor de animações não tem um caminho de nó raiz válido, então não é " "possível obter os nomes das trilhas." #: editor/plugins/animation_blend_tree_editor_plugin.cpp @@ -4504,7 +4505,7 @@ msgstr "Nó Renomeado" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add Node..." -msgstr "Adicionar nó..." +msgstr "Adicionar Nó..." #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp @@ -4763,7 +4764,7 @@ msgstr "Viagem" #: editor/plugins/animation_state_machine_editor.cpp msgid "Start and end nodes are needed for a sub-transition." -msgstr "Nós inicial e final são necessários para uma sub-transição." +msgstr "Nó inicial e final são necessários para uma sub-transição." #: editor/plugins/animation_state_machine_editor.cpp msgid "No playback resource set at path: %s." @@ -5290,15 +5291,14 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Presets for the anchors and margins values of a Control node." -msgstr "" -"Predefinições para os valores de âncoras e margens de um nó de controle." +msgstr "Predefinições para os valores de âncoras e margens de um nó Control." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "When active, moving Control nodes changes their anchors instead of their " "margins." msgstr "" -"Quando ativo, os nós de Controle móveis mudam suas âncoras em vez de suas " +"Quando ativo, os nós Control móveis mudam suas âncoras em vez de suas " "margens." #: editor/plugins/canvas_item_editor_plugin.cpp @@ -6818,7 +6818,7 @@ msgstr "Localizar próximo" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp msgid "Find Previous" -msgstr "Encontrar Anterior" +msgstr "Localizar anterior" #: editor/plugins/script_editor_plugin.cpp msgid "Filter scripts" @@ -7081,7 +7081,7 @@ msgstr "Recortar" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp msgid "Select All" -msgstr "Selecionar Tudo" +msgstr "Selecionar tudo" #: editor/plugins/script_text_editor.cpp msgid "Delete Line" @@ -7527,7 +7527,7 @@ msgstr "Usar Espaço Local" #: editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" -msgstr "Use Snap" +msgstr "Use Encaixar" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -8997,11 +8997,11 @@ msgstr "Converte um valor em radianos para graus." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-e Exponential." -msgstr "Exponencial de Base e." +msgstr "Exponencial de base e." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-2 Exponential." -msgstr "Exponencial na base 2." +msgstr "Exponencial de base 2." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest integer less than or equal to the parameter." @@ -9021,7 +9021,7 @@ msgstr "Logaritmo natural." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-2 logarithm." -msgstr "Logaritmo de base-2." +msgstr "Logaritmo de base 2." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the greater of two values." @@ -9395,8 +9395,8 @@ msgid "" "Returns falloff based on the dot product of surface normal and view " "direction of camera (pass associated inputs to it)." msgstr "" -"Retorna decaimento com base no produto escalar da normal da superfície com o " -"a direção de visão da câmera (passe as entradas associadas a ele)." +"Retorna decaimento com base no produto escalar da normal da superfície com a " +"direção de visão da câmera (passe as entradas associadas a ele)." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -10628,6 +10628,10 @@ msgid "Make node as Root" msgstr "Tornar Raiz o Nó" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "Deletar nó \"%d\" e seus filhos?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Excluir %d nós?" @@ -11915,11 +11919,11 @@ msgstr "Localizar Tipo de Nó" #: modules/visual_script/visual_script_editor.cpp msgid "Copy Nodes" -msgstr "Copiar Nodes" +msgstr "Copiar Nós" #: modules/visual_script/visual_script_editor.cpp msgid "Cut Nodes" -msgstr "Recortar Nodes" +msgstr "Recortar Nós" #: modules/visual_script/visual_script_editor.cpp msgid "Make Function" @@ -11951,7 +11955,7 @@ msgstr "Nome da propriedade de índice inválido." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "Objeto base não é um nó!" +msgstr "Objeto base não é um Nó!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" @@ -12049,10 +12053,9 @@ msgstr "" "na predefinição." #: platform/android/export/export.cpp -#, fuzzy msgid "Release keystore incorrectly configured in the export preset." msgstr "" -"Keystore de liberação icorretamente configurada na predefinição de " +"Keystore de liberação incorretamente configurada na predefinição de " "exportação." #: platform/android/export/export.cpp @@ -12097,21 +12100,18 @@ msgstr "" "\"Use Custom Build\" precisa estar ativo para ser possível utilizar plugins." #: platform/android/export/export.cpp -#, fuzzy msgid "" "\"Degrees Of Freedom\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR" "\"." msgstr "" -"\"Degrees Of Freedom\" só é válido quando o \"Oculus Mobile VR\" está no " -"\"Mode Xr\"." +"\"Degrees Of Freedom\" só é válido quando o \"Xr Mode\" é \"Oculus Mobile VR" +"\"." #: platform/android/export/export.cpp -#, fuzzy msgid "" "\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"." msgstr "" -"\"Hand Tracking\" só é válido quando o\"Oculus Mobile VR\" está no \"Xr Mode" -"\"." +"\"Hand Tracking\" só é válido quando o \"Xr Mode\" é \"Oculus Mobile VR\"." #: platform/android/export/export.cpp msgid "" @@ -12327,6 +12327,14 @@ msgstr "" "Uma forma deve ser fornecida para que o nó CollisionShape2D funcione. Por " "favor, crie um recurso de forma para ele!" +#: 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 "" +"Formas baseadas em polígonos não foram feitas para serem diretamente " +"editadas no nó CollisionShape2D. Em vez disso use o nó CollisionPolygon2D." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12807,7 +12815,7 @@ 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 "" -"A sugestão de dica não será exibida quando o Filtro do Mouse do controle " +"A Sugestão de Dica não será exibida quando o Filtro do Mouse do controle " "estiver definido como \"Ignorar\". Para resolver isto, defina o Filtro do " "Mouse como \"Parar\" ou \"Passar\"." @@ -12840,8 +12848,8 @@ msgid "" "Use a container as child (VBox, HBox, etc.), or a Control and set the custom " "minimum size manually." msgstr "" -"Um ScrollContainer foi feito para trabalhar com um componente filho único.\n" -"Use um container como filho (VBox, HBox, etc.) ou um Control e defina o " +"Um ScrollContainer foi feito para trabalhar com um único componente filho.\n" +"Use um contêiner como filho (VBox, HBox, etc.) ou um Control e defina o " "tamanho mínimo manualmente." #: scene/gui/tree.cpp @@ -12871,7 +12879,7 @@ msgstr "" #: scene/main/viewport.cpp msgid "Viewport size must be greater than 0 to render anything." msgstr "" -"O tamanho da viewport deve ser maior do que 0 para renderizar qualquer coisa." +"O tamanho da Viewport deve ser maior do que 0 para renderizar qualquer coisa." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." @@ -12901,6 +12909,9 @@ msgstr "Variáveis só podem ser atribuídas na função de vértice." msgid "Constants cannot be modified." msgstr "Constantes não podem serem modificadas." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "A cena atual nunca foi salva. Por favor salve antes de rodá-la." + #~ msgid "Not in resource path." #~ msgstr "Não está no caminho de recursos." diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po index 54accb0d6f..b9d6c82ff0 100644 --- a/editor/translations/pt_PT.po +++ b/editor/translations/pt_PT.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-15 12:01+0000\n" +"PO-Revision-Date: 2020-07-31 03:47+0000\n" "Last-Translator: João Lopes <linux-man@hotmail.com>\n" "Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_PT/>\n" @@ -29,7 +29,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -768,9 +768,8 @@ msgid "Method in target node must be specified." msgstr "Método no nó alvo deve ser especificado." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "O nome não é um identificador válido:" +msgstr "O nome do método tem de ser um identificador válido." #: editor/connections_dialog.cpp msgid "" @@ -2339,10 +2338,6 @@ msgid "There is no defined scene to run." msgstr "Não existe cena definida para execução." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "A cena atual nunca foi guardada, por favor guarde-a antes de executar." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Não consegui iniciar o subprocesso!" @@ -10530,6 +10525,10 @@ msgid "Make node as Root" msgstr "Tornar Nó Raiz" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "Apagar %d nós e filhos?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Apagar %d nós?" @@ -12227,6 +12226,14 @@ msgstr "" "Uma forma tem de ser fornecida para CollisionShape2D funcionar. Crie um " "recurso forma!" +#: 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 "" +"Formas baseadas em polígono não pretendem ser usadas ou editadas diretamente " +"através do nó CollisionShape2D. Em vez disso use o nó CollisionPolygon2D." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12794,6 +12801,10 @@ msgstr "Variações só podem ser atribuídas na função vértice." msgid "Constants cannot be modified." msgstr "Constantes não podem ser modificadas." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "A cena atual nunca foi guardada, por favor guarde-a antes de executar." + #~ msgid "Not in resource path." #~ msgstr "Não está no caminho do recurso." diff --git a/editor/translations/ro.po b/editor/translations/ro.po index cbf6a8f0a0..29487392f8 100644 --- a/editor/translations/ro.po +++ b/editor/translations/ro.po @@ -3,20 +3,22 @@ # Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Calin Sopterean <csopterean@gmail.com>, 2018. -# Filip <filipanton@tutanota.com>, 2018. +# Filip <filipanton@tutanota.com>, 2018, 2020. # Nitroretro <nitroretro@protonmail.com>, 2018. # TigerxWood <TigerxWood@gmail.com>, 2018. # Grigore Antoniuc <grisa181@gmail.com>, 2018. # Boby Ilea <boby.ilea@gmail.com>, 2019. -# EVOKZH <avip.ady@gmail.com>, 2019. +# EVOKZH <avip.ady@gmail.com>, 2019, 2020. # Marincia Catalin <catalinmarincia@gmail.com>, 2020. # Marincia Cătălin <catalinmarincia@gmail.com>, 2020. +# Teodor <teo.virghi@yahoo.ro>, 2020. +# f0roots <f0rootss@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-01-23 15:05+0000\n" -"Last-Translator: Marincia Cătălin <catalinmarincia@gmail.com>\n" +"PO-Revision-Date: 2020-08-11 14:04+0000\n" +"Last-Translator: Filip <filipanton@tutanota.com>\n" "Language-Team: Romanian <https://hosted.weblate.org/projects/godot-engine/" "godot/ro/>\n" "Language: ro\n" @@ -25,7 +27,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -56,7 +58,7 @@ msgstr "Operanzi invalizi la operatorii %s, %s și %s." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" -msgstr "Indice invalid de tip %s pentru tipul de bază %s" +msgstr "Index invalid de tip %s pentru tipul de bază %s" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" @@ -108,7 +110,7 @@ msgstr "Echilibrat" #: editor/animation_bezier_editor.cpp msgid "Mirror" -msgstr "Reflectează" +msgstr "Oglinda" #: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp msgid "Time:" @@ -120,7 +122,7 @@ msgstr "Valoare:" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" -msgstr "Inserează Cheie Aici" +msgstr "Inserează Cheia Aici" #: editor/animation_bezier_editor.cpp msgid "Duplicate Selected Key(s)" @@ -140,7 +142,7 @@ msgstr "Mută Punct Bezier" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "Anim Clonare Chei" +msgstr "Anim Chei duplicate" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" @@ -160,7 +162,7 @@ msgstr "Anim Schimbare transformare" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" -msgstr "Anim Schimbare valoare cadre cheie" +msgstr "Anim Schimbare valoare Keyframe" #: editor/animation_track_editor.cpp msgid "Anim Change Call" @@ -267,6 +269,7 @@ msgstr "Mod Intercalare" #: editor/animation_track_editor.cpp msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" msgstr "" +"Mod de înfășurare a buclei (Intercalează sfârșitul cu începutul în buclă)" #: editor/animation_track_editor.cpp msgid "Remove this track." @@ -311,20 +314,20 @@ msgstr "Cubic" #: editor/animation_track_editor.cpp msgid "Clamp Loop Interp" -msgstr "" +msgstr "Limitați intercalarea buclei" #: editor/animation_track_editor.cpp msgid "Wrap Loop Interp" -msgstr "" +msgstr "Înfășurați intercalarea buclei" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "Inserează Notă" +msgstr "Inserare cheie" #: editor/animation_track_editor.cpp msgid "Duplicate Key(s)" -msgstr "Clonare Chei(s)" +msgstr "Clonare Chei" #: editor/animation_track_editor.cpp msgid "Delete Key(s)" @@ -405,6 +408,10 @@ msgid "" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" msgstr "" +"Track-urile audio pot sa fie folosite numai în noduri de tipul:\n" +"- AudioStreamPlayer\n" +"-AudioStreamPlayer2D\n" +"-AudioStreamPlayer3D" #: editor/animation_track_editor.cpp msgid "Animation tracks can only point to AnimationPlayer nodes." @@ -413,6 +420,8 @@ msgstr "Pistele de animație pot direcționa numai nodurilor AnimațieJucător." #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." msgstr "" +"Un player de animatie nu se poate anima insusi, doar alti playeri de " +"animatie." #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" @@ -489,6 +498,15 @@ msgid "" "Alternatively, use an import preset that imports animations to separate " "files." msgstr "" +"Aceasta animație aparține unei scene importante, schimbările de importare " +"ale Track-urilor nu vor fi salvate.\n" +"\n" +"Pentru a activa opțiunea de a adaugă Track-uri, navigați la setările de " +"import ale scenei și setați\n" +"\"Animație > Depozitare\" către \"Fișiere\", activați \"Animație > Păstrează " +"Track-uri personalizate\", după re-importați.\n" +"Alternativ, folosiți un import presetat care importa animațiile către " +"fișiere separate." #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" @@ -652,11 +670,11 @@ msgstr "Anim Adăugați Pistă Audio" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip Start Offset" -msgstr "" +msgstr "Schimbați decalajul de pornire a clipului audio" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip End Offset" -msgstr "" +msgstr "Schimbați decalajul de oprire a clipului audio" #: editor/array_property_edit.cpp msgid "Resize Array" @@ -679,9 +697,8 @@ msgid "Line Number:" msgstr "Linia Numărul:" #: editor/code_editor.cpp -#, fuzzy msgid "%d replaced." -msgstr "Înlocuiți" +msgstr "%d Înlocuit" #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d match." @@ -718,23 +735,23 @@ msgstr "Standard" #: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" -msgstr "" +msgstr "Porniti sau opriti panoul de scripturi" #: 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 "Zoom-ați În" +msgstr "Apropiere" #: 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 "Zoom-ați Afară" +msgstr "Departare" #: editor/code_editor.cpp msgid "Reset Zoom" -msgstr "Resetați Zoom-area" +msgstr "Resetați zoom-ul" #: editor/code_editor.cpp msgid "Warnings" @@ -749,9 +766,8 @@ msgid "Method in target node must be specified." msgstr "Metoda din nodul țintă trebuie specificată." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Metoda din nodul țintă trebuie specificată." +msgstr "Numele metodei trebuie să fie un identificator valid." #: editor/connections_dialog.cpp msgid "" @@ -818,6 +834,7 @@ msgstr "Amânat(ă)" msgid "" "Defers the signal, storing it in a queue and only firing it at idle time." msgstr "" +"Amână semnalul stocând-ul într-o coadă, dându-i drumul numai la timp inactiv." #: editor/connections_dialog.cpp msgid "Oneshot" @@ -1289,7 +1306,7 @@ msgstr "Opțiuni Pistă Audio" #: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Duplicate" -msgstr "Duplicați" +msgstr "Duplicat" #: editor/editor_audio_buses.cpp msgid "Reset Volume" @@ -1419,7 +1436,7 @@ msgstr "" #: editor/editor_autoload_settings.cpp msgid "Keyword cannot be used as an autoload name." -msgstr "" +msgstr "Cuvântul cheie nu poate fi utilizat ca nume de încărcare automată." #: editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" @@ -1451,7 +1468,7 @@ msgstr "Rearanjați Autoload-urile" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "" +msgstr "Nu pot adaugă încărcare automata:" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -1514,7 +1531,7 @@ msgstr "Alegeţi un Director" #: editor/filesystem_dock.cpp editor/project_manager.cpp #: scene/gui/file_dialog.cpp msgid "Create Folder" -msgstr "Creați Director" +msgstr "Creare folder" #: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp #: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp @@ -1538,7 +1555,7 @@ msgstr "Fişierul se Stochează:" #: editor/editor_export.cpp msgid "No export template found at the expected path:" -msgstr "" +msgstr "Nu a fost găsit niciun șablon de export pe calea așteptată:" #: editor/editor_export.cpp msgid "Packing" @@ -1549,12 +1566,16 @@ msgid "" "Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " "Etc' in Project Settings." msgstr "" +"Platforma țintă necesită textură compresată „ETC” pentru GLES2. Activați " +"„Import Etc” în Setările proiectului." #: editor/editor_export.cpp msgid "" "Target platform requires 'ETC2' texture compression for GLES3. Enable " "'Import Etc 2' in Project Settings." msgstr "" +"Platforma țintă necesită textură compresata „ETC2” pentru GLES3. Activați " +"„Import Etc 2” în Setările proiectului." #: editor/editor_export.cpp msgid "" @@ -1563,6 +1584,10 @@ msgid "" "Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback " "Enabled'." msgstr "" +"Platforma țintă necesită o textură compresată „ETC” pentru revenirea " +"driverului la GLES2.\n" +"Activați „Import Etc” în Setările de proiect sau dezactivați „Driver " +"Fallback Enabled”." #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -1574,7 +1599,7 @@ msgstr "Fișierul șablon de depanare personalizat nu a fost găsit." #: 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 "" +msgstr "Șablonul personalizat de lansare nu a fost găsit." #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" @@ -1583,6 +1608,7 @@ msgstr "Fișierul șablon nu a fost găsit:" #: editor/editor_export.cpp msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." msgstr "" +"La exporturile pe 32 de biți PCK-ul încorporat nu poate fi mai mare de 4 GiB." #: editor/editor_feature_profile.cpp msgid "3D Editor" @@ -1590,7 +1616,7 @@ msgstr "Editor 3D" #: editor/editor_feature_profile.cpp msgid "Script Editor" -msgstr "Editorul de Scripturi" +msgstr "Editor de scripturi" #: editor/editor_feature_profile.cpp msgid "Asset Library" @@ -1619,6 +1645,7 @@ msgstr "Ștergeți profilul '%s'?(ireversibil)" #: editor/editor_feature_profile.cpp msgid "Profile must be a valid filename and must not contain '.'" msgstr "" +"Profilul trebuie sa fie un nume valid de fisier si nu trebuie sa contina '.'" #: editor/editor_feature_profile.cpp msgid "Profile with this name already exists." @@ -1626,7 +1653,7 @@ msgstr "Un profil cu acest nume există deja." #: editor/editor_feature_profile.cpp msgid "(Editor Disabled, Properties Disabled)" -msgstr "" +msgstr "(Editorul Dezactivat, Proprietatile Dezactivate)" #: editor/editor_feature_profile.cpp msgid "(Properties Disabled)" @@ -1650,7 +1677,7 @@ msgstr "Proprietăți Activate:" #: editor/editor_feature_profile.cpp msgid "Enabled Features:" -msgstr "" +msgstr "Caracteristici active:" #: editor/editor_feature_profile.cpp msgid "Enabled Classes:" @@ -1658,13 +1685,15 @@ msgstr "Clase Activate:" #: editor/editor_feature_profile.cpp msgid "File '%s' format is invalid, import aborted." -msgstr "" +msgstr "Formatul fișierului '%s' este invalid, importarea este anulată." #: editor/editor_feature_profile.cpp msgid "" "Profile '%s' already exists. Remove it first before importing, import " "aborted." msgstr "" +"Profilul '%s' este deja existent. Elimină-l inainte de a-l importa, " +"importara este anulata." #: editor/editor_feature_profile.cpp msgid "Error saving profile to path: '%s'." @@ -1672,7 +1701,7 @@ msgstr "Eroare la salvarea profilului la calea: '%s'." #: editor/editor_feature_profile.cpp msgid "Unset" -msgstr "" +msgstr "Nesetat(ă)" #: editor/editor_feature_profile.cpp msgid "Current Profile:" @@ -1686,12 +1715,12 @@ msgstr "Faceți Curent" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/version_control_editor_plugin.cpp msgid "New" -msgstr "" +msgstr "Nou" #: editor/editor_feature_profile.cpp editor/editor_node.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "Importă" +msgstr "Importare" #: editor/editor_feature_profile.cpp editor/project_export.cpp msgid "Export" @@ -1743,7 +1772,7 @@ msgstr "Selectaţi directorul curent" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" -msgstr "Copiaţi Calea" +msgstr "Copiere cale" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Open in File Manager" @@ -1761,7 +1790,7 @@ msgstr "Director Nou..." #: editor/editor_file_dialog.cpp editor/find_in_files.cpp #: editor/plugins/version_control_editor_plugin.cpp msgid "Refresh" -msgstr "Reîmprospătați" +msgstr "Reîmprospătare" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Recognized" @@ -1820,19 +1849,19 @@ msgstr "Comutați Favorite" #: editor/editor_file_dialog.cpp msgid "Toggle Mode" -msgstr "Modul de Comutare" +msgstr "Comutare mod" #: editor/editor_file_dialog.cpp msgid "Focus Path" -msgstr "Calea Focală" +msgstr "Cale focalizare" #: editor/editor_file_dialog.cpp msgid "Move Favorite Up" -msgstr "Deplasați Favorit Sus" +msgstr "Mutare favorită în sus" #: editor/editor_file_dialog.cpp msgid "Move Favorite Down" -msgstr "Deplasați Favorit Jos" +msgstr "Mutare favorită în jos" #: editor/editor_file_dialog.cpp msgid "Go to previous folder." @@ -1893,6 +1922,8 @@ msgid "" "There are multiple importers for different types pointing to file %s, import " "aborted" msgstr "" +"Există importatori multiplii pentru tipuri diferite care trimit spre " +"fișierul %s, importarea este anulată" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" @@ -1929,7 +1960,7 @@ msgstr "Proprietăți" #: editor/editor_help.cpp msgid "override:" -msgstr "" +msgstr "extindere:" #: editor/editor_help.cpp msgid "default:" @@ -1953,7 +1984,7 @@ msgstr "Constante" #: editor/editor_help.cpp msgid "Property Descriptions" -msgstr "Descriere Proprietate" +msgstr "Descrieri Proprietate" #: editor/editor_help.cpp msgid "(value)" @@ -2051,15 +2082,15 @@ msgstr "Proprietate Temă" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" -msgstr "" +msgstr "Proprietate:" #: editor/editor_inspector.cpp msgid "Set" -msgstr "" +msgstr "Stabilește" #: editor/editor_inspector.cpp msgid "Set Multiple:" -msgstr "" +msgstr "Seteaza Multiple:" #: editor/editor_log.cpp msgid "Output:" @@ -2095,7 +2126,7 @@ msgstr "Start" #: editor/editor_network_profiler.cpp msgid "%s/s" -msgstr "" +msgstr "%s/s" #: editor/editor_network_profiler.cpp msgid "Down" @@ -2103,7 +2134,7 @@ msgstr "Descarcă" #: editor/editor_network_profiler.cpp msgid "Up" -msgstr "" +msgstr "Sus" #: editor/editor_network_profiler.cpp editor/editor_node.cpp msgid "Node" @@ -2111,32 +2142,32 @@ msgstr "Nod" #: editor/editor_network_profiler.cpp msgid "Incoming RPC" -msgstr "" +msgstr "Intrare RPC" #: editor/editor_network_profiler.cpp msgid "Incoming RSET" -msgstr "" +msgstr "Intrare RSET" #: editor/editor_network_profiler.cpp msgid "Outgoing RPC" -msgstr "" +msgstr "Ieșire RPC" #: editor/editor_network_profiler.cpp msgid "Outgoing RSET" -msgstr "" +msgstr "Ieșire RSET" #: editor/editor_node.cpp editor/project_manager.cpp msgid "New Window" -msgstr "" +msgstr "Fereastră Nouă" #: editor/editor_node.cpp msgid "Imported resources can't be saved." -msgstr "" +msgstr "Resursele importate nu pot fi salvate." #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: scene/gui/dialogs.cpp msgid "OK" -msgstr "" +msgstr "OK" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" @@ -2147,6 +2178,8 @@ msgid "" "This resource can't be saved because it does not belong to the edited scene. " "Make it unique first." msgstr "" +"Resursa aceasta nu poate fi salvată deoarece nu aparține scenei editate. " +"Resursa trebuie să fie unică." #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Save Resource As..." @@ -2166,7 +2199,7 @@ msgstr "Eroare la salvare." #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Can't open '%s'. The file could have been moved or deleted." -msgstr "" +msgstr "'%s' nu poate fi deschis. Fișierul ar putea fi modificat sau șters." #: editor/editor_node.cpp msgid "Error while parsing '%s'." @@ -2205,6 +2238,8 @@ 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 "" +"Această scenă nu poate fi salvată, deoarece există o includere ciclică.\n" +"Rezolvați-l și apoi încercați să salvați din nou." #: editor/editor_node.cpp msgid "" @@ -2216,11 +2251,11 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "Nu pot salva peste scena care este înca deschisă!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" -msgstr "Imposibil de încărcat MeshLibrary pentru unire!" +msgstr "Nu pot încarca MeshLibrary pentru combinare!" #: editor/editor_node.cpp msgid "Error saving MeshLibrary!" @@ -2262,7 +2297,6 @@ msgstr "" "înţelege mai bine cum sa lucrați cu acestea." #: editor/editor_node.cpp -#, fuzzy 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." @@ -2279,41 +2313,34 @@ msgstr "" "setările din panoul de import şi apoi reimportați." #: editor/editor_node.cpp -#, fuzzy 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 "" -"Această scenă a fost importată, astfel încât modificările la acesta nu vor " -"fi păstrate.\n" -"Instanțarea sau moştenirea vă permite efectuarea de modificări la acesta.\n" -"Vă rugăm să citiţi documentaţia relevantă pentru importul scene pentru a " -"înţelege mai bine acest mod de lucru." +"Această scenă a fost importată, astfel încât modificările acesteia nu vor fi " +"păstrate.\n" +"Instanțarea sau moştenirea vă permite efectuarea de modificări pentru ea.\n" +"Vă rugăm să citiți documentația relevantă pentru importarea scenei pentru a " +"înțelege mai bine acest mod de lucru." #: editor/editor_node.cpp -#, fuzzy 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 "" -"Acesta este un obiect îndepărtat, astfel încât modificările la acesta nu vor " +"Acesta este un obiect îndepărtat, astfel încât modificările acesteia nu vor " "fi păstrate.\n" -"Vă rugăm să citiţi documentaţia relevantă pentru depanare pentru a înţelege " -"mai bine acest mod de lucru." +"Vă rugăm să citiți documentația relevantă depanării pentru a înțelege mai " +"bine acest mod de lucru." #: editor/editor_node.cpp msgid "There is no defined scene to run." msgstr "Nu există nici o scenă definită pentru a execuție." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"Scena curentă nu a fost salvată niciodată, salvați-o înainte de rulare." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Nu s-a putut porni subprocesul!" @@ -2326,9 +2353,8 @@ msgid "Open Base Scene" msgstr "Deschide o scenă de bază" #: editor/editor_node.cpp -#, fuzzy msgid "Quick Open..." -msgstr "Deschide o scenă rapid..." +msgstr "Deschidere rapidă..." #: editor/editor_node.cpp msgid "Quick Open Scene..." @@ -2347,13 +2373,12 @@ msgid "Save changes to '%s' before closing?" msgstr "Salvează schimbările la ’%s’ înainte de ieșire?" #: editor/editor_node.cpp -#, fuzzy msgid "Saved %s modified resource(s)." -msgstr "Încărcarea resursei a eșuat." +msgstr "Resurse modificate %s salvate." #: editor/editor_node.cpp msgid "A root node is required to save the scene." -msgstr "" +msgstr "Un nod rădăcină este necesar pentru a salva scena." #: editor/editor_node.cpp msgid "Save Scene As..." @@ -2381,11 +2406,11 @@ msgstr "Exportă Librăria de Mesh-uri" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." -msgstr "Această operațiune nu poate fi făcută fără un nod de bază." +msgstr "Această operațiune nu poate fi făcută fără un nod rădăcină." #: editor/editor_node.cpp msgid "Export Tile Set" -msgstr "Exportă Setul de Plăci" +msgstr "Exportă Tile Setul" #: editor/editor_node.cpp msgid "This operation can't be done without a selected node." @@ -2397,26 +2422,27 @@ msgstr "Scena curentă nu este salvată. Deschizi oricum?" #: editor/editor_node.cpp msgid "Can't reload a scene that was never saved." -msgstr "Nu se poate reîncărca o scenă care nu a fost salvată niciodată." +msgstr "Nu pot reîncărca o scenă care nu a fost salvată niciodată." #: editor/editor_node.cpp -#, fuzzy msgid "Reload Saved Scene" -msgstr "Salvează Scena" +msgstr "Reîncarcă scenă salvată" #: editor/editor_node.cpp msgid "" "The current scene has unsaved changes.\n" "Reload the saved scene anyway? This action cannot be undone." msgstr "" +"Scena actuală are modificări nesalvate.\n" +"Reîncărcați scena salvată? Această acțiune nu poate fi anulată." #: editor/editor_node.cpp msgid "Quick Run Scene..." -msgstr "Execută Rapid Scena..." +msgstr "Rulează Rapid Scena..." #: editor/editor_node.cpp msgid "Quit" -msgstr "Închidere" +msgstr "Închide" #: editor/editor_node.cpp msgid "Exit the editor?" @@ -2424,7 +2450,7 @@ msgstr "Ieși din editor?" #: editor/editor_node.cpp msgid "Open Project Manager?" -msgstr "Deschizi Managerul de Proiect?" +msgstr "Deschide Managerul de Proiect?" #: editor/editor_node.cpp msgid "Save & Quit" @@ -2458,9 +2484,8 @@ msgid "Close Scene" msgstr "Închide Scena" #: editor/editor_node.cpp -#, fuzzy msgid "Reopen Closed Scene" -msgstr "Închide Scena" +msgstr "Redeschidere scenă închisă" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." @@ -2477,13 +2502,12 @@ msgid "Unable to load addon script from path: '%s'." msgstr "Nu a putut fi încărcat scriptul add-on din calea: '%s'." #: editor/editor_node.cpp -#, fuzzy msgid "" "Unable to load addon script from path: '%s' There seems to be an error in " "the code, please check the syntax." msgstr "" -"Nu a putut fi încărcat scriptul add-on din calea: '%s' Scriptul nu este în " -"modul unealtă." +"Imposibil de încărcat scriptul addon din cale: '%s' Se pare că există o " +"eroare în cod, verificați sintaxa." #: editor/editor_node.cpp msgid "" @@ -2565,37 +2589,34 @@ msgstr "Implicit" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp -#, fuzzy msgid "Show in FileSystem" -msgstr "Sistemul De Fișiere" +msgstr "Afișare în FileSystem" #: editor/editor_node.cpp -#, fuzzy msgid "Play This Scene" -msgstr "Rulează Scena" +msgstr "Redare scenă" #: editor/editor_node.cpp -#, fuzzy msgid "Close Tab" -msgstr "Aproape" +msgstr "Închidere filă" #: editor/editor_node.cpp -#, fuzzy msgid "Undo Close Tab" -msgstr "Aproape" +msgstr "Anulare fila Închidere" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#, fuzzy msgid "Close Other Tabs" -msgstr "" +msgstr "Închideți Alte File" #: editor/editor_node.cpp +#, fuzzy msgid "Close Tabs to the Right" -msgstr "" +msgstr "Închidere file la dreapta" #: editor/editor_node.cpp -#, fuzzy msgid "Close All Tabs" -msgstr "Aproape" +msgstr "Inchide toate filele" #: editor/editor_node.cpp msgid "Switch Scene Tab" @@ -2638,9 +2659,8 @@ msgid "Go to previously opened scene." msgstr "Mergi la o scenă deschisă anterior." #: editor/editor_node.cpp -#, fuzzy msgid "Copy Text" -msgstr "Copiaţi Calea" +msgstr "Copiază textul" #: editor/editor_node.cpp msgid "Next tab" @@ -2679,9 +2699,8 @@ msgid "Save Scene" msgstr "Salvează Scena" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" -msgstr "Salvează toate Scenele" +msgstr "Salvați toate scenele" #: editor/editor_node.cpp msgid "Convert To..." @@ -2715,45 +2734,43 @@ msgid "Project" msgstr "Proiect" #: editor/editor_node.cpp -#, fuzzy msgid "Project Settings..." -msgstr "Setări ale Proiectului" +msgstr "Setări proiect..." #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Version Control" -msgstr "Versiune:" +msgstr "Control versiune" #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp +#, fuzzy msgid "Set Up Version Control" -msgstr "" +msgstr "Configurați controlul versiunii" #: editor/editor_node.cpp +#, fuzzy msgid "Shut Down Version Control" -msgstr "" +msgstr "Închidere control versiune" #: editor/editor_node.cpp -#, fuzzy msgid "Export..." -msgstr "Exportare" +msgstr "Export..." #: editor/editor_node.cpp +#, fuzzy msgid "Install Android Build Template..." -msgstr "" +msgstr "Instalare șablon compilare Android..." #: editor/editor_node.cpp -#, fuzzy msgid "Open Project Data Folder" -msgstr "Deschizi Managerul de Proiect?" +msgstr "Deschideți folderul datelor proiectului" #: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp msgid "Tools" msgstr "Unelte" #: editor/editor_node.cpp -#, fuzzy msgid "Orphan Resource Explorer..." -msgstr "Explorator de Resurse Orfane" +msgstr "Explorator de resurse orfane ..." #: editor/editor_node.cpp msgid "Quit to Project List" @@ -2856,56 +2873,48 @@ msgid "Editor" msgstr "Editor" #: editor/editor_node.cpp -#, fuzzy msgid "Editor Settings..." -msgstr "Setări ale Editorului" +msgstr "Setări Editor..." #: editor/editor_node.cpp msgid "Editor Layout" -msgstr "Schema Editorului" +msgstr "Schema Editor" #: editor/editor_node.cpp -#, fuzzy msgid "Take Screenshot" -msgstr "Salvează Scena" +msgstr "Captură de ecran" #: editor/editor_node.cpp -#, fuzzy msgid "Screenshots are stored in the Editor Data/Settings Folder." -msgstr "Setări ale Editorului" +msgstr "Capturile de ecran sunt stocate în folderul Date/Setări editor." #: editor/editor_node.cpp msgid "Toggle Fullscreen" -msgstr "Comută în Ecran Complet" +msgstr "Comutare ecran complet" #: editor/editor_node.cpp -#, fuzzy msgid "Toggle System Console" -msgstr "Modul de Comutare" +msgstr "Cumutează Consola de Sistem" #: editor/editor_node.cpp -#, fuzzy msgid "Open Editor Data/Settings Folder" -msgstr "Setări ale Editorului" +msgstr "Deschide Dosarul De Date/Setări" #: editor/editor_node.cpp msgid "Open Editor Data Folder" -msgstr "" +msgstr "Deschidere dosarul de date editor" #: editor/editor_node.cpp -#, fuzzy msgid "Open Editor Settings Folder" -msgstr "Setări ale Editorului" +msgstr "Deschide Dosarul de Setări Editor" #: editor/editor_node.cpp -#, fuzzy msgid "Manage Editor Features..." -msgstr "Administrează Șabloanele de Export" +msgstr "Gestionare caracteristici editor..." #: editor/editor_node.cpp -#, fuzzy msgid "Manage Export Templates..." -msgstr "Administrează Șabloanele de Export" +msgstr "Gestionare șabloane export..." #: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp msgid "Help" @@ -2930,13 +2939,12 @@ msgid "Q&A" msgstr "Întrebări și Răspunsuri" #: editor/editor_node.cpp -#, fuzzy msgid "Report a Bug" -msgstr "Reimportă" +msgstr "Raportează o Eroare" #: editor/editor_node.cpp msgid "Send Docs Feedback" -msgstr "" +msgstr "Trimite Feedbackul Docs" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "Community" @@ -2955,12 +2963,13 @@ msgid "Play" msgstr "Rulează" #: editor/editor_node.cpp +#, fuzzy msgid "Pause the scene execution for debugging." -msgstr "" +msgstr "Întrerupeți executarea scenei pentru depanare." #: editor/editor_node.cpp msgid "Pause Scene" -msgstr "Întrerupere Scenă" +msgstr "Pauză scenă" #: editor/editor_node.cpp msgid "Stop the scene." @@ -2992,22 +3001,18 @@ msgid "Save & Restart" msgstr "Salvează și Restartează" #: editor/editor_node.cpp -#, fuzzy msgid "Spins when the editor window redraws." -msgstr "Se rotește când ferestra editorului se recolorează!" +msgstr "Se rotește când fereastra editorului se redeschide." #: editor/editor_node.cpp -#, fuzzy msgid "Update Continuously" -msgstr "Continuu" +msgstr "Actualizare continuă" #: editor/editor_node.cpp -#, fuzzy msgid "Update When Changed" -msgstr "Modificări ale Actualizării" +msgstr "Actualizează Doar La Modificare" #: editor/editor_node.cpp -#, fuzzy msgid "Hide Update Spinner" msgstr "Dezactivează Cercul de Actualizare" @@ -3020,9 +3025,8 @@ msgid "Inspector" msgstr "Inspector" #: editor/editor_node.cpp -#, fuzzy msgid "Expand Bottom Panel" -msgstr "Extinde toate" +msgstr "Extinde Panoul De Jos" #: editor/editor_node.cpp msgid "Output" @@ -3035,11 +3039,11 @@ msgstr "Nu Salva" #: editor/editor_node.cpp msgid "Android build template is missing, please install relevant templates." msgstr "" +"Android construi șablon lipsește, vă rugăm să instalați șabloane relevante." #: editor/editor_node.cpp -#, fuzzy msgid "Manage Templates" -msgstr "Administrează Șabloanele de Export" +msgstr "Gestionați șabloanele" #: editor/editor_node.cpp msgid "" @@ -3065,9 +3069,8 @@ msgid "Import Templates From ZIP File" msgstr "Importă Șabloane Dintr-o Arhivă ZIP" #: editor/editor_node.cpp -#, fuzzy msgid "Template Package" -msgstr "Exportă Managerul de Șabloane" +msgstr "Pachetul cu șabloane" #: editor/editor_node.cpp msgid "Export Library" @@ -3122,9 +3125,8 @@ msgid "Warning!" msgstr "" #: editor/editor_path.cpp -#, fuzzy msgid "No sub-resources found." -msgstr "Nicio sursă de suprafață specificată." +msgstr "Nu s-a găsit nici o sub-resursă." #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" @@ -3135,14 +3137,12 @@ msgid "Thumbnail..." msgstr "Miniatură..." #: editor/editor_plugin_settings.cpp -#, fuzzy msgid "Main Script:" -msgstr "Execută Scriptul" +msgstr "Script principal:" #: editor/editor_plugin_settings.cpp -#, fuzzy msgid "Edit Plugin" -msgstr "Editează Poligon" +msgstr "Editare Plugin" #: editor/editor_plugin_settings.cpp msgid "Installed Plugins:" @@ -3166,9 +3166,8 @@ msgid "Status:" msgstr "Stare:" #: editor/editor_plugin_settings.cpp -#, fuzzy msgid "Edit:" -msgstr "Modificare" +msgstr "Editare:" #: editor/editor_profiler.cpp msgid "Measure:" @@ -3211,9 +3210,8 @@ msgid "Calls" msgstr "Apeluri" #: editor/editor_properties.cpp -#, fuzzy msgid "Edit Text:" -msgstr "Membri" +msgstr "Editare text:" #: editor/editor_properties.cpp editor/script_create_dialog.cpp msgid "On" @@ -3236,9 +3234,8 @@ msgid "Assign..." msgstr "" #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" -msgstr "Nume nevalid." +msgstr "RID nevalid" #: editor/editor_properties.cpp msgid "" @@ -3269,9 +3266,8 @@ msgid "New Script" msgstr "" #: editor/editor_properties.cpp editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" -msgstr "Execută Scriptul" +msgstr "Extinde Script" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "New %s" @@ -3317,14 +3313,12 @@ msgid "Remove Item" msgstr "" #: editor/editor_properties_array_dict.cpp -#, fuzzy msgid "New Key:" -msgstr "Nume nou:" +msgstr "Cheie Nouă:" #: editor/editor_properties_array_dict.cpp -#, fuzzy msgid "New Value:" -msgstr "Nume nou:" +msgstr "Valoare Nouă:" #: editor/editor_properties_array_dict.cpp msgid "Add Key/Value Pair" @@ -3384,7 +3378,6 @@ msgid "Import From Node:" msgstr "Importă Din Nod:" #: editor/export_template_manager.cpp -#, fuzzy msgid "Redownload" msgstr "Descarcă din nou" @@ -3426,9 +3419,8 @@ msgid "Can't open export templates zip." msgstr "Nu se pot deschide șabloanele de export zip." #: editor/export_template_manager.cpp -#, fuzzy msgid "Invalid version.txt format inside templates: %s." -msgstr "Format nevalid versiune.txt în șabloane." +msgstr "Formatul versiune.txt nevalid din interiorul șabloanelor: % s." #: editor/export_template_manager.cpp msgid "No version.txt found inside templates." @@ -3495,9 +3487,8 @@ msgid "Download Complete." msgstr "Descărcare Completă." #: editor/export_template_manager.cpp -#, fuzzy msgid "Cannot remove temporary file:" -msgstr "Nu se poate șterge:" +msgstr "Nu pot sterge fișierul temporar:" #: editor/export_template_manager.cpp msgid "" @@ -3506,9 +3497,8 @@ msgid "" msgstr "" #: editor/export_template_manager.cpp -#, fuzzy msgid "Error requesting URL:" -msgstr "Eroare la solicitarea URL: " +msgstr "Eroare la solicitarea URL:" #: editor/export_template_manager.cpp msgid "Connecting to Mirror..." @@ -3557,9 +3547,8 @@ msgid "SSL Handshake Error" msgstr "Eroare SSL Handshake" #: editor/export_template_manager.cpp -#, fuzzy msgid "Uncompressing Android Build Sources" -msgstr "Decomprimare Asset-uri" +msgstr "Decomprimare Surse de compilare Android" #: editor/export_template_manager.cpp msgid "Current Version:" @@ -3580,12 +3569,11 @@ msgstr "Elimină Șablon" #: editor/export_template_manager.cpp #, fuzzy msgid "Select Template File" -msgstr "Selectează fișierul șablon" +msgstr "Selectare fișier șablon" #: editor/export_template_manager.cpp -#, fuzzy msgid "Godot Export Templates" -msgstr "Administrează Șabloanele de Export" +msgstr "Șabloane de export Godot" #: editor/export_template_manager.cpp msgid "Export Template Manager" @@ -3596,14 +3584,12 @@ msgid "Download Templates" msgstr "Descarcă Șabloane" #: editor/export_template_manager.cpp -#, fuzzy msgid "Select mirror from list: (Shift+Click: Open in Browser)" -msgstr "Selectează oglinda din listă: " +msgstr "Selectează oglinda din listă: (Shift+Click: Deschide in Browser)" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" -msgstr "Favorite:" +msgstr "Favorite" #: editor/filesystem_dock.cpp msgid "Status: Import of file failed. Please fix file and reimport manually." @@ -3636,9 +3622,8 @@ msgid "No name provided." msgstr "Niciun nume furnizat." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Provided name contains invalid characters." -msgstr "Numele furnizat conține caractere nevalide" +msgstr "Numele furnizat conține caractere nevalide." #: editor/filesystem_dock.cpp msgid "A file or folder with this name already exists." @@ -3665,33 +3650,28 @@ msgid "Duplicating folder:" msgstr "Duplicând directorul:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "New Inherited Scene" -msgstr "Scenă Derivată Nouă..." +msgstr "Nouă scenă moștenită" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Set As Main Scene" -msgstr "Alege o Scenă Principală" +msgstr "Setează ca scenă principală" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scenes" -msgstr "Deschide o scenă" +msgstr "Deschide Scene" #: editor/filesystem_dock.cpp msgid "Instance" msgstr "Instanță" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to Favorites" -msgstr "Favorite:" +msgstr "Adauga la Favorite" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from Favorites" -msgstr "Elimină din Grup" +msgstr "Eliminare din Preferințe" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3714,31 +3694,26 @@ msgid "Move To..." msgstr "Mută În..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "New Scene..." -msgstr "Scenă Nouă" +msgstr "Scenă nouă..." #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "New Script..." -msgstr "Deschide un script rapid..." +msgstr "Script nou ..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "New Resource..." -msgstr "Salvați Resursa Ca..." +msgstr "Resursă nouă ..." #: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Expand All" -msgstr "Extinde toate" +msgstr "Extinde Toate" #: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" -msgstr "Restrânge toate" +msgstr "Reduceți Toate" #: editor/filesystem_dock.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -3748,28 +3723,24 @@ msgid "Rename" msgstr "Redenumește" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Previous Folder/File" -msgstr "Fila anterioară" +msgstr "Folder/Fișier Anterior" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Next Folder/File" -msgstr "Creați Director" +msgstr "Folder/Fișier Următor" #: editor/filesystem_dock.cpp msgid "Re-Scan Filesystem" msgstr "Rescanează Sistemul de Fișiere" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle Split Mode" -msgstr "Modul de Comutare" +msgstr "Comută Modul Split" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Search files" -msgstr "Căutare Clase" +msgstr "Căută fișiere" #: editor/filesystem_dock.cpp msgid "" @@ -3784,42 +3755,36 @@ msgid "Move" msgstr "Mută" #: editor/filesystem_dock.cpp -#, fuzzy msgid "There is already file or folder with the same name in this location." -msgstr "Un fișier sau un director cu acest nume există deja." +msgstr "Există deja un fișier sau un dosar cu același nume în această locație." #: editor/filesystem_dock.cpp msgid "Overwrite" msgstr "" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Create Scene" -msgstr "Salvează Scena" +msgstr "Crează scenă" #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "Create Script" msgstr "" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Find in Files" -msgstr "%d mai multe fișiere" +msgstr "Caută în fișiere" #: editor/find_in_files.cpp -#, fuzzy msgid "Find:" -msgstr "Găsiți" +msgstr "Găsiți:" #: editor/find_in_files.cpp -#, fuzzy msgid "Folder:" -msgstr "Creați Director" +msgstr "Folderul:" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "Filtre..." +msgstr "Filtre:" #: editor/find_in_files.cpp msgid "" @@ -3841,29 +3806,24 @@ msgid "Cancel" msgstr "" #: editor/find_in_files.cpp -#, fuzzy msgid "Find: " -msgstr "Găsiți" +msgstr "Găsiți: " #: editor/find_in_files.cpp -#, fuzzy msgid "Replace: " -msgstr "Înlocuiți" +msgstr "Înlocuiți: " #: editor/find_in_files.cpp -#, fuzzy msgid "Replace all (no undo)" -msgstr "Înlocuiți Tot" +msgstr "Înlocuiește tot (fără anulare)" #: editor/find_in_files.cpp -#, fuzzy msgid "Searching..." -msgstr "Se Salvează..." +msgstr "Caut..." #: editor/find_in_files.cpp -#, fuzzy msgid "Search complete" -msgstr "Căutați Text" +msgstr "Căutare completă" #: editor/groups_editor.cpp msgid "Add to Group" @@ -3874,33 +3834,28 @@ msgid "Remove from Group" msgstr "Elimină din Grup" #: editor/groups_editor.cpp -#, fuzzy msgid "Group name already exists." -msgstr "EROARE: Numele animației există deja!" +msgstr "Numele grupului există deja." #: editor/groups_editor.cpp -#, fuzzy msgid "Invalid group name." -msgstr "Nume nevalid." +msgstr "Nume de grup nevalid." #: editor/groups_editor.cpp -#, fuzzy msgid "Rename Group" -msgstr "Grupuri" +msgstr "Renumește Grupul" #: editor/groups_editor.cpp -#, fuzzy msgid "Delete Group" -msgstr "Șterge Schema" +msgstr "Șterge Grupul" #: editor/groups_editor.cpp editor/node_dock.cpp msgid "Groups" msgstr "Grupuri" #: editor/groups_editor.cpp -#, fuzzy msgid "Nodes Not in Group" -msgstr "Adaugă în Grup" +msgstr "Nodurile Nu Sunt în Grup" #: editor/groups_editor.cpp editor/scene_tree_dock.cpp #: editor/scene_tree_editor.cpp @@ -3908,23 +3863,20 @@ msgid "Filter nodes" msgstr "" #: editor/groups_editor.cpp -#, fuzzy msgid "Nodes in Group" -msgstr "Adaugă în Grup" +msgstr "Noduri în Grup" #: editor/groups_editor.cpp msgid "Empty groups will be automatically removed." msgstr "" #: editor/groups_editor.cpp -#, fuzzy msgid "Group Editor" -msgstr "Deschide Editorul de Scripturi" +msgstr "Editor Grup" #: editor/groups_editor.cpp -#, fuzzy msgid "Manage Groups" -msgstr "Grupuri" +msgstr "Gestionați grupuri" #: editor/import/resource_importer_scene.cpp msgid "Import as Single Scene" @@ -4008,9 +3960,8 @@ msgid "Saving..." msgstr "Se Salvează..." #: editor/import_dock.cpp -#, fuzzy msgid "%d Files" -msgstr " Fișiere" +msgstr "%d Fișiere" #: editor/import_dock.cpp msgid "Set as Default for '%s'" @@ -4025,9 +3976,8 @@ msgid "Import As:" msgstr "Importă Ca:" #: editor/import_dock.cpp -#, fuzzy msgid "Preset" -msgstr "Presetare..." +msgstr "Presetare" #: editor/import_dock.cpp msgid "Reimport" @@ -4038,9 +3988,8 @@ msgid "Save Scenes, Re-Import, and Restart" msgstr "" #: editor/import_dock.cpp -#, fuzzy msgid "Changing the type of an imported file requires editor restart." -msgstr "Schimbarea driver-ului video necesită restartarea editorului." +msgstr "Modificarea tipului de fișier importat necesită repornirea editorului." #: editor/import_dock.cpp msgid "" @@ -4052,14 +4001,12 @@ msgid "Failed to load resource." msgstr "Încărcarea resursei a eșuat." #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" -msgstr "Extinde toate proprietăţile" +msgstr "Extindeți toate proprietățile" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" -msgstr "Restrânge toate proprietăţile" +msgstr "Reduceți toate proprietățile" #: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/script_editor_plugin.cpp @@ -4071,9 +4018,8 @@ msgid "Copy Params" msgstr "Copie Parametrii" #: editor/inspector_dock.cpp -#, fuzzy msgid "Edit Resource Clipboard" -msgstr "Clip-board de resurse gol !" +msgstr "Editare clipboard resursă" #: editor/inspector_dock.cpp msgid "Copy Resource" @@ -4120,9 +4066,8 @@ msgid "Object properties." msgstr "Proprietățile obiectului." #: editor/inspector_dock.cpp -#, fuzzy msgid "Filter properties" -msgstr "Proprietățile obiectului." +msgstr "Proprietăți filtrare" #: editor/inspector_dock.cpp msgid "Changes may be lost!" @@ -4133,24 +4078,20 @@ msgid "MultiNode Set" msgstr "Set MultiNod" #: editor/node_dock.cpp -#, fuzzy msgid "Select a single node to edit its signals and groups." -msgstr "Selectează un Nod pentru a edita Semnalele și Grupurile." +msgstr "Selectați un singur nod pentru a-i edita semnalele și grupurile." #: editor/plugin_config_dialog.cpp -#, fuzzy msgid "Edit a Plugin" -msgstr "Editează Poligon" +msgstr "Editează un Plugin" #: editor/plugin_config_dialog.cpp -#, fuzzy msgid "Create a Plugin" -msgstr "Crează Poligon" +msgstr "Crează un plugin" #: editor/plugin_config_dialog.cpp -#, fuzzy msgid "Plugin Name:" -msgstr "Plugin-uri" +msgstr "Nume plugin:" #: editor/plugin_config_dialog.cpp msgid "Subfolder:" @@ -4170,37 +4111,31 @@ msgstr "" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Polygon" -msgstr "Crează Poligon" +msgstr "Crează poligon" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Create points." -msgstr "Șterge puncte" +msgstr "Creați puncte." #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "" "Edit points.\n" "LMB: Move Point\n" "RMB: Erase Point" msgstr "" -"Editează poligon existent:\n" -"LMB: Mută Punct.\n" -"Ctrl+LMB: Despică Segment.\n" -"RMB: Șterge Punct." +"Editează puncte\n" +"LMB: Mută Punct\n" +"RMB: Șterge Punct" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Erase points." -msgstr "RMB: Șterge Punctul." +msgstr "Șterge puncte." #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "Edit Polygon" msgstr "Editează Poligon" @@ -4209,14 +4144,12 @@ msgid "Insert Point" msgstr "Inserează Punct" #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "Edit Polygon (Remove Point)" -msgstr "Editează Poligon (Elimină Punct)" +msgstr "Editează Poligon (Șterge puncte)" #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "Remove Polygon And Point" -msgstr "Elimină Poligon Și Punct" +msgstr "Șterge Poligon Și Punct" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4230,25 +4163,21 @@ msgstr "Adaugă Animația" #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Load..." -msgstr "Încărcați" +msgstr "Încărca..." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Move Node Point" -msgstr "Deplasare punct" +msgstr "Mută punct nod" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Change BlendSpace1D Limits" -msgstr "Schimbă Timpul Amestecului" +msgstr "Modifică limitele BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Change BlendSpace1D Labels" -msgstr "Schimbă Timpul Amestecului" +msgstr "Modifică etichetele BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4323,9 +4252,8 @@ msgid "Open Animation Node" msgstr "Nod de Animație" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Triangle already exists." -msgstr "EROARE: Numele animației există deja!" +msgstr "Triunghiul există deja." #: editor/plugins/animation_blend_space_2d_editor.cpp #, fuzzy @@ -4438,9 +4366,8 @@ msgid "Delete Node(s)" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Toggle Filter On/Off" -msgstr "Comutează modul fără distrageri." +msgstr "Comutare filtru activat/dezactivat" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy @@ -4477,9 +4404,8 @@ msgstr "Funcții" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Node Renamed" -msgstr "Nume Nod:" +msgstr "Nod redenumit" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -4488,9 +4414,8 @@ msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Edit Filtered Tracks:" -msgstr "Editează Filtrele" +msgstr "Editare piste filtrate:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy @@ -4614,9 +4539,8 @@ msgid "Animation" msgstr "Animație" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Edit Transitions..." -msgstr "Tranziții" +msgstr "Editare tranziții..." #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy @@ -4718,9 +4642,8 @@ msgid "Move Node" msgstr "Mod Mutare" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition exists!" -msgstr "Tranziție" +msgstr "Tranziţia există!" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy @@ -4783,14 +4706,12 @@ msgid "" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Create new nodes." -msgstr "Creați %s Nou" +msgstr "Creați noduri noi." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Connect nodes." -msgstr "Conectați la Nod:" +msgstr "Conectați nodurile." #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy @@ -4806,14 +4727,12 @@ msgid "Set the end animation. This is useful for sub-transitions." msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition: " -msgstr "Tranziție" +msgstr "Tranziție: " #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Play Mode:" -msgstr "Mod În Jur" +msgstr "Mod redare:" #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -5008,14 +4927,12 @@ msgid "Redirect loop." msgstr "Buclă de Redirecționare." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed, timeout" -msgstr "Cerere eșuată, cod returnat:" +msgstr "Solicitare nereușită, expirare" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Timeout." -msgstr "Timp" +msgstr "Pauză." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." @@ -5038,14 +4955,12 @@ msgid "Asset Download Error:" msgstr "Eroare la Descărcarea Asset-ului:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Downloading (%s / %s)..." -msgstr "Se Descarcă" +msgstr "Se descarcă (%s / %s)..." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Downloading..." -msgstr "Se Descarcă" +msgstr "Descărcare..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Resolving..." @@ -5060,9 +4975,8 @@ msgid "Idle" msgstr "Inactiv" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Install..." -msgstr "Instalați" +msgstr "Instalare..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Retry" @@ -5130,14 +5044,12 @@ msgid "No results for \"%s\"." msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Import..." -msgstr "Importă" +msgstr "Import..." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Plugins..." -msgstr "Plugin-uri" +msgstr "Plugin-uri..." #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" @@ -5153,9 +5065,8 @@ msgid "Site:" msgstr "Site:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support" -msgstr "Suport..." +msgstr "Suport" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Official" @@ -5166,9 +5077,8 @@ msgid "Testing" msgstr "Se Testează" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Loading..." -msgstr "Încărcați" +msgstr "Încărcare..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -5397,9 +5307,8 @@ msgid "Full Rect" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Keep Ratio" -msgstr "Proporție Scalare:" +msgstr "Păstrare raport" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" @@ -5486,14 +5395,13 @@ msgstr "" #: 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 -#, fuzzy msgid "Zoom Reset" -msgstr "Zoom-ați Afară" +msgstr "Resetare zoom" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Select Mode" -msgstr "Mod Selectare" +msgstr "Selectare mod" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -5547,14 +5455,12 @@ msgid "Pan Mode" msgstr "Mod În Jur" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Ruler Mode" -msgstr "Modul de Execuție:" +msgstr "Mod riglă" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Comutare snapping" +msgstr "Comutați fixarea inteligentă." #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -5562,9 +5468,8 @@ msgid "Use Smart Snap" msgstr "Utilizează Snap" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Comutare snapping" +msgstr "Comutare grilă fixare." #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -5683,7 +5588,7 @@ msgstr "Arată Grila" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" -msgstr "Arată Asistenții" +msgstr "Afișare ajutoare" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Rulers" @@ -5691,7 +5596,7 @@ msgstr "Arată Riglele" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "Arată Ghizii" +msgstr "Afișare ghiduri" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" @@ -5730,9 +5635,8 @@ msgid "Scale mask for inserting keys." msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Insert keys (based on mask)." -msgstr "Inserează Notă (Melodii existente)" +msgstr "Introduce cheile (bazat pe masca)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5754,7 +5658,7 @@ msgstr "Lungime Animație (în secunde)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" -msgstr "Inserează Notă (Melodii existente)" +msgstr "Inserează Cheie (Track-uri existente)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" @@ -5838,9 +5742,8 @@ msgstr "Încărcare Mască de Emisie" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "Restart" -msgstr "Restartare (s):" +msgstr "Restart" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -5875,9 +5778,8 @@ msgstr "" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Directed Border Pixels" -msgstr "Directoare și Fişiere:" +msgstr "Pixeli borduri direcționați" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -6009,9 +5911,8 @@ msgid "Mesh is empty!" msgstr "Mesh-ul este gol!" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Couldn't create a Trimesh collision shape." -msgstr "Creează un Frate de Coliziune Trimesh" +msgstr "Nu a putut crea o formă de coliziune Trimesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Trimesh Body" @@ -6044,9 +5945,8 @@ msgid "Can't create multiple convex collision shapes for the scene root." msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Couldn't create any collision shapes." -msgstr "Nu s-a putut creea un contur!" +msgstr "Nu a putut crea nici o formă de coliziune." #: editor/plugins/mesh_instance_editor_plugin.cpp #, fuzzy @@ -6181,16 +6081,16 @@ msgid "Remove item %d?" msgstr "Elimini obiectul %d?" #: editor/plugins/mesh_library_editor_plugin.cpp -#, fuzzy msgid "" "Update from existing scene?:\n" "%s" -msgstr "Actualizează din Scenă" +msgstr "" +"Actualizează din Scenă existenta?:\n" +"%s" #: editor/plugins/mesh_library_editor_plugin.cpp -#, fuzzy msgid "Mesh Library" -msgstr "Librărie_de_Structuri..." +msgstr "Bibliotecă meshuri" #: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp @@ -6598,9 +6498,8 @@ msgid "Paint Bone Weights" msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Open Polygon 2D UV editor." -msgstr "Editor UV de poligoane 2D" +msgstr "Deschideți editorul UV Poligon 2D." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" @@ -6710,9 +6609,8 @@ msgid "Show Grid" msgstr "Arată Grila" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Configure Grid:" -msgstr "Configurare Snap" +msgstr "Configurare grilă:" #: editor/plugins/polygon_2d_editor_plugin.cpp #, fuzzy @@ -6794,9 +6692,8 @@ msgid "AnimationTree has no path set to an AnimationPlayer" msgstr "" #: editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Path to AnimationPlayer is invalid" -msgstr "Arborele Animației este nevalid." +msgstr "Calea către AnimationPlayer nu este validă" #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" @@ -6807,14 +6704,12 @@ msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error writing TextFile:" -msgstr "Eroare la salvarea TileSet!" +msgstr "Eroare la scrierea TextFile:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Could not load file at:" -msgstr "Directorul nu a putut fi creat." +msgstr "Nu s-a putut încărca fișierul la:" #: editor/plugins/script_editor_plugin.cpp #, fuzzy @@ -6827,19 +6722,16 @@ msgid "Error while saving theme." msgstr "Eroare la salvare." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error Saving" -msgstr "Eroare mutând:" +msgstr "Eroare La Salvarea" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error importing theme." -msgstr "Eroare mutând:" +msgstr "Eroare la importarea temei." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error Importing" -msgstr "Eroare mutând:" +msgstr "Eroare la importare" #: editor/plugins/script_editor_plugin.cpp #, fuzzy @@ -6904,18 +6796,16 @@ msgid "Find Previous" msgstr "" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Filter scripts" -msgstr "Proprietățile obiectului." +msgstr "Filtrare scripturi" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle alphabetical sorting of the method list." msgstr "" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Filter methods" -msgstr "Proprietățile obiectului." +msgstr "Metode de filtrare" #: editor/plugins/script_editor_plugin.cpp msgid "Sort" @@ -6946,9 +6836,8 @@ msgid "File" msgstr "" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Open..." -msgstr "Deschide" +msgstr "Deschide..." #: editor/plugins/script_editor_plugin.cpp #, fuzzy @@ -7033,9 +6922,8 @@ msgid "Debug with External Editor" msgstr "Deschide Editorul următor" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Open Godot online documentation." -msgstr "Deschide Recente" +msgstr "Deschideți documentația online Godot." #: editor/plugins/script_editor_plugin.cpp msgid "Search the reference documentation." @@ -7098,19 +6986,19 @@ msgid "Target" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "" "Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." -msgstr "Deconectați '%s' de la '%s'" +msgstr "" +"Lipsește metoda conectată '%s' pentru semnalul '%s' de la nodul '%s' la " +"nodul '%s'." #: editor/plugins/script_text_editor.cpp msgid "[Ignore]" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Line" -msgstr "Linie:" +msgstr "Linie" #: editor/plugins/script_text_editor.cpp #, fuzzy @@ -7266,14 +7154,12 @@ msgid "Remove All Bookmarks" msgstr "Eliminați Autoload" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." -msgstr "Faceți Funcția" +msgstr "Salt la funcție..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." -msgstr "Duceți-vă la Linie" +msgstr "Salt la linie..." #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -7727,9 +7613,8 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Settings..." -msgstr "Setări Snap" +msgstr "Setări ..." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -7848,9 +7733,8 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to Mesh2D" -msgstr "Convertește În..." +msgstr "Conversie în Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create polygon." @@ -7901,9 +7785,8 @@ msgid "Update Preview" msgstr "Previzualizare" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Settings:" -msgstr "Setări Snap" +msgstr "Setări:" #: editor/plugins/sprite_frames_editor_plugin.cpp #, fuzzy @@ -7919,9 +7802,8 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Unable to load images" -msgstr "Încărcarea resursei a eșuat." +msgstr "Imposibil de încărcat imaginile" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" @@ -7953,9 +7835,8 @@ msgid "Move Frame" msgstr "Mod Mutare" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Animations:" -msgstr "Animație" +msgstr "Animaţii:" #: editor/plugins/sprite_frames_editor_plugin.cpp #, fuzzy @@ -8238,9 +8119,8 @@ msgid "Erase Selection" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Fix Invalid Tiles" -msgstr "Nume nevalid." +msgstr "Remediere Tiles nevalide" #: editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp @@ -8287,9 +8167,8 @@ msgid "Enable Priority" msgstr "Editează Filtrele" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Filter tiles" -msgstr "Filtrează fișierele..." +msgstr "Filtrare Tiles" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Give a TileSet resource to this TileMap to use its tiles." @@ -8337,9 +8216,8 @@ msgid "Add Texture(s) to TileSet." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected Texture from TileSet." -msgstr "Elimină Obiectul Selectat" +msgstr "Eliminați textura selectată din TileSet." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -8380,9 +8258,8 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Region" -msgstr "Modul de Execuție:" +msgstr "Regiunea" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8415,9 +8292,8 @@ msgid "Z Index" msgstr "Mod În Jur" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Region Mode" -msgstr "Modul de Execuție:" +msgstr "Mod regiune" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8459,9 +8335,8 @@ msgid "Copy bitmask." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste bitmask." -msgstr "Lipește Animație" +msgstr "Lipiți bitmask." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8469,9 +8344,8 @@ msgid "Erase bitmask." msgstr "RMB: Șterge Punctul." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create a new rectangle." -msgstr "Creați %s Nou" +msgstr "Creați un dreptunghi nou." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8496,9 +8370,10 @@ msgid "" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture? This will remove all tiles which use it." -msgstr "Elimină Obiectul Selectat" +msgstr "" +"Eliminați textura selectată? Acest lucru va elimina toate tiles care îl " +"utilizează." #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." @@ -8528,9 +8403,8 @@ msgid "" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete selected Rect." -msgstr "Ştergeți fişierele selectate?" +msgstr "Ștergeți Rectul selectat." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -8539,9 +8413,8 @@ msgid "" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete polygon." -msgstr "Șterge puncte" +msgstr "Ștergeți poligonul." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -8589,9 +8462,8 @@ msgid "Edit Tile Bitmask" msgstr "Editează Filtrele" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Collision Polygon" -msgstr "Editează poligonul existent:" +msgstr "Editează coliziunea poligonului" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -8677,9 +8549,8 @@ msgid "This property can't be changed." msgstr "Această operație nu se poate face fără o scenă." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "TileSet" -msgstr "Set_de_Plăci..." +msgstr "Set de dale" #: editor/plugins/version_control_editor_plugin.cpp msgid "No VCS addons are available." @@ -8794,9 +8665,8 @@ msgid "Add Output" msgstr "Adaugă Intrare(Input)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar" -msgstr "Dimensiune:" +msgstr "Scalar" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector" @@ -8830,9 +8700,8 @@ msgid "Change output port type" msgstr "Schimbă tipul implicit" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change input port name" -msgstr "Schimbă Numele Animației:" +msgstr "Modificarea numelui portului de intrare" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Change output port name" @@ -8849,9 +8718,8 @@ msgid "Remove output port" msgstr "Elimină punct" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Set expression" -msgstr "Versiune Curentă:" +msgstr "Setare expresie" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Resize VisualShader node" @@ -8902,9 +8770,8 @@ msgid "Light" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Show resulted shader code." -msgstr "Creează Nod" +msgstr "Afișează codul shader rezultat." #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy @@ -8912,18 +8779,16 @@ msgid "Create Shader Node" msgstr "Creează Nod" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color function." -msgstr "Faceți Funcția" +msgstr "Funcția de culoare." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Grayscale function." -msgstr "Faceți Funcția" +msgstr "Funcția tonuri de gri." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts HSV vector to RGB equivalent." @@ -8934,9 +8799,8 @@ msgid "Converts RGB vector to HSV equivalent." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sepia function." -msgstr "Faceți Funcția" +msgstr "Funcția sepia." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Burn operator." @@ -8947,18 +8811,16 @@ msgid "Darken operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Difference operator." -msgstr "Doar Diferențe" +msgstr "Operator de diferență." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "HardLight operator." -msgstr "Dimensiune (raport):" +msgstr "Operator HardLight." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8977,14 +8839,12 @@ msgid "SoftLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color constant." -msgstr "Permanent" +msgstr "Constantă de culoare." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color uniform." -msgstr "Anim Schimbare transformare" +msgstr "Culoare uniformă." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the boolean result of the %s comparison between two parameters." @@ -9065,9 +8925,8 @@ msgid "'%s' input parameter for all shader modes." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Input parameter." -msgstr "Snap către părinte" +msgstr "Parametru de intrare." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader modes." @@ -9094,14 +8953,12 @@ msgid "'%s' input parameter for vertex and fragment shader mode." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar function." -msgstr "Scalați Selecția" +msgstr "Funcție scalară." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar operator." -msgstr "Dimensiune (raport):" +msgstr "Operator scalar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "E constant (2.718282). Represents the base of the natural logarithm." @@ -9330,9 +9187,8 @@ msgid "Scalar constant." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar uniform." -msgstr "Anim Schimbare transformare" +msgstr "Scalare uniformă." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Perform the cubic texture lookup." @@ -9355,9 +9211,8 @@ msgid "2D texture uniform lookup with triplanar." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform function." -msgstr "Crează Poligon" +msgstr "Funcție de transformare." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9399,19 +9254,16 @@ msgid "Multiplies vector by transform." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform constant." -msgstr "Crează Poligon" +msgstr "Transformare constantă." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform uniform." -msgstr "Crează Poligon" +msgstr "Transformare uniformă." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector function." -msgstr "Faceți Funcția" +msgstr "Funcție vectorială." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector operator." @@ -9622,9 +9474,8 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp -#, fuzzy msgid "Add initial export..." -msgstr "Adaugă Intrare(Input)" +msgstr "Adăugare export inițial..." #: editor/project_export.cpp msgid "Add previous patches..." @@ -9732,9 +9583,8 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp -#, fuzzy msgid "Pack File" -msgstr " Fișiere" +msgstr "Împachetează Fișierul" #: editor/project_export.cpp msgid "Features" @@ -9754,9 +9604,8 @@ msgid "Script" msgstr "Execută Scriptul" #: editor/project_export.cpp -#, fuzzy msgid "Script Export Mode:" -msgstr "Exportă Proiectul" +msgstr "Mod export script:" #: editor/project_export.cpp msgid "Text" @@ -9787,9 +9636,8 @@ msgid "Export Project" msgstr "Exportă Proiectul" #: editor/project_export.cpp -#, fuzzy msgid "Export mode?" -msgstr "Exportă Proiectul" +msgstr "Exportă Proiectul?" #: editor/project_export.cpp #, fuzzy @@ -9797,9 +9645,8 @@ msgid "Export All" msgstr "Exportare" #: editor/project_export.cpp editor/project_manager.cpp -#, fuzzy msgid "ZIP File" -msgstr " Fișiere" +msgstr "Fișiere ZIP" #: editor/project_export.cpp msgid "Godot Game Pack" @@ -10147,18 +9994,16 @@ msgid "" msgstr "" #: editor/project_settings_editor.cpp -#, fuzzy msgid "An action with the name '%s' already exists." -msgstr "EROARE: Numele animației există deja!" +msgstr "Există deja o acțiune cu numele '%s'." #: editor/project_settings_editor.cpp msgid "Rename Input Action Event" msgstr "" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Change Action deadzone" -msgstr "Schimbă Numele Animației:" +msgstr "Modificare acțiune deadzone" #: editor/project_settings_editor.cpp msgid "Add Input Action Event" @@ -10515,9 +10360,8 @@ msgid "Suffix" msgstr "" #: editor/rename_dialog.cpp -#, fuzzy msgid "Use Regular Expressions" -msgstr "Versiune Curentă:" +msgstr "Folosiți expresii regulate" #: editor/rename_dialog.cpp #, fuzzy @@ -10529,23 +10373,20 @@ msgid "Substitute" msgstr "" #: editor/rename_dialog.cpp -#, fuzzy msgid "Node name" -msgstr "Nume Nod:" +msgstr "Nume nod" #: editor/rename_dialog.cpp msgid "Node's parent name, if available" msgstr "" #: editor/rename_dialog.cpp -#, fuzzy msgid "Node type" -msgstr "Nume Nod:" +msgstr "Tip nod" #: editor/rename_dialog.cpp -#, fuzzy msgid "Current scene name" -msgstr "Scena curentă nu este salvată. Deschizi oricum?" +msgstr "Numele scenei curente" #: editor/rename_dialog.cpp #, fuzzy @@ -10571,9 +10412,8 @@ msgid "Initial value for the counter" msgstr "" #: editor/rename_dialog.cpp -#, fuzzy msgid "Step" -msgstr "Pas (s):" +msgstr "Pas" #: editor/rename_dialog.cpp msgid "Amount by which counter is incremented for each node" @@ -10627,9 +10467,8 @@ msgid "Regular Expression Error" msgstr "" #: editor/rename_dialog.cpp -#, fuzzy msgid "At character %s" -msgstr "Caractere valide:" +msgstr "La caracterul %s" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent Node" @@ -10733,8 +10572,12 @@ msgstr "Salvează Scena" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Ștergeți %d noduri?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" -msgstr "Creează Nod" +msgstr "Ștergeți %d noduri?" #: editor/scene_tree_dock.cpp msgid "Delete the root node \"%s\"?" @@ -10745,9 +10588,8 @@ msgid "Delete node \"%s\" and its children?" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete node \"%s\"?" -msgstr "Creează Nod" +msgstr "Ștergeți nodul \"%s\"?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." @@ -10784,9 +10626,8 @@ msgid "New Scene Root" msgstr "Salvează Scena" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Create Root Node:" -msgstr "Creează Nod" +msgstr "Creare nod rădăcină:" #: editor/scene_tree_dock.cpp #, fuzzy @@ -10910,9 +10751,8 @@ msgid "Delete (No Confirm)" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Add/Create a New Node." -msgstr "Creați %s Nou" +msgstr "Adaugă/Creează un Nod nou." #: editor/scene_tree_dock.cpp msgid "" @@ -10985,9 +10825,8 @@ msgid "" msgstr "" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Open Script:" -msgstr "Execută Scriptul" +msgstr "Deschide scriptul:" #: editor/scene_tree_editor.cpp msgid "" @@ -11032,14 +10871,12 @@ msgid "Select a Node" msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Path is empty." -msgstr "Mesh-ul este gol!" +msgstr "Calea este goală." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty." -msgstr "Mesh-ul este gol!" +msgstr "Numele fișierului este gol." #: editor/script_create_dialog.cpp msgid "Path is not local." @@ -11130,9 +10967,8 @@ msgid "Built-in script (into scene file)." msgstr "Operațiuni cu fișiere tip scenă." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Will create a new script file." -msgstr "Creați %s Nou" +msgstr "Va crea un nou fișier script." #: editor/script_create_dialog.cpp #, fuzzy @@ -11140,9 +10976,8 @@ msgid "Will load an existing script file." msgstr "Încărcaţi o Schemă de Pistă Audio existentă." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Script file already exists." -msgstr "AutoLoad '%s' există deja!" +msgstr "Fișierul script există deja." #: editor/script_create_dialog.cpp msgid "" @@ -11156,14 +10991,12 @@ msgid "Class Name:" msgstr "Clasă:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Elimină Șablon" +msgstr "Şablon:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Execută Scriptul" +msgstr "Script încorporat:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -11182,19 +11015,16 @@ msgid "Warning:" msgstr "" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Error:" -msgstr "Eroare!" +msgstr "Eroare:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Error" -msgstr "Eroare!" +msgstr "Eroare C++" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Error:" -msgstr "Eroare!" +msgstr "Eroare C++:" #: editor/script_editor_debugger.cpp #, fuzzy @@ -11202,14 +11032,12 @@ msgid "C++ Source" msgstr "Resursă" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Source:" -msgstr "Resursă" +msgstr "Sursă:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Source:" -msgstr "Resursă" +msgstr "Sursă C++:" #: editor/script_editor_debugger.cpp msgid "Stack Trace" @@ -11220,9 +11048,8 @@ msgid "Errors" msgstr "" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Child process connected." -msgstr "Deconectat" +msgstr "Procesul copilului conectat." #: editor/script_editor_debugger.cpp msgid "Copy Error" @@ -11645,9 +11472,8 @@ msgid "Pick Distance:" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Filter meshes" -msgstr "Proprietățile obiectului." +msgstr "Filtru meshuri" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Give a MeshLibrary resource to this GridMap to use its meshes." @@ -11789,18 +11615,16 @@ msgstr "" "motor tip." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new function." -msgstr "Creați %s Nou" +msgstr "Creați o nouă funcție." #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new variable." -msgstr "Creați %s Nou" +msgstr "Creați o nouă variabilă." #: modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -11938,14 +11762,12 @@ msgid "Disconnect Nodes" msgstr "Deconectat" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Node Data" -msgstr "Conectați la Nod:" +msgstr "Conectare date nod" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Node Sequence" -msgstr "Conectați la Nod:" +msgstr "Conectare secvență nod" #: modules/visual_script/visual_script_editor.cpp msgid "Script already has function '%s'" @@ -12014,18 +11836,16 @@ msgid "Editing Signal:" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Tool:" -msgstr "Creează Oase" +msgstr "Creare Unealta:" #: modules/visual_script/visual_script_editor.cpp msgid "Members:" msgstr "Membri:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Base Type:" -msgstr "Schimbați Tipul %s" +msgstr "Modificare tip bază:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -12033,9 +11853,8 @@ msgid "Add Nodes..." msgstr "Se adaugă %s..." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function..." -msgstr "Faceți Funcția" +msgstr "Adăugare funcție..." #: modules/visual_script/visual_script_editor.cpp msgid "function_name" @@ -12206,9 +12025,8 @@ msgid "Invalid public key for APK expansion." msgstr "" #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid package name:" -msgstr "Nume nevalid." +msgstr "Nume pachet nevalid:" #: platform/android/export/export.cpp msgid "" @@ -12277,9 +12095,8 @@ msgid "App Store Team ID not specified - cannot configure the project." msgstr "" #: platform/iphone/export/export.cpp -#, fuzzy msgid "Invalid Identifier:" -msgstr "Nume nevalid." +msgstr "Identificator nevalid:" #: platform/iphone/export/export.cpp msgid "Required icon is not specified in the preset." @@ -12422,6 +12239,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12743,14 +12566,12 @@ msgid "In node '%s', invalid animation: '%s'." msgstr "" #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Invalid animation: '%s'." -msgstr "EROARE: Nume animație nevalid!" +msgstr "Animație nevalidă: '%s'." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Nothing connected to input '%s' of node '%s'." -msgstr "Deconectați '%s' de la '%s'" +msgstr "Nimic conectat la intrarea '%s' a nodului '%s'." #: scene/animation/animation_tree.cpp msgid "No root AnimationNode for the graph is set." @@ -12890,6 +12711,10 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Scena curentă nu a fost salvată niciodată, salvați-o înainte de rulare." + #~ msgid "Not in resource path." #~ msgstr "Nu în calea de resurse." diff --git a/editor/translations/ru.po b/editor/translations/ru.po index a2e562446d..7b12d8195c 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -9,7 +9,7 @@ # DimOkGamer <dimokgamer@gmail.com>, 2016-2017. # Forest Swamp <sample1989@mail.ru>, 2018. # Igor S <scorched@bk.ru>, 2017. -# ijet <my-ijet@mail.ru>, 2017-2018. +# ijet <my-ijet@mail.ru>, 2017-2018, 2020. # Maxim Kim <habamax@gmail.com>, 2016. # Maxim toby3d Lebedev <mail@toby3d.ru>, 2016. # outbools <drag4e@yandex.ru>, 2017. @@ -78,12 +78,19 @@ # Alex Tern <ternvein@gmail.com>, 2020. # Varion Drakon Neonovich <variondrakon@gmail.com>, 2020. # d2cyb <dmitrydpb@gmail.com>, 2020. +# Алексей Смирнов <tir74@mail.ru>, 2020. +# Calamander <Calamander@yandex.ru>, 2020. +# Terminator <fresh-ter@yandex.com>, 2020. +# Anatoly Kuznetsov <muffinnorth@yandex.ru>, 2020. +# kyanukovich <ianu0001@algonquinlive.com>, 2020. +# Ron788 <ustinov200511@gmail.com>, 2020. +# Daniel <dan.ef1999@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-22 06:40+0000\n" -"Last-Translator: Александр <ol-vin@mail.ru>\n" +"PO-Revision-Date: 2020-08-01 11:14+0000\n" +"Last-Translator: Daniel <dan.ef1999@gmail.com>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" "Language: ru\n" @@ -97,7 +104,7 @@ msgstr "" #: 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 "Неверный тип аргумента для convert(), используйте константы TYPE_*." +msgstr "Неверный параметр типа для convert(), используйте константы TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." @@ -830,9 +837,8 @@ msgid "Method in target node must be specified." msgstr "Метод в целевом узле должен быть указан." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Имя не является допустимым идентификатором:" +msgstr "Имя не является допустимым идентификатором." #: editor/connections_dialog.cpp msgid "" @@ -1893,23 +1899,23 @@ msgstr "Назад" #: editor/editor_file_dialog.cpp msgid "Go Forward" -msgstr "Вперёд" +msgstr "Перейти вперёд" #: editor/editor_file_dialog.cpp msgid "Go Up" -msgstr "Вверх" +msgstr "Подняться" #: editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" -msgstr "Скрыть файлы" +msgstr "Переключение скрытых файлов" #: editor/editor_file_dialog.cpp msgid "Toggle Favorite" -msgstr "Переключить избранное" +msgstr "Избранное" #: editor/editor_file_dialog.cpp msgid "Toggle Mode" -msgstr "Переключить режим отображения" +msgstr "Режим отображения" #: editor/editor_file_dialog.cpp msgid "Focus Path" @@ -1917,11 +1923,11 @@ msgstr "Фокус на пути" #: editor/editor_file_dialog.cpp msgid "Move Favorite Up" -msgstr "Переместить избранное вверх" +msgstr "Поднять избранное" #: editor/editor_file_dialog.cpp msgid "Move Favorite Down" -msgstr "Переместить избранное вниз" +msgstr "Опустить избранное" #: editor/editor_file_dialog.cpp msgid "Go to previous folder." @@ -2400,10 +2406,6 @@ msgid "There is no defined scene to run." msgstr "Нет открытой сцены для запуска." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "Текущая сцена никогда не была сохранена, сохраните её перед запуском." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Не удаётся запустить подпроцесс!" @@ -2829,7 +2831,7 @@ msgstr "Обзор ресурсов-сирот..." #: editor/editor_node.cpp msgid "Quit to Project List" -msgstr "Выйти в список проектов" +msgstr "Выйти к списку проектов" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: editor/project_export.cpp @@ -2945,7 +2947,7 @@ msgstr "Снимки экрана хранятся в папке данных/н #: editor/editor_node.cpp msgid "Toggle Fullscreen" -msgstr "Переключить полноэкранный режим" +msgstr "Включить полноэкранный режим" #: editor/editor_node.cpp msgid "Toggle System Console" @@ -3015,7 +3017,7 @@ msgstr "Запустить проект." #: editor/editor_node.cpp msgid "Play" -msgstr "Воспроизвести" +msgstr "Запустить" #: editor/editor_node.cpp msgid "Pause the scene execution for debugging." @@ -3080,7 +3082,7 @@ msgstr "Инспектор" #: editor/editor_node.cpp msgid "Expand Bottom Panel" -msgstr "Развернуть нижнюю панель" +msgstr "Расширить боковую панель" #: editor/editor_node.cpp msgid "Output" @@ -5459,7 +5461,7 @@ msgstr "Режим перемещения" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Mode" -msgstr "Режим поворота" +msgstr "Режим вращения" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5485,7 +5487,7 @@ msgstr "Режим осмотра" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Ruler Mode" -msgstr "Режим линейки" +msgstr "Режим измерения" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Toggle smart snapping." @@ -5599,11 +5601,11 @@ msgstr "Обзор" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Always Show Grid" -msgstr "Всегда показывать сетку" +msgstr "Всегда отображать сетку" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" -msgstr "Показывать помощники" +msgstr "Показывать помощников" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Rulers" @@ -5611,7 +5613,7 @@ msgstr "Показывать линейки" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "Показывать направляющие" +msgstr "Отображение направляющих" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" @@ -5635,7 +5637,7 @@ msgstr "Кадрировать выбранное" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Preview Canvas Scale" -msgstr "Масштаб при просмотре холста" +msgstr "Просмотреть Canvas Scale" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Translation mask for inserting keys." @@ -5676,7 +5678,7 @@ msgstr "Опции анимационных ключей и поз" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" -msgstr "Вставить ключ (существующие треки)" +msgstr "Вставить ключ (существующие дорожки)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" @@ -5696,7 +5698,7 @@ msgstr "Разделить шаг сетки на 2" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan View" -msgstr "Панорама" +msgstr "Панорамировать вид" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Add %s" @@ -6786,7 +6788,7 @@ msgstr "Найти следующее" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp msgid "Find Previous" -msgstr "Найти предыдущее" +msgstr "Найти предыдущий" #: editor/plugins/script_editor_plugin.cpp msgid "Filter scripts" @@ -6808,13 +6810,13 @@ msgstr "Сортировать" #: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Move Up" -msgstr "Переместить вверх" +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 "Переместить вниз" +msgstr "Двигаться вниз" #: editor/plugins/script_editor_plugin.cpp msgid "Next script" @@ -6834,7 +6836,7 @@ msgstr "Открыть..." #: editor/plugins/script_editor_plugin.cpp msgid "Reopen Closed Script" -msgstr "Открыть ранее закрытый скрипт" +msgstr "Переоткрыть закрытый скрипт" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" @@ -6842,7 +6844,7 @@ msgstr "Сохранить всё" #: editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" -msgstr "Мягко перезагрузить скрипт" +msgstr "Мягкая перезагрузка скрипта" #: editor/plugins/script_editor_plugin.cpp msgid "Copy Script Path" @@ -7023,7 +7025,7 @@ msgstr "нижний регистр" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Capitalize" -msgstr "Прописные" +msgstr "Заглавная буква" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Syntax Highlighter" @@ -7051,7 +7053,7 @@ msgstr "Вырезать" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp msgid "Select All" -msgstr "Выбрать все" +msgstr "Выделить всё" #: editor/plugins/script_text_editor.cpp msgid "Delete Line" @@ -7083,11 +7085,11 @@ msgstr "Развернуть все строки" #: editor/plugins/script_text_editor.cpp msgid "Clone Down" -msgstr "Копировать вниз" +msgstr "Продублировать вниз" #: editor/plugins/script_text_editor.cpp msgid "Complete Symbol" -msgstr "Список автозавершения" +msgstr "Завершить символ" #: editor/plugins/script_text_editor.cpp msgid "Evaluate Selection" @@ -7095,7 +7097,7 @@ msgstr "Вычислить выделенное" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" -msgstr "Удаление пробелов в конце строк" +msgstr "Обрезать замыкающие пробелы" #: editor/plugins/script_text_editor.cpp msgid "Convert Indent to Spaces" @@ -7103,11 +7105,11 @@ msgstr "Преобразовать отступ в пробелы" #: editor/plugins/script_text_editor.cpp msgid "Convert Indent to Tabs" -msgstr "Преобразовать отступ в табуляцию" +msgstr "Преобразовать отступы в табуляторы" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" -msgstr "Автоотступ" +msgstr "Авто-отступ" #: editor/plugins/script_text_editor.cpp msgid "Find in Files..." @@ -7123,11 +7125,11 @@ msgstr "Переключить закладку" #: editor/plugins/script_text_editor.cpp msgid "Go to Next Bookmark" -msgstr "Перейти к следующей закладке" +msgstr "Переход к следующей закладке" #: editor/plugins/script_text_editor.cpp msgid "Go to Previous Bookmark" -msgstr "Перейти к предыдущей закладке" +msgstr "Переход к предыдущей закладке" #: editor/plugins/script_text_editor.cpp msgid "Remove All Bookmarks" @@ -7148,11 +7150,11 @@ msgstr "Точка остановки" #: editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" -msgstr "Удалить все точки остановок" +msgstr "Удалить все точки останова" #: editor/plugins/script_text_editor.cpp msgid "Go to Next Breakpoint" -msgstr "Перейти к следующей точке остановки" +msgstr "Переход к следующей точке останова" #: editor/plugins/script_text_editor.cpp msgid "Go to Previous Breakpoint" @@ -7336,7 +7338,7 @@ msgstr "Зад" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align Transform with View" -msgstr "Выравнять преобразование с областью просмотра" +msgstr "Выровнять трансформации с видом" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align Rotation with View" @@ -7360,7 +7362,7 @@ msgstr "Блокировать вращение камеры" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" -msgstr "Режим нормалей" +msgstr "Нормальный режим" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Wireframe" @@ -7412,11 +7414,11 @@ msgstr "Недоступно при использовании рендерер #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" -msgstr "Обзор налево" +msgstr "Свободный вид, лево" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Right" -msgstr "Обзор направо" +msgstr "Свободный вид, право" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Forward" @@ -7424,23 +7426,23 @@ msgstr "Обзор вперёд" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Backwards" -msgstr "Обзор назад" +msgstr "Свободный вид, назад" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Up" -msgstr "Обзор вверх" +msgstr "Свободный вид, вверх" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Down" -msgstr "Обзор вниз" +msgstr "Свободный вид, вниз" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Speed Modifier" -msgstr "Обзор модификатор скорости" +msgstr "Модификатор скорости свободного вида" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Slow Modifier" -msgstr "Медленный модификатор свободного просмотра" +msgstr "Модификатор замедления свободного вида" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Rotation Locked" @@ -7498,7 +7500,7 @@ msgstr "Использовать локальное пространство" #: editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" -msgstr "Использовать привязку" +msgstr "Использовать привязки" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -7526,7 +7528,7 @@ msgstr "Вид справа" #: editor/plugins/spatial_editor_plugin.cpp msgid "Switch Perspective/Orthogonal View" -msgstr "Переключить перспективный/ортогональный вид" +msgstr "Переключение перспективного/ортогонального вида" #: editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" @@ -7534,7 +7536,7 @@ msgstr "Вставить ключ анимации" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Origin" -msgstr "Фокус на центре" +msgstr "Сфокусироваться на начале координат" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" @@ -7542,7 +7544,7 @@ msgstr "Показать выбранное" #: editor/plugins/spatial_editor_plugin.cpp msgid "Toggle Freelook" -msgstr "Переключить свободный обзор" +msgstr "Включить свободный вид" #: editor/plugins/spatial_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -7551,7 +7553,7 @@ msgstr "Преобразование" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Object to Floor" -msgstr "Привязать объект к полу" +msgstr "Привязка объекта к полу" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." @@ -8105,7 +8107,7 @@ msgstr "Очистить карту тайлов" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Find Tile" -msgstr "Найти плитку" +msgstr "Найти тайл" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Transpose" @@ -8129,7 +8131,7 @@ msgstr "Задайте TileSet ресурс этому Tilemap чтобы исп #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint Tile" -msgstr "Рисовать тайл" +msgstr "Покрасить тайл" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8153,11 +8155,11 @@ msgstr "Повернуть вправо" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip Horizontally" -msgstr "Отразить по горизонтали" +msgstr "Перевернуть по горизонтали" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip Vertically" -msgstr "Отразить по вертикали" +msgstr "Перевернуть по вертикали" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Clear Transform" @@ -8173,11 +8175,11 @@ msgstr "Удалить выбранную текстуру из TileSet." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" -msgstr "Создать из сцены" +msgstr "Создать из Сцены" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from Scene" -msgstr "Слияние из сцены" +msgstr "Слияние из Сцены" #: editor/plugins/tile_set_editor_plugin.cpp msgid "New Single Tile" @@ -9579,7 +9581,7 @@ msgstr "Файл пакета" #: editor/project_export.cpp msgid "Features" -msgstr "Свойства" +msgstr "Возможности" #: editor/project_export.cpp msgid "Custom (comma-separated):" @@ -10373,7 +10375,7 @@ msgstr "Выбрать метод" #: editor/rename_dialog.cpp editor/scene_tree_dock.cpp msgid "Batch Rename" -msgstr "Пакетное переименование" +msgstr "Групповое переименование" #: editor/rename_dialog.cpp msgid "Prefix" @@ -10563,7 +10565,7 @@ msgstr "Добавить дочернюю сцену" #: editor/scene_tree_dock.cpp msgid "Detach Script" -msgstr "Прикрепить скрипт" +msgstr "Открепить скрипт" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." @@ -10600,6 +10602,10 @@ msgid "Make node as Root" msgstr "Сделать узел корневым" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "Удалить узел «%d» и его дочерние элементы?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Удалить %d узлов?" @@ -10768,7 +10774,7 @@ msgstr "Сохранить ветку, как сцену" #: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp msgid "Copy Node Path" -msgstr "Копировать путь" +msgstr "Копировать путь ноды" #: editor/scene_tree_dock.cpp msgid "Delete (No Confirm)" @@ -11885,7 +11891,7 @@ msgstr "Удалить выделенное" #: modules/visual_script/visual_script_editor.cpp msgid "Find Node Type" -msgstr "Найти тип узла" +msgstr "Найти тип нода" #: modules/visual_script/visual_script_editor.cpp msgid "Copy Nodes" @@ -11901,7 +11907,7 @@ msgstr "Сделать функцию" #: modules/visual_script/visual_script_editor.cpp msgid "Refresh Graph" -msgstr "Обновить граф" +msgstr "Обновить график" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -12291,6 +12297,15 @@ msgstr "" "Shape должен быть предусмотрен для функций CollisionShape2D. Пожалуйста, " "создайте shape-ресурс для этого!" +#: 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 "" +"Полигональные фигуры не предназначены для использования или редактирования " +"непосредственно через узел \"CollisionShape2D\". Пожалуйста, используйте " +"вместо этого узел \"CollisionPolygon2D\" ." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12863,6 +12878,10 @@ msgstr "Изменения могут быть назначены только msgid "Constants cannot be modified." msgstr "Константы не могут быть изменены." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Текущая сцена никогда не была сохранена, сохраните её перед запуском." + #~ msgid "Not in resource path." #~ msgstr "Не в пути ресурсов." diff --git a/editor/translations/si.po b/editor/translations/si.po index 141696c00a..c8b0a57cbe 100644 --- a/editor/translations/si.po +++ b/editor/translations/si.po @@ -2273,10 +2273,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10191,6 +10187,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "යතුරු මකා දමන්න" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "යතුරු මකා දමන්න" @@ -11807,6 +11808,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/sk.po b/editor/translations/sk.po index 0920487af3..59cd8da671 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -2321,10 +2321,6 @@ msgid "There is no defined scene to run." msgstr "Nieje definovaná žiadna scéna na spustenie." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "Aktuálna scéna sa nikdy neuložila, prosím uložte ju pred spustením." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Subprocess sa nedá spustiť!" @@ -10493,6 +10489,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Všetky vybrané" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Všetky vybrané" @@ -12171,6 +12172,12 @@ msgstr "" "Musíte nastaviť tvar objektu CollisionShape2D aby fungoval. Prosím, vytvorte " "preň tvarový objekt!" +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12648,6 +12655,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "Aktuálna scéna sa nikdy neuložila, prosím uložte ju pred spustením." + #~ msgid "Not in resource path." #~ msgstr "Nieje v resource path." diff --git a/editor/translations/sl.po b/editor/translations/sl.po index 114dce1e63..c40bc3b40f 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -11,12 +11,13 @@ # Andrej Poženel <andrej.pozenel@outlook.com>, 2019. # Arnold Marko <arnold.marko@gmail.com>, 2019. # Alex <alexrixhardson@gmail.com>, 2019. +# Andrew Poženel <andrej.pozenel@outlook.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-26 03:53+0000\n" -"Last-Translator: Alex <alexrixhardson@gmail.com>\n" +"PO-Revision-Date: 2020-07-15 02:42+0000\n" +"Last-Translator: Andrew Poženel <andrej.pozenel@outlook.com>\n" "Language-Team: Slovenian <https://hosted.weblate.org/projects/godot-engine/" "godot/sl/>\n" "Language: sl\n" @@ -25,22 +26,22 @@ 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 3.9.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "Neveljavna vrsta argumenta za convert(), uporabite TYPE_* konstanto." +msgstr "Neveljavna vrsta argumenta za convert(), uporabite TYPE_* konstante." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "" +msgstr "Pričakovan niz dolžine 1 (znak)." #: 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 "Ni dovolj bajtov za dekodiranje, ali pa format ni ustrezen." +msgstr "Ni dovolj bajtov za dekodiranje, ali pa je neveljaven format." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" @@ -48,7 +49,7 @@ msgstr "Napačen vnos %i(ni podan) v izrazu" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "self ne more biti uporabljen, ker instanca ni null (ni podano)" +msgstr "self ne more biti uporabljen, ker je instanca null (ni podano)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -115,9 +116,8 @@ msgid "Time:" msgstr "Čas:" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Value:" -msgstr "Novo ime:" +msgstr "Vrednost:" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" @@ -132,14 +132,12 @@ msgid "Delete Selected Key(s)" msgstr "Izbriši Izbran/e Ključ/e" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Add Bezier Point" -msgstr "Dodaj točko" +msgstr "Dodaj Bezierjevo točko" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Move Bezier Points" -msgstr "Odstrani točko" +msgstr "Premakni Bezierjevo točko" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" @@ -195,35 +193,33 @@ msgid "Anim Multi Change Call" msgstr "Animacija Spremeni klic" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Length" -msgstr "Spremeni Ime Animacije:" +msgstr "Spremeni dolžino animacije" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "" +msgstr "Spremeni ponavljanje animacije" #: editor/animation_track_editor.cpp msgid "Property Track" -msgstr "" +msgstr "Sled atributa" #: editor/animation_track_editor.cpp -#, fuzzy msgid "3D Transform Track" -msgstr "Preoblikovanje" +msgstr "Sled 3D preoblikovanja" #: editor/animation_track_editor.cpp msgid "Call Method Track" -msgstr "" +msgstr "Sled klica funkcije" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" -msgstr "" +msgstr "Sled Bezierjeve Krivulje" #: editor/animation_track_editor.cpp msgid "Audio Playback Track" -msgstr "" +msgstr "Zvočna Sled" #: editor/animation_track_editor.cpp #, fuzzy @@ -2443,10 +2439,6 @@ msgid "There is no defined scene to run." msgstr "Ni določene scene za zagon." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "Trenutna scena ni bila shranjena, shranite jo pred zagonom." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Nemorem začeti podprocesa!" @@ -10840,6 +10832,11 @@ msgstr "Shrani Prizor" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Izberi Gradnik" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Izberi Gradnik" @@ -12555,6 +12552,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -13039,6 +13042,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstante ni možno spreminjati." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "Trenutna scena ni bila shranjena, shranite jo pred zagonom." + #~ msgid "Not in resource path." #~ msgstr "Ni na poti virov." diff --git a/editor/translations/sq.po b/editor/translations/sq.po index 32d08c7bc9..2df44bdd5b 100644 --- a/editor/translations/sq.po +++ b/editor/translations/sq.po @@ -2372,11 +2372,6 @@ msgid "There is no defined scene to run." msgstr "Nuk ka një skenë të përcaktuar për të filluar." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"Skena aktuale nuk është ruajtur më parë, ju lutem ruajeni para se të filloni." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Nuk mund të fillojë subprocess-in!" @@ -10473,6 +10468,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Fshi Nyjen" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Fshi Nyjen" @@ -12127,6 +12127,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12590,6 +12596,11 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Skena aktuale nuk është ruajtur më parë, ju lutem ruajeni para se të " +#~ "filloni." + #~ msgid "Not in resource path." #~ msgstr "Jo në rrugën e resurseve." diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index 01d8c4ca91..0bb67647f8 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -2549,10 +2549,6 @@ msgid "There is no defined scene to run." msgstr "Не постоји дефинисана сцена за покретање." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "Тренутна сцена није сачувана, молим сачувајте је пре покретања." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Не могу покренути подпроцес!" @@ -11811,6 +11807,11 @@ msgstr "Направи Корен од чвора" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Обриши чвор \"%s\" и његову децу?" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Обриши %d чворове?" @@ -13785,6 +13786,12 @@ msgstr "" "Облик мора бити снабдевен за СударниОблик2Д да би радио. Молимо креирај " "облик ресурс за њега!" +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp #, fuzzy msgid "" @@ -14435,6 +14442,9 @@ msgstr "Варијације могу само бити одређене у фу msgid "Constants cannot be modified." msgstr "Константе није могуће мењати." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "Тренутна сцена није сачувана, молим сачувајте је пре покретања." + #~ msgid "Not in resource path." #~ msgstr "Није на пут ресурса." diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po index fe13877f42..4dece6c33c 100644 --- a/editor/translations/sr_Latn.po +++ b/editor/translations/sr_Latn.po @@ -2287,10 +2287,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10270,6 +10266,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Animacija Obriši Ključeve" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "Animacija Obriši Ključeve" @@ -11895,6 +11896,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/sv.po b/editor/translations/sv.po index ddd0188d5d..d3cda1a61a 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -5,7 +5,7 @@ # bergmarklund <davemcgroin@gmail.com>, 2017, 2018. # Christoffer Sundbom <christoffer_karlsson@live.se>, 2017. # Jakob Sinclair <sinclair.jakob@mailbox.org>, 2018. -# . <grenoscar@gmail.com>, 2018. +# . <grenoscar@gmail.com>, 2018, 2020. # Kristoffer Grundström <kristoffer.grundstrom1983@gmail.com>, 2018. # Magnus Helander <helander@fastmail.net>, 2018. # Daniel K <danielkimblad@hotmail.com>, 2018. @@ -15,12 +15,14 @@ # Anonymous <noreply@weblate.org>, 2020. # Joakim Lundberg <joakim@joakimlundberg.com>, 2020. # Kristoffer Grundström <swedishsailfishosuser@tutanota.com>, 2020. +# Jonas Robertsson <jonas.robertsson@posteo.net>, 2020. +# André Andersson <andre.eric.andersson@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-03 20:09+0000\n" -"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n" +"PO-Revision-Date: 2020-07-15 02:42+0000\n" +"Last-Translator: Jonas Robertsson <jonas.robertsson@posteo.net>\n" "Language-Team: Swedish <https://hosted.weblate.org/projects/godot-engine/" "godot/sv/>\n" "Language: sv\n" @@ -28,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.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -37,14 +39,13 @@ msgstr "Ogiltligt typargument till convert(), använd TYPE_* konstanter." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "Förväntade en sträng med längden 1 (en karaktär)." +msgstr "Förväntas en string av längden 1 (en karaktär)." #: 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 "" -"Inte tillräckligt antal bytes eller ogiltigt format för avkodning av bytes." +msgstr "Inte tillräckligt med bytes för avkodning byte, eller ogiltigt format." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" @@ -152,7 +153,7 @@ msgstr "Anim Ta Bort Nycklar" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Time" -msgstr "Anim Ändra Tid för Nyckebild" +msgstr "Anim Ändra Nyckelbildstid" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" @@ -164,7 +165,7 @@ msgstr "Anim Ändra Transformation" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" -msgstr "Anim Ändra Värde På Nyckelbild" +msgstr "Anim Ändra Värdet På Tidsnyckeln" #: editor/animation_track_editor.cpp msgid "Anim Change Call" @@ -172,7 +173,7 @@ msgstr "Anim Ändra Anrop" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Time" -msgstr "Anim multi-ändring nyckelbildstid" +msgstr "Anim Fler-Ändra Nyckelbildstid" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Transition" @@ -188,7 +189,7 @@ msgstr "Anim Fler-Ändra Nyckelbildsvärde" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Call" -msgstr "Anim Fler-Ändra Anrop" +msgstr "Anim Ändra Anrop" #: editor/animation_track_editor.cpp msgid "Change Animation Length" @@ -229,7 +230,7 @@ msgstr "Animation längd (bildrutor)" #: editor/animation_track_editor.cpp msgid "Animation length (seconds)" -msgstr "Animationslängd (i sekunder)" +msgstr "Animationens längd (sekunder)" #: editor/animation_track_editor.cpp msgid "Add Track" @@ -294,7 +295,7 @@ msgstr "Diskret" #: editor/animation_track_editor.cpp msgid "Trigger" -msgstr "Utlös" +msgstr "Avtryckare" #: editor/animation_track_editor.cpp msgid "Capture" @@ -499,6 +500,15 @@ msgid "" "Alternatively, use an import preset that imports animations to separate " "files." msgstr "" +"Denna animationen tillhör en importerad scen, så ändringar i de importerade " +"spåren kommer inte sparas.\n" +"\n" +"För att aktivera förmågan att lägga till anpassade spår, navigera till " +"scenens importinställningar och ställ in\n" +"\"Animation > Lagring\" till \"Filer\", aktivera \"Animation > Behåll " +"Anpassade Spår\", sedan importera om.\n" +"Alternativt, använd en importförinställning som importerar animationer till " +"separata filer." #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" @@ -514,17 +524,15 @@ msgstr "Visa enbart spår från valda noder i trädet." #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." -msgstr "" +msgstr "Gruppera spår efter noder eller visa dem som enkel lista." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Snap:" -msgstr "Steg (s):" +msgstr "Fäst:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation step value." -msgstr "Animation" +msgstr "Animationens stegvärde." #: editor/animation_track_editor.cpp msgid "Seconds" @@ -545,14 +553,12 @@ msgid "Edit" msgstr "Redigera" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation properties." -msgstr "Animation" +msgstr "Animationens egenskaper." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Copy Tracks" -msgstr "Kopiera Params" +msgstr "Kopiera Spår" #: editor/animation_track_editor.cpp msgid "Scale Selection" @@ -571,19 +577,16 @@ msgid "Duplicate Transposed" msgstr "Fördubbla Transponerade" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Selection" -msgstr "Duplicera urval" +msgstr "Radera Markering" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" -msgstr "Gå Till Nästa Steg" +msgstr "Gå till Nästa Steg" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" -msgstr "Ge Till Föregående Steg" +msgstr "Gå till Föregående Steg" #: editor/animation_track_editor.cpp msgid "Optimize Animation" @@ -591,7 +594,7 @@ msgstr "Optimera Animation" #: editor/animation_track_editor.cpp msgid "Clean-Up Animation" -msgstr "Städa upp Animation" +msgstr "Rensa Animation" #: editor/animation_track_editor.cpp msgid "Pick the node that will be animated:" @@ -646,9 +649,8 @@ msgid "Scale Ratio:" msgstr "Skalnings förhållande:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Ange övergångar:" +msgstr "Välj Spår att Kopiera" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -660,22 +662,20 @@ msgid "Copy" msgstr "Kopiera" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Välj Node" +msgstr "Välj Alla/Inga" #: editor/animation_track_editor_plugins.cpp -#, fuzzy msgid "Add Audio Track Clip" -msgstr "Ljud-Lyssnare" +msgstr "Lägg till Ljudspårsklipp" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip Start Offset" -msgstr "" +msgstr "Byt Ljudspårsklippets Startförskjutning" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip End Offset" -msgstr "" +msgstr "Byt Ljudspårsklippets Slutförskjutning" #: editor/array_property_edit.cpp msgid "Resize Array" @@ -698,18 +698,16 @@ msgid "Line Number:" msgstr "Radnummer:" #: editor/code_editor.cpp -#, fuzzy msgid "%d replaced." -msgstr "Ersätt..." +msgstr "%d ersatt." #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d match." -msgstr "" +msgstr "%d matcha." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d matches." -msgstr "Inga matchningar" +msgstr "%d matchningar." #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" @@ -734,11 +732,11 @@ msgstr "Endast Urval" #: editor/code_editor.cpp editor/plugins/script_text_editor.cpp #: editor/plugins/text_editor.cpp msgid "Standard" -msgstr "" +msgstr "Standard" #: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" -msgstr "" +msgstr "Växla Skriptpanel" #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -757,51 +755,44 @@ msgid "Reset Zoom" msgstr "Återställ Zoom" #: editor/code_editor.cpp -#, fuzzy msgid "Warnings" -msgstr "Varning" +msgstr "Varningar" #: editor/code_editor.cpp msgid "Line and column numbers." -msgstr "" +msgstr "Rad- och Kolumnnummer." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method in target node must be specified." -msgstr "Metod i Mål-Node måste specificeras!" +msgstr "Metod i målnod måste specificeras." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Metod i Mål-Node måste specificeras!" +msgstr "Metodnamn måste vara en giltig identifierare." #: editor/connections_dialog.cpp -#, fuzzy msgid "" "Target method not found. Specify a valid method or attach a script to the " "target node." msgstr "" -"Målmetod hittades inte! Specificera en giltig metod eller koppla ett skript " -"till Mål-Node." +"Målmetod hittades inte. Specificera en giltig metod eller koppla ett skript " +"till målnoden." #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect to Node:" -msgstr "Anslut Till Node:" +msgstr "Anslut till Nod:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect to Script:" -msgstr "Anslut Till Node:" +msgstr "Anslut till Skript:" #: editor/connections_dialog.cpp -#, fuzzy msgid "From Signal:" -msgstr "Signaler:" +msgstr "Från Signal:" #: editor/connections_dialog.cpp msgid "Scene does not contain any script." -msgstr "" +msgstr "Scenen innehåller inte något skript." #: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp #: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp @@ -829,14 +820,12 @@ msgid "Extra Call Arguments:" msgstr "Extra Call Argument:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Receiver Method:" -msgstr "Filtrera noder" +msgstr "Mottagarmetod:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Advanced" -msgstr "Balanserad" +msgstr "Avancerad" #: editor/connections_dialog.cpp msgid "Deferred" @@ -846,6 +835,8 @@ msgstr "Uppskjuten" msgid "" "Defers the signal, storing it in a queue and only firing it at idle time." msgstr "" +"Skjuter upp signalen och sparar den i en kö och avfyrar den endast under " +"vilotid." #: editor/connections_dialog.cpp msgid "Oneshot" @@ -853,12 +844,11 @@ msgstr "Oneshot" #: editor/connections_dialog.cpp msgid "Disconnects the signal after its first emission." -msgstr "" +msgstr "Kopplar av signalen efter sitt första utsläpp." #: editor/connections_dialog.cpp -#, fuzzy msgid "Cannot connect signal" -msgstr "Ansluter Signal:" +msgstr "Kan ej ansluta signal" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/export_template_manager.cpp editor/groups_editor.cpp @@ -879,23 +869,20 @@ msgid "Connect" msgstr "Anslut" #: editor/connections_dialog.cpp -#, fuzzy msgid "Signal:" -msgstr "Signaler:" +msgstr "Signal:" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" msgstr "Anslut '%s' till '%s'" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "Anslut '%s' till '%s'" +msgstr "Koppla av '%s' från '%s'" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect all from signal: '%s'" -msgstr "Anslut '%s' till '%s'" +msgstr "Koppla av alla från signal: '%s'" #: editor/connections_dialog.cpp msgid "Connect..." @@ -907,18 +894,16 @@ msgid "Disconnect" msgstr "Koppla från" #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect a Signal to a Method" -msgstr "Ansluter Signal:" +msgstr "Anslut en Signal till en Metod" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit Connection:" -msgstr "Anslutningsfel" +msgstr "Redigera Koppling:" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "" +msgstr "Är du säker att du vill ta bort alla kopplingar från \"%s\" signalen?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -926,36 +911,31 @@ msgstr "Signaler" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" -msgstr "" +msgstr "Är du säker att du vill ta bort alla kopplingar från denna signal?" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect All" -msgstr "Koppla från" +msgstr "Koppla av alla" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit..." -msgstr "Redigera" +msgstr "Ändra..." #: editor/connections_dialog.cpp -#, fuzzy msgid "Go To Method" -msgstr "Metoder" +msgstr "Gå Till Metod" #: editor/create_dialog.cpp -#, fuzzy msgid "Change %s Type" -msgstr "Ändra Typ" +msgstr "Ändra %s Typ" #: editor/create_dialog.cpp editor/project_settings_editor.cpp msgid "Change" msgstr "Ändra" #: editor/create_dialog.cpp -#, fuzzy msgid "Create New %s" -msgstr "Skapa Ny" +msgstr "Skapa Ny %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -995,22 +975,20 @@ msgid "Dependencies For:" msgstr "Beroenden För:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Scene '%s' is currently being edited.\n" "Changes will only take effect when reloaded." msgstr "" "Scen '%s' håller på att redigeras.\n" -"Ändringarna börjar inte gälla förrän omladdning." +"Ändringar börjar inte gälla förrän omladdning." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Resource '%s' is in use.\n" "Changes will only take effect when reloaded." msgstr "" "Resurs '%s' är i användning.\n" -"Ändringarna börjar gälla när den laddas om." +"Ändringar börjar endast gälla efter omladdning." #: editor/dependency_editor.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -1057,9 +1035,8 @@ msgid "Owners Of:" msgstr "Ägare av:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Remove selected files from the project? (Can't be restored)" -msgstr "Ta bort valda filer från projektet? (går inte ångra)" +msgstr "Ta bort valda filer från projektet? (Kan ej återställas)" #: editor/dependency_editor.cpp msgid "" @@ -1071,9 +1048,8 @@ msgstr "" "Ta bort dem ändå? (går inte ångra)" #: editor/dependency_editor.cpp -#, fuzzy msgid "Cannot remove:" -msgstr "Kan inte ta bort:\n" +msgstr "Kan inte ta bort:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -1154,9 +1130,8 @@ msgid "Lead Developer" msgstr "Ledande utvecklare" #: editor/editor_about.cpp -#, fuzzy msgid "Project Manager " -msgstr "Projektledare" +msgstr "Projekthanterare " #: editor/editor_about.cpp msgid "Developers" @@ -1199,12 +1174,10 @@ msgid "License" msgstr "Licens" #: editor/editor_about.cpp -#, fuzzy msgid "Third-party Licenses" msgstr "Tredje parts Licens" #: editor/editor_about.cpp -#, fuzzy 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 " @@ -1229,14 +1202,12 @@ msgid "Licenses" msgstr "Licenser" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Error opening package file, not in ZIP format." -msgstr "Fel vid öppning av paketetfil, inte i zip-format." +msgstr "Fel vid öppning av paketfil, är inte ZIP-format." #: editor/editor_asset_installer.cpp -#, fuzzy msgid "%s (Already Exists)" -msgstr "Autoload '%s' finns redan!" +msgstr "%s (Existerar Redan)" #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" @@ -1244,15 +1215,13 @@ msgstr "Dekomprimerar Tillgångar" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "The following files failed extraction from package:" -msgstr "" +msgstr "Följande filer gick inte att packa upp från tillägget:" #: editor/editor_asset_installer.cpp -#, fuzzy msgid "And %s more files." -msgstr "%d fler filer" +msgstr "%d fler filer." #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Package installed successfully!" msgstr "Paketet installerades!" @@ -1397,7 +1366,7 @@ msgstr "Öppna Ljud-Buss Layout" #: editor/editor_audio_buses.cpp msgid "There is no '%s' file." -msgstr "" +msgstr "Det finns ingen '%s' fil." #: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp msgid "Layout" @@ -1408,9 +1377,8 @@ msgid "Invalid file, not an audio bus layout." msgstr "Ogiltig fil, inte en Ljud-Buss Layout." #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Error saving file: %s" -msgstr "Fel vid sparande av TileSet!" +msgstr "Fel vid sparande av fil: %s" #: editor/editor_audio_buses.cpp msgid "Add Bus" @@ -1478,7 +1446,7 @@ msgstr "" #: editor/editor_autoload_settings.cpp msgid "Keyword cannot be used as an autoload name." -msgstr "" +msgstr "Nyckelord kan inte användas som ett autoladdningsnamn." #: editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" @@ -1510,7 +1478,7 @@ msgstr "Ändra ordning på Autoloads" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "" +msgstr "Kunde inte lägga till autoladdning:" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -1561,7 +1529,7 @@ msgstr "(tom)" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "[osparad]" +msgstr "[inte sparad]" #: editor/editor_dir_dialog.cpp #, fuzzy @@ -1600,7 +1568,7 @@ msgstr "Lagrar Fil:" #: editor/editor_export.cpp msgid "No export template found at the expected path:" -msgstr "" +msgstr "Ingen exportmall hittades vid den förväntade sökvägen:" #: editor/editor_export.cpp msgid "Packing" @@ -1611,12 +1579,16 @@ msgid "" "Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " "Etc' in Project Settings." msgstr "" +"Målplattformen kräver 'ETC' texturkomprimering för GLES2. Aktivera 'Import " +"Etc' i Projektinställningarna." #: editor/editor_export.cpp msgid "" "Target platform requires 'ETC2' texture compression for GLES3. Enable " "'Import Etc 2' in Project Settings." msgstr "" +"Målplattformen kräver 'ETC2' texturkomprimering för GLES3. Aktivera 'Import " +"Etc 2' i Projektinställningarna." #: editor/editor_export.cpp msgid "" @@ -1629,9 +1601,8 @@ msgstr "" #: 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 -#, fuzzy msgid "Custom debug template not found." -msgstr "Mallfil hittades inte:\n" +msgstr "Mallfil hittades inte:" #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -1640,9 +1611,8 @@ msgid "Custom release template not found." msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -#, fuzzy msgid "Template file not found:" -msgstr "Mallfil hittades inte:\n" +msgstr "Mallfil hittades inte:" #: editor/editor_export.cpp msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." @@ -2425,10 +2395,6 @@ msgid "There is no defined scene to run." msgstr "Det finns ingen definierad scen att köra." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "Nuvarande scen har aldrig sparats, vänligen spara den innan körning." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Kunde inte starta underprocess!" @@ -2805,9 +2771,8 @@ msgid "Convert To..." msgstr "Konvertera Till..." #: editor/editor_node.cpp -#, fuzzy msgid "MeshLibrary..." -msgstr "MeshLibrary..." +msgstr "MeshBibliotek..." #: editor/editor_node.cpp #, fuzzy @@ -2965,9 +2930,8 @@ msgid "Editor Layout" msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Take Screenshot" -msgstr "Vettigt!" +msgstr "Ta Skärmdump" #: editor/editor_node.cpp msgid "Screenshots are stored in the Editor Data/Settings Folder." @@ -3213,9 +3177,8 @@ msgid "Open the previous Editor" msgstr "" #: editor/editor_node.h -#, fuzzy msgid "Warning!" -msgstr "Varning" +msgstr "Varning!" #: editor/editor_path.cpp #, fuzzy @@ -3942,14 +3905,12 @@ msgid "Cancel" msgstr "Avbryt" #: editor/find_in_files.cpp -#, fuzzy msgid "Find: " -msgstr "Hitta" +msgstr "Hitta:" #: editor/find_in_files.cpp -#, fuzzy msgid "Replace: " -msgstr "Ersätt" +msgstr "Ersätt:" #: editor/find_in_files.cpp #, fuzzy @@ -3975,9 +3936,8 @@ msgid "Remove from Group" msgstr "Ta bort från Grupp" #: editor/groups_editor.cpp -#, fuzzy msgid "Group name already exists." -msgstr "ERROR: Animationsnamn finns redan!" +msgstr "Gruppnamn existerar redan." #: editor/groups_editor.cpp #, fuzzy @@ -4417,9 +4377,8 @@ msgid "Open Animation Node" msgstr "Animations-Node" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Triangle already exists." -msgstr "ERROR: Animationsnamn finns redan!" +msgstr "Triangel existerar redan." #: editor/plugins/animation_blend_space_2d_editor.cpp #, fuzzy @@ -4650,14 +4609,12 @@ msgid "Duplicate Animation" msgstr "Duplicera Animation" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "No animation to copy!" -msgstr "Animation zoom." +msgstr "Ingen animation finns att kopiera!" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "No animation resource on clipboard!" -msgstr "Inte i resursens sökväg." +msgstr "Ingen animationsresurs i urklipp!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" @@ -4668,9 +4625,8 @@ msgid "Paste Animation" msgstr "Klistra in Animation" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "No animation to edit!" -msgstr "Animations-Node" +msgstr "Ingen animation finns att redigera!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" @@ -4706,7 +4662,7 @@ msgstr "Animeringsverktyg" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation" -msgstr "Animering" +msgstr "Animation" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy @@ -4815,9 +4771,8 @@ msgid "Move Node" msgstr "Flytta Nod(er)" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition exists!" -msgstr "Övergång" +msgstr "Övergång existerar!" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy @@ -4903,9 +4858,8 @@ msgid "Set the end animation. This is useful for sub-transitions." msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition: " -msgstr "Övergång" +msgstr "Övergång:" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy @@ -7881,9 +7835,8 @@ msgid "LightOccluder2D Preview" msgstr "Skapa Mapp" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Sprite is empty!" -msgstr "Sökvägen är tom" +msgstr "Spriten är tom!" #: editor/plugins/sprite_editor_plugin.cpp msgid "Can't convert a sprite using animation frames to mesh." @@ -10184,9 +10137,8 @@ msgid "" msgstr "" #: editor/project_settings_editor.cpp -#, fuzzy msgid "An action with the name '%s' already exists." -msgstr "ERROR: Animationsnamn finns redan!" +msgstr "En process med namnet '%s' existerar redan." #: editor/project_settings_editor.cpp msgid "Rename Input Action Event" @@ -10768,9 +10720,13 @@ msgid "Instantiated scenes can't become root" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make node as Root" -msgstr "Vettigt!" +msgstr "Gör nod som Rot" + +#: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Ta bort Nod(er)" #: editor/scene_tree_dock.cpp #, fuzzy @@ -10821,9 +10777,8 @@ msgid "Make Local" msgstr "Gör Patch" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "New Scene Root" -msgstr "Vettigt!" +msgstr "Ny Scenrot" #: editor/scene_tree_dock.cpp #, fuzzy @@ -10932,9 +10887,8 @@ msgid "Reparent to New Node" msgstr "Byt Förälder-Node" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make Scene Root" -msgstr "Vettigt!" +msgstr "Skapa Scenrot" #: editor/scene_tree_dock.cpp msgid "Merge From Scene" @@ -11188,9 +11142,8 @@ msgid "Will load an existing script file." msgstr "Ladda in befintlig Skript-fil" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Script file already exists." -msgstr "Autoload '%s' finns redan!" +msgstr "Skriptfil existerar redan." #: editor/script_create_dialog.cpp msgid "" @@ -12349,9 +12302,8 @@ msgid "Run exported HTML in the system's default browser." msgstr "Kör exporterad HTML i systemets standardwebbläsare." #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not write file:" -msgstr "Kunde inte skriva till filen:\n" +msgstr "Kunde inte skriva till filen:" #: platform/javascript/export/export.cpp #, fuzzy @@ -12367,9 +12319,8 @@ msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not read boot splash image file:" -msgstr "Kunde inte skriva till filen:\n" +msgstr "Kunde inte skriva till filen:" #: platform/javascript/export/export.cpp msgid "Using default boot splash image." @@ -12482,6 +12433,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12824,9 +12781,8 @@ msgid "In node '%s', invalid animation: '%s'." msgstr "" #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Invalid animation: '%s'." -msgstr "ERROR: Ogiltigt animationsnamn!" +msgstr "Ogiltig animation: '%s'." #: scene/animation/animation_tree.cpp #, fuzzy @@ -12974,6 +12930,10 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Nuvarande scen har aldrig sparats, vänligen spara den innan körning." + #~ msgid "Not in resource path." #~ msgstr "Inte i resursens sökväg." diff --git a/editor/translations/ta.po b/editor/translations/ta.po index 8f161acfc9..01cbcc1881 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -2275,10 +2275,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10187,6 +10183,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "அனைத்து தேர்வுகள்" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "அனைத்து தேர்வுகள்" @@ -11801,6 +11802,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/te.po b/editor/translations/te.po index 87fb947dd0..3523306b0d 100644 --- a/editor/translations/te.po +++ b/editor/translations/te.po @@ -2251,10 +2251,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10116,6 +10112,10 @@ 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 "" @@ -11717,6 +11717,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/th.po b/editor/translations/th.po index 3af6fde5a0..279f8c08ba 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -2290,10 +2290,6 @@ msgid "There is no defined scene to run." msgstr "ยังไม่ได้เลือกฉากที่จะเล่น" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "ฉากปัจจุบันยังไม่ได้บันทึก กรุณาบันทึกก่อนเริ่มโปรแกรม" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "ไม่สามารถเริ่มขั้นตอนย่อย!" @@ -10508,6 +10504,11 @@ msgid "Make node as Root" msgstr "ทำโหนดให้เป็นโหนดแม่" #: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "ลบโหนด \"%s\" และโหนดลูก?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "ลบโหนด %d ?" @@ -12168,6 +12169,12 @@ msgid "" "shape resource for it!" msgstr "ต้องมีรูปทรงเพื่อให้ CollisionShape2D ทำงานได้ กรุณาสร้างรูปทรง!" +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12689,6 +12696,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "ค่าคงที่ไม่สามารถแก้ไขได้" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "ฉากปัจจุบันยังไม่ได้บันทึก กรุณาบันทึกก่อนเริ่มโปรแกรม" + #~ msgid "Not in resource path." #~ msgstr "ไม่อยู่ในโฟลเดอร์รีซอร์ส" diff --git a/editor/translations/tr.po b/editor/translations/tr.po index 27886e1d4d..edc01421d2 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -47,12 +47,15 @@ # Anonymous <noreply@weblate.org>, 2020. # Güneş Gümüş <gunes.gumus.001@gmail.com>, 2020. # Oğuz Ersen <oguzersen@protonmail.com>, 2020. +# Vedat Günel <gunel15@itu.edu.tr>, 2020. +# Ahmet Elgün <ahmetelgn@gmail.com>, 2020. +# Efruz Yıldırır <efruzyildirir@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-05-22 21:01+0000\n" -"Last-Translator: Güneş Gümüş <gunes.gumus.001@gmail.com>\n" +"PO-Revision-Date: 2020-07-06 04:41+0000\n" +"Last-Translator: Efruz Yıldırır <efruzyildirir@gmail.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/" "godot/tr/>\n" "Language: tr\n" @@ -60,7 +63,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -798,9 +801,8 @@ msgid "Method in target node must be specified." msgstr "Hedef düğümdeki metod tanımlanmalı." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "Ad doğru bir belirleyici değil:" +msgstr "Metod ismi geçerli bir tanımlayıcı değil." #: editor/connections_dialog.cpp msgid "" @@ -1497,7 +1499,7 @@ msgstr "KendindenYüklenme'leri Yeniden Sırala" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "" +msgstr "Otomatik yükleme eklenemiyor:" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -2364,10 +2366,6 @@ msgid "There is no defined scene to run." msgstr "Çalıştırmak için herhangi bir sahne seçilmedi." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "Şimdiki sahne hiç kaydedilmedi, lütfen çalıştırmadan önce kaydediniz." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Alt işlem başlatılamadı!" @@ -2452,15 +2450,16 @@ msgid "Can't reload a scene that was never saved." msgstr "Hiç kaydedilmemiş bir sahne yeniden yüklenemiyor." #: editor/editor_node.cpp -#, fuzzy msgid "Reload Saved Scene" -msgstr "Sahne Kaydet" +msgstr "Kaydedilmiş Sahneyi Yeniden Yükle" #: editor/editor_node.cpp msgid "" "The current scene has unsaved changes.\n" "Reload the saved scene anyway? This action cannot be undone." msgstr "" +"Mevcut sahnede kaydedilmemiş değişiklikler var.\n" +"Sahne yine de yeniden yüklensin mi? Bu işlem geri alınamaz." #: editor/editor_node.cpp msgid "Quick Run Scene..." @@ -3395,11 +3394,10 @@ msgid "Did you forget the '_run' method?" msgstr "'_run()' metodunu unuttunuz mu?" #: editor/editor_spin_slider.cpp -#, fuzzy msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes." msgstr "" -"Alıcı bırakmak için Ctrl'e basılı tutun. Genel imza bırakmak için Shift'e " -"basılı tutun." +"Tamsayılara yuvarlamak için Ctrl tuşunu basılı tutun. Hassas değişiklikler " +"için Shift tuşunu basılı tutun." #: editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" @@ -4000,7 +3998,7 @@ msgstr "sonradan-içe aktarılmış betik çalıştırılırken hata:" #: editor/import/resource_importer_scene.cpp msgid "Did you return a Node-derived object in the `post_import()` method?" -msgstr "" +msgstr "`Post_import ()` yönteminde Node türevi bir nesne döndürdünüz mü?" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -4024,7 +4022,7 @@ msgstr "Şu Şekilde İçe Aktar:" #: editor/import_dock.cpp msgid "Preset" -msgstr "Önayar" +msgstr "Ön ayar" #: editor/import_dock.cpp msgid "Reimport" @@ -4037,7 +4035,7 @@ msgstr "Sahneleri kaydet, tekrar içe aktar ve baştan başlat" #: editor/import_dock.cpp msgid "Changing the type of an imported file requires editor restart." msgstr "" -"İçe aktarılmış dosyanın tipini değiştirmek editörü baştan başlatılmasını " +"İçe aktarılmış dosyanın tipini değiştirmek editörü yeniden başlatmanı " "gerektiriyor." #: editor/import_dock.cpp @@ -6947,9 +6945,8 @@ msgstr "" "'%s' düğümünden '%s' düğümüne, '%s' sinyali için '%s' bağlantı metodu eksik." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "[Ignore]" -msgstr "(gözardı et)" +msgstr "[Gözardı et]" #: editor/plugins/script_text_editor.cpp msgid "Line" @@ -10558,6 +10555,11 @@ msgid "Make node as Root" msgstr "Düğümü Kök düğüm yap" #: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "\"%s\" düğümü ve alt düğümleri silinsin mi?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "%d düğümleri silelim mi?" @@ -12009,6 +12011,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Use Custom Build\" must be enabled to use the plugins." msgstr "" +"Eklentileri kullanabilmek için \"Özel Derleme Kullan\" seçeneği aktif olmalı." #: platform/android/export/export.cpp msgid "" @@ -12234,6 +12237,12 @@ msgstr "" "CollisionShape2D'nin işlevini yerine getirmesi için ona bir şekil sağlanması " "gerekmektedir. Lütfen onun için bir şekil kaynağı oluşturun!" +#: 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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12808,6 +12817,10 @@ msgstr "varyings yalnızca vertex işlevinde atanabilir." msgid "Constants cannot be modified." msgstr "Sabit değerler değiştirilemez." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Şimdiki sahne hiç kaydedilmedi, lütfen çalıştırmadan önce kaydediniz." + #~ msgid "Not in resource path." #~ msgstr "Kaynak yolunda değil." diff --git a/editor/translations/uk.po b/editor/translations/uk.po index 03990a655e..f7386bf72d 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -14,11 +14,12 @@ # Богдан Матвіїв <bomtvv@gmail.com>, 2019. # Tymofij Lytvynenko <till.svit@gmail.com>, 2020. # Vladislav Glinsky <cl0ne@mithril.org.ua>, 2020. +# Микола Тимошенко <9081@ukr.net>, 2020. msgid "" msgstr "" "Project-Id-Version: Ukrainian (Godot Engine)\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" +"PO-Revision-Date: 2020-08-04 06:43+0000\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/" "godot/uk/>\n" @@ -2342,11 +2343,6 @@ msgid "There is no defined scene to run." msgstr "Немає визначеної сцени для виконання." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" -"Поточна сцена ніколи не була збережена, будь ласка, збережіть її до запуску." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Не вдалося запустити підпроцес!" @@ -10569,6 +10565,10 @@ msgid "Make node as Root" msgstr "Зробити вузол кореневим" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "Вилучити %d вузлів та усі їхні дочірні записи?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Вилучити %d вузлів?" @@ -12015,7 +12015,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." -msgstr "Неокректний відкритий ключ для розгортання APK." +msgstr "Некоректний відкритий ключ для розгортання APK." #: platform/android/export/export.cpp msgid "Invalid package name:" @@ -12275,6 +12275,15 @@ msgstr "" "Для забезпечення працездатності CollisionShape2D слід надати форму. Будь " "ласка, створіть ресурс форми для цього елемента!" +#: 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 "" +"Засновані на багатокутниках форми не призначено для використання або " +"редагування з вузла CollisionShape2D. Будь ласка, скористайтеся замість " +"нього вузлом CollisionPolygon2D." + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12854,6 +12863,11 @@ msgstr "Змінні величини можна пов'язувати лише msgid "Constants cannot be modified." msgstr "Сталі не можна змінювати." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "" +#~ "Поточна сцена ніколи не була збережена, будь ласка, збережіть її до " +#~ "запуску." + #~ msgid "Not in resource path." #~ msgstr "Не в ресурсному шляху." diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index 6985cbdc39..4f4dccd8bb 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -2296,10 +2296,6 @@ msgid "There is no defined scene to run." msgstr "" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10359,6 +10355,11 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو" @@ -12011,6 +12012,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/vi.po b/editor/translations/vi.po index ff214a7091..bd52b850e4 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -12,12 +12,16 @@ # Steve Dang <itsnguu@outlook.com>, 2019, 2020. # Peter Anh <peteranh3105@gmail.com>, 2019. # Dũng Đinh <dqdthanhthanh@gmail.com>, 2019. +# Steve Dang <bynguu@outlook.com>, 2020. +# Harry Mitchell <minhyh0987@gmail.com>, 2020. +# HSGamer <huynhqtienvtag@gmail.com>, 2020. +# LetterC67 <hoangdeptoong@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-02-02 08:51+0000\n" -"Last-Translator: Steve Dang <itsnguu@outlook.com>\n" +"PO-Revision-Date: 2020-08-11 14:04+0000\n" +"Last-Translator: LetterC67 <hoangdeptoong@gmail.com>\n" "Language-Team: Vietnamese <https://hosted.weblate.org/projects/godot-engine/" "godot/vi/>\n" "Language: vi\n" @@ -25,16 +29,16 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "Hàm convert() có đối số không hợp lệ, sử dụng các hằng TYPE_*." +msgstr "Hàm convert() có loại đối số không hợp lệ, sử dụng các hằng TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "" +msgstr "Mong đợi một chuỗi có độ dài 01 ký tự." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp @@ -72,31 +76,31 @@ msgstr "Khi cuộc gọi đến '%s':" #: core/ustring.cpp msgid "B" -msgstr "" +msgstr "B" #: core/ustring.cpp msgid "KiB" -msgstr "" +msgstr "KiB" #: core/ustring.cpp msgid "MiB" -msgstr "" +msgstr "MiB" #: core/ustring.cpp msgid "GiB" -msgstr "" +msgstr "GiB" #: core/ustring.cpp msgid "TiB" -msgstr "" +msgstr "TiB" #: core/ustring.cpp msgid "PiB" -msgstr "" +msgstr "PiB" #: core/ustring.cpp msgid "EiB" -msgstr "" +msgstr "EiB" #: editor/animation_bezier_editor.cpp msgid "Free" @@ -120,7 +124,7 @@ msgstr "Giá trị:" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" -msgstr "Thêm Khoá Tại Đây" +msgstr "Chèn Khóa Tại Đây" #: editor/animation_bezier_editor.cpp msgid "Duplicate Selected Key(s)" @@ -136,23 +140,23 @@ msgstr "Thêm điểm Bezier" #: editor/animation_bezier_editor.cpp msgid "Move Bezier Points" -msgstr "Di chuyển điểm Bezier" +msgstr "Di chuyển các điểm Bezier" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "Nhân đôi Các Key của Animation" +msgstr "Nhân đôi các Animation Key" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" -msgstr "Xóa phím Anim" +msgstr "Xóa các Animation Key" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Time" -msgstr "Đổi thời gian khung hình" +msgstr "Đổi thời gian khung hình Animation" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" -msgstr "Đổi Transition Animation" +msgstr "Đổi Animation Chuyển tiếp" #: editor/animation_track_editor.cpp msgid "Anim Change Transform" @@ -160,7 +164,7 @@ msgstr "Đổi Transform Animation" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" -msgstr "Đổi giá trị khung hình" +msgstr "Đổi giá trị khung hình Animation" #: editor/animation_track_editor.cpp msgid "Anim Change Call" @@ -1118,7 +1122,7 @@ msgstr "Đóng góp vào Godot Engine" #: editor/editor_about.cpp msgid "Project Founders" -msgstr "Sáng lập dự án" +msgstr "Các đồng sáng lập dự án" #: editor/editor_about.cpp msgid "Lead Developer" @@ -1126,7 +1130,7 @@ msgstr "Phát triển chính" #: editor/editor_about.cpp msgid "Project Manager " -msgstr "Quản lí dự án " +msgstr "Quản lí Dự án " #: editor/editor_about.cpp msgid "Developers" @@ -1567,12 +1571,16 @@ msgid "" "Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " "Etc' in Project Settings." msgstr "" +"Nền tảng yêu cầu dùng kiểu nén 'ETC' cho GLES2. Bật 'Nhập ETC' trong Cài đặt " +"Dự án." #: editor/editor_export.cpp msgid "" "Target platform requires 'ETC2' texture compression for GLES3. Enable " "'Import Etc 2' in Project Settings." msgstr "" +"Nền tảng yêu cầu dùng kiểu nén 'ETC2' cho GLES3. Bật 'Nhập ETC2' trong Cài " +"đặt Dự án." #: editor/editor_export.cpp msgid "" @@ -1581,6 +1589,9 @@ msgid "" "Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback " "Enabled'." msgstr "" +"Nền tảng yêu cầu kiểu nén 'ETC' cho trình điều khiển dự phòng GLES2.\n" +"Chọn kích hoạt 'Nhập ETC' trong Cài đặt Dự án, hoặc chọn tắt 'Kích hoạt " +"Trình điều khiển Dự phòng'." #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -2340,10 +2351,6 @@ msgid "There is no defined scene to run." msgstr "Không có cảnh được xác định để chạy." #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "Cảnh hiện tại chưa được lưu, hãy lưu nó trước khi chạy." - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "Không thể bắt đầu quá trình nhỏ!" @@ -2452,7 +2459,7 @@ msgstr "Thoát trình biên tập?" #: editor/editor_node.cpp msgid "Open Project Manager?" -msgstr "Mở Quản lý dự án?" +msgstr "Mở Quản lý Dự án?" #: editor/editor_node.cpp msgid "Save & Quit" @@ -2464,7 +2471,7 @@ msgstr "Lưu thay đổi trong các scene sau trước khi thoát?" #: editor/editor_node.cpp msgid "Save changes the following scene(s) before opening Project Manager?" -msgstr "Lưu thay đổi trong các scene sau trước khi mở Project Manager?" +msgstr "Lưu thay đổi trong các cảnh sau trước khi mở Quản lí Dự án?" #: editor/editor_node.cpp msgid "" @@ -2527,7 +2534,7 @@ 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 "" -"Lỗi nạp cảnh, nó phải trong đường dẫn dự án. Sử dụng 'Nhập vào' để mở cảnh, " +"Lỗi nạp cảnh, nó phải trong đường dẫn dự án. Sử dụng 'Nhập' để mở các cảnh, " "sau đó lưu lại trong đường dẫn dự án." #: editor/editor_node.cpp @@ -2554,7 +2561,7 @@ msgid "" "category." msgstr "" "Cảnh đã chọn '%s' không tồn tại, chọn một cảnh hợp lệ?\n" -"Bạn có thể thay đổi nó sau trong \"Cài đặt dự án\", nằm trong mục 'ứng dụng'." +"Bạn có thể thay đổi nó sau trong \"Cài đặt Dự án\", nằm trong mục 'ứng dụng'." #: editor/editor_node.cpp msgid "" @@ -2562,8 +2569,8 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" -"Chọn '%s' không phải một tệp cảnh, chọn tệp cảnh hợp lệ?\n" -"Bạn có thể thay đổi nó sau trong \"Cài đặt dự án\", nằm trong mục 'ứng dụng'." +"'%s' không phải một tệp phân cảnh, chọn tệp phân cảnh hợp lệ?\n" +"Bạn có thể thay đổi nó sau trong \"Cài đặt Dự án\", nằm trong mục 'ứng dụng'." #: editor/editor_node.cpp msgid "Save Layout" @@ -2717,17 +2724,16 @@ msgstr "Làm lại" #: editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." -msgstr "" +msgstr "Linh tinh dự án hoặc công cụ toàn phân cảnh." #: editor/editor_node.cpp editor/project_manager.cpp #: editor/script_create_dialog.cpp msgid "Project" -msgstr "Dự án" +msgstr "Dự Án" #: editor/editor_node.cpp -#, fuzzy msgid "Project Settings..." -msgstr "List Project" +msgstr "Cài đặt Dự Án" #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp #, fuzzy @@ -2754,7 +2760,7 @@ msgstr "Cài đặt mẫu xây dựng Android" #: editor/editor_node.cpp msgid "Open Project Data Folder" -msgstr "Mở thư mục dữ liệu dự án" +msgstr "Mở Thư mục dữ liệu của Dự Án" #: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp msgid "Tools" @@ -2767,7 +2773,7 @@ msgstr "Lưu tài nguyên thành ..." #: editor/editor_node.cpp msgid "Quit to Project List" -msgstr "Thoát danh sách dự án" +msgstr "Thoát khỏi Danh sách Dự án" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: editor/project_export.cpp @@ -2799,6 +2805,11 @@ msgid "" "On Android, deploy will use the USB cable for faster performance. This " "option speeds up testing for games with a large footprint." msgstr "" +"Khi tuỳ chọn này được bật, lúc xuất hoặc triển khai sẽ tạo một tệp thực thi " +"tối giản nhất.\n" +"Hệ thống tệp tin sẽ được cung cấp từ dự án bởi trình soạn thảo qua mạng.\n" +"Trên nền tảng Android, triển khai sẽ sử dụng cáp USB để có hiệu suất nhanh " +"hơn. Tuỳ chọn này tăng tốc độ khi thử nghiệm cho các trò chơi nặng." #: editor/editor_node.cpp msgid "Visible Collision Shapes" @@ -2893,9 +2904,8 @@ msgid "Manage Editor Features..." msgstr "Quản lý tính năng Trình biên tập" #: editor/editor_node.cpp -#, fuzzy msgid "Manage Export Templates..." -msgstr "Quản lý mẫu Xuất ra" +msgstr "Quản lý Các Mẫu Xuất Bản ..." #: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp msgid "Help" @@ -3005,7 +3015,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Inspector" -msgstr "Quản lý đối tượng" +msgstr "Quan Sát Viên" #: editor/editor_node.cpp msgid "Expand Bottom Panel" @@ -3022,10 +3032,11 @@ msgstr "Không Lưu" #: editor/editor_node.cpp msgid "Android build template is missing, please install relevant templates." msgstr "" +"Mẫu xuất bản cho Android bị thiếu, vui lòng cài các mẫu xuất bản liên quan." #: editor/editor_node.cpp msgid "Manage Templates" -msgstr "Quản lý Mẫu" +msgstr "Quản lý Mẫu xuất bản" #: editor/editor_node.cpp msgid "" @@ -3037,6 +3048,12 @@ msgid "" "the \"Use Custom Build\" option should be enabled in the Android export " "preset." msgstr "" +"Điều này sẽ thiết lập dự án của bạn cho các bản dựng Android tùy chỉnh bằng " +"cách cài đặt nguồn mẫu thành \"res://android/build\".\n" +"Bạn có thể áp dụng các sửa đổi và xây dựng APK tùy chỉnh khi xuất (thêm các " +"mô-đun, thay đổi AndroidManifest.xml, ...).\n" +"Lưu ý rằng để tạo các bản dựng tùy chỉnh, tùy chọn \"Sử dụng Bản dựng Tùy " +"chỉnh\" phải được BẬT trong Cài đặt xuất Android." #: editor/editor_node.cpp msgid "" @@ -3045,15 +3062,17 @@ msgid "" "Remove the \"res://android/build\" directory manually before attempting this " "operation again." msgstr "" +"Mẫu bản dựng cho Android đã được cài đặt trong dự án này sẽ không bị ghi " +"đè.\n" +"Xóa thủ công thư mục \"res://android/build\" trước khi thử lại thao tác này." #: editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "Nhập mẫu vào từ tệp nén ZIP" +msgstr "Nạp các mẫu xuất bản bằng tệp ZIP" #: editor/editor_node.cpp -#, fuzzy msgid "Template Package" -msgstr "Khung project" +msgstr "Gói Ví Dụ" #: editor/editor_node.cpp msgid "Export Library" @@ -3382,7 +3401,7 @@ msgstr "Tải" #: editor/export_template_manager.cpp msgid "Official export templates aren't available for development builds." -msgstr "" +msgstr "Các mẫu xuất bản chính thức không có sẵn cho các bản dựng phát triển." #: editor/export_template_manager.cpp msgid "(Missing)" @@ -3402,23 +3421,23 @@ msgstr "Xóa template phiên bản '%s'?" #: editor/export_template_manager.cpp msgid "Can't open export templates zip." -msgstr "" +msgstr "Không thể mở tệp zip các mẫu xuất bản." #: editor/export_template_manager.cpp msgid "Invalid version.txt format inside templates: %s." -msgstr "" +msgstr "Định dạng version.txt không hợp lệ bên trong các mẫu xuất bản: %s." #: editor/export_template_manager.cpp msgid "No version.txt found inside templates." -msgstr "Không thấy version.txt trong templates." +msgstr "Không thấy version.txt trong các mẫu xuất bản." #: editor/export_template_manager.cpp msgid "Error creating path for templates:" -msgstr "" +msgstr "Lỗi tạo đường dẫn đến các mẫu xuất bản:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" -msgstr "" +msgstr "Trích xuất các Mẫu xuất bản" #: editor/export_template_manager.cpp msgid "Importing:" @@ -3480,6 +3499,8 @@ msgid "" "Templates installation failed.\n" "The problematic templates archives can be found at '%s'." msgstr "" +"Cài đặt các mẫu xuất bản thất bại.\n" +"Các lưu trữ mẫu xuất bản có vấn đề có thể được tìm thấy tại '%s'." #: editor/export_template_manager.cpp #, fuzzy @@ -3558,9 +3579,8 @@ msgid "Select Template File" msgstr "Chọn file template" #: editor/export_template_manager.cpp -#, fuzzy msgid "Godot Export Templates" -msgstr "Quản lý mẫu Xuất ra" +msgstr "Các mẫu xuất bản Godot" #: editor/export_template_manager.cpp msgid "Export Template Manager" @@ -3568,7 +3588,7 @@ msgstr "" #: editor/export_template_manager.cpp msgid "Download Templates" -msgstr "Tải các Mẫu" +msgstr "Tải Xuống Các Mẫu Xuất Bản" #: editor/export_template_manager.cpp msgid "Select mirror from list: (Shift+Click: Open in Browser)" @@ -3780,8 +3800,8 @@ msgid "" "Include the files with the following extensions. Add or remove them in " "ProjectSettings." msgstr "" -"Bao gồm các tệp tin với các phần mở rộng sau. Thêm hoặc loại bỏ chúng trong " -"Cài đặt Dự án." +"Bao gồm các tệp tin với các phần mở rộng. Thêm hoặc loại bỏ chúng trong Cài " +"đặt Dự án." #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -9412,6 +9432,8 @@ msgid "" "Failed to export the project for platform '%s'.\n" "Export templates seem to be missing or invalid." msgstr "" +"Không thể xuất bản dự án cho nền tảng '%s'.\n" +"Mẫu xuất bản dường như bị thiếu hoặc không hợp lệ." #: editor/project_export.cpp msgid "" @@ -9419,6 +9441,9 @@ msgid "" "This might be due to a configuration issue in the export preset or your " "export settings." msgstr "" +"Không thể xuất dự án cho nền tảng '%s'.\n" +"Có thể là do vấn đề cấu hình trong cài đặt xuất bản hoặc cài đặt xuất bản " +"của bạn." #: editor/project_export.cpp msgid "Release" @@ -9434,7 +9459,7 @@ msgstr "" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted:" -msgstr "" +msgstr "Các mẫu xuất bản cho nền tảng này bị thiếu/hỏng:" #: editor/project_export.cpp msgid "Presets" @@ -9461,7 +9486,7 @@ msgstr "" #: editor/project_export.cpp msgid "Export all resources in the project" -msgstr "" +msgstr "Xuất ra tất cả tài nguyên dùng trong dự án" #: editor/project_export.cpp msgid "Export selected scenes (and dependencies)" @@ -9490,6 +9515,8 @@ msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" +"Bộ lọc loại trừ các tệp tin/thư mục khỏi từ dự án\n" +"(phân tách bằng dấu phẩy, ví dụ: *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9551,7 +9578,7 @@ msgstr "" #: editor/project_export.cpp msgid "Export Project" -msgstr "Xuất dự án ra" +msgstr "Xuất bản Dự án" #: editor/project_export.cpp msgid "Export mode?" @@ -9573,11 +9600,11 @@ msgstr "" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" -msgstr "" +msgstr "Các mẫu xuất bản cho nền tảng này bị thiếu:" #: editor/project_export.cpp msgid "Manage Export Templates" -msgstr "Quản lý mẫu Xuất ra" +msgstr "Quản Lý Các Mẫu Xuất Bản" #: editor/project_export.cpp msgid "Export With Debug" @@ -9597,6 +9624,7 @@ msgstr "Lỗi không thể mở gói, không phải dạng nén." msgid "" "Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file." msgstr "" +"Tệp dự án \".zip\" không hợp lệ; trong nó không chứa tệp \"project.godot\"." #: editor/project_manager.cpp msgid "Please choose an empty folder." @@ -9604,24 +9632,23 @@ msgstr "" #: editor/project_manager.cpp msgid "Please choose a \"project.godot\" or \".zip\" file." -msgstr "" +msgstr "Chọn tệp \"project.godot\" hoặc tệp \".zip\"." #: editor/project_manager.cpp msgid "This directory already contains a Godot project." -msgstr "" +msgstr "Thư mục này đã chứa một dự án Godot." #: editor/project_manager.cpp msgid "New Game Project" -msgstr "" +msgstr "Dự án Trò chơi Mới" #: editor/project_manager.cpp msgid "Imported Project" -msgstr "" +msgstr "Đã nạp Dự án" #: editor/project_manager.cpp -#, fuzzy msgid "Invalid Project Name." -msgstr "Kích thước font không hợp lệ." +msgstr "Tên dự án không hợp lệ." #: editor/project_manager.cpp msgid "Couldn't create folder." @@ -9633,33 +9660,35 @@ msgstr "" #: editor/project_manager.cpp msgid "It would be a good idea to name your project." -msgstr "" +msgstr "Nó là một ý tưởng tuyệt để đặt tên cho dự án của bạn." #: editor/project_manager.cpp msgid "Invalid project path (changed anything?)." -msgstr "" +msgstr "Đường dẫn dự án không hợp lệ (bạn có thay đổi điều gì?)." #: editor/project_manager.cpp msgid "" "Couldn't load project.godot in project path (error %d). It may be missing or " "corrupted." msgstr "" +"Không thể nạp 'project.godot' trong đường dẫn dự án (lỗi %d). Nó có thể bị " +"thiếu hoặc đã hỏng." #: editor/project_manager.cpp msgid "Couldn't edit project.godot in project path." -msgstr "" +msgstr "Không thể chỉnh sửa 'project.godot' trong đường dẫn dự án." #: editor/project_manager.cpp msgid "Couldn't create project.godot in project path." -msgstr "" +msgstr "Không thể tạo 'project.godot' trong đường dẫn dự án." #: editor/project_manager.cpp msgid "Rename Project" -msgstr "" +msgstr "Đổi tên Dự án" #: editor/project_manager.cpp msgid "Import Existing Project" -msgstr "" +msgstr "Nạp Dự án có sẵn" #: editor/project_manager.cpp msgid "Import & Edit" @@ -9667,7 +9696,7 @@ msgstr "" #: editor/project_manager.cpp msgid "Create New Project" -msgstr "" +msgstr "Tạo mới Dự án" #: editor/project_manager.cpp msgid "Create & Edit" @@ -9675,7 +9704,7 @@ msgstr "Tạo & Sửa" #: editor/project_manager.cpp msgid "Install Project:" -msgstr "" +msgstr "Cài đặt Dự án:" #: editor/project_manager.cpp msgid "Install & Edit" @@ -9683,15 +9712,15 @@ msgstr "" #: editor/project_manager.cpp msgid "Project Name:" -msgstr "" +msgstr "Tên Dự án:" #: editor/project_manager.cpp msgid "Project Path:" -msgstr "" +msgstr "Đường dẫn Dự án:" #: editor/project_manager.cpp msgid "Project Installation Path:" -msgstr "" +msgstr "Đường dẫn cài đặt Dự án:" #: editor/project_manager.cpp msgid "Renderer:" @@ -9727,25 +9756,23 @@ msgstr "" #: editor/project_manager.cpp msgid "Unnamed Project" -msgstr "" +msgstr "Dự án không tên" #: editor/project_manager.cpp -#, fuzzy msgid "Missing Project" -msgstr "Dự án" +msgstr "Dự án bị lỗi" #: editor/project_manager.cpp msgid "Error: Project is missing on the filesystem." -msgstr "" +msgstr "Lỗi: Dự án bị thiếu trên hệ thống tệp tin." #: editor/project_manager.cpp -#, fuzzy msgid "Can't open project at '%s'." -msgstr "Không thể chạy project" +msgstr "Không thể mở dự án tại '%s'." #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" -msgstr "" +msgstr "Bạn chắc chắn mở nhiều hơn một dự án?" #: editor/project_manager.cpp msgid "" @@ -9759,6 +9786,13 @@ msgid "" "Warning: You won't be able to open the project with previous versions of the " "engine anymore." msgstr "" +"Tệp dự án không chỉ định phiên bản Godot mà nó được tạo.\n" +"\n" +"%s\n" +"\n" +"Nếu bạn vẫn tiến hành mở dự án, tệp dự án sẽ được chuyển đổi sang cấu hình " +"Godot hiện tại.\n" +"Cảnh báo: Bạn sẽ không thể mở dự án với các phiên bản cũ của Godot nữa." #: editor/project_manager.cpp msgid "" @@ -9771,12 +9805,21 @@ msgid "" "Warning: You won't be able to open the project with previous versions of the " "engine anymore." msgstr "" +"Tệp dự án được tạo bởi phiên bản Godot cũ và cần được chuyển đổi cho phiên " +"bản này:\n" +"\n" +"%s\n" +"\n" +"Bạn có muốn chuyển đổi nó?\n" +"Cảnh báo: Bạn sẽ không thể mở dự án với các phiên bản Godot cũ nữa." #: editor/project_manager.cpp msgid "" "The project settings were created by a newer engine version, whose settings " "are not compatible with this version." msgstr "" +"Các cài đặt dự án đã được tạo bởi phiên bản Godot mới, có các cài đặt không " +"tương thích với phiên bản này." #: editor/project_manager.cpp msgid "" @@ -9784,53 +9827,67 @@ msgid "" "Please edit the project and set the main scene in the Project Settings under " "the \"Application\" category." msgstr "" +"Không thể chạy dự án: chưa chọn phân cảnh chính.\n" +"Để chọn phân cảnh chính, mở \"Cài đặt Dự án\" sau đó vào mục \"Ứng dụng\"." #: 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 "" +"Không thể chạy dự án: Các tài sản chưa được nạp.\n" +"Vui lòng thiết lập dự án để kích hoạt nạp tài sản ban đầu." #: editor/project_manager.cpp msgid "Are you sure to run %d projects at once?" -msgstr "" +msgstr "Bạn có chắc chắn chạy các dự án %d cùng lúc?" #: editor/project_manager.cpp msgid "" "Remove %d projects from the list?\n" "The project folders' contents won't be modified." msgstr "" +"Gỡ các dự án %d khỏi danh sách?\n" +"Nội dung các thư mục dự án sẽ không được sửa đổi." #: editor/project_manager.cpp msgid "" "Remove this project from the list?\n" "The project folder's contents won't be modified." msgstr "" +"Gỡ dự án này khỏi danh sách?\n" +"Nội dung của thư mục dự án sẽ không được sửa đổi." #: editor/project_manager.cpp msgid "" "Remove all missing projects from the list?\n" "The project folders' contents won't be modified." msgstr "" +"Gỡ tất cả dự án bị hỏng khỏi danh sách?\n" +"Nội dung các thư mục dự án sẽ không bị sửa đổi." #: editor/project_manager.cpp msgid "" "Language changed.\n" "The interface will update after restarting the editor or project manager." msgstr "" +"Đã thay đổi ngôn ngữ.\n" +"Giao diện sẽ cập nhật sau khi khởi động lại trình biên tập hoặc trình quản " +"lí dự án." #: editor/project_manager.cpp msgid "" "Are you sure to scan %s folders for existing Godot projects?\n" "This could take a while." msgstr "" +"Bạn có chắc chắn quét các thư mục %s để tìm các dự án Godot có sẵn?\n" +"Điều này sẽ mất chút thời gian." #: editor/project_manager.cpp msgid "Project Manager" -msgstr "" +msgstr "Trình quản lý Dự án" #: editor/project_manager.cpp -#, fuzzy msgid "Projects" msgstr "Dự án" @@ -9848,7 +9905,7 @@ msgstr "Chọn một Folder để Quét" #: editor/project_manager.cpp msgid "New Project" -msgstr "Tạo Project" +msgstr "Tạo Dự Án" #: editor/project_manager.cpp #, fuzzy @@ -9857,7 +9914,7 @@ msgstr "Xóa Animation" #: editor/project_manager.cpp msgid "Templates" -msgstr "Khung project" +msgstr "Thư Viện" #: editor/project_manager.cpp msgid "Restart Now" @@ -9865,16 +9922,15 @@ msgstr "Restart ngay" #: editor/project_manager.cpp msgid "Can't run project" -msgstr "Không thể chạy project" +msgstr "Không thể chạy dự án" #: editor/project_manager.cpp -#, fuzzy msgid "" "You currently don't have any projects.\n" "Would you like to explore official example projects in the Asset Library?" msgstr "" -"Hiện giờ bạn không có project nào.\n" -"Bạn có muốn xem các project official ví dụ trên Asset Library không?" +"Hiện tại bạn không có bất kỳ dự án nào.\n" +"Bạn có muốn xem qua các dự án ví dụ trên Thư Viện không?" #: editor/project_manager.cpp msgid "" @@ -9882,6 +9938,9 @@ msgid "" "To filter projects by name and full path, the query must contain at least " "one `/` character." msgstr "" +"Hộp tìm kiếm lọc các dự án theo tên và phần cuối đường dẫn.\n" +"Để lọc các dự án theo tên và đường dẫn đầy đủ, truy vấn phải chứa ít nhất " +"một ký tự '/'." #: editor/project_settings_editor.cpp msgid "Key " @@ -10107,7 +10166,7 @@ msgstr "" #: editor/project_settings_editor.cpp msgid "Project Settings (project.godot)" -msgstr "" +msgstr "Cài đặt Dự án (project.godot)" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "General" @@ -10488,6 +10547,11 @@ msgid "Make node as Root" msgstr "Gán nút là nút Gốc" #: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "Xoá nút \"%s\" và các nút con của nó?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "Xoá %d nút?" @@ -10906,9 +10970,8 @@ msgid "Class Name:" msgstr "Lớp:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Khung project" +msgstr "Bản mẫu:" #: editor/script_create_dialog.cpp #, fuzzy @@ -11941,6 +12004,8 @@ msgid "" "Android build template not installed in the project. Install it from the " "Project menu." msgstr "" +"Mẫu xuất bản cho Android chưa được cài đặt trong dự án. Cài đặt nó từ menu " +"Dự Án." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -11982,6 +12047,8 @@ msgid "" "Trying to build from a custom built template, but no version info for it " "exists. Please reinstall from the 'Project' menu." msgstr "" +"Cố gắng xây dựng từ một mẫu xuất bản tùy chỉnh, nhưng không có thông tin " +"phiên bản nào tồn tại. Vui lòng cài đặt lại từ menu 'Dự án'." #: platform/android/export/export.cpp msgid "" @@ -11990,16 +12057,22 @@ msgid "" " Godot Version: %s\n" "Please reinstall Android build template from 'Project' menu." msgstr "" +"Phiên bản xây dựng Android không khớp:\n" +" Mẫu xuất bản được cài đặt: %s\n" +" Phiên bản Godot sử dụng: %s\n" +"Vui lòng cài đặt lại mẫu xuất bản Android từ menu 'Dự Án'." #: platform/android/export/export.cpp msgid "Building Android Project (gradle)" -msgstr "" +msgstr "Đang dựng dự án 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 "" +"Xây dựng dự án Android không thành công, kiểm tra lỗi đầu ra.\n" +"Hoặc truy cập 'docs.godotengine.org' xem tài liệu xây dựng Android." #: platform/android/export/export.cpp msgid "No build apk generated at: " @@ -12015,7 +12088,7 @@ msgstr "" #: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." -msgstr "" +msgstr "App Store Team ID không được chỉ định - không thể cấu hình dự án." #: platform/iphone/export/export.cpp #, fuzzy @@ -12163,6 +12236,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12521,7 +12600,7 @@ msgstr "" #: scene/gui/color_picker.cpp msgid "Pick a color from the editor window." -msgstr "" +msgstr "Chọn một màu từ cửa sổ biên tập" #: scene/gui/color_picker.cpp msgid "HSV" @@ -12591,6 +12670,8 @@ msgid "" "Default Environment as specified in Project Settings (Rendering -> " "Environment -> Default Environment) could not be loaded." msgstr "" +"Environment mặc định được chỉ định trong Cài đặt Dự án (Rendering -> " +"Environment -> Default Environment) không thể nạp được." #: scene/main/viewport.cpp msgid "" @@ -12633,6 +12714,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Không thể chỉnh sửa hằng số." +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "Cảnh hiện tại chưa được lưu, hãy lưu nó trước khi chạy." + #, fuzzy #~ msgid "Revert" #~ msgstr "Trở lại" diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index f9dc64aea2..f35da2476c 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -3,7 +3,7 @@ # Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # 360119124 <360119124@qq.com>, 2018. -# 柠檬杀手 <lemonkiller@gmail.com>, 2018. +# 柠檬杀手 <lemonkiller@gmail.com>, 2018, 2020. # 纯洁的坏蛋 <tqj.zyy@gmail.com>, 2016. # 孤月蓝风 <trlanfeng@foxmail.com>, 2016. # 吴亮弟 <wu@liangdi.me>, 2017. @@ -34,7 +34,7 @@ # 刘庆文 <liuqingwen@163.com>, 2018. # Haowen Liu <liu.haowen.andy@gmail.com>, 2018. # tangdou1 <1093505442@qq.com>, 2018, 2019. -# yzt <834950797@qq.com>, 2018, 2019. +# yzt <834950797@qq.com>, 2018, 2019, 2020. # DKLost <514dklost@gmail.com>, 2018. # thanksshu <hezihanshangyuan@gmail.com>, 2018. # Jsheng <yangea@outlook.com>, 2019. @@ -66,12 +66,16 @@ # Tim Bao <honiebao@gmail.com>, 2020. # UnluckyNinja <unluckyninja1994@gmail.com>, 2020. # 无双流 <1257678024@qq.com>, 2020. +# ZhangXinyu <zhang2xinyu@outlook.com>, 2020. +# Silence Tai <silence.m@hotmail.com>, 2020. +# MintSoda <lionlxh@qq.com>, 2020. +# Gardner Belgrade <hapenia@sina.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2020-06-25 08:40+0000\n" -"Last-Translator: UnluckyNinja <unluckyninja1994@gmail.com>\n" +"PO-Revision-Date: 2020-08-11 14:04+0000\n" +"Last-Translator: Gardner Belgrade <hapenia@sina.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hans/>\n" "Language: zh_CN\n" @@ -84,7 +88,7 @@ msgstr "" #: 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 "convert()的参数类型无效,请使用TYPE_*常量。" +msgstr "convert() 的参数类型无效,请使用 TYPE_* 常量。" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." @@ -98,7 +102,7 @@ msgstr "没有足够的字节来解码,或格式无效。" #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "表达式中包含得%i无效(未传递)" +msgstr "表达式中包含的%i无效(未传递)" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -2008,7 +2012,7 @@ msgstr "属性说明" #: editor/editor_help.cpp msgid "(value)" -msgstr "(值)" +msgstr "(值)" #: editor/editor_help.cpp msgid "" @@ -2348,10 +2352,6 @@ msgid "There is no defined scene to run." msgstr "没有设置要执行的场景。" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "当前场景尚未保存,请保存后再尝试执行。" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "无法启动子进程!" @@ -2635,15 +2635,15 @@ msgstr "面板位置" #: editor/editor_node.cpp msgid "Distraction Free Mode" -msgstr "无干扰模式" +msgstr "专注模式" #: editor/editor_node.cpp msgid "Toggle distraction-free mode." -msgstr "切换无干扰模式。" +msgstr "切换专注模式。" #: editor/editor_node.cpp msgid "Add a new scene." -msgstr "添加新场景。" +msgstr "添加场景。" #: editor/editor_node.cpp msgid "Scene" @@ -2659,11 +2659,11 @@ msgstr "复制文本" #: editor/editor_node.cpp msgid "Next tab" -msgstr "下一个标签页" +msgstr "下一标签" #: editor/editor_node.cpp msgid "Previous tab" -msgstr "上一个标签" +msgstr "上一标签" #: editor/editor_node.cpp msgid "Filter Files..." @@ -3758,7 +3758,7 @@ msgstr "创建脚本" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp msgid "Find in Files" -msgstr "在文件中查找" +msgstr "跨文件查找" #: editor/find_in_files.cpp msgid "Find:" @@ -5319,7 +5319,7 @@ msgstr "重置缩放" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Select Mode" -msgstr "选择模式" +msgstr "鼠标模式" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -6953,7 +6953,7 @@ msgstr "取消折叠所有行" #: editor/plugins/script_text_editor.cpp msgid "Clone Down" -msgstr "拷贝到下一行" +msgstr "复制到下一行" #: editor/plugins/script_text_editor.cpp msgid "Complete Symbol" @@ -7370,7 +7370,7 @@ msgstr "使用吸附" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" -msgstr "仰视图。" +msgstr "仰视图" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View" @@ -9803,7 +9803,7 @@ msgid "" "one `/` character." msgstr "" "搜索框根据名称和路径的末尾部分来过滤项目。\n" -"如果要根据名称和完整路径过滤,搜索内容应至少包含一个“/”字符。" +"如果要根据名称和完整路径过滤,搜索内容应至少包含一个 `/` 字符。" #: editor/project_settings_editor.cpp msgid "Key " @@ -10401,6 +10401,10 @@ msgid "Make node as Root" msgstr "将节点设置为根节点" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "是否删除节点“%s”及其子节点?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "是否删除%d个节点?" @@ -11677,7 +11681,7 @@ msgstr "生成函数" #: modules/visual_script/visual_script_editor.cpp msgid "Refresh Graph" -msgstr "刷新图" +msgstr "刷新节点" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -12040,6 +12044,14 @@ msgid "" "shape resource for it!" msgstr "形状资源必须是通过CollisionShape2D节点的shape属性创建的!" +#: 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 "" +"基于多边形的形状不应该被 CollisionShape2D 节点直接使用或编辑。请使用 " +"CollisionPolygon2D 节点。" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12249,7 +12261,7 @@ msgstr "平面形状无法正常工作,未来版本将被删除。请勿使用 #: scene/3d/collision_shape.cpp msgid "" "ConcavePolygonShape doesn't support RigidBody in another mode than static." -msgstr "ConcavePolygonShape仅支持静态RigidBody。" +msgstr "ConcavePolygonShape 只支持静态模式下的 RigidBody。" #: scene/3d/cpu_particles.cpp msgid "Nothing is visible because no mesh has been assigned." @@ -12320,7 +12332,7 @@ msgid "" "PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its " "parent Path's Curve resource." msgstr "" -"PathFollow的ROTATION_ORIENTED要求在其父路径的Curve资源中启用“向上矢量”。" +"PathFollow 的 ROTATION_ORIENTED 要求在其父路径的 Curve 资源中启用“向上矢量”。" #: scene/3d/physics_body.cpp msgid "" @@ -12558,6 +12570,9 @@ msgstr "变量只能在顶点函数中指定。" msgid "Constants cannot be modified." msgstr "不允许修改常量。" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "当前场景尚未保存,请保存后再尝试执行。" + #~ msgid "Not in resource path." #~ msgstr "不在资源路径下。" diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po index 90c85892f6..d4e1bf62dd 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -2406,10 +2406,6 @@ msgid "There is no defined scene to run." msgstr "沒有可以已定義的場景可以運行。" #: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "" - -#: editor/editor_node.cpp msgid "Could not start subprocess!" msgstr "" @@ -10813,6 +10809,11 @@ msgstr "儲存場景" #: editor/scene_tree_dock.cpp #, fuzzy +msgid "Delete %d nodes and any children?" +msgstr "删除root node \"%s\"?" + +#: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete %d nodes?" msgstr "不選" @@ -12533,6 +12534,12 @@ msgid "" "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 "" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po index 129a3fdad4..51efdfd2b8 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -24,12 +24,13 @@ # Allen H. <w84miracle@gmail.com>, 2020. # BinotaLIU <binota@protonmail.ch>, 2020. # BinotaLIU <me@binota.org>, 2020. +# MintSoda <lionlxh@qq.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-06-22 06:40+0000\n" -"Last-Translator: BinotaLIU <me@binota.org>\n" +"PO-Revision-Date: 2020-07-31 03:47+0000\n" +"Last-Translator: MintSoda <lionlxh@qq.com>\n" "Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hant/>\n" "Language: zh_TW\n" @@ -52,7 +53,7 @@ msgstr "應為一個長度為 1(一個字元)的字串。" #: 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 "欲解碼的位元組不足或格式無效。" +msgstr "位元組長度不足以進行解碼或或格式無效。" #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" @@ -196,7 +197,7 @@ msgstr "更改多個動畫的關鍵畫格數值" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Call" -msgstr "更改多個動畫的回調" +msgstr "更改多個動畫的呼叫" #: editor/animation_track_editor.cpp msgid "Change Animation Length" @@ -302,7 +303,7 @@ msgstr "不連續" #: editor/animation_track_editor.cpp msgid "Trigger" -msgstr "觸發器" +msgstr "觸發程序" #: editor/animation_track_editor.cpp msgid "Capture" @@ -408,7 +409,7 @@ msgstr "重新排列軌道" #: editor/animation_track_editor.cpp msgid "Transform tracks only apply to Spatial-based nodes." -msgstr "變形軌只能套用至 Spatial 節點。" +msgstr "變形軌僅可套用至 Spatial 節點。" #: editor/animation_track_editor.cpp msgid "" @@ -417,18 +418,18 @@ msgid "" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" msgstr "" -"音訊軌只能指向以下類型的節點:\n" +"音訊軌僅可指向以下類型節點:\n" "-AudioStreamPlayer\n" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" #: editor/animation_track_editor.cpp msgid "Animation tracks can only point to AnimationPlayer nodes." -msgstr "動畫軌只能指向 AnimationPlayer 節點。" +msgstr "動畫軌僅可指向 AnimationPlayer 節點。" #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." -msgstr "動畫 Player 無法播放自己,只能播放其他 Player。" +msgstr "動畫 Player 無法播放自己,僅可播放其他 Player。" #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" @@ -460,7 +461,7 @@ msgstr "添加軌道關鍵畫格" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a method key." -msgstr "無效的軌道路徑,無法新增方法關鍵畫格。" +msgstr "無效軌道路徑,無法新增方法關鍵畫格。" #: editor/animation_track_editor.cpp msgid "Add Method Track Key" @@ -503,11 +504,12 @@ msgid "" "Alternatively, use an import preset that imports animations to separate " "files." msgstr "" -"這個動畫是由外部匯入之場景提供,套用於匯入軌道的修改將不會被保存。\n" +"該動畫屬於外部匯入之場景,套用於匯入軌道的修改將不會被保存。\n" "\n" -"若要開啟「加入客制軌」的功能,請在場景在匯入設定中將「動畫 -> 儲存」設定為\n" -"「檔案」,並啟用「動畫 -> 保存客制軌」,然後重新匯入。\n" -"或者也可使用會將動畫匯入獨立檔案的匯入 Preset。" +"若要開啟「加入客制軌」的功能,請在場景在匯入設定中將 [Animation] -> " +"[Storage] 設定為\n" +"[Files],並啟用 [Animation] -> [Keep Custom Tracks],然後重新匯入。\n" +"另可使用會將動畫匯入獨立檔案的匯入預設設定。" #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" @@ -597,7 +599,7 @@ msgstr "清除動畫" #: editor/animation_track_editor.cpp msgid "Pick the node that will be animated:" -msgstr "選擇要設定動畫的節點:" +msgstr "選擇欲設定動畫之節點:" #: editor/animation_track_editor.cpp msgid "Use Bezier Curves" @@ -698,7 +700,7 @@ msgstr "行號:" #: editor/code_editor.cpp msgid "%d replaced." -msgstr "已取代了 %d 件。" +msgstr "已取代 %d 件。" #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d match." @@ -714,7 +716,7 @@ msgstr "區分大小寫" #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Whole Words" -msgstr "搜尋完整單字" +msgstr "搜尋完整單詞" #: editor/code_editor.cpp editor/rename_dialog.cpp msgid "Replace" @@ -759,16 +761,15 @@ msgstr "警告" #: editor/code_editor.cpp msgid "Line and column numbers." -msgstr "行號和列號。" +msgstr "行號與列號。" #: editor/connections_dialog.cpp msgid "Method in target node must be specified." -msgstr "必須指定目標節點的方法。" +msgstr "必須指定目標節點方法。" #: editor/connections_dialog.cpp -#, fuzzy msgid "Method name must be a valid identifier." -msgstr "名稱不是一個有效的識別符:" +msgstr "方法名稱必須為有效識別符。" #: editor/connections_dialog.cpp msgid "" @@ -790,7 +791,7 @@ msgstr "自訊號:" #: editor/connections_dialog.cpp msgid "Scene does not contain any script." -msgstr "場景中無任何的腳本。" +msgstr "場景中無任何腳本。" #: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp #: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp @@ -819,7 +820,7 @@ msgstr "額外呼叫引數:" #: editor/connections_dialog.cpp msgid "Receiver Method:" -msgstr "Receiver 方法:" +msgstr "接收器方法:" #: editor/connections_dialog.cpp msgid "Advanced" @@ -1028,7 +1029,7 @@ msgstr "開啟" #: editor/dependency_editor.cpp msgid "Owners Of:" -msgstr "擁有者:" +msgstr "為下列之擁有者:" #: editor/dependency_editor.cpp msgid "Remove selected files from the project? (Can't be restored)" @@ -1101,7 +1102,7 @@ msgstr "沒有明確從屬關係的資源:" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Key" -msgstr "改變字典鍵" +msgstr "改變字典索引鍵" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Value" @@ -1179,7 +1180,7 @@ msgid "" "respective copyright statements and license terms." msgstr "" "Godot Engine 依賴數個自由且開放原始碼的第三方函式庫,所有函式庫皆相容於 MIT " -"授權條款。以下是這些第三方元件的完整列表於其各自之著作權宣告與授權條款。" +"授權條款。以下為這些第三方元件的完整列表與其著作權宣告及授權條款。" #: editor/editor_about.cpp msgid "All Components" @@ -1244,39 +1245,39 @@ msgstr "新增效果" #: editor/editor_audio_buses.cpp msgid "Rename Audio Bus" -msgstr "重新命名音訊 Bus" +msgstr "重新命名音訊匯流排" #: editor/editor_audio_buses.cpp msgid "Change Audio Bus Volume" -msgstr "更改音訊 Bus 音量" +msgstr "更改音訊匯流排音量" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" -msgstr "切換音訊 Bus 的 Solo" +msgstr "切換音訊匯流排 Solo" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Mute" -msgstr "靜音/取消靜音音訊 Bus" +msgstr "靜音/取消靜音音訊匯流排" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Bypass Effects" -msgstr "忽略/取消忽略音訊 Bus 效果" +msgstr "忽略/取消忽略音訊匯流排效果" #: editor/editor_audio_buses.cpp msgid "Select Audio Bus Send" -msgstr "選擇 Bus 輸出地點" +msgstr "選擇音訊匯流排輸出位置" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus Effect" -msgstr "新增音效 Bus 效果" +msgstr "新增音效匯流排效果" #: editor/editor_audio_buses.cpp msgid "Move Bus Effect" -msgstr "移動 Bus 效果" +msgstr "移動匯流排效果" #: editor/editor_audio_buses.cpp msgid "Delete Bus Effect" -msgstr "刪除 Bus 效果" +msgstr "刪除匯流排效果" #: editor/editor_audio_buses.cpp msgid "Drag & drop to rearrange." @@ -1296,7 +1297,7 @@ msgstr "忽略效果" #: editor/editor_audio_buses.cpp msgid "Bus options" -msgstr "Bus 選項" +msgstr "匯流排選項" #: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp @@ -1317,31 +1318,31 @@ msgstr "音訊" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" -msgstr "新增音訊 Bus" +msgstr "新增音訊匯流排" #: editor/editor_audio_buses.cpp msgid "Master bus can't be deleted!" -msgstr "Master Bus 不可刪除!" +msgstr "不可刪除主匯流排!" #: editor/editor_audio_buses.cpp msgid "Delete Audio Bus" -msgstr "刪除音訊 Bus" +msgstr "刪除音訊匯流排" #: editor/editor_audio_buses.cpp msgid "Duplicate Audio Bus" -msgstr "重複音訊 Bus" +msgstr "重複音訊匯流排" #: editor/editor_audio_buses.cpp msgid "Reset Bus Volume" -msgstr "重設 Bus 音量" +msgstr "重設匯流排音量" #: editor/editor_audio_buses.cpp msgid "Move Audio Bus" -msgstr "移動音訊 Bus" +msgstr "移動音訊匯流排" #: editor/editor_audio_buses.cpp msgid "Save Audio Bus Layout As..." -msgstr "另存音訊 Bus 配置為..." +msgstr "將音訊匯流排配置另存為..." #: editor/editor_audio_buses.cpp msgid "Location for New Layout..." @@ -1349,7 +1350,7 @@ msgstr "新配置的位置..." #: editor/editor_audio_buses.cpp msgid "Open Audio Bus Layout" -msgstr "開啟音訊 Bus 配置" +msgstr "開啟音訊匯流排配置" #: editor/editor_audio_buses.cpp msgid "There is no '%s' file." @@ -1361,7 +1362,7 @@ msgstr "畫面配置" #: editor/editor_audio_buses.cpp msgid "Invalid file, not an audio bus layout." -msgstr "無效的檔案,或該檔案不是音訊 Bus 配置檔。" +msgstr "無效檔案或該檔案並非音訊匯流排配置檔。" #: editor/editor_audio_buses.cpp msgid "Error saving file: %s" @@ -1369,11 +1370,11 @@ msgstr "無法保存檔案:%s" #: editor/editor_audio_buses.cpp msgid "Add Bus" -msgstr "新增 Bus" +msgstr "新增匯流排" #: editor/editor_audio_buses.cpp msgid "Add a new Audio Bus to this layout." -msgstr "新增一個新的音訊 Bus 至該配置。" +msgstr "新增一個新的音訊匯流排至該配置。" #: editor/editor_audio_buses.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp @@ -1383,7 +1384,7 @@ msgstr "載入" #: editor/editor_audio_buses.cpp msgid "Load an existing Bus Layout." -msgstr "讀取現存的 Bus 配置。" +msgstr "讀取現有的匯流排配置。" #: editor/editor_audio_buses.cpp msgid "Save As" @@ -1391,7 +1392,7 @@ msgstr "另存新檔" #: editor/editor_audio_buses.cpp msgid "Save this Bus Layout to a file." -msgstr "將該 Bus 配置保存至檔案。" +msgstr "將該匯流排配置保存至檔案。" #: editor/editor_audio_buses.cpp editor/import_dock.cpp msgid "Load Default" @@ -1399,11 +1400,11 @@ msgstr "載入預設" #: editor/editor_audio_buses.cpp msgid "Load the default Bus Layout." -msgstr "載入預設的 Bus 配置。" +msgstr "載入預設匯流排配置。" #: editor/editor_audio_buses.cpp msgid "Create a new Bus Layout." -msgstr "建立新的 Bus 配置。" +msgstr "建立新匯流排配置。" #: editor/editor_autoload_settings.cpp msgid "Invalid name." @@ -1419,7 +1420,7 @@ msgstr "不可與現存的引擎類別名稱衝突。" #: editor/editor_autoload_settings.cpp msgid "Must not collide with an existing built-in type name." -msgstr "不可與內建的列表名稱衝突。" +msgstr "不可與內建的類別名稱衝突。" #: editor/editor_autoload_settings.cpp msgid "Must not collide with an existing global constant name." @@ -1484,7 +1485,7 @@ msgstr "名稱" #: editor/editor_autoload_settings.cpp msgid "Singleton" -msgstr "單例 (Singleton)" +msgstr "單例" #: editor/editor_data.cpp editor/inspector_dock.cpp msgid "Paste Params" @@ -1512,7 +1513,7 @@ msgstr "[未保存]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first." -msgstr "請先選擇一個基礎的資料夾。" +msgstr "請先選擇基礎資料夾。" #: editor/editor_dir_dialog.cpp msgid "Choose a Directory" @@ -1557,15 +1558,16 @@ msgid "" "Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " "Etc' in Project Settings." msgstr "" -"目標平台上的 GLES2 必須使用「ETC」紋理壓縮。請在專案設定中啟用「匯入 ETC」。" +"目標平台上的 GLES2 必須使用「ETC」紋理壓縮。請在專案設定中啟用「Import " +"Etc」。" #: editor/editor_export.cpp msgid "" "Target platform requires 'ETC2' texture compression for GLES3. Enable " "'Import Etc 2' in Project Settings." msgstr "" -"目標平台上的 GLES3 必須使用「ETC2」紋理壓縮。請在專案設定中啟用「匯入 " -"ETC2」。" +"目標平台上的 GLES3 必須使用「ETC2」紋理壓縮。請在專案設定中啟用「Import Etc " +"2」。" #: editor/editor_export.cpp msgid "" @@ -1575,7 +1577,7 @@ msgid "" "Enabled'." msgstr "" "目標平台上的 GLES2 回退驅動器功能必須使用「ETC」紋理壓縮。\n" -"請在專案設定中啟用「匯入 ETC」或是禁用「啟用驅動器回退」。" +"請在專案設定中啟用「Import Etc」或是禁用「Driver Fallback Enabled」。" #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -1587,7 +1589,7 @@ msgstr "找不到自定義偵錯樣板。" #: 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 "找不到自定義釋出樣板。" +msgstr "找不到自定義發行樣板。" #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" @@ -1595,7 +1597,7 @@ msgstr "找不到樣板檔案:" #: editor/editor_export.cpp msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." -msgstr "匯出 32 位元檔時,內嵌的 PCK 大小不得超過 4 GB。" +msgstr "匯出 32 位元檔時,內嵌 PCK 大小不得超過 4 GB。" #: editor/editor_feature_profile.cpp msgid "3D Editor" @@ -1627,15 +1629,15 @@ msgstr "檔案系統與匯入 Dock" #: editor/editor_feature_profile.cpp msgid "Erase profile '%s'? (no undo)" -msgstr "確定要清除 Profile「%s」嗎?(無法復原)" +msgstr "確定要清除設定檔「%s」嗎?(無法復原)" #: editor/editor_feature_profile.cpp msgid "Profile must be a valid filename and must not contain '.'" -msgstr "Profile 必須為一個有效的檔案名稱,並且不包含「.」" +msgstr "設定檔必須為有效檔名,且不可包含「.」" #: editor/editor_feature_profile.cpp msgid "Profile with this name already exists." -msgstr "已有相同名稱的 Profile 存在。" +msgstr "已有相同名稱的設定檔存在。" #: editor/editor_feature_profile.cpp msgid "(Editor Disabled, Properties Disabled)" @@ -1677,11 +1679,11 @@ msgstr "檔案「%s」的格式無效,已中止匯入。" msgid "" "Profile '%s' already exists. Remove it first before importing, import " "aborted." -msgstr "Profile「%s」已經存在。匯入前請先將其移除。已中止匯入。" +msgstr "設定檔「%s」已存在。匯入前請先將其移除。已中止匯入。" #: editor/editor_feature_profile.cpp msgid "Error saving profile to path: '%s'." -msgstr "保存 Profile 至路徑「%s」時發生錯誤。" +msgstr "在下列路徑保存設定檔時發生錯誤:%s。" #: editor/editor_feature_profile.cpp msgid "Unset" @@ -1689,7 +1691,7 @@ msgstr "未設定" #: editor/editor_feature_profile.cpp msgid "Current Profile:" -msgstr "目前版本:" +msgstr "目前設定檔:" #: editor/editor_feature_profile.cpp msgid "Make Current" @@ -1712,7 +1714,7 @@ msgstr "匯出" #: editor/editor_feature_profile.cpp msgid "Available Profiles:" -msgstr "可用的 Profile:" +msgstr "可用設定檔:" #: editor/editor_feature_profile.cpp msgid "Class Options" @@ -1720,31 +1722,31 @@ msgstr "類別選項" #: editor/editor_feature_profile.cpp msgid "New profile name:" -msgstr "新增 Profile 名稱:" +msgstr "新增設定檔名稱:" #: editor/editor_feature_profile.cpp msgid "Erase Profile" -msgstr "清除 Profile" +msgstr "清除設定檔" #: editor/editor_feature_profile.cpp msgid "Godot Feature Profile" -msgstr "Godot 功能 Profile" +msgstr "Godot 功能設定檔" #: editor/editor_feature_profile.cpp msgid "Import Profile(s)" -msgstr "匯入 Profile" +msgstr "匯入設定檔" #: editor/editor_feature_profile.cpp msgid "Export Profile" -msgstr "匯出 Profile" +msgstr "匯出設定檔" #: editor/editor_feature_profile.cpp msgid "Manage Editor Feature Profiles" -msgstr "管理編輯器功能 Profile" +msgstr "管理編輯器功能設定檔" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Select Current Folder" -msgstr "選擇目前的資料夾" +msgstr "選擇目前資料夾" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1865,7 +1867,7 @@ msgstr "重新整理檔案。" #: editor/editor_file_dialog.cpp msgid "(Un)favorite current folder." -msgstr "將目前的資料夾新增或移除我的最愛。" +msgstr "將目前資料夾新增或移除至我的最愛。" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Toggle the visibility of hidden files." @@ -1913,7 +1915,7 @@ msgstr "(重新)匯入素材" #: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp msgid "Top" -msgstr "上" +msgstr "頂端" #: editor/editor_help.cpp msgid "Class:" @@ -2009,27 +2011,27 @@ msgstr "全部顯示" #: editor/editor_help_search.cpp msgid "Classes Only" -msgstr "僅限類別" +msgstr "僅顯示類別" #: editor/editor_help_search.cpp msgid "Methods Only" -msgstr "僅限方法" +msgstr "僅顯示方法" #: editor/editor_help_search.cpp msgid "Signals Only" -msgstr "僅限信號" +msgstr "僅顯示訊號" #: editor/editor_help_search.cpp msgid "Constants Only" -msgstr "僅限常數" +msgstr "僅顯示常數" #: editor/editor_help_search.cpp msgid "Properties Only" -msgstr "僅限屬性" +msgstr "僅顯示屬性" #: editor/editor_help_search.cpp msgid "Theme Properties Only" -msgstr "僅限主題屬性" +msgstr "僅顯示主題屬性" #: editor/editor_help_search.cpp msgid "Member Type" @@ -2156,7 +2158,7 @@ msgstr "保存資源錯誤!" msgid "" "This resource can't be saved because it does not belong to the edited scene. " "Make it unique first." -msgstr "由於該資源不屬於已編輯的場景,無法保存該資源。請先確保其獨立。" +msgstr "由於該資源不屬於已編輯的場景,無法保存該資源。請先使其獨立化。" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Save Resource As..." @@ -2305,11 +2307,7 @@ msgstr "" #: editor/editor_node.cpp msgid "There is no defined scene to run." -msgstr "沒有已定義的場景可執行。" - -#: editor/editor_node.cpp -msgid "Current scene was never saved, please save it prior to running." -msgstr "目前的場景從未被保存,請先保存以執行。" +msgstr "未定義欲執行之場景。" #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -2365,7 +2363,7 @@ msgstr "是" #: editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" -msgstr "此場景從未被保存。是否要在執行前先保存?" +msgstr "此場景從未被保存。是否於執行前先保存?" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "This operation can't be done without a scene." @@ -2381,15 +2379,15 @@ msgstr "該操作必須要有跟節點才可完成。" #: editor/editor_node.cpp msgid "Export Tile Set" -msgstr "匯出 Tile Set" +msgstr "匯出圖塊集" #: editor/editor_node.cpp msgid "This operation can't be done without a selected node." -msgstr "該操作必須要有已選擇的節點才可完成。" +msgstr "請先選擇節點以執行該操作。" #: editor/editor_node.cpp msgid "Current scene not saved. Open anyway?" -msgstr "目前的場景尚未保存。仍然要開啟嗎?" +msgstr "尚未保存目前場景。仍然要開啟嗎?" #: editor/editor_node.cpp msgid "Can't reload a scene that was never saved." @@ -2404,8 +2402,8 @@ msgid "" "The current scene has unsaved changes.\n" "Reload the saved scene anyway? This action cannot be undone." msgstr "" -"目前的場景有未保存的改動。\n" -"仍然要重新載入場景嗎?這個操作將無法復原。" +"目前場景有未保存的改動。\n" +"仍要重新載入場景嗎?此操作將無法復原。" #: editor/editor_node.cpp msgid "Quick Run Scene..." @@ -2439,9 +2437,7 @@ msgstr "開啟專案管理員前要先保存以下場景嗎?" msgid "" "This option is deprecated. Situations where refresh must be forced are now " "considered a bug. Please report." -msgstr "" -"該選項已停止維護。遇到需要強制重新整理的狀況現在已被視為程式錯誤。請回報該問" -"題。" +msgstr "該選項已停止維護。目前已將需強制重新整理之狀況視為 Bug,請回報該問題。" #: editor/editor_node.cpp msgid "Pick a Main Scene" @@ -2471,12 +2467,12 @@ msgstr "無法自路徑「%s」載入擴充腳本。" msgid "" "Unable to load addon script from path: '%s' There seems to be an error in " "the code, please check the syntax." -msgstr "無法從路徑「%s」載入擴充腳本。看樣子是程式碼中有錯誤,請檢查語法。" +msgstr "無法自路徑「%s」載入擴充腳本。可能為程式碼中有錯誤,請檢查語法。" #: editor/editor_node.cpp msgid "" "Unable to load addon script from path: '%s' Base type is not EditorPlugin." -msgstr "無法自路徑「%s」載入擴充腳本,基礎型別不是 EditorPlugin。" +msgstr "無法自路徑「%s」載入擴充腳本,基礎型別非 EditorPlugin。" #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s' Script is not in tool mode." @@ -2495,7 +2491,7 @@ 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 "" -"載入場景時發生錯誤,場景必須置於專案路徑內。請使用「匯入」來開啟該場景,並將" +"載入場景時發生錯誤,場景必須置於專案路徑內。請使用 [匯入] 來開啟該場景,並將" "其保存於專案路徑內。" #: editor/editor_node.cpp @@ -2513,7 +2509,7 @@ msgid "" "category." msgstr "" "尚未定義主場景。要選擇一個場景嗎?\n" -"稍後可在「應用程式」分類中的「專案設定」修改。" +"稍後可在「專案設定」的 [Application] 分類中修改。" #: editor/editor_node.cpp msgid "" @@ -2522,7 +2518,7 @@ msgid "" "category." msgstr "" "所選的場景「%s」不存在,是否要選擇一個有效的場景?\n" -"稍後可在「應用程式」分類中的「專案設定」中修改。" +"稍後可在「專案設定」的 [Application] 分類中修改。" #: editor/editor_node.cpp msgid "" @@ -2530,8 +2526,8 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" -"所選的場景「%s」不是場景檔案,是否要選擇另一個有效的場景?\n" -"稍後可在「應用程式」分類中的「專案設定」中修改。" +"所選的場景「%s」並非場景檔案,是否要選擇另一個有效的場景?\n" +"稍後可在「專案設定」中的 [Application] 中修改。" #: editor/editor_node.cpp msgid "Save Layout" @@ -2589,7 +2585,7 @@ msgstr "還有 %d 個資料夾" #: editor/editor_node.cpp msgid "%d more files" -msgstr "還有 %d 個檔案" +msgstr "其他 %d 個檔案" #: editor/editor_node.cpp msgid "Dock Position" @@ -2759,10 +2755,10 @@ msgid "" "On Android, deploy will use the USB cable for faster performance. This " "option speeds up testing for games with a large footprint." msgstr "" -"當該選項啟用後,匯出或部署將會產生最小化的可執行檔。\n" -"檔案系統將由這個編輯器在網路上提供。\n" -"Android 平台上,部署需要使用 USB 線以獲得更快速的效能。該選項對於大型遊戲能加" -"速測試。" +"啟用該選項後,匯出或部署是會產生最小可執行檔。\n" +"專案之檔案系統將由本編輯器以網路提供。\n" +"部署至 Android 平台需使用 USB 線以獲得更快速的效能。該選項對於大型遊戲能加速" +"測試。" #: editor/editor_node.cpp msgid "Visible Collision Shapes" @@ -2772,7 +2768,7 @@ msgstr "顯示碰撞區域" msgid "" "Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " "running game if this option is turned on." -msgstr "該選項開啟後,執行遊戲時將可看見碰撞區域與(2D 或 3D 的)射線節點。" +msgstr "開啟選項後,執行遊戲時將可看見碰撞區域與(2D 或 3D 的)射線節點。" #: editor/editor_node.cpp msgid "Visible Navigation" @@ -2782,7 +2778,7 @@ msgstr "顯示導航" msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." -msgstr "該選項開啟後,執行遊戲時將可看見導航網格 (mesh) 與多邊形。" +msgstr "開啟該選項後,執行遊戲時將可看見導航網格 (mesh) 與多邊形。" #: editor/editor_node.cpp msgid "Sync Scene Changes" @@ -2809,7 +2805,7 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" -"當開啟該選項後,保存的腳本都將在執行中的遊戲重新載入。\n" +"開啟該選項後,保存之腳本都將於執行中的遊戲重新載入。\n" "若在遠端裝置上使用,可使用網路檔案系統 NFS 以獲得最佳效能。" #: editor/editor_node.cpp editor/script_create_dialog.cpp @@ -2842,7 +2838,7 @@ msgstr "開啟/關閉系統主控台" #: editor/editor_node.cpp msgid "Open Editor Data/Settings Folder" -msgstr "開啟「編輯器資料/編輯器設定」資料夾" +msgstr "開啟 編輯器資料/編輯器設定 資料夾" #: editor/editor_node.cpp msgid "Open Editor Data Folder" @@ -2997,12 +2993,12 @@ msgid "" "the \"Use Custom Build\" option should be enabled in the Android export " "preset." msgstr "" -"將通過在「res://android/build」中安裝原始樣板以為該項目設定自定 Android 建構" -"樣板。\n" -"輸出時可以套用修改並建構自定 APK(如新增模組、修改 AndroidManifest.xml …" +"將於「res://android/build」安裝原始樣板以為該項目設定自定 Android 建構樣" +"板。\n" +"輸出時可套用修改並建構自定 APK(如新增模組、修改 AndroidManifest.xml …" "等)。\n" -"請注意,若要使用自定建構而非使用預先建構好的 APK,請啟用 Android 匯出 Preset " -"中的「使用自定建構」選項。" +"請注意,若要使用自定建構而非使用預先建構之 APK,請啟用 Android 匯出預設設定中" +"的 [Use Custom Build] 選項。" #: editor/editor_node.cpp msgid "" @@ -3145,7 +3141,7 @@ msgstr "全部" #: editor/editor_profiler.cpp msgid "Self" -msgstr "僅自己" +msgstr "自身" #: editor/editor_profiler.cpp msgid "Frame #:" @@ -3198,7 +3194,7 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" -"無法為要保存為檔案的資源建立檢視區紋理 (ViewportTexture)。\n" +"無法為欲保存為檔案之資源建立 ViewportTexture。\n" "資源必須屬於一個場景。" #: editor/editor_properties.cpp @@ -3209,11 +3205,11 @@ msgid "" "containing it up to a node)." msgstr "" "無法為該資源建立檢視區紋理 (ViewportTexture),因其未設定對應的本地場景。\n" -"請開啟其(與其至節點的所有資源)的「本地化場景」屬性。" +"請開啟其(與其至節點的所有資源)「Local to Scene」屬性。" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" -msgstr "選擇檢視區" +msgstr "選擇 Viewport" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "New Script" @@ -3247,11 +3243,11 @@ msgstr "貼上" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Convert To %s" -msgstr "轉換成 %s" +msgstr "轉換為 %s" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Selected node is not a Viewport!" -msgstr "所選節點不是檢視區 (Viewport)!" +msgstr "所選節點並非 Viewport!" #: editor/editor_properties_array_dict.cpp msgid "Size: " @@ -3268,7 +3264,7 @@ msgstr "移除項目" #: editor/editor_properties_array_dict.cpp msgid "New Key:" -msgstr "新增鍵值:" +msgstr "新增索引鍵:" #: editor/editor_properties_array_dict.cpp msgid "New Value:" @@ -3276,15 +3272,15 @@ msgstr "新增數值:" #: editor/editor_properties_array_dict.cpp msgid "Add Key/Value Pair" -msgstr "新增鍵/值配對" +msgstr "新增索引鍵/值組" #: editor/editor_run_native.cpp msgid "" "No runnable export preset found for this platform.\n" "Please add a runnable preset in the export menu." msgstr "" -"該平台沒有可執行的匯出 Preset。\n" -"請在匯出選單中新增一個可執行的 Preset。" +"該平台沒有可執行的匯出預設設定。\n" +"請在匯出選單中新增一個可執行的預設設定。" #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." @@ -3300,7 +3296,7 @@ msgstr "無法實體化腳本:" #: editor/editor_run_script.cpp msgid "Did you forget the 'tool' keyword?" -msgstr "是否遺漏「tool」關鍵字?" +msgstr "是否未加上「tool」關鍵字?" #: editor/editor_run_script.cpp msgid "Couldn't run script:" @@ -3308,7 +3304,7 @@ msgstr "無法執行腳本:" #: editor/editor_run_script.cpp msgid "Did you forget the '_run' method?" -msgstr "是否遺漏了「_run」方法?" +msgstr "是否未新增「_run」方法?" #: editor/editor_spin_slider.cpp msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes." @@ -3403,7 +3399,7 @@ msgstr "解析鏡像列表的 JSON 時發生錯誤。請回報此問題!" msgid "" "No download links found for this version. Direct download is only available " "for official releases." -msgstr "為找到該版本的下載鏈接。直接下載僅適用於正式版本。" +msgstr "未找到該版本的下載鏈接。直接下載僅適用於正式發行版本。" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -3446,8 +3442,8 @@ msgid "" "Templates installation failed.\n" "The problematic templates archives can be found at '%s'." msgstr "" -"未找到樣板安裝。\n" -"有問題的樣板檔案存放於「%s」。" +"樣板安裝失敗。\n" +"發生問題之樣板檔案存放於「%s」。" #: editor/export_template_manager.cpp msgid "Error requesting URL:" @@ -3573,7 +3569,7 @@ msgstr "未提供名稱。" #: editor/filesystem_dock.cpp msgid "Provided name contains invalid characters." -msgstr "提供的名稱包含了無效的字元。" +msgstr "提供的名稱包含無效字元。" #: editor/filesystem_dock.cpp msgid "A file or folder with this name already exists." @@ -3581,7 +3577,7 @@ msgstr "已有相同名稱的檔案或資料夾存在。" #: editor/filesystem_dock.cpp msgid "Name contains invalid characters." -msgstr "名稱包含了無效的字元。" +msgstr "名稱包含無效字元。" #: editor/filesystem_dock.cpp msgid "Renaming file:" @@ -3891,7 +3887,7 @@ msgstr "正在執行自定腳本..." #: editor/import/resource_importer_scene.cpp msgid "Couldn't load post-import script:" -msgstr "無法載入匯入後腳本:" +msgstr "無法載入 Post-Import 腳本:" #: editor/import/resource_importer_scene.cpp msgid "Invalid/broken script for post-import (check console):" @@ -3903,7 +3899,7 @@ msgstr "執行匯入後腳本時發生錯誤:" #: editor/import/resource_importer_scene.cpp msgid "Did you return a Node-derived object in the `post_import()` method?" -msgstr "是否有在 `post_import()` 方法內回傳 Node 衍生之物件?" +msgstr "是否有在 `post_import()` 方法內回傳繼承 Node 之物件?" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -3927,7 +3923,7 @@ msgstr "匯入為:" #: editor/import_dock.cpp msgid "Preset" -msgstr "Preset" +msgstr "預設設定" #: editor/import_dock.cpp msgid "Reimport" @@ -3944,7 +3940,7 @@ msgstr "修改匯入檔案的型別需要重新啟動編輯器。" #: editor/import_dock.cpp msgid "" "WARNING: Assets exist that use this resource, they may stop loading properly." -msgstr "警告:有素材使用該資源,將會無法正確加載。" +msgstr "警告:有素材使用該資源,將無法正確加載。" #: editor/inspector_dock.cpp msgid "Failed to load resource." @@ -3989,7 +3985,7 @@ msgstr "在說明中開啟" #: editor/inspector_dock.cpp msgid "Create a new resource in memory and edit it." -msgstr "在記憶體中建立一個新的資源名編輯。" +msgstr "在記憶體中建立新資源並編輯。" #: editor/inspector_dock.cpp msgid "Load an existing resource from disk and edit it." @@ -4001,11 +3997,11 @@ msgstr "保存目前編輯的資源。" #: editor/inspector_dock.cpp msgid "Go to the previous edited object in history." -msgstr "在歷史記錄中跳至上一個編輯的物件。" +msgstr "跳至歷史記錄中上一個編輯的物件。" #: editor/inspector_dock.cpp msgid "Go to the next edited object in history." -msgstr "在歷史記錄中跳至下一個編輯的物件。" +msgstr "跳至歷史記錄中下一個編輯的物件。" #: editor/inspector_dock.cpp msgid "History of recently edited objects." @@ -4017,7 +4013,7 @@ msgstr "物件屬性。" #: editor/inspector_dock.cpp msgid "Filter properties" -msgstr "過濾屬性" +msgstr "篩選屬性" #: editor/inspector_dock.cpp msgid "Changes may be lost!" @@ -4207,23 +4203,23 @@ msgstr "新增三角形" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Change BlendSpace2D Limits" -msgstr "修改混合空間 2D 限制" +msgstr "修改 BlendSpace2D 限制" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Change BlendSpace2D Labels" -msgstr "修改混合空間 2D 標籤" +msgstr "修改 BlendSpace2D 標籤" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Remove BlendSpace2D Point" -msgstr "移除混合空間 2D 頂點" +msgstr "移除 BlendSpace2D 頂點" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Remove BlendSpace2D Triangle" -msgstr "移除混合空間 2D 三角形" +msgstr "移除 BlendSpace2D 三角形" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "BlendSpace2D does not belong to an AnimationTree node." -msgstr "混合空間 2D 不屬於任何動畫樹節點。" +msgstr "BlendSpace2D 不屬於任何 AnimationTree 節點。" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "No triangles exist, so no blending can take place." @@ -4257,11 +4253,11 @@ msgstr "已更改參數" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Edit Filters" -msgstr "編輯篩選" +msgstr "編輯篩選條件" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Output node can't be added to the blend tree." -msgstr "輸出節點無法被新增到混合樹。" +msgstr "輸出節點無法被新增至混合樹。" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Add Node to BlendTree" @@ -4302,11 +4298,11 @@ msgstr "刪除節點" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" -msgstr "開啟/關閉過濾" +msgstr "開啟/關閉篩選" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Change Filter" -msgstr "更改過濾" +msgstr "更改篩選條件" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "No animation player set, so unable to retrieve track names." @@ -4352,7 +4348,7 @@ msgstr "編輯已篩選的軌道:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Enable Filtering" -msgstr "啟用篩選" +msgstr "啟用條件篩選" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" @@ -4415,7 +4411,7 @@ msgstr "無動畫可複製!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "No animation resource on clipboard!" -msgstr "剪貼簿中沒有動畫資源!" +msgstr "剪貼簿中無動畫資源!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" @@ -4483,11 +4479,11 @@ msgstr "載入後自動播放" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Enable Onion Skinning" -msgstr "啟用洋蔥皮化 (Onion Skinning)" +msgstr "啟用描圖紙" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Onion Skinning Options" -msgstr "洋蔥皮化選項" +msgstr "描圖紙選項" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Directions" @@ -4531,7 +4527,7 @@ msgstr "包含 Gizmo (3D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pin AnimationPlayer" -msgstr "固定動畫播放器" +msgstr "固定 AnimationPlayer" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" @@ -4641,7 +4637,7 @@ msgstr "移除所選的節點或轉場。" #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." -msgstr "開啟/關閉該動畫在開始、重新啟動或尋覓至 0 時的自動播放。" +msgstr "開啟/關閉自動播放動畫於開始、重新啟動或搜尋至 0 時。" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set the end animation. This is useful for sub-transitions." @@ -4716,7 +4712,7 @@ msgstr "混合 1:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "X-Fade Time (s):" -msgstr "交叉淡化 (X-Fade) 時間(秒):" +msgstr "淡入與淡出時間(秒):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Current:" @@ -4750,39 +4746,39 @@ msgstr "無效的動畫樹。" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation Node" -msgstr "動畫節點" +msgstr "Animation 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "OneShot Node" -msgstr "單項節點" +msgstr "OneShot 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Mix Node" -msgstr "混合節點" +msgstr "Mix 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend2 Node" -msgstr "混合 2 節點" +msgstr "Blend2 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend3 Node" -msgstr "混合 3 節點" +msgstr "Blend3 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend4 Node" -msgstr "混合 4 節點" +msgstr "Blend4 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "TimeScale Node" -msgstr "時間縮放節點" +msgstr "TimeScale 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "TimeSeek Node" -msgstr "時間尋覓節點" +msgstr "TimeSeek 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Transition Node" -msgstr "轉場節點" +msgstr "Transition 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Import Animations..." @@ -4790,11 +4786,11 @@ msgstr "匯入動畫…" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Edit Node Filters" -msgstr "編輯節點過濾" +msgstr "編輯節點篩選條件" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Filters..." -msgstr "過濾..." +msgstr "篩選..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Contents:" @@ -4858,7 +4854,7 @@ msgstr "下載雜湊錯誤,檔案可能被篡改。" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Expected:" -msgstr "預計:" +msgstr "應為:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Got:" @@ -5011,7 +5007,8 @@ msgstr "" msgid "" "No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake " "Light' flag is on." -msgstr "沒有可 Bake 的網格。請確保網格包含 UV2 通道並已開啟「Bake 光照」旗標。" +msgstr "" +"無可製作之網格。請確保這些網格包含 UV2 通道並已開啟「Bake Light」旗標。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." @@ -5019,7 +5016,7 @@ msgstr "建立光照圖失敗,請確保該路徑可寫入。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" -msgstr "Bake 光照圖" +msgstr "建立光照圖" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/rename_dialog.cpp @@ -5092,7 +5089,7 @@ msgstr "移動軸心" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotate CanvasItem" -msgstr "旋轉畫布項目" +msgstr "旋轉 CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move anchor" @@ -5100,31 +5097,31 @@ msgstr "移動錨點" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize CanvasItem" -msgstr "調整畫布項目大小" +msgstr "調整 CanvasItem 大小" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale CanvasItem" -msgstr "縮放畫布項目" +msgstr "縮放 CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move CanvasItem" -msgstr "移動畫布項目" +msgstr "移動 CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "Children of containers have their anchors and margins values overridden by " "their parent." -msgstr "容器子項目的錨點與外邊距 (margin) 值被其母項目複寫。" +msgstr "容器子項目的錨點與外邊距值遭其母項目複寫。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Presets for the anchors and margins values of a Control node." -msgstr "控制節點的錨點與外邊距的 Preset。" +msgstr "控制節點的錨點與外邊距之預設設定。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "When active, moving Control nodes changes their anchors instead of their " "margins." -msgstr "啟用時,移動控制節點將修改錨點而非外邊距。" +msgstr "啟用後,移動控制節點將修改錨點而非外邊距。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Top Left" @@ -5164,27 +5161,27 @@ msgstr "中央" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Left Wide" -msgstr "左延長" +msgstr "左延展" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Top Wide" -msgstr "上延長" +msgstr "上延展" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Right Wide" -msgstr "右延長" +msgstr "右延展" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Bottom Wide" -msgstr "下延長" +msgstr "下延展" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "VCenter Wide" -msgstr "垂直中央延長" +msgstr "垂直中央延展" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "HCenter Wide" -msgstr "水平中央延長" +msgstr "水平中央延展" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Full Rect" @@ -5212,7 +5209,7 @@ msgid "" "Game Camera Override\n" "Overrides game camera with editor viewport camera." msgstr "" -"遊戲相機覆蓋\n" +"遊戲相機複寫\n" "以檢視區相機取代遊戲相機。" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -5221,7 +5218,7 @@ msgid "" "Game Camera Override\n" "No game instance running." msgstr "" -"遊戲相機覆蓋\n" +"遊戲相機複寫\n" "無正在執行的遊戲實體。" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -5254,7 +5251,7 @@ msgstr "清除參考線" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create Custom Bone(s) from Node(s)" -msgstr "子節點建立自定骨骼" +msgstr "自節點建立自定骨骼" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Bones" @@ -5272,7 +5269,7 @@ msgstr "清除 IK 鏈" msgid "" "Warning: Children of a container get their position and size determined only " "by their parent." -msgstr "警告:容器的子項目的位置與大小有其母項目決定。" +msgstr "警告:容器子項目之位置與大小由其母項目決定。" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -5510,8 +5507,8 @@ msgid "" "Keys are only added to existing tracks, no new tracks will be created.\n" "Keys must be inserted manually for the first time." msgstr "" -"檔物件被轉換、旋轉、或(基於遮罩)縮放時自動插入關鍵影格。\n" -"關鍵影格只會被新增至現存的軌道,將不會建立新的軌道。\n" +"當物件被轉換、旋轉 或(基於遮罩)縮放時自動插入關鍵影格。\n" +"關鍵影格只會被新增至現有軌道,不會建立新軌道。\n" "第一次必須先手動插入關鍵影格。" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -5524,7 +5521,7 @@ msgstr "動畫關鍵影格與姿勢選項" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" -msgstr "插入關鍵影格(在現有軌道)" +msgstr "插入關鍵影格(於現有軌道)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" @@ -5582,7 +5579,7 @@ msgstr "" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Create Polygon3D" -msgstr "建立多邊形 3D" +msgstr "建立 Polygon3D" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Edit Poly" @@ -5678,11 +5675,11 @@ msgstr "Flat 1" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease In" -msgstr "緩入" +msgstr "緩慢移入" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease Out" -msgstr "緩出" +msgstr "緩慢移出" #: editor/plugins/curve_editor_plugin.cpp msgid "Smoothstep" @@ -5698,7 +5695,7 @@ msgstr "修改曲線切線" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Curve Preset" -msgstr "加載曲線 Preset" +msgstr "加載曲線預設設定" #: editor/plugins/curve_editor_plugin.cpp msgid "Add Point" @@ -5718,7 +5715,7 @@ msgstr "右線性" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Preset" -msgstr "載入 Preset" +msgstr "載入預設設定" #: editor/plugins/curve_editor_plugin.cpp msgid "Remove Curve Point" @@ -5738,7 +5735,7 @@ msgstr "右鍵點擊以新增控制點" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "Bake GI 探針" +msgstr "製作 GI 探查" #: editor/plugins/gradient_editor_plugin.cpp msgid "Gradient Edited" @@ -5810,7 +5807,7 @@ msgstr "建立導航網格" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "包含的網格的型別不是陣列網格 (ArrayMesh)。" +msgstr "包含之 Mesh 並非 ArrayMesh 型別。" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" @@ -5818,7 +5815,7 @@ 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" @@ -5826,15 +5823,15 @@ msgstr "模型在該圖層上無 UV" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "網格實體 (MeshInstance) 缺乏網格!" +msgstr "MeshInstance 未包含 Mesh!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" -msgstr "網格未包含可建立輪廓的表面!" +msgstr "Mesh 未包含可建立輪廓的表面!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" -msgstr "網格的原始類型不是 PRIMITIVE_TRIANGLES!" +msgstr "Mesh 的原始類型並非 PRIMITIVE_TRIANGLES!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" @@ -5858,8 +5855,8 @@ msgid "" "automatically.\n" "This is the most accurate (but slowest) option for collision detection." msgstr "" -"建立靜態形體 (StaticBody) 並自動指派一個基於多邊形的碰撞形體。\n" -"對於碰撞偵測,這是最精確(但最慢)的選項。" +"建立 StaticBody 並自動指派一個基於多邊形的碰撞形體。\n" +"對於碰撞偵測,該選項為最精確(但最慢)的選項。" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Collision Sibling" @@ -5871,7 +5868,7 @@ msgid "" "This is the most accurate (but slowest) option for collision detection." msgstr "" "建立基於多邊形的碰撞形狀。\n" -"對於碰撞偵測,這是最精確(但最慢)的選項。" +"對於碰撞偵測,該選項為最精確(但最慢)的選項。" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Single Convex Collision Sibling" @@ -5883,7 +5880,7 @@ msgid "" "This is the fastest (but least accurate) option for collision detection." msgstr "" "建立單一凸面碰撞形狀。\n" -"對於碰撞偵測,這是最快(但最不精確)的選項。" +"對於碰撞偵測,該選項為最快(但最不精確)的選項。" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Multiple Convex Collision Siblings" @@ -5949,7 +5946,7 @@ msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Mesh Library" -msgstr "網格庫 (Mesh Library)" +msgstr "網格庫" #: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp @@ -5970,11 +5967,11 @@ msgstr "自場景更新" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "未指定網格來源(且節點中沒有多網格集 (MultiMesh Set))。" +msgstr "未指定網格來源(且節點中沒有 MultiMesh 集)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "未指定網格來源(且多網格 (MultiMesh) 未包含網格 (Mesh))。" +msgstr "未指定網格來源(且 MultiMesh 未包含 Mesh)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." @@ -5982,11 +5979,11 @@ msgstr "網格來源無效(無效的路徑)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "網格來源無效(不是網格實體 (MeshInstance))。" +msgstr "網格來源無效(非 MeshInstance)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." -msgstr "網格來源無效(未包含網格 (Mesh) 資源)。" +msgstr "網格來源無效(未包含 Mesh 資源)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." @@ -6010,7 +6007,7 @@ msgstr "選擇來源網格:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" -msgstr "選擇目標網格:" +msgstr "選擇目標表面:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate Surface" @@ -6018,7 +6015,7 @@ msgstr "填充表面" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate MultiMesh" -msgstr "填充多網格 (MultiMesh)" +msgstr "填充 MultiMesh" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" @@ -6080,7 +6077,7 @@ msgstr "產生矩形可見性" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" -msgstr "僅限指向粒子材料的處理材料 (ParticlesMaterial Process Material)" +msgstr "僅可將為 ParticlesMaterial 處理材料設定點" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6097,7 +6094,7 @@ msgstr "幾何體未包含任何面。" #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't inherit from Spatial." -msgstr "「%s」非自 Spatial 繼承。" +msgstr "「%s」非繼承自 Spatial。" #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't contain geometry." @@ -6133,7 +6130,7 @@ msgstr "發射源: " #: editor/plugins/particles_editor_plugin.cpp msgid "A processor material of type 'ParticlesMaterial' is required." -msgstr "需要「粒子材料 (ParticlesMaterial)」型別的處理器材料。" +msgstr "需「ParticlesMaterial」型別的處理器材料。" #: editor/plugins/particles_editor_plugin.cpp msgid "Generating AABB" @@ -6232,12 +6229,12 @@ msgstr "選項" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Mirror Handle Angles" -msgstr "鏡像手柄角度" +msgstr "鏡像控點角度" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Mirror Handle Lengths" -msgstr "鏡像手柄長度" +msgstr "鏡像控點長度" #: editor/plugins/path_editor_plugin.cpp msgid "Curve Point #" @@ -6245,15 +6242,15 @@ msgstr "曲線控制點 #" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve Point Position" -msgstr "設定曲線控制點的位置" +msgstr "設定曲線控制點位置" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve In Position" -msgstr "設定曲線的內控制點位置" +msgstr "設定曲線內控制點位置" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve Out Position" -msgstr "設定曲線的外控制點位置" +msgstr "設定曲線外控制點位置" #: editor/plugins/path_editor_plugin.cpp msgid "Split Path" @@ -6282,7 +6279,7 @@ msgstr "移動關節" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "The skeleton property of the Polygon2D does not point to a Skeleton2D node" -msgstr "多邊形 2D (Polygon2D) 的骨架屬性未指向骨架 2D (Skeleton2D) 節點" +msgstr "Polygon2D 的骨架屬性未指向 Skeleton2D 節點" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Sync Bones" @@ -6304,7 +6301,7 @@ msgstr "建立 UV Map" msgid "" "Polygon 2D has internal vertices, so it can no longer be edited in the " "viewport." -msgstr "多邊形 2D 有內部頂點,將無法在檢視區編輯。" +msgstr "Polygon2D 有內部頂點,將無法在檢視區編輯。" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Polygon & UV" @@ -6344,11 +6341,11 @@ msgstr "描繪骨骼權重" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Open Polygon 2D UV editor." -msgstr "開啟多邊形 2D UV 編輯器。" +msgstr "Polygon2D UV 編輯器。" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" -msgstr "多邊形 2D UV 編輯器" +msgstr "Polygon2D UV 編輯器" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "UV" @@ -6396,13 +6393,13 @@ msgstr "縮放多邊形" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." -msgstr "建立自定多邊形。啟用自定多邊形算圖。" +msgstr "建立自定多邊形。啟用自定多邊形算繪。" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." -msgstr "移除自定多邊形。若無剩餘多邊形,將禁用自定多邊形算圖。" +msgstr "移除自定多邊形。若無剩餘多邊形,將禁用自定多邊形算繪。" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." @@ -6520,11 +6517,11 @@ msgstr "載入資源" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ResourcePreloader" -msgstr "資源預加載 (ResourcePreloader)" +msgstr "ResourcePreloader" #: editor/plugins/root_motion_editor_plugin.cpp msgid "AnimationTree has no path set to an AnimationPlayer" -msgstr "動畫樹 (AnimationTree) 未設定至動畫播放器 (AnimationPlayer) 的路徑" +msgstr "AnimationTree 未設定至 AnimationPlayer 的路徑" #: editor/plugins/root_motion_editor_plugin.cpp msgid "Path to AnimationPlayer is invalid" @@ -6540,7 +6537,7 @@ msgstr "關閉並保存修改嗎?" #: editor/plugins/script_editor_plugin.cpp msgid "Error writing TextFile:" -msgstr "寫入文字檔案 (TextFile) 時發生錯誤:" +msgstr "寫入 TextFile 時發生錯誤:" #: editor/plugins/script_editor_plugin.cpp msgid "Could not load file at:" @@ -6593,7 +6590,7 @@ msgstr "腳本不在工具模式下,無法執行。" #: editor/plugins/script_editor_plugin.cpp msgid "" "To run this script, it must inherit EditorScript and be set to tool mode." -msgstr "欲執行該腳本,其必須繼承自編輯器腳本 (EditorScript) 並設為工具模式。" +msgstr "該腳本必須繼承 EditorScript 並設為工具模式才可執行。" #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" @@ -6627,7 +6624,7 @@ msgstr "尋找上一個" #: editor/plugins/script_editor_plugin.cpp msgid "Filter scripts" -msgstr "過濾腳本" +msgstr "篩選腳本" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle alphabetical sorting of the method list." @@ -6635,7 +6632,7 @@ msgstr "開啟/關閉按照字母順序排列方法列表。" #: editor/plugins/script_editor_plugin.cpp msgid "Filter methods" -msgstr "過濾方法" +msgstr "篩選方法" #: editor/plugins/script_editor_plugin.cpp msgid "Sort" @@ -6724,11 +6721,11 @@ msgstr "執行" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" -msgstr "步入" +msgstr "逐步執行" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Over" -msgstr "步過" +msgstr "不進入函式" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Break" @@ -6773,7 +6770,7 @@ msgid "" "What action should be taken?:" msgstr "" "磁碟中的下列檔案已更新。\n" -"要執行什麼?:" +"請選擇於執行之操作:" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/shader_editor_plugin.cpp @@ -6833,7 +6830,7 @@ 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 "無法防止節點,由於腳本「%s」並未在該場景中使用。" +msgstr "無法放置節點,由於腳本「%s」並未在該場景中使用。" #: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" @@ -6901,7 +6898,7 @@ msgstr "向右縮排" #: editor/plugins/script_text_editor.cpp msgid "Toggle Comment" -msgstr "展開/收起註解" +msgstr "註解/取消註解" #: editor/plugins/script_text_editor.cpp msgid "Fold/Unfold Line" @@ -7006,27 +7003,27 @@ msgstr "著色器" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "This skeleton has no bones, create some children Bone2D nodes." -msgstr "此骨架未包含骨骼,請建立一些子骨骼 2D (Bone2D) 節點。" +msgstr "此骨架未包含骨骼,請建立一些子 Bone2D 節點。" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Create Rest Pose from Bones" -msgstr "自骨骼建立放鬆姿勢" +msgstr "自骨骼建立靜止姿勢" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Rest Pose to Bones" -msgstr "設定放鬆姿勢至骨骼" +msgstr "設定靜止姿勢至骨骼" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Skeleton2D" -msgstr "骨架2D (Sekeleton2D)" +msgstr "Sekeleton2D" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Make Rest Pose (From Bones)" -msgstr "製作放鬆姿勢(自骨骼)" +msgstr "製作靜止姿勢(自骨骼)" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Bones to Rest Pose" -msgstr "設定骨骼為放鬆姿勢" +msgstr "設定骨骼為靜止姿勢" #: editor/plugins/skeleton_editor_plugin.cpp msgid "Create physical bones" @@ -7242,7 +7239,7 @@ msgstr "效果預覽" #: editor/plugins/spatial_editor_plugin.cpp msgid "Not available when using the GLES2 renderer." -msgstr "使用 GLES2 算圖器時無法使用。" +msgstr "使用 GLES2 轉譯器時無法使用。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" @@ -7285,7 +7282,7 @@ 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 "" -"注意:顯示的 FPS 值時編輯器的畫面速率。\n" +"注意:顯示的 FPS 值為編輯器之畫面速率。\n" "無法實際反映為遊戲中的效能。" #: editor/plugins/spatial_editor_plugin.cpp @@ -7496,35 +7493,35 @@ msgstr "未命名的 Gizmo" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create Mesh2D" -msgstr "建立網格 2D (Mesh2D)" +msgstr "建立 Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Mesh2D Preview" -msgstr "建立網格 2D (Mesh2D) 預覽" +msgstr "建立 Mesh2D 預覽" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" -msgstr "建立多邊形 2D (Polygon2D)" +msgstr "建立 Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Polygon2D Preview" -msgstr "預覽多邊形 2D (Polygon2D)" +msgstr "預覽 Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" -msgstr "建立碰撞多邊形 2D (CollisionPolygon2D)" +msgstr "建立 CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "CollisionPolygon2D Preview" -msgstr "碰撞多邊形 2D (CollisionPolygon2D) 預覽" +msgstr "碰撞 CollisionPolygon2D 預覽" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" -msgstr "建立遮光 2D (LightOccluder2D)" +msgstr "建立 LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "LightOccluder2D Preview" -msgstr "遮光 2D (LightOccluder2D) 預覽" +msgstr "LightOccluder2D 預覽" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" @@ -7540,7 +7537,7 @@ msgstr "無效的幾何圖形,無法以網格取代。" #: editor/plugins/sprite_editor_plugin.cpp msgid "Convert to Mesh2D" -msgstr "轉換為網格 2D (Mesh2D)" +msgstr "轉換為 Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create polygon." @@ -7548,7 +7545,7 @@ msgstr "無效的幾何圖形,無法建立多邊形。" #: editor/plugins/sprite_editor_plugin.cpp msgid "Convert to Polygon2D" -msgstr "轉換為多邊形 2D (Polygon2D)" +msgstr "轉換為 Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create collision polygon." @@ -7556,7 +7553,7 @@ msgstr "無效的幾何圖形,無法建立碰撞多邊形。" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D Sibling" -msgstr "建立碰撞多邊形 2D (CollisionPolygon2D) 同級" +msgstr "建立 CollisionPolygon2D 同級" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create light occluder." @@ -7564,7 +7561,7 @@ msgstr "無效的幾何圖形,無法建立遮光。" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D Sibling" -msgstr "建立遮光 2D (LightOccluder2D) 同級" +msgstr "建立 LightOccluder2D 同級" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" @@ -7700,7 +7697,7 @@ msgstr "自 Sprite 表建立幀" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "SpriteFrames" -msgstr "SpriteFrames(Sprite 影格)" +msgstr "SpriteFrame" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" @@ -7708,7 +7705,7 @@ msgstr "設定區域矩形 (Region Rect)" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Margin" -msgstr "設置外邊距" +msgstr "設定外邊距" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" @@ -7745,7 +7742,7 @@ msgstr "分隔線:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "TextureRegion" -msgstr "紋理區域 (TextureRegion)" +msgstr "TextureRegion" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" @@ -7849,7 +7846,7 @@ msgstr "許多" #: editor/plugins/theme_editor_plugin.cpp msgid "Disabled LineEdit" -msgstr "已停用的行編輯" +msgstr "已停用的 LineEdit" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" @@ -7951,7 +7948,7 @@ msgstr "啟用優先級" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Filter tiles" -msgstr "過濾圖塊" +msgstr "篩選圖塊" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Give a TileSet resource to this TileMap to use its tiles." @@ -8229,7 +8226,7 @@ msgstr "建立圖塊" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" -msgstr "設定磁貼圖示" +msgstr "設定圖塊圖示" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Bitmask" @@ -8466,7 +8463,7 @@ msgstr "設定表示式" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Resize VisualShader node" -msgstr "調整視覺著色器 (VisualShader) 節點大小" +msgstr "調整 VisualShader 節點大小" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Uniform Name" @@ -8535,7 +8532,7 @@ msgstr "將 HSV 向量轉為同等之 RGB。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts RGB vector to HSV equivalent." -msgstr "將 RGB 向量轉為同等至 HSV。" +msgstr "將 RGB 向量轉為同等之 HSV。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sepia function." @@ -8649,7 +8646,7 @@ msgstr "回傳兩個參數間比較的布林結果。" msgid "" "Returns the boolean result of the comparison between INF (or NaN) and a " "scalar parameter." -msgstr "回傳 INF(或 NaN)與一個純量間比較的布林結果。" +msgstr "回傳 INF (或 NaN) 與一個純量間比較的布林結果。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean constant." @@ -8701,7 +8698,7 @@ msgstr "純量運算子。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "E constant (2.718282). Represents the base of the natural logarithm." -msgstr "E 常數(2.718282)。表示自然對數的底數。" +msgstr "E 常數 (2.718282)。表示自然對數的底數。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Epsilon constant (0.00001). Smallest possible scalar number." @@ -8725,7 +8722,7 @@ msgstr "π (Pi) 常數 (3.141593) 或 180 度。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Tau constant (6.283185) or 360 degrees." -msgstr "τ 常數 (6.283185) 或 360 度。" +msgstr "τ (Tau) 常數 (6.283185) 或 360 度。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sqrt2 constant (1.414214). Square root of 2." @@ -8770,7 +8767,7 @@ msgstr "尋找大於或等於該參數最近的整數。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Constrains a value to lie between two further values." -msgstr "將值限制欲兩個值之間。" +msgstr "將值限制於兩個值之間。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the cosine of the parameter." @@ -8782,7 +8779,7 @@ msgstr "回傳參數的雙曲餘弦值。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in radians to degrees." -msgstr "將弧度轉換為度。" +msgstr "將弧度轉換為角度。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-e Exponential." @@ -8802,7 +8799,7 @@ msgstr "計算引數的小數部分。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse of the square root of the parameter." -msgstr "回傳參數的平方根的倒數。" +msgstr "回傳參數的平方根之倒數。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Natural logarithm." @@ -8839,7 +8836,7 @@ msgstr "回傳第一個參數的第二個參數冪次的值。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in degrees to radians." -msgstr "將度數轉換為弧度。" +msgstr "將角度轉換為弧度。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 / scalar" @@ -8851,7 +8848,7 @@ msgstr "尋找參數最近的整數。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest even integer to the parameter." -msgstr "尋找參數最近的整數。" +msgstr "尋找參數最近的偶數。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Clamps the value between 0.0 and 1.0." @@ -9230,7 +9227,7 @@ msgstr "(限片段/光照模式)(純量)加總「x」與「y」進行 #: editor/plugins/visual_shader_editor_plugin.cpp msgid "VisualShader" -msgstr "視覺著色器 (VisualShader)" +msgstr "VisualShader" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Edit Visual Property" @@ -9258,7 +9255,7 @@ msgstr "是否要自列表中刪除「%s」修正檔?" #: editor/project_export.cpp msgid "Delete preset '%s'?" -msgstr "確定要刪除 Preset「%s」?" +msgstr "確定要刪除預設設定「%s」?" #: editor/project_export.cpp msgid "" @@ -9275,11 +9272,11 @@ msgid "" "export settings." msgstr "" "為平台「%s」匯出專案失敗。\n" -"可能使由於匯出 Preset 或匯出設定中的組態設定有問題導致。" +"可能是由於匯出預設設定或匯出設定中的組態設定有問題導致。" #: editor/project_export.cpp msgid "Release" -msgstr "釋出" +msgstr "發行" #: editor/project_export.cpp msgid "Exporting All" @@ -9295,7 +9292,7 @@ msgstr "該平台的匯出範本遺失/損毀:" #: editor/project_export.cpp msgid "Presets" -msgstr "Preset" +msgstr "預設設定" #: editor/project_export.cpp editor/project_settings_editor.cpp msgid "Add..." @@ -9306,8 +9303,8 @@ 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 "" -"若選中,則 Preset 將可使用一鍵部署。\n" -"每個平台只可將一個 Preset 設為可執行。" +"若選中,則預設設定將可使用單鍵部署。\n" +"每個平台只可將一個預設設定設為可執行。" #: editor/project_export.cpp msgid "Export Path" @@ -9342,7 +9339,7 @@ msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"過濾非資源的檔案/資料夾以匯出\n" +"篩選非資源的檔案/資料夾以進行匯出\n" "(以半形逗號區分,如: *.json, *.txt, docs/*)" #: editor/project_export.cpp @@ -9350,7 +9347,7 @@ msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"過濾以在專案內排除檔案/資料夾\n" +"進行篩選以在專案內排除檔案/資料夾\n" "(以半形逗號區分,如: *.json, *.txt, docs/*)" #: editor/project_export.cpp @@ -9550,7 +9547,7 @@ msgstr "專案安裝路徑:" #: editor/project_manager.cpp msgid "Renderer:" -msgstr "算圖器:" +msgstr "轉譯器:" #: editor/project_manager.cpp msgid "OpenGL ES 3.0" @@ -9586,7 +9583,7 @@ msgstr "" #: editor/project_manager.cpp msgid "Renderer can be changed later, but scenes may need to be adjusted." -msgstr "稍後仍可更改算圖器,但可能需要對場景進行調整。" +msgstr "稍後仍可更改轉譯器,但可能需要對場景進行調整。" #: editor/project_manager.cpp msgid "Unnamed Project" @@ -9602,7 +9599,7 @@ msgstr "錯誤:專案在檔案系統上遺失。" #: editor/project_manager.cpp msgid "Can't open project at '%s'." -msgstr "無法在「%s」中打開專案。" +msgstr "無法於「%s」打開專案。" #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" @@ -9625,7 +9622,7 @@ msgstr "" "%s\n" "\n" "若您繼續開啟,會將其轉換為目前 Godot 版本的組態設定檔案格式。\n" -"警告:您將不再可使用過往版本的引擎開啟該專案。" +"警告:您將不再可使用舊版的 Godot 開啟該專案。" #: editor/project_manager.cpp msgid "" @@ -9638,12 +9635,13 @@ msgid "" "Warning: You won't be able to open the project with previous versions of the " "engine anymore." msgstr "" -"下列專案設定檔時由較舊版本的引擎所產生,且需要將其轉換為目前的版本:\n" +"下列專案設定檔是由較舊版本的 Godot 產生,需進行轉換以適用於目前版本的 " +"Godot:\n" "\n" "%s\n" "\n" "要進行轉換嗎?\n" -"警告:您將不再可使用過往版本的引擎開啟該專案。" +"警告:您將不再可使用舊版的 Godot 開啟該專案。" #: editor/project_manager.cpp msgid "" @@ -9709,7 +9707,7 @@ msgid "" "Are you sure to scan %s folders for existing Godot projects?\n" "This could take a while." msgstr "" -"確定要為現存的 Godot 專案掃描 %s 資料夾嗎?\n" +"確定要掃描 %s 中的 Godot 專案嗎?\n" "這可能需要一段時間。" #: editor/project_manager.cpp @@ -9766,12 +9764,12 @@ msgid "" "To filter projects by name and full path, the query must contain at least " "one `/` character." msgstr "" -"搜尋框可以用來依據名稱與路徑中的最後一部分來過濾專案。\n" -"若要以名稱與完整路徑來過濾專案,搜尋內容應該至少包含一個「/」字元。" +"搜尋框可以用來依據名稱與路徑中的最後一部分來篩選專案。\n" +"若要以名稱與完整路徑來過濾專案,搜尋內容應至少包含一個「/」字元。" #: editor/project_settings_editor.cpp msgid "Key " -msgstr "鍵 " +msgstr "按鍵 " #: editor/project_settings_editor.cpp msgid "Joy Button" @@ -9789,7 +9787,7 @@ msgstr "滑鼠按鈕" msgid "" "Invalid action name. it cannot be empty nor contain '/', ':', '=', '\\' or " "'\"'" -msgstr "無效的操作名稱。不能為空或包含「/」、「:」、「=」、「\\」或「\"」" +msgstr "無效的操作名稱。名稱不可留空或包含 “/”, “:”, “=”, “\\” 或 “\"”" #: editor/project_settings_editor.cpp msgid "An action with the name '%s' already exists." @@ -9885,7 +9883,7 @@ msgstr "新增事件" #: editor/project_settings_editor.cpp msgid "Button" -msgstr "Button (按鈕)" +msgstr "按鈕" #: editor/project_settings_editor.cpp msgid "Left Button." @@ -9931,7 +9929,7 @@ msgstr "刪除項目" msgid "" "Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " "'\"'." -msgstr "無效的操作名稱。不能為空或包含「/」、「:」、「=」、「\\」或「\"」。" +msgstr "無效的操作名稱。名稱不可留空或包含 “/”, “:”, “=”, “\\” 或 “\"”。" #: editor/project_settings_editor.cpp msgid "Add Input Action" @@ -9983,11 +9981,11 @@ msgstr "移除資源重映射選項" #: editor/project_settings_editor.cpp msgid "Changed Locale Filter" -msgstr "更改區域過濾" +msgstr "更改地區設定篩選條件" #: editor/project_settings_editor.cpp msgid "Changed Locale Filter Mode" -msgstr "更改區域過濾模式" +msgstr "更改地區設定篩選模式" #: editor/project_settings_editor.cpp msgid "Project Settings (project.godot)" @@ -10051,31 +10049,31 @@ msgstr "資源:" #: editor/project_settings_editor.cpp msgid "Remaps by Locale:" -msgstr "依語言重映射:" +msgstr "依地區設定重映射:" #: editor/project_settings_editor.cpp msgid "Locale" -msgstr "語言" +msgstr "地區" #: editor/project_settings_editor.cpp msgid "Locales Filter" -msgstr "語言過濾" +msgstr "地區篩選條件" #: editor/project_settings_editor.cpp msgid "Show All Locales" -msgstr "顯示所有語言" +msgstr "顯示所有地區" #: editor/project_settings_editor.cpp msgid "Show Selected Locales Only" -msgstr "僅顯示選定的語言" +msgstr "僅顯示選定的地區" #: editor/project_settings_editor.cpp msgid "Filter mode:" -msgstr "過濾模式:" +msgstr "篩選模式:" #: editor/project_settings_editor.cpp msgid "Locales:" -msgstr "語言:" +msgstr "地區:" #: editor/project_settings_editor.cpp msgid "AutoLoad" @@ -10087,7 +10085,7 @@ msgstr "外掛" #: editor/property_editor.cpp msgid "Preset..." -msgstr "Preset..." +msgstr "預設設定..." #: editor/property_editor.cpp msgid "Zero" @@ -10099,7 +10097,7 @@ msgstr "緩入緩出" #: editor/property_editor.cpp msgid "Easing Out-In" -msgstr "緩入緩出(反向)" +msgstr "緩出緩入" #: editor/property_editor.cpp msgid "File..." @@ -10333,7 +10331,7 @@ msgstr "取消附加腳本" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." -msgstr "此操作無法在樹狀根執行。" +msgstr "此操作無法在樹狀根節點執行。" #: editor/scene_tree_dock.cpp msgid "Move Node In Parent" @@ -10364,6 +10362,10 @@ msgid "Make node as Root" msgstr "將節點設為根節點" #: editor/scene_tree_dock.cpp +msgid "Delete %d nodes and any children?" +msgstr "確定要刪除節點「%s」與其子節點嗎?" + +#: editor/scene_tree_dock.cpp msgid "Delete %d nodes?" msgstr "刪除 %d 個節點?" @@ -10456,7 +10458,7 @@ msgstr "更改節點的型別" msgid "" "Couldn't save new scene. Likely dependencies (instances) couldn't be " "satisfied." -msgstr "無法保存新場景。很可能由於無法滿足其依賴性(實體)。" +msgstr "無法保存新場景。可能是由於無法滿足其依賴性(實體)。" #: editor/scene_tree_dock.cpp msgid "Error saving scene." @@ -10493,7 +10495,7 @@ msgid "" "disabled." msgstr "" "無法附加腳本:未註冊任何語言。\n" -"有可能是由於編輯器在建構時未啟用任何語言模組。" +"可能是由於編輯器在建構時未啟用任何語言模組。" #: editor/scene_tree_dock.cpp msgid "Add Child Node" @@ -10634,7 +10636,7 @@ msgid "" "AnimationPlayer is pinned.\n" "Click to unpin." msgstr "" -"已固定動畫播放器 (AnimationPlayer)。\n" +"已固定 AnimationPlayer。\n" "點擊以取消固定。" #: editor/scene_tree_editor.cpp @@ -10739,7 +10741,7 @@ msgstr "可用的腳本路徑/名稱。" #: editor/script_create_dialog.cpp msgid "Allowed: a-z, A-Z, 0-9, _ and ." -msgstr "可使用:a-z、A-Z、0-9、_ 以及 ." +msgstr "可使用:a-z, A-Z, 0-9, _ 以及 ." #: editor/script_create_dialog.cpp msgid "Built-in script (into scene file)." @@ -10761,7 +10763,7 @@ msgstr "腳本檔案已存在。" msgid "" "Note: Built-in scripts have some limitations and can't be edited using an " "external editor." -msgstr "注意:內置腳本有些限制,且無法使用外部編輯器來編輯。" +msgstr "注意:內建腳本有些限制,且無法使用外部編輯器來編輯。" #: editor/script_create_dialog.cpp msgid "Class Name:" @@ -10869,11 +10871,11 @@ msgstr "數值" #: editor/script_editor_debugger.cpp msgid "Monitors" -msgstr "監視程式" +msgstr "監視器" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." -msgstr "子列表中選擇一個或多個項目以顯示圖表。" +msgstr "在子列表中選擇一個或多個項目以顯示圖表。" #: editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" @@ -10957,7 +10959,7 @@ msgstr "更改光照半徑" #: editor/spatial_editor_gizmos.cpp msgid "Change AudioStreamPlayer3D Emission Angle" -msgstr "更改音訊串流播放器 3D (AudioStreamPlayer3D) 發射角" +msgstr "更改 AudioStreamPlayer3D 發射角" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera FOV" @@ -10977,7 +10979,7 @@ msgstr "更改粒子 AABB" #: editor/spatial_editor_gizmos.cpp msgid "Change Probe Extents" -msgstr "更改探針範圍" +msgstr "更改探查範圍" #: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp msgid "Change Sphere Shape Radius" @@ -11237,11 +11239,11 @@ msgstr "選擇距離:" #: modules/gridmap/grid_map_editor_plugin.cpp 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 "提供網格庫資源予該網格地圖以使用其網格。" +msgstr "提供 MeshLibrary 予該 GridMap 以使用其網格。" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -11253,7 +11255,7 @@ msgstr "內部異常堆疊回溯結束" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "Bake 導航網格 (NavMesh)" +msgstr "製作 NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -11391,11 +11393,11 @@ msgstr "訊號:" #: modules/visual_script/visual_script_editor.cpp 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:" @@ -11451,13 +11453,12 @@ msgstr "重複視覺腳本 (VisualScript) 節點" #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." -msgstr "" -"按住 %s 以拖移 Getter 節點。按住 Shift 以拖移一個通用的簽章 (Signature)。" +msgstr "按住 %s 以拖移 Getter 節點。按住 Shift 以拖移通用簽章 (Signature)。" #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" -"按住 Ctrl 以拖移 Getter 節點。按住 Shift 以拖移一個通用的簽名 (Signature)。" +"按住 Ctrl 以拖移 Getter 節點。按住 Shift 以拖移通用通用簽章 (Signature)。" #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a simple reference to the node." @@ -11477,7 +11478,7 @@ msgstr "按住 Ctrl 以拖動一個變數 Setter 節點。" #: modules/visual_script/visual_script_editor.cpp msgid "Add Preload Node" -msgstr "新增餘載 (Preload) 節點" +msgstr "新增預載 (Preload) 節點" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" @@ -11665,7 +11666,7 @@ msgstr "無效的索引屬性名稱。" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "基礎物件不是一個節點!" +msgstr "基礎物件並非節點!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" @@ -11677,11 +11678,11 @@ msgstr "無效的索引屬性名稱「%s」,於節點「%s」。" #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " -msgstr ": 無效的引數型別 : " +msgstr ": 無效的引數型別: " #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid arguments: " -msgstr ": 無效的引數 : " +msgstr ": 無效的引數: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " @@ -11751,11 +11752,11 @@ msgstr "尚未於編輯器設定中設定 OpenJDK Jarsigner。" #: platform/android/export/export.cpp msgid "Debug keystore not configured in the Editor Settings nor in the preset." -msgstr "尚未於編輯器設定或 Preset 中設定除錯鑰匙圈 (Keystore)。" +msgstr "尚未於編輯器設定或預設設定中設定金鑰儲存區 (Keystore)。" #: platform/android/export/export.cpp msgid "Release keystore incorrectly configured in the export preset." -msgstr "釋出 Keystore 中不正確之組態設定至匯出 Preset。" +msgstr "發行金鑰儲存區中不正確之組態設定至匯出預設設定。" #: platform/android/export/export.cpp msgid "Custom build requires a valid Android SDK path in Editor Settings." @@ -11866,7 +11867,7 @@ msgstr "無效的識別符:" #: platform/iphone/export/export.cpp msgid "Required icon is not specified in the preset." -msgstr "必須在 Preset 中指定必填圖示。" +msgstr "必須在預設設定中指定必填圖示。" #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" @@ -11979,8 +11980,7 @@ msgid "" "define its shape." msgstr "" "該節點無形狀,故無法與其他物件碰撞或互動。\n" -"請考慮新增一個 CollisionShape2D 或 CollisionPolygon2D 為其子節點以定義其形" -"狀。" +"建議您新增 CollisionShape2D 或 CollisionPolygon2D 作為其子節點以定義其形狀。" #: scene/2d/collision_polygon_2d.cpp msgid "" @@ -11988,7 +11988,7 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionPolygon2D 只能為 CollisionObject2D 衍生的節點提供碰撞形狀資訊。請僅" +"CollisionPolygon2D 僅可為 CollisionObject2D 衍生的節點提供碰撞形狀資訊。請僅" "於 Area2D、StaticBody2D、RigidBody2D、KinematicBody2D…等節點下作為子節點使" "用。" @@ -12002,7 +12002,7 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionShape2D 只能為 CollisionObject2D 衍生的節點提供碰撞形狀資訊。請僅於 " +"CollisionShape2D 僅可為 CollisionObject2D 衍生的節點提供碰撞形狀資訊。請僅於 " "Area2D、StaticBody2D、RigidBody2D、KinematicBody2D…等節點下作為子節點使用以提" "供形狀。" @@ -12012,6 +12012,14 @@ msgid "" "shape resource for it!" msgstr "CollisionShape2D 必須被賦予形狀才能運作。請先建立形狀!" +#: 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 "" +"基於多邊形的形狀不應該被 CollisionShape2D 節點直接使用或編輯。請使用 " +"CollisionPolygon2D 節點。" + #: scene/2d/cpu_particles_2d.cpp msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " @@ -12063,7 +12071,7 @@ msgid "" "CPUParticles\" option for this purpose." msgstr "" "GLES2 視訊驅動程式目前不支援基於 GPU 的粒子。\n" -"請改為使用 CPUParticles2D 節點。你可以使用「轉換為 CPUParticles」選項。" +"請改為使用 CPUParticles2D 節點。可使用「Convert to CPUParticles」選項。" #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" @@ -12075,7 +12083,9 @@ msgstr "尚未指定要處理粒子的材料,故未產生任何行為。" msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." -msgstr "Particles2D 動畫需要使用開啟了「粒子動畫」的 CanvasItemMaterial。" +msgstr "" +"Particles2D 動畫需要使用開啟了「Particles Animation(粒子動畫)」的 " +"CanvasItemMaterial。" #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -12106,7 +12116,7 @@ msgstr "Bone2D 僅在其為 Skeleton2D 或另一個 Bone2D 的子節點時有效 #: scene/2d/skeleton_2d.cpp msgid "" "This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." -msgstr "該骨骼缺少適當的 REST 姿勢。請跳至 Skeleton2D 節點並進行設定。" +msgstr "該骨骼缺少適當的「靜止姿勢」。請跳至 Skeleton2D 節點並進行設定。" #: scene/2d/tile_map.cpp msgid "" @@ -12114,7 +12124,7 @@ msgid "" "to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, " "KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionShape2D 只能為 CollisionObject2D 衍生的節點提供碰撞形狀資訊。請將其" +"CollisionShape2D 僅可為 CollisionObject2D 衍生的節點提供碰撞形狀資訊。請將其" "設為 Area2D、StaticBody2D、RigidBody2D、KinematicBody2D… 的子節點以賦予其形" "狀。" @@ -12183,7 +12193,7 @@ msgid "" "its shape." msgstr "" "該節點沒有形狀,故無法與其他物件碰撞或互動。\n" -"請考慮新增一個 CollisionShape 或 CollisionPolygon 作為其子節點以定義其形狀。" +"建議您新增 CollisionShape 或 CollisionPolygon 作為其子節點以定義其形狀。" #: scene/3d/collision_polygon.cpp msgid "" @@ -12191,7 +12201,7 @@ msgid "" "CollisionObject derived node. Please only use it as a child of Area, " "StaticBody, RigidBody, KinematicBody, etc. to give them a shape." msgstr "" -"CollisionPolygon 只能為 CollisionObject 衍生的節點提供碰撞形狀資訊。請僅於 " +"CollisionPolygon 僅可為 CollisionObject 衍生的節點提供碰撞形狀資訊。請僅於 " "Area、StaticBody、RigidBody、KinematicBody…等節點下作為子節點使用。" #: scene/3d/collision_polygon.cpp @@ -12204,7 +12214,7 @@ msgid "" "derived node. Please only use it as a child of Area, StaticBody, RigidBody, " "KinematicBody, etc. to give them a shape." msgstr "" -"CollisionShape 只能為 CollisionObject 衍生的節點提供碰撞形狀資訊。請僅於 " +"CollisionShape 僅可為 CollisionObject 衍生的節點提供碰撞形狀資訊。請僅於 " "Area、StaticBody、RigidBody、KinematicBody…等節點下作為子節點使用。" #: scene/3d/collision_shape.cpp @@ -12217,7 +12227,7 @@ msgstr "CollisionShape 必須被賦予形狀才能運作。請先建立形狀。 msgid "" "Plane shapes don't work well and will be removed in future versions. Please " "don't use them." -msgstr "平面形狀的運作不太正常,且將在未來的版本移除。請勿使用。" +msgstr "平面形狀時常無法正常使用,且將在未來的版本移除。請勿使用。" #: scene/3d/collision_shape.cpp msgid "" @@ -12271,7 +12281,7 @@ msgid "" "\" option for this purpose." msgstr "" "GLES2 視訊驅動程式不支援基於 GPU 的粒子。\n" -"請改為使用 CPUParticles 節點。為此您可以使用「轉換為 CPUParticles」選項。" +"請改為使用 CPUParticles 節點。可使用「Convert to CPUParticles」選項。" #: scene/3d/particles.cpp msgid "" @@ -12295,8 +12305,8 @@ msgid "" "PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its " "parent Path's Curve resource." msgstr "" -"PathFollow 的 ROTATION_ORIENTED 需要在其母節點 Path 的 Curve 資源內啟用「上向" -"量 (Up Vector)」。" +"PathFollow 的 ROTATION_ORIENTED 需要在其母節點 Path 的 Curve 資源內啟用「Up " +"Vector」。" #: scene/3d/physics_body.cpp msgid "" @@ -12313,7 +12323,7 @@ msgid "" "The \"Remote Path\" property must point to a valid Spatial or Spatial-" "derived node to work." msgstr "" -"「遠端路徑」屬性必須指向一個有效的 Spatial 或 Spatial 衍生之節點才可運作。" +"「Remote Path」屬性必須指向一個有效的 Spatial 或 Spatial 衍生之節點才可運作。" #: scene/3d/soft_body.cpp msgid "This body will be ignored until you set a mesh." @@ -12362,8 +12372,8 @@ 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 "" -"已忽略該 WorldEnvironment。請(為 3D 場景)新增一個相機或(為 2D 場景)設定環" -"境之背景模式 (Background Mode) 為畫布 (Canvas)。" +"已忽略該 WorldEnvironment。請(為 3D 場景)新增一個相機或(為 2D 場景)將 " +"Environment 之 Background Mode 設為 Canvas。" #: scene/animation/animation_blend_tree.cpp msgid "On BlendTree node '%s', animation not found: '%s'" @@ -12413,7 +12423,7 @@ msgid "" msgstr "" "色彩: #%s\n" "左鍵點擊:設定色彩\n" -"右鍵點擊:刪除 Preset" +"右鍵點擊:刪除預設設定" #: scene/gui/color_picker.cpp msgid "Pick a color from the editor window." @@ -12433,7 +12443,7 @@ msgstr "在 16 進位與代碼值之間切換。" #: scene/gui/color_picker.cpp msgid "Add current color as a preset." -msgstr "將目前的顏色加入 Preset。" +msgstr "將目前的顏色加入預設設定。" #: scene/gui/container.cpp msgid "" @@ -12450,8 +12460,8 @@ 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 "" -"由於設定的滑鼠篩選 (Mouse Filter) 設定為「忽略 (Ignore)」,將不會顯示提示 " -"Tooltip 。要解決該問題,請將滑鼠篩選設為「停止 (Stop)」或「通過 (Pass)」。" +"由於設定的 Mouse Filter 設定為「Ignore」,將不會顯示提示工具提示 。要解決該問" +"題,請將 Mouse Filter 設為「Stop」或「Pass」。" #: scene/gui/dialogs.cpp msgid "Alert!" @@ -12472,7 +12482,7 @@ msgstr "" #: scene/gui/range.cpp msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." -msgstr "若啟用「表示式編輯」,則「最小值」必須大於 0。" +msgstr "若啟用「Exp Edit」,則「Min Value」必須大於 0。" #: scene/gui/scroll_container.cpp msgid "" @@ -12492,7 +12502,7 @@ msgstr "(其它)" msgid "" "Default Environment as specified in Project Settings (Rendering -> " "Environment -> Default Environment) could not be loaded." -msgstr "無法載入專案設定中指定的預設環境(算圖 -> 環境 -> 預設環境)。" +msgstr "無法載入專案設定中指定的預設環境(算繪 -> 環境 -> 預設環境)。" #: scene/main/viewport.cpp msgid "" @@ -12501,13 +12511,13 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" -"該 Viewport 尚未被設定為算圖目標。若你想直接將其內容顯示於畫面上,請將其設為 " +"該 Viewport 尚未被設定為算繪目標。若你想直接將其內容顯示於畫面上,請將其設為 " "Control 的子節點以讓其取得大小。否則請將其設為 RenderTarget 並指派其內部紋理" "為其他節點以顯示。" #: scene/main/viewport.cpp msgid "Viewport size must be greater than 0 to render anything." -msgstr "Viewport 大小必須大於 0 才可進行算圖。" +msgstr "Viewport 大小必須大於 0 才可進行算繪。" #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." @@ -12537,6 +12547,9 @@ msgstr "Varying 變數只可在頂點函式中指派。" msgid "Constants cannot be modified." msgstr "不可修改常數。" +#~ msgid "Current scene was never saved, please save it prior to running." +#~ msgstr "目前的場景從未被保存,請先保存以執行。" + #~ msgid "Not in resource path." #~ msgstr "不在資源路徑中。" |