diff options
140 files changed, 3095 insertions, 5658 deletions
diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h index 7ade4a2dfc..a46a00203f 100644 --- a/core/io/resource_loader.h +++ b/core/io/resource_loader.h @@ -123,6 +123,7 @@ public: static int get_import_order(const String &p_path); static void set_timestamp_on_load(bool p_timestamp) { timestamp_on_load = p_timestamp; } + static bool get_timestamp_on_load() { return timestamp_on_load; } static void notify_load_error(const String &p_err) { if (err_notify) err_notify(err_notify_ud, p_err); diff --git a/core/io/resource_saver.h b/core/io/resource_saver.h index 6134d9db57..cdd43292a2 100644 --- a/core/io/resource_saver.h +++ b/core/io/resource_saver.h @@ -76,6 +76,8 @@ public: static void add_resource_format_saver(ResourceFormatSaver *p_format_saver, bool p_at_front = false); static void set_timestamp_on_save(bool p_timestamp) { timestamp_on_save = p_timestamp; } + static bool get_timestamp_on_save() { return timestamp_on_save; } + static void set_save_callback(ResourceSavedCallback p_callback); }; diff --git a/core/ustring.h b/core/ustring.h index d2766ec7a3..8e4dbd8031 100644 --- a/core/ustring.h +++ b/core/ustring.h @@ -63,7 +63,7 @@ public: CharString &operator+=(char p_char); int length() const { return size() ? size() - 1 : 0; } const char *get_data() const; - operator const char *() { return get_data(); }; + operator const char *() const { return get_data(); }; }; typedef wchar_t CharType; diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml index 3b3638a4f3..499da4b8a3 100644 --- a/doc/classes/AnimationPlayer.xml +++ b/doc/classes/AnimationPlayer.xml @@ -110,6 +110,12 @@ Get the actual playing speed of current animation or 0 if not playing. This speed is the [code]playback_speed[/code] property multiplied by [code]custom_speed[/code] argument specified when calling the [code]play[/code] method. </description> </method> + <method name="get_queue"> + <return type="PoolStringArray"> + </return> + <description> + </description> + </method> <method name="has_animation" qualifiers="const"> <return type="bool"> </return> diff --git a/doc/classes/CPUParticles.xml b/doc/classes/CPUParticles.xml index c778cd56b3..2073ca0664 100644 --- a/doc/classes/CPUParticles.xml +++ b/doc/classes/CPUParticles.xml @@ -127,11 +127,11 @@ </member> <member name="randomness" type="float" setter="set_randomness_ratio" getter="get_randomness_ratio"> </member> - <member name="scale" type="float" setter="set_param" getter="get_param"> + <member name="scale_amount" type="float" setter="set_param" getter="get_param"> </member> - <member name="scale_curve" type="Curve" setter="set_param_curve" getter="get_param_curve"> + <member name="scale_amount_curve" type="Curve" setter="set_param_curve" getter="get_param_curve"> </member> - <member name="scale_random" type="float" setter="set_param_randomness" getter="get_param_randomness"> + <member name="scale_amount_random" type="float" setter="set_param_randomness" getter="get_param_randomness"> </member> <member name="speed_scale" type="float" setter="set_speed_scale" getter="get_speed_scale"> </member> diff --git a/doc/classes/CPUParticles2D.xml b/doc/classes/CPUParticles2D.xml index bae725d47c..12a176589c 100644 --- a/doc/classes/CPUParticles2D.xml +++ b/doc/classes/CPUParticles2D.xml @@ -123,11 +123,11 @@ </member> <member name="randomness" type="float" setter="set_randomness_ratio" getter="get_randomness_ratio"> </member> - <member name="scale" type="float" setter="set_param" getter="get_param"> + <member name="scale_amount" type="float" setter="set_param" getter="get_param"> </member> - <member name="scale_curve" type="Curve" setter="set_param_curve" getter="get_param_curve"> + <member name="scale_amount_curve" type="Curve" setter="set_param_curve" getter="get_param_curve"> </member> - <member name="scale_random" type="float" setter="set_param_randomness" getter="get_param_randomness"> + <member name="scale_amount_random" type="float" setter="set_param_randomness" getter="get_param_randomness"> </member> <member name="speed_scale" type="float" setter="set_speed_scale" getter="get_speed_scale"> </member> diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml index 4bae656740..63f82fe2bd 100644 --- a/doc/classes/CanvasItem.xml +++ b/doc/classes/CanvasItem.xml @@ -135,7 +135,7 @@ <method name="draw_multimesh"> <return type="void"> </return> - <argument index="0" name="mesh" type="Mesh"> + <argument index="0" name="mesh" type="MultiMesh"> </argument> <argument index="1" name="texture" type="Texture"> </argument> diff --git a/doc/classes/ConvexPolygonShape2D.xml b/doc/classes/ConvexPolygonShape2D.xml index 6b31149c2f..8210e7dc9c 100644 --- a/doc/classes/ConvexPolygonShape2D.xml +++ b/doc/classes/ConvexPolygonShape2D.xml @@ -18,7 +18,7 @@ <argument index="0" name="point_cloud" type="PoolVector2Array"> </argument> <description> - Currently, this method does nothing. + Based on the set of points provided, this creates and assigns the [member points] property using the convex hull algorithm. Removing all unneeded points. See [method Geometry.convex_hull_2d] for details. </description> </method> </methods> diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml index 949c93761e..80281a603a 100644 --- a/doc/classes/Environment.xml +++ b/doc/classes/Environment.xml @@ -159,6 +159,8 @@ <member name="glow_enabled" type="bool" setter="set_glow_enabled" getter="is_glow_enabled"> Enables glow rendering. </member> + <member name="glow_hdr_luminance_cap" type="float" setter="set_glow_hdr_luminance_cap" getter="get_glow_hdr_luminance_cap"> + </member> <member name="glow_hdr_scale" type="float" setter="set_glow_hdr_bleed_scale" getter="get_glow_hdr_bleed_scale"> Bleed scale of the HDR glow. </member> diff --git a/doc/classes/Generic6DOFJoint.xml b/doc/classes/Generic6DOFJoint.xml index e1046e282a..b6ac69e257 100644 --- a/doc/classes/Generic6DOFJoint.xml +++ b/doc/classes/Generic6DOFJoint.xml @@ -242,6 +242,8 @@ </member> <member name="linear_spring_z/stiffness" type="float" setter="set_param_z" getter="get_param_z"> </member> + <member name="precision" type="int" setter="set_precision" getter="get_precision"> + </member> </members> <constants> <constant name="PARAM_LINEAR_LOWER_LIMIT" value="0" enum="Param"> diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml index a958c3fcfa..b2e3885ff2 100644 --- a/doc/classes/TextEdit.xml +++ b/doc/classes/TextEdit.xml @@ -467,7 +467,9 @@ <constant name="MENU_UNDO" value="5" enum="MenuItems"> Undoes the previous action. </constant> - <constant name="MENU_MAX" value="6" enum="MenuItems"> + <constant name="MENU_REDO" value="6" enum="MenuItems"> + </constant> + <constant name="MENU_MAX" value="7" enum="MenuItems"> </constant> </constants> <theme_items> diff --git a/doc/classes/Theme.xml b/doc/classes/Theme.xml index fe43b54d5e..8c6acd2c51 100644 --- a/doc/classes/Theme.xml +++ b/doc/classes/Theme.xml @@ -12,6 +12,12 @@ <demos> </demos> <methods> + <method name="clear"> + <return type="void"> + </return> + <description> + </description> + </method> <method name="clear_color"> <return type="void"> </return> diff --git a/doc/classes/VisualServer.xml b/doc/classes/VisualServer.xml index b24eeaa112..d2bc56001c 100644 --- a/doc/classes/VisualServer.xml +++ b/doc/classes/VisualServer.xml @@ -1161,7 +1161,9 @@ </argument> <argument index="8" name="hdr_bleed_scale" type="float"> </argument> - <argument index="9" name="bicubic_upscale" type="bool"> + <argument index="9" name="hdr_luminance_cap" type="float"> + </argument> + <argument index="10" name="bicubic_upscale" type="bool"> </argument> <description> </description> diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp index d52be09cac..45b0d695a3 100644 --- a/drivers/gles2/shader_compiler_gles2.cpp +++ b/drivers/gles2/shader_compiler_gles2.cpp @@ -814,8 +814,8 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { /** SPATIAL SHADER **/ actions[VS::SHADER_SPATIAL].renames["WORLD_MATRIX"] = "world_transform"; - actions[VS::SHADER_SPATIAL].renames["INV_CAMERA_MATRIX"] = "camera_matrix"; - actions[VS::SHADER_SPATIAL].renames["CAMERA_MATRIX"] = "camera_inverse_matrix"; + actions[VS::SHADER_SPATIAL].renames["INV_CAMERA_MATRIX"] = "camera_inverse_matrix"; + actions[VS::SHADER_SPATIAL].renames["CAMERA_MATRIX"] = "camera_matrix"; actions[VS::SHADER_SPATIAL].renames["PROJECTION_MATRIX"] = "projection_matrix"; actions[VS::SHADER_SPATIAL].renames["INV_PROJECTION_MATRIX"] = "projection_inverse_matrix"; actions[VS::SHADER_SPATIAL].renames["MODELVIEW_MATRIX"] = "modelview"; @@ -931,7 +931,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { actions[VS::SHADER_PARTICLES].renames["COLOR"] = "out_color"; actions[VS::SHADER_PARTICLES].renames["VELOCITY"] = "out_velocity_active.xyz"; actions[VS::SHADER_PARTICLES].renames["MASS"] = "mass"; - actions[VS::SHADER_PARTICLES].renames["ACTIVE"] = "active"; + actions[VS::SHADER_PARTICLES].renames["ACTIVE"] = "shader_active"; actions[VS::SHADER_PARTICLES].renames["RESTART"] = "restart"; actions[VS::SHADER_PARTICLES].renames["CUSTOM"] = "out_custom"; actions[VS::SHADER_PARTICLES].renames["TRANSFORM"] = "xform"; diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp index 2372dfb17e..adb145711d 100644 --- a/drivers/gles3/shader_compiler_gles3.cpp +++ b/drivers/gles3/shader_compiler_gles3.cpp @@ -948,7 +948,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() { actions[VS::SHADER_PARTICLES].renames["COLOR"] = "out_color"; actions[VS::SHADER_PARTICLES].renames["VELOCITY"] = "out_velocity_active.xyz"; actions[VS::SHADER_PARTICLES].renames["MASS"] = "mass"; - actions[VS::SHADER_PARTICLES].renames["ACTIVE"] = "active"; + actions[VS::SHADER_PARTICLES].renames["ACTIVE"] = "shader_active"; actions[VS::SHADER_PARTICLES].renames["RESTART"] = "restart"; actions[VS::SHADER_PARTICLES].renames["CUSTOM"] = "out_custom"; actions[VS::SHADER_PARTICLES].renames["TRANSFORM"] = "xform"; diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp index 926fa37040..9f1082ecc4 100644 --- a/editor/create_dialog.cpp +++ b/editor/create_dialog.cpp @@ -89,8 +89,9 @@ void CreateDialog::popup_create(bool p_dont_clear, bool p_replace_mode) { _save_and_update_favorite_list(); // Restore valid window bounds or pop up at default size. - if (EditorSettings::get_singleton()->has_setting("interface/dialogs/create_new_node_bounds")) { - popup(EditorSettings::get_singleton()->get("interface/dialogs/create_new_node_bounds")); + Rect2 saved_size = EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "create_new_node", Rect2()); + if (saved_size != Rect2()) { + popup(saved_size); } else { Size2 popup_size = Size2(900, 700) * editor_get_scale(); @@ -415,7 +416,7 @@ void CreateDialog::_notification(int p_what) { } } break; case NOTIFICATION_POPUP_HIDE: { - EditorSettings::get_singleton()->set("interface/dialogs/create_new_node_bounds", get_rect()); + EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "create_new_node", get_rect()); } break; } } diff --git a/editor/editor_help_search.cpp b/editor/editor_help_search.cpp index 8676dac921..4e4c5143f2 100644 --- a/editor/editor_help_search.cpp +++ b/editor/editor_help_search.cpp @@ -132,7 +132,7 @@ void EditorHelpSearch::_notification(int p_what) { results_tree->clear(); get_ok()->set_disabled(true); - EditorSettings::get_singleton()->set("interface/dialogs/search_help_bounds", get_rect()); + EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "search_help", get_rect()); } break; case NOTIFICATION_PROCESS: { @@ -177,8 +177,9 @@ void EditorHelpSearch::popup_dialog() { void EditorHelpSearch::popup_dialog(const String &p_term) { // Restore valid window bounds or pop up at default size. - if (EditorSettings::get_singleton()->has_setting("interface/dialogs/search_help_bounds")) - popup(EditorSettings::get_singleton()->get("interface/dialogs/search_help_bounds")); + Rect2 saved_size = EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "search_help", Rect2()); + if (saved_size != Rect2()) + popup(saved_size); else popup_centered_ratio(0.5F); diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index b50af93352..10c9974cdd 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -128,18 +128,22 @@ void EditorProperty::_notification(int p_what) { bottom_rect = Rect2(m, rect.size.height + get_constant("vseparation", "Tree"), size.width - m, bottom_editor->get_combined_minimum_size().height); } - } - if (keying) { - Ref<Texture> key; + if (keying) { + Ref<Texture> key; - if (use_keying_next()) { - key = get_icon("KeyNext", "EditorIcons"); - } else { - key = get_icon("Key", "EditorIcons"); - } + if (use_keying_next()) { + key = get_icon("KeyNext", "EditorIcons"); + } else { + key = get_icon("Key", "EditorIcons"); + } - rect.size.x -= key->get_width() + get_constant("hseparator", "Tree"); + rect.size.x -= key->get_width() + get_constant("hseparator", "Tree"); + + if (no_children) { + text_size -= key->get_width() + 4 * EDSCALE; + } + } } //set children diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index 57c6fa3547..9c9302e7cd 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -3096,7 +3096,7 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ } break; case Variant::ARRAY: { EditorPropertyArray *editor = memnew(EditorPropertyArray); - editor->setup(Variant::ARRAY); + editor->setup(Variant::ARRAY, p_hint_text); add_property_editor(p_path, editor); } break; case Variant::POOL_BYTE_ARRAY: { diff --git a/editor/editor_properties_array_dict.cpp b/editor/editor_properties_array_dict.cpp index 431f608f46..090c7b2d3d 100644 --- a/editor/editor_properties_array_dict.cpp +++ b/editor/editor_properties_array_dict.cpp @@ -223,31 +223,31 @@ void EditorPropertyArray::update_property() { // arrays case Variant::POOL_BYTE_ARRAY: { - arrtype = "ByteArray"; + arrtype = "PoolByteArray"; } break; case Variant::POOL_INT_ARRAY: { - arrtype = "IntArray"; + arrtype = "PoolIntArray"; } break; case Variant::POOL_REAL_ARRAY: { - arrtype = "FltArray"; + arrtype = "PoolFloatArray"; } break; case Variant::POOL_STRING_ARRAY: { - arrtype = "StrArray"; + arrtype = "PoolStringArray"; } break; case Variant::POOL_VECTOR2_ARRAY: { - arrtype = "Vec2Array"; + arrtype = "PoolVector2Array"; } break; case Variant::POOL_VECTOR3_ARRAY: { - arrtype = "Vec3Array"; + arrtype = "PoolVector3Array"; } break; case Variant::POOL_COLOR_ARRAY: { - arrtype = "ColArray"; + arrtype = "PoolColorArray"; } break; default: {} } @@ -261,7 +261,7 @@ void EditorPropertyArray::update_property() { return; } - edit->set_text(arrtype + "(size " + itos(array.call("size")) + ")"); + edit->set_text(arrtype + " (size " + itos(array.call("size")) + ")"); #ifdef TOOLS_ENABLED @@ -334,185 +334,18 @@ void EditorPropertyArray::update_property() { EditorProperty *prop = NULL; Variant value = array.get(i + offset); + Variant::Type value_type = value.get_type(); - switch (value.get_type()) { - case Variant::NIL: { - prop = memnew(EditorPropertyNil); - - } break; - - // atomic types - case Variant::BOOL: { - - prop = memnew(EditorPropertyCheck); - - } break; - case Variant::INT: { - EditorPropertyInteger *editor = memnew(EditorPropertyInteger); - editor->setup(-100000, 100000, 1, true, true); - prop = editor; - - } break; - case Variant::REAL: { - - EditorPropertyFloat *editor = memnew(EditorPropertyFloat); - editor->setup(-100000, 100000, 0.001, true, false, true, true); - prop = editor; - } break; - case Variant::STRING: { - - prop = memnew(EditorPropertyText); - - } break; - - // math types - - case Variant::VECTOR2: { - - EditorPropertyVector2 *editor = memnew(EditorPropertyVector2); - editor->setup(-100000, 100000, 0.001, true); - prop = editor; - - } break; - case Variant::RECT2: { - - EditorPropertyRect2 *editor = memnew(EditorPropertyRect2); - editor->setup(-100000, 100000, 0.001, true); - prop = editor; - - } break; - case Variant::VECTOR3: { - - EditorPropertyVector3 *editor = memnew(EditorPropertyVector3); - editor->setup(-100000, 100000, 0.001, true); - prop = editor; - - } break; - case Variant::TRANSFORM2D: { - - EditorPropertyTransform2D *editor = memnew(EditorPropertyTransform2D); - editor->setup(-100000, 100000, 0.001, true); - prop = editor; - - } break; - case Variant::PLANE: { - - EditorPropertyPlane *editor = memnew(EditorPropertyPlane); - editor->setup(-100000, 100000, 0.001, true); - prop = editor; - - } break; - case Variant::QUAT: { - - EditorPropertyQuat *editor = memnew(EditorPropertyQuat); - editor->setup(-100000, 100000, 0.001, true); - prop = editor; - - } break; - case Variant::AABB: { - - EditorPropertyAABB *editor = memnew(EditorPropertyAABB); - editor->setup(-100000, 100000, 0.001, true); - prop = editor; - - } break; - case Variant::BASIS: { - EditorPropertyBasis *editor = memnew(EditorPropertyBasis); - editor->setup(-100000, 100000, 0.001, true); - prop = editor; - - } break; - case Variant::TRANSFORM: { - EditorPropertyTransform *editor = memnew(EditorPropertyTransform); - editor->setup(-100000, 100000, 0.001, true); - prop = editor; - - } break; - - // misc types - case Variant::COLOR: { - prop = memnew(EditorPropertyColor); - - } break; - case Variant::NODE_PATH: { - prop = memnew(EditorPropertyNodePath); - - } break; - case Variant::_RID: { - prop = memnew(EditorPropertyNil); - - } break; - case Variant::OBJECT: { - - if (Object::cast_to<EncodedObjectAsID>(value)) { - - EditorPropertyObjectID *editor = memnew(EditorPropertyObjectID); - editor->setup("Object"); - prop = editor; - - } else { - - EditorPropertyResource *editor = memnew(EditorPropertyResource); - editor->setup("Resource"); - prop = editor; - } - - } break; - case Variant::DICTIONARY: { - prop = memnew(EditorPropertyDictionary); - - } break; - - // arrays - case Variant::ARRAY: { - EditorPropertyArray *editor = memnew(EditorPropertyArray); - editor->setup(Variant::ARRAY); - prop = editor; - - } break; - case Variant::POOL_BYTE_ARRAY: { - EditorPropertyArray *editor = memnew(EditorPropertyArray); - editor->setup(Variant::POOL_BYTE_ARRAY); - prop = editor; - - } break; - case Variant::POOL_INT_ARRAY: { - EditorPropertyArray *editor = memnew(EditorPropertyArray); - editor->setup(Variant::POOL_INT_ARRAY); - prop = editor; - - } break; - case Variant::POOL_REAL_ARRAY: { - - EditorPropertyArray *editor = memnew(EditorPropertyArray); - editor->setup(Variant::POOL_REAL_ARRAY); - prop = editor; - } break; - case Variant::POOL_STRING_ARRAY: { - - EditorPropertyArray *editor = memnew(EditorPropertyArray); - editor->setup(Variant::POOL_STRING_ARRAY); - prop = editor; - } break; - case Variant::POOL_VECTOR2_ARRAY: { - - EditorPropertyArray *editor = memnew(EditorPropertyArray); - editor->setup(Variant::POOL_VECTOR2_ARRAY); - prop = editor; - } break; - case Variant::POOL_VECTOR3_ARRAY: { - - EditorPropertyArray *editor = memnew(EditorPropertyArray); - editor->setup(Variant::POOL_VECTOR3_ARRAY); - prop = editor; - } break; - case Variant::POOL_COLOR_ARRAY: { + if (value_type == Variant::NIL && subtype != Variant::NIL) { + value_type = subtype; + } - EditorPropertyArray *editor = memnew(EditorPropertyArray); - editor->setup(Variant::POOL_COLOR_ARRAY); - prop = editor; - } break; - default: {} + if (value_type == Variant::OBJECT && Object::cast_to<EncodedObjectAsID>(value)) { + EditorPropertyObjectID *editor = memnew(EditorPropertyObjectID); + editor->setup("Object"); + prop = editor; + } else { + prop = EditorInspector::instantiate_property_editor(NULL, value_type, "", subtype_hint, subtype_hint_string, 0); } prop->set_object_and_property(object.ptr(), prop_name); @@ -583,15 +416,39 @@ void EditorPropertyArray::_length_changed(double p_page) { emit_signal("property_changed", get_edited_property(), array); if (array.get_type() == Variant::ARRAY) { + if (subtype != Variant::NIL) { + int size = array.call("size"); + for (int i = 0; i < size; i++) { + if (array.get(i).get_type() == Variant::NIL) { + Variant::CallError ce; + array.set(i, Variant::construct(subtype, NULL, 0, ce)); + } + } + } array = array.call("duplicate"); //dupe, so undo/redo works better } object->set_array(array); update_property(); } -void EditorPropertyArray::setup(Variant::Type p_array_type) { +void EditorPropertyArray::setup(Variant::Type p_array_type, const String &p_hint_string) { array_type = p_array_type; + + if (array_type == Variant::ARRAY && !p_hint_string.empty()) { + int hint_subtype_seperator = p_hint_string.find(":"); + if (hint_subtype_seperator >= 0) { + String subtype_string = p_hint_string.substr(0, hint_subtype_seperator); + int slash_pos = subtype_string.find("/"); + if (slash_pos >= 0) { + subtype_hint = PropertyHint(subtype_string.substr(slash_pos + 1, subtype_string.size() - slash_pos - 1).to_int()); + subtype_string = subtype_string.substr(0, slash_pos); + } + + subtype_hint_string = p_hint_string.substr(hint_subtype_seperator + 1, p_hint_string.size() - hint_subtype_seperator - 1); + subtype = Variant::Type(subtype_string.to_int()); + } + } } void EditorPropertyArray::_bind_methods() { @@ -630,6 +487,10 @@ EditorPropertyArray::EditorPropertyArray() { change_type->add_item(type, i); } changing_type_idx = -1; + + subtype = Variant::NIL; + subtype_hint = PROPERTY_HINT_NONE; + subtype_hint_string = ""; } ///////////////////// DICTIONARY /////////////////////////// diff --git a/editor/editor_properties_array_dict.h b/editor/editor_properties_array_dict.h index d5eecd9106..46c9bebf2a 100644 --- a/editor/editor_properties_array_dict.h +++ b/editor/editor_properties_array_dict.h @@ -93,6 +93,9 @@ class EditorPropertyArray : public EditorProperty { EditorSpinSlider *page; HBoxContainer *page_hb; Variant::Type array_type; + Variant::Type subtype; + PropertyHint subtype_hint; + String subtype_hint_string; void _page_changed(double p_page); void _length_changed(double p_page); @@ -108,7 +111,7 @@ protected: void _notification(int p_what); public: - void setup(Variant::Type p_array_type); + void setup(Variant::Type p_array_type, const String &p_hint_string = ""); virtual void update_property(); EditorPropertyArray(); }; diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp index cdc35a98e2..8e69090da3 100644 --- a/editor/import/editor_import_collada.cpp +++ b/editor/import/editor_import_collada.cpp @@ -1191,6 +1191,7 @@ Error ColladaImport::_create_resources(Collada::Node *p_node, bool p_use_compres if (collada.state.mesh_data_map.has(meshid)) { Ref<ArrayMesh> mesh = Ref<ArrayMesh>(memnew(ArrayMesh)); const Collada::MeshData &meshdata = collada.state.mesh_data_map[meshid]; + mesh->set_name(meshdata.name); Error err = _create_mesh_surfaces(false, mesh, ng->material_map, meshdata, apply_xform, bone_remap, skin, NULL, Vector<Ref<ArrayMesh> >(), false); ERR_FAIL_COND_V(err, err); diff --git a/editor/plugins/item_list_editor_plugin.cpp b/editor/plugins/item_list_editor_plugin.cpp index 8df40232b0..a32f42cc56 100644 --- a/editor/plugins/item_list_editor_plugin.cpp +++ b/editor/plugins/item_list_editor_plugin.cpp @@ -265,6 +265,9 @@ void ItemListEditor::_notification(int p_notification) { add_button->set_icon(get_icon("Add", "EditorIcons")); del_button->set_icon(get_icon("Remove", "EditorIcons")); + } else if (p_notification == NOTIFICATION_READY) { + + get_tree()->connect("node_removed", this, "_node_removed"); } } @@ -341,6 +344,7 @@ bool ItemListEditor::handles(Object *p_object) const { void ItemListEditor::_bind_methods() { + ClassDB::bind_method("_node_removed", &ItemListEditor::_node_removed); ClassDB::bind_method("_edit_items", &ItemListEditor::_edit_items); ClassDB::bind_method("_add_button", &ItemListEditor::_add_pressed); ClassDB::bind_method("_delete_button", &ItemListEditor::_delete_pressed); diff --git a/editor/plugins/light_occluder_2d_editor_plugin.cpp b/editor/plugins/light_occluder_2d_editor_plugin.cpp index 6a16cf0989..646883fbda 100644 --- a/editor/plugins/light_occluder_2d_editor_plugin.cpp +++ b/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -30,425 +30,91 @@ #include "light_occluder_2d_editor_plugin.h" -#include "canvas_item_editor_plugin.h" -#include "core/os/file_access.h" -#include "editor/editor_settings.h" +Ref<OccluderPolygon2D> LightOccluder2DEditor::_ensure_occluder() const { -void LightOccluder2DEditor::_notification(int p_what) { + Ref<OccluderPolygon2D> occluder = node->get_occluder_polygon(); + if (!occluder.is_valid()) { - switch (p_what) { - - case NOTIFICATION_READY: { - - button_create->set_icon(get_icon("Edit", "EditorIcons")); - button_edit->set_icon(get_icon("MovePoint", "EditorIcons")); - button_edit->set_pressed(true); - get_tree()->connect("node_removed", this, "_node_removed"); - create_poly->connect("confirmed", this, "_create_poly"); - - } break; - case NOTIFICATION_PHYSICS_PROCESS: { - - } break; - } -} -void LightOccluder2DEditor::_node_removed(Node *p_node) { - - if (p_node == node) { - node = NULL; - hide(); - canvas_item_editor->update_viewport(); + occluder = Ref<OccluderPolygon2D>(memnew(OccluderPolygon2D)); + node->set_occluder_polygon(occluder); } + return occluder; } -void LightOccluder2DEditor::_menu_option(int p_option) { +Node2D *LightOccluder2DEditor::_get_node() const { - switch (p_option) { - - case MODE_CREATE: { - - mode = MODE_CREATE; - button_create->set_pressed(true); - button_edit->set_pressed(false); - } break; - case MODE_EDIT: { - - mode = MODE_EDIT; - button_create->set_pressed(false); - button_edit->set_pressed(true); - } break; - } + return node; } -void LightOccluder2DEditor::_wip_close(bool p_closed) { - - undo_redo->create_action(TTR("Create Poly")); - undo_redo->add_undo_method(node->get_occluder_polygon().ptr(), "set_polygon", node->get_occluder_polygon()->get_polygon()); - undo_redo->add_do_method(node->get_occluder_polygon().ptr(), "set_polygon", wip); - undo_redo->add_undo_method(node->get_occluder_polygon().ptr(), "set_closed", node->get_occluder_polygon()->is_closed()); - undo_redo->add_do_method(node->get_occluder_polygon().ptr(), "set_closed", p_closed); +void LightOccluder2DEditor::_set_node(Node *p_polygon) { - undo_redo->add_do_method(canvas_item_editor, "update_viewport"); - undo_redo->add_undo_method(canvas_item_editor, "update_viewport"); - undo_redo->commit_action(); - wip.clear(); - wip_active = false; - mode = MODE_EDIT; - button_edit->set_pressed(true); - button_create->set_pressed(false); - edited_point = -1; + node = Object::cast_to<LightOccluder2D>(p_polygon); } -bool LightOccluder2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) { +bool LightOccluder2DEditor::_is_line() const { - if (!node) + Ref<OccluderPolygon2D> occluder = node->get_occluder_polygon(); + if (occluder.is_valid()) + return !occluder->is_closed(); + else return false; - - if (node->get_occluder_polygon().is_null()) { - Ref<InputEventMouseButton> mb = p_event; - if (mb.is_valid() && mb->get_button_index() == 1 && mb->is_pressed()) { - create_poly->set_text(TTR("No OccluderPolygon2D resource on this node.\nCreate and assign one?")); - create_poly->popup_centered_minsize(); - } - return (mb.is_valid() && mb->get_button_index() == 1); - } - - Ref<InputEventMouseButton> mb = p_event; - - if (mb.is_valid()) { - - Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform(); - - Vector2 gpoint = mb->get_position(); - Vector2 cpoint = node->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(mb->get_position()))); - - Vector<Vector2> poly = Variant(node->get_occluder_polygon()->get_polygon()); - - //first check if a point is to be added (segment split) - real_t grab_threshold = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8); - - switch (mode) { - - case MODE_CREATE: { - - if (mb->get_button_index() == BUTTON_LEFT && mb->is_pressed()) { - - if (!wip_active) { - - wip.clear(); - wip.push_back(cpoint); - wip_active = true; - edited_point_pos = cpoint; - canvas_item_editor->update_viewport(); - edited_point = 1; - return true; - } else { - - if (wip.size() > 1 && xform.xform(wip[0]).distance_to(gpoint) < grab_threshold) { - //wip closed - _wip_close(true); - - return true; - } else if (wip.size() > 1 && xform.xform(wip[wip.size() - 1]).distance_to(gpoint) < grab_threshold) { - //wip closed - _wip_close(false); - return true; - - } else { - - wip.push_back(cpoint); - edited_point = wip.size(); - canvas_item_editor->update_viewport(); - return true; - - //add wip point - } - } - } else if (mb->get_button_index() == BUTTON_RIGHT && mb->is_pressed() && wip_active) { - _wip_close(true); - } - - } break; - - case MODE_EDIT: { - - if (mb->get_button_index() == BUTTON_LEFT) { - if (mb->is_pressed()) { - - if (mb->get_control()) { - - if (poly.size() < 3) { - - undo_redo->create_action(TTR("Edit Poly")); - undo_redo->add_undo_method(node->get_occluder_polygon().ptr(), "set_polygon", poly); - poly.push_back(cpoint); - undo_redo->add_do_method(node->get_occluder_polygon().ptr(), "set_polygon", poly); - undo_redo->add_do_method(canvas_item_editor, "update_viewport"); - undo_redo->add_undo_method(canvas_item_editor, "update_viewport"); - undo_redo->commit_action(); - return true; - } - - //search edges - int closest_idx = -1; - Vector2 closest_pos; - real_t closest_dist = 1e10; - for (int i = 0; i < poly.size(); i++) { - - Vector2 points[2] = { xform.xform(poly[i]), - xform.xform(poly[(i + 1) % poly.size()]) }; - - Vector2 cp = Geometry::get_closest_point_to_segment_2d(gpoint, points); - if (cp.distance_squared_to(points[0]) < CMP_EPSILON2 || cp.distance_squared_to(points[1]) < CMP_EPSILON2) - continue; //not valid to reuse point - - real_t d = cp.distance_to(gpoint); - if (d < closest_dist && d < grab_threshold) { - closest_dist = d; - closest_pos = cp; - closest_idx = i; - } - } - - if (closest_idx >= 0) { - - pre_move_edit = poly; - poly.insert(closest_idx + 1, xform.affine_inverse().xform(closest_pos)); - edited_point = closest_idx + 1; - edited_point_pos = xform.affine_inverse().xform(closest_pos); - node->get_occluder_polygon()->set_polygon(Variant(poly)); - canvas_item_editor->update_viewport(); - return true; - } - } else { - - //look for points to move - - int closest_idx = -1; - Vector2 closest_pos; - real_t closest_dist = 1e10; - for (int i = 0; i < poly.size(); i++) { - - Vector2 cp = xform.xform(poly[i]); - - real_t d = cp.distance_to(gpoint); - if (d < closest_dist && d < grab_threshold) { - closest_dist = d; - closest_pos = cp; - closest_idx = i; - } - } - - if (closest_idx >= 0) { - - pre_move_edit = poly; - edited_point = closest_idx; - edited_point_pos = xform.affine_inverse().xform(closest_pos); - canvas_item_editor->update_viewport(); - return true; - } - } - } else { - - if (edited_point != -1) { - - //apply - - ERR_FAIL_INDEX_V(edited_point, poly.size(), false); - poly.write[edited_point] = edited_point_pos; - undo_redo->create_action(TTR("Edit Poly")); - undo_redo->add_do_method(node->get_occluder_polygon().ptr(), "set_polygon", poly); - undo_redo->add_undo_method(node->get_occluder_polygon().ptr(), "set_polygon", pre_move_edit); - undo_redo->add_do_method(canvas_item_editor, "update_viewport"); - undo_redo->add_undo_method(canvas_item_editor, "update_viewport"); - undo_redo->commit_action(); - - edited_point = -1; - return true; - } - } - } else if (mb->get_button_index() == BUTTON_RIGHT && mb->is_pressed() && edited_point == -1) { - - int closest_idx = -1; - Vector2 closest_pos; - real_t closest_dist = 1e10; - for (int i = 0; i < poly.size(); i++) { - - Vector2 cp = xform.xform(poly[i]); - - real_t d = cp.distance_to(gpoint); - if (d < closest_dist && d < grab_threshold) { - closest_dist = d; - closest_pos = cp; - closest_idx = i; - } - } - - if (closest_idx >= 0) { - - undo_redo->create_action(TTR("Edit Poly (Remove Point)")); - undo_redo->add_undo_method(node->get_occluder_polygon().ptr(), "set_polygon", poly); - poly.remove(closest_idx); - undo_redo->add_do_method(node->get_occluder_polygon().ptr(), "set_polygon", poly); - undo_redo->add_do_method(canvas_item_editor, "update_viewport"); - undo_redo->add_undo_method(canvas_item_editor, "update_viewport"); - undo_redo->commit_action(); - return true; - } - } - - } break; - } - } - - Ref<InputEventMouseMotion> mm = p_event; - - if (mm.is_valid()) { - - if (edited_point != -1 && (wip_active || mm->get_button_mask() & BUTTON_MASK_LEFT)) { - - Vector2 gpoint = mm->get_position(); - Vector2 cpoint = canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpoint); - cpoint = canvas_item_editor->snap_point(cpoint); - edited_point_pos = node->get_global_transform().affine_inverse().xform(cpoint); - - canvas_item_editor->update_viewport(); - } - } - - return false; } -void LightOccluder2DEditor::forward_canvas_draw_over_viewport(Control *p_overlay) { - - if (!node || !node->get_occluder_polygon().is_valid()) - return; - - Vector<Vector2> poly; +int LightOccluder2DEditor::_get_polygon_count() const { - if (wip_active) - poly = wip; + Ref<OccluderPolygon2D> occluder = node->get_occluder_polygon(); + if (occluder.is_valid()) + return occluder->get_polygon().size(); else - poly = Variant(node->get_occluder_polygon()->get_polygon()); - - Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform(); - Ref<Texture> handle = get_icon("EditorHandle", "EditorIcons"); - - for (int i = 0; i < poly.size(); i++) { - - Vector2 p, p2; - p = i == edited_point ? edited_point_pos : poly[i]; - if ((wip_active && i == poly.size() - 1) || (((i + 1) % poly.size()) == edited_point)) - p2 = edited_point_pos; - else - p2 = poly[(i + 1) % poly.size()]; + return 0; +} - Vector2 point = xform.xform(p); - Vector2 next_point = xform.xform(p2); +Variant LightOccluder2DEditor::_get_polygon(int p_idx) const { - Color col = Color(1, 0.3, 0.1, 0.8); + Ref<OccluderPolygon2D> occluder = node->get_occluder_polygon(); + if (occluder.is_valid()) + return occluder->get_polygon(); + else + return Variant(Vector<Vector2>()); +} - if (i == poly.size() - 1 && (!node->get_occluder_polygon()->is_closed() || wip_active)) { +void LightOccluder2DEditor::_set_polygon(int p_idx, const Variant &p_polygon) const { - } else { - p_overlay->draw_line(point, next_point, col, 2); - } - p_overlay->draw_texture(handle, point - handle->get_size() * 0.5); - } + Ref<OccluderPolygon2D> occluder = _ensure_occluder(); + occluder->set_polygon(p_polygon); } -void LightOccluder2DEditor::edit(Node *p_collision_polygon) { +void LightOccluder2DEditor::_action_set_polygon(int p_idx, const Variant &p_previous, const Variant &p_polygon) { - if (!canvas_item_editor) { - canvas_item_editor = CanvasItemEditor::get_singleton(); - } + Ref<OccluderPolygon2D> occluder = _ensure_occluder(); + undo_redo->add_do_method(occluder.ptr(), "set_polygon", p_polygon); + undo_redo->add_undo_method(occluder.ptr(), "set_polygon", p_previous); +} - if (p_collision_polygon) { +bool LightOccluder2DEditor::_has_resource() const { - node = Object::cast_to<LightOccluder2D>(p_collision_polygon); - wip.clear(); - wip_active = false; - edited_point = -1; - canvas_item_editor->update_viewport(); - } else { - node = NULL; - } + return node && node->get_occluder_polygon().is_valid(); } -void LightOccluder2DEditor::_create_poly() { +void LightOccluder2DEditor::_create_resource() { if (!node) return; + undo_redo->create_action(TTR("Create Occluder Polygon")); undo_redo->add_do_method(node, "set_occluder_polygon", Ref<OccluderPolygon2D>(memnew(OccluderPolygon2D))); undo_redo->add_undo_method(node, "set_occluder_polygon", Variant(REF())); undo_redo->commit_action(); -} - -void LightOccluder2DEditor::_bind_methods() { - ClassDB::bind_method(D_METHOD("_menu_option"), &LightOccluder2DEditor::_menu_option); - ClassDB::bind_method(D_METHOD("_node_removed"), &LightOccluder2DEditor::_node_removed); - ClassDB::bind_method(D_METHOD("_create_poly"), &LightOccluder2DEditor::_create_poly); + _menu_option(MODE_CREATE); } -LightOccluder2DEditor::LightOccluder2DEditor(EditorNode *p_editor) { +LightOccluder2DEditor::LightOccluder2DEditor(EditorNode *p_editor) : + AbstractPolygon2DEditor(p_editor) { node = NULL; - canvas_item_editor = NULL; - editor = p_editor; - undo_redo = editor->get_undo_redo(); - - add_child(memnew(VSeparator)); - button_create = memnew(ToolButton); - add_child(button_create); - button_create->connect("pressed", this, "_menu_option", varray(MODE_CREATE)); - button_create->set_toggle_mode(true); - button_create->set_tooltip(TTR("Create a new polygon from scratch.")); - - button_edit = memnew(ToolButton); - add_child(button_edit); - button_edit->connect("pressed", this, "_menu_option", varray(MODE_EDIT)); - button_edit->set_toggle_mode(true); - button_edit->set_tooltip(TTR("Edit existing polygon:") + "\n" + TTR("LMB: Move Point.") + "\n" + TTR("Ctrl+LMB: Split Segment.") + "\n" + TTR("RMB: Erase Point.")); - - create_poly = memnew(ConfirmationDialog); - add_child(create_poly); - create_poly->get_ok()->set_text(TTR("Create")); - - mode = MODE_EDIT; - wip_active = false; -} - -void LightOccluder2DEditorPlugin::edit(Object *p_object) { - - light_occluder_editor->edit(Object::cast_to<Node>(p_object)); -} - -bool LightOccluder2DEditorPlugin::handles(Object *p_object) const { - - return p_object->is_class("LightOccluder2D"); -} - -void LightOccluder2DEditorPlugin::make_visible(bool p_visible) { - - if (p_visible) { - light_occluder_editor->show(); - } else { - - light_occluder_editor->hide(); - light_occluder_editor->edit(NULL); - } -} - -LightOccluder2DEditorPlugin::LightOccluder2DEditorPlugin(EditorNode *p_node) { - - editor = p_node; - light_occluder_editor = memnew(LightOccluder2DEditor(p_node)); - CanvasItemEditor::get_singleton()->add_control_to_menu_panel(light_occluder_editor); - - light_occluder_editor->hide(); } -LightOccluder2DEditorPlugin::~LightOccluder2DEditorPlugin() { +LightOccluder2DEditorPlugin::LightOccluder2DEditorPlugin(EditorNode *p_node) : + AbstractPolygon2DEditorPlugin(p_node, memnew(LightOccluder2DEditor(p_node)), "LightOccluder2D") { } diff --git a/editor/plugins/light_occluder_2d_editor_plugin.h b/editor/plugins/light_occluder_2d_editor_plugin.h index a1962892ee..6117d50e89 100644 --- a/editor/plugins/light_occluder_2d_editor_plugin.h +++ b/editor/plugins/light_occluder_2d_editor_plugin.h @@ -31,83 +31,44 @@ #ifndef LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H #define LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H -#include "editor/editor_node.h" -#include "editor/editor_plugin.h" +#include "editor/plugins/abstract_polygon_2d_editor.h" #include "scene/2d/light_occluder_2d.h" -#include "scene/gui/tool_button.h" /** @author Juan Linietsky <reduzio@gmail.com> */ -class CanvasItemEditor; +class LightOccluder2DEditor : public AbstractPolygon2DEditor { -class LightOccluder2DEditor : public HBoxContainer { + GDCLASS(LightOccluder2DEditor, AbstractPolygon2DEditor); - GDCLASS(LightOccluder2DEditor, HBoxContainer); - - UndoRedo *undo_redo; - enum Mode { - - MODE_CREATE, - MODE_EDIT, - - }; - - Mode mode; - - ToolButton *button_create; - ToolButton *button_edit; - - CanvasItemEditor *canvas_item_editor; - EditorNode *editor; - Panel *panel; LightOccluder2D *node; - MenuButton *options; - int edited_point; - Vector2 edited_point_pos; - Vector<Vector2> pre_move_edit; - Vector<Vector2> wip; - bool wip_active; + Ref<OccluderPolygon2D> _ensure_occluder() const; - ConfirmationDialog *create_poly; +protected: + virtual Node2D *_get_node() const; + virtual void _set_node(Node *p_polygon); - void _wip_close(bool p_closed); - void _menu_option(int p_option); - void _create_poly(); + virtual bool _is_line() const; + virtual int _get_polygon_count() const; + virtual Variant _get_polygon(int p_idx) const; + virtual void _set_polygon(int p_idx, const Variant &p_polygon) const; -protected: - void _notification(int p_what); - void _node_removed(Node *p_node); - static void _bind_methods(); + virtual void _action_set_polygon(int p_idx, const Variant &p_previous, const Variant &p_polygon); + + virtual bool _has_resource() const; + virtual void _create_resource(); public: - Vector2 snap_point(const Vector2 &p_point) const; - void forward_canvas_draw_over_viewport(Control *p_overlay); - bool forward_gui_input(const Ref<InputEvent> &p_event); - void edit(Node *p_collision_polygon); LightOccluder2DEditor(EditorNode *p_editor); }; -class LightOccluder2DEditorPlugin : public EditorPlugin { +class LightOccluder2DEditorPlugin : public AbstractPolygon2DEditorPlugin { - GDCLASS(LightOccluder2DEditorPlugin, EditorPlugin); - - LightOccluder2DEditor *light_occluder_editor; - EditorNode *editor; + GDCLASS(LightOccluder2DEditorPlugin, AbstractPolygon2DEditorPlugin); public: - virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) { return light_occluder_editor->forward_gui_input(p_event); } - virtual void forward_canvas_draw_over_viewport(Control *p_overlay) { return light_occluder_editor->forward_canvas_draw_over_viewport(p_overlay); } - - virtual String get_name() const { return "LightOccluder2D"; } - bool has_main_screen() const { return false; } - virtual void edit(Object *p_object); - virtual bool handles(Object *p_object) const; - virtual void make_visible(bool p_visible); - LightOccluder2DEditorPlugin(EditorNode *p_node); - ~LightOccluder2DEditorPlugin(); }; #endif // LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index ae6fa8e6bb..0bbe08821a 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -1815,6 +1815,10 @@ Ref<TextFile> ScriptEditor::_load_text_file(const String &p_path, Error *r_error text_file->set_file_path(local_path); text_file->set_path(local_path, true); + if (ResourceLoader::get_timestamp_on_load()) { + text_file->set_last_modified_time(FileAccess::get_modified_time(path)); + } + if (r_error) { *r_error = OK; } @@ -1844,6 +1848,10 @@ Error ScriptEditor::_save_text_file(Ref<TextFile> p_text_file, const String &p_p file->close(); memdelete(file); + if (ResourceSaver::get_timestamp_on_save()) { + p_text_file->set_last_modified_time(FileAccess::get_modified_time(p_path)); + } + _res_saved_callback(sqscr); return OK; } diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index a5563c0497..cc5f50a834 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -3238,7 +3238,7 @@ bool SpatialEditorViewport::_create_instance(Node *parent, String &path, const P if (mesh != NULL) { MeshInstance *mesh_instance = memnew(MeshInstance); mesh_instance->set_mesh(mesh); - mesh_instance->set_name(mesh->get_name()); + mesh_instance->set_name(path.get_file().get_basename()); instanced_scene = mesh_instance; } else { if (!scene.is_valid()) { // invalid scene diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp index d0e0b3e006..3f424b4e70 100644 --- a/editor/plugins/tile_set_editor_plugin.cpp +++ b/editor/plugins/tile_set_editor_plugin.cpp @@ -600,6 +600,8 @@ void TileSetEditor::_on_textures_added(const PoolStringArray &p_paths) { } void TileSetEditor::_on_edit_mode_changed(int p_edit_mode) { + draw_handles = false; + creating_shape = false; edit_mode = (EditMode)p_edit_mode; switch (edit_mode) { case EDITMODE_REGION: { diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index 39e50ec7f8..b084fe1915 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -798,7 +798,7 @@ VisualShaderEditor::VisualShaderEditor() { add_node = memnew(MenuButton); graph->get_zoom_hbox()->add_child(add_node); - add_node->set_text(TTR("Add Node..")); + add_node->set_text(TTR("Add Node...")); graph->get_zoom_hbox()->move_child(add_node, 0); add_node->get_popup()->connect("id_pressed", this, "_add_node"); diff --git a/editor/project_export.cpp b/editor/project_export.cpp index f8ba6fd4e3..6e1d5c07ce 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -56,7 +56,7 @@ void ProjectExportDialog::_notification(int p_what) { custom_feature_display->get_parent_control()->add_style_override("panel", get_stylebox("bg", "Tree")); } break; case NOTIFICATION_POPUP_HIDE: { - EditorSettings::get_singleton()->set("interface/dialogs/export_bounds", get_rect()); + EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "export", get_rect()); } break; case NOTIFICATION_THEME_CHANGED: { duplicate_preset->set_icon(get_icon("Duplicate", "EditorIcons")); @@ -84,8 +84,9 @@ void ProjectExportDialog::popup_export() { } // Restore valid window bounds or pop up at default size. - if (EditorSettings::get_singleton()->has_setting("interface/dialogs/export_bounds")) { - popup(EditorSettings::get_singleton()->get("interface/dialogs/export_bounds")); + Rect2 saved_size = EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "export", Rect2()); + if (saved_size != Rect2()) { + popup(saved_size); } else { Size2 popup_size = Size2(900, 700) * editor_get_scale(); diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp index 7a68646f40..af8d33d3d1 100644 --- a/editor/project_settings_editor.cpp +++ b/editor/project_settings_editor.cpp @@ -115,10 +115,9 @@ void ProjectSettingsEditor::_notification(int p_what) { } break; case NOTIFICATION_POPUP_HIDE: { - EditorSettings::get_singleton()->set("interface/dialogs/project_settings_bounds", get_rect()); + EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "project_settings", get_rect()); } break; case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - search_button->set_icon(get_icon("Search", "EditorIcons")); search_box->set_right_icon(get_icon("Search", "EditorIcons")); search_box->set_clear_button_enabled(true); @@ -788,8 +787,9 @@ void ProjectSettingsEditor::_update_actions() { void ProjectSettingsEditor::popup_project_settings() { // Restore valid window bounds or pop up at default size. - if (EditorSettings::get_singleton()->has_setting("interface/dialogs/project_settings_bounds")) { - popup(EditorSettings::get_singleton()->get("interface/dialogs/project_settings_bounds")); + Rect2 saved_size = EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "project_settings", Rect2()); + if (saved_size != Rect2()) { + popup(saved_size); } else { Size2 popup_size = Size2(900, 700) * editor_get_scale(); diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index 537c9ac6b8..a4956bee27 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -94,8 +94,9 @@ void EditorSettingsDialog::popup_edit_settings() { set_process_unhandled_input(true); // Restore valid window bounds or pop up at default size. - if (EditorSettings::get_singleton()->has_setting("interface/dialogs/editor_settings_bounds")) { - popup(EditorSettings::get_singleton()->get("interface/dialogs/editor_settings_bounds")); + Rect2 saved_size = EditorSettings::get_singleton()->get_project_metadata("dialog_bounds", "editor_settings", Rect2()); + if (saved_size != Rect2()) { + popup(saved_size); } else { Size2 popup_size = Size2(900, 700) * editor_get_scale(); @@ -132,7 +133,7 @@ void EditorSettingsDialog::_notification(int p_what) { _update_icons(); } break; case NOTIFICATION_POPUP_HIDE: { - EditorSettings::get_singleton()->set("interface/dialogs/editor_settings_bounds", get_rect()); + EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "editor_settings", get_rect()); set_process_unhandled_input(false); } break; case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { diff --git a/editor/translations/af.po b/editor/translations/af.po index 17dd7b19c5..d3647bdb0f 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -552,9 +552,8 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Zoom:" -msgstr "Zoem In" +msgid "Font Size:" +msgstr "" #: editor/code_editor.cpp msgid "Line:" @@ -1726,6 +1725,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2125,7 +2130,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -9042,7 +9047,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9269,6 +9274,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Zoem In" + #~ msgid "Class List:" #~ msgstr "Klas Lys:" diff --git a/editor/translations/ar.po b/editor/translations/ar.po index ed3b98016a..a93f3ebed9 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -567,8 +567,8 @@ msgstr "" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "تقريب" +msgid "Font Size:" +msgstr "حجم الخطوط:" #: editor/code_editor.cpp msgid "Line:" @@ -1729,6 +1729,12 @@ msgstr "هذه العملية لا يمكنها الإكتمال من غير ج #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "لا يمكن حفظ المشهد. على الأرجح لا يمكن إستيفاء التبعيات (مجسّدات)." @@ -2163,7 +2169,7 @@ msgid "Undo" msgstr "تراجع" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "إعادة" @@ -9208,7 +9214,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9438,6 +9444,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "تقريب" + #~ msgid "Class List:" #~ msgstr "قائمة الأصناف:" diff --git a/editor/translations/bg.po b/editor/translations/bg.po index 60f5eafb45..f75e29e11a 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -552,8 +552,9 @@ msgid "Warnings:" msgstr "Предупреждения:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Приближение:" +#, fuzzy +msgid "Font Size:" +msgstr "Изглед Отпред." #: editor/code_editor.cpp msgid "Line:" @@ -1692,6 +1693,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2098,7 +2105,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -9147,7 +9154,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9375,6 +9382,9 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Zoom:" +#~ msgstr "Приближение:" + #~ msgid "Class List:" #~ msgstr "Списък на Класове:" diff --git a/editor/translations/bn.po b/editor/translations/bn.po index ae6a8a7f70..a99a1360a2 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -572,8 +572,8 @@ msgstr "সতর্কতা" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "জুম্ (%):" +msgid "Font Size:" +msgstr "উৎস ফন্টের আকার:" #: editor/code_editor.cpp msgid "Line:" @@ -1768,6 +1768,12 @@ msgid "This operation can't be done without a tree root." msgstr "দৃশ্য ছাড়া এটি করা সম্ভব হবে না।" #: editor/editor_node.cpp +msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp #, fuzzy msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " @@ -2219,7 +2225,7 @@ msgid "Undo" msgstr "সাবেক অবস্থায় যান/আনডু" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "পুনরায় করুন" @@ -9689,7 +9695,7 @@ msgstr "" "আকৃতি তৈরি করুন!" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9940,6 +9946,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "জুম্ (%):" + #~ msgid "Class List:" #~ msgstr "ক্লাসের তালিকা:" @@ -10655,9 +10665,6 @@ msgstr "" #~ msgid "Source Font:" #~ msgstr "ফন্টের উৎস:" -#~ msgid "Source Font Size:" -#~ msgstr "উৎস ফন্টের আকার:" - #~ msgid "Dest Resource:" #~ msgstr "রিসোর্সের গন্তব্যস্থান:" diff --git a/editor/translations/ca.po b/editor/translations/ca.po index 1b8fa8933c..c0ec1493a3 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -547,8 +547,9 @@ msgid "Warnings:" msgstr "Avisos:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Zoom:" +#, fuzzy +msgid "Font Size:" +msgstr "Mida de la lletra:" #: editor/code_editor.cpp msgid "Line:" @@ -1711,6 +1712,12 @@ msgstr "Aquesta operació no es pot fer sense cap arrel d'arbre." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2154,7 +2161,7 @@ msgid "Undo" msgstr "Desfés" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Refés" @@ -9316,7 +9323,7 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "Res és visible perquè no s'ha assignat cap Malla a cap pas de Dibuix." #: scene/3d/cpu_particles.cpp @@ -9584,6 +9591,9 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Zoom:" +#~ msgstr "Zoom:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "Esteu segur que voleu eliminar totes les connexions de \"" @@ -10277,9 +10287,6 @@ msgstr "" #~ msgid "Source Font:" #~ msgstr "Lletra:" -#~ msgid "Source Font Size:" -#~ msgstr "Mida de la lletra:" - #~ msgid "Dest Resource:" #~ msgstr "Recurs Objectiu:" diff --git a/editor/translations/cs.po b/editor/translations/cs.po index f6bc57ed66..9a1d88ba87 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -13,15 +13,15 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2018-11-21 19:07+0000\n" -"Last-Translator: Jan 'spl!te' Kondelík <j.kondelik@centrum.cz>\n" +"PO-Revision-Date: 2018-12-04 22:14+0000\n" +"Last-Translator: Vojtěch Šamla <auzkok@seznam.cz>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" "Language: cs\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 3.3-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -499,7 +499,7 @@ msgstr "Změnit hodnotu pole" #: editor/code_editor.cpp msgid "Go to Line" -msgstr "Běž na řádek" +msgstr "Jít na řádek" #: editor/code_editor.cpp msgid "Line Number:" @@ -550,8 +550,9 @@ msgid "Warnings:" msgstr "Varování:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Přiblížit:" +#, fuzzy +msgid "Font Size:" +msgstr "Pohled zepředu" #: editor/code_editor.cpp msgid "Line:" @@ -665,9 +666,9 @@ msgid "Edit Connection: " msgstr "Upravit připojení: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "Jste si jisti, že chcete odstranit všechna připojení od \"" +msgstr "" +"Jste si jisti, že chcete odstranit všechna připojení ze signálu \"%s\"?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -675,7 +676,7 @@ msgstr "Signály" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" -msgstr "" +msgstr "Jste si jistí, že chcete odstranit všechna připojení z tohoto signálu?" #: editor/connections_dialog.cpp msgid "Disconnect All" @@ -686,9 +687,8 @@ msgid "Edit..." msgstr "Upravit..." #: editor/connections_dialog.cpp -#, fuzzy msgid "Go To Method" -msgstr "Metody" +msgstr "Přejít na metodu" #: editor/create_dialog.cpp msgid "Change %s Type" @@ -1306,7 +1306,6 @@ msgid "File Exists, Overwrite?" msgstr "Soubor už existuje. Přepsat?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select This Folder" msgstr "Vybrat tuto složku" @@ -1315,15 +1314,13 @@ msgid "Copy Path" msgstr "Kopírovat cestu" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "Open in File Manager" msgstr "Otevřít ve správci souborů" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp #: editor/project_manager.cpp -#, fuzzy msgid "Show in File Manager" -msgstr "Ukázat ve správci souborů" +msgstr "Zobrazit ve správci souborů" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "New Folder..." @@ -1466,19 +1463,16 @@ msgid "Methods" msgstr "Metody" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "Metody" +msgstr "Metody:" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "Vlastnosti" +msgstr "Vlastnosti motivu" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "Vlastnosti:" +msgstr "Vlastnosti motivu:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1505,14 +1499,12 @@ msgid "Constants:" msgstr "Konstanty:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "Popis" +msgstr "Popis třídy" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "Popis:" +msgstr "Popis třídy:" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1529,12 +1521,10 @@ msgstr "" "$url2]zažádat[/url][/color]." #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" -msgstr "Popis vlastnosti:" +msgstr "Popis vlastnosti" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions:" msgstr "Popis vlastnosti:" @@ -1547,12 +1537,10 @@ msgstr "" "nám tím, že ho[color=$color][url=$url]vytvoříte[/url][/color]!" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "Popis metody:" +msgstr "Popis metody" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions:" msgstr "Popis metody:" @@ -1570,39 +1558,32 @@ msgid "Search Help" msgstr "Prohledat nápovědu" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "Nahradit všechny" +msgstr "Zobrazit všechny" #: editor/editor_help_search.cpp -#, fuzzy msgid "Classes Only" -msgstr "Třídy" +msgstr "Pouze třídy" #: editor/editor_help_search.cpp -#, fuzzy msgid "Methods Only" -msgstr "Metody" +msgstr "Pouze metody" #: editor/editor_help_search.cpp -#, fuzzy msgid "Signals Only" -msgstr "Signály" +msgstr "Pouze signály" #: editor/editor_help_search.cpp -#, fuzzy msgid "Constants Only" -msgstr "Konstanty" +msgstr "Pouze konstanty" #: editor/editor_help_search.cpp -#, fuzzy msgid "Properties Only" -msgstr "Vlastnosti" +msgstr "Pouze vlastnosti" #: editor/editor_help_search.cpp -#, fuzzy msgid "Theme Properties Only" -msgstr "Vlastnosti" +msgstr "Pouze vlastnosti motivu" #: editor/editor_help_search.cpp #, fuzzy @@ -1610,9 +1591,8 @@ msgid "Member Type" msgstr "Členové" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "Třída:" +msgstr "Třída" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" @@ -1711,6 +1691,12 @@ msgstr "Tato operace nemůže být provedena bez kořenového uzlu." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1719,7 +1705,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "Nelze přepsat scénu, která je stále otevřená!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1797,6 +1783,9 @@ msgid "" "Please read the documentation relevant to debugging to better understand " "this workflow." msgstr "" +"Toto je vzdálený objekt, takže jeho změny nebudou zachovány.\n" +"Přečtěte si, prosím, dokumentaci týkající se debugování, abyste lépe " +"pochopili tento proces." #: editor/editor_node.cpp msgid "There is no defined scene to run." @@ -1962,13 +1951,12 @@ msgid "Unable to load addon script from path: '%s'." msgstr "Nelze načíst skript rozšíření z cesty: '%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 "" -"Nelze načíst skript rozšíření z cesty: '%s'. Skript není v režimu nástroje " -"(tool)." +"Nelze načíst skript rozšíření z cesty: '%s'. Zdá se, že se v kódu nachází " +"chyba. Prosím, zkontrolujte syntax." #: editor/editor_node.cpp msgid "" @@ -2022,7 +2010,6 @@ msgstr "Výchozí" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp -#, fuzzy msgid "Show in FileSystem" msgstr "Zobrazit v souborovém systému" @@ -2107,7 +2094,6 @@ msgid "Save Scene" msgstr "Uložit scénu" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" msgstr "Uložit všechny scény" @@ -2137,7 +2123,7 @@ msgid "Undo" msgstr "Zpět" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Znovu" @@ -2166,9 +2152,8 @@ msgid "Tools" msgstr "Nástroje" #: editor/editor_node.cpp -#, fuzzy msgid "Open Project Data Folder" -msgstr "Otevřít Správce projektu?" +msgstr "Otevřít složku s daty projektu" #: editor/editor_node.cpp msgid "Quit to Project List" @@ -2473,7 +2458,7 @@ msgstr "Otevřít editor skriptů" #: editor/editor_node.cpp editor/project_manager.cpp msgid "Open Asset Library" -msgstr "" +msgstr "Otevřít knihovnu assetů" #: editor/editor_node.cpp msgid "Open the next Editor" @@ -2492,9 +2477,8 @@ msgid "Thumbnail..." msgstr "Náhled..." #: editor/editor_plugin_settings.cpp -#, fuzzy msgid "Edit Plugin" -msgstr "Pluginy" +msgstr "Upravit plugin" #: editor/editor_plugin_settings.cpp msgid "Installed Plugins:" @@ -2523,9 +2507,8 @@ msgstr "Upravit:" #: editor/editor_profiler.cpp editor/plugins/animation_state_machine_editor.cpp #: editor/rename_dialog.cpp -#, fuzzy msgid "Start" -msgstr "Start!" +msgstr "Start" #: editor/editor_profiler.cpp msgid "Measure:" @@ -2577,11 +2560,11 @@ msgstr "" #: editor/editor_properties.cpp msgid "Layer" -msgstr "" +msgstr "Vrstva" #: editor/editor_properties.cpp msgid "Bit %d, value %d" -msgstr "" +msgstr "Bit %d, hodnota %d" #: editor/editor_properties.cpp msgid "[Empty]" @@ -2596,6 +2579,8 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"Nelze vytvořit ViewportTexture na zdroji uloženém jako soubor.\n" +"Zdroj musí patřit scéně." #: editor/editor_properties.cpp msgid "" @@ -2644,9 +2629,8 @@ msgstr "Konvertovat na %s" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Open Editor" -msgstr "Otevřít v editoru" +msgstr "Otevřít editor" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Selected node is not a Viewport!" @@ -2694,7 +2678,6 @@ msgid "Write your logic in the _run() method." msgstr "Napište svůj kód v _run() metodě." #: editor/editor_run_script.cpp -#, fuzzy msgid "There is an edited scene already." msgstr "Nějaka scéna už je upravována." @@ -2753,11 +2736,11 @@ msgstr "(Aktuální)" #: editor/export_template_manager.cpp msgid "Retrieving mirrors, please wait..." -msgstr "" +msgstr "Získávání zrcadel, prosím čekejte..." #: editor/export_template_manager.cpp msgid "Remove template version '%s'?" -msgstr "" +msgstr "Odstranit šablonu verze '%s'?" #: editor/export_template_manager.cpp msgid "Can't open export templates zip." @@ -2781,18 +2764,20 @@ msgstr "Extrakce exportních šablon" #: editor/export_template_manager.cpp msgid "Importing:" -msgstr "" +msgstr "Importování:" #: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." msgstr "" +"Nebyly nalezeny odkazy pro stažení této verze. Přímé stažení je dostupné " +"pouze pro oficiální vydání." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't resolve." -msgstr "" +msgstr "Nelze vyřešit." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2802,7 +2787,7 @@ msgstr "Nelze se připojit." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "No response." -msgstr "" +msgstr "Žádná odpověď." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2812,22 +2797,23 @@ msgstr "Požadavek se nezdařil." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Redirect Loop." -msgstr "" +msgstr "Zacyklené přesměrování." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Failed:" -msgstr "" +msgstr "Selhalo:" #: editor/export_template_manager.cpp msgid "Download Complete." -msgstr "" +msgstr "Stahování dokončeno." #: editor/export_template_manager.cpp msgid "" "Templates installation failed. The problematic templates archives can be " "found at '%s'." msgstr "" +"Instalace šablon selhala. Problémové archivy šablon lze nalézt na '%s'." #: editor/export_template_manager.cpp msgid "Error requesting url: " @@ -2843,11 +2829,11 @@ msgstr "Odpojeno" #: editor/export_template_manager.cpp msgid "Resolving" -msgstr "" +msgstr "Řeším" #: editor/export_template_manager.cpp msgid "Can't Resolve" -msgstr "" +msgstr "Nelze vyřešit" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2877,19 +2863,19 @@ msgstr "Chyba připojení" #: editor/export_template_manager.cpp msgid "SSL Handshake Error" -msgstr "" +msgstr "Selhání SSL handshaku" #: editor/export_template_manager.cpp msgid "Current Version:" -msgstr "" +msgstr "Aktuální verze:" #: editor/export_template_manager.cpp msgid "Installed Versions:" -msgstr "" +msgstr "Instalované verze:" #: editor/export_template_manager.cpp msgid "Install From File" -msgstr "" +msgstr "Instalovat ze souboru" #: editor/export_template_manager.cpp msgid "Remove Template" @@ -2918,9 +2904,8 @@ msgstr "" "ukládána!" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" -msgstr "Oblíbené:" +msgstr "Oblíbené" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" @@ -3005,14 +2990,12 @@ msgid "Instance" msgstr "Instance" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to favorites" -msgstr "Oblíbené:" +msgstr "Přidat do oblíbených" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "Odebrat ze skupiny" +msgstr "Odebrat z oblíbených" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3043,12 +3026,10 @@ msgid "New Resource..." msgstr "Nový zdroj..." #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Expand All" msgstr "Rozbalit vše" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" msgstr "Sbalit vše" @@ -3109,24 +3090,20 @@ msgid "Create Script" msgstr "Vytvořit skript" #: editor/find_in_files.cpp -#, fuzzy msgid "Find in Files" msgstr "Najít v souborech" #: editor/find_in_files.cpp -#, fuzzy msgid "Find:" -msgstr "Najít: " +msgstr "Najít:" #: editor/find_in_files.cpp -#, fuzzy msgid "Folder:" -msgstr "Složka: " +msgstr "Složka:" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "Filtr: " +msgstr "Filtry:" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3303,12 +3280,10 @@ msgid "Failed to load resource." msgstr "Selhalo nahrání zdroje." #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" msgstr "Rozbalit všechny vlastnosti" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" msgstr "Sbalit všechny vlastnosti" @@ -3450,6 +3425,10 @@ msgid "" "Ctrl+LMB: Split Segment.\n" "RMB: Erase Point." msgstr "" +"Upravit existující polygon:\n" +"LMB: Přesunout bod.\n" +"Ctrl+LMB: Rozdělit segment.\n" +"RMB: Vymazat bod." #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "Delete points" @@ -3467,15 +3446,14 @@ msgstr "Přidat animaci" #: 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 "Načíst" +msgstr "Načíst.." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "This type of node can't be used. Only root nodes are allowed." -msgstr "" +msgstr "Tento typ uzlu nelze použít. Jsou povoleny pouze kořenové uzly." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3494,37 +3472,32 @@ msgstr "" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Select and move points, create points with RMB." -msgstr "" +msgstr "Zvolte a přesuňte body. Nové uzly vytvořte pomocí RMB." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Create points." -msgstr "Odstranit body" +msgstr "Vytvořit body." #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Erase points." -msgstr "RMB: Vymazat bod." +msgstr "Vymazat body." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Point" -msgstr "Přesunout bod" +msgstr "Bod" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Open Animation Node" -msgstr "Jméno animace:" +msgstr "Otevřít uzel animace" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Triangle already exists" -msgstr "Akce '%s' již existuje!" +msgstr "Trojúhelník již existuje" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "BlendSpace2D does not belong to an AnimationTree node." @@ -3588,15 +3561,13 @@ msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Node.." -msgstr "Přidat uzel" +msgstr "Přidat uzel.." #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Edit Filtered Tracks:" -msgstr "Editovat filtry" +msgstr "Upravit filtrované stopy:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Enable filtering" @@ -3608,15 +3579,15 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Animation Name:" -msgstr "" +msgstr "Nový název animace:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" -msgstr "" +msgstr "Nová animace" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" -msgstr "" +msgstr "Změnit název animace:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Delete Animation?" @@ -3628,14 +3599,12 @@ msgid "Remove Animation" msgstr "Smazat animaci" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Invalid animation name!" -msgstr "Chyba: Neplatné jméno animace!" +msgstr "Neplatné jméno animace!" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Animation name already exists!" -msgstr "Chyba: Jméno animace už existuje!" +msgstr "Jméno animace už existuje!" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -3659,9 +3628,8 @@ msgid "Duplicate Animation" msgstr "Duplikovat animaci" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "No animation to copy!" -msgstr "ERROR: Nevybrána animace pro kopírování!" +msgstr "Žádná animace pro kopírování!" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy @@ -3677,9 +3645,8 @@ msgid "Paste Animation" msgstr "Vložit animaci" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "No animation to edit!" -msgstr "ERROR: Nevybrána animace pro úpravu!" +msgstr "Žádná animace pro úpravu!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" @@ -3723,14 +3690,12 @@ msgid "New" msgstr "Nový" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Edit Transitions..." -msgstr "Přechody" +msgstr "Upravit přechody..." #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Open in Inspector" -msgstr "Otevřít v editoru" +msgstr "Otevřít v inspektoru" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." @@ -3823,7 +3788,7 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp msgid "End" -msgstr "" +msgstr "Konec" #: editor/plugins/animation_state_machine_editor.cpp msgid "Immediate" @@ -3858,14 +3823,12 @@ msgid "" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Create new nodes." -msgstr "Vytvořit nový %s" +msgstr "Vytvořit nové uzly." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Connect nodes." -msgstr "Připojit uzly" +msgstr "Připojit uzly." #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy @@ -3881,9 +3844,8 @@ msgid "Set the end animation. This is useful for sub-transitions." msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition: " -msgstr "Přechod" +msgstr "Přechod: " #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -4075,7 +4037,7 @@ msgstr "Neúspěšná kontrola sha256 hashe" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Asset Download Error:" -msgstr "" +msgstr "Chyba při stahování assetu:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Downloading (%s / %s)..." @@ -4107,7 +4069,7 @@ msgstr "Chyba při stahování" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download for this asset is already in progress!" -msgstr "" +msgstr "Stahování tohoto assetu právě probíhá!" #: editor/plugins/asset_library_editor_plugin.cpp msgid "First" @@ -4480,9 +4442,8 @@ msgid "Show Origin" msgstr "Zobrazit počátek" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Show Viewport" -msgstr "Zobrazit pomocné" +msgstr "Zobrazit Viewport" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" @@ -4501,13 +4462,12 @@ msgid "Layout" msgstr "Rozložení" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Insert keys." -msgstr "Vložit klíče" +msgstr "Vložit klíče." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" -msgstr "" +msgstr "Vložit klíč (existující stopy)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" @@ -4887,11 +4847,11 @@ msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" -msgstr "" +msgstr "Cílový povrch:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" -msgstr "" +msgstr "Zdrojová mesh:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" @@ -4911,11 +4871,11 @@ msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" -msgstr "" +msgstr "Náhodná rotace:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Tilt:" -msgstr "" +msgstr "Náhodné naklonění:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Scale:" @@ -4927,7 +4887,7 @@ msgstr "Naplnit" #: editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create Navigation Polygon" -msgstr "" +msgstr "Vytvořit navigační polygon" #: editor/plugins/particles_2d_editor_plugin.cpp #, fuzzy @@ -5089,12 +5049,12 @@ msgstr "Shift+Táhnutí:" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Click: Add Point" -msgstr "Kliknutí: Přidat bod" +msgstr "Klik: Přidat bod" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Right Click: Delete Point" -msgstr "" +msgstr "Pravý klik: Smazat bod" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Select Control Points (Shift+Drag)" @@ -5141,9 +5101,8 @@ msgid "Curve Point #" msgstr "Bod křivky #" #: editor/plugins/path_editor_plugin.cpp -#, fuzzy msgid "Set Curve Point Position" -msgstr "Odstranit signál" +msgstr "Nastavit pozici bodu křivky" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve In Position" @@ -5407,12 +5366,11 @@ msgstr "Zdroj" #: editor/plugins/root_motion_editor_plugin.cpp msgid "AnimationTree has no path set to an AnimationPlayer" -msgstr "" +msgstr "AnimationTree nemá nastavenou cestu k AnimstionPlayer" #: editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Path to AnimationPlayer is invalid" -msgstr "Strom animace je neplatný." +msgstr "Cesta k AnimationPlayer je neplatná" #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" @@ -5423,19 +5381,16 @@ msgid "Close and save changes?" msgstr "Zavřít a uložit změny?" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error writing TextFile:" -msgstr "Chyba při načítání:" +msgstr "Chyba při zápisu textového souboru:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error: could not load file." -msgstr "Chyba - Nelze vytvořit skript v souborovém systému." +msgstr "Chyba: nelze načíst soubor." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error could not load file." -msgstr "Chyba - Nelze vytvořit skript v souborovém systému." +msgstr "Chyba nelze načíst soubor." #: editor/plugins/script_editor_plugin.cpp msgid "Error saving file!" @@ -5458,18 +5413,16 @@ msgid "Error importing" msgstr "Chyba při importu" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "New TextFile..." -msgstr "Nová složka..." +msgstr "Nový textový soubor..." #: editor/plugins/script_editor_plugin.cpp msgid "Open File" msgstr "Otevřít soubor" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Save File As..." -msgstr "Uložit jako..." +msgstr "Uložit soubor jako..." #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" @@ -5516,9 +5469,8 @@ msgid "File" msgstr "Soubor" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "New TextFile" -msgstr "Zobrazit soubory" +msgstr "Nový textový soubor" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" @@ -5606,9 +5558,8 @@ msgid "Keep Debugger Open" msgstr "Nechat ladící program otevřený" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" -msgstr "Debugovat externím editorem" +msgstr "Debugovat v externím editoru" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation" @@ -5651,9 +5602,8 @@ msgid "Debugger" msgstr "Ladicí program" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" -msgstr "Prohledat výsledky" +msgstr "Výsledky hledání" #: editor/plugins/script_text_editor.cpp msgid "Line" @@ -5664,9 +5614,8 @@ msgid "(ignore)" msgstr "(ignorovat)" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function" -msgstr "Přejít na funkci..." +msgstr "Přejít na funkci" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." @@ -5755,12 +5704,10 @@ msgid "Trim Trailing Whitespace" msgstr "Osekat koncové mezery" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" msgstr "Převést odsazení na mezery" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" msgstr "Převést odsazení na taby" @@ -5778,12 +5725,10 @@ msgid "Remove All Breakpoints" msgstr "Odstranit všechny breakpointy" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" msgstr "Přejít na další breakpoint" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" msgstr "Přejít na předchozí breakpoint" @@ -5792,17 +5737,14 @@ msgid "Find Previous" msgstr "Najít předchozí" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." msgstr "Najít v souborech..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "Přejít na funkci..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." msgstr "Přejít na řádek..." @@ -5843,9 +5785,8 @@ msgid "Create physical skeleton" msgstr "Vytvořit fyzickou kostru" #: editor/plugins/skeleton_ik_editor_plugin.cpp -#, fuzzy msgid "Play IK" -msgstr "Spustit" +msgstr "Spustit IK" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orthogonal" @@ -7089,18 +7030,20 @@ msgid "" "You don't currently have any projects.\n" "Would you like to explore the official example projects in the Asset Library?" msgstr "" +"V této chvíli nemáte žádný projekt.\n" +"Přejete si prozkoumat oficiální ukázkové projekty v knihovně assetů?" #: editor/project_settings_editor.cpp msgid "Key " -msgstr "" +msgstr "Klávesa " #: editor/project_settings_editor.cpp msgid "Joy Button" -msgstr "" +msgstr "Tlačítko gamepadu" #: editor/project_settings_editor.cpp msgid "Joy Axis" -msgstr "" +msgstr "Osa gamepadu" #: editor/project_settings_editor.cpp msgid "Mouse Button" @@ -7559,9 +7502,8 @@ msgid "Initial value for the counter" msgstr "" #: editor/rename_dialog.cpp -#, fuzzy msgid "Step" -msgstr "Krok:" +msgstr "Krok" #: editor/rename_dialog.cpp msgid "Amount by which counter is incremented for each node" @@ -9195,7 +9137,7 @@ msgstr "" "prosím zdroj tvar!" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9449,6 +9391,9 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Zoom:" +#~ msgstr "Přiblížit:" + #~ msgid "Class List:" #~ msgstr "Seznam tříd:" diff --git a/editor/translations/da.po b/editor/translations/da.po index 03e628df44..c92d2f2ece 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -556,9 +556,8 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Zoom:" -msgstr "Zoom Ind" +msgid "Font Size:" +msgstr "" #: editor/code_editor.cpp msgid "Line:" @@ -1728,6 +1727,12 @@ msgstr "Denne handling kan ikke foretages uden tree root" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2173,7 +2178,7 @@ msgid "Undo" msgstr "Fortryd" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Annuller Fortyd" @@ -9274,7 +9279,7 @@ msgstr "" "til det!" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9522,6 +9527,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Zoom Ind" + #~ msgid "Class List:" #~ msgstr "Class Liste:" diff --git a/editor/translations/de.po b/editor/translations/de.po index 95d275e732..fc6396fd5b 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -34,12 +34,13 @@ # Robin Bauknecht <robin.bauknecht@gmail.com>, 2018. # Julian Retzlaff <julian.retzlaff@googlemail.com>, 2018. # asyncial <mahlburg@posteo.de>, 2018. +# ssantos <ssantos@web.de>, 2018. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-11-10 20:07+0000\n" -"Last-Translator: So Wieso <sowieso@dukun.de>\n" +"PO-Revision-Date: 2018-12-04 22:14+0000\n" +"Last-Translator: ssantos <ssantos@web.de>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" "Language: de\n" @@ -47,7 +48,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.3-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -63,9 +64,8 @@ msgstr "" "Nicht genügend Bytes zum Dekodieren des Byte-Strings oder ungültiges Format." #: core/math/expression.cpp -#, fuzzy msgid "Invalid input %i (not passed) in expression" -msgstr "Ungültige Eingabe %i (fehlgeschlagen) in Ausdruck" +msgstr "Ungültige Eingabe %i (nicht bestanden) in Ausdruck" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -433,14 +433,12 @@ msgid "Delete Selection" msgstr "Auswahl löschen" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" -msgstr "Gehe zum nächsten Schritt" +msgstr "Zum nächsten Schritt" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" -msgstr "Gehe zum vorherigen Schritt" +msgstr "Zum vorherigen Schritt" #: editor/animation_track_editor.cpp msgid "Optimize Animation" @@ -579,8 +577,9 @@ msgid "Warnings:" msgstr "Warnungen:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Vergrößerung:" +#, fuzzy +msgid "Font Size:" +msgstr "Quellschriftgröße:" #: editor/code_editor.cpp msgid "Line:" @@ -693,9 +692,8 @@ msgid "Edit Connection: " msgstr "Verbindung bearbeiten: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "Sollen wirklich alle Verbindungen mit diesem Signal entfernt werden?" +msgstr "Sollen wirklich alle Verbindungen des Signals „%s“ entfernt werden?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -852,10 +850,8 @@ msgid "Error loading:" msgstr "Fehler beim Laden:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Load failed due to missing dependencies:" -msgstr "" -"Die Szene konnte aufgrund fehlender Abhängigkeiten nicht geladen werden:" +msgstr "Ladefehler aufgrund fehlender Abhängigkeiten:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -1343,7 +1339,6 @@ msgid "File Exists, Overwrite?" msgstr "Datei existiert bereits. Überschreiben?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select This Folder" msgstr "Diesen Ordner auswählen" @@ -1352,15 +1347,13 @@ msgid "Copy Path" msgstr "Pfad kopieren" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "Open in File Manager" msgstr "Im Dateimanager öffnen" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp #: editor/project_manager.cpp -#, fuzzy msgid "Show in File Manager" -msgstr "Zeige im Dateimanager" +msgstr "Im Dateimanager anzeigen" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "New Folder..." @@ -1503,19 +1496,16 @@ msgid "Methods" msgstr "Methoden" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "Methoden" +msgstr "Methoden:" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "Eigenschaften" +msgstr "Motiv-Eigenschaften" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "Eigenschaften:" +msgstr "Motiv-Eigenschaften:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1542,14 +1532,12 @@ msgid "Constants:" msgstr "Konstanten:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "Beschreibung" +msgstr "Klassenbeschreibung" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "Beschreibung:" +msgstr "Klassenbeschreibung:" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1566,12 +1554,10 @@ msgstr "" "$url2]Meldung von Problemen[/url][/color] sind sehr erwünscht." #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" -msgstr "Eigenschaften-Beschreibung:" +msgstr "Eigenschaften-Beschreibung" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions:" msgstr "Eigenschaften-Beschreibung:" @@ -1584,12 +1570,10 @@ msgstr "" "$url]Ergänzungen durch eigene Beiträge[/url][/color] sind sehr erwünscht!" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "Methoden-Beschreibung:" +msgstr "Methoden-Beschreibung" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions:" msgstr "Methoden-Beschreibung:" @@ -1607,49 +1591,40 @@ msgid "Search Help" msgstr "Hilfe durchsuchen" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "Normale Ansicht" +msgstr "Alles anzeigen" #: editor/editor_help_search.cpp -#, fuzzy msgid "Classes Only" -msgstr "Klassen" +msgstr "Nur Klassen" #: editor/editor_help_search.cpp -#, fuzzy msgid "Methods Only" -msgstr "Methoden" +msgstr "Nur Methoden" #: editor/editor_help_search.cpp -#, fuzzy msgid "Signals Only" -msgstr "Signale" +msgstr "Nur Signale" #: editor/editor_help_search.cpp -#, fuzzy msgid "Constants Only" -msgstr "Konstanten" +msgstr "Nur Konstanten" #: editor/editor_help_search.cpp -#, fuzzy msgid "Properties Only" -msgstr "Eigenschaften" +msgstr "Nur Eigenschaften" #: editor/editor_help_search.cpp -#, fuzzy msgid "Theme Properties Only" -msgstr "Eigenschaften" +msgstr "Nur Motiv-Eigenschaften" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "Mitglieder" +msgstr "Mitgliedstyp" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "Klasse:" +msgstr "Klasse" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" @@ -1750,6 +1725,12 @@ msgstr "Diese Aktion kann nicht ohne eine Wurzel ausgeführt werden." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1758,7 +1739,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "Momentan geöffnete Szenen können nicht überschrieben werden!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -2021,13 +2002,12 @@ msgid "Unable to load addon script from path: '%s'." msgstr "Erweiterungsskript konnte nicht geladen werden: ‚%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 "" -"Erweiterungsskript konnte nicht geladen werden: ‚%s‘ Skript ist nicht im " -"Werkzeugmodus." +"Erweiterungsskript konnte nicht von folgendem Pfad geladen werden: ‚%s‘. Es " +"scheint ein Fehler im Quellcode zu sein. Bitte Syntax überprüfen." #: editor/editor_node.cpp msgid "" @@ -2084,7 +2064,6 @@ msgstr "Standard" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp -#, fuzzy msgid "Show in FileSystem" msgstr "Im Dateisystem anzeigen" @@ -2169,7 +2148,6 @@ msgid "Save Scene" msgstr "Szene speichern" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" msgstr "Alle Szenen speichern" @@ -2199,7 +2177,7 @@ msgid "Undo" msgstr "Rückgängig machen" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Wiederherstellen" @@ -2657,6 +2635,9 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"ViewportTextures können nicht für Ressourcen erstellt werden die als Datei " +"gespeichert sind.\n" +"Diese Ressourcen müssen zu einer Szene gehören." #: editor/editor_properties.cpp msgid "" @@ -2665,6 +2646,10 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" +"ViewportTexture kann für diese Ressource nicht erstellt werden weil sie " +"nicht als lokal zu einer Szene markiert wurde.\n" +"Bitte die ‚Lokal zu Szene‘-Eigenschaft an dieser Ressource aktivieren (und " +"an allen Ressourcen die sie enthalten, bis zum nächsten Node)." #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -2981,9 +2966,8 @@ msgstr "" "Der Dateityp-Cache wird nicht gespeichert!" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" -msgstr "Favoriten:" +msgstr "Favoriten" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" @@ -3069,14 +3053,12 @@ msgid "Instance" msgstr "Instanz" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to favorites" -msgstr "Favoriten:" +msgstr "Zu Favoriten hinzufügen" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "Aus Gruppe entfernen" +msgstr "Aus Favoriten entfernen" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3107,12 +3089,10 @@ msgid "New Resource..." msgstr "Neue Ressource..." #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Expand All" -msgstr "Alle expandieren" +msgstr "Alle ausklappen" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" msgstr "Alle einklappen" @@ -3136,9 +3116,8 @@ msgid "Re-Scan Filesystem" msgstr "Dateisystem erneut einlesen" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle split mode" -msgstr "Modus umschalten" +msgstr "Geteilten Modus umschalten" #: editor/filesystem_dock.cpp msgid "Search files" @@ -3175,24 +3154,20 @@ msgid "Create Script" msgstr "Erstelle Skript" #: editor/find_in_files.cpp -#, fuzzy msgid "Find in Files" msgstr "In Dateien suchen" #: editor/find_in_files.cpp -#, fuzzy msgid "Find:" -msgstr "Suche: " +msgstr "Suche:" #: editor/find_in_files.cpp -#, fuzzy msgid "Folder:" -msgstr "Verzeichnis: " +msgstr "Verzeichnis:" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "Filter" +msgstr "Filter:" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3369,12 +3344,10 @@ msgid "Failed to load resource." msgstr "Laden der Ressource gescheitert." #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" msgstr "Alle Eigenschaften ausklappen" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" msgstr "Alle Eigenschaften einklappen" @@ -4329,9 +4302,8 @@ msgid "Resize CanvasItem" msgstr "CanvasItem in Größe anpassen" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem" -msgstr "CanvasItem rotieren" +msgstr "CanvasItem skalieren" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move CanvasItem" @@ -4396,9 +4368,8 @@ msgid "Rotate Mode" msgstr "Rotationsmodus" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Mode" -msgstr "Skalierungsmodus (R)" +msgstr "Skalierungsmodus" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -4499,9 +4470,8 @@ msgid "Restores the object's children's ability to be selected." msgstr "Macht Unterobjekte dieses Objekts wieder auswählbar." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Skeleton Options" -msgstr "Skelett" +msgstr "Skelett-Einstellungen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -4555,7 +4525,7 @@ msgstr "Zeige Ansichtsfenster (Viewport)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "Gruppe zeigen und Icons sperren" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -4998,7 +4968,6 @@ msgid "Create Navigation Polygon" msgstr "Erzeuge Navigationspolygon" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" msgstr "Generiere Sichtbarkeits-Rechteck" @@ -5482,7 +5451,6 @@ msgid "Error writing TextFile:" msgstr "Fehler beim Schreiben von Textdatei:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error: could not load file." msgstr "Fehler: Datei konnte nicht geladen werden." @@ -5583,7 +5551,6 @@ msgid "Copy Script Path" msgstr "Skriptpfad kopieren" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "History Previous" msgstr "Zurück im Verlauf" @@ -5655,7 +5622,6 @@ msgid "Keep Debugger Open" msgstr "Debugger offen halten" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" msgstr "Mit externem Editor debuggen" @@ -5700,7 +5666,6 @@ msgid "Debugger" msgstr "Debugger" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" msgstr "Suchergebnisse" @@ -5713,9 +5678,8 @@ msgid "(ignore)" msgstr "(ignorieren)" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function" -msgstr "Springe zu Funktion..." +msgstr "Springe zu Funktion" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." @@ -5804,12 +5768,10 @@ msgid "Trim Trailing Whitespace" msgstr "Kürze Leerraum am Zeilenende" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" msgstr "Konvertiere Einrückung zu Leerzeichen" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" msgstr "Konvertiere Einrückung zu Tabulatoren" @@ -5827,12 +5789,10 @@ msgid "Remove All Breakpoints" msgstr "Lösche alle Haltepunkte" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" msgstr "Springe zum nächsten Haltepunkt" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" msgstr "Springe zum vorigen Haltepunkt" @@ -5841,17 +5801,14 @@ msgid "Find Previous" msgstr "Finde Vorheriges" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." msgstr "In Dateien suchen..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "Springe zu Funktion..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." msgstr "Springe zu Zeile..." @@ -5947,11 +5904,11 @@ msgstr "Animationsschlüsselbild eingefügt." #: editor/plugins/spatial_editor_plugin.cpp msgid "Pitch" -msgstr "Tonhöhe" +msgstr "Neigen" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "Gieren" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -6118,9 +6075,8 @@ msgid "Freelook Speed Modifier" msgstr "Freisicht Geschwindigkeitsregler" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" -msgstr "Sichtrotation sperren" +msgstr "Sichtrotation gesperrt" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" @@ -6624,9 +6580,8 @@ msgid "Fix Invalid Tiles" msgstr "Ungültige Kacheln reparieren" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "Auswahl zentrieren" +msgstr "Auswahl ausschneiden" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -6673,32 +6628,28 @@ msgid "Pick Tile" msgstr "Wähle Kachel" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "Auswahl verschieben" +msgstr "Auswahl kopieren" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate left" -msgstr "Rotationsmodus" +msgstr "Nach links rotieren" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate right" -msgstr "nach rechts" +msgstr "Nach rechts rotieren" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip horizontally" -msgstr "" +msgstr "Horizontal spiegeln" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +msgstr "Vertikal spiegeln" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Clear transform" -msgstr "Transformation" +msgstr "Transform löschen" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Add Texture(s) to TileSet" @@ -6729,9 +6680,8 @@ msgid "Display tile's names (hold Alt Key)" msgstr "Kachelnamen anzeigen (Alt-Taste halten)" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture and ALL TILES which use it?" -msgstr "Wirklich ausgewählte Textur und ALLE sie nutzenden Kacheln entfernen?" +msgstr "Ausgewählte Textur und ALLE sie nutzenden Kacheln entfernen?" #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." @@ -6746,10 +6696,10 @@ msgid "Merge from scene?" msgstr "Aus Szene vereinen?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "%s file(s) were not added because was already on the list." msgstr "" -" Dateien wurde nicht hinzugefügt weil sie schon in der Liste vorhanden waren." +"%s Datei(en) wurde(n) nicht hinzugefügt weil sie schon in der Liste " +"vorhanden war(en)." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -6836,14 +6786,12 @@ msgid "Export templates for this platform are missing/corrupted:" msgstr "Export-Vorlagen für dieses Systeme fehlen / sind fehlerhaft:" #: editor/project_export.cpp -#, fuzzy msgid "Release" -msgstr "gerade losgelassen" +msgstr "Veröffentlichung" #: editor/project_export.cpp -#, fuzzy msgid "Exporting All" -msgstr "Exportiere für %s" +msgstr "Exportiere alles" #: editor/project_export.cpp msgid "Presets" @@ -6854,9 +6802,8 @@ msgid "Add..." msgstr "Hinzufügen..." #: editor/project_export.cpp -#, fuzzy msgid "Export Path:" -msgstr "Exportvorlage:" +msgstr "Exportpfad:" #: editor/project_export.cpp msgid "Resources" @@ -6921,14 +6868,12 @@ msgid "Export PCK/Zip" msgstr "Exportiere PCK/Zip" #: editor/project_export.cpp -#, fuzzy msgid "Export mode?" -msgstr "Export-Modus:" +msgstr "Export-Modus?" #: editor/project_export.cpp -#, fuzzy msgid "Export All" -msgstr "Exportieren" +msgstr "Alles exportieren" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" @@ -7618,16 +7563,14 @@ msgid "Step" msgstr "Schritt" #: editor/rename_dialog.cpp -#, fuzzy msgid "Amount by which counter is incremented for each node" -msgstr "Wert um welchen Zähler für jedes Node erhöht wird" +msgstr "Wert um welchen der Zähler für jedes Node erhöht wird" #: editor/rename_dialog.cpp msgid "Padding" msgstr "Versatz" #: editor/rename_dialog.cpp -#, fuzzy msgid "" "Minimum number of digits for the counter.\n" "Missing digits are padded with leading zeros." @@ -7778,6 +7721,8 @@ msgid "" "Disabling \"editable_instance\" will cause all properties of the node to be " "reverted to their default." msgstr "" +"Wenn „Editierbare Instanz“ deaktiviert wird, werden alle Eigenschaften " +"dieses Nodes wieder in ihren Ausgangszustand zurückgesetzt." #: editor/scene_tree_dock.cpp msgid "Editable Children" @@ -7852,9 +7797,8 @@ msgid "Clear Inheritance" msgstr "Leere Vererbung" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open documentation" -msgstr "Öffne Godot-Referenzdokumentation" +msgstr "Dokumentation öffnen" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)" @@ -7869,9 +7813,8 @@ msgid "Change Type" msgstr "Typ ändern" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" -msgstr "Skript öffnen" +msgstr "Skript erweitern" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" @@ -8035,9 +7978,8 @@ msgid "Path is empty" msgstr "Pfad ist leer" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty" -msgstr "Sprite ist leer!" +msgstr "Dateiname ist leer" #: editor/script_create_dialog.cpp msgid "Path is not local" @@ -8128,9 +8070,8 @@ msgid "Bytes:" msgstr "Bytes:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Stack Trace" -msgstr "Aufrufsverlauf" +msgstr "Stacktrace" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." @@ -8580,7 +8521,7 @@ msgstr "Ende des inneren Exception-Stack-Traces" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "" +msgstr "NavMesh backen" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -8969,12 +8910,11 @@ msgstr "VisualScript suchen" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "%s abrufen" #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Set %s" -msgstr "Setzen " +msgstr "%s setzen" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -9075,6 +9015,8 @@ msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"CPUParticles2D-Animationen benötigen ein CanvasItemMaterial mit der " +"Eigenschaft „Particles Animation“ aktiviert." #: scene/2d/light_2d.cpp msgid "" @@ -9134,6 +9076,8 @@ msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Particles2D-Animationen benötigen ein CanvasItemMaterial mit der Eigenschaft " +"„Particles Animation“ aktiviert." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -9284,15 +9228,16 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." -msgstr "" -"Nichts ist sichtbar da keine Meshe den Zeichendurchläufen zugewiesen wurden." +msgid "Nothing is visible because no mesh has been assigned." +msgstr "Nichts ist sichtbar da kein Mesh zugewiesen wurden." #: scene/3d/cpu_particles.cpp msgid "" "CPUParticles animation requires the usage of a SpatialMaterial with " "\"Billboard Particles\" enabled." msgstr "" +"CPUParticles-Animationen benötigen ein SpatialMaterial mit der Eigenschaft " +"„Billboard Particles“ aktiviert." #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -9323,24 +9268,24 @@ msgid "" "Particles animation requires the usage of a SpatialMaterial with \"Billboard " "Particles\" enabled." msgstr "" +"Particles-Animationen benötigen ein SpatialMaterial mit der Eigenschaft " +"„Billboard Particles“ aktiviert." #: scene/3d/path.cpp -#, fuzzy msgid "PathFollow only works when set as a child of a Path node." msgstr "" -"PathFollow2D funktioniert nur, wenn es als Unterobjekt eines Path2D-Nodes " +"PathFollow funktioniert nur, wenn es als Unterobjekt eines Path-Nodes " "gesetzt wird." #: scene/3d/path.cpp -#, fuzzy msgid "OrientedPathFollow only works when set as a child of a Path node." msgstr "" -"PathFollow2D funktioniert nur, wenn es als Unterobjekt eines Path2D-Nodes " -"gesetzt wird." +"OrientedPathFollow funktioniert nur, wenn es als Unterobjekt eines Path-" +"Nodes gesetzt wird." #: scene/3d/path.cpp msgid "OrientedPathFollow requires up vectors enabled in its parent Path." -msgstr "" +msgstr "OrientedPathFollow benötigt im Elternpfad aktivierte Aufwärtsvektoren." #: scene/3d/physics_body.cpp msgid "" @@ -9382,7 +9327,6 @@ msgid "This body will be ignored until you set a mesh" msgstr "Diese Körper wird ignoriert werden bis ein Mesh gesetzt wurde" #: scene/3d/soft_body.cpp -#, fuzzy msgid "" "Size changes to SoftBody will be overridden by the physics engine when " "running.\n" @@ -9479,7 +9423,7 @@ msgstr "" #: scene/gui/range.cpp msgid "If exp_edit is true min_value must be > 0." -msgstr "" +msgstr "Wenn exp_edit true ist muss min_value größer als null sein." #: scene/gui/scroll_container.cpp msgid "" @@ -9558,6 +9502,9 @@ msgstr "Zuweisung an Uniform." msgid "Varyings can only be assigned in vertex function." msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden." +#~ msgid "Zoom:" +#~ msgstr "Vergrößerung:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "Sollen wirklich alle Verbindungen entfernt werden von „" @@ -10280,9 +10227,6 @@ msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden." #~ msgid "Source Font:" #~ msgstr "Quellschriftart:" -#~ msgid "Source Font Size:" -#~ msgstr "Quellschriftgröße:" - #~ msgid "Dest Resource:" #~ msgstr "Ziel-Ressource:" diff --git a/editor/translations/de_CH.po b/editor/translations/de_CH.po index 66085ed6b8..4ec0459cf0 100644 --- a/editor/translations/de_CH.po +++ b/editor/translations/de_CH.po @@ -549,7 +549,7 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" +msgid "Font Size:" msgstr "" #: editor/code_editor.cpp @@ -1696,6 +1696,12 @@ msgstr "Ohne eine Szene kann das nicht funktionieren." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2102,7 +2108,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -9147,7 +9153,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index 7f7d1391a1..beba25ff56 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -528,7 +528,7 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" +msgid "Font Size:" msgstr "" #: editor/code_editor.cpp @@ -1643,6 +1643,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2039,7 +2045,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8839,7 +8845,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp diff --git a/editor/translations/el.po b/editor/translations/el.po index 3f04d1ce6a..1eec84e7e5 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -546,8 +546,9 @@ msgid "Warnings:" msgstr "Προειδοποιήσεις:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Μεγέθυνση:" +#, fuzzy +msgid "Font Size:" +msgstr "Μέγεθος πηγαίας γραμματοσειράς:" #: editor/code_editor.cpp msgid "Line:" @@ -1709,6 +1710,12 @@ msgstr "Αυτή η λειτουργία δεν μπορεί να γίνει χ #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2161,7 +2168,7 @@ msgid "Undo" msgstr "Αναίρεση" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Ακύρωση αναίρεσης" @@ -9332,7 +9339,7 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" "Τίποτα δεν είναι ορατό, επειδή δεν έχουν οριστεί περάσματα για τα πλέγματα." @@ -9603,6 +9610,9 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Zoom:" +#~ msgstr "Μεγέθυνση:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "" #~ "Είστε σίγουροι πως θέλετε να αφαιρέσετε όλες τις συνδέσεις απο το \"" @@ -10320,9 +10330,6 @@ msgstr "" #~ msgid "Source Font:" #~ msgstr "Πηγαία γραμματοσειρά:" -#~ msgid "Source Font Size:" -#~ msgstr "Μέγεθος πηγαίας γραμματοσειράς:" - #~ msgid "Dest Resource:" #~ msgstr "Πόρος προορισμού:" diff --git a/editor/translations/es.po b/editor/translations/es.po index 6c1b5908cd..012cff890c 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -33,12 +33,13 @@ # Franklin David Macias Avellan <franklin.macias864@gmail.com>, 2018. # Dianiel García <jdangarr@gmail.com>, 2018. # ayahuasca1979 <ayahuasca1979@gmail.com>, 2018. +# Elena G <elena.guzbla@gmail.com>, 2018. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-09-14 23:25+0000\n" -"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n" +"PO-Revision-Date: 2018-12-04 22:15+0000\n" +"Last-Translator: Elena G <elena.guzbla@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" "Language: es\n" @@ -46,7 +47,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.2-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -580,8 +581,9 @@ msgid "Warnings:" msgstr "Advertencias:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Zoom:" +#, fuzzy +msgid "Font Size:" +msgstr "Tamaño de la tipografía elegida:" #: editor/code_editor.cpp msgid "Line:" @@ -1745,6 +1747,12 @@ msgstr "Esta operación no puede realizarse sin una escena raíz." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1753,7 +1761,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "¡No se puede sobreescribir una escena que está abierta!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -2194,7 +2202,7 @@ msgid "Undo" msgstr "Deshacer" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Rehacer" @@ -4553,8 +4561,9 @@ msgid "Show Viewport" msgstr "Ver viewport" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Show Group And Lock Icons" -msgstr "" +msgstr "Mostrar iconos de grupo y bloqueo" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -5948,8 +5957,9 @@ msgid "Pitch" msgstr "Altura" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy msgid "Yaw" -msgstr "" +msgstr "Girar desde eje vertical" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -6685,11 +6695,11 @@ msgstr "Mover a la derecha" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip horizontally" -msgstr "" +msgstr "Voltear horizontalmente" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +msgstr "Voltear verticalmente" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy @@ -8965,12 +8975,11 @@ msgstr "Buscar en VisualScript" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "Obtener %s" #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Set %s" -msgstr "Establecer " +msgstr "Establecer %s" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -9070,6 +9079,8 @@ msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"La animación CPUParticles2D requiere el uso de un CanvasItemMaterial con " +"\"Particles Animation\" activado." #: scene/2d/light_2d.cpp msgid "" @@ -9127,6 +9138,8 @@ msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"La animación Particles2D requiere el uso de un CanvasItemMaterial con " +"\"Particles Animation\" activado." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -9273,7 +9286,7 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" "Nada es visible porque las mallas no se han asignado a los pases de dibujo." @@ -9282,6 +9295,8 @@ msgid "" "CPUParticles animation requires the usage of a SpatialMaterial with " "\"Billboard Particles\" enabled." msgstr "" +"La animación CPUParticles requiere el uso de un SpatialMaterial con " +"\"Billboard Particles\" activado." #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -9312,6 +9327,8 @@ msgid "" "Particles animation requires the usage of a SpatialMaterial with \"Billboard " "Particles\" enabled." msgstr "" +"La animación de partículas requiere el uso de un SpatialMaterial con " +"\"Billboard Particles\" activado." #: scene/3d/path.cpp #, fuzzy @@ -9461,7 +9478,7 @@ msgstr "" #: scene/gui/range.cpp msgid "If exp_edit is true min_value must be > 0." -msgstr "" +msgstr "Si exp_edit es `true` min_value debe ser > 0." #: scene/gui/scroll_container.cpp msgid "" @@ -9537,6 +9554,9 @@ msgstr "Asignación a uniform." msgid "Varyings can only be assigned in vertex function." msgstr "Solo se pueden asignar variaciones en funciones de vértice." +#~ msgid "Zoom:" +#~ msgstr "Zoom:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "¿Estás seguro/a que quieres quitar todas las conexiones de el/la \"" @@ -10271,9 +10291,6 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." #~ msgid "Source Font:" #~ msgstr "Tipografía elegida:" -#~ msgid "Source Font Size:" -#~ msgstr "Tamaño de la tipografía elegida:" - #~ msgid "Dest Resource:" #~ msgstr "Recurso de destino:" diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index 133c013958..f9196dbc6d 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-11-21 19:08+0000\n" +"PO-Revision-Date: 2018-12-04 22:15+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" @@ -22,7 +22,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.3-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -407,12 +407,10 @@ msgid "Delete Selection" msgstr "Eliminar Selección" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" msgstr "Ir a Paso Próximo" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" msgstr "Ir a Paso Previo" @@ -553,8 +551,9 @@ msgid "Warnings:" msgstr "Advertencias:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Zoom:" +#, fuzzy +msgid "Font Size:" +msgstr "Tamaño de la Tipografía de Origen:" #: editor/code_editor.cpp msgid "Line:" @@ -667,9 +666,9 @@ msgid "Edit Connection: " msgstr "Editar Conexión: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "¿Estás seguro/a que querés quitar todas las conexiones de esta señal?" +msgstr "" +"¿Estás seguro/a que querés quitar todas las conexiones de la señal \"%s\"?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -822,10 +821,8 @@ msgid "Error loading:" msgstr "Error cargando:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Load failed due to missing dependencies:" -msgstr "" -"La escena falló al cargar debido a las siguientes dependencias faltantes:" +msgstr "Fallo la carga debido a dependencias faltantes:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -1311,24 +1308,21 @@ msgid "File Exists, Overwrite?" msgstr "El Archivo Existe, Sobreescribir?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select This Folder" -msgstr "Seleccionar esta Carpeta" +msgstr "Seleccionar Esta Carpeta" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" msgstr "Copiar Ruta" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "Open in File Manager" msgstr "Abrir en el Explorador de Archivos" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp #: editor/project_manager.cpp -#, fuzzy msgid "Show in File Manager" -msgstr "Mostrar en Gestor de Archivos" +msgstr "Mostrar en Explorador de Archivos" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "New Folder..." @@ -1471,19 +1465,16 @@ msgid "Methods" msgstr "Métodos" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "Métodos" +msgstr "Métodos:" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "Propiedades" +msgstr "Propiedades de Tema" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "Propiedades:" +msgstr "Propiedades de Tema:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1510,14 +1501,12 @@ msgid "Constants:" msgstr "Constantes:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "Descripción" +msgstr "Descripción de Clase" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "Descripción:" +msgstr "Descripción de Clase:" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1534,14 +1523,12 @@ msgstr "" "url][/color]." #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" -msgstr "Descripción de Propiedad:" +msgstr "Descripción de Propiedades" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions:" -msgstr "Descripción de Propiedad:" +msgstr "Descripción de Propiedades:" #: editor/editor_help.cpp msgid "" @@ -1552,12 +1539,10 @@ msgstr "" "[color=$color][url=$url]contribuyendo una[/url][/color]!" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "Descripción de Métodos:" +msgstr "Descripción de Método" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions:" msgstr "Descripción de Métodos:" @@ -1575,49 +1560,40 @@ msgid "Search Help" msgstr "Buscar en la Ayuda" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "Mostrar Normal" +msgstr "Mostrar Todo" #: editor/editor_help_search.cpp -#, fuzzy msgid "Classes Only" -msgstr "Clases" +msgstr "Solo Clases" #: editor/editor_help_search.cpp -#, fuzzy msgid "Methods Only" -msgstr "Métodos" +msgstr "Solo Métodos" #: editor/editor_help_search.cpp -#, fuzzy msgid "Signals Only" -msgstr "Señales" +msgstr "Solo Señales" #: editor/editor_help_search.cpp -#, fuzzy msgid "Constants Only" -msgstr "Constantes" +msgstr "Solo Constantes" #: editor/editor_help_search.cpp -#, fuzzy msgid "Properties Only" -msgstr "Propiedades" +msgstr "Solo Propiedades" #: editor/editor_help_search.cpp -#, fuzzy msgid "Theme Properties Only" -msgstr "Propiedades" +msgstr "Solo Propiedades de Tema" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "Miembros" +msgstr "Tipo de Miembro" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "Clase:" +msgstr "Clase" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" @@ -1717,6 +1693,12 @@ msgstr "Esta operación no puede hacerse sin una raíz de árbol." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1725,7 +1707,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "No se puede sobrescribir una escena que todavía esta abierta!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1988,13 +1970,12 @@ msgid "Unable to load addon script from path: '%s'." msgstr "No se pudo cargar el script de addon desde la ruta: '%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 "" -"No se pudo cargar el script de addon desde la ruta: El script '%s' no está " -"en modo tool." +"No se pudo cargar el script de addon desde la ruta: '%s' Parece haber un " +"error en el código. Por favor, revisá la sintaxis." #: editor/editor_node.cpp msgid "" @@ -2050,7 +2031,6 @@ msgstr "Por Defecto" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp -#, fuzzy msgid "Show in FileSystem" msgstr "Mostrar en Sistema de Archivos" @@ -2135,9 +2115,8 @@ msgid "Save Scene" msgstr "Guardar Escena" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" -msgstr "Guardar todas las Escenas" +msgstr "Guardar Todas las Escenas" #: editor/editor_node.cpp msgid "Close Scene" @@ -2165,7 +2144,7 @@ msgid "Undo" msgstr "Deshacer" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Rehacer" @@ -2623,6 +2602,8 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"No se puede crear una ViewportTexture en recursos guardados como archivo.\n" +"El recurso debe pertenecer a una escena." #: editor/editor_properties.cpp msgid "" @@ -2631,6 +2612,10 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" +"No se puede crear una ViewportTexture en este recurso porque no esta " +"asignado como local a la escena.\n" +"Por favor activá la propiedad 'local a escena' en él (y en todos los " +"recursos que lo contienen hasta un nodo)." #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -2949,9 +2934,8 @@ msgstr "" "de tipos de archivo!" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" -msgstr "Favoritos:" +msgstr "Favoritos" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" @@ -3037,14 +3021,12 @@ msgid "Instance" msgstr "Instancia" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to favorites" -msgstr "Favoritos:" +msgstr "Agregar a favoritos" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "Quitar del Grupo" +msgstr "Quitar de favoritos" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3075,14 +3057,12 @@ msgid "New Resource..." msgstr "Nuevo Recurso..." #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Expand All" -msgstr "Expandir todos" +msgstr "Expandir Todos" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" -msgstr "Colapsar todos" +msgstr "Colapsar Todos" #: editor/filesystem_dock.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -3104,9 +3084,8 @@ msgid "Re-Scan Filesystem" msgstr "Reexaminar Sistema de Archivos" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle split mode" -msgstr "Act/Desact. Modo" +msgstr "Act/Desact. Modo Partido" #: editor/filesystem_dock.cpp msgid "Search files" @@ -3142,24 +3121,20 @@ msgid "Create Script" msgstr "Crear Script" #: editor/find_in_files.cpp -#, fuzzy msgid "Find in Files" -msgstr "Encontrar en archivos" +msgstr "Buscar en archivos" #: editor/find_in_files.cpp -#, fuzzy msgid "Find:" -msgstr "Encontrar: " +msgstr "Buscar:" #: editor/find_in_files.cpp -#, fuzzy msgid "Folder:" -msgstr "Carpeta: " +msgstr "Carpeta:" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "Filtros" +msgstr "Filtros:" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3336,14 +3311,12 @@ msgid "Failed to load resource." msgstr "Fallo al cargar recurso." #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" -msgstr "Expandir todas las propiedades" +msgstr "Expandir Todas las Propiedades" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" -msgstr "Colapsar todas las propiedades" +msgstr "Colapsar Todas las Propiedades" #: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/script_editor_plugin.cpp @@ -4299,9 +4272,8 @@ msgid "Resize CanvasItem" msgstr "Redimensionar CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem" -msgstr "Rotar CanvasItem" +msgstr "Escalar CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move CanvasItem" @@ -4366,9 +4338,8 @@ msgid "Rotate Mode" msgstr "Modo Rotar" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Mode" -msgstr "Modo de Escalado (R)" +msgstr "Modo de Escalado" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -4467,9 +4438,8 @@ msgid "Restores the object's children's ability to be selected." msgstr "Restaurar la habilidad de seleccionar los hijos de un objeto." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Skeleton Options" -msgstr "Esqueleto" +msgstr "Opciones de Esqueleto" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -4523,7 +4493,7 @@ msgstr "Mostrar Viewport" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "Mostrar Grupo Y Bloquear Iconos" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -4965,9 +4935,8 @@ msgid "Create Navigation Polygon" msgstr "Crear Polígono de Navegación" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" -msgstr "Generar Rect. de Visibilidad" +msgstr "Generando Rect. de Visibilidad" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" @@ -5446,9 +5415,8 @@ msgid "Error writing TextFile:" msgstr "Error al escribir el TextFile:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error: could not load file." -msgstr "Error no se pudo cargar el archivo." +msgstr "Error: no se pudo cargar el archivo." #: editor/plugins/script_editor_plugin.cpp msgid "Error could not load file." @@ -5547,7 +5515,6 @@ msgid "Copy Script Path" msgstr "Copiar Ruta de Script" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "History Previous" msgstr "Previo en Historial" @@ -5619,9 +5586,8 @@ msgid "Keep Debugger Open" msgstr "Mantener el Depurador Abierto" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" -msgstr "Depurar con editor externo" +msgstr "Depurar con Editor Externo" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation" @@ -5664,9 +5630,8 @@ msgid "Debugger" msgstr "Depurador" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" -msgstr "Resultados de la búsqueda" +msgstr "Resultados de la Búsqueda" #: editor/plugins/script_text_editor.cpp msgid "Line" @@ -5677,9 +5642,8 @@ msgid "(ignore)" msgstr "(ignorar)" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function" -msgstr "Ir a Función..." +msgstr "Ir a Función" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." @@ -5768,14 +5732,12 @@ msgid "Trim Trailing Whitespace" msgstr "Eliminar Espacios Sobrantes al Final" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" msgstr "Convertir Indentación En Espacios" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" -msgstr "Convertir Indentación En Tabs" +msgstr "Convertir Indentación En Tabulaciones" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" @@ -5791,31 +5753,26 @@ msgid "Remove All Breakpoints" msgstr "Quitar Todos los Breakpoints" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" -msgstr "Ir a Próximo Breakpoint" +msgstr "Ir al Breakpoint Siguiente" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" -msgstr "Ir a Anterior Breakpoint" +msgstr "Ir al Breakpoint Anterior" #: editor/plugins/script_text_editor.cpp msgid "Find Previous" msgstr "Encontrar Anterior" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." -msgstr "Encontrar en archivos..." +msgstr "Buscar en Archivos..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "Ir a Función..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." msgstr "Ir a Línea..." @@ -5913,7 +5870,7 @@ msgstr "Altura" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "Yaw" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -6080,9 +6037,8 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de Velocidad de Vista Libre" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" -msgstr "Trabar Rotación de Vista" +msgstr "Rotación de Vista Trabada" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" @@ -6584,9 +6540,8 @@ msgid "Fix Invalid Tiles" msgstr "Corregir Tiles Inválidos" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "Centrar Selección" +msgstr "Cortar Selección" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -6633,32 +6588,28 @@ msgid "Pick Tile" msgstr "Elegir Tile" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "Mover Selección" +msgstr "Copiar Selección" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate left" -msgstr "Modo Rotar" +msgstr "Rotar a la izquierda" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate right" -msgstr "Mover a la Derecha" +msgstr "Rotar a la derecha" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip horizontally" -msgstr "" +msgstr "Espejar horizontalmente" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +msgstr "Espejar verticalmente" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Clear transform" -msgstr "Transform" +msgstr "Reestablecer transform" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Add Texture(s) to TileSet" @@ -6689,7 +6640,6 @@ msgid "Display tile's names (hold Alt Key)" msgstr "Mostrar nombres de tiles (mantener Tecla Alt)" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture and ALL TILES which use it?" msgstr "¿Quitar Textura Seleccionada y TODOS LOS TILES que la usen?" @@ -6706,9 +6656,8 @@ msgid "Merge from scene?" msgstr "¿Mergear desde escena?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "%s file(s) were not added because was already on the list." -msgstr " archivo(s) no fueron agregados porque ya estaban en la lista." +msgstr "%s archivo(s) no fueron agregados porque ya estaban en la lista." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -6797,14 +6746,12 @@ msgstr "" "corruptas:" #: editor/project_export.cpp -#, fuzzy msgid "Release" -msgstr "recién soltado" +msgstr "Release" #: editor/project_export.cpp -#, fuzzy msgid "Exporting All" -msgstr "Exportando para %s" +msgstr "Exportar Todo" #: editor/project_export.cpp msgid "Presets" @@ -6815,9 +6762,8 @@ msgid "Add..." msgstr "Agregar..." #: editor/project_export.cpp -#, fuzzy msgid "Export Path:" -msgstr "Presets de Exportación:" +msgstr "Ruta de Exportación:" #: editor/project_export.cpp msgid "Resources" @@ -6882,14 +6828,12 @@ msgid "Export PCK/Zip" msgstr "Exportar PCK/Zip" #: editor/project_export.cpp -#, fuzzy msgid "Export mode?" -msgstr "Modo de Exportación:" +msgstr "¿Modo de Exportación?" #: editor/project_export.cpp -#, fuzzy msgid "Export All" -msgstr "Exportar" +msgstr "Exportar Todos" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" @@ -7580,7 +7524,6 @@ msgid "Step" msgstr "Paso" #: editor/rename_dialog.cpp -#, fuzzy msgid "Amount by which counter is incremented for each node" msgstr "Cantidad en la que se incrementa el contador por cada nodo" @@ -7589,7 +7532,6 @@ msgid "Padding" msgstr "Relleno" #: editor/rename_dialog.cpp -#, fuzzy msgid "" "Minimum number of digits for the counter.\n" "Missing digits are padded with leading zeros." @@ -7738,6 +7680,8 @@ msgid "" "Disabling \"editable_instance\" will cause all properties of the node to be " "reverted to their default." msgstr "" +"Desactivar \"editable_instance\" causara que todas las propiedades del nodo " +"vuelvan a sus valores por defecto." #: editor/scene_tree_dock.cpp msgid "Editable Children" @@ -7813,9 +7757,8 @@ msgid "Clear Inheritance" msgstr "Limpiar Herencia" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open documentation" -msgstr "Abrir la documentación online de Godot" +msgstr "Abrir documentación" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)" @@ -7830,9 +7773,8 @@ msgid "Change Type" msgstr "Cambiar Tipo" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" -msgstr "Abrir Script" +msgstr "Extender Script" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" @@ -7996,9 +7938,8 @@ msgid "Path is empty" msgstr "La ruta está vacía" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty" -msgstr "El sprite esta vacío!" +msgstr "Nombre de archivo vacio" #: editor/script_create_dialog.cpp msgid "Path is not local" @@ -8089,9 +8030,8 @@ msgid "Bytes:" msgstr "Bytes:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Stack Trace" -msgstr "Frames del Stack" +msgstr "Stack Trace" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." @@ -8542,7 +8482,7 @@ msgstr "Fin del stack trace de excepción interna" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "" +msgstr "Hacer Bake de NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -8929,12 +8869,11 @@ msgstr "Buscar en VisualScript" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "Obtener %s" #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Set %s" -msgstr "Set " +msgstr "Asignar %s" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -9033,6 +8972,8 @@ msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Animar CPUParticles2D requiere el uso de un CanvasItemMaterial con " +"\"Particles Animation\" activado." #: scene/2d/light_2d.cpp msgid "" @@ -9088,6 +9029,8 @@ msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Animar de Particles2D requiere el uso de un CanvasItemMaterial con " +"\"Particles Animation\" activado." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -9233,14 +9176,16 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." -msgstr "Nada visible ya que no se asigno pasadas de dibujado a los meshes." +msgid "Nothing is visible because no mesh has been assigned." +msgstr "Nada visible ya que no se asignó ningún mesh." #: scene/3d/cpu_particles.cpp msgid "" "CPUParticles animation requires the usage of a SpatialMaterial with " "\"Billboard Particles\" enabled." msgstr "" +"Animar CPUParticles requiere el uso de un SpatialMaterial con \"Billboard " +"Particles\" activado." #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -9269,22 +9214,25 @@ msgid "" "Particles animation requires the usage of a SpatialMaterial with \"Billboard " "Particles\" enabled." msgstr "" +"Animar Particles requiere el uso de un SpatialMaterial con \"Billboard " +"Particles\" activado." #: scene/3d/path.cpp -#, fuzzy msgid "PathFollow only works when set as a child of a Path node." msgstr "" -"PathFollow2D sólo funciona cuando está seteado como hijo de un nodo Path2D." +"PathFollow solo funciona cuando está asignado como hijo de un nodo Path." #: scene/3d/path.cpp -#, fuzzy msgid "OrientedPathFollow only works when set as a child of a Path node." msgstr "" -"PathFollow2D sólo funciona cuando está seteado como hijo de un nodo Path2D." +"OrientedPathFollow solo funciona cuando esta asignado como hijo de un nodo " +"Path." #: scene/3d/path.cpp msgid "OrientedPathFollow requires up vectors enabled in its parent Path." msgstr "" +"OrientedPathFollow requiere que los vectores up estén activos en su Path " +"padre." #: scene/3d/physics_body.cpp msgid "" @@ -9326,15 +9274,14 @@ msgid "This body will be ignored until you set a mesh" msgstr "Este cuerpo sera ignorado hasta que le asignes un mesh" #: scene/3d/soft_body.cpp -#, fuzzy msgid "" "Size changes to SoftBody will be overridden by the physics engine when " "running.\n" "Change the size in children collision shapes instead." msgstr "" -"Los cambios de tamaño a SoftBody serán sobre escritos por el motor de física " -"al ejecutar.\n" -"Cambiá el tamaño de los collision shapes hijos." +"Los cambios de tamaño a un SoftBody serán sobrescritos por el motor de " +"física al ejecutar.\n" +"En su lugar, cambiá el tamaño de los collision shapes hijos." #: scene/3d/sprite_3d.cpp msgid "" @@ -9418,7 +9365,7 @@ msgstr "" #: scene/gui/range.cpp msgid "If exp_edit is true min_value must be > 0." -msgstr "" +msgstr "Si exp_edit es verdadero min_value debe ser > 0." #: scene/gui/scroll_container.cpp msgid "" @@ -9494,6 +9441,9 @@ msgstr "Asignación a uniform." msgid "Varyings can only be assigned in vertex function." msgstr "Solo se pueden asignar variaciones en funciones de vértice." +#~ msgid "Zoom:" +#~ msgstr "Zoom:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "¿Estás seguro/a que querés quitar todas las conexiones de el/la \"" @@ -10217,9 +10167,6 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." #~ msgid "Source Font:" #~ msgstr "Tipografía de Origen:" -#~ msgid "Source Font Size:" -#~ msgstr "Tamaño de la Tipografía de Origen:" - #~ msgid "Dest Resource:" #~ msgstr "Recurso de Dest:" diff --git a/editor/translations/fa.po b/editor/translations/fa.po index 4f908a5ad2..8b0fcd0b15 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -560,9 +560,8 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Zoom:" -msgstr "بزرگنمایی بیشتر" +msgid "Font Size:" +msgstr "" #: editor/code_editor.cpp msgid "Line:" @@ -1724,6 +1723,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2126,7 +2131,7 @@ msgid "Undo" msgstr "خنثی کردن (Undo)" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -9252,7 +9257,7 @@ msgstr "" "برای آن ایجاد کنید!" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9501,6 +9506,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "بزرگنمایی بیشتر" + #~ msgid "Class List:" #~ msgstr "فهرست کلاس:" diff --git a/editor/translations/fi.po b/editor/translations/fi.po index 40def6086b..8e3c605afb 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2018-10-04 17:26+0000\n" +"PO-Revision-Date: 2018-12-04 05:21+0000\n" "Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/" "godot/fi/>\n" @@ -20,7 +20,7 @@ msgstr "" "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 3.2-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -545,8 +545,9 @@ msgid "Warnings:" msgstr "Varoitukset:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Lähennä:" +#, fuzzy +msgid "Font Size:" +msgstr "Etunäkymä" #: editor/code_editor.cpp msgid "Line:" @@ -659,9 +660,8 @@ msgid "Edit Connection: " msgstr "Muokkaa yhteyttä: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "Oletko varma, että haluat poistaa kaikki kytkennät tältä signaalilta?" +msgstr "Oletko varma, että haluat poistaa kaikki kytkennät signaalilta \"%s\"?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -816,9 +816,8 @@ msgid "Error loading:" msgstr "Virhe ladatessa:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Load failed due to missing dependencies:" -msgstr "Skenen lataaminen epäonnistui puuttuvan riippuvuuden takia:" +msgstr "Lataaminen epäonnistui puuttuvien riippuvuuksien takia:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -1709,6 +1708,12 @@ msgstr "Tätä toimintoa ei voi tehdä ilman että puun juuri on olemassa." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2141,7 +2146,7 @@ msgid "Undo" msgstr "Peru" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Tee uudelleen" @@ -9195,7 +9200,7 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" "Mitään ei näy, koska mesheille ei ole asetettu piirtopyyhkäisyjä (draw " "passes)." @@ -9458,6 +9463,9 @@ msgstr "Sijoitus uniformille." msgid "Varyings can only be assigned in vertex function." msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa." +#~ msgid "Zoom:" +#~ msgstr "Lähennä:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "Oletko varma, että haluat poistaa kaikki yhteydet kohteesta \"" diff --git a/editor/translations/fr.po b/editor/translations/fr.po index e62b20139a..4e2515081c 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -50,12 +50,14 @@ # Florent Wijanto <f_wijanto@hotmail.com>, 2018. # Olivier gareau <olivier.gareau@protonmail.com>, 2018. # Rémi Verschelde <akien@godotengine.org>, 2018. +# Rémi Bintein <reminus5@hotmail.fr>, 2018. +# Sylvain Corsini <sylvain.corsini@gmail.com>, 2018. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-11-26 16:07+0000\n" -"Last-Translator: Rémi Verschelde <akien@godotengine.org>\n" +"PO-Revision-Date: 2018-11-29 13:23+0000\n" +"Last-Translator: Sylvain Corsini <sylvain.corsini@gmail.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" "Language: fr\n" @@ -452,12 +454,10 @@ msgid "Delete Selection" msgstr "Supprimer la sélection" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" msgstr "Aller à l'étape suivante" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" msgstr "Aller à l'étape précédente" @@ -598,8 +598,9 @@ msgid "Warnings:" msgstr "Avertissements :" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Agrandissement (%) :" +#, fuzzy +msgid "Font Size:" +msgstr "Taille de la police source :" #: editor/code_editor.cpp msgid "Line:" @@ -712,7 +713,6 @@ msgid "Edit Connection: " msgstr "Modifier les connexions : " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" msgstr "Voulez-vous vraiment supprimer toutes les connexions de ce signal ?" @@ -870,7 +870,6 @@ msgid "Error loading:" msgstr "Erreur au chargement :" #: editor/dependency_editor.cpp -#, fuzzy msgid "Load failed due to missing dependencies:" msgstr "La scène n'a pas pu être chargée à cause de dépendances manquantes :" @@ -1358,7 +1357,6 @@ msgid "File Exists, Overwrite?" msgstr "Le fichier existe, l'écraser ?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select This Folder" msgstr "Sélectionner ce dossier" @@ -1367,13 +1365,11 @@ msgid "Copy Path" msgstr "Copier le chemin" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "Open in File Manager" msgstr "Ouvrir dans le gestionnaire de fichiers" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp #: editor/project_manager.cpp -#, fuzzy msgid "Show in File Manager" msgstr "Montrer dans le gestionnaire de fichiers" @@ -1518,19 +1514,16 @@ msgid "Methods" msgstr "Méthodes :" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" msgstr "Méthodes :" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "Propriétés" +msgstr "Propriétés du thème" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "Propriétés :" +msgstr "Propriétés du thème :" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1557,14 +1550,12 @@ msgid "Constants:" msgstr "Constantes :" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "Description" +msgstr "Description de la classe" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "Description :" +msgstr "Description de la classe :" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1581,12 +1572,10 @@ msgstr "" "demander un[/url][/color]." #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" msgstr "Description des propriétés :" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions:" msgstr "Description des propriétés :" @@ -1599,12 +1588,10 @@ msgstr "" "[color=$color][url=$url]en créant[/url][/color] une !" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" msgstr "Description de la méthode :" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions:" msgstr "Description de la méthode :" @@ -1622,47 +1609,38 @@ msgid "Search Help" msgstr "Chercher dans l'aide" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "Affichage normal" +msgstr "Tout afficher" #: editor/editor_help_search.cpp -#, fuzzy msgid "Classes Only" -msgstr "Classes" +msgstr "Classes seulement" #: editor/editor_help_search.cpp -#, fuzzy msgid "Methods Only" -msgstr "Méthodes :" +msgstr "Méthodes seulement" #: editor/editor_help_search.cpp -#, fuzzy msgid "Signals Only" -msgstr "Signaux" +msgstr "Signaux seulement" #: editor/editor_help_search.cpp -#, fuzzy msgid "Constants Only" -msgstr "Constantes" +msgstr "Constantes seulement" #: editor/editor_help_search.cpp -#, fuzzy msgid "Properties Only" -msgstr "Propriétés" +msgstr "Propriétés seulement" #: editor/editor_help_search.cpp -#, fuzzy msgid "Theme Properties Only" -msgstr "Propriétés" +msgstr "Propriétés du thème seulement" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "Membres" +msgstr "Type de membre" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" msgstr "Classe :" @@ -1763,6 +1741,12 @@ msgstr "Cette opération ne peut être réalisée sans une arborescence racine." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1771,7 +1755,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "Impossible de ré-écrire une scène encore ouverte !" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -2040,13 +2024,12 @@ msgstr "" "Impossible de charger le script de l’extension depuis le chemin : '%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 "" -"Impossible de charger le script de l’extension depuis le chemin : '%s' Le " -"script n'est pas en mode outil." +"Impossible de charger le script de l’extension depuis le chemin : '%s' Il " +"semble y avoir une erreur dans le code, merci de vérifier la syntaxe." #: editor/editor_node.cpp msgid "" @@ -2102,7 +2085,6 @@ msgstr "Par défaut" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp -#, fuzzy msgid "Show in FileSystem" msgstr "Montrer dans le système de fichiers" @@ -2187,7 +2169,6 @@ msgid "Save Scene" msgstr "Enregistrer la scène" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" msgstr "Enregistrer toutes les scènes" @@ -2217,7 +2198,7 @@ msgid "Undo" msgstr "Annuler" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Refaire" @@ -2676,6 +2657,9 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"Impossible de créer un ViewportTexture sur des ressources enregistrées comme " +"fichier.\n" +"La ressource a besoin d'appartenir à une scène." #: editor/editor_properties.cpp msgid "" @@ -3002,7 +2986,6 @@ msgstr "" "sera pas sauvé !" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" msgstr "Favoris :" @@ -3091,14 +3074,12 @@ msgid "Instance" msgstr "Instance" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to favorites" -msgstr "Favoris :" +msgstr "Ajouter aux favoris" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "Supprimer du groupe" +msgstr "Supprimer des favoris" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3129,12 +3110,10 @@ msgid "New Resource..." msgstr "Nouvelle Ressource…" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Expand All" msgstr "Développer tout" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" msgstr "Réduire tout" @@ -3198,24 +3177,20 @@ msgid "Create Script" msgstr "Créer un script" #: editor/find_in_files.cpp -#, fuzzy msgid "Find in Files" msgstr "Trouver dans les fichiers" #: editor/find_in_files.cpp -#, fuzzy msgid "Find:" -msgstr "Trouver : " +msgstr "Trouver :" #: editor/find_in_files.cpp -#, fuzzy msgid "Folder:" -msgstr "Dossier : " +msgstr "Dossier :" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "Filtres" +msgstr "Filtres :" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3393,12 +3368,10 @@ msgid "Failed to load resource." msgstr "Impossible de charger la ressource." #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" msgstr "Développer toutes les propriétés" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" msgstr "Réduire toutes les propriétés" @@ -4428,9 +4401,8 @@ msgid "Rotate Mode" msgstr "Mode rotation" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Mode" -msgstr "Mode de mise à l'échelle (R)" +msgstr "Mode de mise à l'échelle" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -4585,7 +4557,7 @@ msgstr "Montrer La fenêtre d'affichage" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "Montrer le groupe et verrouiller les icônes" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -5513,7 +5485,6 @@ msgid "Error writing TextFile:" msgstr "Erreur lors de l'écriture du fichier texte :" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error: could not load file." msgstr "Erreur de chargement de fichier." @@ -5686,7 +5657,6 @@ msgid "Keep Debugger Open" msgstr "Garder le débogueur ouvert" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" msgstr "Déboguer avec un éditeur externe" @@ -5731,7 +5701,6 @@ msgid "Debugger" msgstr "Débogueur" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" msgstr "Résultats de recherche" @@ -5744,9 +5713,8 @@ msgid "(ignore)" msgstr "(ignorer)" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function" -msgstr "Aller à la fonction…" +msgstr "Aller à la fonction" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." @@ -5835,12 +5803,10 @@ msgid "Trim Trailing Whitespace" msgstr "Supprimer les espaces de fin de ligne" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" msgstr "Convertir indentations en espaces" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" msgstr "Convertir les indentations en tabulations" @@ -5858,12 +5824,10 @@ msgid "Remove All Breakpoints" msgstr "Supprimer tous les points d'arrêt" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" msgstr "Aller au point d'arrêt suivant" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" msgstr "Aller au point d'arrêt précédent" @@ -5872,17 +5836,14 @@ msgid "Find Previous" msgstr "Trouver le précédent" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." msgstr "Trouver dans les fichiers..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "Aller à la fonction…" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." msgstr "Aller à la ligne…" @@ -6149,7 +6110,6 @@ msgid "Freelook Speed Modifier" msgstr "Modificateur de vitesse de la vue libre" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" msgstr "Verrouiller la rotation de la vue" @@ -6655,9 +6615,8 @@ msgid "Fix Invalid Tiles" msgstr "Résoudre les tuiles invalides" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "Centrer sur la sélection" +msgstr "Couper la sélection" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -6704,27 +6663,24 @@ msgid "Pick Tile" msgstr "Sélectionner une case" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "Déplacer la sélection" +msgstr "Copier la sélection" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate left" -msgstr "Mode rotation" +msgstr "Rotation à gauche" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate right" -msgstr "Aller à droite" +msgstr "Rotation à droite" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip horizontally" -msgstr "" +msgstr "Retourner horizontalement" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +msgstr "Retourner verticalement" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy @@ -6869,12 +6825,11 @@ msgstr "Modèles d'exportation manquants ou corrompus pour cette plateforme :" #: editor/project_export.cpp #, fuzzy msgid "Release" -msgstr "vient d'être relâché" +msgstr "Réalisation" #: editor/project_export.cpp -#, fuzzy msgid "Exporting All" -msgstr "Exportation pour %s" +msgstr "Tout exporter" #: editor/project_export.cpp msgid "Presets" @@ -6952,14 +6907,12 @@ msgid "Export PCK/Zip" msgstr "Exporter le PCK/ZIP" #: editor/project_export.cpp -#, fuzzy msgid "Export mode?" -msgstr "Mode d'exportation :" +msgstr "Mode Exportation?" #: editor/project_export.cpp -#, fuzzy msgid "Export All" -msgstr "Exporter" +msgstr "Tout exporter" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" @@ -7651,7 +7604,6 @@ msgid "Step" msgstr "Pas" #: editor/rename_dialog.cpp -#, fuzzy msgid "Amount by which counter is incremented for each node" msgstr "Valeur par laquelle le compteur est incrémenté pour chaque nœud" @@ -7660,7 +7612,6 @@ msgid "Padding" msgstr "Remplissage" #: editor/rename_dialog.cpp -#, fuzzy msgid "" "Minimum number of digits for the counter.\n" "Missing digits are padded with leading zeros." @@ -7883,9 +7834,8 @@ msgid "Clear Inheritance" msgstr "Effacer l'héritage" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open documentation" -msgstr "Ouvrir la documentation Godot en ligne" +msgstr "Ouvrir la documentation" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)" @@ -8066,9 +8016,8 @@ msgid "Path is empty" msgstr "Le chemin est vide" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty" -msgstr "Le sprite est vide !" +msgstr "Le nom de fichier est vide" #: editor/script_create_dialog.cpp msgid "Path is not local" @@ -9002,12 +8951,11 @@ msgstr "Rechercher VisualScript" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "Obtenir %s" #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Set %s" -msgstr "Définir " +msgstr "Définir %s" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -9101,10 +9049,13 @@ msgstr "" "créer une ressource de forme !" #: scene/2d/cpu_particles_2d.cpp +#, fuzzy msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"L'animation CPUParticles2D a besoin de l'usage d'un CanvasItemMaterial avec " +"\"Animation de Particules\" activé." #: scene/2d/light_2d.cpp msgid "" @@ -9160,10 +9111,13 @@ msgstr "" "comportement n'est donc imprimé." #: scene/2d/particles_2d.cpp +#, fuzzy msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"L'animation Particles2D a besoin de l'usage d'un CanvasItemMaterial avec " +"\"Animation de Particules\" activé." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -9310,11 +9264,8 @@ msgstr "" "de forme pour cette CollisionShape !" #: scene/3d/cpu_particles.cpp -#, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." -msgstr "" -"Rien n'est visible car les maillages n'ont pas été assignés au tirage des " -"passes." +msgid "Nothing is visible because no mesh has been assigned." +msgstr "Rien n'est visible car aucun maillage n'a été assigné." #: scene/3d/cpu_particles.cpp msgid "" @@ -9505,7 +9456,7 @@ msgstr "" #: scene/gui/range.cpp msgid "If exp_edit is true min_value must be > 0." -msgstr "" +msgstr "Si exp_edit est vrai min_value doit être > 0." #: scene/gui/scroll_container.cpp msgid "" @@ -9581,6 +9532,9 @@ msgstr "Affectation à l'uniforme." msgid "Varyings can only be assigned in vertex function." msgstr "Les variations ne peuvent être affectées que dans la fonction vertex." +#~ msgid "Zoom:" +#~ msgstr "Agrandissement (%) :" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "Voulez-vous vraiment supprimer toutes les connexions du ''" @@ -10308,9 +10262,6 @@ msgstr "Les variations ne peuvent être affectées que dans la fonction vertex." #~ msgid "Source Font:" #~ msgstr "Police source :" -#~ msgid "Source Font Size:" -#~ msgstr "Taille de la police source :" - #~ msgid "Dest Resource:" #~ msgstr "Ressource de destination :" diff --git a/editor/translations/he.po b/editor/translations/he.po index ed2657f46b..3d9418b4fd 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -564,8 +564,8 @@ msgstr "אזהרות" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "להתקרב" +msgid "Font Size:" +msgstr "מבט קדמי" #: editor/code_editor.cpp msgid "Line:" @@ -1706,6 +1706,12 @@ msgstr "לא ניתן לבצע פעולה זו ללא שורש העץ." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2112,7 +2118,7 @@ msgid "Undo" msgstr "ביטול" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "ביצוע חוזר" @@ -9090,7 +9096,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9318,6 +9324,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "להתקרב" + #~ msgid "Class List:" #~ msgstr "רשימת מחלקות:" diff --git a/editor/translations/hi.po b/editor/translations/hi.po index 92f64ab6d1..1188b26a7c 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -544,9 +544,8 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Zoom:" -msgstr "बड़ा करो" +msgid "Font Size:" +msgstr "" #: editor/code_editor.cpp msgid "Line:" @@ -1706,6 +1705,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2103,7 +2108,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8955,7 +8960,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9182,6 +9187,10 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Zoom:" +#~ msgstr "बड़ा करो" + +#, fuzzy #~ msgid "Match case" #~ msgstr "एक जैसा:" diff --git a/editor/translations/hu.po b/editor/translations/hu.po index 5524b9319d..7fb0a8b353 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -564,8 +564,8 @@ msgstr "" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "Nagyítás" +msgid "Font Size:" +msgstr "Körvonal Mérete:" #: editor/code_editor.cpp msgid "Line:" @@ -1727,6 +1727,12 @@ msgstr "Ezt a műveletet nem lehet fagyökér nélkül végrehajtani." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2179,7 +2185,7 @@ msgid "Undo" msgstr "Visszavonás" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Mégis" @@ -9231,7 +9237,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9467,6 +9473,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Nagyítás" + #~ msgid "Class List:" #~ msgstr "Osztálylista:" diff --git a/editor/translations/id.po b/editor/translations/id.po index 04d72d94d2..a63dd99bc3 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -572,8 +572,8 @@ msgstr "" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "Perbesar Pandangan" +msgid "Font Size:" +msgstr "Tampilan Depan." #: editor/code_editor.cpp msgid "Line:" @@ -1740,6 +1740,12 @@ msgstr "Operasi ini tidak dapat diselesaikan tanpa root pohon." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2183,7 +2189,7 @@ msgid "Undo" msgstr "Batal" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Ulangi" @@ -9433,7 +9439,7 @@ msgstr "" "ciptakan sebuah resource bentuk untuk itu!" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9690,6 +9696,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Perbesar Pandangan" + #~ msgid "Class List:" #~ msgstr "Daftar Class:" diff --git a/editor/translations/is.po b/editor/translations/is.po index 518e43ac10..0300245fc6 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -552,7 +552,7 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" +msgid "Font Size:" msgstr "" #: editor/code_editor.cpp @@ -1668,6 +1668,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2065,7 +2071,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8879,7 +8885,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp diff --git a/editor/translations/it.po b/editor/translations/it.po index 3a1f0a2dd2..6a293bb667 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -587,8 +587,8 @@ msgstr "Avvertimento" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "Zoom(%):" +msgid "Font Size:" +msgstr "Dimensione Font sorgente:" #: editor/code_editor.cpp msgid "Line:" @@ -1758,6 +1758,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2207,7 +2213,7 @@ msgid "Undo" msgstr "Annulla" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Redo" @@ -9525,7 +9531,7 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "Nulla é visibile perché le mesh non sono state assegnate ai draw pass." #: scene/3d/cpu_particles.cpp @@ -9797,6 +9803,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Zoom(%):" + #~ msgid "Class List:" #~ msgstr "Lista Classi:" @@ -10528,9 +10538,6 @@ msgstr "" #~ msgid "Source Font:" #~ msgstr "Font Sorgente:" -#~ msgid "Source Font Size:" -#~ msgstr "Dimensione Font sorgente:" - #~ msgid "Dest Resource:" #~ msgstr "Risorsa di destin. :" diff --git a/editor/translations/ja.po b/editor/translations/ja.po index e2db7c16d1..72ea5d8d14 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -18,18 +18,19 @@ # sugusan <sugusan.development@gmail.com>, 2018. # Nathan Lovato <nathan.lovato.art@gmail.com>, 2018. # nyanode <akaruooyagi@yahoo.co.jp>, 2018. +# nitenook <admin@alterbaum.net>, 2018. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2018-10-09 09:33+0000\n" -"Last-Translator: nyanode <akaruooyagi@yahoo.co.jp>\n" +"PO-Revision-Date: 2018-12-04 22:14+0000\n" +"Last-Translator: nitenook <admin@alterbaum.net>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/" "godot/ja/>\n" "Language: ja\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.2.1\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -52,11 +53,11 @@ msgstr "インスタンスが null のため、self は使用できません" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "演算子 %s 、 %s 、 %s に対する値が無効です。" +msgstr "演算子 %s 、 %s 、 %s に対する値が無効です。" #: core/math/expression.cpp 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" @@ -68,7 +69,7 @@ msgstr "'%s' の引数は無効です" #: core/math/expression.cpp msgid "On call to '%s':" -msgstr "'%s' への呼び出し:" +msgstr "'%s' への呼び出し:" #: editor/animation_bezier_editor.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -194,7 +195,7 @@ msgstr "このトラックを除去する。" #: editor/animation_track_editor.cpp msgid "Time (s): " -msgstr "時間: " +msgstr "時間 (秒): " #: editor/animation_track_editor.cpp msgid "Continuous" @@ -559,8 +560,9 @@ msgid "Warnings:" msgstr "警告:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "ズーム:" +#, fuzzy +msgid "Font Size:" +msgstr "ソース フォントサイズ:" #: editor/code_editor.cpp msgid "Line:" @@ -579,8 +581,8 @@ msgid "" "Target method not found! Specify a valid method or attach a script to target " "Node." msgstr "" -"対象メソッドが見つかりません! 有効なメソッドを指定するか、対象ノードにスク" -"リプトを添付してください。" +"対象メソッドが見つかりません!有効なメソッドを指定するか、対象ノードにスクリ" +"プトを添付してください。" #: editor/connections_dialog.cpp msgid "Connect To Node:" @@ -649,7 +651,7 @@ msgstr "'%s' を '%s' に接続" #: editor/connections_dialog.cpp msgid "Disconnect '%s' from '%s'" -msgstr "'%s' から '%s' を切断" +msgstr "'%s' を '%s' から切断" #: editor/connections_dialog.cpp msgid "Disconnect all from signal: '%s'" @@ -835,7 +837,7 @@ msgstr "依存関係が確認できず、シーンを読込めません:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" -msgstr "ともかく開く" +msgstr "とにかく開く" #: editor/dependency_editor.cpp msgid "Which action should be taken?" @@ -1117,7 +1119,7 @@ msgstr "オーディオバスのレイアウトを開く" #: editor/editor_audio_buses.cpp msgid "There is no 'res://default_bus_layout.tres' file." -msgstr "'res://default_bus_layout.tres' ファイルがありません!" +msgstr "'res://default_bus_layout.tres' ファイルがありません。" #: editor/editor_audio_buses.cpp msgid "Invalid file, not an audio bus layout." @@ -1310,9 +1312,8 @@ 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" @@ -1510,14 +1511,12 @@ msgid "Constants:" msgstr "定数:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "説明" +msgstr "クラスの説明" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "説明:" +msgstr "クラスの説明:" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1651,7 +1650,7 @@ msgstr "出力をクリア" #: editor/editor_node.cpp msgid "Project export failed with error code %d." -msgstr "エラーコード %d により、プロジェクトのエクスポートに失敗しました。" +msgstr "プロジェクトのエクスポートがエラーコード %d で失敗しました。" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" @@ -1681,8 +1680,7 @@ msgstr "保存中にエラーが発生しました。" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Can't open '%s'. The file could have been moved or deleted." msgstr "" -"'%s' を開くことができません。ファイルが移動または削除された可能性がありま" -"す。" +"'%s' を開くことができません。ファイルが移動または削除された可能性があります。" #: editor/editor_node.cpp msgid "Error while parsing '%s'." @@ -1718,6 +1716,12 @@ msgstr "この操作は、ツリーの root なしでは実行できません。 #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1726,7 +1730,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "開いているシーンを上書きすることはできません!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1980,7 +1984,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s'." -msgstr "パス '%s' からアドオンスクリプトを読込めません。" +msgstr "パス '%s' からアドオンスクリプトを読込めません。" #: editor/editor_node.cpp #, fuzzy @@ -2009,7 +2013,7 @@ msgid "" "Scene '%s' was automatically imported, so it can't be modified.\n" "To make changes to it, a new inherited scene can be created." msgstr "" -"シーン '%s' は自動的にインポートされたので、変更できません。\n" +"シーン '%s' は自動的にインポートされたので、変更できません。\n" "変更するためには、新たに継承されたシーンを作成してください。" #: editor/editor_node.cpp @@ -2062,7 +2066,7 @@ msgstr "シーンタブを切替え" #: editor/editor_node.cpp msgid "%d more files or folders" -msgstr "%d 以上のファイルとフォルダ" +msgstr "%d 以上のファイルとフォルダ" #: editor/editor_node.cpp msgid "%d more folders" @@ -2078,11 +2082,11 @@ 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." @@ -2156,12 +2160,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 "元に戻す" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" -msgstr "リドゥ" +msgstr "やり直す" #: editor/editor_node.cpp msgid "Revert Scene" @@ -2848,7 +2852,7 @@ msgid "" "found at '%s'." msgstr "" "テンプレートのインストールに失敗しました。 問題のテンプレートのアーカイブは " -"'%s' にあります。" +"'%s' にあります。" #: editor/export_template_manager.cpp msgid "Error requesting url: " @@ -2898,7 +2902,7 @@ msgstr "接続エラー" #: editor/export_template_manager.cpp msgid "SSL Handshake Error" -msgstr "SS ハンドシェイクエラー" +msgstr "SSL ハンドシェイクエラー" #: editor/export_template_manager.cpp msgid "Current Version:" @@ -3033,9 +3037,8 @@ msgid "Add to favorites" msgstr "お気に入り:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "グループから除去" +msgstr "お気に入りから削除" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3863,7 +3866,7 @@ msgstr "サブトランジションには、開始ノードと終了ノードが #: editor/plugins/animation_state_machine_editor.cpp msgid "No playback resource set at path: %s." -msgstr "パス( %s )に再生リソースが設定されていません。" +msgstr "パス( %s )に再生リソースが設定されていません。" #: editor/plugins/animation_state_machine_editor.cpp msgid "" @@ -4341,7 +4344,7 @@ msgstr "Alt+ドラッグ:移動" #, fuzzy msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." msgstr "" -"vキーを押すとピボットの変更、'Shift+v' でピボットをドラッグ(移動中でも)" +"vキーを押すとピボットの変更、'Shift+v' でピボットをドラッグ(移動中でも)" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -4694,7 +4697,7 @@ msgstr "点を追加" #: editor/plugins/curve_editor_plugin.cpp msgid "Remove point" -msgstr "選択しているポイント=点を削除" +msgstr "ポイントを除去" #: editor/plugins/curve_editor_plugin.cpp #, fuzzy @@ -5384,7 +5387,7 @@ msgstr "ポリゴン2DのUVエディタ" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "UV" -msgstr "" +msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp #, fuzzy @@ -5460,7 +5463,7 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Radius:" -msgstr "" +msgstr "半径:" #: editor/plugins/polygon_2d_editor_plugin.cpp #, fuzzy @@ -5813,7 +5816,7 @@ msgstr "直前の「編集した文書」へ移動." #: editor/plugins/script_editor_plugin.cpp msgid "Go to next edited document." -msgstr "次のの「編集した文書」へ移動." +msgstr "次の「編集した文書」へ移動." #: editor/plugins/script_editor_plugin.cpp #, fuzzy @@ -6116,7 +6119,7 @@ msgstr "描画されたオブジェクト" #: editor/plugins/spatial_editor_plugin.cpp msgid "Material Changes" -msgstr "素材の変更" +msgstr "マテリアルの変更" #: editor/plugins/spatial_editor_plugin.cpp msgid "Shader Changes" @@ -6128,7 +6131,7 @@ msgstr "サーフェースの変更" #: editor/plugins/spatial_editor_plugin.cpp msgid "Draw Calls" -msgstr "ドローコール(Daw call)" +msgstr "ドローコール" #: editor/plugins/spatial_editor_plugin.cpp msgid "Vertices" @@ -7065,9 +7068,8 @@ msgid "Add..." msgstr "追加..." #: editor/project_export.cpp -#, fuzzy msgid "Export Path:" -msgstr "プロジェクトのエクスポート" +msgstr "エクスポートパス:" #: editor/project_export.cpp msgid "Resources" @@ -7284,7 +7286,7 @@ msgstr "プロジェクトパス:" #: editor/project_manager.cpp msgid "Browse" -msgstr "参照…" +msgstr "参照" #: editor/project_manager.cpp msgid "Unnamed Project" @@ -7578,6 +7580,8 @@ msgid "" "Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " "'\"'." msgstr "" +"無効なアクション名です。空もしくは'/', ':', '=', '\\' や '\"'を含めることはで" +"きません。" #: editor/project_settings_editor.cpp #, fuzzy @@ -8384,9 +8388,8 @@ msgid "Wrong extension chosen" msgstr "拡張子が誤っています" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid Path" -msgstr "無効なフォント サイズです。" +msgstr "無効なパス" #: editor/script_create_dialog.cpp msgid "Invalid class name" @@ -8923,7 +8926,7 @@ msgstr "リソース読み込み失敗" #: modules/mono/editor/godotsharp_editor.cpp msgid "Mono" -msgstr "モノラル音声" +msgstr "Mono" #: modules/mono/editor/godotsharp_editor.cpp msgid "About C# support" @@ -9710,7 +9713,7 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "描画パスのためのメッシュが指定されていませんので見えません" #: scene/3d/cpu_particles.cpp @@ -9793,10 +9796,13 @@ msgstr "" "セット) ごとに許可されます。" #: scene/3d/scenario_fx.cpp +#, fuzzy 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シーンの場合)、こ" +"のEnvironmentの Backgroundモード を Canvas に設定します(2Dシーンの場合)。" #: scene/3d/soft_body.cpp msgid "This body will be ignored until you set a mesh" @@ -9975,6 +9981,9 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Zoom:" +#~ msgstr "ズーム:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "\" から全ての接続を除去してもよろしいですか" @@ -10756,10 +10765,6 @@ msgstr "" #~ msgstr "ソース フォント:" #, fuzzy -#~ msgid "Source Font Size:" -#~ msgstr "ソース フォントサイズ:" - -#, fuzzy #~ msgid "Dest Resource:" #~ msgstr "送り先のリソース:" diff --git a/editor/translations/ka.po b/editor/translations/ka.po index 7e13731d6a..e8b20b048f 100644 --- a/editor/translations/ka.po +++ b/editor/translations/ka.po @@ -549,9 +549,8 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Zoom:" -msgstr "ზუმის გაზრდა" +msgid "Font Size:" +msgstr "" #: editor/code_editor.cpp msgid "Line:" @@ -1693,6 +1692,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2090,7 +2095,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8940,7 +8945,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9169,6 +9174,10 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Zoom:" +#~ msgstr "ზუმის გაზრდა" + +#, fuzzy #~ msgid "Whole words" #~ msgstr "მთლიანი სიტყვები" diff --git a/editor/translations/ko.po b/editor/translations/ko.po index 31c64514ca..c598e5cb59 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-11-16 16:07+0000\n" +"PO-Revision-Date: 2018-12-03 19:25+0000\n" "Last-Translator: 송태섭 <xotjq237@gmail.com>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/" "godot/ko/>\n" @@ -25,7 +25,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 3.3-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -406,12 +406,10 @@ msgid "Delete Selection" msgstr "선택 삭제" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" msgstr "다음 스텝으로 이동" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" msgstr "이전 스텝으로 이동" @@ -552,8 +550,9 @@ msgid "Warnings:" msgstr "경고:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "확대:" +#, fuzzy +msgid "Font Size:" +msgstr "소스 폰트 크기:" #: editor/code_editor.cpp msgid "Line:" @@ -666,9 +665,8 @@ msgid "Edit Connection: " msgstr "연결 편집 " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "이 시그널에서 모든 연결을 제거하시겠습니까?" +msgstr "\"%s\" 시그널에서 모든 연결을 제거하시겠습니까?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -822,9 +820,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" @@ -1305,7 +1302,6 @@ msgid "File Exists, Overwrite?" msgstr "파일이 존재합니다. 덮어쓰시겠습니까?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select This Folder" msgstr "이 폴더 선택" @@ -1314,15 +1310,13 @@ 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/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..." @@ -1465,19 +1459,16 @@ msgid "Methods" msgstr "메서드" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "메서드" +msgstr "메서드:" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "속성" +msgstr "테마 속성" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "속성:" +msgstr "테마 속성:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1504,14 +1495,12 @@ msgid "Constants:" msgstr "상수:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "설명" +msgstr "클래스 설명" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "설명:" +msgstr "클래스 설명:" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1528,12 +1517,10 @@ msgstr "" "니다." #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" -msgstr "속성 설명:" +msgstr "속성 설명" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions:" msgstr "속성 설명:" @@ -1546,12 +1533,10 @@ msgstr "" "기여하여[/url][/color] 더 나아지게 도와주세요!" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "메서드 설명:" +msgstr "메서드 설명" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions:" msgstr "메서드 설명:" @@ -1569,49 +1554,40 @@ msgid "Search Help" msgstr "도움말 검색" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "Normal 표시" +msgstr "모두 표시" #: editor/editor_help_search.cpp -#, fuzzy msgid "Classes Only" -msgstr "클래스(Class)" +msgstr "클래스만" #: editor/editor_help_search.cpp -#, fuzzy msgid "Methods Only" -msgstr "메서드" +msgstr "메서드만" #: editor/editor_help_search.cpp -#, fuzzy msgid "Signals Only" -msgstr "시그널(Signal)" +msgstr "시그널만" #: editor/editor_help_search.cpp -#, fuzzy msgid "Constants Only" -msgstr "상수(Constant)" +msgstr "상수만" #: editor/editor_help_search.cpp -#, fuzzy msgid "Properties Only" -msgstr "속성" +msgstr "속성만" #: editor/editor_help_search.cpp -#, fuzzy msgid "Theme Properties Only" -msgstr "속성" +msgstr "테마 속성만" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "멤버" +msgstr "멤버 타입" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "클래스:" +msgstr "클래스" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" @@ -1710,6 +1686,12 @@ msgstr "이 작업은 트리 루트 없이는 불가합니다." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1718,7 +1700,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "열려있는 씬을 덮어 쓸 수 없습니다!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1968,13 +1950,12 @@ msgid "Unable to load addon script from path: '%s'." msgstr "애드온 스크립트를 불러올 수 없습니다: '%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 "" -"해당 경로에서 애드온 스크립트를 불러올 수 없습니다: '%s' 스크립트가 tool 모드" -"가 아닙니다." +"해당 경로에서 애드온 스크립트를 불러올 수 없습니다: '%s' 코드에 오류가 있는 " +"것 같습니다, 구문을 확인해 보십시오." #: editor/editor_node.cpp msgid "" @@ -2028,7 +2009,6 @@ 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 "파일 시스템에서 보기" @@ -2113,7 +2093,6 @@ msgid "Save Scene" msgstr "씬 저장" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" msgstr "모든 씬 저장" @@ -2143,7 +2122,7 @@ msgid "Undo" msgstr "되돌리기" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "다시 실행" @@ -2601,6 +2580,8 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"파일로 저장된 리소스에서 ViewportTexture를 만들 수 없습니다.\n" +"리소스가 씬에 속해 있어야 합니다." #: editor/editor_properties.cpp msgid "" @@ -2609,6 +2590,10 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" +"리소스가 씬에 로컬로 설정되지 않았기 때문에 ViewportTexture를 만들 수 없습니" +"다.\n" +"리소스의 'local to scene' 속성을 켜십시오 (그리고 모든 리소스를 노드가 포함하" +"고 있어야 합니다)." #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -2923,9 +2908,8 @@ msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" msgstr "file_type_cache.cch를 열수 없어서, 파일 타입 캐쉬를 저장하지 않습니다!" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" -msgstr "즐겨찾기:" +msgstr "즐겨찾기" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" @@ -3009,14 +2993,12 @@ msgid "Instance" msgstr "인스턴스" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to favorites" -msgstr "즐겨찾기:" +msgstr "즐겨찾기로 추가" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "그룹에서 제거" +msgstr "즐겨찾기에서 제거" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3047,12 +3029,10 @@ msgid "New Resource..." msgstr "새 리소스..." #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Expand All" msgstr "모두 확장" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" msgstr "모두 접기" @@ -3076,9 +3056,8 @@ msgid "Re-Scan Filesystem" msgstr "파일 시스템 재검사" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle split mode" -msgstr "모드 토글" +msgstr "분할 모드 토글" #: editor/filesystem_dock.cpp msgid "Search files" @@ -3113,24 +3092,20 @@ msgid "Create Script" msgstr "스크립트 만들기" #: editor/find_in_files.cpp -#, fuzzy msgid "Find in Files" msgstr "파일에서 찾기" #: editor/find_in_files.cpp -#, fuzzy msgid "Find:" -msgstr "찾기: " +msgstr "찾기:" #: editor/find_in_files.cpp -#, fuzzy msgid "Folder:" -msgstr "폴더: " +msgstr "폴더:" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "필터" +msgstr "필터:" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3308,12 +3283,10 @@ msgid "Failed to load resource." msgstr "리소스 불러오기 실패." #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" msgstr "모든 속성 펼치기" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" msgstr "모든 속성 접기" @@ -4261,9 +4234,8 @@ msgid "Resize CanvasItem" msgstr "CanvasItem 크기 조절" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem" -msgstr "CanvasItem 회전" +msgstr "CanvasItem 규모" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move CanvasItem" @@ -4326,9 +4298,8 @@ msgid "Rotate Mode" msgstr "회전 모드" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Mode" -msgstr "크기 조절 모드 (R)" +msgstr "규모 모드" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -4427,9 +4398,8 @@ msgid "Restores the object's children's ability to be selected." msgstr "오브젝트의 자식노드가 선택될 수 있도록 복원합니다." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Skeleton Options" -msgstr "스켈레톤" +msgstr "스켈레톤 설정" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -4483,7 +4453,7 @@ msgstr "뷰포트 보기" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "그룹과 잠금 아이콘 보이기" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -4924,9 +4894,8 @@ msgid "Create Navigation Polygon" msgstr "네비게이션 폴리곤 만들기" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" -msgstr "가시성 직사각형을 만들기" +msgstr "가시성 직사각형 만들기" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" @@ -5404,9 +5373,8 @@ msgid "Error writing TextFile:" msgstr "텍스트 파일 쓰기 에러:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error: could not load file." -msgstr "에러로 파일을 불러올 수 없음." +msgstr "에러: 파일을 불러올 수 없음." #: editor/plugins/script_editor_plugin.cpp msgid "Error could not load file." @@ -5505,7 +5473,6 @@ msgid "Copy Script Path" msgstr "스크립트 경로 복사" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "History Previous" msgstr "이전 히스토리" @@ -5577,9 +5544,8 @@ msgid "Keep Debugger Open" msgstr "디버거 항상 열어놓기" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" -msgstr "외부 에디터와 디버그" +msgstr "외부 에디터로 디버깅" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation" @@ -5622,7 +5588,6 @@ msgid "Debugger" msgstr "디버거" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" msgstr "검색 결과" @@ -5635,9 +5600,8 @@ msgid "(ignore)" 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." @@ -5726,12 +5690,10 @@ msgid "Trim Trailing Whitespace" msgstr "후행 공백 문자 제거" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" -msgstr "들여쓰기를 스페이스로 변환" +msgstr "들여쓰기를 공백으로 변환" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" msgstr "들여쓰기를 탭으로 변환" @@ -5749,12 +5711,10 @@ msgid "Remove All Breakpoints" msgstr "중단점 모두 삭제" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" msgstr "다음 중단점으로 이동" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" msgstr "이전 중단점으로 이동" @@ -5763,17 +5723,14 @@ msgid "Find Previous" msgstr "이전 찾기" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." msgstr "파일에서 찾기..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "함수로 이동..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." msgstr "라인으로 이동..." @@ -5872,7 +5829,7 @@ msgstr "피치" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "요" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -6039,9 +5996,8 @@ msgid "Freelook Speed Modifier" msgstr "자유시점 속도 변화" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" -msgstr "뷰 회전 잠금" +msgstr "뷰 회전 잠김" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" @@ -6543,9 +6499,8 @@ msgid "Fix Invalid Tiles" msgstr "잘못된 타일 수정" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "선택 항목 화면 중앙에 표시" +msgstr "선택 잘라내기" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -6592,32 +6547,28 @@ msgid "Pick Tile" msgstr "타일 선택" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "선택 이동" +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" -msgstr "" +msgstr "가로로 뒤집기" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +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" @@ -6648,9 +6599,8 @@ msgid "Display tile's names (hold Alt Key)" msgstr "타일 이름 보이기 (Alt 키를 누르세요)" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture and ALL TILES which use it?" -msgstr "선택한 텍스쳐와 모든 타일을 삭제하시겠습니까?" +msgstr "선택한 텍스쳐와 그것을 사용하는 모든 타일을 삭제하겠습니까?" #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." @@ -6665,9 +6615,8 @@ msgid "Merge from scene?" msgstr "씬으로부터 병합하시겠습니까?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "%s file(s) were not added because was already on the list." -msgstr " %s 파일이 이미 목록에 존재하여 추가되지 않습니다." +msgstr "%s 파일이 이미 목록에 존재하여 추가되지 않습니다." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -6755,12 +6704,11 @@ msgstr "이 플랫폼에 대한 내보내기 템플릿이 없거나 손상됨:" #: editor/project_export.cpp msgid "Release" -msgstr "" +msgstr "배포" #: editor/project_export.cpp -#, fuzzy msgid "Exporting All" -msgstr "%s 내보내기" +msgstr "모두 내보내기" #: editor/project_export.cpp msgid "Presets" @@ -6771,9 +6719,8 @@ msgid "Add..." msgstr "추가..." #: editor/project_export.cpp -#, fuzzy msgid "Export Path:" -msgstr "프리셋 내보내기:" +msgstr "경로 내보내기:" #: editor/project_export.cpp msgid "Resources" @@ -6834,14 +6781,12 @@ msgid "Export PCK/Zip" msgstr "PCK/Zip 내보내기" #: editor/project_export.cpp -#, fuzzy msgid "Export mode?" -msgstr "내보내기 모드:" +msgstr "내보내기 모드?" #: editor/project_export.cpp -#, fuzzy msgid "Export All" -msgstr "내보내기" +msgstr "모두 내보내기" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" @@ -7526,16 +7471,14 @@ msgid "Step" msgstr "단계" #: editor/rename_dialog.cpp -#, fuzzy msgid "Amount by which counter is incremented for each node" -msgstr "카운터가 각 노드에서 증가하는 양" +msgstr "각 노드에 대해 카운터가 증가하는 양" #: editor/rename_dialog.cpp msgid "Padding" msgstr "패딩(Padding)" #: editor/rename_dialog.cpp -#, fuzzy msgid "" "Minimum number of digits for the counter.\n" "Missing digits are padded with leading zeros." @@ -7682,6 +7625,8 @@ msgid "" "Disabling \"editable_instance\" will cause all properties of the node to be " "reverted to their default." msgstr "" +"\"editable_instance\"를 비활설화 하면 노드의 모든 속성이 기본 값으로 되돌아갑" +"니다." #: editor/scene_tree_dock.cpp msgid "Editable Children" @@ -7755,9 +7700,8 @@ msgid "Clear Inheritance" msgstr "상속 지우기" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open documentation" -msgstr "Godot 온라인 문서 열기" +msgstr "문서 열기" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)" @@ -7772,9 +7716,8 @@ msgid "Change Type" msgstr "타입 변경" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" -msgstr "스크립트 열기" +msgstr "스크립트 확장" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" @@ -7936,9 +7879,8 @@ msgid "Path is empty" msgstr "경로가 비어 있음" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty" -msgstr "스프라이트가 비었습니다!" +msgstr "파일 이름이 비었습니다" #: editor/script_create_dialog.cpp msgid "Path is not local" @@ -8029,9 +7971,8 @@ msgid "Bytes:" msgstr "바이트:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Stack Trace" -msgstr "스택 프레임" +msgstr "스택 추적" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." @@ -8481,7 +8422,7 @@ msgstr "내부 예외 스택 추적의 끝" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "" +msgstr "NavMesh 베이크" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -8867,12 +8808,11 @@ msgstr "비주얼 스크립트 검색" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "Get %s" #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Set %s" -msgstr "Set " +msgstr "Set %s" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -8970,6 +8910,8 @@ msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"CPUParticles2D 애니메이션을 사용하려면 \"Particles Animation\"이 활성화된 " +"CanvasItemMaterial이 필요합니다." #: scene/2d/light_2d.cpp msgid "" @@ -9022,6 +8964,8 @@ msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Particles2D 애니메이션을 사용하려면 \"Particles Animation\"이 활성화된 " +"CanvasItemMaterial이 필요합니다." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -9161,14 +9105,16 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." -msgstr "메시들을 패스를 그리도록 할당하지 않았으므로 보이지 않습니다." +msgid "Nothing is visible because no mesh has been assigned." +msgstr "지정된 메시가 없으므로 아무것도 보이지 않습니다." #: scene/3d/cpu_particles.cpp msgid "" "CPUParticles animation requires the usage of a SpatialMaterial with " "\"Billboard Particles\" enabled." msgstr "" +"CPUParticles 애니메이션을 사용하려면 \"Billboard Particles\"이 활성화된 " +"SpatialMaterial이 필요합니다." #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -9198,20 +9144,20 @@ msgid "" "Particles animation requires the usage of a SpatialMaterial with \"Billboard " "Particles\" enabled." msgstr "" +"Particles 애니메이션을 사용하려면 \"Billboard Particles\"이 활성화된 " +"SpatialMaterial이 필요합니다." #: scene/3d/path.cpp -#, fuzzy msgid "PathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D는 Path2D 노드의 자식노드로 있을 때만 동작합니다." +msgstr "PathFollow는 Path 노드의 자식으로 있을 때만 동작합니다." #: scene/3d/path.cpp -#, fuzzy msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D는 Path2D 노드의 자식노드로 있을 때만 동작합니다." +msgstr "OrientedPathFollow는 Path 노드의 자식으로 있을 때만 동작합니다." #: scene/3d/path.cpp msgid "OrientedPathFollow requires up vectors enabled in its parent Path." -msgstr "" +msgstr "OrientedPathFollow는 부모 Path에서 벡터를 활성화해야 합니다." #: scene/3d/physics_body.cpp msgid "" @@ -9249,7 +9195,6 @@ msgid "This body will be ignored until you set a mesh" msgstr "이 바디는 메시를 설정할 때 까지 무시됩니다" #: scene/3d/soft_body.cpp -#, fuzzy msgid "" "Size changes to SoftBody will be overridden by the physics engine when " "running.\n" @@ -9340,7 +9285,7 @@ msgstr "" #: scene/gui/range.cpp msgid "If exp_edit is true min_value must be > 0." -msgstr "" +msgstr "exp_edit이 참이라면 min_value는 반드시 > 0 이어야 합니다." #: scene/gui/scroll_container.cpp msgid "" @@ -9416,6 +9361,9 @@ msgstr "균일하게 배치함." msgid "Varyings can only be assigned in vertex function." msgstr "Varyings는 오직 버텍스 함수에서만 지정할 수 있습니다." +#~ msgid "Zoom:" +#~ msgstr "확대:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "\" 에서 모든 연결을 제거하시겠습니까" @@ -10115,9 +10063,6 @@ msgstr "Varyings는 오직 버텍스 함수에서만 지정할 수 있습니다. #~ msgid "Source Font:" #~ msgstr "소스 폰트:" -#~ msgid "Source Font Size:" -#~ msgstr "소스 폰트 크기:" - #~ msgid "Dest Resource:" #~ msgstr "리소스 경로:" diff --git a/editor/translations/lt.po b/editor/translations/lt.po index 3926aea3e4..954bd17af1 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -547,9 +547,8 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Zoom:" -msgstr "Priartinti" +msgid "Font Size:" +msgstr "" #: editor/code_editor.cpp msgid "Line:" @@ -1680,6 +1679,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2077,7 +2082,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8955,7 +8960,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9186,6 +9191,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Priartinti" + #~ msgid "Disabled" #~ msgstr "Išjungta" diff --git a/editor/translations/lv.po b/editor/translations/lv.po index ff10ecd88c..07a4ac0444 100644 --- a/editor/translations/lv.po +++ b/editor/translations/lv.po @@ -542,8 +542,8 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Pietuvināt:" +msgid "Font Size:" +msgstr "" #: editor/code_editor.cpp msgid "Line:" @@ -1681,6 +1681,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2079,7 +2085,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8924,7 +8930,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9151,6 +9157,9 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Zoom:" +#~ msgstr "Pietuvināt:" + #~ msgid "Disabled" #~ msgstr "Atspējots" diff --git a/editor/translations/ml.po b/editor/translations/ml.po index 0f15ac029c..4981f02aae 100644 --- a/editor/translations/ml.po +++ b/editor/translations/ml.po @@ -532,7 +532,7 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" +msgid "Font Size:" msgstr "" #: editor/code_editor.cpp @@ -1647,6 +1647,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2043,7 +2049,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8843,7 +8849,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp diff --git a/editor/translations/ms.po b/editor/translations/ms.po index 07b812a5dc..d9a769878b 100644 --- a/editor/translations/ms.po +++ b/editor/translations/ms.po @@ -541,7 +541,7 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" +msgid "Font Size:" msgstr "" #: editor/code_editor.cpp @@ -1656,6 +1656,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2052,7 +2058,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8861,7 +8867,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp diff --git a/editor/translations/nb.po b/editor/translations/nb.po index 6f08cbbc12..a32f59eef6 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -567,8 +567,8 @@ msgstr "" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "Zoom Inn" +msgid "Font Size:" +msgstr "Frontvisning" #: editor/code_editor.cpp msgid "Line:" @@ -1736,6 +1736,12 @@ msgstr "Denne operasjonen kan ikke gjennomføres uten en trerot." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2175,7 +2181,7 @@ msgid "Undo" msgstr "Angre" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Gjenta" @@ -9344,7 +9350,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9574,6 +9580,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Zoom Inn" + #~ msgid "Class List:" #~ msgstr "Klasseliste:" diff --git a/editor/translations/nl.po b/editor/translations/nl.po index ba5a4db2dc..e4e85160a0 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -24,18 +24,19 @@ # Wout Standaert <wout@blobkat.com>, 2017. # Zatherz <zatherz@linux.pl>, 2017. # Tahar Meijs <tntmeijs@gmail.com>, 2018. +# Laurent Windels <laurentwindels@yahoo.com>, 2018. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2018-09-24 22:24+0000\n" -"Last-Translator: frank <frankvprive@gmail.com>\n" +"PO-Revision-Date: 2018-12-04 22:14+0000\n" +"Last-Translator: Laurent Windels <laurentwindels@yahoo.com>\n" "Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/" "nl/>\n" "Language: nl\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 3.2-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -309,10 +310,14 @@ msgid "" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" msgstr "" +"Audio tracks kunnen enkel verwijzen naar nodes van het type:\n" +"-AudioStreamPlayer\n" +"-AudioStreamPlayer2D\n" +"-AudioStreamPlayer3D" #: editor/animation_track_editor.cpp msgid "Animation tracks can only point to AnimationPlayer nodes." -msgstr "" +msgstr "Animatie tracks kunnen enkel verwijzen naar AnimatiePlayer nodes." #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." @@ -320,33 +325,31 @@ msgstr "Een animatiespeler kan zichzelf niet animeren, alleen andere spelers." #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" -msgstr "" +msgstr "Niet mogelijk om een nieuwe track toe te voegen zonder een root" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." -msgstr "" +msgstr "Track path is niet geldig, dus kan geen key toevoegen." #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" -msgstr "" +msgstr "Track is niet van het type Spatial, kan geen key invoegen" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a method key." -msgstr "" +msgstr "Track path is niet geldig, dus kan geen methode key toevoegen." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Method not found in object: " -msgstr "VariableGet niet gevonden in script: " +msgstr "Methode niet gevonden in object " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" msgstr "Anim Verplaats Keys" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Clipboard is empty" -msgstr "Bronnen klembord is leeg!" +msgstr "Klembord is leeg" #: editor/animation_track_editor.cpp msgid "Anim Scale Keys" @@ -385,19 +388,16 @@ msgid "Edit" msgstr "Bewerken" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation properties." -msgstr "AnimatieBoom" +msgstr "Animatie kenmerken." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Copy Tracks" -msgstr "Kopieer Parameters" +msgstr "Kopieer Tracks" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Paste Tracks" -msgstr "Plak Parameters" +msgstr "Plak Tracks" #: editor/animation_track_editor.cpp msgid "Scale Selection" @@ -416,9 +416,8 @@ msgid "Duplicate Transposed" msgstr "Dupliceer Getransponeerde" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Selection" -msgstr "Geselecteerde Verwijderen" +msgstr "Verwijder Selectie" #: editor/animation_track_editor.cpp #, fuzzy @@ -440,11 +439,11 @@ msgstr "Animatie Opschonen" #: editor/animation_track_editor.cpp msgid "Pick the node that will be animated:" -msgstr "" +msgstr "Kies de node die geanimeerd zal worden:" #: editor/animation_track_editor.cpp msgid "Use Bezier Curves" -msgstr "" +msgstr "Gebruik Bezier Curves" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" @@ -568,8 +567,8 @@ msgstr "" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "Inzoomen" +msgid "Font Size:" +msgstr "Vooraanzicht" #: editor/code_editor.cpp msgid "Line:" @@ -1737,6 +1736,12 @@ msgstr "Deze operatie kan niet gedaan worden zonder boomwortel." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2183,7 +2188,7 @@ msgid "Undo" msgstr "Ongedaan Maken" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Opnieuw" @@ -7105,9 +7110,8 @@ msgid "Import Existing Project" msgstr "Importeer bestaand project" #: editor/project_manager.cpp -#, fuzzy msgid "Import & Edit" -msgstr "Importeren" +msgstr "Importeer & Bewerk" #: editor/project_manager.cpp msgid "Create New Project" @@ -7123,9 +7127,8 @@ msgid "Install Project:" msgstr "Installeer project:" #: editor/project_manager.cpp -#, fuzzy msgid "Install & Edit" -msgstr "Installeer" +msgstr "Installeer & Bewerk" #: editor/project_manager.cpp msgid "Project Name:" @@ -7141,9 +7144,8 @@ msgid "Project Path:" msgstr "Projectpad:" #: editor/project_manager.cpp -#, fuzzy msgid "Project Installation Path:" -msgstr "Projectpad:" +msgstr "Project Installatie Path:" #: editor/project_manager.cpp msgid "Browse" @@ -7154,9 +7156,8 @@ msgid "Unnamed Project" msgstr "Naamloos Project" #: editor/project_manager.cpp -#, fuzzy msgid "Can't open project" -msgstr "Verbind..." +msgstr "Kan project niet openen" #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" @@ -8074,7 +8075,7 @@ msgstr "" #: editor/scene_tree_editor.cpp msgid "Toggle Visibility" -msgstr "" +msgstr "Toggle Zichtbaarheid" #: editor/scene_tree_editor.cpp msgid "" @@ -8088,7 +8089,7 @@ msgstr "" #: editor/scene_tree_editor.cpp msgid "Rename Node" -msgstr "" +msgstr "Hernoem Node" #: editor/scene_tree_editor.cpp msgid "Scene Tree (Nodes):" @@ -8100,73 +8101,67 @@ msgstr "" #: editor/scene_tree_editor.cpp msgid "Select a Node" -msgstr "" +msgstr "Selecteer een Node" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Error loading template '%s'" -msgstr "Error bij het laden van lettertype." +msgstr "Error bij het laden van sjabloon '%s'" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Error - Could not create script in filesystem." -msgstr "Map kon niet gemaakt worden." +msgstr "Fout - Kon geen script aanmaken in bestandssysteem." #: editor/script_create_dialog.cpp msgid "Error loading script from %s" -msgstr "" +msgstr "Fout bij het laden script van %s" #: editor/script_create_dialog.cpp msgid "N/A" -msgstr "" +msgstr "Niet van toepassing" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Open Script/Choose Location" -msgstr "Open Script Bewerker" +msgstr "Open Script/Kies Locatie" #: editor/script_create_dialog.cpp msgid "Path is empty" -msgstr "" +msgstr "Path is leeg" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty" -msgstr "Mesh is leeg!" +msgstr "Bestandsnaam is leeg" #: editor/script_create_dialog.cpp msgid "Path is not local" -msgstr "" +msgstr "Path is niet lokaal" #: editor/script_create_dialog.cpp msgid "Invalid base path" -msgstr "" +msgstr "Ongeldig basis path" #: editor/script_create_dialog.cpp msgid "Directory of the same name exists" -msgstr "" +msgstr "Directory met dezelfde naam bestaat al" #: editor/script_create_dialog.cpp -#, fuzzy msgid "File exists, will be reused" -msgstr "Bestand Bestaat, Overschrijven?" +msgstr "Bestand Bestaat, zal herbruikt worden" #: editor/script_create_dialog.cpp msgid "Invalid extension" -msgstr "" +msgstr "Ongeldige extensie" #: editor/script_create_dialog.cpp msgid "Wrong extension chosen" -msgstr "" +msgstr "Verkeerde extensie gekozen" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid Path" -msgstr "Ongeldig Pad." +msgstr "Ongeldig Path" #: editor/script_create_dialog.cpp msgid "Invalid class name" -msgstr "" +msgstr "Ongeldige klassenaam" #: editor/script_create_dialog.cpp #, fuzzy @@ -8175,47 +8170,43 @@ msgstr "Ongeldige index eigenschap naam." #: editor/script_create_dialog.cpp msgid "Script valid" -msgstr "" +msgstr "Script geldig" #: editor/script_create_dialog.cpp msgid "Allowed: a-z, A-Z, 0-9 and _" -msgstr "" +msgstr "Toegestaan: a-z, A-Z, 0-9 en _" #: editor/script_create_dialog.cpp msgid "Built-in script (into scene file)" -msgstr "" +msgstr "Ingebouwd script (in scene bestand)" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Create new script file" -msgstr "Subscriptie Maken" +msgstr "Maak nieuw script bestand" #: editor/script_create_dialog.cpp msgid "Load existing script file" -msgstr "" +msgstr "Laad bestaand script" #: editor/script_create_dialog.cpp msgid "Language" -msgstr "" +msgstr "Taal" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Inherits" -msgstr "Erft:" +msgstr "Erft" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name" -msgstr "Klasse:" +msgstr "Klasse Naam" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template" -msgstr "Verwijder Selectie" +msgstr "Sjabloon" #: editor/script_create_dialog.cpp msgid "Built-in Script" -msgstr "" +msgstr "Ingebouwd Script" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -8240,24 +8231,23 @@ msgstr "" #: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" -msgstr "" +msgstr "Fouten" #: editor/script_editor_debugger.cpp msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Copy Error" -msgstr "Laadfouten" +msgstr "Kopieer Fout" #: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" -msgstr "" +msgstr "Inspecteer vorige instantie" #: editor/script_editor_debugger.cpp msgid "Inspect Next Instance" -msgstr "" +msgstr "Inspecteer Volgende Instantie" #: editor/script_editor_debugger.cpp msgid "Stack Frames" @@ -8285,7 +8275,7 @@ msgstr "" #: editor/script_editor_debugger.cpp msgid "Total:" -msgstr "" +msgstr "Totaal:" #: editor/script_editor_debugger.cpp msgid "Video Mem" @@ -8297,7 +8287,7 @@ msgstr "" #: editor/script_editor_debugger.cpp msgid "Type" -msgstr "" +msgstr "Type" #: editor/script_editor_debugger.cpp msgid "Format" @@ -8305,7 +8295,7 @@ msgstr "" #: editor/script_editor_debugger.cpp msgid "Usage" -msgstr "" +msgstr "Gebruik" #: editor/script_editor_debugger.cpp msgid "Misc" @@ -8329,7 +8319,7 @@ msgstr "" #: editor/settings_config_dialog.cpp msgid "Shortcuts" -msgstr "" +msgstr "Snelkoppelingen" #: editor/settings_config_dialog.cpp msgid "Binding" @@ -8345,7 +8335,7 @@ msgstr "" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera FOV" -msgstr "" +msgstr "Wijzig Camera FOV" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera Size" @@ -8365,7 +8355,7 @@ msgstr "" #: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp msgid "Change Sphere Shape Radius" -msgstr "" +msgstr "Wijzig Sphere Vorm Straal" #: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp msgid "Change Box Shape Extents" @@ -8373,11 +8363,11 @@ msgstr "" #: editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Radius" -msgstr "" +msgstr "Wijzig Capsule Vorm Straal" #: editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Height" -msgstr "" +msgstr "Wijzig Capsule Vorm Hoogte" #: editor/spatial_editor_gizmos.cpp msgid "Change Cylinder Shape Radius" @@ -8389,43 +8379,39 @@ msgstr "" #: editor/spatial_editor_gizmos.cpp msgid "Change Ray Shape Length" -msgstr "" +msgstr "Wijzig Ray Vorm Lengte" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Cylinder Radius" -msgstr "Wijzig Meng Tijd" +msgstr "Wijzig Cylinder Straal" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Cylinder Height" -msgstr "Wijzig Meng Tijd" +msgstr "Wijzig Cylinder Hoogte" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Torus Inner Radius" -msgstr "Wijzig Ankers en Marges" +msgstr "Wijzig Torus Binnenste Straal" #: modules/csg/csg_gizmos.cpp msgid "Change Torus Outer Radius" -msgstr "" +msgstr "Wijzig Torus Buitenste Straal" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" -msgstr "" +msgstr "Selecteer de dynamische bibliotheek voor deze ingave" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" -msgstr "" +msgstr "Selecteer afhankelijkheden van de bibliotheek voor deze ingave" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Remove current entry" -msgstr "Verwijder Signaal" +msgstr "Verwijder huidige ingave" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" -msgstr "" +msgstr "Dubbelklikken om een nieuwe ingave te creëren" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" @@ -8445,23 +8431,23 @@ msgstr "" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "GDNativeLibrary" -msgstr "" +msgstr "GDInheemsBibliotheek" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" -msgstr "" +msgstr "Bibliotheek" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Status" -msgstr "" +msgstr "Status" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Libraries: " -msgstr "" +msgstr "Bibliotheken: " #: modules/gdnative/register_types.cpp msgid "GDNative" -msgstr "" +msgstr "GDInheems" #: modules/gdscript/gdscript_functions.cpp msgid "step argument is zero!" @@ -8565,27 +8551,27 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit X Axis" -msgstr "" +msgstr "Bewerk X As" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit Y Axis" -msgstr "" +msgstr "Bewerk Y As" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit Z Axis" -msgstr "" +msgstr "Bewerk Z As" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate X" -msgstr "" +msgstr "Cursor Roteer X" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate Y" -msgstr "" +msgstr "Cursor Roteer Y" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate Z" -msgstr "" +msgstr "Cursor Roteer Z" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate X" @@ -9403,7 +9389,7 @@ msgstr "" "alsjeblieft een vorm resource voor deze!" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9656,6 +9642,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Inzoomen" + #~ msgid "Class List:" #~ msgstr "Klasse Lijst:" diff --git a/editor/translations/pl.po b/editor/translations/pl.po index a068bc8123..47f8918039 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -30,7 +30,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2018-11-10 20:07+0000\n" +"PO-Revision-Date: 2018-12-04 22:15+0000\n" "Last-Translator: Tomek <kobewi4e@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" @@ -39,7 +39,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.3-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -347,7 +347,6 @@ msgid "Method not found in object: " msgstr "Metoda nie znaleziona w obiekcie: " #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Move Keys" msgstr "Przemieść klucze animacji" @@ -423,12 +422,10 @@ msgid "Delete Selection" msgstr "Usuń zaznaczone" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" msgstr "Przejdź do następnego kroku" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" msgstr "Przejdź do poprzedniego kroku" @@ -569,8 +566,9 @@ msgid "Warnings:" msgstr "Ostrzeżenia:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Powiększenie:" +#, fuzzy +msgid "Font Size:" +msgstr "Wielkość oryginalna fontu:" #: editor/code_editor.cpp msgid "Line:" @@ -683,9 +681,8 @@ msgid "Edit Connection: " msgstr "Edytuj połączenie: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "Na pewno chcesz usunąć wszystkie połączenia z tego sygnału?" +msgstr "Na pewno chcesz usunąć wszystkie połączenia z sygnału \"%s\"?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -839,9 +836,8 @@ msgid "Error loading:" msgstr "Błąd ładowania:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Load failed due to missing dependencies:" -msgstr "Scena nie została wczytana z powodu brakujących zależności:" +msgstr "Wczytywanie nieudane z powodu brakujących zależności:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -1323,24 +1319,21 @@ msgid "File Exists, Overwrite?" msgstr "Plik istnieje, nadpisać?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select This Folder" -msgstr "Wybierz ten Folder" +msgstr "Wybierz ten folder" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" msgstr "Skopiuj Ścieżkę" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "Open in File Manager" -msgstr "Otwórz w menadżerze plików" +msgstr "Otwórz w menedżerze plików" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp #: editor/project_manager.cpp -#, fuzzy msgid "Show in File Manager" -msgstr "Pokaż w menadżerze plików" +msgstr "Pokaż w menedżerze plików" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "New Folder..." @@ -1483,19 +1476,16 @@ msgid "Methods" msgstr "Metody" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "Metody" +msgstr "Metody:" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "Właściwości" +msgstr "Właściwości motywu" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "Właściwości:" +msgstr "Właściwości motywu:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1522,14 +1512,12 @@ msgid "Constants:" msgstr "Stałe:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "Opis" +msgstr "Opis klasy" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "Opis:" +msgstr "Opis klasy:" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1546,14 +1534,12 @@ msgstr "" "jakiś[/url][/color]." #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" -msgstr "Opis właściwości:" +msgstr "Opisy właściwości" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions:" -msgstr "Opis właściwości:" +msgstr "Opisy właściwości:" #: editor/editor_help.cpp msgid "" @@ -1564,14 +1550,12 @@ msgstr "" "$url]wysyłając ją[/url][/color]!" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "Opis metody:" +msgstr "Opisy metod" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions:" -msgstr "Opis metody:" +msgstr "Opisy metod:" #: editor/editor_help.cpp msgid "" @@ -1587,49 +1571,40 @@ msgid "Search Help" msgstr "Wyszukaj w Pomocy" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "Widok normalny" +msgstr "Pokaż wszystko" #: editor/editor_help_search.cpp -#, fuzzy msgid "Classes Only" -msgstr "Klasy" +msgstr "Tylko klasy" #: editor/editor_help_search.cpp -#, fuzzy msgid "Methods Only" -msgstr "Metody" +msgstr "Tylko metody" #: editor/editor_help_search.cpp -#, fuzzy msgid "Signals Only" -msgstr "Sygnały" +msgstr "Tylko sygnały" #: editor/editor_help_search.cpp -#, fuzzy msgid "Constants Only" -msgstr "Stałe" +msgstr "Tylko stałe" #: editor/editor_help_search.cpp -#, fuzzy msgid "Properties Only" -msgstr "Właściwości" +msgstr "Tylko właściwości" #: editor/editor_help_search.cpp -#, fuzzy msgid "Theme Properties Only" -msgstr "Właściwości" +msgstr "Tylko właściwości motywu" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "Członkowie" +msgstr "Typ członka" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "Klasa:" +msgstr "Klasa" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" @@ -1728,6 +1703,12 @@ msgstr "Ta operacja nie może zostać wykonana bez sceny." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1736,7 +1717,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "Nie można nadpisać sceny, która wciąż jest otwarta!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1992,13 +1973,12 @@ msgid "Unable to load addon script from path: '%s'." msgstr "Nie można załadować skryptu dodatku z ścieżki: '%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 "" -"Nie można załadować skryptu dodatku z ścieżki: '%s' Skrypt nie jest w trybie " -"narzędzia (tool)." +"Nie można załadować skryptu dodatku ze ścieżki: '%s' W kodzie znajduje się " +"błąd, sprawdź składnię." #: editor/editor_node.cpp msgid "" @@ -2054,7 +2034,6 @@ msgstr "Domyślny" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp -#, fuzzy msgid "Show in FileSystem" msgstr "Pokaż w systemie plików" @@ -2139,7 +2118,6 @@ msgid "Save Scene" msgstr "Zapisz scenę" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" msgstr "Zapisz wszystkie sceny" @@ -2169,7 +2147,7 @@ msgid "Undo" msgstr "Cofnij" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Ponów" @@ -2623,6 +2601,8 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"Nie można utworzyć ViewportTexture na zasobach zapisanych jako plik.\n" +"Zasób musi należeć do sceny." #: editor/editor_properties.cpp msgid "" @@ -2631,6 +2611,10 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" +"Nie można utworzyć ViewportTexture na tym zasobie, ponieważ nie jest " +"ustawiony jako lokalny dla sceny.\n" +"Włącz mu właściwość \"lokalny dla sceny\" (i wszystkim zasobom, które go " +"zawierają, aż do węzła)." #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -2948,9 +2932,8 @@ msgstr "" "typu plików nie będzie zapisana!" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" -msgstr "Ulubione:" +msgstr "Ulubione" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" @@ -3035,14 +3018,12 @@ msgid "Instance" msgstr "Instancja" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to favorites" -msgstr "Ulubione:" +msgstr "Dodaj do ulubionych" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "Usuń z Grupy" +msgstr "Usuń z ulubionych" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3073,14 +3054,12 @@ msgid "New Resource..." msgstr "Nowy zasób..." #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Expand All" -msgstr "Rozwiń foldery" +msgstr "Rozwiń wszystko" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" -msgstr "Zwiń foldery" +msgstr "Zwiń wszystko" #: editor/filesystem_dock.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -3102,9 +3081,8 @@ msgid "Re-Scan Filesystem" msgstr "Przeskanuj system plików ponownie" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle split mode" -msgstr "Przełącz tryby" +msgstr "Przełącz tryb podziału" #: editor/filesystem_dock.cpp msgid "Search files" @@ -3112,7 +3090,7 @@ msgstr "Przeszukaj pliki" #: editor/filesystem_dock.cpp msgid "Instance the selected scene(s) as child of the selected node." -msgstr "Utwórz instancje wybranej sceny/scen jako dziecko wybranego węzła." +msgstr "Utwórz instancję wybranej sceny/scen jako dziecko wybranego węzła." #: editor/filesystem_dock.cpp msgid "" @@ -3139,24 +3117,20 @@ msgid "Create Script" msgstr "Utwórz Skrypt" #: editor/find_in_files.cpp -#, fuzzy msgid "Find in Files" msgstr "Znajdź w plikach" #: editor/find_in_files.cpp -#, fuzzy msgid "Find:" -msgstr "Znajdź: " +msgstr "Znajdź:" #: editor/find_in_files.cpp -#, fuzzy msgid "Folder:" -msgstr "Folder: " +msgstr "Folder:" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "Filtry" +msgstr "Filtry:" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3335,12 +3309,10 @@ msgid "Failed to load resource." msgstr "Nie udało się wczytać zasobu." #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" msgstr "Rozwiń wszystkie właściwości" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" msgstr "Zwiń wszystkie właściwości" @@ -3358,7 +3330,6 @@ msgid "Paste Params" msgstr "Wklej parametry" #: editor/inspector_dock.cpp -#, fuzzy msgid "Edit Resource Clipboard" msgstr "Edytuj schowek zasobów" @@ -3473,7 +3444,7 @@ msgstr "Usuń wielokąt i punkt" #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "Create a new polygon from scratch" -msgstr "Utwórz nowy wielokąt" +msgstr "Utwórz nowy wielokąt od zera" #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "" @@ -4038,7 +4009,6 @@ msgid "TimeScale Node" msgstr "Węzeł Skalowania Czasu" #: editor/plugins/animation_tree_player_editor_plugin.cpp -#, fuzzy msgid "TimeSeek Node" msgstr "Węzeł TimeSeek" @@ -4301,9 +4271,8 @@ msgid "Resize CanvasItem" msgstr "Zmień rozmiar CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem" -msgstr "Obróć CanvasItem" +msgstr "Skaluj CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move CanvasItem" @@ -4368,9 +4337,8 @@ msgid "Rotate Mode" msgstr "Tryb Rotacji" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Mode" -msgstr "Tryb skalowania (R)" +msgstr "Tryb skalowania" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -4469,9 +4437,8 @@ msgid "Restores the object's children's ability to be selected." msgstr "Odblokuj selekcję węzłów podrzędnych." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Skeleton Options" -msgstr "Szkielet..." +msgstr "Opcje szkieletu" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -4525,7 +4492,7 @@ msgstr "Pokaż widok" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "Pokaż ikony grup i blokady" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -4713,7 +4680,7 @@ msgstr "Stwórz Occluder Polygon" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create a new polygon from scratch." -msgstr "Utwórz nowy wielokąt." +msgstr "Utwórz nowy wielokąt od zera." #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Edit existing polygon:" @@ -4814,7 +4781,6 @@ msgid "Create Trimesh Collision Sibling" msgstr "Utwórz trójsiatkę sąsiednich kolizji" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Convex Collision Sibling" msgstr "Utwórz wypukłego sąsiada kolizji" @@ -4968,9 +4934,8 @@ msgid "Create Navigation Polygon" msgstr "Utwórz wielokąt nawigacyjny" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" -msgstr "Wygeneruj prostokąta widzialności" +msgstr "Generowanie prostokąta widzialności" #: editor/plugins/particles_2d_editor_plugin.cpp #, fuzzy @@ -5219,49 +5184,43 @@ msgstr "Przesuń złącze" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "The skeleton property of the Polygon2D does not point to a Skeleton2D node" -msgstr "" +msgstr "Właściwość skeleton węzła Polygon2D nie wskazuje na węzeł Skeleton2D" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Sync bones" -msgstr "Pokaż kości" +msgstr "Synchronizuj kości" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" msgstr "Utwórz Mapę UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Polygon & UV" -msgstr "Utwórz Polygon" +msgstr "Utwórz wielokąt i UV" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Split point with itself." -msgstr "" +msgstr "Podziel punkt ze sobą." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Split can't form an existing edge." -msgstr "" +msgstr "Podział nie może uformować istniejącej krawędzi." #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Split already exists." -msgstr "Akcja %s już istnieje!" +msgstr "Podział już istnieje." #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Split" -msgstr "Dodaj punkt" +msgstr "Dodaj podział" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Invalid Split: " -msgstr "Niepoprawna ścieżka!" +msgstr "Niepoprawny podział: " #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Split" -msgstr "Usuń punkt" +msgstr "Usuń podział" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -5269,7 +5228,7 @@ msgstr "Przekształć Mapę UV" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint bone weights" -msgstr "" +msgstr "Maluj wagi kości" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" @@ -5277,27 +5236,23 @@ msgstr "Wielokąt 2D UV Edytor" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "UV" -msgstr "" +msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Poly" -msgstr "Edytuj wielokąt" +msgstr "Wielokąt" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Splits" -msgstr "Podziel Ścieżkę" +msgstr "Podziały" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Bones" -msgstr "Utwórz Kości" +msgstr "Kości" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Polygon" -msgstr "Utwórz Polygon" +msgstr "Utwórz wielokąt" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Point" @@ -5329,24 +5284,23 @@ msgstr "Skaluj Wielokąt" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Connect two points to make a split" -msgstr "" +msgstr "Połącz dwa punkty, by utworzyć podział" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Select a split to erase it" -msgstr "Najpierw wybierz ustawienie z listy!" +msgstr "Wybierz podział, by go usunąć" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity" -msgstr "" +msgstr "Maluj wagi z podaną intensywnością" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "UnPaint weights with specified intensity" -msgstr "" +msgstr "Odmaluj wagi z podaną intensywnością" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Radius:" -msgstr "" +msgstr "Promień:" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon->UV" @@ -5361,9 +5315,8 @@ msgid "Clear UV" msgstr "Wyczyść UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Settings" -msgstr "Ustawienia GridMap" +msgstr "Ustawienia siatki" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Enable Snap" @@ -5374,34 +5327,28 @@ msgid "Grid" msgstr "Siatka" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Configure Grid:" -msgstr "Konfiguruj przyciąganie" +msgstr "Konfiguruj siatkę:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Offset X:" -msgstr "Offset siatki:" +msgstr "Przesunięcie X siatki:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Offset Y:" -msgstr "Offset siatki:" +msgstr "Przesunięcie Y siatki:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Step X:" -msgstr "Krok siatki:" +msgstr "Krok X siatki:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Step Y:" -msgstr "Krok siatki:" +msgstr "Krok Y siatki:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Sync Bones to Polygon" -msgstr "Skaluj Wielokąt" +msgstr "Synchronizuj kości z wielokątem" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ERROR: Couldn't load resource!" @@ -5450,13 +5397,12 @@ msgid "Load Resource" msgstr "Wczytaj Zasób" #: editor/plugins/resource_preloader_editor_plugin.cpp -#, fuzzy msgid "ResourcePreloader" -msgstr "Ścieżka zasobu" +msgstr "Wstępny ładowacz zasobów" #: editor/plugins/root_motion_editor_plugin.cpp msgid "AnimationTree has no path set to an AnimationPlayer" -msgstr "" +msgstr "Węzeł AnimationTree nie ma ustawionej ścieżki do AnimationPlayer" #: editor/plugins/root_motion_editor_plugin.cpp msgid "Path to AnimationPlayer is invalid" @@ -5471,24 +5417,20 @@ msgid "Close and save changes?" msgstr "Zamknąć i zapisać zmiany?" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error writing TextFile:" -msgstr "Błąd wczytywania obrazu:" +msgstr "Błąd pisania pliku tekstowego:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error: could not load file." -msgstr "Nie można wczytać obrazu" +msgstr "Błąd: nie udało się wczytać pliku." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error could not load file." -msgstr "Nie można wczytać obrazu" +msgstr "Błąd nie udało się wczytać pliku." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error saving file!" -msgstr "Błąd podczas zapisywania TileSet!" +msgstr "Błąd zapisywania pliku!" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -5507,19 +5449,16 @@ msgid "Error importing" msgstr "Błąd importowania" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "New TextFile..." -msgstr "Utwórz katalog..." +msgstr "Nowy plik tekstowy..." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Open File" msgstr "Otwórz plik" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Save File As..." -msgstr "Zapisz jako..." +msgstr "Zapisz plik jako..." #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" @@ -5536,12 +5475,11 @@ msgstr " Referencja klas" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle alphabetical sorting of the method list." -msgstr "" +msgstr "Przełącz alfabetyczne sortowanie listy metod." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Sort" -msgstr "Sortuj:" +msgstr "Sortuj" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp @@ -5568,9 +5506,8 @@ msgid "File" msgstr "Plik" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "New TextFile" -msgstr "Pokaż pliki" +msgstr "Nowy plik tekstowy" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" @@ -5585,7 +5522,6 @@ msgid "Copy Script Path" msgstr "Skopiuj ścieżkę skryptu" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "History Previous" msgstr "Poprzedni plik" @@ -5657,9 +5593,8 @@ msgid "Keep Debugger Open" msgstr "Pozostaw Debugger otwarty" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" -msgstr "Debugowanie z zewnętrznego edytora" +msgstr "Debugowanie z zewnętrznym edytorem" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation" @@ -5702,32 +5637,28 @@ msgid "Debugger" msgstr "Debugger" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" -msgstr "Wyszukaj w Pomocy" +msgstr "Wyniki wyszukiwania" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Line" -msgstr "Linia:" +msgstr "Linia" #: editor/plugins/script_text_editor.cpp msgid "(ignore)" -msgstr "" +msgstr "(ignoruj)" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function" -msgstr "Przejdź do funkcji..." +msgstr "Przejdź do funkcji" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." msgstr "Jedynie zasoby z systemu plików mogą zostać tu upuszczone." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Lookup Symbol" -msgstr "Uzupełnij symbol" +msgstr "Podejrzyj symbol" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" @@ -5751,11 +5682,11 @@ msgstr "Wielkie litery na początku słów" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Syntax Highlighter" -msgstr "" +msgstr "Podświetlacz składni" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Standard" -msgstr "" +msgstr "Standardowy" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp @@ -5808,12 +5739,10 @@ msgid "Trim Trailing Whitespace" msgstr "Przytnij końcowe spacje" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" msgstr "Zamień wcięcia na spacje" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" msgstr "Zamień wcięcia na tabulatory" @@ -5824,38 +5753,33 @@ msgstr "Automatyczne wcięcie" #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Toggle Breakpoint" -msgstr "Przełącz pułapkę" +msgstr "Przełącz punkt wstrzymania" #: editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" -msgstr "Usuń wszystkie pułapki" +msgstr "Usuń wszystkie punkty wstrzymania" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" -msgstr "Przejdź do następnej pułapki" +msgstr "Przejdź do następnego punktu wstrzymania" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" -msgstr "Przejdź do poprzedniej pułapki" +msgstr "Przejdź do poprzedniego punktu wstrzymania" #: editor/plugins/script_text_editor.cpp msgid "Find Previous" msgstr "Znajdź poprzedni" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." -msgstr "Filtrowanie plików..." +msgstr "Znajdź w plikach..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "Przejdź do funkcji..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." msgstr "Przejdź do linii..." @@ -5869,40 +5793,35 @@ msgstr "Shader" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "This skeleton has no bones, create some children Bone2D nodes." -msgstr "" +msgstr "Ten szkielet nie ma kości. Stwórz jakieś węzły potomne Bone2D." #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Skeleton2D" -msgstr "Szkielet..." +msgstr "Szkielet 2D" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Make Rest Pose (From Bones)" -msgstr "" +msgstr "Utwórz pozę spoczynkową (z kości)" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Bones to Rest Pose" -msgstr "" +msgstr "Ustaw kości do pozy spoczynkowej" #: editor/plugins/skeleton_editor_plugin.cpp -#, fuzzy msgid "Create physical bones" -msgstr "Utwórz siatkę nawigacyjną (Navigation Mesh)" +msgstr "Utwórz fizyczne kości" #: editor/plugins/skeleton_editor_plugin.cpp -#, fuzzy msgid "Skeleton" -msgstr "Szkielet..." +msgstr "Szkielet" #: editor/plugins/skeleton_editor_plugin.cpp -#, fuzzy msgid "Create physical skeleton" -msgstr "Utwórz solucję C#" +msgstr "Utwórz fizyczny szkielet" #: editor/plugins/skeleton_ik_editor_plugin.cpp -#, fuzzy msgid "Play IK" -msgstr "Uruchom" +msgstr "Odtwórz IK" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orthogonal" @@ -5930,29 +5849,25 @@ msgstr "Transformacja osi Z." #: editor/plugins/spatial_editor_plugin.cpp msgid "View Plane Transform." -msgstr "" +msgstr "Pokaż transformację płaszczyzny." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Scaling: " -msgstr "Skala:" +msgstr "Skalowanie: " #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Translating: " -msgstr "Tłumaczenia:" +msgstr "Przesuwanie: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." msgstr "Obracanie o %s stopni." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Keying is disabled (no key inserted)." msgstr "Kluczowanie jest wyłączone (nie wstawiono klucza)." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Animation Key Inserted." msgstr "Wstawiono klucz animacji." @@ -5962,15 +5877,13 @@ msgstr "Wysokość" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "Odchylenie" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Objects Drawn" msgstr "Narysowane obiekty" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Material Changes" msgstr "Zmiany materiału" @@ -5979,9 +5892,8 @@ msgid "Shader Changes" msgstr "Zmiany Shadera" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Surface Changes" -msgstr "Odśwież Zmiany" +msgstr "Zmiany powierzchni" #: editor/plugins/spatial_editor_plugin.cpp msgid "Draw Calls" @@ -6052,9 +5964,8 @@ msgid "This operation requires a single selected node." msgstr "Ta operacja wymaga pojedynczego wybranego węzła." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Lock View Rotation" -msgstr "Wyświetlaj informacje" +msgstr "Zablokuj obrót widoku" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" @@ -6079,7 +5990,7 @@ msgstr "Wyświetlaj środowisko" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "View Gizmos" -msgstr "Wyświetlaj uchwyty" +msgstr "Pokaż uchwyty" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Information" @@ -6094,18 +6005,16 @@ msgid "Half Resolution" msgstr "Połowa rozdzielczości" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Audio Listener" -msgstr "Nasłuchiwacz dźwięku" +msgstr "Słuchacz dźwięku" #: editor/plugins/spatial_editor_plugin.cpp msgid "Doppler Enable" msgstr "Efekt Dopplera" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Cinematic Preview" -msgstr "Tworzenie podglądu Mesh" +msgstr "Podgląd kinowy" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" @@ -6136,9 +6045,8 @@ msgid "Freelook Speed Modifier" msgstr "Zmiennik prędkości \"Wolnego widoku\"" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" -msgstr "Wyświetlaj informacje" +msgstr "Obroty widoku zablokowane" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" @@ -6171,9 +6079,8 @@ msgid "Scale Mode (R)" msgstr "Tryb skalowania (R)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Coords" -msgstr "Local Coords" +msgstr "Lokalne koordynaty" #: editor/plugins/spatial_editor_plugin.cpp msgid "Local Space Mode (%s)" @@ -6228,24 +6135,20 @@ msgid "Align Selection With View" msgstr "Dopasuj zaznaczenie do widoku" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Tool Select" -msgstr "Wybierz narzędzie" +msgstr "Narzędzie wyboru" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Tool Move" -msgstr "Przenieś" +msgstr "Narzędzie poruszania" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Tool Rotate" -msgstr "Narzędzie Obracanie" +msgstr "Narzędzie obracania" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Tool Scale" -msgstr "Narzędzia Skala" +msgstr "Narzędzie skalowania" #: editor/plugins/spatial_editor_plugin.cpp msgid "Toggle Freelook" @@ -6257,7 +6160,7 @@ msgstr "Przekształcanie" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap object to floor" -msgstr "" +msgstr "Przyciągnij obiekt do podłogi" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." @@ -6288,9 +6191,8 @@ msgid "4 Viewports" msgstr "4 widoki" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Gizmos" -msgstr "Wyświetlaj uchwyty" +msgstr "Uchwyty" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" @@ -6368,51 +6270,45 @@ msgid "Post" msgstr "Po" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Sprite is empty!" -msgstr "Ścieżka zapisu jest pusta!" +msgstr "Sprite jest pusty!" #: editor/plugins/sprite_editor_plugin.cpp msgid "Can't convert a sprite using animation frames to mesh." msgstr "" +"Nie można przekonwertować sprite'a używającego klatek animacji na siatkę." #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't replace by mesh." -msgstr "" +msgstr "Nieprawidłowa geometria, nie można zastąpić przez siatkę." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Sprite" -msgstr "SpriteFrames" +msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to 2D Mesh" -msgstr "Konwersja do %s" +msgstr "Konwertuj do siatki 2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create 2D Mesh" -msgstr "Utwórz siatkę zarysu" +msgstr "Utwórz siatkę 2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " -msgstr "" +msgstr "Uproszczenie: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Grow (Pixels): " -msgstr "Przyciąganie (piksele):" +msgstr "Wzrost (piksele): " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Update Preview" -msgstr "Podgląd" +msgstr "Odśwież podgląd" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Settings:" -msgstr "Ustawienia" +msgstr "Ustawienia:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" @@ -6516,10 +6412,9 @@ msgstr "Krok:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Sep.:" -msgstr "" +msgstr "Sep.:" #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "TextureRegion" msgstr "Obszar tekstury" @@ -6548,9 +6443,8 @@ msgid "Edit theme..." msgstr "Edytuj motyw interfejsu..." #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Theme editing menu." -msgstr "Menu zmiany wyglądu programu." +msgstr "Menu edycji motywu." #: editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" @@ -6585,23 +6479,20 @@ msgid "Item" msgstr "Element" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Check Item" -msgstr "Sprawdź element" +msgstr "Element wyboru" #: editor/plugins/theme_editor_plugin.cpp msgid "Checked Item" -msgstr "Zaznaczony element" +msgstr "Zaznaczony element wyboru" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Radio Item" -msgstr "Dodaj element" +msgstr "Element opcji" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Checked Radio Item" -msgstr "Zaznaczony element" +msgstr "Zaznaczony element opcji" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" @@ -6612,17 +6503,14 @@ msgid "Many" msgstr "Wiele" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Has,Many,Options" -msgstr "Ma,Wiele,Różnych,Opcji!" +msgstr "Ma,Wiele,Opcji" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Tab 1" msgstr "Zakładka 1" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Tab 2" msgstr "Zakładka 2" @@ -6631,9 +6519,8 @@ msgid "Tab 3" msgstr "Zakładka 3" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Data Type:" -msgstr "Rodzaj Daty:" +msgstr "Typ danych:" #: editor/plugins/theme_editor_plugin.cpp msgid "Icon" @@ -6660,14 +6547,12 @@ msgid "Erase Selection" msgstr "Usuń zaznaczenie" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Fix Invalid Tiles" -msgstr "Niewłaściwa nazwa." +msgstr "Napraw niewłaściwe kafelki" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "Wyśrodkowywanie na zaznaczeniu" +msgstr "Wytnij zaznaczenie" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -6679,7 +6564,7 @@ msgstr "Rysuj Linię" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rectangle Paint" -msgstr "" +msgstr "Malowanie prostokątne" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Bucket Fill" @@ -6690,9 +6575,8 @@ msgid "Erase TileMap" msgstr "Wyczyść TileMap" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Find Tile" -msgstr "Znajdź tile" +msgstr "Znajdź kafelek" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Transpose" @@ -6708,49 +6592,43 @@ msgstr "Odbij Y" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint Tile" -msgstr "Maluj Tile" +msgstr "Maluj kafelek" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" -msgstr "Wybierz tile" +msgstr "Wybierz kafelek" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "Usuń zaznaczone" +msgstr "Kopiuj zaznaczenie" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate left" -msgstr "Tryb Rotacji" +msgstr "Obróć w lewo" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate right" -msgstr "Przesuń w prawo" +msgstr "Obróć w prawo" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip horizontally" -msgstr "" +msgstr "Odbij poziomo" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +msgstr "Odbij pionowo" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Clear transform" -msgstr "Przekształcanie" +msgstr "Wyczyść przekształcenie" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Add Texture(s) to TileSet" -msgstr "Dodaj węzeł(y) z drzewa" +msgstr "Dodaj teksturę do TileSetu" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove current Texture from TileSet" -msgstr "Usuń punkt krzywej" +msgstr "Usuń aktualną teksturę z TileSetu" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -6765,18 +6643,20 @@ msgid "" "Select sub-tile to use as icon, this will be also used on invalid autotile " "bindings." msgstr "" +"Wybierz pod-kafelek do użycia jako ikona. Zostanie on użyty również do " +"niewłaściwych ustawień autokafelków." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Display tile's names (hold Alt Key)" -msgstr "" +msgstr "Pokaż nazwy kafelków (przytrzymaj Alt)" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove selected texture and ALL TILES which use it?" -msgstr "" +msgstr "Usunąć wybraną teksturę i WSZYSTKIE KAFELKI, które jej używają?" #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." -msgstr "" +msgstr "Nie wybrano tekstury do usunięcia." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene?" @@ -6788,13 +6668,15 @@ msgstr "Połącz ze sceny?" #: editor/plugins/tile_set_editor_plugin.cpp msgid "%s file(s) were not added because was already on the list." -msgstr "" +msgstr "%s plik(ów) nie zostało dodane, bo był(y) już na liście." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" "Drag handles to edit Rect.\n" "Click on another Tile to edit it." msgstr "" +"Przeciągnij uchwyty, by edytować prostokąt.\n" +"Kliknij na inny kafelek, by go edytować." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -6802,13 +6684,17 @@ msgid "" "RMB: set bit off.\n" "Click on another Tile to edit it." msgstr "" +"LPM: włącz bit.\n" +"PPM: wyłącz bit.\n" +"Kliknij inny kafelek, by go edytować." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select current edited sub-tile.\n" "Click on another Tile to edit it." -msgstr "Wybierz aktualnie edytowany sub-tile." +msgstr "" +"Wybierz aktualnie edytowany pod-kafelek.\n" +"Kliknij inny kafelek, by go edytować." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -6816,42 +6702,41 @@ msgid "" "bindings.\n" "Click on another Tile to edit it." msgstr "" +"Wybierz pod-kafelek do użycia jako ikona. Zostanie on również użyty do " +"niewłaściwych ustawień autokafelków.\n" +"Kliknij inny kafelek, by go edytować." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" "Select sub-tile to change its priority.\n" "Click on another Tile to edit it." msgstr "" +"Wybierz pod-kafelek, by zmienić jego priorytet.\n" +"Kliknij inny kafelek, by go edytować." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "This property can't be changed." -msgstr "Ta operacja nie może zostać wykonana bez sceny." +msgstr "Ta właściwość nie może zostać zmieniona." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "TileSet..." +msgstr "Zbiór kafelków" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vertex" -msgstr "Wierzchołki" +msgstr "Wierzchołek" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Fragment" -msgstr "Argumenty:" +msgstr "Fragmenty" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Light" -msgstr "Prawa" +msgstr "Światło" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "VisualShader" -msgstr "Shader" +msgstr "Shader wizualny" #: editor/project_export.cpp msgid "Runnable" @@ -6871,12 +6756,11 @@ msgstr "Brakuje szablonów eksportu dla tej platformy lub są uszkodzone:" #: editor/project_export.cpp msgid "Release" -msgstr "" +msgstr "Wydanie" #: editor/project_export.cpp -#, fuzzy msgid "Exporting All" -msgstr "Exportowanie do %s" +msgstr "Eksportowanie wszystkiego" #: editor/project_export.cpp msgid "Presets" @@ -6887,9 +6771,8 @@ msgid "Add..." msgstr "Dodaj..." #: editor/project_export.cpp -#, fuzzy msgid "Export Path:" -msgstr "Szablon eksportu:" +msgstr "Ścieżka eksportu:" #: editor/project_export.cpp msgid "Resources" @@ -6954,14 +6837,12 @@ msgid "Export PCK/Zip" msgstr "Eksport PCK/Zip" #: editor/project_export.cpp -#, fuzzy msgid "Export mode?" -msgstr "Tryb eksportu:" +msgstr "Tryb eksportu?" #: editor/project_export.cpp -#, fuzzy msgid "Export All" -msgstr "Eksport" +msgstr "Eksportuj wszystko" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" @@ -6976,32 +6857,29 @@ msgid "The path does not exist." msgstr "Ścieżka nie istnieje." #: editor/project_manager.cpp -#, fuzzy msgid "Invalid '.zip' project file, does not contain a 'project.godot' file." -msgstr "Proszę wybrać folder nie zawierający pliku 'project.godot'." +msgstr "" +"Niewłaściwy projekt pliku \".zip\", nie zawiera pliku \"project.godot\"." #: editor/project_manager.cpp -#, fuzzy msgid "Please choose an empty folder." -msgstr "Proszę wybrać plik 'project.godot'." +msgstr "Proszę wybrać pusty folder." #: editor/project_manager.cpp -#, fuzzy msgid "Please choose a 'project.godot' or '.zip' file." -msgstr "Proszę wybrać plik 'project.godot'." +msgstr "Proszę wybrać plik \"project.godot\" lub \".zip\"." #: editor/project_manager.cpp msgid "Directory already contains a Godot project." -msgstr "" +msgstr "Folder już zawiera projekt Godota." #: editor/project_manager.cpp msgid "Imported Project" msgstr "Zaimportowano projekt" #: editor/project_manager.cpp -#, fuzzy msgid "Invalid Project Name." -msgstr "Nazwa projektu:" +msgstr "Nieprawidłowa nazwa projektu." #: editor/project_manager.cpp msgid "Couldn't create folder." @@ -7020,11 +6898,12 @@ msgid "Invalid project path (changed anything?)." msgstr "Niepoprawna ścieżka projektu (zmienić cokolwiek?)." #: editor/project_manager.cpp -#, fuzzy msgid "" "Couldn't load project.godot in project path (error %d). It may be missing or " "corrupted." -msgstr "Nie można było edytować engine.cfg w ścieżce projektu." +msgstr "" +"Nie udało się wczytać project.godot w ścieżce projektu (błąd %d). Może go " +"brakować lub być uszkodzony." #: editor/project_manager.cpp msgid "Couldn't edit project.godot in project path." @@ -7083,9 +6962,8 @@ msgid "Project Path:" msgstr "Ścieżka do projektu:" #: editor/project_manager.cpp -#, fuzzy msgid "Project Installation Path:" -msgstr "Ścieżka do projektu:" +msgstr "Ścieżka instalacji projektu:" #: editor/project_manager.cpp msgid "Browse" @@ -7205,13 +7083,12 @@ msgid "Mouse Button" msgstr "Przycisk myszy" #: editor/project_settings_editor.cpp -#, fuzzy msgid "" "Invalid action name. it cannot be empty nor contain '/', ':', '=', '\\' or " "'\"'" msgstr "" -"Niepoprawna nazwa akcji. Nazwa nie może być pusta ani zawierać znaki takie " -"jak: '/', ':', '=', '\\' lub '\"'" +"Niepoprawna nazwa akcji. Nie może być pusta ani zawierać '/', ':', '=', '\\' " +"lub '\"'" #: editor/project_settings_editor.cpp msgid "Action '%s' already exists!" @@ -7222,18 +7099,16 @@ msgid "Rename Input Action Event" msgstr "Zmień nazwę zdarzenia akcji wejścia" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Change Action deadzone" -msgstr "Zmień nazwę animacji:" +msgstr "Zmień martwą strefę akcji" #: editor/project_settings_editor.cpp msgid "Add Input Action Event" msgstr "Dodaj zdarzenie akcji wejścia" #: editor/project_settings_editor.cpp -#, fuzzy msgid "All Devices" -msgstr "Urządzenie" +msgstr "Wszystkie urządzenia" #: editor/project_settings_editor.cpp msgid "Device" @@ -7280,24 +7155,20 @@ msgid "Wheel Down Button" msgstr "Kółko myszy w dół" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Wheel Left Button" -msgstr "Kółko myszy w górę" +msgstr "Kółko w lewo" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Wheel Right Button" -msgstr "Prawy guzik" +msgstr "Kółko w prawo" #: editor/project_settings_editor.cpp -#, fuzzy msgid "X Button 1" -msgstr "Przycisk 6" +msgstr "Przycisk X 1" #: editor/project_settings_editor.cpp -#, fuzzy msgid "X Button 2" -msgstr "Przycisk 6" +msgstr "Przycisk X 2" #: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" @@ -7368,13 +7239,12 @@ msgid "Delete Item" msgstr "Usuń element" #: editor/project_settings_editor.cpp -#, fuzzy msgid "" "Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " "'\"'." msgstr "" -"Niepoprawna nazwa akcji. Nazwa nie może być pusta ani zawierać znaki takie " -"jak: '/', ':', '=', '\\' lub '\"'" +"Niepoprawna nazwa akcji. Nie może być pusta ani zawierać '/', ':', '=', '\\' " +"lub '\"'." #: editor/project_settings_editor.cpp msgid "Already existing" @@ -7394,7 +7264,7 @@ msgstr "Ustawienia zapisane pomyślnie." #: editor/project_settings_editor.cpp msgid "Override for Feature" -msgstr "" +msgstr "Nadpisanie dla cechy" #: editor/project_settings_editor.cpp msgid "Add Translation" @@ -7410,7 +7280,7 @@ msgstr "Dodaj zmapowaną ścieżkę" #: editor/project_settings_editor.cpp msgid "Resource Remap Add Remap" -msgstr "" +msgstr "Dodaj mapowanie zasobu" #: editor/project_settings_editor.cpp msgid "Change Resource Remap Language" @@ -7446,7 +7316,7 @@ msgstr "Nadpisz dla..." #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Editor must be restarted for changes to take effect" -msgstr "" +msgstr "Edytor musi zostać zrestartowany, by zmiany miały efekt" #: editor/project_settings_editor.cpp msgid "Input Map" @@ -7462,7 +7332,7 @@ msgstr "Akcja" #: editor/project_settings_editor.cpp msgid "Deadzone" -msgstr "" +msgstr "Martwa strefa" #: editor/project_settings_editor.cpp msgid "Device:" @@ -7569,7 +7439,6 @@ msgid "Pick a Node" msgstr "Wybierz węzeł" #: editor/property_editor.cpp -#, fuzzy msgid "Bit %d, val %d." msgstr "Bit %d, wartość %d." @@ -7601,44 +7470,39 @@ msgstr "Zmień nazwę" #: editor/rename_dialog.cpp msgid "Prefix" -msgstr "" +msgstr "Przedrostek" #: editor/rename_dialog.cpp msgid "Suffix" -msgstr "" +msgstr "Przyrostek" #: editor/rename_dialog.cpp -#, fuzzy msgid "Advanced options" -msgstr "Opcje przyciągania" +msgstr "Opcje zaawansowane" #: editor/rename_dialog.cpp msgid "Substitute" -msgstr "" +msgstr "Substytut" #: editor/rename_dialog.cpp -#, fuzzy msgid "Node name" -msgstr "Nazwa węzła:" +msgstr "Nazwa węzła" #: editor/rename_dialog.cpp msgid "Node's parent name, if available" -msgstr "" +msgstr "Nazwa rodzica węzła, jeśli dostępna" #: editor/rename_dialog.cpp -#, fuzzy msgid "Node type" -msgstr "Znajdź typ węzła" +msgstr "Typ węzła" #: editor/rename_dialog.cpp -#, fuzzy msgid "Current scene name" -msgstr "Aktualna scena" +msgstr "Nazwa aktualnej sceny" #: editor/rename_dialog.cpp -#, fuzzy msgid "Root node name" -msgstr "Nazwa węzła:" +msgstr "Nazwa korzenia" #: editor/rename_dialog.cpp msgid "" @@ -7652,35 +7516,35 @@ msgstr "" #: editor/rename_dialog.cpp msgid "If set the counter restarts for each group of child nodes" -msgstr "" +msgstr "Gdy ustawione, licznik restartuje dla każdej grupy węzłów potomnych" #: editor/rename_dialog.cpp msgid "Initial value for the counter" -msgstr "" +msgstr "Początkowa wartość dla licznika" #: editor/rename_dialog.cpp -#, fuzzy msgid "Step" -msgstr "Krok:" +msgstr "Krok" #: editor/rename_dialog.cpp msgid "Amount by which counter is incremented for each node" -msgstr "" +msgstr "Liczba, o którą licznik jest zwiększany dla każdego węzła" #: editor/rename_dialog.cpp msgid "Padding" -msgstr "" +msgstr "Wyrównanie" #: editor/rename_dialog.cpp msgid "" "Minimum number of digits for the counter.\n" "Missing digits are padded with leading zeros." msgstr "" +"Minimalna liczba cyfr dla licznika.\n" +"Brakujące cyfry są wyrównywane zerami poprzedzającymi." #: editor/rename_dialog.cpp -#, fuzzy msgid "Regular Expressions" -msgstr "Zmień wyrażenie" +msgstr "Wyrażenia regularne" #: editor/rename_dialog.cpp #, fuzzy @@ -7693,30 +7557,27 @@ msgstr "Bez zmian" #: editor/rename_dialog.cpp msgid "CamelCase to under_scored" -msgstr "" +msgstr "CamelCase na under_scored" #: editor/rename_dialog.cpp msgid "under_scored to CamelCase" -msgstr "" +msgstr "under_scored na CamelCase" #: editor/rename_dialog.cpp msgid "Case" -msgstr "" +msgstr "Notacja" #: editor/rename_dialog.cpp -#, fuzzy msgid "To Lowercase" -msgstr "Małe Litery" +msgstr "Na małe litery" #: editor/rename_dialog.cpp -#, fuzzy msgid "To Uppercase" -msgstr "Wielkie Litery" +msgstr "Na wielkie litery" #: editor/rename_dialog.cpp -#, fuzzy msgid "Reset" -msgstr "Wyzeruj przybliżenie" +msgstr "Resetuj" #: editor/rename_dialog.cpp msgid "Error" @@ -7774,9 +7635,8 @@ msgstr "" "Nie można utworzyć sceny '%s' ponieważ obecna scena jest jednym z jej wezłów." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Instance Scene(s)" -msgstr "Instancja Scen(y)" +msgstr "Dodaj instancję sceny" #: editor/scene_tree_dock.cpp msgid "Instance Child Scene" @@ -7791,12 +7651,10 @@ msgid "This operation can't be done on the tree root." msgstr "Nie można wykonać tej operacji na głównym węźle drzewa." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Move Node In Parent" -msgstr "Przenieś węzeł w nadrzędny" +msgstr "Przenieś węzeł w nadrzędnym" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Move Nodes In Parent" msgstr "Przenieś węzły w nadrzędnym" @@ -7825,6 +7683,8 @@ msgid "" "Disabling \"editable_instance\" will cause all properties of the node to be " "reverted to their default." msgstr "" +"Wyłączenie \"edytowalnej instancji\" sprawi, że wszystkie właściwości węzła " +"zostaną przywrócone do domyślnych." #: editor/scene_tree_dock.cpp msgid "Editable Children" @@ -7835,34 +7695,28 @@ msgid "Load As Placeholder" msgstr "Wczytaj jako zastępczy" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make Local" -msgstr "Uczyń lokalnym" +msgstr "Zrób lokalne" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Create Root Node:" -msgstr "Utwórz węzeł" +msgstr "Utwórz korzeń:" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "2D Scene" -msgstr "Scena" +msgstr "Scena 2D" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "3D Scene" -msgstr "Scena" +msgstr "Scena 3D" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "User Interface" -msgstr "Wyczyść dziedziczenie" +msgstr "Interfejs użytkownika" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Custom Node" -msgstr "Wytnij Węzły" +msgstr "Inny węzeł" #: editor/scene_tree_dock.cpp msgid "Can't operate on nodes from a foreign scene!" @@ -7905,9 +7759,8 @@ msgid "Clear Inheritance" msgstr "Wyczyść dziedziczenie" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open documentation" -msgstr "Otwórz dokumentację online" +msgstr "Otwórz dokumentację" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)" @@ -7922,14 +7775,12 @@ msgid "Change Type" msgstr "Zmień typ" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" -msgstr "Otwórz skrypt" +msgstr "Rozszerz skrypt" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make Scene Root" -msgstr "To ma sens!" +msgstr "Zmień na korzeń sceny" #: editor/scene_tree_dock.cpp msgid "Merge From Scene" @@ -7956,7 +7807,7 @@ msgid "" "Instance a scene file as a Node. Creates an inherited scene if no root node " "exists." msgstr "" -"Stwórz instancję sceny jako węzeł. Tworzy dziedziczącą scenę jeśli węzeł " +"Dodaj instancję sceny jako węzeł. Tworzy dziedziczącą scenę jeśli węzeł " "główny nie istnieje." #: editor/scene_tree_dock.cpp @@ -7980,7 +7831,6 @@ msgid "Clear Inheritance? (No Undo!)" msgstr "Wyczyścić dziedziczenie? (Nie można cofnąć!)" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Toggle Visible" msgstr "Przełącz widoczność" @@ -7989,12 +7839,11 @@ msgid "Node configuration warning:" msgstr "Ostrzeżenie konfiguracji węzła:" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Node has connection(s) and group(s).\n" "Click to show signals dock." msgstr "" -"Węzeł posiada połączenia i grupy\n" +"Węzeł posiada połączenie(a) i grupę(y).\n" "Kliknij, aby wyświetlić panel sygnałów." #: editor/scene_tree_editor.cpp @@ -8014,27 +7863,24 @@ msgstr "" "Kliknij, aby wyświetlić panel grup." #: editor/scene_tree_editor.cpp editor/script_create_dialog.cpp -#, fuzzy msgid "Open Script" msgstr "Otwórz skrypt" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Node is locked.\n" "Click to unlock it." msgstr "" "Węzeł jest zablokowany.\n" -"Kliknij by odblokować" +"Kliknij, by go odblokować." #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Children are not selectable.\n" "Click to make selectable." msgstr "" -"Dziecko nie jest możliwe do zaznaczenia.\n" -"Kliknij by móc zaznaczyć" +"Dzieci nie są możliwe do zaznaczenia.\n" +"Kliknij, by móc zaznaczyć." #: editor/scene_tree_editor.cpp msgid "Toggle Visibility" @@ -8045,6 +7891,8 @@ msgid "" "AnimationPlayer is pinned.\n" "Click to unpin." msgstr "" +"AnimationPlayer jest przypięty.\n" +"Kliknij, by odpiąć." #: editor/scene_tree_editor.cpp msgid "Invalid node name, the following characters are not allowed:" @@ -8083,18 +7931,16 @@ msgid "N/A" msgstr "N/A" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Open Script/Choose Location" -msgstr "Otwórz edytor skryptów" +msgstr "Otwórz skrypt/Wybierz lokację" #: editor/script_create_dialog.cpp msgid "Path is empty" msgstr "Ścieżka jest pusta" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty" -msgstr "Ścieżka zapisu jest pusta!" +msgstr "Nazwa pliku jest pusta" #: editor/script_create_dialog.cpp msgid "Path is not local" @@ -8185,9 +8031,8 @@ msgid "Bytes:" msgstr "Bajty:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Stack Trace" -msgstr "Ramki stosu" +msgstr "Ślad stosu" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." @@ -8275,7 +8120,7 @@ msgstr "Typ klikniętej kontrolki:" #: editor/script_editor_debugger.cpp msgid "Live Edit Root:" -msgstr "" +msgstr "Korzeń edycji:" #: editor/script_editor_debugger.cpp msgid "Set From Tree" @@ -8295,7 +8140,7 @@ msgstr "Zmień promień światła" #: editor/spatial_editor_gizmos.cpp msgid "Change AudioStreamPlayer3D Emission Angle" -msgstr "" +msgstr "Zmień kąt emisji węzła AudioStreamPlayer3D" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera FOV" @@ -8307,11 +8152,11 @@ msgstr "Zmień rozmiar kamery" #: editor/spatial_editor_gizmos.cpp msgid "Change Notifier AABB" -msgstr "" +msgstr "Zmień AABB powiadamiacza" #: editor/spatial_editor_gizmos.cpp msgid "Change Particles AABB" -msgstr "" +msgstr "Zmień AABB cząsteczek" #: editor/spatial_editor_gizmos.cpp msgid "Change Probe Extents" @@ -8334,38 +8179,32 @@ msgid "Change Capsule Shape Height" msgstr "Zmień wysokość kształtu kapsuły" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Change Cylinder Shape Radius" -msgstr "Zmień średnicę Capsule Shape" +msgstr "Zmień promień kształtu cylindra" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Change Cylinder Shape Height" -msgstr "Zmień wysokość kształtu kapsuły" +msgstr "Zmień wysokość kształtu cylindra" #: editor/spatial_editor_gizmos.cpp msgid "Change Ray Shape Length" msgstr "Zmień długość Ray Shape" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Cylinder Radius" -msgstr "Zmień promień światła" +msgstr "Zmień promień cylindra" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Cylinder Height" -msgstr "Zmień wysokość kształtu kapsuły" +msgstr "Zmień wysokość cylindra" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Torus Inner Radius" -msgstr "Zmień promień Sphere Shape" +msgstr "Zmień wewnętrzny promień torusa" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Torus Outer Radius" -msgstr "Zmień promień światła" +msgstr "Zmień zewnętrzny promień torusa" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" @@ -8376,9 +8215,8 @@ msgid "Select dependencies of the library for this entry" msgstr "Zaznacz zależności biblioteki dla tego pola" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Remove current entry" -msgstr "Usuń punkt krzywej" +msgstr "Usuń aktualny wpis" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" @@ -8455,21 +8293,19 @@ msgstr "Niepoprawna instancja słownika (niepoprawne podklasy)" #: modules/gdscript/gdscript_functions.cpp msgid "Object can't provide a length." -msgstr "" +msgstr "Obiekt nie może podać długości." #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Next Plane" -msgstr "Następna zakładka" +msgstr "Następna płaszczyzna" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Previous Plane" -msgstr "Poprzednia zakładka" +msgstr "Poprzednia płaszczyzna" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Plane:" -msgstr "" +msgstr "Płaszczyzna:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Next Floor" @@ -8488,9 +8324,8 @@ msgid "GridMap Delete Selection" msgstr "GridMap Usuń zaznaczenie" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "GridMap Fill Selection" -msgstr "GridMap Usuń zaznaczenie" +msgstr "GridMap Wypełnij zaznaczenie" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Duplicate Selection" @@ -8545,44 +8380,39 @@ msgstr "Kursor Obróć Z" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate X" -msgstr "" +msgstr "Kursor Obróć w tył X" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Y" -msgstr "" +msgstr "Kursor Obróć w tył Y" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Z" -msgstr "" +msgstr "Kursor Obróć w tył Z" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Clear Rotation" -msgstr "" +msgstr "Kursor Wyczyść obrót" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Create Area" -msgstr "Tworzenie obszaru" +msgstr "Utwórz obszar" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Create Exterior Connector" -msgstr "Utwórz nowy projekt" +msgstr "Utwórz łącznik zewnętrzny" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Erase Area" msgstr "Usuń obszar" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Clear Selection" -msgstr "Wyczyść zaznaczenie" +msgstr "Wyczyść zaznaczone" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Fill Selection" -msgstr "Wszystkie zaznaczenia" +msgstr "Wypełnij zaznaczone" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Settings" @@ -8893,9 +8723,8 @@ msgid "Change Input Value" msgstr "Zmień wartość wejściową" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't copy the function node." -msgstr "Nie można skopiować funkcji węzła." +msgstr "Nie można skopiować węzła funkcji." #: modules/visual_script/visual_script_editor.cpp msgid "Clipboard is empty!" @@ -8970,9 +8799,8 @@ msgid "Paste Nodes" msgstr "Wklej węzły" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Member" -msgstr "Członkowie" +msgstr "Edytuj członka" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -8987,9 +8815,8 @@ msgid "Iterator became invalid: " msgstr "Iterator stał się nieprawidłowy: " #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Invalid index property name." -msgstr "Nieprawidłowa nazwa klasy bazowej" +msgstr "Nieprawidłowa nazwa właściwości indeksowej." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" @@ -9033,17 +8860,16 @@ msgstr "" "całkowitą (seq out), lub tekstową (error)." #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Search VisualScript" -msgstr "Usuń węzeł VisualScript" +msgstr "Przeszukaj VisualScript" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "Przyjmij %s" #: modules/visual_script/visual_script_property_selector.cpp msgid "Set %s" -msgstr "" +msgstr "Ustaw %s" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -9096,16 +8922,15 @@ msgstr "" "przy czym pozostałe zostaną zignorowane." #: scene/2d/collision_object_2d.cpp -#, fuzzy msgid "" "This node has no shape, so it can't collide or interact with other objects.\n" "Consider adding a CollisionShape2D or CollisionPolygon2D as a child to " "define its shape." msgstr "" -"Ten węzeł nie posiada podwezła, który definiował by jego kształt, więc nie " -"może wchodzić w interakcje.\n" -"Powinieneś dodać węzeł \"CollisionShape2D\" lub \"CollisionPolygon2D\" jako " -"podwęzeł aby zdefiniować kształt." +"Ten węzeł nie posiada kształtu, więc nie może kolidować, czy wchodzić w " +"interakcje z innymi obiektami.\n" +"Rozważ dodanie węzła CollisionShape2D lub CollisionPolygon2D jako podrzędny, " +"aby zdefiniować kształt." #: scene/2d/collision_polygon_2d.cpp msgid "" @@ -9144,6 +8969,8 @@ msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Animacja CPUParticles2D wymaga użycia CanvasItemMaterial z włączonym " +"\"Particles Animation\"." #: scene/2d/light_2d.cpp msgid "" @@ -9199,6 +9026,8 @@ msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Animacja Particles2D wymaga użycia CanvasItemMaterial z włączonym " +"\"Particles Animation\"." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -9221,16 +9050,20 @@ msgstr "Żeby zadziałało, pole Path musi wskazywać na istniejący węzeł Nod #: scene/2d/skeleton_2d.cpp msgid "This Bone2D chain should end at a Skeleton2D node." -msgstr "" +msgstr "Ten łańcuch kości 2D powinien się kończyć na węźle Skeleton2D." #: scene/2d/skeleton_2d.cpp msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node." msgstr "" +"Węzeł Bone2D działa tylko z węzłem Skeleton2D lub innym Bone2D jako " +"nadrzędnym węzłem." #: scene/2d/skeleton_2d.cpp msgid "" "This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." msgstr "" +"Tej kości brakuje odpowiedniej pozy spoczynkowej. Pójdź do węzła Skeleton2D " +"i ustaw ją." #: scene/2d/visibility_notifier_2d.cpp msgid "" @@ -9245,9 +9078,8 @@ msgid "ARVRCamera must have an ARVROrigin node as its parent" msgstr "ARVRCamera musi dziedziczyć po węźle ARVROrigin" #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "ARVRController must have an ARVROrigin node as its parent" -msgstr "ARVRController musi posiadać węzeł ARVROrigin jako rodzica" +msgstr "ARVRController musi posiadać węzeł ARVROrigin jako nadrzędny" #: scene/3d/arvr_nodes.cpp msgid "" @@ -9258,15 +9090,16 @@ msgstr "" "przypisany do żadnego rzeczywistego kontrolera" #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "ARVRAnchor must have an ARVROrigin node as its parent" -msgstr "ARVRAnchor musi posiadać węzeł ARVROrigin jako rodzica" +msgstr "ARVRAnchor musi posiadać węzeł ARVROrigin jako nadrzędny" #: scene/3d/arvr_nodes.cpp msgid "" "The anchor id must not be 0 or this anchor will not be bound to an actual " "anchor" msgstr "" +"ID kotwicy nie może być 0, bo inaczej ta kotwica nie będzie przypisana do " +"rzeczywistej kotwicy" #: scene/3d/arvr_nodes.cpp msgid "ARVROrigin requires an ARVRCamera child node" @@ -9298,16 +9131,15 @@ msgid "Lighting Meshes: " msgstr "Oświetlanie siatek: " #: scene/3d/collision_object.cpp -#, fuzzy msgid "" "This node has no shape, so it can't collide or interact with other objects.\n" "Consider adding a CollisionShape or CollisionPolygon as a child to define " "its shape." msgstr "" -"Ten węzeł nie posiada podwezła, który definiowałby jego kształt, więc nie " -"może wchodzić w interakcje z przestrzenią.\n" -"Powinieneś dodać węzeł \"CollisionShape2D\" lub \"CollisionPolygon2D\" jako " -"jego podwęzeł aby zdefiniować jego kształt." +"Ten węzeł nie posiada kształtu, więc nie może kolidować, czy wchodzić w " +"interakcje z innymi obiektami.\n" +"Rozważ dodanie węzła CollisionShape lub CollisionPolygon jako podrzędny, aby " +"zdefiniować kształt." #: scene/3d/collision_polygon.cpp msgid "" @@ -9342,14 +9174,17 @@ msgstr "" "Utwórz zasób typu CollisionShape w odpowiednim polu obiektu!" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." -msgstr "" +#, fuzzy +msgid "Nothing is visible because no mesh has been assigned." +msgstr "Nic nie jest widoczne, bo nie została przypisana żadna siatka." #: scene/3d/cpu_particles.cpp msgid "" "CPUParticles animation requires the usage of a SpatialMaterial with " "\"Billboard Particles\" enabled." msgstr "" +"Animacja CPUParticles wymaga użycia SpatialMaterial z włączonym \"Billboard " +"Particles\"." #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -9373,26 +9208,28 @@ msgstr "" msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" +"Nic nie jest widoczne, bo siatki nie zostały przypisane do kolejki rysowania." #: scene/3d/particles.cpp msgid "" "Particles animation requires the usage of a SpatialMaterial with \"Billboard " "Particles\" enabled." msgstr "" +"Animacja Particles wymaga użycia SpatialMaterial z włączonym \"Billboard " +"Particles\"." #: scene/3d/path.cpp -#, fuzzy msgid "PathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D zadziała tylko wtedy, gdy będzie dzieckiem węzeł Path2D." +msgstr "PathFollow działa tylko, gdy jest węzłem podrzędnym Path." #: scene/3d/path.cpp -#, fuzzy msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D zadziała tylko wtedy, gdy będzie dzieckiem węzeł Path2D." +msgstr "OrientedPathFollow działa tylko, gdy jest węzłem podrzędnym Path." #: scene/3d/path.cpp msgid "OrientedPathFollow requires up vectors enabled in its parent Path." msgstr "" +"OrientedPathFollow wymaga włączonych wektorów w górę w jego nadrzędnym Path." #: scene/3d/physics_body.cpp #, fuzzy @@ -9411,7 +9248,7 @@ msgstr "Pole Path musi wskazywać na węzeł Spatial." #: scene/3d/scenario_fx.cpp msgid "WorldEnvironment needs an Environment resource." -msgstr "" +msgstr "WorldEnvironment wymaga zasobu Environment." #: scene/3d/scenario_fx.cpp msgid "" @@ -9425,20 +9262,21 @@ 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 "" +"Ten WorldEnvironment jest ignorowany. Dodaj Camera (dla scen 3D) lub ustaw " +"Background Mode tego środowiska na Canvas (dla scen 2D)." #: scene/3d/soft_body.cpp msgid "This body will be ignored until you set a mesh" -msgstr "" +msgstr "To ciało będzie ignorowane, dopóki nie ustawisz siatki" #: scene/3d/soft_body.cpp -#, fuzzy msgid "" "Size changes to SoftBody will be overridden by the physics engine when " "running.\n" "Change the size in children collision shapes instead." msgstr "" -"Zmiany rozmiaru w RigidBody (w trybach character i rigid) zostaną nadpisane " -"przez silnik fizyki podczas działania.\n" +"Zmiany rozmiaru dla SoftBody zostaną nadpisane przez silnik fizyki podczas " +"działania.\n" "Zamiast tego, zmień rozmiary kształtów kolizji w węzłach podrzędnych." #: scene/3d/sprite_3d.cpp @@ -9459,44 +9297,41 @@ msgstr "" #: scene/animation/animation_blend_tree.cpp msgid "On BlendTree node '%s', animation not found: '%s'" -msgstr "" +msgstr "W węźle BlendTree '%s', animacja nie znaleziona: '%s'" #: scene/animation/animation_blend_tree.cpp -#, fuzzy msgid "Animation not found: '%s'" -msgstr "Narzędzia do animacji" +msgstr "Animacja nie znaleziona: '%s'" #: scene/animation/animation_tree.cpp msgid "In node '%s', invalid animation: '%s'." -msgstr "" +msgstr "W węźle '%s', nieprawidłowa animacja: '%s'." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Invalid animation: '%s'." -msgstr "BŁĄD: błędna nazwa animacji!" +msgstr "Nieprawidłowa animacja: '%s'." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Nothing connected to input '%s' of node '%s'." -msgstr "Rozłącz '%s' z '%s'" +msgstr "Nic nie podłączono do wejścia '%s' węzła '%s'." #: scene/animation/animation_tree.cpp msgid "A root AnimationNode for the graph is not set." -msgstr "" +msgstr "Korzeń dla grafu AnimationNode nie jest ustawiony." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Path to an AnimationPlayer node containing animations is not set." -msgstr "Zaznacz węzeł AnimationPlayer w drzewie sceny aby edytować animacje." +msgstr "" +"Ścieżka do węzła AnimationPlayer zawierającego animacje nie jest ustawiona." #: scene/animation/animation_tree.cpp msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node." msgstr "" +"Ścieżka do węzła AnimationPlayer nie prowadzi do węzła AnimationPlayer." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "AnimationPlayer root is not a valid node." -msgstr "Drzewo animacji jest wadliwe." +msgstr "Korzeń AnimationPlayer nie jest poprawnym węzłem." #: scene/gui/color_picker.cpp msgid "Raw Mode" @@ -9544,13 +9379,12 @@ msgid "(Other)" msgstr "Inne" #: scene/main/scene_tree.cpp -#, fuzzy msgid "" "Default Environment as specified in Project Settings (Rendering -> " "Environment -> Default Environment) could not be loaded." msgstr "" -"Domyślne Środowisko określone w Ustawieniach Projektu (Renderowanie -> " -"Viewport -> Domyślne Środowisko) nie mogło zostać załadowane." +"Domyślne środowisko określone w Ustawieniach Projektu (Renderowanie -> " +"Environment -> Default Environment) nie mogło zostać załadowane." #: scene/main/viewport.cpp msgid "" @@ -9581,31 +9415,31 @@ msgid "Invalid font size." msgstr "Niepoprawny rozmiar fonta." #: scene/resources/visual_shader.cpp -#, fuzzy msgid "Input" -msgstr "Dodaj Wejście" +msgstr "Wejście" #: scene/resources/visual_shader.cpp -#, fuzzy msgid "None" -msgstr "<żaden>" +msgstr "Brak" #: scene/resources/visual_shader_nodes.cpp -#, fuzzy msgid "Invalid source for shader." -msgstr "Wadliwe źródło!" +msgstr "Niewłaściwe źródło dla shadera." #: servers/visual/shader_language.cpp msgid "Assignment to function." -msgstr "" +msgstr "Przypisanie do funkcji." #: servers/visual/shader_language.cpp msgid "Assignment to uniform." -msgstr "" +msgstr "Przypisanie do uniformu." #: servers/visual/shader_language.cpp msgid "Varyings can only be assigned in vertex function." -msgstr "" +msgstr "Varying może być przypisane tylko w funkcji wierzchołków." + +#~ msgid "Zoom:" +#~ msgstr "Powiększenie:" #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "Na pewno chcesz usunąć wszystkie połączenia z \"" @@ -10286,9 +10120,6 @@ msgstr "" #~ msgid "Source Font:" #~ msgstr "Źródło fontu:" -#~ msgid "Source Font Size:" -#~ msgstr "Wielkość oryginalna fontu:" - #~ msgid "Dest Resource:" #~ msgstr "Zasób docelowy:" diff --git a/editor/translations/pr.po b/editor/translations/pr.po index 065cbdfc59..482ea49196 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -553,7 +553,7 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" +msgid "Font Size:" msgstr "" #: editor/code_editor.cpp @@ -1688,6 +1688,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2086,7 +2092,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -9025,7 +9031,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index e7fcb8b27d..eb6a625e3e 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -37,12 +37,14 @@ # LucasSouza6 <lucasosouza66@gmail.com>, 2018. # Pedro Pacheco <pedroxixipa@hotmail.com>, 2018. # Bruno Henrique <nimbusdroid@gmail.com>, 2018. +# Luciano Scilletta <lucianoscilletta@gmail.com>, 2018. +# Julio Yagami <juliohenrique31501234@hotmail.com>, 2018. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2018-11-26 16:10+0000\n" -"Last-Translator: Bruno Henrique <nimbusdroid@gmail.com>\n" +"PO-Revision-Date: 2018-12-04 22:15+0000\n" +"Last-Translator: Julio Yagami <juliohenrique31501234@hotmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -50,7 +52,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.3-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -433,12 +435,10 @@ msgid "Delete Selection" msgstr "Deletar Seleção" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" msgstr "Ir ao Próximo Passo" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" msgstr "Ir ao Passo Anterior" @@ -579,8 +579,9 @@ msgid "Warnings:" msgstr "Avisos:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Ampliação:" +#, fuzzy +msgid "Font Size:" +msgstr "Tamanho da Fonte de Origem:" #: editor/code_editor.cpp msgid "Line:" @@ -693,9 +694,8 @@ msgid "Edit Connection: " msgstr "Editar Conexão: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "Tem certeza que quer remover todas conexões desse sinal?" +msgstr "Tem certeza que quer remover todas as conexões do sinal \"%s\"?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -1344,7 +1344,6 @@ msgid "Copy Path" msgstr "Copiar Caminho" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "Open in File Manager" msgstr "Mostrar no Gerenciador de Arquivos" @@ -1495,9 +1494,8 @@ msgid "Methods" msgstr "Métodos" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "Métodos" +msgstr "Métodos:" #: editor/editor_help.cpp #, fuzzy @@ -1741,6 +1739,12 @@ msgstr "Essa operação não pode ser realizada sem uma raiz da cena." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1748,8 +1752,9 @@ msgstr "" "herança) não foram satisfeitas." #: editor/editor_node.cpp editor/scene_tree_dock.cpp +#, fuzzy msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "Não é possível sobrescrever cena que ainda está aberta!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -2183,7 +2188,7 @@ msgid "Undo" msgstr "Desfazer" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Refazer" @@ -2636,18 +2641,26 @@ msgid "Assign.." msgstr "Atribuir.." #: editor/editor_properties.cpp +#, fuzzy msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"Não é possível criar uma ViewportTexture nos recursos salvos como um " +"arquivo.\n" +"Recursos precisam pertencer à cena." #: editor/editor_properties.cpp +#, fuzzy msgid "" "Can't create a ViewportTexture on this resource because it's not set as " "local to scene.\n" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" +"Não é possível criar uma ViewportTexture nesse recurso porque não está " +"definido como uma cena local.\n" +"Por favor troque na 'local para cena' propriedade" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -9371,7 +9384,7 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" "Nada está visível porque as meshes não foram atribuídas a passes de desenho." @@ -9641,6 +9654,9 @@ msgstr "Atribuição à uniforme." msgid "Varyings can only be assigned in vertex function." msgstr "Variáveis só podem ser atribuídas na função de vértice." +#~ msgid "Zoom:" +#~ msgstr "Ampliação:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "Tem certeza que quer remover todas conexões do \"" @@ -10366,9 +10382,6 @@ msgstr "Variáveis só podem ser atribuídas na função de vértice." #~ msgid "Source Font:" #~ msgstr "Fonte Origem:" -#~ msgid "Source Font Size:" -#~ msgstr "Tamanho da Fonte de Origem:" - #~ msgid "Dest Resource:" #~ msgstr "Recurso Destino:" diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po index 8ace02c1e0..1e0b10fce8 100644 --- a/editor/translations/pt_PT.po +++ b/editor/translations/pt_PT.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2018-11-21 19:08+0000\n" +"PO-Revision-Date: 2018-12-04 22:15+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" @@ -24,7 +24,7 @@ msgstr "" "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 3.3-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -409,14 +409,12 @@ msgid "Delete Selection" msgstr "Apagar Seleção" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" -msgstr "Ir Próximo Passo" +msgstr "Ir para Próximo Passo" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" -msgstr "Ir Passo Anterior" +msgstr "Ir para Passo Anterior" #: editor/animation_track_editor.cpp msgid "Optimize Animation" @@ -555,8 +553,9 @@ msgid "Warnings:" msgstr "Avisos:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Zoom:" +#, fuzzy +msgid "Font Size:" +msgstr "Vista de frente" #: editor/code_editor.cpp msgid "Line:" @@ -669,9 +668,8 @@ msgid "Edit Connection: " msgstr "Editar Conexão: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "Deseja remover todas as conexões deste sinal?" +msgstr "Deseja remover todas as conexões do sinal \"%s\"?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -826,9 +824,8 @@ msgid "Error loading:" msgstr "Erro ao carregar:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Load failed due to missing dependencies:" -msgstr "Cena falha ao carregar devido a dependências que estão em falta:" +msgstr "Falha no carregamento devido a dependências em falta:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -1314,22 +1311,19 @@ msgid "File Exists, Overwrite?" msgstr "O Ficheiro existe, sobrescrever?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select This Folder" -msgstr "Selecionar esta pasta" +msgstr "Selecionar esta Pasta" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" msgstr "Copiar Caminho" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "Open in File Manager" msgstr "Abrir no Gestor de Ficheiros" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp #: editor/project_manager.cpp -#, fuzzy msgid "Show in File Manager" msgstr "Mostrar no Gestor de Ficheiros" @@ -1474,19 +1468,16 @@ msgid "Methods" msgstr "Métodos" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "Métodos" +msgstr "Métodos:" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "Propriedades" +msgstr "Propriedades do Tema" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "Propriedades:" +msgstr "Propriedades do Tema:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1513,14 +1504,12 @@ msgid "Constants:" msgstr "Constantes:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "Descrição" +msgstr "Descrição da Classe" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "Descrição:" +msgstr "Descrição da Classe:" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1537,14 +1526,12 @@ msgstr "" "um[/url][/color]." #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" -msgstr "Descrição da Propriedade:" +msgstr "Descrições da Propriedade" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions:" -msgstr "Descrição da Propriedade:" +msgstr "Descrições da Propriedade:" #: editor/editor_help.cpp msgid "" @@ -1555,14 +1542,12 @@ msgstr "" "[color=$color][url=$url]contribuindo com uma[/url][/color]!" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "Descrição do Método:" +msgstr "Descrições do Método" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions:" -msgstr "Descrição do Método:" +msgstr "Descrições do Método:" #: editor/editor_help.cpp msgid "" @@ -1578,49 +1563,40 @@ msgid "Search Help" msgstr "Procurar em Ajuda" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "Vista normal" +msgstr "Mostrar Tudo" #: editor/editor_help_search.cpp -#, fuzzy msgid "Classes Only" -msgstr "Classes" +msgstr "Apenas Classes" #: editor/editor_help_search.cpp -#, fuzzy msgid "Methods Only" -msgstr "Métodos" +msgstr "Apenas Métodos" #: editor/editor_help_search.cpp -#, fuzzy msgid "Signals Only" -msgstr "Sinais" +msgstr "Apenas Sinais" #: editor/editor_help_search.cpp -#, fuzzy msgid "Constants Only" -msgstr "Constantes" +msgstr "Apenas Constantes" #: editor/editor_help_search.cpp -#, fuzzy msgid "Properties Only" -msgstr "Propriedades" +msgstr "Apenas Propriedades" #: editor/editor_help_search.cpp -#, fuzzy msgid "Theme Properties Only" -msgstr "Propriedades" +msgstr "Apenas Propriedades do Tema" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "Membros" +msgstr "Tipo do Membro" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "Classe:" +msgstr "Classe" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" @@ -1719,6 +1695,12 @@ msgstr "Esta operação não pode ser feita sem uma raiz da árvore." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1727,7 +1709,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "Não se consegue sobrescrever cena ainda aberta!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1986,13 +1968,12 @@ msgid "Unable to load addon script from path: '%s'." msgstr "Incapaz de carregar Script addon do Caminho: '%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 "" -"Incapaz de carregar Script addon do Caminho: '%s' Script não está no modo " -"ferramenta." +"Incapaz de carregar Script addon do caminho: '%s' Parece haver um erro no " +"código, reveja a sintaxe." #: editor/editor_node.cpp msgid "" @@ -2046,7 +2027,6 @@ msgstr "Padrão" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp -#, fuzzy msgid "Show in FileSystem" msgstr "Mostrar no Sistema de Ficheiros" @@ -2131,7 +2111,6 @@ msgid "Save Scene" msgstr "Guardar Cena" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" msgstr "Guardar todas as Cenas" @@ -2161,7 +2140,7 @@ msgid "Undo" msgstr "Desfazer" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Refazer" @@ -2227,8 +2206,8 @@ msgid "" "On Android, deploy will use the USB cable for faster performance. This " "option speeds up testing for games with a large footprint." msgstr "" -"Quando esta opção está ativa, exportação ou distribuição criará um " -"executável mínimo.\n" +"Quando esta opção é ativada, exportação ou distribuição criará um executável " +"mínimo.\n" "O Sistema de Ficheiros será fornecido ao Projeto pelo Editor sobre a rede.\n" "Em Android, a distribuição irá usar a ligação USB para melhor performance. " "Esta opção acelera o teste de jogos pesados." @@ -2617,6 +2596,8 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"Não se consegue criar Textura Viewport em recursos guardados como ficheiro.\n" +"O recurso tem de pertencer a uma cena." #: editor/editor_properties.cpp msgid "" @@ -2625,6 +2606,10 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" +"Não se consegue criar Textura Viewport neste recurso porque não está " +"definido na cena como local.\n" +"Ative a sua propriedade 'local to scene' (e em todos os recursos que o " +"contêm até a um Nó)." #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -2941,9 +2926,8 @@ msgstr "" "leitura!" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" -msgstr "Favoritos:" +msgstr "Favoritos" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" @@ -3028,14 +3012,12 @@ msgid "Instance" msgstr "Instância" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to favorites" -msgstr "Favoritos:" +msgstr "Adicionar aos Favoritos" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "Remover do Grupo" +msgstr "Remover dos Favoritos" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3066,14 +3048,12 @@ msgid "New Resource..." msgstr "Novo Recurso..." #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Expand All" -msgstr "Expandir tudo" +msgstr "Expandir Tudo" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" -msgstr "Colapsar tudo" +msgstr "Colapsar Tudo" #: editor/filesystem_dock.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -3095,9 +3075,8 @@ msgid "Re-Scan Filesystem" msgstr "Carregar novamente o Sistema de Ficheiros" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle split mode" -msgstr "Alternar modo" +msgstr "Alternar modo de divisão" #: editor/filesystem_dock.cpp msgid "Search files" @@ -3132,24 +3111,20 @@ msgid "Create Script" msgstr "Criar Script" #: editor/find_in_files.cpp -#, fuzzy msgid "Find in Files" -msgstr "Localizar em ficheiros" +msgstr "Localizar em Ficheiros" #: editor/find_in_files.cpp -#, fuzzy msgid "Find:" -msgstr "Localizar: " +msgstr "Localizar:" #: editor/find_in_files.cpp -#, fuzzy msgid "Folder:" -msgstr "Pasta: " +msgstr "Pasta:" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "Filtro: " +msgstr "Filtros:" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3299,11 +3274,11 @@ msgstr "A guardar..." #: editor/import_dock.cpp msgid "Set as Default for '%s'" -msgstr "Definir como padrão para '%s'" +msgstr "Definir como Padrão para '%s'" #: editor/import_dock.cpp msgid "Clear Default for '%s'" -msgstr "Limpar padrão para '%s'" +msgstr "Limpar Padrão para '%s'" #: editor/import_dock.cpp msgid " Files" @@ -3326,14 +3301,12 @@ msgid "Failed to load resource." msgstr "Falha ao carregar recurso." #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" -msgstr "Expandir tudo" +msgstr "Expandir Todas as Propriedades" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" -msgstr "Colapsar todas as Propriedades" +msgstr "Colapsar Todas as Propriedades" #: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/script_editor_plugin.cpp @@ -4201,7 +4174,7 @@ msgid "" "No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake " "Light' flag is on." msgstr "" -"Não há Meshes para cozinhar. Assegure-se que contêm um canal UV2 e que a " +"Não há Meshes para consolidar. Assegure-se que contêm um canal UV2 e que a " "referência 'Bake Light' flag está on." #: editor/plugins/baked_lightmap_editor_plugin.cpp @@ -4210,7 +4183,7 @@ msgstr "Falha ao criar imagens lightmap, assegure-se que o caminho é gravável. #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" -msgstr "Cozinhar Lightmaps" +msgstr "Consolidar Lightmaps" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/rename_dialog.cpp @@ -4282,9 +4255,8 @@ msgid "Resize CanvasItem" msgstr "Redimensionar CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem" -msgstr "Rodar CanvasItem" +msgstr "Escalar CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move CanvasItem" @@ -4348,9 +4320,8 @@ msgid "Rotate Mode" msgstr "Modo rodar" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Mode" -msgstr "Modo escalar (R)" +msgstr "Modo Escalar" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -4449,9 +4420,8 @@ msgid "Restores the object's children's ability to be selected." msgstr "Restaura a capacidade de selecionar os Objetos-filho." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Skeleton Options" -msgstr "Esqueleto" +msgstr "Opções do Esqueleto" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -4505,7 +4475,7 @@ msgstr "Mostrar Vista" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "Mostrar Grupo e Bloquear Ícones" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -4665,7 +4635,7 @@ msgstr "Pressione Shift para editar tangentes individualmente" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "Cozinhar a sonda GI" +msgstr "Consolidar Sonda GI" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" @@ -4946,9 +4916,8 @@ msgid "Create Navigation Polygon" msgstr "Criar Polígono de navegação" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" -msgstr "Gerar Visibilidade do Rect" +msgstr "A Gerar Visibilidade Rect" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" @@ -5426,7 +5395,6 @@ msgid "Error writing TextFile:" msgstr "Erro ao escrever TextFile:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error: could not load file." msgstr "Erro ao carregar ficheiro." @@ -5527,9 +5495,8 @@ msgid "Copy Script Path" msgstr "Copiar Caminho do Script" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "History Previous" -msgstr "Histórico anterior" +msgstr "Histórico Anterior" #: editor/plugins/script_editor_plugin.cpp msgid "History Next" @@ -5599,9 +5566,8 @@ msgid "Keep Debugger Open" msgstr "Manter depurador aberto" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" -msgstr "Depurar com Editor externo" +msgstr "Depurar com Editor Externo" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation" @@ -5644,9 +5610,8 @@ msgid "Debugger" msgstr "Depurador" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" -msgstr "Resultados da pesquisa" +msgstr "Resultados da Pesquisa" #: editor/plugins/script_text_editor.cpp msgid "Line" @@ -5657,9 +5622,8 @@ msgid "(ignore)" msgstr "(ignorar)" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function" -msgstr "Ir para Função..." +msgstr "Ir para Função" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." @@ -5748,14 +5712,12 @@ msgid "Trim Trailing Whitespace" msgstr "Apagar espaços nos limites" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" -msgstr "Converter Indentação em espaços" +msgstr "Converter Indentação em Espaços" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" -msgstr "Converter Indentação em tabulação" +msgstr "Converter Indentação em Tabulação" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" @@ -5771,33 +5733,28 @@ msgid "Remove All Breakpoints" msgstr "Remover todos os Breakpoints" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" -msgstr "Ir para próximo Breakpoint" +msgstr "Ir para Próximo Breakpoint" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" -msgstr "Ir para Breakpoint anterior" +msgstr "Ir para Breakpoint Anterior" #: editor/plugins/script_text_editor.cpp msgid "Find Previous" msgstr "Localizar Anterior" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." -msgstr "Localizar em ficheiros..." +msgstr "Localizar em Ficheiros..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "Ir para Função..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." -msgstr "Ir para linha..." +msgstr "Ir para Linha..." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" @@ -5888,13 +5845,12 @@ msgid "Animation Key Inserted." msgstr "Chave de Animação inserida." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Pitch" -msgstr "Trocar" +msgstr "Inclinação" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "Direção" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -5982,7 +5938,7 @@ msgstr "Esta operação requer um único Nó selecionado." #: editor/plugins/spatial_editor_plugin.cpp msgid "Lock View Rotation" -msgstr "Trancar Rotação da Vista" +msgstr "Bloquear Rotação da Vista" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" @@ -6061,9 +6017,8 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de velocidade Freelook" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" -msgstr "Trancar Rotação da Vista" +msgstr "Rotação da Vista Bloqueada" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" @@ -6097,7 +6052,7 @@ msgstr "Modo escalar (R)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" -msgstr "Coordenadas locais" +msgstr "Coordenadas Locais" #: editor/plugins/spatial_editor_plugin.cpp msgid "Local Space Mode (%s)" @@ -6565,9 +6520,8 @@ msgid "Fix Invalid Tiles" msgstr "Reparar Tiles inválidos" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "Centrar seleção" +msgstr "Cortar Seleção" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -6614,32 +6568,28 @@ msgid "Pick Tile" msgstr "Escolher Tile" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "Mover Seleção" +msgstr "Copiar Seleção" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate left" -msgstr "Modo rodar" +msgstr "Rodar p/ esquerda" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate right" -msgstr "Rodar Polígono" +msgstr "Rodar p/ direita" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip horizontally" -msgstr "" +msgstr "Inverter horizontalmente" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +msgstr "Inverter verticalmente" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Clear transform" -msgstr "Transformar" +msgstr "Limpar Transformação" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Add Texture(s) to TileSet" @@ -6670,9 +6620,8 @@ msgid "Display tile's names (hold Alt Key)" msgstr "Exibir nome dos tiles (segure tecla Alt)" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture and ALL TILES which use it?" -msgstr "Remover Textura Selecionada e TODOS OS TILES que a usam?" +msgstr "Remover textura selecionada e TODOS OS TILES que a usam?" #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." @@ -6687,9 +6636,8 @@ msgid "Merge from scene?" msgstr "Fundir a partir da Cena?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "%s file(s) were not added because was already on the list." -msgstr " ficheiro(s) não foi adicionado por já estar na lista." +msgstr "%s ficheiro(s) não foi/foram adicionado(s) por já estar(em) na lista." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -6778,12 +6726,11 @@ msgstr "" #: editor/project_export.cpp msgid "Release" -msgstr "" +msgstr "Libertar" #: editor/project_export.cpp -#, fuzzy msgid "Exporting All" -msgstr "Exportar" +msgstr "A Exportar Tudo" #: editor/project_export.cpp msgid "Presets" @@ -6794,9 +6741,8 @@ msgid "Add..." msgstr "Adicionar..." #: editor/project_export.cpp -#, fuzzy msgid "Export Path:" -msgstr "Exportar Projeto" +msgstr "Caminho da Exportação:" #: editor/project_export.cpp msgid "Resources" @@ -6861,14 +6807,12 @@ msgid "Export PCK/Zip" msgstr "Exportar PCK/Zip" #: editor/project_export.cpp -#, fuzzy msgid "Export mode?" -msgstr "Modo exportação:" +msgstr "Modo Exportação?" #: editor/project_export.cpp -#, fuzzy msgid "Export All" -msgstr "Exportar" +msgstr "Exportar Tudo" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" @@ -7515,7 +7459,7 @@ msgstr "Nome do Nó" #: editor/rename_dialog.cpp msgid "Node's parent name, if available" -msgstr "Nome do pai do Nó, se disponível" +msgstr "Nome do parente do Nó, se disponível" #: editor/rename_dialog.cpp msgid "Node type" @@ -7554,7 +7498,6 @@ msgid "Step" msgstr "Passo" #: editor/rename_dialog.cpp -#, fuzzy msgid "Amount by which counter is incremented for each node" msgstr "Valor pelo qual cada contador é incrementado para cada nó" @@ -7563,7 +7506,6 @@ msgid "Padding" msgstr "Preenchimento" #: editor/rename_dialog.cpp -#, fuzzy msgid "" "Minimum number of digits for the counter.\n" "Missing digits are padded with leading zeros." @@ -7617,7 +7559,7 @@ msgstr "Recolocar Nó" #: editor/reparent_dialog.cpp msgid "Reparent Location (Select new Parent):" -msgstr "Recolocar localização (selecionar novo parente):" +msgstr "Recolocar localização (selecionar novo Parente):" #: editor/reparent_dialog.cpp msgid "Keep Global Transform" @@ -7681,11 +7623,11 @@ msgstr "Esta operação não pode ser feita na raiz da árvore." #: editor/scene_tree_dock.cpp msgid "Move Node In Parent" -msgstr "Mover Nó no parente" +msgstr "Mover Nó no Parente" #: editor/scene_tree_dock.cpp msgid "Move Nodes In Parent" -msgstr "Mover Nós no parente" +msgstr "Mover Nós no Parente" #: editor/scene_tree_dock.cpp msgid "Duplicate Node(s)" @@ -7712,6 +7654,8 @@ msgid "" "Disabling \"editable_instance\" will cause all properties of the node to be " "reverted to their default." msgstr "" +"Desativar \"editable_instance\" irá reverter todas as propriedades do Nó " +"para os seus valores padrão." #: editor/scene_tree_dock.cpp msgid "Editable Children" @@ -7786,9 +7730,8 @@ msgid "Clear Inheritance" msgstr "Limpar herança" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open documentation" -msgstr "Abrir documentação online do Godot" +msgstr "Abrir documentação" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)" @@ -7803,9 +7746,8 @@ msgid "Change Type" msgstr "Mudar tipo" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" -msgstr "Abrir Script" +msgstr "Estender Script" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" @@ -7968,9 +7910,8 @@ msgid "Path is empty" msgstr "Caminho está vazio" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty" -msgstr "Sprite está vazia!" +msgstr "Nome do ficheiro vazio" #: editor/script_create_dialog.cpp msgid "Path is not local" @@ -8061,9 +8002,8 @@ msgid "Bytes:" msgstr "Bytes:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Stack Trace" -msgstr "Empilhar Frames" +msgstr "Rastreamento de Pilha" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." @@ -8513,7 +8453,7 @@ msgstr "Fim do stack trace de exceção interna" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "" +msgstr "Consolidar NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -8621,7 +8561,7 @@ msgstr "Mudar nome do argumento" #: modules/visual_script/visual_script_editor.cpp msgid "Set Variable Default Value" -msgstr "Definir valor padrão da variável" +msgstr "Definir Valor Padrão da Variável" #: modules/visual_script/visual_script_editor.cpp msgid "Set Variable Type" @@ -8897,12 +8837,11 @@ msgstr "Procurar VisualScript" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "Obter %s" #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Set %s" -msgstr "Definir " +msgstr "Definir %s" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -8934,7 +8873,7 @@ msgstr "Impossível ler Ficheiro de imagem do ecrã de inicialização:" #: platform/javascript/export/export.cpp msgid "Using default boot splash image." -msgstr "A usar imagem de inicialização por defeito." +msgstr "A usar imagem padrão de inicialização." #: scene/2d/animated_sprite.cpp msgid "" @@ -9001,6 +8940,8 @@ msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Animação CPUParticles2D requer o uso de um CanvasItemMaterial com " +"\"Particles Animation\" ativada." #: scene/2d/light_2d.cpp msgid "" @@ -9057,6 +8998,8 @@ msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Animação Particles2D requer o uso de um CanvasItemMaterial com \"Particles " +"Animation\" ativada." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -9085,7 +9028,7 @@ msgstr "Esta corrente de Bone2D deve terminar em um nó Skeleton2D." #: scene/2d/skeleton_2d.cpp msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node." -msgstr "Um Bone2D só funciona com um nó pai Skeleton2D ou Bone2D." +msgstr "Um Bone2D só funciona com um nó parente Skeleton2D ou Bone2D." #: scene/2d/skeleton_2d.cpp msgid "" @@ -9201,15 +9144,16 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." -msgstr "" -"Nada é visível porque não foram atribuídas Meshes aos passos de desenho." +msgid "Nothing is visible because no mesh has been assigned." +msgstr "Nada é visível porque nenhuma Malha foi atribuída." #: scene/3d/cpu_particles.cpp msgid "" "CPUParticles animation requires the usage of a SpatialMaterial with " "\"Billboard Particles\" enabled." msgstr "" +"Animação CPUParticles requer o uso de um SpatialMaterial com \"Billboard " +"Particles\" ativada." #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -9240,22 +9184,21 @@ msgid "" "Particles animation requires the usage of a SpatialMaterial with \"Billboard " "Particles\" enabled." msgstr "" +"Animação Particles requer o uso de um SpatialMaterial com \"Billboard " +"Particles\" ativada." #: scene/3d/path.cpp -#, fuzzy msgid "PathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D apenas funciona quando definido como filho de um Nó Path2D." +msgstr "PathFollow apenas funciona quando definido como filho de um Nó Path." #: scene/3d/path.cpp -#, fuzzy msgid "OrientedPathFollow only works when set as a child of a Path node." msgstr "" -"PathFollow2D apenas funciona quando definido como filho de um Nó Path2D." +"OrientedPathFollow apenas funciona quando definido como filho de um Nó Path." #: scene/3d/path.cpp msgid "OrientedPathFollow requires up vectors enabled in its parent Path." -msgstr "" +msgstr "OrientedPathFollow requer vetores cima ativados no Caminho do parente." #: scene/3d/physics_body.cpp msgid "" @@ -9297,7 +9240,6 @@ msgid "This body will be ignored until you set a mesh" msgstr "Este corpo será ignorado até se definir uma Malha" #: scene/3d/soft_body.cpp -#, fuzzy msgid "" "Size changes to SoftBody will be overridden by the physics engine when " "running.\n" @@ -9305,7 +9247,7 @@ msgid "" msgstr "" "Mudanças no tamanho do SoftBody serão reescritas pelo motor de física na " "execução.\n" -"Mude antes o tamanho das formas de colisão filhas." +"Em vez disso, mude o tamanho das formas de colisão filhas." #: scene/3d/sprite_3d.cpp msgid "" @@ -9389,7 +9331,7 @@ msgstr "" #: scene/gui/range.cpp msgid "If exp_edit is true min_value must be > 0." -msgstr "" +msgstr "Se exp_edit é verdadeiro min_value tem de ser > 0." #: scene/gui/scroll_container.cpp msgid "" @@ -9410,7 +9352,7 @@ msgid "" "Default Environment as specified in Project Settings (Rendering -> " "Environment -> Default Environment) could not be loaded." msgstr "" -"Ambiente padrão especificado em Configuração do Projeto (Rendering -> " +"Ambiente Padrão especificado em Configuração do Projeto (Rendering -> " "Environment -> Default Environment) não pode ser carregado." #: scene/main/viewport.cpp @@ -9465,6 +9407,9 @@ msgstr "Atribuição a uniforme." msgid "Varyings can only be assigned in vertex function." msgstr "Variações só podem ser atribuídas na função vértice." +#~ msgid "Zoom:" +#~ msgstr "Zoom:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "Está seguro que quer remover todas as conexões de \"" diff --git a/editor/translations/ro.po b/editor/translations/ro.po index 9359389f36..752c69bfab 100644 --- a/editor/translations/ro.po +++ b/editor/translations/ro.po @@ -559,8 +559,8 @@ msgstr "" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "Zoom-ați În" +msgid "Font Size:" +msgstr "Dimensiunea Conturului:" #: editor/code_editor.cpp msgid "Line:" @@ -1729,6 +1729,12 @@ msgstr "Aceasta operațiune nu se poate face fără o rădăcină de copac." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2174,7 +2180,7 @@ msgid "Undo" msgstr "Revenire" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Reîntoarcere" @@ -9215,7 +9221,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9444,6 +9450,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Zoom-ați În" + #~ msgid "Class List:" #~ msgstr "Listă de Clase:" diff --git a/editor/translations/ru.po b/editor/translations/ru.po index 957af1f5e7..b7d0bf0a21 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -28,12 +28,13 @@ # V. <Unit68189@gmail.com>, 2018. # Victor Butorin <mrwebsterchannel@gmail.com>, 2018. # Александр <ol-vin@mail.ru>, 2018. +# Анатолий Горбунов <afgorbunov@gmail.com>, 2018. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-11-26 16:10+0000\n" -"Last-Translator: Александр <ol-vin@mail.ru>\n" +"PO-Revision-Date: 2018-12-04 22:15+0000\n" +"Last-Translator: Анатолий Горбунов <afgorbunov@gmail.com>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" "Language: ru\n" @@ -42,7 +43,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.3-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -424,12 +425,10 @@ msgid "Delete Selection" msgstr "Удалить выделенное" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" msgstr "Перейти к следующему шагу" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" msgstr "Перейти к предыдущему шагу" @@ -570,8 +569,9 @@ msgid "Warnings:" msgstr "Предупреждения:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Приближение:" +#, fuzzy +msgid "Font Size:" +msgstr "Исходный размер шрифта:" #: editor/code_editor.cpp msgid "Line:" @@ -684,9 +684,8 @@ msgid "Edit Connection: " msgstr "Редактировать Подключение: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "Вы уверены, что хотите удалить все подключения от сигнала?" +msgstr "Вы уверены, что хотите удалить все подключения из сигнала \"%s\"?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -840,7 +839,6 @@ msgid "Error loading:" msgstr "Ошибка при загрузке:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Load failed due to missing dependencies:" msgstr "Не удалось загрузить сцену из-за отсутствия зависимостей:" @@ -1328,7 +1326,6 @@ msgid "File Exists, Overwrite?" msgstr "Файл существует, перезаписать?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select This Folder" msgstr "Выбрать эту папку" @@ -1337,13 +1334,11 @@ 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/filesystem_dock.cpp #: editor/project_manager.cpp -#, fuzzy msgid "Show in File Manager" msgstr "Просмотреть в проводнике" @@ -1488,19 +1483,16 @@ msgid "Methods" msgstr "Методы" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "Методы" +msgstr "Методы:" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "Свойства" +msgstr "Свойства темы" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "Свойства:" +msgstr "Свойства темы:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1527,14 +1519,12 @@ msgid "Constants:" msgstr "Константы:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "Описание" +msgstr "Описание класса" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "Описание:" +msgstr "Описание класса:" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1551,12 +1541,10 @@ msgstr "" "$url2]запросить[/url][/color]." #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" msgstr "Описание свойств:" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions:" msgstr "Описание свойств:" @@ -1569,12 +1557,10 @@ msgstr "" "$color][url=$url]помогите нам[/url][/color]!" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "Описание методов:" +msgstr "Описание методов" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions:" msgstr "Описание методов:" @@ -1592,49 +1578,40 @@ msgid "Search Help" msgstr "Помощь" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "Режим нормалей" +msgstr "Отображать всё" #: editor/editor_help_search.cpp -#, fuzzy 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 "Свойства" +msgstr "Только свойства темы" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "Свойства" +msgstr "Тип члена" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "Класс:" +msgstr "Класс" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" @@ -1733,6 +1710,12 @@ msgstr "Эта операция не может быть выполнена бе #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1741,7 +1724,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "Невозможно перезаписать сцену, которая все еще открыта!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1996,13 +1979,12 @@ msgid "Unable to load addon script from path: '%s'." msgstr "Не удалось загрузить скрипт из источника: '%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 "" -"Не удалось загрузить скрипт из источника: '%s' скрипт не в режиме " -"инструмента." +"Невозможно загрузить скрипт аддона из источника: \"% s\". В коде есть " +"ошибка. Пожалуйста, проверьте синтаксис." #: editor/editor_node.cpp msgid "" @@ -2142,7 +2124,6 @@ msgid "Save Scene" msgstr "Сохранить сцену" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" msgstr "Сохранить все сцены" @@ -2172,7 +2153,7 @@ msgid "Undo" msgstr "Отменить" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Повторить" @@ -2629,6 +2610,8 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"Невозможно создать ViewportTexture для ресурсов, сохраненных в виде файла.\n" +"Ресурс должен принадлежать сцене." #: editor/editor_properties.cpp msgid "" @@ -2637,6 +2620,10 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" +"Невозможно создать ViewportTexture для этого ресурса, потому что он не " +"установлен как локальный для сцены.\n" +"Включите свойство «Локально для сцены» (и все ресурсы, содержащие его вверх " +"от узла)." #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -2952,9 +2939,8 @@ msgstr "" "типов файлов!" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" -msgstr "Избранное:" +msgstr "Избранное" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" @@ -3040,14 +3026,12 @@ msgid "Instance" msgstr "Добавить экземпляр" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to favorites" -msgstr "Избранное:" +msgstr "Добавить в избранное" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "Удалить из группы" +msgstr "Удалить из избранного" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3083,7 +3067,6 @@ msgid "Expand All" msgstr "Развернуть все" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" msgstr "Свернуть все" @@ -3107,9 +3090,8 @@ msgid "Re-Scan Filesystem" msgstr "Пересканировать файловую систему" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle split mode" -msgstr "Переключить режим отображения" +msgstr "Переключить режим разделения" #: editor/filesystem_dock.cpp msgid "Search files" @@ -3144,24 +3126,22 @@ msgid "Create Script" msgstr "Создать скрипт" #: editor/find_in_files.cpp -#, fuzzy msgid "Find in Files" msgstr "Найти в файлах" #: editor/find_in_files.cpp #, fuzzy msgid "Find:" -msgstr "Найти: " +msgstr "Найти:" #: editor/find_in_files.cpp #, fuzzy msgid "Folder:" -msgstr "Папка: " +msgstr "Папка:" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "Фильтры" +msgstr "Фильтры:" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3338,12 +3318,10 @@ msgid "Failed to load resource." msgstr "Не удалось загрузить ресурс." #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" msgstr "Развернуть все свойства" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" msgstr "Свернуть все свойства" @@ -4296,7 +4274,6 @@ msgid "Resize CanvasItem" msgstr "Изменить размер CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem" msgstr "Вращать CanvasItem" @@ -4363,9 +4340,8 @@ msgid "Rotate Mode" msgstr "Режим поворота" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Mode" -msgstr "Режим масштабирования (R)" +msgstr "Режим масштабирования" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -4464,9 +4440,8 @@ msgid "Restores the object's children's ability to be selected." msgstr "Восстанавливает возможность выбора потомков объекта." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Skeleton Options" -msgstr "Скелет" +msgstr "Опции скелета" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -4520,7 +4495,7 @@ msgstr "Показать окно просмотра" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "Показать группу и заблокировать иконки" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -4961,7 +4936,6 @@ msgid "Create Navigation Polygon" msgstr "Создать Navigation Polygon" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" msgstr "Создать область видимости" @@ -5442,9 +5416,8 @@ msgid "Error writing TextFile:" msgstr "Ошибка при записи:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error: could not load file." -msgstr "Не удалось загрузить файл." +msgstr "Ошибка: Не удалось загрузить файл." #: editor/plugins/script_editor_plugin.cpp msgid "Error could not load file." @@ -5615,7 +5588,6 @@ msgid "Keep Debugger Open" msgstr "Оставить отладчик открытым" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" msgstr "Отладка с помощью внешнего редактора" @@ -5660,7 +5632,6 @@ msgid "Debugger" msgstr "Отладчик" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" msgstr "Результаты поиска" @@ -5673,9 +5644,8 @@ msgid "(ignore)" 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." @@ -5764,12 +5734,10 @@ msgid "Trim Trailing Whitespace" msgstr "Удаление пробелов в конце строк" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" msgstr "Преобразовать отступ в пробелы" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" msgstr "Преобразовать отступ в табуляцию" @@ -5787,12 +5755,10 @@ msgid "Remove All Breakpoints" msgstr "Удалить все точки остановок" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" msgstr "Перейти к следующей точке остановки" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" msgstr "Перейти к предыдущей точке остановки" @@ -5801,17 +5767,14 @@ msgid "Find Previous" msgstr "Найти предыдущее" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." msgstr "Найти в файлах..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "Перейти к функции..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." msgstr "Перейти к строке..." @@ -6309,7 +6272,6 @@ msgstr "" "Не удается преобразовать спрайт использующий анимационные кадры в сетку." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Invalid geometry, can't replace by mesh." msgstr "Недопустимая геометрия, не удается заменить сетки." @@ -6582,9 +6544,8 @@ msgid "Fix Invalid Tiles" msgstr "Исправить недопустимые плитки" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "Центрировать выбранное" +msgstr "Вырезать выделенное" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -6631,27 +6592,24 @@ msgid "Pick Tile" msgstr "Выбрать тайл" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "Передвинуть выделенное" +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" -msgstr "" +msgstr "Отразить по горизонтали" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +msgstr "Отразить по вертикали" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy @@ -9272,7 +9230,7 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "Ничего не видно, потому что полисетки не были назначены на отрисовку." #: scene/3d/cpu_particles.cpp @@ -9546,6 +9504,9 @@ msgstr "Назначить форму" msgid "Varyings can only be assigned in vertex function." msgstr "Переменные могут быть назначены только в функции вершин." +#~ msgid "Zoom:" +#~ msgstr "Приближение:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "Вы уверены, что хотите удалить все подключения от \"" @@ -10261,9 +10222,6 @@ msgstr "Переменные могут быть назначены только #~ msgid "Source Font:" #~ msgstr "Исходный шрифт:" -#~ msgid "Source Font Size:" -#~ msgstr "Исходный размер шрифта:" - #~ msgid "Dest Resource:" #~ msgstr "Ресурс назначения:" diff --git a/editor/translations/si.po b/editor/translations/si.po index 726eb15d37..cad4ac4e20 100644 --- a/editor/translations/si.po +++ b/editor/translations/si.po @@ -536,7 +536,7 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" +msgid "Font Size:" msgstr "" #: editor/code_editor.cpp @@ -1651,6 +1651,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2047,7 +2053,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8849,7 +8855,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp diff --git a/editor/translations/sk.po b/editor/translations/sk.po index d2bd63b02a..bb1597a3b9 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -543,7 +543,7 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" +msgid "Font Size:" msgstr "" #: editor/code_editor.cpp @@ -1686,6 +1686,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2086,7 +2092,7 @@ msgid "Undo" msgstr "Späť" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -9016,7 +9022,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp diff --git a/editor/translations/sl.po b/editor/translations/sl.po index 19a658939b..ca2e63448e 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -561,9 +561,8 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Zoom:" -msgstr "Približaj" +msgid "Font Size:" +msgstr "" #: editor/code_editor.cpp msgid "Line:" @@ -1725,6 +1724,12 @@ msgstr "Te operacije ne moremo storiti brez osnovnega drevesa." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2162,7 +2167,7 @@ msgid "Undo" msgstr "Razveljavi" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Ponovi" @@ -9210,7 +9215,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9443,6 +9448,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Približaj" + #~ msgid "Class List:" #~ msgstr "Seznam Razredov:" diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index 9dec0b6def..1f8bbe8cfd 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -564,8 +564,8 @@ msgstr "" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "Увеличај" +msgid "Font Size:" +msgstr "Поглед испред" #: editor/code_editor.cpp msgid "Line:" @@ -1735,6 +1735,12 @@ msgid "This operation can't be done without a tree root." msgstr "Ова операција се не може обавити без корена дрвета." #: editor/editor_node.cpp +msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp #, fuzzy msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " @@ -2174,7 +2180,7 @@ msgid "Undo" msgstr "Опозови" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Поново уради" @@ -9292,7 +9298,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9523,6 +9529,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Увеличај" + #~ msgid "Class List:" #~ msgstr "Листа класа:" diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po index 864685e72a..9781b261b7 100644 --- a/editor/translations/sr_Latn.po +++ b/editor/translations/sr_Latn.po @@ -543,7 +543,7 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" +msgid "Font Size:" msgstr "" #: editor/code_editor.cpp @@ -1660,6 +1660,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2056,7 +2062,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8876,7 +8882,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp diff --git a/editor/translations/sv.po b/editor/translations/sv.po index 0493e3eec8..7ddf0a981d 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -582,8 +582,8 @@ msgstr "Varning" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "Zooma In" +msgid "Font Size:" +msgstr "Vy framifrån" #: editor/code_editor.cpp msgid "Line:" @@ -1894,6 +1894,12 @@ msgid "This operation can't be done without a tree root." msgstr "Åtgärden kan inte göras utan en trädrot." #: editor/editor_node.cpp +msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp #, fuzzy msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " @@ -2389,7 +2395,7 @@ msgid "Undo" msgstr "Ångra" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #, fuzzy msgid "Redo" msgstr "Ångra" @@ -9715,7 +9721,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9956,6 +9962,10 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Zooma In" + +#, fuzzy #~ msgid "Class List:" #~ msgstr "Klasslista:" diff --git a/editor/translations/ta.po b/editor/translations/ta.po index de4e62702b..b6a30c7fe7 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -541,7 +541,7 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" +msgid "Font Size:" msgstr "" #: editor/code_editor.cpp @@ -1657,6 +1657,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2053,7 +2059,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8863,7 +8869,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp diff --git a/editor/translations/th.po b/editor/translations/th.po index 021f57822e..a8661d6968 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -569,8 +569,8 @@ msgstr "คำเตือน" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "ซูม (%):" +msgid "Font Size:" +msgstr "ขนาดฟอนต์ต้นฉบับ:" #: editor/code_editor.cpp msgid "Line:" @@ -1724,6 +1724,12 @@ msgstr "ทำไม่ได้ถ้าไม่มีฉาก" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "บันทึกฉากไม่ได้ อาจจะมีการอ้างอิงไม่สมบูรณ์ (อินสแตนซ์หรือการสืบทอด)" @@ -2145,7 +2151,7 @@ msgid "Undo" msgstr "เลิกทำ" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "ทำซ้ำ" @@ -9258,7 +9264,7 @@ msgstr "ต้องมีรูปทรงเพื่อให้ CollisionSh #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "ไม่มีการแสดงผลเนื่องจากไม่ได้กำหนด mesh ใน draw pass" #: scene/3d/cpu_particles.cpp @@ -9508,6 +9514,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "ซูม (%):" + #~ msgid "Class List:" #~ msgstr "รายชื่อคลาส:" @@ -10210,9 +10220,6 @@ msgstr "" #~ msgid "Source Font:" #~ msgstr "ฟอนต์ต้นฉบับ:" -#~ msgid "Source Font Size:" -#~ msgstr "ขนาดฟอนต์ต้นฉบับ:" - #~ msgid "Dest Resource:" #~ msgstr "นำเข้ามาเป็นรีซอร์ส:" diff --git a/editor/translations/tr.po b/editor/translations/tr.po index 64c03e3f0b..a57b573cf9 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -582,8 +582,8 @@ msgstr "Uyarılar" #: editor/code_editor.cpp #, fuzzy -msgid "Zoom:" -msgstr "Yaklaş (%):" +msgid "Font Size:" +msgstr "Kaynak Yazı Türü Boyutu:" #: editor/code_editor.cpp msgid "Line:" @@ -1745,6 +1745,12 @@ msgstr "Bu işlem bir kök sahne olmadan yapılamaz." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2184,7 +2190,7 @@ msgid "Undo" msgstr "Geri" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Geri" @@ -9375,7 +9381,7 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" "Hiçbirşey görünebilir değil çünkü örüntüler çizim geçişlerine atanmış değil." @@ -9646,6 +9652,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Yaklaş (%):" + #~ msgid "Class List:" #~ msgstr "Sınıf Listesi:" @@ -10346,9 +10356,6 @@ msgstr "" #~ msgid "Source Font:" #~ msgstr "Yazı Türü Kaynağı:" -#~ msgid "Source Font Size:" -#~ msgstr "Kaynak Yazı Türü Boyutu:" - #~ msgid "Dest Resource:" #~ msgstr "Varış Kaynağı:" diff --git a/editor/translations/uk.po b/editor/translations/uk.po index 6d61acce23..befdfbd46d 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -9,11 +9,12 @@ # Максим Якимчук <xpinovo@gmail.com>, 2018. # Марс Ямбар <mjambarmeta@gmail.com>, 2017-2018. # Олександр Пилипчук <pilipchukap@rambler.ru>, 2018. +# Kirill Omelchenko <kirill.omelchenko@gmail.com>, 2018. msgid "" msgstr "" "Project-Id-Version: Ukrainian (Godot Engine)\n" -"PO-Revision-Date: 2018-08-24 19:45+0000\n" -"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" +"PO-Revision-Date: 2018-12-04 22:15+0000\n" +"Last-Translator: Максим Якимчук <xpinovo@gmail.com>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/" "godot/uk/>\n" "Language: uk\n" @@ -21,7 +22,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.2-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -42,8 +43,7 @@ msgstr "Некоректні вхідні дані %i (не передано) у #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" msgstr "" -"не можна використовувати self, оскільки екземпляр може бути порожнім (не " -"передано)" +"не можна використовувати self, оскільки екземпляр є порожнім (не передано)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -407,14 +407,12 @@ msgid "Delete Selection" 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" @@ -553,8 +551,9 @@ msgid "Warnings:" msgstr "Попередження:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "Масштаб:" +#, fuzzy +msgid "Font Size:" +msgstr "Вигляд спереду" #: editor/code_editor.cpp msgid "Line:" @@ -667,9 +666,8 @@ msgid "Edit Connection: " msgstr "Редагувати з’єднання: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "Ви справді хочете вилучити усі з'єднання з цього сигналу?" +msgstr "Ви справді хочете вилучити усі з'єднання з сигналу «%s»?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -824,9 +822,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" @@ -1310,24 +1307,21 @@ 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/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..." @@ -1470,19 +1464,16 @@ msgid "Methods" msgstr "Методи" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "Методи" +msgstr "Методи:" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "Властивості" +msgstr "Властивості теми" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "Властивості:" +msgstr "Властивості теми:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1509,18 +1500,16 @@ msgid "Constants:" msgstr "Константи:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "Опис" +msgstr "Опис класу" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "Опис:" +msgstr "Опис класу:" #: editor/editor_help.cpp msgid "Online Tutorials:" -msgstr "Підручники у інтернеті:" +msgstr "Підручники в інтернеті:" #: editor/editor_help.cpp msgid "" @@ -1533,14 +1522,12 @@ msgstr "" "щодо їхнього створення[/url][/color]." #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" -msgstr "Опис властивостей:" +msgstr "Описи властивостей" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions:" -msgstr "Опис властивостей:" +msgstr "Описи властивостей:" #: editor/editor_help.cpp msgid "" @@ -1551,14 +1538,12 @@ msgstr "" "[url=$url]створіть його[/url][/color]!" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "Опис методів:" +msgstr "Описи методів" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions:" -msgstr "Опис методів:" +msgstr "Описи методів:" #: editor/editor_help.cpp msgid "" @@ -1574,49 +1559,40 @@ msgid "Search Help" msgstr "Пошук довідки" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "Нормальний перегляд" +msgstr "Показати усе" #: editor/editor_help_search.cpp -#, fuzzy 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 "Властивості" +msgstr "Лише властивості теми" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "Члени" +msgstr "Тип члена" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "Клас:" +msgstr "Клас" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" @@ -1715,6 +1691,12 @@ msgstr "Ця операція не може бути виконана без к #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -1723,7 +1705,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "Неможливо перезаписати сцену, яка є ще відкритою!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1982,13 +1964,12 @@ msgid "Unable to load addon script from path: '%s'." msgstr "Неможливо завантажити доповнення скрипт зі шляху: '%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 "" -"Неможливо завантажити скрипт доповнення з шляху: '%s' Скрипт не в режимі " -"інструменту." +"Неможливо завантажити скрипт доповнення з шляху «%s». Здається, у коді є " +"помилка, будь ласка, перевірте синтаксис." #: editor/editor_node.cpp msgid "" @@ -2043,9 +2024,8 @@ 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 msgid "Play This Scene" @@ -2128,7 +2108,6 @@ msgid "Save Scene" msgstr "Зберегти сцену" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" msgstr "Зберегти всі сцени" @@ -2158,7 +2137,7 @@ msgid "Undo" msgstr "Скасувати" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "Повернути" @@ -2615,6 +2594,9 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"Неможливо створити ViewportTexture на основі ресурсів, які збережено як " +"файл.\n" +"Ресурс має належати до сцени." #: editor/editor_properties.cpp msgid "" @@ -2623,6 +2605,10 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" +"Неможливо створити ViewportTexture на основі цього ресурсу, оскільки його не " +"встановлено як локальний щодо сцени.\n" +"Будь ласка, увімкніть властивість «Локальний щодо сцени» для нього (і усіх " +"ресурсів, що його містять, аж до вузла)." #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -2939,9 +2925,8 @@ msgstr "" "тип кешу!" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" -msgstr "Вибране:" +msgstr "Вибране" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" @@ -3027,14 +3012,12 @@ msgid "Instance" msgstr "Екземпляр" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to favorites" -msgstr "Вибране:" +msgstr "Додати до вибраного" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "Вилучити з групи" +msgstr "Вилучити з вибраного" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3065,12 +3048,10 @@ msgid "New Resource..." msgstr "Створити ресурс…" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Expand All" msgstr "Розгорнути все" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" msgstr "Згорнути все" @@ -3094,9 +3075,8 @@ msgid "Re-Scan Filesystem" msgstr "Пересканування файлової системи" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle split mode" -msgstr "Режим Перемикання" +msgstr "Перемкнути режим поділу" #: editor/filesystem_dock.cpp msgid "Search files" @@ -3128,27 +3108,23 @@ msgstr "Перезаписати" #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "Create Script" -msgstr "Створити сценарій" +msgstr "Створити скрипт" #: editor/find_in_files.cpp -#, fuzzy msgid "Find in Files" msgstr "Знайти у файлах" #: editor/find_in_files.cpp -#, fuzzy msgid "Find:" -msgstr "Знайти: " +msgstr "Знайти:" #: editor/find_in_files.cpp -#, fuzzy msgid "Folder:" -msgstr "Тека: " +msgstr "Тека:" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "Фільтр: " +msgstr "Фільтри:" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3325,12 +3301,10 @@ msgid "Failed to load resource." msgstr "Не вдалося завантажити ресурс." #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" msgstr "Розгорнути всі властивості" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" msgstr "Згорнути всі властивості" @@ -4289,9 +4263,8 @@ msgid "Resize CanvasItem" msgstr "Змінити розмір CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem" -msgstr "Обертати CanvasItem" +msgstr "Масштабувати CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move CanvasItem" @@ -4356,9 +4329,8 @@ msgid "Rotate Mode" msgstr "Режим повороту" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Mode" -msgstr "Режим масштабування (R)" +msgstr "Режим масштабування" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -4457,9 +4429,8 @@ msgid "Restores the object's children's ability to be selected." msgstr "Відновлює можливість вибору нащадків об'єкта." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Skeleton Options" -msgstr "Каркас" +msgstr "Параметри каркаса" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -4513,7 +4484,7 @@ msgstr "Показати панель перегляду" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "Показати піктограми групування та блокування" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -4955,9 +4926,8 @@ msgid "Create Navigation Polygon" msgstr "Створення навігаційного полігону" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" -msgstr "Створити область видимості" +msgstr "Створення області видимості" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" @@ -5436,7 +5406,6 @@ msgid "Error writing TextFile:" msgstr "Помилка під час спроби записати TextFile:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error: could not load file." msgstr "Помилка: не вдалося завантажити файл." @@ -5510,11 +5479,11 @@ msgstr "Перемістити вниз" #: editor/plugins/script_editor_plugin.cpp msgid "Next script" -msgstr "Наступний сценарій" +msgstr "Наступний скрипт" #: editor/plugins/script_editor_plugin.cpp msgid "Previous script" -msgstr "Попередній сценарій" +msgstr "Попередній скрипт" #: editor/plugins/script_editor_plugin.cpp msgid "File" @@ -5530,16 +5499,15 @@ msgstr "Зберегти все" #: editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" -msgstr "М'яко перезавантажити сценарії" +msgstr "М'яко перезавантажити скрипт" #: editor/plugins/script_editor_plugin.cpp msgid "Copy Script Path" msgstr "Копіювати шлях до скрипту" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "History Previous" -msgstr "Попередній файл" +msgstr "Попередній у журналі" #: editor/plugins/script_editor_plugin.cpp msgid "History Next" @@ -5580,7 +5548,7 @@ msgstr "Запустити" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" -msgstr "Перемкнути панель сценаріїв" +msgstr "Перемкнути панель скриптів" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -5609,7 +5577,6 @@ msgid "Keep Debugger Open" msgstr "Залишити зневаджувач відкритим" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" msgstr "Зневадження за допомогою зовнішнього редактора" @@ -5654,7 +5621,6 @@ msgid "Debugger" msgstr "Зневаджувач" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" msgstr "Результати пошуку" @@ -5667,9 +5633,8 @@ msgid "(ignore)" 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." @@ -5758,12 +5723,10 @@ msgid "Trim Trailing Whitespace" msgstr "Обрізати кінцевий пробіл" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" msgstr "Перетворити відступ на пропуски" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" msgstr "Перетворити відступ на табуляції" @@ -5781,12 +5744,10 @@ msgid "Remove All Breakpoints" msgstr "Вилучити всі точки зупинки" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" msgstr "Перейти до наступної точки зупинки" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" msgstr "Перейти до попередньої точки зупинки" @@ -5795,17 +5756,14 @@ msgid "Find Previous" msgstr "Знайти попереднє" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." msgstr "Знайти у файлах…" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "Перейти до функції..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." msgstr "Перейти до рядка..." @@ -5898,13 +5856,12 @@ msgid "Animation Key Inserted." msgstr "Вставлено ключ анімації." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Pitch" -msgstr "Перемикач" +msgstr "Хилитання" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "Відхилення" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -6071,9 +6028,8 @@ msgid "Freelook Speed Modifier" msgstr "Коефіцієнт швидкості огляду" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" -msgstr "Зафіксувати обертання перегляду" +msgstr "Обертання перегляду заблоковано" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" @@ -6577,9 +6533,8 @@ msgid "Fix Invalid Tiles" msgstr "Виправити некоректні плитки" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "Центрувати на вибраному" +msgstr "Вирізати позначене" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -6626,32 +6581,28 @@ msgid "Pick Tile" msgstr "Вибрати плитку" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "Пересунути позначене" +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" -msgstr "" +msgstr "Відзеркалити горизонтально" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +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" @@ -6682,7 +6633,6 @@ msgid "Display tile's names (hold Alt Key)" msgstr "Показувати назви плиток (якщо утримують клавішу Alt)" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture and ALL TILES which use it?" msgstr "Вилучити позначену текстуру і усі плитки, у яких її використано?" @@ -6699,9 +6649,8 @@ msgid "Merge from scene?" msgstr "Об'єднати зі сцени?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "%s file(s) were not added because was already on the list." -msgstr " файлів не додано, оскільки вони вже були у списку." +msgstr "%s файлів не додано, оскільки вони вже були у списку." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -6790,12 +6739,11 @@ msgstr "" #: editor/project_export.cpp msgid "Release" -msgstr "" +msgstr "Випуск" #: editor/project_export.cpp -#, fuzzy msgid "Exporting All" -msgstr "Експортування" +msgstr "Експортування усього" #: editor/project_export.cpp msgid "Presets" @@ -6806,9 +6754,8 @@ msgid "Add..." msgstr "Додати..." #: editor/project_export.cpp -#, fuzzy msgid "Export Path:" -msgstr "Експортувати проект" +msgstr "Шлях експорту:" #: editor/project_export.cpp msgid "Resources" @@ -6873,14 +6820,12 @@ msgid "Export PCK/Zip" msgstr "Експортувати PCK/Zip" #: editor/project_export.cpp -#, fuzzy msgid "Export mode?" -msgstr "Режим експортування:" +msgstr "Режим експортування?" #: editor/project_export.cpp -#, fuzzy msgid "Export All" -msgstr "Експортування" +msgstr "Експортувати усе" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" @@ -7569,7 +7514,6 @@ msgid "Step" msgstr "Крок" #: editor/rename_dialog.cpp -#, fuzzy msgid "Amount by which counter is incremented for each node" msgstr "Величина, на яку збільшується значення лічильника для кожного вузла" @@ -7578,7 +7522,6 @@ msgid "Padding" msgstr "Фаска" #: editor/rename_dialog.cpp -#, fuzzy msgid "" "Minimum number of digits for the counter.\n" "Missing digits are padded with leading zeros." @@ -7727,6 +7670,8 @@ msgid "" "Disabling \"editable_instance\" will cause all properties of the node to be " "reverted to their default." msgstr "" +"Вимикання «editable_instance» призведе до повернення типових значень для " +"усіх властивостей вузла." #: editor/scene_tree_dock.cpp msgid "Editable Children" @@ -7801,9 +7746,8 @@ msgid "Clear Inheritance" msgstr "Усунути успадкування" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open documentation" -msgstr "Відкрити онлайнову документацію Godot" +msgstr "Відкрити документацію" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)" @@ -7818,9 +7762,8 @@ msgid "Change Type" msgstr "Змінити тип" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" -msgstr "Відкрити сценарій" +msgstr "Розширити скрипт" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" @@ -7908,7 +7851,7 @@ msgstr "" #: editor/scene_tree_editor.cpp editor/script_create_dialog.cpp msgid "Open Script" -msgstr "Відкрити сценарій" +msgstr "Відкрити скрипт" #: editor/scene_tree_editor.cpp msgid "" @@ -7983,9 +7926,8 @@ msgid "Path is empty" msgstr "Порожній шлях" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty" -msgstr "Спрайт порожній!" +msgstr "Назва файла є порожньою" #: editor/script_create_dialog.cpp msgid "Path is not local" @@ -8076,9 +8018,8 @@ msgid "Bytes:" msgstr "Байтів:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Stack Trace" -msgstr "Стосувати кадри" +msgstr "Трасування стека" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." @@ -8528,7 +8469,7 @@ msgstr "Кінець трасування стека для внутрішньо #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "" +msgstr "Запекти NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -8912,12 +8853,11 @@ msgstr "Шукати VisualScript" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "Отримати %s" #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Set %s" -msgstr "Встановити " +msgstr "Встановити %s" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -9015,6 +8955,8 @@ msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Анімація CPUParticles2D потребує використання CanvasItemMaterial із " +"увімкненим параметром «Анімація часток»." #: scene/2d/light_2d.cpp msgid "" @@ -9072,6 +9014,8 @@ msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Анімація Particles2D потребує використання CanvasItemMaterial із увімкненим " +"параметром «Анімація часток»." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -9217,15 +9161,16 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." -msgstr "" -"Нічого не видно, оскільки сітки не було пов'язано із проходами малювання." +msgid "Nothing is visible because no mesh has been assigned." +msgstr "Нічого не видно, оскільки не призначено сітки." #: scene/3d/cpu_particles.cpp msgid "" "CPUParticles animation requires the usage of a SpatialMaterial with " "\"Billboard Particles\" enabled." msgstr "" +"Анімація CPUParticles потребує використання SpatialMaterial із увімкненим " +"параметром «Частки дошки»." #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -9234,8 +9179,8 @@ msgstr "Побудова сітки" #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." msgstr "" -"Ресурс Навігаційна сітка повинен бути встановлений або створений для роботи " -"цього вузла." +"Для роботи цього вузла слід встановити або створити ресурс «Навігаційна " +"сітка»." #: scene/3d/navigation_mesh.cpp msgid "" @@ -9256,20 +9201,21 @@ msgid "" "Particles animation requires the usage of a SpatialMaterial with \"Billboard " "Particles\" enabled." msgstr "" +"Анімація часток потребує використання SpatialMaterial із увімкненим " +"параметром «Частки дошки»." #: scene/3d/path.cpp -#, fuzzy msgid "PathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D працюватиме лише як дочірній елемент вузла Path2D." +msgstr "PathFollow працюватиме лише як дочірній елемент вузла Path." #: scene/3d/path.cpp -#, fuzzy msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D працюватиме лише як дочірній елемент вузла Path2D." +msgstr "OrientedPathFollow працюватиме лише як дочірній елемент вузла Path." #: scene/3d/path.cpp msgid "OrientedPathFollow requires up vectors enabled in its parent Path." msgstr "" +"OrientedPathFollow потребує вмикання векторів у його батьківському Path." #: scene/3d/physics_body.cpp msgid "" @@ -9312,7 +9258,6 @@ msgid "This body will be ignored until you set a mesh" msgstr "Це тіло буде проігноровано, аж доки ви не встановите сітку" #: scene/3d/soft_body.cpp -#, fuzzy msgid "" "Size changes to SoftBody will be overridden by the physics engine when " "running.\n" @@ -9402,7 +9347,7 @@ msgstr "" #: scene/gui/range.cpp msgid "If exp_edit is true min_value must be > 0." -msgstr "" +msgstr "Якщо exp_edit має значення true, min_value має бути > 0." #: scene/gui/scroll_container.cpp msgid "" @@ -9479,6 +9424,9 @@ msgstr "Призначення однорідного." msgid "Varyings can only be assigned in vertex function." msgstr "Змінні величини можна пов'язувати лише із функцією вузлів." +#~ msgid "Zoom:" +#~ msgstr "Масштаб:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "Ви справді хочете вилучити усі з'єднання з сигналу \"" diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index eb509e1a82..688f386b3c 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -540,7 +540,7 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -msgid "Zoom:" +msgid "Font Size:" msgstr "" #: editor/code_editor.cpp @@ -1673,6 +1673,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2071,7 +2077,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -8955,7 +8961,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp diff --git a/editor/translations/vi.po b/editor/translations/vi.po index 950964a00c..f6e694d4e5 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -557,9 +557,8 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Zoom:" -msgstr "Phóng to" +msgid "Font Size:" +msgstr "" #: editor/code_editor.cpp msgid "Line:" @@ -1705,6 +1704,12 @@ msgstr "" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2110,7 +2115,7 @@ msgid "Undo" msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "" @@ -9012,7 +9017,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9239,6 +9244,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "Phóng to" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "Bạn có chắc muốn xóa bỏ tất cả kết nối từ \"" diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index 169c31c1c3..512589d2df 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -13,7 +13,7 @@ # Geequlim <geequlim@gmail.com>, 2016-2018. # jie Shi <meishijiemeimeimei@gmail.com>, 2018. # Jingtian Pan <panjingtian@126.com>, 2018. -# lalalaring <783482203@qq.com>, 2017. +# lalalaring <783482203@qq.com>, 2017, 2018. # Luo Jun <vipsbpig@gmail.com>, 2016-2017, 2018. # oberon-tonya <360119124@qq.com>, 2016. # plumsky <x-wolf@163.com>, 2018. @@ -34,12 +34,14 @@ # 刘庆文 <liuqingwen@163.com>, 2018. # Haowen Liu <liu.haowen.andy@gmail.com>, 2018. # tangdou1 <1093505442@qq.com>, 2018. +# yzt <834950797@qq.com>, 2018. +# DKLost <514dklost@gmail.com>, 2018. msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2018-11-26 16:10+0000\n" -"Last-Translator: Luo Jun <vipsbpig@gmail.com>\n" +"PO-Revision-Date: 2018-12-04 05:19+0000\n" +"Last-Translator: tangdou1 <1093505442@qq.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hans/>\n" "Language: zh_CN\n" @@ -47,7 +49,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 3.3-dev\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -228,7 +230,7 @@ msgstr "触发器" #: editor/animation_track_editor.cpp msgid "Capture" -msgstr "捕获" +msgstr "截图" #: editor/animation_track_editor.cpp msgid "Nearest" @@ -425,14 +427,12 @@ msgid "Delete Selection" msgstr "删除已选中项" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" msgstr "前往下一步" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" -msgstr "前往上一步" +msgstr "返回上一步" #: editor/animation_track_editor.cpp msgid "Optimize Animation" @@ -571,8 +571,9 @@ msgid "Warnings:" msgstr "警告:" #: editor/code_editor.cpp -msgid "Zoom:" -msgstr "缩放:" +#, fuzzy +msgid "Font Size:" +msgstr "源字体大小:" #: editor/code_editor.cpp msgid "Line:" @@ -683,9 +684,8 @@ msgid "Edit Connection: " msgstr "编辑广播订阅: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "你确定要从该广播信号中移除所有连接吗?" +msgstr "你确定要从信号 “%s” 中移除所有连接吗?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -833,9 +833,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" @@ -1313,24 +1312,21 @@ 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/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..." @@ -1354,7 +1350,7 @@ msgstr "打开单个文件" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open File(s)" -msgstr "打开文件" +msgstr "打开一个或多个文件" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open a Directory" @@ -1473,19 +1469,16 @@ msgid "Methods" msgstr "方法" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "方法" +msgstr "方法:" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "属性" +msgstr "主题属性" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "属性:" +msgstr "Theme Properties:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1512,14 +1505,12 @@ msgid "Constants:" msgstr "常量:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "描述" +msgstr "类说明" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "描述:" +msgstr "类说明:" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1535,14 +1526,12 @@ msgstr "" "url][/color]的方式帮助我们完善文档。" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" -msgstr "属性描述:" +msgstr "属性说明" #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions:" -msgstr "属性描述:" +msgstr "属性说明:" #: editor/editor_help.cpp msgid "" @@ -1553,14 +1542,12 @@ msgstr "" "[/color]!" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "方法描述:" +msgstr "方法说明" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions:" -msgstr "方法描述:" +msgstr "方法说明:" #: editor/editor_help.cpp msgid "" @@ -1576,49 +1563,40 @@ msgid "Search Help" msgstr "搜索帮助" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "显示法线" +msgstr "全部显示" #: editor/editor_help_search.cpp -#, fuzzy 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 "属性" +msgstr "仅主题属性" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "成员" +msgstr "成员类型" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "类:" +msgstr "类" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" @@ -1717,13 +1695,19 @@ msgstr "此操作必须在打开一个场景后才能执行。" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "无法保存场景,依赖项(实例或基类)验证失败。" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "无法覆盖仍处于打开状态的场景!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1967,11 +1951,10 @@ msgid "Unable to load addon script from path: '%s'." msgstr "无法从路径中加载插件脚本: \"%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 "无法从路径加载插件脚本: \"%s\" 脚本不在工具模式下。" +msgstr "无法从路径加载插件脚本: ‘%s’ 脚本看上去似乎有代码错误,请检查其语法。" #: editor/editor_node.cpp msgid "" @@ -2020,9 +2003,8 @@ 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 msgid "Play This Scene" @@ -2050,7 +2032,7 @@ msgstr "%d 个文件未展示" #: editor/editor_node.cpp msgid "Dock Position" -msgstr "停靠区位置" +msgstr "面板位置" #: editor/editor_node.cpp msgid "Distraction Free Mode" @@ -2105,7 +2087,6 @@ msgid "Save Scene" msgstr "保存场景" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" msgstr "保存所有场景" @@ -2135,7 +2116,7 @@ msgid "Undo" msgstr "撤销" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "重做" @@ -2161,7 +2142,7 @@ msgstr "导出" #: editor/editor_node.cpp msgid "Tools" -msgstr "工具(tools)" +msgstr "工具" #: editor/editor_node.cpp msgid "Open Project Data Folder" @@ -2582,6 +2563,8 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"无法在保存为文件的资源上创建视图纹理。\n" +"资源需要属于场景。" #: editor/editor_properties.cpp msgid "" @@ -2590,6 +2573,8 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" +"无法在此资源上创建视图纹理, 因为它未设置为本地到场景。\n" +"请打开上面的 `本地到场景` 属性 (以及包含它的所有资源到节点)。" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -2771,7 +2756,7 @@ msgstr "导入:" 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 @@ -2900,9 +2885,8 @@ msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" msgstr "无法以可写方式打开file_type_cache.cch!" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" -msgstr "收藏:" +msgstr "收藏夹" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" @@ -2985,14 +2969,12 @@ msgid "Instance" msgstr "创建实例节点" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to favorites" -msgstr "收藏:" +msgstr "添加到收藏夹" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "从分组中移除" +msgstr "从收藏夹中删除" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3023,14 +3005,12 @@ msgid "New Resource..." msgstr "新建资源…" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Expand All" -msgstr "展开所有" +msgstr "全部展开" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" -msgstr "收起所有" +msgstr "全部折叠" #: editor/filesystem_dock.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -3052,9 +3032,8 @@ msgid "Re-Scan Filesystem" msgstr "重新扫描文件系统" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle split mode" -msgstr "切换模式" +msgstr "切换拆分模式" #: editor/filesystem_dock.cpp msgid "Search files" @@ -3089,24 +3068,20 @@ msgid "Create Script" msgstr "创建脚本" #: editor/find_in_files.cpp -#, fuzzy msgid "Find in Files" msgstr "在文件中查找" #: editor/find_in_files.cpp -#, fuzzy msgid "Find:" -msgstr "查找: " +msgstr "查找:" #: editor/find_in_files.cpp -#, fuzzy msgid "Folder:" -msgstr "文件夹: " +msgstr "文件夹:" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "筛选" +msgstr "筛选:" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3207,7 +3182,7 @@ msgstr "与独立的材质和动画一同导入" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials+Animations" -msgstr "导入独立的物体、材质和动画" +msgstr "使用单独的对象 + 材质 + 动画导入" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes" @@ -3283,14 +3258,12 @@ msgid "Failed to load resource." msgstr "加载资源失败。" #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" msgstr "展开所有属性" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" -msgstr "收起所有属性" +msgstr "折叠所有属性" #: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/script_editor_plugin.cpp @@ -4228,9 +4201,8 @@ msgid "Resize CanvasItem" msgstr "调整 CanvasItem 尺寸" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem" -msgstr "旋转 CanvasItem" +msgstr "缩放包含项" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move CanvasItem" @@ -4293,9 +4265,8 @@ msgid "Rotate Mode" msgstr "旋转模式" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Mode" -msgstr "缩放模式(R)" +msgstr "缩放模式" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -4392,9 +4363,8 @@ msgid "Restores the object's children's ability to be selected." msgstr "恢复节点的子孙能够被选中。" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Skeleton Options" -msgstr "骨架" +msgstr "骨架选项" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -4448,7 +4418,7 @@ msgstr "显示视图窗口" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "显示组和锁定图标" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -4889,7 +4859,6 @@ msgid "Create Navigation Polygon" msgstr "创建导航多边形" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" msgstr "生成可视化区域" @@ -5208,7 +5177,7 @@ msgstr "移动点" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" -msgstr "Ctrl:旋转" +msgstr "Ctrl:旋转" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" @@ -5369,9 +5338,8 @@ msgid "Error writing TextFile:" msgstr "写入文本文件时出错:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error: could not load file." -msgstr "错误,无法加载文件。" +msgstr "错误:无法加载文件。" #: editor/plugins/script_editor_plugin.cpp msgid "Error could not load file." @@ -5470,7 +5438,6 @@ msgid "Copy Script Path" msgstr "拷贝脚本路径" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "History Previous" msgstr "后退" @@ -5542,7 +5509,6 @@ msgid "Keep Debugger Open" msgstr "保持调试器打开" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" msgstr "使用外部编辑器进行调试" @@ -5587,7 +5553,6 @@ msgid "Debugger" msgstr "调试器" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" msgstr "搜索结果" @@ -5600,9 +5565,8 @@ msgid "(ignore)" 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." @@ -5691,14 +5655,12 @@ msgid "Trim Trailing Whitespace" msgstr "修剪行后空白" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" msgstr "将缩进转为空格" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" -msgstr "将缩进转为Tab" +msgstr "将缩进转为Tabs" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" @@ -5714,12 +5676,10 @@ msgid "Remove All Breakpoints" msgstr "移除所有断点" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" msgstr "前往下一个断点" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" msgstr "前往上一个断点" @@ -5728,19 +5688,16 @@ msgid "Find Previous" msgstr "查找上一项" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." 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 msgid "Contextual Help" @@ -5836,7 +5793,7 @@ msgstr "音调" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "偏航" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -6003,7 +5960,6 @@ msgid "Freelook Speed Modifier" msgstr "自由视图速度调整" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" msgstr "锁定视角旋转" @@ -6507,9 +6463,8 @@ msgid "Fix Invalid Tiles" msgstr "修复无效的瓦片" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "居中显示选中节点" +msgstr "切割选择" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -6556,32 +6511,28 @@ msgid "Pick Tile" msgstr "选择砖块(Tile)" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "移动选中项" +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" -msgstr "" +msgstr "水平翻转" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +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" @@ -6611,7 +6562,6 @@ msgid "Display tile's names (hold Alt Key)" msgstr "显示瓦片的名字(按住 Alt 键)" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture and ALL TILES which use it?" msgstr "确定移除选中的纹理以及【所有】使用它的【瓦片集】吗?" @@ -6628,9 +6578,8 @@ msgid "Merge from scene?" msgstr "确定要合并场景?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "%s file(s) were not added because was already on the list." -msgstr " 文件没有被添加,因为已添加在列表中。" +msgstr "%s 文件没有被添加,因为已添加在列表中。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -6716,14 +6665,12 @@ msgid "Export templates for this platform are missing/corrupted:" msgstr "没有此平台的导出模板:" #: editor/project_export.cpp -#, fuzzy msgid "Release" -msgstr "刚好释放" +msgstr "发行" #: editor/project_export.cpp -#, fuzzy msgid "Exporting All" -msgstr "正在导出 %s" +msgstr "全部导出" #: editor/project_export.cpp msgid "Presets" @@ -6734,9 +6681,8 @@ msgid "Add..." msgstr "添加..." #: editor/project_export.cpp -#, fuzzy msgid "Export Path:" -msgstr "导出预设:" +msgstr "导出路径:" #: editor/project_export.cpp msgid "Resources" @@ -6797,14 +6743,12 @@ msgid "Export PCK/Zip" msgstr "导出 PCK/ZIP" #: editor/project_export.cpp -#, fuzzy msgid "Export mode?" -msgstr "导出模式:" +msgstr "导出模式?" #: editor/project_export.cpp -#, fuzzy msgid "Export All" -msgstr "导出" +msgstr "全部导出" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" @@ -7482,7 +7426,6 @@ msgid "Step" msgstr "步长" #: editor/rename_dialog.cpp -#, fuzzy msgid "Amount by which counter is incremented for each node" msgstr "由计数器增量得到的每个节点的总量" @@ -7491,7 +7434,6 @@ msgid "Padding" msgstr "内边距" #: editor/rename_dialog.cpp -#, fuzzy msgid "" "Minimum number of digits for the counter.\n" "Missing digits are padded with leading zeros." @@ -7637,7 +7579,7 @@ msgstr "将新场景另存为..." msgid "" "Disabling \"editable_instance\" will cause all properties of the node to be " "reverted to their default." -msgstr "" +msgstr "禁用“可编辑实例”将导致节点的所有属性恢复为其默认值。" #: editor/scene_tree_dock.cpp msgid "Editable Children" @@ -7710,9 +7652,8 @@ msgid "Clear Inheritance" msgstr "清除继承" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open documentation" -msgstr "打开Godot在线文档" +msgstr "打开Godot文档" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)" @@ -7727,7 +7668,6 @@ msgid "Change Type" msgstr "更改类型" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" msgstr "打开脚本" @@ -7890,9 +7830,8 @@ msgid "Path is empty" msgstr "文件路径为空" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty" -msgstr "Sprite 是空的!" +msgstr "文件名为空" #: editor/script_create_dialog.cpp msgid "Path is not local" @@ -7983,9 +7922,8 @@ msgid "Bytes:" msgstr "字节:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Stack Trace" -msgstr "堆栈帧(Stack Frames)" +msgstr "栈追踪" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." @@ -8433,7 +8371,7 @@ msgstr "内部异常堆栈追朔结束" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "" +msgstr "烘焙导航网" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -8806,12 +8744,11 @@ msgstr "搜索可视化脚本节点" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "得到 %s" #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Set %s" -msgstr "设值 " +msgstr "设值 %s" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -8903,7 +8840,7 @@ msgstr "形状资源必须是通过CollisionShape2D节点的shape属性创建的 msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." -msgstr "" +msgstr "CPUParticles2D动画需要使用启用了“粒子动画”的CanvasItemMaterial。" #: scene/2d/light_2d.cpp msgid "" @@ -8951,7 +8888,7 @@ msgstr "粒子材质没有指定,该行为无效。" msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." -msgstr "" +msgstr "Particles2D 动画需要使用启用了“粒子动画”的CanvasItemMaterial。" #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -9084,14 +9021,14 @@ msgstr "" #: scene/3d/cpu_particles.cpp #, fuzzy -msgid "Nothing is visible because no mesh has not been assigned." -msgstr "粒子不可见,因为没有网格(meshe)指定到绘制通道(draw passes)。" +msgid "Nothing is visible because no mesh has been assigned." +msgstr "无物可见,因为没有未被分配的网格(mesh)。" #: scene/3d/cpu_particles.cpp msgid "" "CPUParticles animation requires the usage of a SpatialMaterial with " "\"Billboard Particles\" enabled." -msgstr "" +msgstr "CPUParticles动画需要使用启动了“Billboard Particles”的SpatialMaterial。" #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -9117,21 +9054,20 @@ msgstr "粒子不可见,因为没有网格(meshe)指定到绘制通道(draw pa msgid "" "Particles animation requires the usage of a SpatialMaterial with \"Billboard " "Particles\" enabled." -msgstr "" +msgstr "粒子动画需要使用启用了“Billboard Particles”的SpatialMaterial。" #: scene/3d/path.cpp -#, fuzzy msgid "PathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D类型的节点只有作为Path2D的子节点节才能正常工作。" +msgstr "PathFollow类型的节点只有作为Path类型节点的子节点才能正常工作。" #: scene/3d/path.cpp -#, fuzzy msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D类型的节点只有作为Path2D的子节点节才能正常工作。" +msgstr "" +"OrientedPathFollow 类型的节点只有作为Path类型节点的子节点才能正常工作。" #: scene/3d/path.cpp msgid "OrientedPathFollow requires up vectors enabled in its parent Path." -msgstr "" +msgstr "OrientedPathFollow 需要再其父路径中启用up vectors。" #: scene/3d/physics_body.cpp msgid "" @@ -9169,7 +9105,6 @@ msgid "This body will be ignored until you set a mesh" msgstr "这个物体将被忽略,除非设置一个网格" #: scene/3d/soft_body.cpp -#, fuzzy msgid "" "Size changes to SoftBody will be overridden by the physics engine when " "running.\n" @@ -9257,7 +9192,7 @@ msgstr "" #: scene/gui/range.cpp msgid "If exp_edit is true min_value must be > 0." -msgstr "" +msgstr "如果exp_edit为true, 则min_value必须为>0。" #: scene/gui/scroll_container.cpp msgid "" @@ -9329,6 +9264,9 @@ msgstr "对uniform的赋值。" msgid "Varyings can only be assigned in vertex function." msgstr "变量只能在顶点函数中指定。" +#~ msgid "Zoom:" +#~ msgstr "缩放:" + #~ msgid "Are you sure you want to remove all connections from the \"" #~ msgstr "您确定要移除所有广播连接从 \"" @@ -10045,9 +9983,6 @@ msgstr "变量只能在顶点函数中指定。" #~ msgid "Source Font:" #~ msgstr "源字体文件:" -#~ msgid "Source Font Size:" -#~ msgstr "源字体大小:" - #~ msgid "Dest Resource:" #~ msgstr "目标资源:" diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po index 41ac16cd12..f70a7a2b2f 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -580,9 +580,8 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Zoom:" -msgstr "放大" +msgid "Font Size:" +msgstr "" #: editor/code_editor.cpp #, fuzzy @@ -1788,6 +1787,12 @@ msgstr "不能執行這個動作,因為沒有tree root." #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2215,7 +2220,7 @@ msgid "Undo" msgstr "復原" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "重製" @@ -9354,7 +9359,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9583,6 +9588,10 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Zoom:" +#~ msgstr "放大" + +#, fuzzy #~ msgid "Public Methods" #~ msgstr "選擇模式" diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po index fe162ba39e..d902a58b73 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -561,9 +561,8 @@ msgid "Warnings:" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Zoom:" -msgstr "放大" +msgid "Font Size:" +msgstr "" #: editor/code_editor.cpp msgid "Line:" @@ -1743,6 +1742,12 @@ msgstr "此操作無法復原, 確定要還原嗎?" #: editor/editor_node.cpp msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" "Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " "be satisfied." msgstr "" @@ -2151,7 +2156,7 @@ msgid "Undo" msgstr "復原" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp -#: scene/gui/line_edit.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Redo" msgstr "取消「復原」" @@ -9200,7 +9205,7 @@ msgid "" msgstr "" #: scene/3d/cpu_particles.cpp -msgid "Nothing is visible because no mesh has not been assigned." +msgid "Nothing is visible because no mesh has been assigned." msgstr "" #: scene/3d/cpu_particles.cpp @@ -9430,6 +9435,10 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Zoom:" +#~ msgstr "放大" + #~ msgid "Class List:" #~ msgstr "Class 列表:" diff --git a/main/tests/test_io.cpp b/main/tests/test_io.cpp deleted file mode 100644 index 4e43ee6a54..0000000000 --- a/main/tests/test_io.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/*************************************************************************/ -/* test_io.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2018 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 "test_io.h" - -#ifdef MINIZIP_ENABLED - -#include "core/io/resource_loader.h" -#include "core/io/resource_saver.h" -#include "core/os/dir_access.h" -#include "core/os/main_loop.h" -#include "core/os/os.h" -#include "core/print_string.h" -#include "core/project_settings.h" -#include "scene/resources/texture.h" - -#include "core/io/file_access_memory.h" - -namespace TestIO { - -class TestMainLoop : public MainLoop { - - bool quit; - -public: - virtual void input_event(const Ref<InputEvent> &p_event) { - } - virtual bool idle(float p_time) { - return false; - } - - virtual void request_quit() { - - quit = true; - } - virtual void init() { - - quit = true; - } - virtual bool iteration(float p_time) { - - return quit; - } - virtual void finish() { - } -}; - -MainLoop *test() { - - print_line("this is test io"); - DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); - da->change_dir("."); - print_line("Opening current dir " + da->get_current_dir()); - String entry; - da->list_dir_begin(); - while ((entry = da->get_next()) != "") { - - print_line("entry " + entry + " is dir: " + Variant(da->current_is_dir())); - }; - da->list_dir_end(); - - RES texture = ResourceLoader::load("test_data/rock.png"); - ERR_FAIL_COND_V(texture.is_null(), NULL); - - ResourceSaver::save("test_data/rock.xml", texture); - - print_line("localize paths"); - print_line(ProjectSettings::get_singleton()->localize_path("algo.xml")); - print_line(ProjectSettings::get_singleton()->localize_path("c:\\windows\\algo.xml")); - print_line(ProjectSettings::get_singleton()->localize_path(ProjectSettings::get_singleton()->get_resource_path() + "/something/something.xml")); - print_line(ProjectSettings::get_singleton()->localize_path("somedir/algo.xml")); - - { - - FileAccess *z = FileAccess::open("test_data/archive.zip", FileAccess::READ); - int len = z->get_len(); - Vector<uint8_t> zip; - zip.resize(len); - z->get_buffer(zip.ptrw(), len); - z->close(); - memdelete(z); - - FileAccessMemory::register_file("a_package", zip); - FileAccess::make_default<FileAccessMemory>(FileAccess::ACCESS_RESOURCES); - FileAccess::make_default<FileAccessMemory>(FileAccess::ACCESS_FILESYSTEM); - FileAccess::make_default<FileAccessMemory>(FileAccess::ACCESS_USERDATA); - - print_line("archive test"); - }; - - print_line("test done"); - - return memnew(TestMainLoop); -} -} // namespace TestIO - -#else - -namespace TestIO { - -MainLoop *test() { - - return NULL; -} -} // namespace TestIO -#endif diff --git a/main/tests/test_main.cpp b/main/tests/test_main.cpp index 714a254371..a36b619ba0 100644 --- a/main/tests/test_main.cpp +++ b/main/tests/test_main.cpp @@ -37,7 +37,6 @@ #include "test_gdscript.h" #include "test_gui.h" #include "test_image.h" -#include "test_io.h" #include "test_math.h" #include "test_oa_hash_map.h" #include "test_ordered_hash_map.h" @@ -57,7 +56,6 @@ const char **tests_get_names() { "render", "oa_hash_map", "gui", - "io", "shaderlang", "gd_tokenizer", "gd_parser", @@ -111,11 +109,6 @@ MainLoop *test_main(String p_test, const List<String> &p_args) { } #endif - if (p_test == "io") { - - return TestIO::test(); - } - if (p_test == "shaderlang") { return TestShaderLang::test(); diff --git a/misc/dist/linux/godot.6 b/misc/dist/linux/godot.6 index 50cb420e4e..43ca4e9d10 100644 --- a/misc/dist/linux/godot.6 +++ b/misc/dist/linux/godot.6 @@ -149,7 +149,7 @@ Build the scripting solutions (e.g. for C# projects). Generate JSON dump of the Godot API for GDNative bindings. .TP \fB\-\-test\fR <test> -Run a unit test ('string', 'math', 'physics', 'physics_2d', 'render', 'oa_hash_map', 'gui', 'io', 'shaderlang', 'gd_tokenizer', 'gd_parser', 'gd_compiler', 'gd_bytecode', 'image', 'ordered_hash_map'). +Run a unit test ('string', 'math', 'physics', 'physics_2d', 'render', 'oa_hash_map', 'gui', 'shaderlang', 'gd_tokenizer', 'gd_parser', 'gd_compiler', 'gd_bytecode', 'image', 'ordered_hash_map'). .SH FILES XDG_DATA_CONFIG/godot/ or ~/.config/godot/ .RS diff --git a/modules/csg/csg_shape.cpp b/modules/csg/csg_shape.cpp index a4c34e7583..4e35014459 100644 --- a/modules/csg/csg_shape.cpp +++ b/modules/csg/csg_shape.cpp @@ -47,6 +47,7 @@ void CSGShape::set_use_collision(bool p_enable) { PhysicsServer::get_singleton()->body_set_state(root_collision_instance, PhysicsServer::BODY_STATE_TRANSFORM, get_global_transform()); PhysicsServer::get_singleton()->body_add_shape(root_collision_instance, root_collision_shape->get_rid()); PhysicsServer::get_singleton()->body_set_space(root_collision_instance, get_world()->get_space()); + PhysicsServer::get_singleton()->body_attach_object_instance_id(root_collision_instance, get_instance_id()); _make_dirty(); //force update } else { PhysicsServer::get_singleton()->free(root_collision_instance); @@ -468,6 +469,7 @@ void CSGShape::_notification(int p_what) { PhysicsServer::get_singleton()->body_set_state(root_collision_instance, PhysicsServer::BODY_STATE_TRANSFORM, get_global_transform()); PhysicsServer::get_singleton()->body_add_shape(root_collision_instance, root_collision_shape->get_rid()); PhysicsServer::get_singleton()->body_set_space(root_collision_instance, get_world()->get_space()); + PhysicsServer::get_singleton()->body_attach_object_instance_id(root_collision_instance, get_instance_id()); } _make_dirty(); diff --git a/modules/mono/SCsub b/modules/mono/SCsub index 0e5dd9b4cf..e1f5e2ef28 100644 --- a/modules/mono/SCsub +++ b/modules/mono/SCsub @@ -103,6 +103,16 @@ import os def find_nuget_unix(): + import os + + if 'NUGET_PATH' in os.environ: + hint_path = os.environ['NUGET_PATH'] + if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): + return hint_path + hint_path = os.path.join(hint_path, 'nuget') + if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): + return hint_path + import os.path import sys @@ -129,6 +139,16 @@ def find_nuget_unix(): def find_nuget_windows(): + import os + + if 'NUGET_PATH' in os.environ: + hint_path = os.environ['NUGET_PATH'] + if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): + return hint_path + hint_path = os.path.join(hint_path, 'nuget.exe') + if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): + return hint_path + import mono_reg_utils as monoreg mono_root = '' @@ -160,14 +180,6 @@ def find_nuget_windows(): if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): return hint_path - if 'NUGET_PATH' in os.environ: - hint_path = os.environ['NUGET_PATH'] - if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): - return hint_path - hint_path = os.path.join(hint_path, 'nuget.exe') - if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): - return hint_path - return None diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp index 0a54ed5fbd..3c818898e6 100644 --- a/modules/mono/csharp_script.cpp +++ b/modules/mono/csharp_script.cpp @@ -50,6 +50,7 @@ #include "mono_gd/gd_mono_marshal.h" #include "signal_awaiter_utils.h" #include "utils/macros.h" +#include "utils/mutex_utils.h" #include "utils/string_utils.h" #include "utils/thread_local.h" @@ -378,60 +379,72 @@ static String variant_type_to_managed_name(const String &p_var_type_name) { return "object"; if (!ClassDB::class_exists(p_var_type_name)) { - Variant::Type var_types[] = { - Variant::BOOL, - Variant::INT, - Variant::REAL, - Variant::STRING, - Variant::VECTOR2, - Variant::RECT2, - Variant::VECTOR3, - Variant::TRANSFORM2D, - Variant::PLANE, - Variant::QUAT, - Variant::AABB, - Variant::BASIS, - Variant::TRANSFORM, - Variant::COLOR, - Variant::NODE_PATH, - Variant::_RID - }; - - for (int i = 0; i < sizeof(var_types) / sizeof(Variant::Type); i++) { - if (p_var_type_name == Variant::get_type_name(var_types[i])) - return p_var_type_name; - } + return p_var_type_name; + } + + if (p_var_type_name == Variant::get_type_name(Variant::OBJECT)) + return "Godot.Object"; - if (p_var_type_name == "String") - return "string"; // I prefer this one >:[ + if (p_var_type_name == Variant::get_type_name(Variant::REAL)) { +#ifdef REAL_T_IS_DOUBLE + return "double"; +#else + return "float"; +#endif + } - // TODO these will be rewritten later into custom containers + if (p_var_type_name == Variant::get_type_name(Variant::STRING)) + return "string"; // I prefer this one >:[ - if (p_var_type_name == "Array") - return "object[]"; + if (p_var_type_name == Variant::get_type_name(Variant::DICTIONARY)) + return "Collections.Dictionary"; - if (p_var_type_name == "Dictionary") - return "Dictionary<object, object>"; + if (p_var_type_name == Variant::get_type_name(Variant::ARRAY)) + return "Collections.Array"; - if (p_var_type_name == "PoolByteArray") - return "byte[]"; - if (p_var_type_name == "PoolIntArray") - return "int[]"; - if (p_var_type_name == "PoolRealArray") - return "float[]"; - if (p_var_type_name == "PoolStringArray") - return "string[]"; - if (p_var_type_name == "PoolVector2Array") - return "Vector2[]"; - if (p_var_type_name == "PoolVector3Array") - return "Vector3[]"; - if (p_var_type_name == "PoolColorArray") - return "Color[]"; + if (p_var_type_name == Variant::get_type_name(Variant::POOL_BYTE_ARRAY)) + return "byte[]"; + if (p_var_type_name == Variant::get_type_name(Variant::POOL_INT_ARRAY)) + return "int[]"; + if (p_var_type_name == Variant::get_type_name(Variant::POOL_REAL_ARRAY)) { +#ifdef REAL_T_IS_DOUBLE + return "double[]"; +#else + return "float[]"; +#endif + } + if (p_var_type_name == Variant::get_type_name(Variant::POOL_STRING_ARRAY)) + return "string[]"; + if (p_var_type_name == Variant::get_type_name(Variant::POOL_VECTOR2_ARRAY)) + return "Vector2[]"; + if (p_var_type_name == Variant::get_type_name(Variant::POOL_VECTOR3_ARRAY)) + return "Vector3[]"; + if (p_var_type_name == Variant::get_type_name(Variant::POOL_COLOR_ARRAY)) + return "Color[]"; + + Variant::Type var_types[] = { + Variant::BOOL, + Variant::INT, + Variant::VECTOR2, + Variant::RECT2, + Variant::VECTOR3, + Variant::TRANSFORM2D, + Variant::PLANE, + Variant::QUAT, + Variant::AABB, + Variant::BASIS, + Variant::TRANSFORM, + Variant::COLOR, + Variant::NODE_PATH, + Variant::_RID + }; - return "object"; + for (int i = 0; i < sizeof(var_types) / sizeof(Variant::Type); i++) { + if (p_var_type_name == Variant::get_type_name(var_types[i])) + return p_var_type_name; } - return p_var_type_name; + return "object"; } String CSharpLanguage::make_function(const String &, const String &p_name, const PoolStringArray &p_args) const { @@ -507,8 +520,7 @@ Vector<ScriptLanguage::StackInfo> CSharpLanguage::stack_trace_get_info(MonoObjec MonoException *exc = NULL; - GDMonoUtils::StackTrace_GetFrames st_get_frames = CACHED_METHOD_THUNK(System_Diagnostics_StackTrace, GetFrames); - MonoArray *frames = st_get_frames(p_stack_trace, (MonoObject **)&exc); + MonoArray *frames = invoke_method_thunk(CACHED_METHOD_THUNK(System_Diagnostics_StackTrace, GetFrames), p_stack_trace, (MonoObject **)&exc); if (exc) { GDMonoUtils::debug_print_unhandled_exception(exc); @@ -532,7 +544,7 @@ Vector<ScriptLanguage::StackInfo> CSharpLanguage::stack_trace_get_info(MonoObjec MonoString *file_name; int file_line_num; MonoString *method_decl; - get_sf_info(frame, &file_name, &file_line_num, &method_decl, (MonoObject **)&exc); + invoke_method_thunk(get_sf_info, frame, &file_name, &file_line_num, &method_decl, (MonoObject **)&exc); if (exc) { GDMonoUtils::debug_print_unhandled_exception(exc); @@ -561,10 +573,8 @@ void CSharpLanguage::frame() { MonoObject *task_scheduler = task_scheduler_handle->get_target(); if (task_scheduler) { - GDMonoUtils::GodotTaskScheduler_Activate thunk = CACHED_METHOD_THUNK(GodotTaskScheduler, Activate); - MonoException *exc = NULL; - thunk(task_scheduler, (MonoObject **)&exc); + invoke_method_thunk(CACHED_METHOD_THUNK(GodotTaskScheduler, Activate), task_scheduler, (MonoObject **)&exc); if (exc) { GDMonoUtils::debug_unhandled_exception(exc); @@ -599,24 +609,20 @@ void CSharpLanguage::reload_all_scripts() { #ifdef DEBUG_ENABLED -#ifndef NO_THREADS - lock->lock(); -#endif - List<Ref<CSharpScript> > scripts; - SelfList<CSharpScript> *elem = script_list.first(); - while (elem) { - if (elem->self()->get_path().is_resource_file()) { - scripts.push_back(Ref<CSharpScript>(elem->self())); //cast to gdscript to avoid being erased by accident + { + SCOPED_MUTEX_LOCK(script_instances_mutex); + + SelfList<CSharpScript> *elem = script_list.first(); + while (elem) { + if (elem->self()->get_path().is_resource_file()) { + scripts.push_back(Ref<CSharpScript>(elem->self())); //cast to gdscript to avoid being erased by accident + } + elem = elem->next(); } - elem = elem->next(); } -#ifndef NO_THREADS - lock->unlock(); -#endif - //as scripts are going to be reloaded, must proceed without locking here scripts.sort_custom<CSharpScriptDepSort>(); //update in inheritance dependency order @@ -625,6 +631,7 @@ void CSharpLanguage::reload_all_scripts() { E->get()->load_source_code(E->get()->get_path()); E->get()->reload(true); } + #endif } @@ -634,15 +641,17 @@ void CSharpLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_soft #ifdef TOOLS_ENABLED MonoReloadNode::get_singleton()->restart_reload_timer(); - reload_assemblies_if_needed(p_soft_reload); + if (is_assembly_reloading_needed()) { + reload_assemblies(p_soft_reload); + } #endif } #ifdef TOOLS_ENABLED -void CSharpLanguage::reload_assemblies_if_needed(bool p_soft_reload) { +bool CSharpLanguage::is_assembly_reloading_needed() { if (!gdmono->is_runtime_initialized()) - return; + return false; GDMonoAssembly *proj_assembly = gdmono->get_project_assembly(); @@ -660,164 +669,208 @@ void CSharpLanguage::reload_assemblies_if_needed(bool p_soft_reload) { // Maybe it wasn't loaded from the default path, so check this as well proj_asm_path = GodotSharpDirs::get_res_temp_assemblies_dir().plus_file(name); if (!FileAccess::exists(proj_asm_path)) - return; // No assembly to load + return false; // No assembly to load } if (FileAccess::get_modified_time(proj_asm_path) <= proj_assembly->get_modified_time()) - return; // Already up to date + return false; // Already up to date } else { if (!FileAccess::exists(GodotSharpDirs::get_res_temp_assemblies_dir().plus_file(name))) - return; // No assembly to load + return false; // No assembly to load } if (!gdmono->get_core_api_assembly() && gdmono->metadata_is_api_assembly_invalidated(APIAssembly::API_CORE)) - return; // The core API assembly to load is invalidated + return false; // The core API assembly to load is invalidated if (!gdmono->get_editor_api_assembly() && gdmono->metadata_is_api_assembly_invalidated(APIAssembly::API_EDITOR)) - return; // The editor API assembly to load is invalidated + return false; // The editor API assembly to load is invalidated -#ifndef NO_THREADS - lock->lock(); -#endif + return true; +} + +void CSharpLanguage::reload_assemblies(bool p_soft_reload) { + + if (!gdmono->is_runtime_initialized()) + return; + + // There is no soft reloading with Mono. It's always hard reloading. List<Ref<CSharpScript> > scripts; - SelfList<CSharpScript> *elem = script_list.first(); - while (elem) { - if (elem->self()->get_path().is_resource_file()) { + { + SCOPED_MUTEX_LOCK(script_instances_mutex); - scripts.push_back(Ref<CSharpScript>(elem->self())); //cast to CSharpScript to avoid being erased by accident + for (SelfList<CSharpScript> *elem = script_list.first(); elem; elem = elem->next()) { + if (elem->self()->get_path().is_resource_file()) { + // Cast to CSharpScript to avoid being erased by accident + scripts.push_back(Ref<CSharpScript>(elem->self())); + } } - elem = elem->next(); } -#ifndef NO_THREADS - lock->unlock(); -#endif + List<Ref<CSharpScript> > to_reload; - //when someone asks you why dynamically typed languages are easier to write.... + // As scripts are going to be reloaded, must proceed without locking here - Map<Ref<CSharpScript>, Map<ObjectID, List<Pair<StringName, Variant> > > > to_reload; + scripts.sort_custom<CSharpScriptDepSort>(); // Update in inheritance dependency order - //as scripts are going to be reloaded, must proceed without locking here + for (List<Ref<CSharpScript> >::Element *E = scripts.front(); E; E = E->next()) { - scripts.sort_custom<CSharpScriptDepSort>(); //update in inheritance dependency order + Ref<CSharpScript> &script = E->get(); - for (List<Ref<CSharpScript> >::Element *E = scripts.front(); E; E = E->next()) { + to_reload.push_back(script); - to_reload.insert(E->get(), Map<ObjectID, List<Pair<StringName, Variant> > >()); + // Script::instances are deleted during managed object disposal, which happens on domain finalize. + // Only placeholders are kept. Therefore we need to keep a copy before that happens. - if (!p_soft_reload) { + for (Set<Object *>::Element *E = script->instances.front(); E; E = E->next()) { + script->pending_reload_instances.insert(E->get()->get_instance_id()); + } - //save state and remove script from instances - Map<ObjectID, List<Pair<StringName, Variant> > > &map = to_reload[E->get()]; +#ifdef TOOLS_ENABLED + for (Set<PlaceHolderScriptInstance *>::Element *E = script->placeholders.front(); E; E = E->next()) { + script->pending_reload_instances.insert(E->get()->get_owner()->get_instance_id()); + } +#endif - while (E->get()->instances.front()) { - Object *obj = E->get()->instances.front()->get(); - //save instance info - List<Pair<StringName, Variant> > state; - if (obj->get_script_instance()) { + // FIXME: What about references? Need to keep them alive if only managed code references them. - obj->get_script_instance()->get_property_state(state); + // Save state and remove script from instances + Map<ObjectID, CSharpScript::StateBackup> &owners_map = script->pending_reload_state; - Ref<MonoGCHandle> gchandle = CAST_CSHARP_INSTANCE(obj->get_script_instance())->gchandle; - if (gchandle.is_valid()) - gchandle->release(); + while (script->instances.front()) { + Object *obj = script->instances.front()->get(); + // Save instance info + CSharpScript::StateBackup state; - map[obj->get_instance_id()] = state; - obj->set_script(RefPtr()); - } - } + ERR_CONTINUE(!obj->get_script_instance()); - //same thing for placeholders - while (E->get()->placeholders.size()) { - - Object *obj = E->get()->placeholders.front()->get()->get_owner(); - //save instance info - List<Pair<StringName, Variant> > state; - if (obj->get_script_instance()) { - obj->get_script_instance()->get_property_state(state); - map[obj->get_instance_id()] = state; - obj->set_script(RefPtr()); - } else { - // no instance found. Let's remove it so we don't loop forever - E->get()->placeholders.erase(E->get()->placeholders.front()->get()); - } - } + // TODO: Proper state backup (Not only variants, serialize managed state of scripts) + obj->get_script_instance()->get_property_state(state.properties); - for (Map<ObjectID, List<Pair<StringName, Variant> > >::Element *F = E->get()->pending_reload_state.front(); F; F = F->next()) { - map[F->key()] = F->get(); //pending to reload, use this one instead - } + Ref<MonoGCHandle> gchandle = CAST_CSHARP_INSTANCE(obj->get_script_instance())->gchandle; + if (gchandle.is_valid()) + gchandle->release(); - E->get()->_clear(); + owners_map[obj->get_instance_id()] = state; + obj->set_script(RefPtr()); // Remove script and existing script instances (placeholder are not removed before domain reload) } + + script->_clear(); } + // Do domain reload if (gdmono->reload_scripts_domain() != OK) { // Failed to reload the scripts domain // Make sure to add the scripts back to their owners before returning - for (Map<Ref<CSharpScript>, Map<ObjectID, List<Pair<StringName, Variant> > > >::Element *E = to_reload.front(); E; E = E->next()) { - Ref<CSharpScript> scr = E->key(); - for (Map<ObjectID, List<Pair<StringName, Variant> > >::Element *F = E->get().front(); F; F = F->next()) { + for (List<Ref<CSharpScript> >::Element *E = to_reload.front(); E; E = E->next()) { + Ref<CSharpScript> scr = E->get(); + + for (const Map<ObjectID, CSharpScript::StateBackup>::Element *F = scr->pending_reload_state.front(); F; F = F->next()) { Object *obj = ObjectDB::get_instance(F->key()); + if (!obj) continue; + + ObjectID obj_id = obj->get_instance_id(); + + // Use a placeholder for now to avoid losing the state when saving a scene + obj->set_script(scr.get_ref_ptr()); - // Save reload state for next time if not saved - if (!scr->pending_reload_state.has(obj->get_instance_id())) { - scr->pending_reload_state[obj->get_instance_id()] = F->get(); + + PlaceHolderScriptInstance *placeholder = scr->placeholder_instance_create(obj); + obj->set_script_instance(placeholder); + + // Even though build didn't fail, this tells the placeholder to keep properties and + // it allows using property_set_fallback for restoring the state without a valid script. + placeholder->set_build_failed(true); + + // Restore Variant properties state, it will be kept by the placeholder until the next script reloading + for (List<Pair<StringName, Variant> >::Element *G = scr->pending_reload_state[obj_id].properties.front(); G; G = G->next()) { + placeholder->property_set_fallback(G->get().first, G->get().second, NULL); } + + scr->pending_reload_state.erase(obj_id); } } return; } - for (Map<Ref<CSharpScript>, Map<ObjectID, List<Pair<StringName, Variant> > > >::Element *E = to_reload.front(); E; E = E->next()) { + for (List<Ref<CSharpScript> >::Element *E = to_reload.front(); E; E = E->next()) { - Ref<CSharpScript> scr = E->key(); + Ref<CSharpScript> scr = E->get(); scr->exports_invalidated = true; scr->signals_invalidated = true; scr->reload(p_soft_reload); scr->update_exports(); - //restore state if saved - for (Map<ObjectID, List<Pair<StringName, Variant> > >::Element *F = E->get().front(); F; F = F->next()) { + { +#ifdef DEBUG_ENABLED + for (Set<ObjectID>::Element *F = scr->pending_reload_instances.front(); F; F = F->next()) { + ObjectID obj_id = F->get(); + Object *obj = ObjectDB::get_instance(obj_id); - Object *obj = ObjectDB::get_instance(F->key()); - if (!obj) - continue; + if (!obj) { + scr->pending_reload_state.erase(obj_id); + continue; + } - if (!p_soft_reload) { - //clear it just in case (may be a pending reload state) - obj->set_script(RefPtr()); - } - obj->set_script(scr.get_ref_ptr()); - if (!obj->get_script_instance()) { - //failed, save reload state for next time if not saved - if (!scr->pending_reload_state.has(obj->get_instance_id())) { - scr->pending_reload_state[obj->get_instance_id()] = F->get(); + ScriptInstance *si = obj->get_script_instance(); + +#ifdef TOOLS_ENABLED + if (si) { + // If the script instance is not null, then it must be a placeholder. + // Non-placeholder script instances are removed in godot_icall_Object_Disposed. + CRASH_COND(!si->is_placeholder()); + + if (scr->is_tool() || ScriptServer::is_scripting_enabled()) { + // Replace placeholder with a script instance + + CSharpScript::StateBackup &state_backup = scr->pending_reload_state[obj_id]; + + // Backup placeholder script instance state before replacing it with a script instance + obj->get_script_instance()->get_property_state(state_backup.properties); + + ScriptInstance *script_instance = scr->instance_create(obj); + + if (script_instance) { + scr->placeholders.erase(static_cast<PlaceHolderScriptInstance *>(si)); + obj->set_script_instance(script_instance); + } + + // TODO: Restore serialized state + + for (List<Pair<StringName, Variant> >::Element *G = state_backup.properties.front(); G; G = G->next()) { + script_instance->set(G->get().first, G->get().second); + } + + scr->pending_reload_state.erase(obj_id); + } + + continue; } - continue; - } +#else + CRASH_COND(si != NULL); +#endif + // Re-create script instance - if (scr->valid && scr->is_tool() && obj->get_script_instance()->is_placeholder()) { - // Script instance was a placeholder, but now the script was built successfully and is a tool script. - // We have to replace the placeholder with an actual C# script instance. - scr->placeholders.erase(static_cast<PlaceHolderScriptInstance *>(obj->get_script_instance())); - ScriptInstance *script_instance = scr->instance_create(obj); - obj->set_script_instance(script_instance); // Not necessary as it's already done in instance_create, but just in case... - } + obj->set_script(scr.get_ref_ptr()); // will create the script instance as well + + // TODO: Restore serialized state + + for (List<Pair<StringName, Variant> >::Element *G = scr->pending_reload_state[obj_id].properties.front(); G; G = G->next()) { + obj->get_script_instance()->set(G->get().first, G->get().second); + } - for (List<Pair<StringName, Variant> >::Element *G = F->get().front(); G; G = G->next()) { - obj->get_script_instance()->set(G->get().first, G->get().second); + scr->pending_reload_state.erase(obj_id); } +#endif - scr->pending_reload_state.erase(obj->get_instance_id()); //as it reloaded, remove pending state + scr->pending_reload_instances.clear(); } - - //if instance states were saved, set them! } + // FIXME: Hack to refresh editor in order to display new properties and signals. See if there is a better alternative. if (Engine::get_singleton()->is_editor_hint()) { EditorNode::get_singleton()->get_inspector()->update_tree(); NodeDock::singleton->update_lists(); @@ -940,27 +993,18 @@ void CSharpLanguage::set_language_index(int p_idx) { void CSharpLanguage::release_script_gchandle(Ref<MonoGCHandle> &p_gchandle) { - if (!p_gchandle->is_released()) { // Do not locking unnecessarily -#ifndef NO_THREADS - get_singleton()->script_gchandle_release_lock->lock(); -#endif - + if (!p_gchandle->is_released()) { // Do not lock unnecessarily + SCOPED_MUTEX_LOCK(get_singleton()->script_gchandle_release_mutex); p_gchandle->release(); - -#ifndef NO_THREADS - get_singleton()->script_gchandle_release_lock->unlock(); -#endif } } -void CSharpLanguage::release_script_gchandle(MonoObject *p_pinned_expected_obj, Ref<MonoGCHandle> &p_gchandle) { +void CSharpLanguage::release_script_gchandle(MonoObject *p_expected_obj, Ref<MonoGCHandle> &p_gchandle) { - uint32_t pinned_gchandle = MonoGCHandle::new_strong_handle_pinned(p_pinned_expected_obj); // we might lock after this, so pin it + uint32_t pinned_gchandle = MonoGCHandle::new_strong_handle_pinned(p_expected_obj); // We might lock after this, so pin it - if (!p_gchandle->is_released()) { // Do not locking unnecessarily -#ifndef NO_THREADS - get_singleton()->script_gchandle_release_lock->lock(); -#endif + if (!p_gchandle->is_released()) { // Do not lock unnecessarily + SCOPED_MUTEX_LOCK(get_singleton()->script_gchandle_release_mutex); MonoObject *target = p_gchandle->get_target(); @@ -968,13 +1012,9 @@ void CSharpLanguage::release_script_gchandle(MonoObject *p_pinned_expected_obj, // already released and could have been replaced) or if we can't get its target MonoObject* // (which doesn't necessarily mean it was released, and we want it released in order to // avoid locking other threads unnecessarily). - if (target == p_pinned_expected_obj || target == NULL) { + if (target == p_expected_obj || target == NULL) { p_gchandle->release(); } - -#ifndef NO_THREADS - get_singleton()->script_gchandle_release_lock->unlock(); -#endif } MonoGCHandle::free_handle(pinned_gchandle); @@ -990,13 +1030,13 @@ CSharpLanguage::CSharpLanguage() { gdmono = NULL; #ifdef NO_THREADS - lock = NULL; - gchandle_bind_lock = NULL; - script_gchandle_release_lock = NULL; + script_instances_mutex = NULL; + script_gchandle_release_mutex = NULL; + language_bind_mutex = NULL; #else - lock = Mutex::create(); - script_bind_lock = Mutex::create(); - script_gchandle_release_lock = Mutex::create(); + script_instances_mutex = Mutex::create(); + script_gchandle_release_mutex = Mutex::create(); + language_bind_mutex = Mutex::create(); #endif lang_idx = -1; @@ -1006,19 +1046,19 @@ CSharpLanguage::~CSharpLanguage() { finish(); - if (lock) { - memdelete(lock); - lock = NULL; + if (script_instances_mutex) { + memdelete(script_instances_mutex); + script_instances_mutex = NULL; } - if (script_bind_lock) { - memdelete(script_bind_lock); - script_bind_lock = NULL; + if (language_bind_mutex) { + memdelete(language_bind_mutex); + language_bind_mutex = NULL; } - if (script_gchandle_release_lock) { - memdelete(script_gchandle_release_lock); - script_gchandle_release_lock = NULL; + if (script_gchandle_release_mutex) { + memdelete(script_gchandle_release_mutex); + script_gchandle_release_mutex = NULL; } singleton = NULL; @@ -1055,15 +1095,12 @@ void *CSharpLanguage::alloc_instance_binding_data(Object *p_object) { script_binding.wrapper_class = type_class; // cache script_binding.gchandle = MonoGCHandle::create_strong(mono_object); -#ifndef NO_THREADS - script_bind_lock->lock(); -#endif + void *data; - void *data = (void *)script_bindings.insert(p_object, script_binding); - -#ifndef NO_THREADS - script_bind_lock->unlock(); -#endif + { + SCOPED_MUTEX_LOCK(language_bind_mutex); + data = (void *)script_bindings.insert(p_object, script_binding); + } // Tie managed to unmanaged Reference *ref = Object::cast_to<Reference>(p_object); @@ -1093,23 +1130,19 @@ void CSharpLanguage::free_instance_binding_data(void *p_data) { if (finalizing) return; // inside CSharpLanguage::finish(), all the gchandle bindings are released there -#ifndef NO_THREADS - script_bind_lock->lock(); -#endif + { + SCOPED_MUTEX_LOCK(language_bind_mutex); - Map<Object *, CSharpScriptBinding>::Element *data = (Map<Object *, CSharpScriptBinding>::Element *)p_data; + Map<Object *, CSharpScriptBinding>::Element *data = (Map<Object *, CSharpScriptBinding>::Element *)p_data; - // Set the native instance field to IntPtr.Zero, if not yet garbage collected - MonoObject *mono_object = data->value().gchandle->get_target(); - if (mono_object) { - CACHED_FIELD(GodotObject, ptr)->set_value_raw(mono_object, NULL); - } - - script_bindings.erase(data); + // Set the native instance field to IntPtr.Zero, if not yet garbage collected + MonoObject *mono_object = data->value().gchandle->get_target(); + if (mono_object) { + CACHED_FIELD(GodotObject, ptr)->set_value_raw(mono_object, NULL); + } -#ifndef NO_THREADS - script_bind_lock->unlock(); -#endif + script_bindings.erase(data); + } } void CSharpLanguage::refcount_incremented_instance_binding(Object *p_object) { @@ -1524,7 +1557,7 @@ void CSharpInstance::mono_object_disposed_baseref(MonoObject *p_obj, bool p_is_f } else { r_owner_deleted = false; CSharpLanguage::get_singleton()->release_script_gchandle(p_obj, gchandle); - if (p_is_finalizer) { + if (p_is_finalizer && !GDMono::get_singleton()->is_finalizing_scripts_domain()) { // If the native instance is still alive, then it was // referenced from another thread before the finalizer could // unreference it and delete it, so we want to keep it. @@ -1651,6 +1684,8 @@ void CSharpInstance::notification(int p_notification) { // It's safe to call Dispose() multiple times and NOTIFICATION_PREDELETE is guaranteed // to be sent at least once, which happens right before the call to the destructor. + predelete_notified = true; + if (base_ref) { // It's not safe to proceed if the owner derives Reference and the refcount reached 0. // At this point, Dispose() was already called (manually or from the finalizer) so @@ -1666,10 +1701,8 @@ void CSharpInstance::notification(int p_notification) { MonoObject *mono_object = get_mono_object(); ERR_FAIL_NULL(mono_object); - GDMonoUtils::GodotObject_Dispose thunk = CACHED_METHOD_THUNK(GodotObject, Dispose); - MonoException *exc = NULL; - thunk(mono_object, (MonoObject **)&exc); + GDMonoUtils::dispose(mono_object, &exc); if (exc) { GDMonoUtils::set_pending_exception(exc); @@ -1720,12 +1753,35 @@ CSharpInstance::CSharpInstance() : owner(NULL), base_ref(false), ref_dying(false), - unsafe_referenced(false) { + unsafe_referenced(false), + predelete_notified(false), + destructing_script_instance(false) { } CSharpInstance::~CSharpInstance() { if (gchandle.is_valid()) { + if (!predelete_notified && !ref_dying) { + // This destructor is not called from the owners destructor. + // This could be being called from the owner's set_script_instance method, + // meaning this script is being replaced with another one. If this is the case, + // we must call Dispose here, because Dispose calls owner->set_script_instance(NULL) + // and that would mess up with the new script instance if called later. + + MonoObject *mono_object = gchandle->get_target(); + + if (mono_object) { + MonoException *exc = NULL; + destructing_script_instance = true; + GDMonoUtils::dispose(mono_object, &exc); + destructing_script_instance = false; + + if (exc) { + GDMonoUtils::set_pending_exception(exc); + } + } + } + gchandle->release(); // Make sure it's released } @@ -1734,9 +1790,7 @@ CSharpInstance::~CSharpInstance() { } if (script.is_valid() && owner) { -#ifndef NO_THREADS - CSharpLanguage::singleton->lock->lock(); -#endif + SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex); #ifdef DEBUG_ENABLED // CSharpInstance must not be created unless it's going to be added to the list for sure @@ -1746,10 +1800,6 @@ CSharpInstance::~CSharpInstance() { #else script->instances.erase(owner); #endif - -#ifndef NO_THREADS - CSharpLanguage::singleton->lock->unlock(); -#endif } } @@ -1882,10 +1932,8 @@ bool CSharpScript::_update_exports() { // Dispose the temporary managed instance - GDMonoUtils::GodotObject_Dispose thunk = CACHED_METHOD_THUNK(GodotObject, Dispose); - MonoException *exc = NULL; - thunk(tmp_object, (MonoObject **)&exc); + GDMonoUtils::dispose(tmp_object, &exc); if (exc) { ERR_PRINT("Exception thrown from method Dispose() of temporary MonoObject:"); @@ -2312,17 +2360,13 @@ CSharpInstance *CSharpScript::_create_instance(const Variant **p_args, int p_arg ERR_FAIL_V(NULL); } - uint32_t pinned_gchandle = MonoGCHandle::new_strong_handle_pinned(mono_object); // we might lock after this, so pin it - -#ifndef NO_THREADS - CSharpLanguage::singleton->lock->lock(); -#endif - - instances.insert(instance->owner); + // Tie managed to unmanaged + instance->gchandle = MonoGCHandle::create_strong(mono_object); -#ifndef NO_THREADS - CSharpLanguage::singleton->lock->unlock(); -#endif + { + SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex); + instances.insert(instance->owner); + } CACHED_FIELD(GodotObject, ptr)->set_value_raw(mono_object, instance->owner); @@ -2330,13 +2374,8 @@ CSharpInstance *CSharpScript::_create_instance(const Variant **p_args, int p_arg GDMonoMethod *ctor = script_class->get_method(CACHED_STRING_NAME(dotctor), p_argcount); ctor->invoke(mono_object, p_args); - // Tie managed to unmanaged - instance->gchandle = MonoGCHandle::create_strong(mono_object); - /* STEP 3, PARTY */ - MonoGCHandle::free_handle(pinned_gchandle); - //@TODO make thread safe return instance; } @@ -2411,17 +2450,8 @@ PlaceHolderScriptInstance *CSharpScript::placeholder_instance_create(Object *p_t bool CSharpScript::instance_has(const Object *p_this) const { -#ifndef NO_THREADS - CSharpLanguage::singleton->lock->lock(); -#endif - - bool ret = instances.has((Object *)p_this); - -#ifndef NO_THREADS - CSharpLanguage::singleton->lock->unlock(); -#endif - - return ret; + SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex); + return instances.has((Object *)p_this); } bool CSharpScript::has_source_code() const { @@ -2454,15 +2484,11 @@ bool CSharpScript::has_method(const StringName &p_method) const { Error CSharpScript::reload(bool p_keep_state) { -#ifndef NO_THREADS - CSharpLanguage::singleton->lock->lock(); -#endif - - bool has_instances = instances.size(); - -#ifndef NO_THREADS - CSharpLanguage::singleton->lock->unlock(); -#endif + bool has_instances; + { + SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex); + has_instances = instances.size(); + } ERR_FAIL_COND_V(!p_keep_state && has_instances, ERR_ALREADY_IN_USE); @@ -2571,10 +2597,6 @@ void CSharpScript::update_exports() { #endif } -bool CSharpScript::is_valid() const { - return true; //TODO return false if invalid -} - bool CSharpScript::has_script_signal(const StringName &p_signal) const { if (_signals.has(p_signal)) return true; @@ -2652,35 +2674,19 @@ CSharpScript::CSharpScript() : _resource_path_changed(); #ifdef DEBUG_ENABLED - -#ifndef NO_THREADS - CSharpLanguage::get_singleton()->lock->lock(); -#endif - - CSharpLanguage::get_singleton()->script_list.add(&script_list); - -#ifndef NO_THREADS - CSharpLanguage::get_singleton()->lock->unlock(); + { + SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex); + CSharpLanguage::get_singleton()->script_list.add(&this->script_list); + } #endif - -#endif // DEBUG_ENABLED } CSharpScript::~CSharpScript() { #ifdef DEBUG_ENABLED - -#ifndef NO_THREADS - CSharpLanguage::get_singleton()->lock->lock(); + SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex); + CSharpLanguage::get_singleton()->script_list.remove(&this->script_list); #endif - - CSharpLanguage::get_singleton()->script_list.remove(&script_list); - -#ifndef NO_THREADS - CSharpLanguage::get_singleton()->lock->unlock(); -#endif - -#endif // DEBUG_ENABLED } /*************** RESOURCE ***************/ diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h index 871d4d7e4c..501e0d9d6d 100644 --- a/modules/mono/csharp_script.h +++ b/modules/mono/csharp_script.h @@ -82,6 +82,21 @@ class CSharpScript : public Script { Set<Object *> instances; +#ifdef DEBUG_ENABLED + Set<ObjectID> pending_reload_instances; +#endif + + struct StateBackup { + // TODO + // Replace with buffer containing the serialized state of managed scripts. + // Keep variant state backup to use only with script instance placeholders. + List<Pair<StringName, Variant> > properties; + }; + +#ifdef TOOLS_ENABLED + Map<ObjectID, CSharpScript::StateBackup> pending_reload_state; +#endif + String source; StringName name; @@ -105,10 +120,6 @@ class CSharpScript : public Script { virtual void _placeholder_erased(PlaceHolderScriptInstance *p_placeholder); #endif -#ifdef DEBUG_ENABLED - Map<ObjectID, List<Pair<StringName, Variant> > > pending_reload_state; -#endif - Map<StringName, PropertyInfo> member_info; void _clear(); @@ -158,7 +169,7 @@ public: virtual void update_exports(); virtual bool is_tool() const { return tool; } - virtual bool is_valid() const; + virtual bool is_valid() const { return valid; } virtual Ref<Script> get_base_script() const; virtual ScriptLanguage *get_language() const; @@ -186,6 +197,8 @@ class CSharpInstance : public ScriptInstance { bool base_ref; bool ref_dying; bool unsafe_referenced; + bool predelete_notified; + bool destructing_script_instance; Ref<CSharpScript> script; Ref<MonoGCHandle> gchandle; @@ -206,6 +219,8 @@ class CSharpInstance : public ScriptInstance { public: MonoObject *get_mono_object() const; + _FORCE_INLINE_ bool is_destructing_script_instance() { return destructing_script_instance; } + virtual bool set(const StringName &p_name, const Variant &p_value); virtual bool get(const StringName &p_name, Variant &r_ret) const; virtual void get_property_list(List<PropertyInfo> *p_properties) const; @@ -255,11 +270,9 @@ class CSharpLanguage : public ScriptLanguage { GDMono *gdmono; SelfList<CSharpScript>::List script_list; - Mutex *lock; - Mutex *script_bind_lock; - Mutex *script_gchandle_release_lock; - - Map<Ref<CSharpScript>, Map<ObjectID, List<Pair<StringName, Variant> > > > to_reload; + Mutex *script_instances_mutex; + Mutex *script_gchandle_release_mutex; + Mutex *language_bind_mutex; Map<Object *, CSharpScriptBinding> script_bindings; @@ -296,7 +309,8 @@ public: bool debug_break_parse(const String &p_file, int p_line, const String &p_error); #ifdef TOOLS_ENABLED - void reload_assemblies_if_needed(bool p_soft_reload); + bool is_assembly_reloading_needed(); + void reload_assemblies(bool p_soft_reload); #endif void project_assembly_loaded(); diff --git a/modules/mono/editor/godotsharp_editor.cpp b/modules/mono/editor/godotsharp_editor.cpp index f27511ad5e..cce86efbf5 100644 --- a/modules/mono/editor/godotsharp_editor.cpp +++ b/modules/mono/editor/godotsharp_editor.cpp @@ -475,7 +475,9 @@ MonoReloadNode *MonoReloadNode::singleton = NULL; void MonoReloadNode::_reload_timer_timeout() { - CSharpLanguage::get_singleton()->reload_assemblies_if_needed(false); + if (CSharpLanguage::get_singleton()->is_assembly_reloading_needed()) { + CSharpLanguage::get_singleton()->reload_assemblies(false); + } } void MonoReloadNode::restart_reload_timer() { @@ -493,7 +495,9 @@ void MonoReloadNode::_notification(int p_what) { switch (p_what) { case MainLoop::NOTIFICATION_WM_FOCUS_IN: { restart_reload_timer(); - CSharpLanguage::get_singleton()->reload_assemblies_if_needed(true); + if (CSharpLanguage::get_singleton()->is_assembly_reloading_needed()) { + CSharpLanguage::get_singleton()->reload_assemblies(false); + } } break; default: { } break; diff --git a/modules/mono/editor/mono_bottom_panel.cpp b/modules/mono/editor/mono_bottom_panel.cpp index d7bfa54aba..e89d21d92d 100644 --- a/modules/mono/editor/mono_bottom_panel.cpp +++ b/modules/mono/editor/mono_bottom_panel.cpp @@ -154,10 +154,14 @@ void MonoBottomPanel::_build_project_pressed() { Error metadata_err = CSharpProject::generate_scripts_metadata(GodotSharpDirs::get_project_csproj_path(), scripts_metadata_path); ERR_FAIL_COND(metadata_err != OK); - GodotSharpBuilds::get_singleton()->build_project_blocking("Tools"); + bool build_success = GodotSharpBuilds::get_singleton()->build_project_blocking("Tools"); - MonoReloadNode::get_singleton()->restart_reload_timer(); - CSharpLanguage::get_singleton()->reload_assemblies_if_needed(true); + if (build_success) { + MonoReloadNode::get_singleton()->restart_reload_timer(); + if (CSharpLanguage::get_singleton()->is_assembly_reloading_needed()) { + CSharpLanguage::get_singleton()->reload_assemblies(false); + } + } } void MonoBottomPanel::_view_log_pressed() { diff --git a/modules/mono/glue/base_object_glue.cpp b/modules/mono/glue/base_object_glue.cpp index d718c3cc61..58916c5283 100644 --- a/modules/mono/glue/base_object_glue.cpp +++ b/modules/mono/glue/base_object_glue.cpp @@ -54,8 +54,10 @@ void godot_icall_Object_Disposed(MonoObject *p_obj, Object *p_ptr) { if (p_ptr->get_script_instance()) { CSharpInstance *cs_instance = CAST_CSHARP_INSTANCE(p_ptr->get_script_instance()); if (cs_instance) { - cs_instance->mono_object_disposed(p_obj); - p_ptr->set_script_instance(NULL); + if (!cs_instance->is_destructing_script_instance()) { + cs_instance->mono_object_disposed(p_obj); + p_ptr->set_script_instance(NULL); + } return; } } @@ -82,12 +84,14 @@ void godot_icall_Reference_Disposed(MonoObject *p_obj, Object *p_ptr, bool p_is_ if (ref->get_script_instance()) { CSharpInstance *cs_instance = CAST_CSHARP_INSTANCE(ref->get_script_instance()); if (cs_instance) { - bool r_owner_deleted; - cs_instance->mono_object_disposed_baseref(p_obj, p_is_finalizer, r_owner_deleted); - if (!r_owner_deleted && !p_is_finalizer) { - // If the native instance is still alive and Dispose() was called - // (instead of the finalizer), then we remove the script instance. - ref->set_script_instance(NULL); + if (!cs_instance->is_destructing_script_instance()) { + bool r_owner_deleted; + cs_instance->mono_object_disposed_baseref(p_obj, p_is_finalizer, r_owner_deleted); + if (!r_owner_deleted && !p_is_finalizer) { + // If the native instance is still alive and Dispose() was called + // (instead of the finalizer), then we remove the script instance. + ref->set_script_instance(NULL); + } } return; } diff --git a/modules/mono/mono_gd/gd_mono_field.cpp b/modules/mono/mono_gd/gd_mono_field.cpp index 5d9b9213e7..f09e93e662 100644 --- a/modules/mono/mono_gd/gd_mono_field.cpp +++ b/modules/mono/mono_gd/gd_mono_field.cpp @@ -423,7 +423,7 @@ void GDMonoField::set_value_from_variant(MonoObject *p_object, const Variant &p_ MonoException *exc = NULL; GDMonoUtils::IsDictionaryGenericType type_is_dict = CACHED_METHOD_THUNK(MarshalUtils, IsDictionaryGenericType); - MonoBoolean is_dict = type_is_dict((MonoObject *)reftype, (MonoObject **)&exc); + MonoBoolean is_dict = invoke_method_thunk(type_is_dict, (MonoObject *)reftype, (MonoObject **)&exc); UNLIKELY_UNHANDLED_EXCEPTION(exc); if (is_dict) { @@ -435,7 +435,7 @@ void GDMonoField::set_value_from_variant(MonoObject *p_object, const Variant &p_ exc = NULL; GDMonoUtils::IsArrayGenericType type_is_array = CACHED_METHOD_THUNK(MarshalUtils, IsArrayGenericType); - MonoBoolean is_array = type_is_array((MonoObject *)reftype, (MonoObject **)&exc); + MonoBoolean is_array = invoke_method_thunk(type_is_array, (MonoObject *)reftype, (MonoObject **)&exc); UNLIKELY_UNHANDLED_EXCEPTION(exc); if (is_array) { diff --git a/modules/mono/mono_gd/gd_mono_marshal.cpp b/modules/mono/mono_gd/gd_mono_marshal.cpp index 2543f5dc47..3f0a5d6e50 100644 --- a/modules/mono/mono_gd/gd_mono_marshal.cpp +++ b/modules/mono/mono_gd/gd_mono_marshal.cpp @@ -163,7 +163,7 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type) { MonoException *exc = NULL; GDMonoUtils::IsDictionaryGenericType type_is_dict = CACHED_METHOD_THUNK(MarshalUtils, IsDictionaryGenericType); - MonoBoolean is_dict = type_is_dict((MonoObject *)reftype, (MonoObject **)&exc); + MonoBoolean is_dict = invoke_method_thunk(type_is_dict, (MonoObject *)reftype, (MonoObject **)&exc); UNLIKELY_UNHANDLED_EXCEPTION(exc); if (is_dict) { @@ -172,7 +172,7 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type) { exc = NULL; GDMonoUtils::IsArrayGenericType type_is_array = CACHED_METHOD_THUNK(MarshalUtils, IsArrayGenericType); - MonoBoolean is_array = type_is_array((MonoObject *)reftype, (MonoObject **)&exc); + MonoBoolean is_array = invoke_method_thunk(type_is_array, (MonoObject *)reftype, (MonoObject **)&exc); UNLIKELY_UNHANDLED_EXCEPTION(exc); if (is_array) { @@ -192,8 +192,11 @@ String mono_to_utf8_string(MonoString *p_mono_string) { MonoError error; char *utf8 = mono_string_to_utf8_checked(p_mono_string, &error); - ERR_EXPLAIN("Conversion of MonoString to UTF8 failed."); - ERR_FAIL_COND_V(!mono_error_ok(&error), String()); + if (!mono_error_ok(&error)) { + ERR_PRINTS(String("Failed to convert MonoString* to UTF-8: ") + mono_error_get_message(&error)); + mono_error_cleanup(&error); + return String(); + } String ret = String::utf8(utf8); @@ -546,7 +549,7 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty MonoException *exc = NULL; GDMonoUtils::IsDictionaryGenericType type_is_dict = CACHED_METHOD_THUNK(MarshalUtils, IsDictionaryGenericType); - MonoBoolean is_dict = type_is_dict((MonoObject *)reftype, (MonoObject **)&exc); + MonoBoolean is_dict = invoke_method_thunk(type_is_dict, (MonoObject *)reftype, (MonoObject **)&exc); UNLIKELY_UNHANDLED_EXCEPTION(exc); if (is_dict) { @@ -555,7 +558,7 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty exc = NULL; GDMonoUtils::IsArrayGenericType type_is_array = CACHED_METHOD_THUNK(MarshalUtils, IsArrayGenericType); - MonoBoolean is_array = type_is_array((MonoObject *)reftype, (MonoObject **)&exc); + MonoBoolean is_array = invoke_method_thunk(type_is_array, (MonoObject *)reftype, (MonoObject **)&exc); UNLIKELY_UNHANDLED_EXCEPTION(exc); if (is_array) { @@ -710,16 +713,14 @@ Variant mono_object_to_variant(MonoObject *p_obj) { if (CACHED_CLASS(Array) == type_class) { MonoException *exc = NULL; - GDMonoUtils::Array_GetPtr get_ptr = CACHED_METHOD_THUNK(Array, GetPtr); - Array *ptr = get_ptr(p_obj, (MonoObject **)&exc); + Array *ptr = invoke_method_thunk(CACHED_METHOD_THUNK(Array, GetPtr), p_obj, (MonoObject **)&exc); UNLIKELY_UNHANDLED_EXCEPTION(exc); return ptr ? Variant(*ptr) : Variant(); } if (CACHED_CLASS(Dictionary) == type_class) { MonoException *exc = NULL; - GDMonoUtils::Dictionary_GetPtr get_ptr = CACHED_METHOD_THUNK(Dictionary, GetPtr); - Dictionary *ptr = get_ptr(p_obj, (MonoObject **)&exc); + Dictionary *ptr = invoke_method_thunk(CACHED_METHOD_THUNK(Dictionary, GetPtr), p_obj, (MonoObject **)&exc); UNLIKELY_UNHANDLED_EXCEPTION(exc); return ptr ? Variant(*ptr) : Variant(); } @@ -731,7 +732,7 @@ Variant mono_object_to_variant(MonoObject *p_obj) { MonoException *exc = NULL; GDMonoUtils::IsDictionaryGenericType type_is_dict = CACHED_METHOD_THUNK(MarshalUtils, IsDictionaryGenericType); - MonoBoolean is_dict = type_is_dict((MonoObject *)reftype, (MonoObject **)&exc); + MonoBoolean is_dict = invoke_method_thunk(type_is_dict, (MonoObject *)reftype, (MonoObject **)&exc); UNLIKELY_UNHANDLED_EXCEPTION(exc); if (is_dict) { @@ -744,7 +745,7 @@ Variant mono_object_to_variant(MonoObject *p_obj) { exc = NULL; GDMonoUtils::IsArrayGenericType type_is_array = CACHED_METHOD_THUNK(MarshalUtils, IsArrayGenericType); - MonoBoolean is_array = type_is_array((MonoObject *)reftype, (MonoObject **)&exc); + MonoBoolean is_array = invoke_method_thunk(type_is_array, (MonoObject *)reftype, (MonoObject **)&exc); UNLIKELY_UNHANDLED_EXCEPTION(exc); if (is_array) { diff --git a/modules/mono/mono_gd/gd_mono_utils.cpp b/modules/mono/mono_gd/gd_mono_utils.cpp index fe2c09799c..211987d242 100644 --- a/modules/mono/mono_gd/gd_mono_utils.cpp +++ b/modules/mono/mono_gd/gd_mono_utils.cpp @@ -694,4 +694,8 @@ uint64_t unbox_enum_value(MonoObject *p_boxed, MonoType *p_enum_basetype, bool & } } +void dispose(MonoObject *p_mono_object, MonoException **r_exc) { + invoke_method_thunk(CACHED_METHOD_THUNK(GodotObject, Dispose), p_mono_object, (MonoObject **)r_exc); +} + } // namespace GDMonoUtils diff --git a/modules/mono/mono_gd/gd_mono_utils.h b/modules/mono/mono_gd/gd_mono_utils.h index f00680ff03..170df32991 100644 --- a/modules/mono/mono_gd/gd_mono_utils.h +++ b/modules/mono/mono_gd/gd_mono_utils.h @@ -243,6 +243,8 @@ MonoObject *property_get_value(MonoProperty *p_prop, void *p_obj, void **p_param uint64_t unbox_enum_value(MonoObject *p_boxed, MonoType *p_enum_basetype, bool &r_error); +void dispose(MonoObject *p_mono_object, MonoException **r_exc); + } // namespace GDMonoUtils #define NATIVE_GDMONOCLASS_NAME(m_class) (GDMonoMarshal::mono_string_to_godot((MonoString *)m_class->get_field(BINDINGS_NATIVE_NAME_FIELD)->get_value(NULL))) @@ -267,4 +269,93 @@ uint64_t unbox_enum_value(MonoObject *p_boxed, MonoType *p_enum_basetype, bool & #define GD_MONO_END_RUNTIME_INVOKE \ _runtime_invoke_count_ref -= 1; +inline void invoke_method_thunk(void (*p_method_thunk)()) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + p_method_thunk(); + GD_MONO_END_RUNTIME_INVOKE; +} + +template <class R> +R invoke_method_thunk(R (*p_method_thunk)()) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + R r = p_method_thunk(); + GD_MONO_END_RUNTIME_INVOKE; + return r; +} + +template <class P1> +void invoke_method_thunk(void (*p_method_thunk)(P1), P1 p_arg1) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + p_method_thunk(p_arg1); + GD_MONO_END_RUNTIME_INVOKE; +} + +template <class R, class P1> +R invoke_method_thunk(R (*p_method_thunk)(P1), P1 p_arg1) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + R r = p_method_thunk(p_arg1); + GD_MONO_END_RUNTIME_INVOKE; + return r; +} + +template <class P1, class P2> +void invoke_method_thunk(void (*p_method_thunk)(P1, P2), P1 p_arg1, P2 p_arg2) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + p_method_thunk(p_arg1, p_arg2); + GD_MONO_END_RUNTIME_INVOKE; +} + +template <class R, class P1, class P2> +R invoke_method_thunk(R (*p_method_thunk)(P1, P2), P1 p_arg1, P2 p_arg2) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + R r = p_method_thunk(p_arg1, p_arg2); + GD_MONO_END_RUNTIME_INVOKE; + return r; +} + +template <class P1, class P2, class P3> +void invoke_method_thunk(void (*p_method_thunk)(P1, P2, P3), P1 p_arg1, P2 p_arg2, P3 p_arg3) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + p_method_thunk(p_arg1, p_arg2, p_arg3); + GD_MONO_END_RUNTIME_INVOKE; +} + +template <class R, class P1, class P2, class P3> +R invoke_method_thunk(R (*p_method_thunk)(P1, P2, P3), P1 p_arg1, P2 p_arg2, P3 p_arg3) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + R r = p_method_thunk(p_arg1, p_arg2, p_arg3); + GD_MONO_END_RUNTIME_INVOKE; + return r; +} + +template <class P1, class P2, class P3, class P4> +void invoke_method_thunk(void (*p_method_thunk)(P1, P2, P3, P4), P1 p_arg1, P2 p_arg2, P3 p_arg3, P4 p_arg4) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + p_method_thunk(p_arg1, p_arg2, p_arg3, p_arg4); + GD_MONO_END_RUNTIME_INVOKE; +} + +template <class R, class P1, class P2, class P3, class P4> +R invoke_method_thunk(R (*p_method_thunk)(P1, P2, P3, P4), P1 p_arg1, P2 p_arg2, P3 p_arg3, P4 p_arg4) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + R r = p_method_thunk(p_arg1, p_arg2, p_arg3, p_arg4); + GD_MONO_END_RUNTIME_INVOKE; + return r; +} + +template <class P1, class P2, class P3, class P4, class P5> +void invoke_method_thunk(void (*p_method_thunk)(P1, P2, P3, P4, P5), P1 p_arg1, P2 p_arg2, P3 p_arg3, P4 p_arg4, P5 p_arg5) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + p_method_thunk(p_arg1, p_arg2, p_arg3, p_arg4, p_arg5); + GD_MONO_END_RUNTIME_INVOKE; +} + +template <class R, class P1, class P2, class P3, class P4, class P5> +R invoke_method_thunk(R (*p_method_thunk)(P1, P2, P3, P4, P5), P1 p_arg1, P2 p_arg2, P3 p_arg3, P4 p_arg4, P5 p_arg5) { + GD_MONO_BEGIN_RUNTIME_INVOKE; + R r = p_method_thunk(p_arg1, p_arg2, p_arg3, p_arg4, p_arg5); + GD_MONO_END_RUNTIME_INVOKE; + return r; +} + #endif // GD_MONOUTILS_H diff --git a/modules/mono/signal_awaiter_utils.cpp b/modules/mono/signal_awaiter_utils.cpp index fa1fbebb16..c6748309f3 100644 --- a/modules/mono/signal_awaiter_utils.cpp +++ b/modules/mono/signal_awaiter_utils.cpp @@ -98,11 +98,9 @@ Variant SignalAwaiterHandle::_signal_callback(const Variant **p_args, int p_argc mono_array_set(signal_args, MonoObject *, i, boxed); } - GDMonoUtils::SignalAwaiter_SignalCallback thunk = CACHED_METHOD_THUNK(SignalAwaiter, SignalCallback); - MonoException *exc = NULL; GD_MONO_BEGIN_RUNTIME_INVOKE; - thunk(get_target(), signal_args, (MonoObject **)&exc); + invoke_method_thunk(CACHED_METHOD_THUNK(SignalAwaiter, SignalCallback), get_target(), signal_args, (MonoObject **)&exc); GD_MONO_END_RUNTIME_INVOKE; if (exc) { @@ -129,14 +127,12 @@ SignalAwaiterHandle::SignalAwaiterHandle(MonoObject *p_managed) : SignalAwaiterHandle::~SignalAwaiterHandle() { if (!completed) { - GDMonoUtils::SignalAwaiter_FailureCallback thunk = CACHED_METHOD_THUNK(SignalAwaiter, FailureCallback); - MonoObject *awaiter = get_target(); if (awaiter) { MonoException *exc = NULL; GD_MONO_BEGIN_RUNTIME_INVOKE; - thunk(awaiter, (MonoObject **)&exc); + invoke_method_thunk(CACHED_METHOD_THUNK(SignalAwaiter, FailureCallback), awaiter, (MonoObject **)&exc); GD_MONO_END_RUNTIME_INVOKE; if (exc) { diff --git a/modules/mono/utils/macros.h b/modules/mono/utils/macros.h index 40b47e8648..c801fb2f33 100644 --- a/modules/mono/utils/macros.h +++ b/modules/mono/utils/macros.h @@ -31,15 +31,17 @@ #ifndef UTIL_MACROS_H #define UTIL_MACROS_H +#define _GD_VARNAME_CONCAT_B(m_ignore, m_name) m_name +#define _GD_VARNAME_CONCAT_A(m_a, m_b, m_c) _GD_VARNAME_CONCAT_B(hello there, m_a##m_b##m_c) +#define _GD_VARNAME_CONCAT(m_a, m_b, m_c) _GD_VARNAME_CONCAT_A(m_a, m_b, m_c) +#define GD_UNIQUE_NAME(m_name) _GD_VARNAME_CONCAT(m_name, _, __COUNTER__) + // noreturn #if __cpp_static_assert #define GD_STATIC_ASSERT(m_cond) static_assert((m_cond), "Condition '" #m_cond "' failed") #else -#define _GD_STATIC_ASSERT_VARNAME_CONCAT_B(m_ignore, m_name) m_name -#define _GD_STATIC_ASSERT_VARNAME_CONCAT_A(m_a, m_b) GD_STATIC_ASSERT_VARNAME_CONCAT_B(hello there, m_a##m_b) -#define _GD_STATIC_ASSERT_VARNAME_CONCAT(m_a, m_b) GD_STATIC_ASSERT_VARNAME_CONCAT_A(m_a, m_b) -#define GD_STATIC_ASSERT(m_cond) typedef int GD_STATIC_ASSERT_VARNAME_CONCAT(godot_static_assert_, __COUNTER__)[((m_cond) ? 1 : -1)] +#define GD_STATIC_ASSERT(m_cond) typedef int GD_UNIQUE_NAME(godot_static_assert)[((m_cond) ? 1 : -1)] #endif #undef _NO_RETURN_ diff --git a/main/tests/test_io.h b/modules/mono/utils/mutex_utils.h index ffebd05160..07d659b6eb 100644 --- a/main/tests/test_io.h +++ b/modules/mono/utils/mutex_utils.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* test_io.h */ +/* mutex_utils.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -28,18 +28,40 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef TEST_IO_H -#define TEST_IO_H +#ifndef MUTEX_UTILS_H +#define MUTEX_UTILS_H -/** - @author Juan Linietsky <reduzio@gmail.com> -*/ +#include "core/error_macros.h" +#include "core/os/mutex.h" -#include "core/os/main_loop.h" +#include "macros.h" -namespace TestIO { +class ScopedMutexLock { + Mutex *mutex; -MainLoop *test(); -} +public: + ScopedMutexLock(Mutex *mutex) { + this->mutex = mutex; +#ifndef NO_THREADS +#ifdef DEBUG_ENABLED + CRASH_COND(!mutex); +#endif + this->mutex->lock(); +#endif + } + ~ScopedMutexLock() { +#ifndef NO_THREADS +#ifdef DEBUG_ENABLED + CRASH_COND(!mutex); +#endif + mutex->unlock(); #endif + } +}; + +#define SCOPED_MUTEX_LOCK(m_mutex) ScopedMutexLock GD_UNIQUE_NAME(__scoped_mutex_lock__)(m_mutex); + +// TODO: Add version that receives a lambda instead, once C++11 is allowed + +#endif // MUTEX_UTILS_H diff --git a/platform/android/SCsub b/platform/android/SCsub index da2219b9e4..6d5af99bc5 100644 --- a/platform/android/SCsub +++ b/platform/android/SCsub @@ -10,9 +10,7 @@ from detect import get_ndk_version android_files = [ 'os_android.cpp', - 'godot_android.cpp', 'file_access_android.cpp', - 'dir_access_android.cpp', 'audio_driver_opensl.cpp', 'file_access_jandroid.cpp', 'dir_access_jandroid.cpp', @@ -25,7 +23,6 @@ android_files = [ thirdparty_files = [ 'ifaddrs_android.cpp', - 'android_native_app_glue.c', 'cpu-features.c', ] diff --git a/platform/android/android_native_app_glue.c b/platform/android/android_native_app_glue.c deleted file mode 100644 index 965f6284cd..0000000000 --- a/platform/android/android_native_app_glue.c +++ /dev/null @@ -1,437 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifdef ANDROID_NATIVE_ACTIVITY - -#include <jni.h> - - -#include <errno.h> -#include <string.h> -#include <unistd.h> -#include <sys/resource.h> - -#include "android_native_app_glue.h" -#include <android/log.h> - -#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "threaded_app", __VA_ARGS__)) - -static void free_saved_state(struct android_app* android_app) { - pthread_mutex_lock(&android_app->mutex); - if (android_app->savedState != NULL) { - free(android_app->savedState); - android_app->savedState = NULL; - android_app->savedStateSize = 0; - } - pthread_mutex_unlock(&android_app->mutex); -} - -int8_t android_app_read_cmd(struct android_app* android_app) { - int8_t cmd; - if (read(android_app->msgread, &cmd, sizeof(cmd)) == sizeof(cmd)) { - switch (cmd) { - case APP_CMD_SAVE_STATE: - free_saved_state(android_app); - break; - } - return cmd; - } else { - LOGI("No data on command pipe!"); - } - return -1; -} - -static void print_cur_config(struct android_app* android_app) { - char lang[2], country[2]; - AConfiguration_getLanguage(android_app->config, lang); - AConfiguration_getCountry(android_app->config, country); - - LOGI("Config: mcc=%d mnc=%d lang=%c%c cnt=%c%c orien=%d touch=%d dens=%d " - "keys=%d nav=%d keysHid=%d navHid=%d sdk=%d size=%d long=%d " - "modetype=%d modenight=%d", - AConfiguration_getMcc(android_app->config), - AConfiguration_getMnc(android_app->config), - lang[0], lang[1], country[0], country[1], - AConfiguration_getOrientation(android_app->config), - AConfiguration_getTouchscreen(android_app->config), - AConfiguration_getDensity(android_app->config), - AConfiguration_getKeyboard(android_app->config), - AConfiguration_getNavigation(android_app->config), - AConfiguration_getKeysHidden(android_app->config), - AConfiguration_getNavHidden(android_app->config), - AConfiguration_getSdkVersion(android_app->config), - AConfiguration_getScreenSize(android_app->config), - AConfiguration_getScreenLong(android_app->config), - AConfiguration_getUiModeType(android_app->config), - AConfiguration_getUiModeNight(android_app->config)); -} - -void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd) { - switch (cmd) { - case APP_CMD_INPUT_CHANGED: - LOGI("APP_CMD_INPUT_CHANGED\n"); - pthread_mutex_lock(&android_app->mutex); - if (android_app->inputQueue != NULL) { - AInputQueue_detachLooper(android_app->inputQueue); - } - android_app->inputQueue = android_app->pendingInputQueue; - if (android_app->inputQueue != NULL) { - LOGI("Attaching input queue to looper"); - AInputQueue_attachLooper(android_app->inputQueue, - android_app->looper, LOOPER_ID_INPUT, NULL, - &android_app->inputPollSource); - } - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - break; - - case APP_CMD_INIT_WINDOW: - LOGI("APP_CMD_INIT_WINDOW\n"); - pthread_mutex_lock(&android_app->mutex); - android_app->window = android_app->pendingWindow; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - break; - - case APP_CMD_TERM_WINDOW: - LOGI("APP_CMD_TERM_WINDOW\n"); - pthread_cond_broadcast(&android_app->cond); - break; - - case APP_CMD_RESUME: - case APP_CMD_START: - case APP_CMD_PAUSE: - case APP_CMD_STOP: - LOGI("activityState=%d\n", cmd); - pthread_mutex_lock(&android_app->mutex); - android_app->activityState = cmd; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - break; - - case APP_CMD_CONFIG_CHANGED: - LOGI("APP_CMD_CONFIG_CHANGED\n"); - AConfiguration_fromAssetManager(android_app->config, - android_app->activity->assetManager); - print_cur_config(android_app); - break; - - case APP_CMD_DESTROY: - LOGI("APP_CMD_DESTROY\n"); - android_app->destroyRequested = 1; - break; - } -} - -void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd) { - switch (cmd) { - case APP_CMD_TERM_WINDOW: - LOGI("APP_CMD_TERM_WINDOW\n"); - pthread_mutex_lock(&android_app->mutex); - android_app->window = NULL; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - break; - - case APP_CMD_SAVE_STATE: - LOGI("APP_CMD_SAVE_STATE\n"); - pthread_mutex_lock(&android_app->mutex); - android_app->stateSaved = 1; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - break; - - case APP_CMD_RESUME: - free_saved_state(android_app); - break; - } -} - -void app_dummy() { - -} - -static void android_app_destroy(struct android_app* android_app) { - LOGI("android_app_destroy!"); - free_saved_state(android_app); - pthread_mutex_lock(&android_app->mutex); - if (android_app->inputQueue != NULL) { - AInputQueue_detachLooper(android_app->inputQueue); - } - AConfiguration_delete(android_app->config); - android_app->destroyed = 1; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - // Can't touch android_app object after this. -} - -static void process_input(struct android_app* app, struct android_poll_source* source) { - AInputEvent* event = NULL; - if (AInputQueue_getEvent(app->inputQueue, &event) >= 0) { - LOGI("New input event: type=%d\n", AInputEvent_getType(event)); - if (AInputQueue_preDispatchEvent(app->inputQueue, event)) { - return; - } - int32_t handled = 0; - if (app->onInputEvent != NULL) handled = app->onInputEvent(app, event); - AInputQueue_finishEvent(app->inputQueue, event, handled); - } else { - LOGI("Failure reading next input event: %s\n", strerror(errno)); - } -} - -static void process_cmd(struct android_app* app, struct android_poll_source* source) { - int8_t cmd = android_app_read_cmd(app); - android_app_pre_exec_cmd(app, cmd); - if (app->onAppCmd != NULL) app->onAppCmd(app, cmd); - android_app_post_exec_cmd(app, cmd); -} - -static void* android_app_entry(void* param) { - struct android_app* android_app = (struct android_app*)param; - - android_app->config = AConfiguration_new(); - AConfiguration_fromAssetManager(android_app->config, android_app->activity->assetManager); - - print_cur_config(android_app); - - android_app->cmdPollSource.id = LOOPER_ID_MAIN; - android_app->cmdPollSource.app = android_app; - android_app->cmdPollSource.process = process_cmd; - android_app->inputPollSource.id = LOOPER_ID_INPUT; - android_app->inputPollSource.app = android_app; - android_app->inputPollSource.process = process_input; - - ALooper* looper = ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS); - ALooper_addFd(looper, android_app->msgread, LOOPER_ID_MAIN, ALOOPER_EVENT_INPUT, NULL, - &android_app->cmdPollSource); - android_app->looper = looper; - - pthread_mutex_lock(&android_app->mutex); - android_app->running = 1; - pthread_cond_broadcast(&android_app->cond); - pthread_mutex_unlock(&android_app->mutex); - - android_main(android_app); - - android_app_destroy(android_app); - return NULL; -} - -// -------------------------------------------------------------------- -// Native activity interaction (called from main thread) -// -------------------------------------------------------------------- - -static struct android_app* android_app_create(ANativeActivity* activity, - void* savedState, size_t savedStateSize) { - struct android_app* android_app = (struct android_app*)malloc(sizeof(struct android_app)); - memset(android_app, 0, sizeof(struct android_app)); - android_app->activity = activity; - - pthread_mutex_init(&android_app->mutex, NULL); - pthread_cond_init(&android_app->cond, NULL); - - if (savedState != NULL) { - android_app->savedState = malloc(savedStateSize); - android_app->savedStateSize = savedStateSize; - memcpy(android_app->savedState, savedState, savedStateSize); - } - - int msgpipe[2]; - if (pipe(msgpipe)) { - LOGI("could not create pipe: %s", strerror(errno)); - } - android_app->msgread = msgpipe[0]; - android_app->msgwrite = msgpipe[1]; - - pthread_attr_t attr; - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - pthread_create(&android_app->thread, &attr, android_app_entry, android_app); - - // Wait for thread to start. - pthread_mutex_lock(&android_app->mutex); - while (!android_app->running) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - pthread_mutex_unlock(&android_app->mutex); - - return android_app; -} - -static void android_app_write_cmd(struct android_app* android_app, int8_t cmd) { - if (write(android_app->msgwrite, &cmd, sizeof(cmd)) != sizeof(cmd)) { - LOGI("Failure writing android_app cmd: %s\n", strerror(errno)); - } -} - -static void android_app_set_input(struct android_app* android_app, AInputQueue* inputQueue) { - pthread_mutex_lock(&android_app->mutex); - android_app->pendingInputQueue = inputQueue; - android_app_write_cmd(android_app, APP_CMD_INPUT_CHANGED); - while (android_app->inputQueue != android_app->pendingInputQueue) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - pthread_mutex_unlock(&android_app->mutex); -} - -static void android_app_set_window(struct android_app* android_app, ANativeWindow* window) { - pthread_mutex_lock(&android_app->mutex); - if (android_app->pendingWindow != NULL) { - android_app_write_cmd(android_app, APP_CMD_TERM_WINDOW); - } - android_app->pendingWindow = window; - if (window != NULL) { - android_app_write_cmd(android_app, APP_CMD_INIT_WINDOW); - } - while (android_app->window != android_app->pendingWindow) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - pthread_mutex_unlock(&android_app->mutex); -} - -static void android_app_set_activity_state(struct android_app* android_app, int8_t cmd) { - pthread_mutex_lock(&android_app->mutex); - android_app_write_cmd(android_app, cmd); - while (android_app->activityState != cmd) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - pthread_mutex_unlock(&android_app->mutex); -} - -static void android_app_free(struct android_app* android_app) { - pthread_mutex_lock(&android_app->mutex); - android_app_write_cmd(android_app, APP_CMD_DESTROY); - while (!android_app->destroyed) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - pthread_mutex_unlock(&android_app->mutex); - - close(android_app->msgread); - close(android_app->msgwrite); - pthread_cond_destroy(&android_app->cond); - pthread_mutex_destroy(&android_app->mutex); - free(android_app); -} - -static void onDestroy(ANativeActivity* activity) { - LOGI("Destroy: %p\n", activity); - android_app_free((struct android_app*)activity->instance); -} - -static void onStart(ANativeActivity* activity) { - LOGI("Start: %p\n", activity); - android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_START); -} - -static void onResume(ANativeActivity* activity) { - LOGI("Resume: %p\n", activity); - android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_RESUME); -} - -static void* onSaveInstanceState(ANativeActivity* activity, size_t* outLen) { - struct android_app* android_app = (struct android_app*)activity->instance; - void* savedState = NULL; - - LOGI("SaveInstanceState: %p\n", activity); - pthread_mutex_lock(&android_app->mutex); - android_app->stateSaved = 0; - android_app_write_cmd(android_app, APP_CMD_SAVE_STATE); - while (!android_app->stateSaved) { - pthread_cond_wait(&android_app->cond, &android_app->mutex); - } - - if (android_app->savedState != NULL) { - savedState = android_app->savedState; - *outLen = android_app->savedStateSize; - android_app->savedState = NULL; - android_app->savedStateSize = 0; - } - - pthread_mutex_unlock(&android_app->mutex); - - return savedState; -} - -static void onPause(ANativeActivity* activity) { - LOGI("Pause: %p\n", activity); - android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_PAUSE); -} - -static void onStop(ANativeActivity* activity) { - LOGI("Stop: %p\n", activity); - android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_STOP); -} - -static void onConfigurationChanged(ANativeActivity* activity) { - struct android_app* android_app = (struct android_app*)activity->instance; - LOGI("ConfigurationChanged: %p\n", activity); - android_app_write_cmd(android_app, APP_CMD_CONFIG_CHANGED); -} - -static void onLowMemory(ANativeActivity* activity) { - struct android_app* android_app = (struct android_app*)activity->instance; - LOGI("LowMemory: %p\n", activity); - android_app_write_cmd(android_app, APP_CMD_LOW_MEMORY); -} - -static void onWindowFocusChanged(ANativeActivity* activity, int focused) { - LOGI("WindowFocusChanged: %p -- %d\n", activity, focused); - android_app_write_cmd((struct android_app*)activity->instance, - focused ? APP_CMD_GAINED_FOCUS : APP_CMD_LOST_FOCUS); -} - -static void onNativeWindowCreated(ANativeActivity* activity, ANativeWindow* window) { - LOGI("NativeWindowCreated: %p -- %p\n", activity, window); - android_app_set_window((struct android_app*)activity->instance, window); -} - -static void onNativeWindowDestroyed(ANativeActivity* activity, ANativeWindow* window) { - LOGI("NativeWindowDestroyed: %p -- %p\n", activity, window); - android_app_set_window((struct android_app*)activity->instance, NULL); -} - -static void onInputQueueCreated(ANativeActivity* activity, AInputQueue* queue) { - LOGI("InputQueueCreated: %p -- %p\n", activity, queue); - android_app_set_input((struct android_app*)activity->instance, queue); -} - -static void onInputQueueDestroyed(ANativeActivity* activity, AInputQueue* queue) { - LOGI("InputQueueDestroyed: %p -- %p\n", activity, queue); - android_app_set_input((struct android_app*)activity->instance, NULL); -} - -void ANativeActivity_onCreate(ANativeActivity* activity, - void* savedState, size_t savedStateSize) { - LOGI("Creating: %p\n", activity); - activity->callbacks->onDestroy = onDestroy; - activity->callbacks->onStart = onStart; - activity->callbacks->onResume = onResume; - activity->callbacks->onSaveInstanceState = onSaveInstanceState; - activity->callbacks->onPause = onPause; - activity->callbacks->onStop = onStop; - activity->callbacks->onConfigurationChanged = onConfigurationChanged; - activity->callbacks->onLowMemory = onLowMemory; - activity->callbacks->onWindowFocusChanged = onWindowFocusChanged; - activity->callbacks->onNativeWindowCreated = onNativeWindowCreated; - activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyed; - activity->callbacks->onInputQueueCreated = onInputQueueCreated; - activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyed; - - activity->instance = android_app_create(activity, savedState, savedStateSize); -} -#endif diff --git a/platform/android/android_native_app_glue.h b/platform/android/android_native_app_glue.h deleted file mode 100644 index 36278d4c66..0000000000 --- a/platform/android/android_native_app_glue.h +++ /dev/null @@ -1,351 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef _ANDROID_NATIVE_APP_GLUE_H -#define _ANDROID_NATIVE_APP_GLUE_H -#ifdef ANDROID_NATIVE_ACTIVITY - -#include <poll.h> -#include <pthread.h> -#include <sched.h> - -#include <android/configuration.h> -#include <android/looper.h> -#include <android/native_activity.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * The native activity interface provided by <android/native_activity.h> - * is based on a set of application-provided callbacks that will be called - * by the Activity's main thread when certain events occur. - * - * This means that each one of this callbacks _should_ _not_ block, or they - * risk having the system force-close the application. This programming - * model is direct, lightweight, but constraining. - * - * The 'threaded_native_app' static library is used to provide a different - * execution model where the application can implement its own main event - * loop in a different thread instead. Here's how it works: - * - * 1/ The application must provide a function named "android_main()" that - * will be called when the activity is created, in a new thread that is - * distinct from the activity's main thread. - * - * 2/ android_main() receives a pointer to a valid "android_app" structure - * that contains references to other important objects, e.g. the - * ANativeActivity obejct instance the application is running in. - * - * 3/ the "android_app" object holds an ALooper instance that already - * listens to two important things: - * - * - activity lifecycle events (e.g. "pause", "resume"). See APP_CMD_XXX - * declarations below. - * - * - input events coming from the AInputQueue attached to the activity. - * - * Each of these correspond to an ALooper identifier returned by - * ALooper_pollOnce with values of LOOPER_ID_MAIN and LOOPER_ID_INPUT, - * respectively. - * - * Your application can use the same ALooper to listen to additional - * file-descriptors. They can either be callback based, or with return - * identifiers starting with LOOPER_ID_USER. - * - * 4/ Whenever you receive a LOOPER_ID_MAIN or LOOPER_ID_INPUT event, - * the returned data will point to an android_poll_source structure. You - * can call the process() function on it, and fill in android_app->onAppCmd - * and android_app->onInputEvent to be called for your own processing - * of the event. - * - * Alternatively, you can call the low-level functions to read and process - * the data directly... look at the process_cmd() and process_input() - * implementations in the glue to see how to do this. - * - * See the sample named "native-activity" that comes with the NDK with a - * full usage example. Also look at the JavaDoc of NativeActivity. - */ - -struct android_app; - -/** - * Data associated with an ALooper fd that will be returned as the "outData" - * when that source has data ready. - */ -struct android_poll_source { - // The identifier of this source. May be LOOPER_ID_MAIN or - // LOOPER_ID_INPUT. - int32_t id; - - // The android_app this ident is associated with. - struct android_app* app; - - // Function to call to perform the standard processing of data from - // this source. - void (*process)(struct android_app* app, struct android_poll_source* source); -}; - -/** - * This is the interface for the standard glue code of a threaded - * application. In this model, the application's code is running - * in its own thread separate from the main thread of the process. - * It is not required that this thread be associated with the Java - * VM, although it will need to be in order to make JNI calls any - * Java objects. - */ -struct android_app { - // The application can place a pointer to its own state object - // here if it likes. - void* userData; - - // Fill this in with the function to process main app commands (APP_CMD_*) - void (*onAppCmd)(struct android_app* app, int32_t cmd); - - // Fill this in with the function to process input events. At this point - // the event has already been pre-dispatched, and it will be finished upon - // return. Return 1 if you have handled the event, 0 for any default - // dispatching. - int32_t (*onInputEvent)(struct android_app* app, AInputEvent* event); - - // The ANativeActivity object instance that this app is running in. - ANativeActivity* activity; - - // The current configuration the app is running in. - AConfiguration* config; - - // This is the last instance's saved state, as provided at creation time. - // It is NULL if there was no state. You can use this as you need; the - // memory will remain around until you call android_app_exec_cmd() for - // APP_CMD_RESUME, at which point it will be freed and savedState set to NULL. - // These variables should only be changed when processing a APP_CMD_SAVE_STATE, - // at which point they will be initialized to NULL and you can malloc your - // state and place the information here. In that case the memory will be - // freed for you later. - void* savedState; - size_t savedStateSize; - - // The ALooper associated with the app's thread. - ALooper* looper; - - // When non-NULL, this is the input queue from which the app will - // receive user input events. - AInputQueue* inputQueue; - - // When non-NULL, this is the window surface that the app can draw in. - ANativeWindow* window; - - // Current content rectangle of the window; this is the area where the - // window's content should be placed to be seen by the user. - ARect contentRect; - - // Current state of the app's activity. May be either APP_CMD_START, - // APP_CMD_RESUME, APP_CMD_PAUSE, or APP_CMD_STOP; see below. - int activityState; - - // This is non-zero when the application's NativeActivity is being - // destroyed and waiting for the app thread to complete. - int destroyRequested; - - // ------------------------------------------------- - // Below are "private" implementation of the glue code. - - pthread_mutex_t mutex; - pthread_cond_t cond; - - int msgread; - int msgwrite; - - pthread_t thread; - - struct android_poll_source cmdPollSource; - struct android_poll_source inputPollSource; - - int running; - int stateSaved; - int destroyed; - int redrawNeeded; - AInputQueue* pendingInputQueue; - ANativeWindow* pendingWindow; - ARect pendingContentRect; -}; - -enum { - /** - * Looper data ID of commands coming from the app's main thread, which - * is returned as an identifier from ALooper_pollOnce(). The data for this - * identifier is a pointer to an android_poll_source structure. - * These can be retrieved and processed with android_app_read_cmd() - * and android_app_exec_cmd(). - */ - LOOPER_ID_MAIN = 1, - - /** - * Looper data ID of events coming from the AInputQueue of the - * application's window, which is returned as an identifier from - * ALooper_pollOnce(). The data for this identifier is a pointer to an - * android_poll_source structure. These can be read via the inputQueue - * object of android_app. - */ - LOOPER_ID_INPUT = 2, - - /** - * Start of user-defined ALooper identifiers. - */ - LOOPER_ID_USER = 3, -}; - -enum { - /** - * Command from main thread: the AInputQueue has changed. Upon processing - * this command, android_app->inputQueue will be updated to the new queue - * (or NULL). - */ - APP_CMD_INPUT_CHANGED, - - /** - * Command from main thread: a new ANativeWindow is ready for use. Upon - * receiving this command, android_app->window will contain the new window - * surface. - */ - APP_CMD_INIT_WINDOW, - - /** - * Command from main thread: the existing ANativeWindow needs to be - * terminated. Upon receiving this command, android_app->window still - * contains the existing window; after calling android_app_exec_cmd - * it will be set to NULL. - */ - APP_CMD_TERM_WINDOW, - - /** - * Command from main thread: the current ANativeWindow has been resized. - * Please redraw with its new size. - */ - APP_CMD_WINDOW_RESIZED, - - /** - * Command from main thread: the system needs that the current ANativeWindow - * be redrawn. You should redraw the window before handing this to - * android_app_exec_cmd() in order to avoid transient drawing glitches. - */ - APP_CMD_WINDOW_REDRAW_NEEDED, - - /** - * Command from main thread: the content area of the window has changed, - * such as from the soft input window being shown or hidden. You can - * find the new content rect in android_app::contentRect. - */ - APP_CMD_CONTENT_RECT_CHANGED, - - /** - * Command from main thread: the app's activity window has gained - * input focus. - */ - APP_CMD_GAINED_FOCUS, - - /** - * Command from main thread: the app's activity window has lost - * input focus. - */ - APP_CMD_LOST_FOCUS, - - /** - * Command from main thread: the current device configuration has changed. - */ - APP_CMD_CONFIG_CHANGED, - - /** - * Command from main thread: the system is running low on memory. - * Try to reduce your memory use. - */ - APP_CMD_LOW_MEMORY, - - /** - * Command from main thread: the app's activity has been started. - */ - APP_CMD_START, - - /** - * Command from main thread: the app's activity has been resumed. - */ - APP_CMD_RESUME, - - /** - * Command from main thread: the app should generate a new saved state - * for itself, to restore from later if needed. If you have saved state, - * allocate it with malloc and place it in android_app.savedState with - * the size in android_app.savedStateSize. The will be freed for you - * later. - */ - APP_CMD_SAVE_STATE, - - /** - * Command from main thread: the app's activity has been paused. - */ - APP_CMD_PAUSE, - - /** - * Command from main thread: the app's activity has been stopped. - */ - APP_CMD_STOP, - - /** - * Command from main thread: the app's activity is being destroyed, - * and waiting for the app thread to clean up and exit before proceeding. - */ - APP_CMD_DESTROY, -}; - -/** - * Call when ALooper_pollAll() returns LOOPER_ID_MAIN, reading the next - * app command message. - */ -int8_t android_app_read_cmd(struct android_app* android_app); - -/** - * Call with the command returned by android_app_read_cmd() to do the - * initial pre-processing of the given command. You can perform your own - * actions for the command after calling this function. - */ -void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd); - -/** - * Call with the command returned by android_app_read_cmd() to do the - * final post-processing of the given command. You must have done your own - * actions for the command before calling this function. - */ -void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd); - -/** - * Dummy function you can call to ensure glue code isn't stripped. - */ -void app_dummy(); - -/** - * This is the function that application code must implement, representing - * the main entry to the app. - */ -extern void android_main(struct android_app* app); - -#ifdef __cplusplus -} -#endif - -#endif /* _ANDROID_NATIVE_APP_GLUE_H */ -#endif diff --git a/platform/android/audio_driver_jandroid.cpp b/platform/android/audio_driver_jandroid.cpp index 4fab40d534..b75a4a3869 100644 --- a/platform/android/audio_driver_jandroid.cpp +++ b/platform/android/audio_driver_jandroid.cpp @@ -34,8 +34,6 @@ #include "core/project_settings.h" #include "thread_jandroid.h" -#ifndef ANDROID_NATIVE_ACTIVITY - AudioDriverAndroid *AudioDriverAndroid::s_ad = NULL; jobject AudioDriverAndroid::io; @@ -204,5 +202,3 @@ AudioDriverAndroid::AudioDriverAndroid() { s_ad = this; active = false; } - -#endif diff --git a/platform/android/audio_driver_jandroid.h b/platform/android/audio_driver_jandroid.h index 763f0e9b5a..3c51ed746d 100644 --- a/platform/android/audio_driver_jandroid.h +++ b/platform/android/audio_driver_jandroid.h @@ -33,8 +33,6 @@ #include "servers/audio_server.h" -#ifndef ANDROID_NATIVE_ACTIVITY - #include "java_glue.h" class AudioDriverAndroid : public AudioDriver { @@ -78,5 +76,4 @@ public: AudioDriverAndroid(); }; -#endif #endif // AUDIO_DRIVER_ANDROID_H diff --git a/platform/android/dir_access_android.cpp b/platform/android/dir_access_android.cpp deleted file mode 100644 index 402da4527e..0000000000 --- a/platform/android/dir_access_android.cpp +++ /dev/null @@ -1,190 +0,0 @@ -/*************************************************************************/ -/* dir_access_android.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2018 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. */ -/*************************************************************************/ - -#ifdef ANDROID_NATIVE_ACTIVITY -#include "dir_access_android.h" -#include "file_access_android.h" - -DirAccess *DirAccessAndroid::create_fs() { - - return memnew(DirAccessAndroid); -} - -Error DirAccessAndroid::list_dir_begin() { - - list_dir_end(); - - AAssetDir *aad = AAssetManager_openDir(FileAccessAndroid::asset_manager, current_dir.utf8().get_data()); - if (!aad) - return ERR_CANT_OPEN; //nothing - - return OK; -} - -String DirAccessAndroid::get_next() { - - const char *fn = AAssetDir_getNextFileName(aad); - if (!fn) - return ""; - String s; - s.parse_utf8(fn); - current = s; - return s; -} - -bool DirAccessAndroid::current_is_dir() const { - - String sd; - if (current_dir == "") - sd = current; - else - sd = current_dir + "/" + current; - - AAssetDir *aad2 = AAssetManager_openDir(FileAccessAndroid::asset_manager, sd.utf8().get_data()); - if (aad2) { - - AAssetDir_close(aad2); - return true; - } - - return false; -} - -bool DirAccessAndroid::current_is_hidden() const { - return current != "." && current != ".." && current.begins_with("."); -} - -void DirAccessAndroid::list_dir_end() { - - if (aad == NULL) - return; - - AAssetDir_close(aad); - aad = NULL; -} - -int DirAccessAndroid::get_drive_count() { - - return 0; -} - -String DirAccessAndroid::get_drive(int p_drive) { - - return ""; -} - -Error DirAccessAndroid::change_dir(String p_dir) { - - p_dir = p_dir.simplify_path(); - - if (p_dir == "" || p_dir == "." || (p_dir == ".." && current_dir == "")) - return OK; - - String new_dir; - - if (p_dir.begins_with("/")) - new_dir = p_dir.substr(1, p_dir.length()); - else if (p_dir.begins_with("res://")) - new_dir = p_dir.substr(6, p_dir.length()); - else //relative - new_dir = new_dir + "/" + p_dir; - - //test if newdir exists - new_dir = new_dir.simplify_path(); - - AAssetDir *aad = AAssetManager_openDir(FileAccessAndroid::asset_manager, new_dir.utf8().get_data()); - if (aad) { - - current_dir = new_dir; - AAssetDir_close(aad); - return OK; - } - - return ERR_INVALID_PARAMETER; -} - -String DirAccessAndroid::get_current_dir() { - - return "/" + current_dir; -} - -bool DirAccessAndroid::file_exists(String p_file) { - - String sd; - if (current_dir == "") - sd = p_file; - else - sd = current_dir + "/" + p_file; - - AAsset *a = AAssetManager_open(FileAccessAndroid::asset_manager, sd.utf8().get_data(), AASSET_MODE_STREAMING); - if (a) { - AAsset_close(a); - return true; - } - - return false; -} - -Error DirAccessAndroid::make_dir(String p_dir) { - - ERR_FAIL_V(ERR_UNAVAILABLE); -} - -Error DirAccessAndroid::rename(String p_from, String p_to) { - - ERR_FAIL_V(ERR_UNAVAILABLE); -} - -Error DirAccessAndroid::remove(String p_name) { - - ERR_FAIL_V(ERR_UNAVAILABLE); -} - -//FileType get_file_type() const; -size_t DirAccessAndroid::get_space_left() { - - return 0; -} - -void DirAccessAndroid::make_default() { - - instance_func = create_fs; -} - -DirAccessAndroid::DirAccessAndroid() { - - aad = NULL; -} - -DirAccessAndroid::~DirAccessAndroid() { - - list_dir_end(); -} -#endif diff --git a/platform/android/dir_access_android.h b/platform/android/dir_access_android.h deleted file mode 100644 index 3ac0bd6332..0000000000 --- a/platform/android/dir_access_android.h +++ /dev/null @@ -1,80 +0,0 @@ -/*************************************************************************/ -/* dir_access_android.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2018 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 DIR_ACCESS_ANDROID_H -#define DIR_ACCESS_ANDROID_H - -#ifdef ANDROID_NATIVE_ACTIVITY - -#include "core/os/dir_access.h" -#include <android/asset_manager.h> -#include <android/log.h> -#include <android_native_app_glue.h> -#include <stdio.h> - -class DirAccessAndroid : public DirAccess { - - AAssetDir *aad; - String current_dir; - String current; - - static DirAccess *create_fs(); - -public: - virtual Error list_dir_begin(); ///< This starts dir listing - virtual String get_next(); - virtual bool current_is_dir() const; - virtual bool current_is_hidden() const; - virtual void list_dir_end(); ///< - - virtual int get_drive_count(); - virtual String get_drive(int p_drive); - - virtual Error change_dir(String p_dir); ///< can be relative or absolute, return false on success - virtual String get_current_dir(); ///< return current dir location - - virtual bool file_exists(String p_file); - - virtual Error make_dir(String p_dir); - - virtual Error rename(String p_from, String p_to); - virtual Error remove(String p_name); - - //virtual FileType get_file_type() const; - size_t get_space_left(); - - static void make_default(); - - DirAccessAndroid(); - ~DirAccessAndroid(); -}; - -#endif -#endif // DIR_ACCESS_ANDROID_H diff --git a/platform/android/dir_access_jandroid.cpp b/platform/android/dir_access_jandroid.cpp index 6a95277585..679a13217f 100644 --- a/platform/android/dir_access_jandroid.cpp +++ b/platform/android/dir_access_jandroid.cpp @@ -28,8 +28,6 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef ANDROID_NATIVE_ACTIVITY - #include "dir_access_jandroid.h" #include "core/print_string.h" #include "file_access_jandroid.h" @@ -245,4 +243,3 @@ DirAccessJAndroid::~DirAccessJAndroid() { list_dir_end(); } -#endif diff --git a/platform/android/dir_access_jandroid.h b/platform/android/dir_access_jandroid.h index 1653fb0aa5..ea1e11a4f1 100644 --- a/platform/android/dir_access_jandroid.h +++ b/platform/android/dir_access_jandroid.h @@ -31,8 +31,6 @@ #ifndef DIR_ACCESS_JANDROID_H #define DIR_ACCESS_JANDROID_H -#ifndef ANDROID_NATIVE_ACTIVITY - #include "core/os/dir_access.h" #include "java_glue.h" #include <stdio.h> @@ -87,4 +85,3 @@ public: }; #endif // DIR_ACCESS_JANDROID_H -#endif diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index 3766f732e4..a3b5b6dd58 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -672,10 +672,13 @@ class EditorExportAndroid : public EditorExportPlatform { aperms++; } - for (int i = 0; i < MAX_USER_PERMISSIONS; i++) { - String user_perm = p_preset->get("user_permissions/" + itos(i)); - if (user_perm.strip_edges() != "" && user_perm.strip_edges() != "False") - perms.push_back(user_perm.strip_edges()); + PoolStringArray user_perms = p_preset->get("permissions/custom_permissions"); + + for (int i = 0; i < user_perms.size(); i++) { + String user_perm = user_perms[i].strip_edges(); + if (!user_perm.empty()) { + perms.push_back(user_perm); + } } if (p_give_internet) { @@ -1104,10 +1107,6 @@ class EditorExportAndroid : public EditorExportPlatform { } public: - enum { - MAX_USER_PERMISSIONS = 20 - }; - typedef Error (*EditorExportSaveFunction)(void *p_userdata, const String &p_path, const Vector<uint8_t> &p_data, int p_file, int p_total); public: @@ -1169,17 +1168,14 @@ public: r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "architectures/" + abi), is_default)); } + r_options->push_back(ExportOption(PropertyInfo(Variant::POOL_STRING_ARRAY, "permissions/custom_permissions"), PoolStringArray())); + const char **perms = android_perms; while (*perms) { r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "permissions/" + String(*perms).to_lower()), false)); perms++; } - - for (int i = 0; i < MAX_USER_PERMISSIONS; i++) { - - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "user_permissions/" + itos(i)), false)); - } } virtual String get_name() const { diff --git a/platform/android/file_access_jandroid.cpp b/platform/android/file_access_jandroid.cpp index 573200bcf9..bba45ffc1d 100644 --- a/platform/android/file_access_jandroid.cpp +++ b/platform/android/file_access_jandroid.cpp @@ -28,8 +28,6 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef ANDROID_NATIVE_ACTIVITY - #include "file_access_jandroid.h" #include "core/os/os.h" #include "thread_jandroid.h" @@ -212,5 +210,3 @@ FileAccessJAndroid::~FileAccessJAndroid() { if (is_open()) close(); } - -#endif diff --git a/platform/android/file_access_jandroid.h b/platform/android/file_access_jandroid.h index 39c201ba85..98486702ab 100644 --- a/platform/android/file_access_jandroid.h +++ b/platform/android/file_access_jandroid.h @@ -31,8 +31,6 @@ #ifndef FILE_ACCESS_JANDROID_H #define FILE_ACCESS_JANDROID_H -#ifndef ANDROID_NATIVE_ACTIVITY - #include "core/os/file_access.h" #include "java_glue.h" class FileAccessJAndroid : public FileAccess { @@ -81,6 +79,4 @@ public: ~FileAccessJAndroid(); }; -#endif - #endif // FILE_ACCESS_JANDROID_H diff --git a/platform/android/godot_android.cpp b/platform/android/godot_android.cpp deleted file mode 100644 index c46c6f7804..0000000000 --- a/platform/android/godot_android.cpp +++ /dev/null @@ -1,937 +0,0 @@ -/*************************************************************************/ -/* godot_android.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2018 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. */ -/*************************************************************************/ - -#ifdef ANDROID_NATIVE_ACTIVITY - -#include "core/engine.h" -#include "core/project_settings.h" -#include "file_access_android.h" -#include "main/main.h" -#include "os_android.h" - -#include <EGL/egl.h> -#include <android/log.h> -#include <android/sensor.h> -#include <android/window.h> -#include <android_native_app_glue.h> -#include <errno.h> -#include <jni.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "godot", __VA_ARGS__)) -#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "godot", __VA_ARGS__)) - -extern "C" { -JNIEXPORT void JNICALL Java_org_godotengine_godot_Godot_registerSingleton(JNIEnv *env, jobject obj, jstring name, jobject p_object); -JNIEXPORT void JNICALL Java_org_godotengine_godot_Godot_registerMethod(JNIEnv *env, jobject obj, jstring sname, jstring name, jstring ret, jobjectArray args); -JNIEXPORT jstring JNICALL Java_org_godotengine_godot_Godot_getGlobal(JNIEnv *env, jobject obj, jstring path); -}; - -class JNISingleton : public Object { - - GDCLASS(JNISingleton, Object); - - struct MethodData { - - jmethodID method; - Variant::Type ret_type; - Vector<Variant::Type> argtypes; - }; - - jobject instance; - Map<StringName, MethodData> method_map; - JNIEnv *env; - -public: - void update_env(JNIEnv *p_env) { env = p_env; } - - virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error) { - - r_error.error = Variant::CallError::CALL_OK; - - Map<StringName, MethodData>::Element *E = method_map.find(p_method); - if (!E) { - - r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD; - return Variant(); - } - - int ac = E->get().argtypes.size(); - if (ac < p_argcount) { - - r_error.error = Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS; - r_error.argument = ac; - return Variant(); - } - - if (ac > p_argcount) { - - r_error.error = Variant::CallError::CALL_ERROR_TOO_MANY_ARGUMENTS; - r_error.argument = ac; - return Variant(); - } - - for (int i = 0; i < p_argcount; i++) { - - if (!Variant::can_convert(p_args[i]->get_type(), E->get().argtypes[i])) { - - r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; - r_error.argument = i; - r_error.expected = E->get().argtypes[i]; - } - } - - jvalue *v = NULL; - - if (p_argcount) { - - v = (jvalue *)alloca(sizeof(jvalue) * p_argcount); - } - - for (int i = 0; i < p_argcount; i++) { - - switch (E->get().argtypes[i]) { - - case Variant::BOOL: { - - v[i].z = *p_args[i]; - } break; - case Variant::INT: { - - v[i].i = *p_args[i]; - } break; - case Variant::REAL: { - - v[i].f = *p_args[i]; - } break; - case Variant::STRING: { - - String s = *p_args[i]; - jstring jStr = env->NewStringUTF(s.utf8().get_data()); - v[i].l = jStr; - } break; - case Variant::STRING_ARRAY: { - - PoolVector<String> sarray = *p_args[i]; - jobjectArray arr = env->NewObjectArray(sarray.size(), env->FindClass("java/lang/String"), env->NewStringUTF("")); - - for (int j = 0; j < sarray.size(); j++) { - - env->SetObjectArrayElement(arr, j, env->NewStringUTF(sarray[i].utf8().get_data())); - } - v[i].l = arr; - - } break; - case Variant::INT_ARRAY: { - - PoolVector<int> array = *p_args[i]; - jintArray arr = env->NewIntArray(array.size()); - PoolVector<int>::Read r = array.read(); - env->SetIntArrayRegion(arr, 0, array.size(), r.ptr()); - v[i].l = arr; - - } break; - case Variant::REAL_ARRAY: { - - PoolVector<float> array = *p_args[i]; - jfloatArray arr = env->NewFloatArray(array.size()); - PoolVector<float>::Read r = array.read(); - env->SetFloatArrayRegion(arr, 0, array.size(), r.ptr()); - v[i].l = arr; - - } break; - default: { - - ERR_FAIL_V(Variant()); - } break; - } - } - - Variant ret; - - switch (E->get().ret_type) { - - case Variant::NIL: { - - env->CallVoidMethodA(instance, E->get().method, v); - } break; - case Variant::BOOL: { - - ret = env->CallBooleanMethodA(instance, E->get().method, v); - } break; - case Variant::INT: { - - ret = env->CallIntMethodA(instance, E->get().method, v); - } break; - case Variant::REAL: { - - ret = env->CallFloatMethodA(instance, E->get().method, v); - } break; - case Variant::STRING: { - - jobject o = env->CallObjectMethodA(instance, E->get().method, v); - String singname = env->GetStringUTFChars((jstring)o, NULL); - } break; - case Variant::STRING_ARRAY: { - - jobjectArray arr = (jobjectArray)env->CallObjectMethodA(instance, E->get().method, v); - - int stringCount = env->GetArrayLength(arr); - PoolVector<String> sarr; - - for (int i = 0; i < stringCount; i++) { - jstring string = (jstring)env->GetObjectArrayElement(arr, i); - const char *rawString = env->GetStringUTFChars(string, 0); - sarr.push_back(String(rawString)); - } - - ret = sarr; - - } break; - case Variant::INT_ARRAY: { - - jintArray arr = (jintArray)env->CallObjectMethodA(instance, E->get().method, v); - - int fCount = env->GetArrayLength(arr); - PoolVector<int> sarr; - sarr.resize(fCount); - - PoolVector<int>::Write w = sarr.write(); - env->GetIntArrayRegion(arr, 0, fCount, w.ptr()); - w = PoolVector<int>::Write(); - ret = sarr; - } break; - case Variant::REAL_ARRAY: { - - jfloatArray arr = (jfloatArray)env->CallObjectMethodA(instance, E->get().method, v); - - int fCount = env->GetArrayLength(arr); - PoolVector<float> sarr; - sarr.resize(fCount); - - PoolVector<float>::Write w = sarr.write(); - env->GetFloatArrayRegion(arr, 0, fCount, w.ptr()); - w = PoolVector<float>::Write(); - ret = sarr; - } break; - default: { - - ERR_FAIL_V(Variant()); - } break; - } - - return ret; - } - - jobject get_instance() const { - - return instance; - } - void set_instance(jobject p_instance) { - - instance = p_instance; - } - - void add_method(const StringName &p_name, jmethodID p_method, const Vector<Variant::Type> &p_args, Variant::Type p_ret_type) { - - MethodData md; - md.method = p_method; - md.argtypes = p_args; - md.ret_type = p_ret_type; - method_map[p_name] = md; - } - - JNISingleton() {} -}; - -//JNIEnv *JNISingleton::env=NULL; - -static HashMap<String, JNISingleton *> jni_singletons; - -struct engine { - struct android_app *app; - OS_Android *os; - JNIEnv *jni; - - ASensorManager *sensorManager; - const ASensor *accelerometerSensor; - const ASensor *magnetometerSensor; - const ASensor *gyroscopeSensor; - ASensorEventQueue *sensorEventQueue; - - bool display_active; - bool requested_quit; - int animating; - EGLDisplay display; - EGLSurface surface; - EGLContext context; - int32_t width; - int32_t height; -}; - -/** - * Initialize an EGL context for the current display. - */ -static int engine_init_display(struct engine *engine, bool p_gl2) { - // initialize OpenGL ES and EGL - - /* - * Here specify the attributes of the desired configuration. - * Below, we select an EGLConfig with at least 8 bits per color - * component compatible with on-screen windows - */ - const EGLint gl2_attribs[] = { - // EGL_SURFACE_TYPE, EGL_WINDOW_BIT, - EGL_BLUE_SIZE, 4, - EGL_GREEN_SIZE, 4, - EGL_RED_SIZE, 4, - EGL_ALPHA_SIZE, 0, - EGL_DEPTH_SIZE, 16, - EGL_STENCIL_SIZE, EGL_DONT_CARE, - EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, - EGL_NONE - }; - - const EGLint gl1_attribs[] = { - // EGL_SURFACE_TYPE, EGL_WINDOW_BIT, - EGL_BLUE_SIZE, 4, - EGL_GREEN_SIZE, 4, - EGL_RED_SIZE, 4, - EGL_ALPHA_SIZE, 0, - EGL_DEPTH_SIZE, 16, - EGL_STENCIL_SIZE, EGL_DONT_CARE, - EGL_NONE - }; - - const EGLint *attribs = p_gl2 ? gl2_attribs : gl1_attribs; - - EGLint w, h, dummy, format; - EGLint numConfigs; - EGLConfig config; - EGLSurface surface; - EGLContext context; - - EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY); - - eglInitialize(display, 0, 0); - - /* Here, the application chooses the configuration it desires. In this - * sample, we have a very simplified selection process, where we pick - * the first EGLConfig that matches our criteria */ - - eglChooseConfig(display, attribs, &config, 1, &numConfigs); - - LOGI("Num configs: %i\n", numConfigs); - - /* EGL_NATIVE_VISUAL_ID is an attribute of the EGLConfig that is - * guaranteed to be accepted by ANativeWindow_setBuffersGeometry(). - * As soon as we picked a EGLConfig, we can safely reconfigure the - * ANativeWindow buffers to match, using EGL_NATIVE_VISUAL_ID. */ - eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &format); - - ANativeWindow_setBuffersGeometry(engine->app->window, 0, 0, format); - //ANativeWindow_setFlags(engine->app->window, 0, 0, format|); - - surface = eglCreateWindowSurface(display, config, engine->app->window, NULL); - - const EGLint context_attribs[] = { - EGL_CONTEXT_CLIENT_VERSION, 2, - EGL_NONE - }; - context = eglCreateContext(display, config, EGL_NO_CONTEXT, p_gl2 ? context_attribs : NULL); - - if (eglMakeCurrent(display, surface, surface, context) == EGL_FALSE) { - LOGW("Unable to eglMakeCurrent"); - return -1; - } - - eglQuerySurface(display, surface, EGL_WIDTH, &w); - eglQuerySurface(display, surface, EGL_HEIGHT, &h); - - //engine->os->set_egl_extensions(eglQueryString(display,EGL_EXTENSIONS)); - engine->os->init_video_mode(w, h); - - engine->display = display; - engine->context = context; - engine->surface = surface; - engine->width = w; - engine->height = h; - engine->display_active = true; - - //engine->state.angle = 0; - - // Initialize GL state. - //glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); - glEnable(GL_CULL_FACE); - // glShadeModel(GL_SMOOTH); - glDisable(GL_DEPTH_TEST); - LOGI("GL Version: %s - %s %s\n", glGetString(GL_VERSION), glGetString(GL_VENDOR), glGetString(GL_RENDERER)); - - return 0; -} - -static void engine_draw_frame(struct engine *engine) { - if (engine->display == NULL) { - // No display. - return; - } - - // Just fill the screen with a color. - //glClearColor(0,1,0,1); - //glClear(GL_COLOR_BUFFER_BIT); - if (engine->os && engine->os->main_loop_iterate()) { - - engine->requested_quit = true; - return; //should exit instead - } - - eglSwapBuffers(engine->display, engine->surface); -} - -static void engine_term_display(struct engine *engine) { - if (engine->display != EGL_NO_DISPLAY) { - eglMakeCurrent(engine->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - if (engine->context != EGL_NO_CONTEXT) { - eglDestroyContext(engine->display, engine->context); - } - if (engine->surface != EGL_NO_SURFACE) { - eglDestroySurface(engine->display, engine->surface); - } - eglTerminate(engine->display); - } - - engine->animating = 0; - engine->display = EGL_NO_DISPLAY; - engine->context = EGL_NO_CONTEXT; - engine->surface = EGL_NO_SURFACE; - engine->display_active = false; -} - -/** - * Process the next input event. - */ -static int32_t engine_handle_input(struct android_app *app, AInputEvent *event) { - struct engine *engine = (struct engine *)app->userData; - - if (!engine->os) - return 0; - - switch (AInputEvent_getType(event)) { - - case AINPUT_EVENT_TYPE_KEY: { - - int ac = AKeyEvent_getAction(event); - switch (ac) { - - case AKEY_EVENT_ACTION_DOWN: { - - int32_t code = AKeyEvent_getKeyCode(event); - if (code == AKEYCODE_BACK) { - - //AInputQueue_finishEvent(AInputQueue* queue, AInputEvent* event, int handled); - if (engine->os) - engine->os->main_loop_request_quit(); - return 1; - } - - } break; - case AKEY_EVENT_ACTION_UP: { - - } break; - } - - } break; - case AINPUT_EVENT_TYPE_MOTION: { - - Vector<OS_Android::TouchPos> touchvec; - - int pc = AMotionEvent_getPointerCount(event); - - touchvec.resize(pc); - - for (int i = 0; i < pc; i++) { - - touchvec[i].pos.x = AMotionEvent_getX(event, i); - touchvec[i].pos.y = AMotionEvent_getY(event, i); - touchvec[i].id = AMotionEvent_getPointerId(event, i); - } - - //System.out.printf("gaction: %d\n",event.getAction()); - int pidx = (AMotionEvent_getAction(event) & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> 8; - switch (AMotionEvent_getAction(event) & AMOTION_EVENT_ACTION_MASK) { - - case AMOTION_EVENT_ACTION_DOWN: { - engine->os->process_touch(0, 0, touchvec); - - //System.out.printf("action down at: %f,%f\n", event.getX(),event.getY()); - } break; - case AMOTION_EVENT_ACTION_MOVE: { - engine->os->process_touch(1, 0, touchvec); - /* - for(int i=0;i<event.getPointerCount();i++) { - System.out.printf("%d - moved to: %f,%f\n",i, event.getX(i),event.getY(i)); - } - */ - } break; - case AMOTION_EVENT_ACTION_POINTER_UP: { - - engine->os->process_touch(4, pidx, touchvec); - //System.out.printf("%d - s.up at: %f,%f\n",pointer_idx, event.getX(pointer_idx),event.getY(pointer_idx)); - } break; - case AMOTION_EVENT_ACTION_POINTER_DOWN: { - engine->os->process_touch(3, pidx, touchvec); - //System.out.printf("%d - s.down at: %f,%f\n",pointer_idx, event.getX(pointer_idx),event.getY(pointer_idx)); - } break; - case AMOTION_EVENT_ACTION_CANCEL: - case AMOTION_EVENT_ACTION_UP: { - engine->os->process_touch(2, 0, touchvec); - /* - for(int i=0;i<event.getPointerCount();i++) { - System.out.printf("%d - up! %f,%f\n",i, event.getX(i),event.getY(i)); - } - */ - } break; - } - - return 1; - } break; - } - - return 0; -} - -/** - * Process the next main command. - */ - -static void _gfx_init(void *ud, bool p_gl2) { - - struct engine *engine = (struct engine *)ud; - engine_init_display(engine, p_gl2); -} - -static void engine_handle_cmd(struct android_app *app, int32_t cmd) { - struct engine *engine = (struct engine *)app->userData; - // LOGI("**** CMD %i\n",cmd); - switch (cmd) { - case APP_CMD_SAVE_STATE: - // The system has asked us to save our current state. Do so. - //engine->app->savedState = malloc(sizeof(struct saved_state)); - //*((struct saved_state*)engine->app->savedState) = engine->state; - //engine->app->savedStateSize = sizeof(struct saved_state); - break; - case APP_CMD_CONFIG_CHANGED: - case APP_CMD_WINDOW_RESIZED: { - - if (engine->display_active) { - - EGLint w, h; - eglQuerySurface(engine->display, engine->surface, EGL_WIDTH, &w); - eglQuerySurface(engine->display, engine->surface, EGL_HEIGHT, &h); - // if (w==engine->os->get_video_mode().width && h==engine->os->get_video_mode().height) - // break; - - engine_term_display(engine); - } - - engine->os->reload_gfx(); - engine_draw_frame(engine); - engine->animating = 1; - - } break; - case APP_CMD_INIT_WINDOW: - //The window is being shown, get it ready. - //LOGI("INIT WINDOW"); - if (engine->app->window != NULL) { - - if (engine->os == NULL) { - - //do initialization here, when there's OpenGL! hackish but the only way - engine->os = new OS_Android(_gfx_init, engine); - - __android_log_print(ANDROID_LOG_INFO, "godot", "pre asdasd setup..."); - - Error err = Main::setup("apk", 0, NULL); - - String modules = ProjectSettings::get_singleton()->get("android/modules"); - Vector<String> mods = modules.split(",", false); - mods.push_back("GodotOS"); - __android_log_print(ANDROID_LOG_INFO, "godot", "mod count: %i", mods.size()); - - if (mods.size()) { - - jclass activityClass = engine->jni->FindClass("android/app/NativeActivity"); - - jmethodID getClassLoader = engine->jni->GetMethodID(activityClass, "getClassLoader", "()Ljava/lang/ClassLoader;"); - - jobject cls = engine->jni->CallObjectMethod(app->activity->clazz, getClassLoader); - - jclass classLoader = engine->jni->FindClass("java/lang/ClassLoader"); - - jmethodID findClass = engine->jni->GetMethodID(classLoader, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); - - static JNINativeMethod methods[] = { - { "registerSingleton", "(Ljava/lang/String;Ljava/lang/Object;)V", (void *)&Java_org_godotengine_godot_Godot_registerSingleton }, - { "registerMethod", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V", (void *)&Java_org_godotengine_godot_Godot_registerMethod }, - { "getGlobal", "(Ljava/lang/String;)Ljava/lang/String;", (void *)&Java_org_godotengine_godot_Godot_getGlobal }, - }; - - jstring gstrClassName = engine->jni->NewStringUTF("org/godotengine/godot/Godot"); - jclass GodotClass = (jclass)engine->jni->CallObjectMethod(cls, findClass, gstrClassName); - - __android_log_print(ANDROID_LOG_INFO, "godot", "godot ****^*^*?^*^*class data %x", GodotClass); - - engine->jni->RegisterNatives(GodotClass, methods, sizeof(methods) / sizeof(methods[0])); - - for (int i = 0; i < mods.size(); i++) { - - String m = mods[i]; - //jclass singletonClass = engine->jni->FindClass(m.utf8().get_data()); - - jstring strClassName = engine->jni->NewStringUTF(m.utf8().get_data()); - jclass singletonClass = (jclass)engine->jni->CallObjectMethod(cls, findClass, strClassName); - - __android_log_print(ANDROID_LOG_INFO, "godot", "****^*^*?^*^*class data %x", singletonClass); - jmethodID initialize = engine->jni->GetStaticMethodID(singletonClass, "initialize", "(Landroid/app/Activity;)Lorg/godotengine/godot/Godot$SingletonBase;"); - - jobject obj = engine->jni->CallStaticObjectMethod(singletonClass, initialize, app->activity->clazz); - __android_log_print(ANDROID_LOG_INFO, "godot", "****^*^*?^*^*class instance %x", obj); - jobject gob = engine->jni->NewGlobalRef(obj); - } - } - - if (!Main::start()) - return; //should exit instead and print the error - - engine->os->main_loop_begin(); - } else { - //i guess recreate resources? - engine->os->reload_gfx(); - } - - engine->animating = 1; - engine_draw_frame(engine); - } - break; - case APP_CMD_TERM_WINDOW: - // The window is being hidden or closed, clean it up. - //LOGI("TERM WINDOW"); - engine_term_display(engine); - break; - case APP_CMD_GAINED_FOCUS: - // When our app gains focus, we start monitoring the accelerometer. - if (engine->accelerometerSensor != NULL) { - ASensorEventQueue_enableSensor(engine->sensorEventQueue, - engine->accelerometerSensor); - // We'd like to get 60 events per second (in us). - ASensorEventQueue_setEventRate(engine->sensorEventQueue, - engine->accelerometerSensor, (1000L / 60) * 1000); - } - // start monitoring gravity - if (engine->gravitySensor != NULL) { - ASensorEventQueue_enableSensor(engine->sensorEventQueue, - engine->gravitySensor); - // We'd like to get 60 events per second (in us). - ASensorEventQueue_setEventRate(engine->sensorEventQueue, - engine->gravitySensor, (1000L / 60) * 1000); - } - // Also start monitoring the magnetometer. - if (engine->magnetometerSensor != NULL) { - ASensorEventQueue_enableSensor(engine->sensorEventQueue, - engine->magnetometerSensor); - // We'd like to get 60 events per second (in us). - ASensorEventQueue_setEventRate(engine->sensorEventQueue, - engine->magnetometerSensor, (1000L / 60) * 1000); - } - // And the gyroscope. - if (engine->gyroscopeSensor != NULL) { - ASensorEventQueue_enableSensor(engine->sensorEventQueue, - engine->gyroscopeSensor); - // We'd like to get 60 events per second (in us). - ASensorEventQueue_setEventRate(engine->sensorEventQueue, - engine->gyroscopeSensor, (1000L / 60) * 1000); - } - engine->animating = 1; - break; - case APP_CMD_LOST_FOCUS: - // When our app loses focus, we stop monitoring the sensors. - // This is to avoid consuming battery while not being used. - if (engine->accelerometerSensor != NULL) { - ASensorEventQueue_disableSensor(engine->sensorEventQueue, - engine->accelerometerSensor); - } - if (engine->gravitySensor != NULL) { - ASensorEventQueue_disableSensor(engine->sensorEventQueue, - engine->gravitySensor); - } - if (engine->magnetometerSensor != NULL) { - ASensorEventQueue_disableSensor(engine->sensorEventQueue, - engine->magnetometerSensor); - } - if (engine->gyroscopeSensor != NULL) { - ASensorEventQueue_disableSensor(engine->sensorEventQueue, - engine->gyroscopeSensor); - } - // Also stop animating. - engine->animating = 0; - engine_draw_frame(engine); - break; - } -} - -void android_main(struct android_app *app) { - struct engine engine; - // Make sure glue isn't stripped. - app_dummy(); - - memset(&engine, 0, sizeof(engine)); - app->userData = &engine; - app->onAppCmd = engine_handle_cmd; - app->onInputEvent = engine_handle_input; - engine.app = app; - engine.requested_quit = false; - engine.os = NULL; - engine.display_active = false; - - FileAccessAndroid::asset_manager = app->activity->assetManager; - - // Prepare to monitor sensors - engine.sensorManager = ASensorManager_getInstance(); - engine.accelerometerSensor = ASensorManager_getDefaultSensor(engine.sensorManager, - ASENSOR_TYPE_ACCELEROMETER); - engine.gravitySensor = ASensorManager_getDefaultSensor(engine.sensorManager, - ASENSOR_TYPE_GRAVITY); - engine.magnetometerSensor = ASensorManager_getDefaultSensor(engine.sensorManager, - ASENSOR_TYPE_MAGNETIC_FIELD); - engine.gyroscopeSensor = ASensorManager_getDefaultSensor(engine.sensorManager, - ASENSOR_TYPE_GYROSCOPE); - engine.sensorEventQueue = ASensorManager_createEventQueue(engine.sensorManager, - app->looper, LOOPER_ID_USER, NULL, NULL); - - ANativeActivity_setWindowFlags(app->activity, AWINDOW_FLAG_FULLSCREEN | AWINDOW_FLAG_KEEP_SCREEN_ON, 0); - - app->activity->vm->AttachCurrentThread(&engine.jni, NULL); - - // loop waiting for stuff to do. - - while (1) { - // Read all pending events. - int ident; - int events; - struct android_poll_source *source; - - // If not animating, we will block forever waiting for events. - // If animating, we loop until all events are read, then continue - // to draw the next frame of animation. - - int nullmax = 50; - while ((ident = ALooper_pollAll(engine.animating ? 0 : -1, NULL, &events, - (void **)&source)) >= 0) { - - // Process this event. - - if (source != NULL) { - // LOGI("process\n"); - source->process(app, source); - } else { - nullmax--; - if (nullmax < 0) - break; - } - - // If a sensor has data, process it now. - // LOGI("events\n"); - if (ident == LOOPER_ID_USER) { - if (engine.accelerometerSensor != NULL || engine.magnetometerSensor != NULL || engine.gyroscopeSensor != NULL) { - ASensorEvent event; - while (ASensorEventQueue_getEvents(engine.sensorEventQueue, - &event, 1) > 0) { - - if (engine.os) { - if (event.acceleration != NULL) { - engine.os->process_accelerometer(Vector3(event.acceleration.x, event.acceleration.y, - event.acceleration.z)); - } - if (event.magnetic != NULL) { - engine.os->process_magnetometer(Vector3(event.magnetic.x, event.magnetic.y, - event.magnetic.z)); - } - if (event.vector != NULL) { - engine.os->process_gyroscope(Vector3(event.vector.x, event.vector.y, - event.vector.z)); - } - } - } - } - } - - // Check if we are exiting. - if (app->destroyRequested != 0) { - if (engine.os) { - engine.os->main_loop_request_quit(); - } - app->destroyRequested = 0; - } - - if (engine.requested_quit) { - engine_term_display(&engine); - exit(0); - } - - // LOGI("end\n"); - } - - // LOGI("engine animating? %i\n",engine.animating); - - if (engine.animating) { - //do os render - - engine_draw_frame(&engine); - //LOGI("TERM WINDOW"); - } - } -} - -JNIEXPORT void JNICALL Java_org_godotengine_godot_Godot_registerSingleton(JNIEnv *env, jobject obj, jstring name, jobject p_object) { - - String singname = env->GetStringUTFChars(name, NULL); - JNISingleton *s = memnew(JNISingleton); - s->update_env(env); - s->set_instance(env->NewGlobalRef(p_object)); - jni_singletons[singname] = s; - - Engine::get_singleton()->add_singleton(Engine::Singleton(singname, s)); -} - -static Variant::Type get_jni_type(const String &p_type) { - - static struct { - const char *name; - Variant::Type type; - } _type_to_vtype[] = { - { "void", Variant::NIL }, - { "boolean", Variant::BOOL }, - { "int", Variant::INT }, - { "float", Variant::REAL }, - { "java.lang.String", Variant::STRING }, - { "[I", Variant::INT_ARRAY }, - { "[F", Variant::REAL_ARRAY }, - { "[Ljava.lang.String;", Variant::STRING_ARRAY }, - { NULL, Variant::NIL } - }; - - int idx = 0; - - while (_type_to_vtype[idx].name) { - - if (p_type == _type_to_vtype[idx].name) - return _type_to_vtype[idx].type; - - idx++; - } - - return Variant::NIL; -} - -static const char *get_jni_sig(const String &p_type) { - - static struct { - const char *name; - const char *sig; - } _type_to_vtype[] = { - { "void", "V" }, - { "boolean", "Z" }, - { "int", "I" }, - { "float", "F" }, - { "java.lang.String", "Ljava/lang/String;" }, - { "[I", "[I" }, - { "[F", "[F" }, - { "[Ljava.lang.String;", "[Ljava/lang/String;" }, - { NULL, "V" } - }; - - int idx = 0; - - while (_type_to_vtype[idx].name) { - - if (p_type == _type_to_vtype[idx].name) - return _type_to_vtype[idx].sig; - - idx++; - } - - return ""; -} - -JNIEXPORT jstring JNICALL Java_org_godotengine_godot_Godot_getGlobal(JNIEnv *env, jobject obj, jstring path) { - - String js = env->GetStringUTFChars(path, NULL); - - return env->NewStringUTF(ProjectSettings::get_singleton()->get(js).operator String().utf8().get_data()); -} - -JNIEXPORT void JNICALL Java_org_godotengine_godot_Godot_registerMethod(JNIEnv *env, jobject obj, jstring sname, jstring name, jstring ret, jobjectArray args) { - - String singname = env->GetStringUTFChars(sname, NULL); - - ERR_FAIL_COND(!jni_singletons.has(singname)); - - JNISingleton *s = jni_singletons.get(singname); - - String mname = env->GetStringUTFChars(name, NULL); - String retval = env->GetStringUTFChars(ret, NULL); - Vector<Variant::Type> types; - String cs = "("; - - int stringCount = env->GetArrayLength(args); - - for (int i = 0; i < stringCount; i++) { - - jstring string = (jstring)env->GetObjectArrayElement(args, i); - const char *rawString = env->GetStringUTFChars(string, 0); - types.push_back(get_jni_type(String(rawString))); - cs += get_jni_sig(String(rawString)); - } - - cs += ")"; - cs += get_jni_sig(retval); - jclass cls = env->GetObjectClass(s->get_instance()); - jmethodID mid = env->GetMethodID(cls, mname.ascii().get_data(), cs.ascii().get_data()); - if (!mid) { - - print_line("RegisterMethod: Failed getting method ID: " + mname); - } - - s->add_method(mname, mid, types, get_jni_type(retval)); -} - -#endif diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp index 43bd841baf..fb9c0f08ad 100644 --- a/platform/android/java_glue.cpp +++ b/platform/android/java_glue.cpp @@ -28,8 +28,6 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef ANDROID_NATIVE_ACTIVITY - #include "java_glue.h" #include "android/asset_manager_jni.h" #include "audio_driver_jandroid.h" @@ -1566,4 +1564,3 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_calldeferred(JNIEnv * //Main::cleanup(); //return os.get_exit_code(); -#endif diff --git a/platform/android/java_glue.h b/platform/android/java_glue.h index d433b5f0d8..dc5b9cca49 100644 --- a/platform/android/java_glue.h +++ b/platform/android/java_glue.h @@ -28,8 +28,6 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef ANDROID_NATIVE_ACTIVITY - #ifndef JAVA_GLUE_H #define JAVA_GLUE_H @@ -64,5 +62,4 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_calldeferred(JNIEnv * JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_setVirtualKeyboardHeight(JNIEnv *env, jobject obj, jint p_height); } -#endif #endif // JAVA_GLUE_H diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp index 96ff226402..afdd108987 100644 --- a/platform/android/os_android.cpp +++ b/platform/android/os_android.cpp @@ -41,13 +41,8 @@ #include "servers/visual/visual_server_raster.h" #include "servers/visual/visual_server_wrap_mt.h" -#ifdef ANDROID_NATIVE_ACTIVITY -#include "dir_access_android.h" -#include "file_access_android.h" -#else #include "dir_access_jandroid.h" #include "file_access_jandroid.h" -#endif #include <dlfcn.h> @@ -90,18 +85,6 @@ void OS_Android::initialize_core() { OS_Unix::initialize_core(); -#ifdef ANDROID_NATIVE_ACTIVITY - - FileAccess::make_default<FileAccessAndroid>(FileAccess::ACCESS_RESOURCES); - FileAccess::make_default<FileAccessUnix>(FileAccess::ACCESS_USERDATA); - FileAccess::make_default<FileAccessUnix>(FileAccess::ACCESS_FILESYSTEM); - //FileAccessBufferedFA<FileAccessUnix>::make_default(); - DirAccess::make_default<DirAccessAndroid>(DirAccess::ACCESS_RESOURCES); - DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_USERDATA); - DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_FILESYSTEM); - -#else - if (use_apk_expansion) FileAccess::make_default<FileAccessUnix>(FileAccess::ACCESS_RESOURCES); else { @@ -121,8 +104,6 @@ void OS_Android::initialize_core() { DirAccess::make_default<DirAccessJAndroid>(DirAccess::ACCESS_RESOURCES); DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_USERDATA); DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_FILESYSTEM); - -#endif } void OS_Android::set_opengl_extensions(const char *p_gl_extensions) { diff --git a/platform/android/os_android.h b/platform/android/os_android.h index e89a380e4c..ad6fe1976a 100644 --- a/platform/android/os_android.h +++ b/platform/android/os_android.h @@ -41,12 +41,6 @@ #include "servers/audio_server.h" #include "servers/visual/rasterizer.h" -#ifdef ANDROID_NATIVE_ACTIVITY -#include <android/log.h> -#include <android/sensor.h> -#include <android_native_app_glue.h> -#endif - typedef void (*GFXInitFunc)(void *ud, bool gl2); typedef int (*OpenURIFunc)(const String &); typedef String (*GetUserDataDirFunc)(); diff --git a/platform/iphone/export/export.cpp b/platform/iphone/export/export.cpp index 7fb3afe9a9..8a9b254cdc 100644 --- a/platform/iphone/export/export.cpp +++ b/platform/iphone/export/export.cpp @@ -99,6 +99,70 @@ class EditorExportPlatformIOS : public EditorExportPlatform { Error _export_additional_assets(const String &p_out_dir, const Vector<String> &p_assets, bool p_is_framework, Vector<IOSExportAsset> &r_exported_assets); Error _export_additional_assets(const String &p_out_dir, const Vector<SharedObject> &p_libraries, Vector<IOSExportAsset> &r_exported_assets); + bool is_package_name_valid(const String &p_package, String *r_error = NULL) const { + + String pname = p_package; + + if (pname.length() == 0) { + if (r_error) { + *r_error = "Identifier is missing."; + } + return false; + } + + int segments = 0; + bool first = true; + for (int i = 0; i < pname.length(); i++) { + CharType c = pname[i]; + if (first && c == '.') { + if (r_error) { + *r_error = "Identifier segments must be of non-zero length."; + } + return false; + } + if (c == '.') { + segments++; + first = true; + continue; + } + if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_')) { + if (r_error) { + *r_error = "The character '" + String::chr(c) + "' is not allowed in Identifier."; + } + return false; + } + if (first && (c >= '0' && c <= '9')) { + if (r_error) { + *r_error = "A digit cannot be the first character in a Identifier segment."; + } + return false; + } + if (first && c == '_') { + if (r_error) { + *r_error = "The character '" + String::chr(c) + "' cannot be the first character in a Identifier segment."; + } + return false; + } + first = false; + } + + if (segments == 0) { + if (r_error) { + *r_error = "The Identifier must have at least one '.' separator."; + } + return false; + } + + if (first) { + if (r_error) { + *r_error = "Identifier segments must be of non-zero length."; + } + return false; + } + + return true; + } + protected: virtual void get_preset_features(const Ref<EditorExportPreset> &p_preset, List<String> *r_features); virtual void get_export_options(List<ExportOption> *r_options); @@ -987,6 +1051,12 @@ bool EditorExportPlatformIOS::can_export(const Ref<EditorExportPreset> &p_preset err += "App Store Team ID not specified - cannot configure the project.\n"; } + String identifier = p_preset->get("application/identifier"); + String pn_err; + if (!is_package_name_valid(identifier, &pn_err)) { + err += "Invalid Identifier - " + pn_err + "\n"; + } + for (unsigned int i = 0; i < (sizeof(icon_infos) / sizeof(icon_infos[0])); ++i) { IconInfo info = icon_infos[i]; String icon_path = p_preset->get(info.preset_key); diff --git a/platform/iphone/gl_view.mm b/platform/iphone/gl_view.mm index 2925b46007..5b4d1f8226 100644 --- a/platform/iphone/gl_view.mm +++ b/platform/iphone/gl_view.mm @@ -84,7 +84,8 @@ Rect2 _get_ios_window_safe_area(float p_window_width, float p_window_height) { } ERR_FAIL_COND_V(insets.left < 0 || insets.top < 0 || insets.right < 0 || insets.bottom < 0, Rect2(0, 0, p_window_width, p_window_height)); - return Rect2(insets.left, insets.top, p_window_width - insets.right - insets.left, p_window_height - insets.bottom - insets.top); + UIEdgeInsets window_insets = UIEdgeInsetsMake(_points_to_pixels(insets.top), _points_to_pixels(insets.left), _points_to_pixels(insets.bottom), _points_to_pixels(insets.right)); + return Rect2(window_insets.left, window_insets.top, p_window_width - window_insets.right - window_insets.left, p_window_height - window_insets.bottom - window_insets.top); } bool _play_video(String p_path, float p_volume, String p_audio_track, String p_subtitle_track) { diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp index f27c042637..12a0193521 100644 --- a/platform/osx/export/export.cpp +++ b/platform/osx/export/export.cpp @@ -139,10 +139,76 @@ void EditorExportPlatformOSX::get_export_options(List<ExportOption> *r_options) r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc2"), false)); } +void _rgba8_to_packbits_encode(int p_ch, int p_size, PoolVector<uint8_t> &p_source, Vector<uint8_t> &p_dest) { + + int src_len = p_size * p_size; + + Vector<uint8_t> result; + result.resize(src_len * 1.25); //temp vector for rle encoded data, make it 25% larger for worst case scenario + int res_size = 0; + + uint8_t buf[128]; + int buf_size = 0; + + int i = 0; + while (i < src_len) { + uint8_t cur = p_source.read()[i * 4 + p_ch]; + + if (i < src_len - 2) { + + if ((p_source.read()[(i + 1) * 4 + p_ch] == cur) && (p_source.read()[(i + 2) * 4 + p_ch] == cur)) { + if (buf_size > 0) { + result.write[res_size++] = (uint8_t)(buf_size - 1); + copymem(&result.write[res_size], &buf, buf_size); + res_size += buf_size; + buf_size = 0; + } + + uint8_t lim = i + 130 >= src_len ? src_len - i - 1 : 130; + bool hit_lim = true; + + for (int j = 3; j <= lim; j++) { + if (p_source.read()[(i + j) * 4 + p_ch] != cur) { + hit_lim = false; + i = i + j - 1; + result.write[res_size++] = (uint8_t)(j - 3 + 0x80); + result.write[res_size++] = cur; + break; + } + } + if (hit_lim) { + result.write[res_size++] = (uint8_t)(lim - 3 + 0x80); + result.write[res_size++] = cur; + i = i + lim; + } + } else { + buf[buf_size++] = cur; + if (buf_size == 128) { + result.write[res_size++] = (uint8_t)(buf_size - 1); + copymem(&result.write[res_size], &buf, buf_size); + res_size += buf_size; + buf_size = 0; + } + } + } else { + buf[buf_size++] = cur; + result.write[res_size++] = (uint8_t)(buf_size - 1); + copymem(&result.write[res_size], &buf, buf_size); + res_size += buf_size; + buf_size = 0; + } + + i++; + } + + int ofs = p_dest.size(); + p_dest.resize(p_dest.size() + res_size); + copymem(&p_dest.write[ofs], result.ptr(), res_size); +} + void EditorExportPlatformOSX::_make_icon(const Ref<Image> &p_icon, Vector<uint8_t> &p_data) { Ref<ImageTexture> it = memnew(ImageTexture); - int size = 512; Vector<uint8_t> data; @@ -152,32 +218,82 @@ void EditorExportPlatformOSX::_make_icon(const Ref<Image> &p_icon, Vector<uint8_ data.write[2] = 'n'; data.write[3] = 's'; - const char *name[] = { "ic09", "ic08", "ic07", "icp6", "icp5", "icp4" }; - int index = 0; - - while (size >= 16) { - + struct MacOSIconInfo { + const char *name; + const char *mask_name; + bool is_png; + int size; + }; + + static const MacOSIconInfo icon_infos[] = { + { "ic10", "", true, 1024 }, //1024x1024 32-bit PNG and 512x512@2x 32-bit "retina" PNG + { "ic09", "", true, 512 }, //512×512 32-bit PNG + { "ic14", "", true, 512 }, //256x256@2x 32-bit "retina" PNG + { "ic08", "", true, 256 }, //256×256 32-bit PNG + { "ic13", "", true, 256 }, //128x128@2x 32-bit "retina" PNG + { "ic07", "", true, 128 }, //128x128 32-bit PNG + { "ic12", "", true, 64 }, //32x32@2x 32-bit "retina" PNG + { "ic11", "", true, 32 }, //16x16@2x 32-bit "retina" PNG + { "il32", "l8mk", false, 32 }, //32x32 24-bit RLE + 8-bit uncompressed mask + { "is32", "s8mk", false, 16 } //16x16 24-bit RLE + 8-bit uncompressed mask + }; + + for (unsigned int i = 0; i < (sizeof(icon_infos) / sizeof(icon_infos[0])); ++i) { Ref<Image> copy = p_icon; // does this make sense? doesn't this just increase the reference count instead of making a copy? Do we even need a copy? copy->convert(Image::FORMAT_RGBA8); - copy->resize(size, size); - it->create_from_image(copy); - String path = EditorSettings::get_singleton()->get_cache_dir().plus_file("icon.png"); - ResourceSaver::save(path, it); - - FileAccess *f = FileAccess::open(path, FileAccess::READ); - ERR_FAIL_COND(!f); - - int ofs = data.size(); - uint32_t len = f->get_len(); - data.resize(data.size() + len + 8); - f->get_buffer(&data.write[ofs + 8], len); - memdelete(f); - len += 8; - len = BSWAP32(len); - copymem(&data.write[ofs], name[index], 4); - encode_uint32(len, &data.write[ofs + 4]); - index++; - size /= 2; + copy->resize(icon_infos[i].size, icon_infos[i].size); + + if (icon_infos[i].is_png) { + //encode png icon + it->create_from_image(copy); + String path = EditorSettings::get_singleton()->get_cache_dir().plus_file("icon.png"); + ResourceSaver::save(path, it); + + FileAccess *f = FileAccess::open(path, FileAccess::READ); + ERR_FAIL_COND(!f); + + int ofs = data.size(); + uint32_t len = f->get_len(); + data.resize(data.size() + len + 8); + f->get_buffer(&data.write[ofs + 8], len); + memdelete(f); + len += 8; + len = BSWAP32(len); + copymem(&data.write[ofs], icon_infos[i].name, 4); + encode_uint32(len, &data.write[ofs + 4]); + } else { + PoolVector<uint8_t> src_data = copy->get_data(); + + //encode 24bit RGB RLE icon + { + int ofs = data.size(); + data.resize(data.size() + 8); + + _rgba8_to_packbits_encode(0, icon_infos[i].size, src_data, data); // encode R + _rgba8_to_packbits_encode(1, icon_infos[i].size, src_data, data); // encode G + _rgba8_to_packbits_encode(2, icon_infos[i].size, src_data, data); // encode B + + int len = data.size() - ofs; + len = BSWAP32(len); + copymem(&data.write[ofs], icon_infos[i].name, 4); + encode_uint32(len, &data.write[ofs + 4]); + } + + //encode 8bit mask uncompressed icon + { + int ofs = data.size(); + int len = copy->get_width() * copy->get_height(); + data.resize(data.size() + len + 8); + + for (int j = 0; j < len; j++) { + data.write[ofs + 8 + j] = src_data.read()[j * 4 + 3]; + } + len += 8; + len = BSWAP32(len); + copymem(&data.write[ofs], icon_infos[i].mask_name, 4); + encode_uint32(len, &data.write[ofs + 4]); + } + } } uint32_t total_len = data.size(); diff --git a/platform/windows/detect.py b/platform/windows/detect.py index dd0042668f..e14db9a201 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -147,9 +147,9 @@ def setup_msvc_auto(env): # Note: actual compiler version can be found in env['MSVC_VERSION'], e.g. "14.1" for VS2015 # Get actual target arch into bits (it may be "default" at this point): if env['TARGET_ARCH'] in ('amd64', 'x86_64'): - env['bits'] = 64 + env['bits'] = '64' else: - env['bits'] = 32 + env['bits'] = '32' print(" Found MSVC version %s, arch %s, bits=%s" % (env['MSVC_VERSION'], env['TARGET_ARCH'], env['bits'])) if env['TARGET_ARCH'] in ('amd64', 'x86_64'): env["x86_libtheora_opt_vc"] = False diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index bdf459fd83..55d2bb2153 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -727,16 +727,28 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } } break; + case WM_MOVE: { + if (!IsIconic(hWnd)) { + int x = LOWORD(lParam); + int y = HIWORD(lParam); + last_pos = Point2(x, y); + } + } break; + case WM_SIZE: { - int window_w = LOWORD(lParam); - int window_h = HIWORD(lParam); - if (window_w > 0 && window_h > 0 && !preserve_window_size) { - video_mode.width = window_w; - video_mode.height = window_h; - } else { - preserve_window_size = false; - set_window_size(Size2(video_mode.width, video_mode.height)); + // Ignore size when a SIZE_MINIMIZED event is triggered + if (wParam != SIZE_MINIMIZED) { + int window_w = LOWORD(lParam); + int window_h = HIWORD(lParam); + if (window_w > 0 && window_h > 0 && !preserve_window_size) { + video_mode.width = window_w; + video_mode.height = window_h; + } else { + preserve_window_size = false; + set_window_size(Size2(video_mode.width, video_mode.height)); + } } + if (wParam == SIZE_MAXIMIZED) { maximized = true; minimized = false; @@ -1685,6 +1697,10 @@ int OS_Windows::get_screen_dpi(int p_screen) const { Point2 OS_Windows::get_window_position() const { + if (minimized) { + return last_pos; + } + RECT r; GetWindowRect(hWnd, &r); return Point2(r.left, r.top); @@ -1705,9 +1721,15 @@ void OS_Windows::set_window_position(const Point2 &p_position) { ClientToScreen(hWnd, (POINT *)&rect.right); ClipCursor(&rect); } + + last_pos = p_position; } Size2 OS_Windows::get_window_size() const { + if (minimized) { + return Size2(video_mode.width, video_mode.height); + } + RECT r; if (GetClientRect(hWnd, &r)) { // Only area inside of window border return Size2(r.right - r.left, r.bottom - r.top); diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h index 6aadd6994c..d09ade4daa 100644 --- a/platform/windows/os_windows.h +++ b/platform/windows/os_windows.h @@ -93,6 +93,7 @@ class OS_Windows : public OS { HDC hDC; // Private GDI Device Context HINSTANCE hInstance; // Holds The Instance Of The Application HWND hWnd; + Point2 last_pos; HBITMAP hBitmap; //DIB section for layered window uint8_t *dib_data; diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp index 0ea2e85dfa..d847fa2471 100644 --- a/scene/2d/canvas_item.cpp +++ b/scene/2d/canvas_item.cpp @@ -1160,7 +1160,7 @@ void CanvasItem::_bind_methods() { ClassDB::bind_method(D_METHOD("draw_string", "font", "position", "text", "modulate", "clip_w"), &CanvasItem::draw_string, DEFVAL(Color(1, 1, 1)), DEFVAL(-1)); ClassDB::bind_method(D_METHOD("draw_char", "font", "position", "char", "next", "modulate"), &CanvasItem::draw_char, DEFVAL(Color(1, 1, 1))); ClassDB::bind_method(D_METHOD("draw_mesh", "mesh", "texture", "normal_map"), &CanvasItem::draw_mesh, DEFVAL(Ref<Texture>())); - ClassDB::bind_method(D_METHOD("draw_multimesh", "mesh", "texture", "normal_map"), &CanvasItem::draw_mesh, DEFVAL(Ref<Texture>())); + ClassDB::bind_method(D_METHOD("draw_multimesh", "multimesh", "texture", "normal_map"), &CanvasItem::draw_multimesh, DEFVAL(Ref<Texture>())); ClassDB::bind_method(D_METHOD("draw_set_transform", "position", "rotation", "scale"), &CanvasItem::draw_set_transform); ClassDB::bind_method(D_METHOD("draw_set_transform_matrix", "xform"), &CanvasItem::draw_set_transform_matrix); diff --git a/scene/2d/cpu_particles_2d.cpp b/scene/2d/cpu_particles_2d.cpp index 613387bf07..93ad99272c 100644 --- a/scene/2d/cpu_particles_2d.cpp +++ b/scene/2d/cpu_particles_2d.cpp @@ -1305,9 +1305,9 @@ void CPUParticles2D::_bind_methods() { ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angle_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_ANGLE); ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "angle_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_ANGLE); ADD_GROUP("Scale", ""); - ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale", PROPERTY_HINT_RANGE, "0,1000,0.01,or_greater"), "set_param", "get_param", PARAM_SCALE); - ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_SCALE); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "scale_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_SCALE); + ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_amount", PROPERTY_HINT_RANGE, "0,1000,0.01,or_greater"), "set_param", "get_param", PARAM_SCALE); + ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_amount_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_SCALE); + ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "scale_amount_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_SCALE); ADD_GROUP("Color", ""); ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "color_ramp", PROPERTY_HINT_RESOURCE_TYPE, "Gradient"), "set_color_ramp", "get_color_ramp"); diff --git a/scene/2d/path_2d.cpp b/scene/2d/path_2d.cpp index 4276918f53..5eae43b2d5 100644 --- a/scene/2d/path_2d.cpp +++ b/scene/2d/path_2d.cpp @@ -303,7 +303,7 @@ void PathFollow2D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_lookahead", "lookahead"), &PathFollow2D::set_lookahead); ClassDB::bind_method(D_METHOD("get_lookahead"), &PathFollow2D::get_lookahead); - ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_EXP_RANGE, "0,10000,0.01,or_greater"), "set_offset", "get_offset"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0,10000,0.01,or_greater"), "set_offset", "get_offset"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", PROPERTY_USAGE_EDITOR), "set_unit_offset", "get_unit_offset"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "h_offset"), "set_h_offset", "get_h_offset"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "v_offset"), "set_v_offset", "get_v_offset"); diff --git a/scene/3d/cpu_particles.cpp b/scene/3d/cpu_particles.cpp index 1269cef7c2..b07848e02e 100644 --- a/scene/3d/cpu_particles.cpp +++ b/scene/3d/cpu_particles.cpp @@ -217,7 +217,7 @@ String CPUParticles::get_configuration_warning() const { if (!mesh_found) { if (warnings != String()) warnings += "\n"; - warnings += "- " + TTR("Nothing is visible because no mesh has not been assigned."); + warnings += "- " + TTR("Nothing is visible because no mesh has been assigned."); } if (!anim_material_found && (get_param(PARAM_ANIM_SPEED) != 0.0 || get_param(PARAM_ANIM_OFFSET) != 0.0 || @@ -523,7 +523,7 @@ void CPUParticles::_particles_process(float p_delta) { Basis velocity_xform; if (!local_coords) { emission_xform = get_global_transform(); - velocity_xform = emission_xform.basis.inverse().transposed(); + velocity_xform = emission_xform.basis; } for (int i = 0; i < pcount; i++) { @@ -1361,9 +1361,9 @@ void CPUParticles::_bind_methods() { ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angle_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_ANGLE); ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "angle_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_ANGLE); ADD_GROUP("Scale", ""); - ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale", PROPERTY_HINT_RANGE, "0,1000,0.01,or_greater"), "set_param", "get_param", PARAM_SCALE); - ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_SCALE); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "scale_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_SCALE); + ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_amount", PROPERTY_HINT_RANGE, "0,1000,0.01,or_greater"), "set_param", "get_param", PARAM_SCALE); + ADD_PROPERTYI(PropertyInfo(Variant::REAL, "scale_amount_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_SCALE); + ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "scale_amount_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_param_curve", "get_param_curve", PARAM_SCALE); ADD_GROUP("Color", ""); ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "color_ramp", PROPERTY_HINT_RESOURCE_TYPE, "Gradient"), "set_color_ramp", "get_color_ramp"); diff --git a/scene/3d/listener.h b/scene/3d/listener.h index 8047971ebd..9901f7635c 100644 --- a/scene/3d/listener.h +++ b/scene/3d/listener.h @@ -71,8 +71,6 @@ public: void set_visible_layers(uint32_t p_layers); uint32_t get_visible_layers() const; - Vector<Plane> get_frustum() const; - Listener(); ~Listener(); }; diff --git a/scene/3d/path.cpp b/scene/3d/path.cpp index 339a434a6e..1b253d41e8 100644 --- a/scene/3d/path.cpp +++ b/scene/3d/path.cpp @@ -252,7 +252,7 @@ void PathFollow::_bind_methods() { ClassDB::bind_method(D_METHOD("set_loop", "loop"), &PathFollow::set_loop); ClassDB::bind_method(D_METHOD("has_loop"), &PathFollow::has_loop); - ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_EXP_RANGE, "0,10000,0.01,or_greater"), "set_offset", "get_offset"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0,10000,0.01,or_greater"), "set_offset", "get_offset"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", PROPERTY_USAGE_EDITOR), "set_unit_offset", "get_unit_offset"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "h_offset"), "set_h_offset", "get_h_offset"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "v_offset"), "set_v_offset", "get_v_offset"); diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp index b3bebc88ec..eee3213fe7 100644 --- a/scene/gui/graph_edit.cpp +++ b/scene/gui/graph_edit.cpp @@ -1339,21 +1339,25 @@ GraphEdit::GraphEdit() { zoom_minus = memnew(ToolButton); zoom_hb->add_child(zoom_minus); + zoom_minus->set_tooltip(RTR("Zoom Out")); zoom_minus->connect("pressed", this, "_zoom_minus"); zoom_minus->set_focus_mode(FOCUS_NONE); zoom_reset = memnew(ToolButton); zoom_hb->add_child(zoom_reset); + zoom_reset->set_tooltip(RTR("Zoom Reset")); zoom_reset->connect("pressed", this, "_zoom_reset"); zoom_reset->set_focus_mode(FOCUS_NONE); zoom_plus = memnew(ToolButton); zoom_hb->add_child(zoom_plus); + zoom_plus->set_tooltip(RTR("Zoom In")); zoom_plus->connect("pressed", this, "_zoom_plus"); zoom_plus->set_focus_mode(FOCUS_NONE); snap_button = memnew(ToolButton); snap_button->set_toggle_mode(true); + snap_button->set_tooltip(RTR("Enable snap and show grid.")); snap_button->connect("pressed", this, "_snap_toggled"); snap_button->set_pressed(true); snap_button->set_focus_mode(FOCUS_NONE); diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 17de346f51..490013d813 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -765,19 +765,17 @@ void RichTextLabel::_update_scroll() { if (exceeds) { scroll_visible = true; - main->first_invalid_line = 0; scroll_w = vscroll->get_combined_minimum_size().width; vscroll->show(); vscroll->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, -scroll_w); - _validate_line_caches(main); - } else { - scroll_visible = false; - vscroll->hide(); scroll_w = 0; - _validate_line_caches(main); + vscroll->hide(); } + + main->first_invalid_line = 0; //invalidate ALL + _validate_line_caches(main); } } @@ -1616,7 +1614,6 @@ void RichTextLabel::clear() { main->lines.clear(); main->lines.resize(1); main->first_invalid_line = 0; - scroll_w = 0; update(); selection.click = NULL; selection.active = false; diff --git a/scene/gui/split_container.cpp b/scene/gui/split_container.cpp index 3554f04cc0..c3265d3ed5 100644 --- a/scene/gui/split_container.cpp +++ b/scene/gui/split_container.cpp @@ -94,12 +94,15 @@ void SplitContainer::_resort() { } // Compute the final middle separation - int clamped_split_offset = CLAMP(split_offset, ms_first[axis] - no_offset_middle_sep, (get_size()[axis] - ms_second[axis] - sep) - no_offset_middle_sep); - middle_sep = no_offset_middle_sep + clamped_split_offset; - if (!collapsed && should_clamp_split_offset) { - split_offset = clamped_split_offset; - _change_notify("split_offset"); - should_clamp_split_offset = false; + middle_sep = no_offset_middle_sep; + if (!collapsed) { + int clamped_split_offset = CLAMP(split_offset, ms_first[axis] - no_offset_middle_sep, (get_size()[axis] - ms_second[axis] - sep) - no_offset_middle_sep); + middle_sep += clamped_split_offset; + if (should_clamp_split_offset) { + split_offset = clamped_split_offset; + _change_notify("split_offset"); + should_clamp_split_offset = false; + } } if (vertical) { diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 51d707c28f..c339cf6374 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -6045,7 +6045,10 @@ void TextEdit::menu_option(int p_option) { case MENU_UNDO: { undo(); } break; - }; + case MENU_REDO: { + redo(); + } + } } void TextEdit::set_select_identifiers_on_hover(bool p_enable) { @@ -6221,6 +6224,7 @@ void TextEdit::_bind_methods() { BIND_ENUM_CONSTANT(MENU_CLEAR); BIND_ENUM_CONSTANT(MENU_SELECT_ALL); BIND_ENUM_CONSTANT(MENU_UNDO); + BIND_ENUM_CONSTANT(MENU_REDO); BIND_ENUM_CONSTANT(MENU_MAX); GLOBAL_DEF("gui/timers/text_edit_idle_detect_sec", 3); @@ -6349,6 +6353,7 @@ TextEdit::TextEdit() { menu->add_item(RTR("Clear"), MENU_CLEAR); menu->add_separator(); menu->add_item(RTR("Undo"), MENU_UNDO, KEY_MASK_CMD | KEY_Z); + menu->add_item(RTR("Redo"), MENU_REDO, KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_Z); menu->connect("id_pressed", this, "menu_option"); } diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index 8a508a8738..b1a0b60442 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -444,6 +444,7 @@ public: MENU_CLEAR, MENU_SELECT_ALL, MENU_UNDO, + MENU_REDO, MENU_MAX }; diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 9ceac0d7b0..3e27c86c67 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -1747,7 +1747,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { mb->set_position(pos); #ifdef DEBUG_ENABLED - if (ScriptDebugger::get_singleton()) { + if (ScriptDebugger::get_singleton() && gui.mouse_focus) { Array arr; arr.push_back(gui.mouse_focus->get_path()); @@ -1780,7 +1780,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { } } - if (gui.mouse_focus->can_process()) { + if (gui.mouse_focus && gui.mouse_focus->can_process()) { _gui_call_input(gui.mouse_focus, mb); } @@ -1850,7 +1850,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { gui.mouse_focus = NULL; } - if (mouse_focus->can_process()) { + if (mouse_focus && mouse_focus->can_process()) { _gui_call_input(mouse_focus, mb); } @@ -2065,7 +2065,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { OS::get_singleton()->set_cursor_shape((OS::CursorShape)cursor_shape); - if (over->can_process()) { + if (over && over->can_process()) { _gui_call_input(over, mm); } diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp index 5d4c7861e3..9907636e91 100644 --- a/scene/resources/surface_tool.cpp +++ b/scene/resources/surface_tool.cpp @@ -764,10 +764,22 @@ void SurfaceTool::append_from(const Ref<Mesh> &p_existing, int p_surface, const } //mikktspace callbacks +namespace { +struct TangentGenerationContextUserData { + Vector<List<SurfaceTool::Vertex>::Element *> vertices; + Vector<List<int>::Element *> indices; +}; +} // namespace + int SurfaceTool::mikktGetNumFaces(const SMikkTSpaceContext *pContext) { - Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData); - return varr.size() / 3; + TangentGenerationContextUserData &triangle_data = *reinterpret_cast<TangentGenerationContextUserData *>(pContext->m_pUserData); + + if (triangle_data.indices.size() > 0) { + return triangle_data.indices.size() / 3; + } else { + return triangle_data.vertices.size() / 3; + } } int SurfaceTool::mikktGetNumVerticesOfFace(const SMikkTSpaceContext *pContext, const int iFace) { @@ -775,8 +787,17 @@ int SurfaceTool::mikktGetNumVerticesOfFace(const SMikkTSpaceContext *pContext, c } void SurfaceTool::mikktGetPosition(const SMikkTSpaceContext *pContext, float fvPosOut[], const int iFace, const int iVert) { - Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData); - Vector3 v = varr[iFace * 3 + iVert]->get().vertex; + TangentGenerationContextUserData &triangle_data = *reinterpret_cast<TangentGenerationContextUserData *>(pContext->m_pUserData); + Vector3 v; + if (triangle_data.indices.size() > 0) { + int index = triangle_data.indices[iFace * 3 + iVert]->get(); + if (index < triangle_data.vertices.size()) { + v = triangle_data.vertices[index]->get().vertex; + } + } else { + v = triangle_data.vertices[iFace * 3 + iVert]->get().vertex; + } + fvPosOut[0] = v.x; fvPosOut[1] = v.y; fvPosOut[2] = v.z; @@ -784,38 +805,56 @@ void SurfaceTool::mikktGetPosition(const SMikkTSpaceContext *pContext, float fvP void SurfaceTool::mikktGetNormal(const SMikkTSpaceContext *pContext, float fvNormOut[], const int iFace, const int iVert) { - Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData); - Vector3 v = varr[iFace * 3 + iVert]->get().normal; + TangentGenerationContextUserData &triangle_data = *reinterpret_cast<TangentGenerationContextUserData *>(pContext->m_pUserData); + Vector3 v; + if (triangle_data.indices.size() > 0) { + int index = triangle_data.indices[iFace * 3 + iVert]->get(); + if (index < triangle_data.vertices.size()) { + v = triangle_data.vertices[index]->get().normal; + } + } else { + v = triangle_data.vertices[iFace * 3 + iVert]->get().normal; + } + fvNormOut[0] = v.x; fvNormOut[1] = v.y; fvNormOut[2] = v.z; } void SurfaceTool::mikktGetTexCoord(const SMikkTSpaceContext *pContext, float fvTexcOut[], const int iFace, const int iVert) { - Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData); - Vector2 v = varr[iFace * 3 + iVert]->get().uv; + TangentGenerationContextUserData &triangle_data = *reinterpret_cast<TangentGenerationContextUserData *>(pContext->m_pUserData); + Vector2 v; + if (triangle_data.indices.size() > 0) { + int index = triangle_data.indices[iFace * 3 + iVert]->get(); + if (index < triangle_data.vertices.size()) { + v = triangle_data.vertices[index]->get().uv; + } + } else { + v = triangle_data.vertices[iFace * 3 + iVert]->get().uv; + } + fvTexcOut[0] = v.x; fvTexcOut[1] = v.y; - //fvTexcOut[1]=1.0-v.y; } void SurfaceTool::mikktSetTSpaceDefault(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fvBiTangent[], const float fMagS, const float fMagT, const tbool bIsOrientationPreserving, const int iFace, const int iVert) { - Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData); - Vertex *vtx = &varr[iFace * 3 + iVert]->get(); - - vtx->tangent = Vector3(fvTangent[0], fvTangent[1], fvTangent[2]); - vtx->binormal = Vector3(fvBiTangent[0], fvBiTangent[1], fvBiTangent[2]); -} - -void SurfaceTool::mikktSetTSpaceBasic(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fSign, const int iFace, const int iVert) { - - Vector<List<Vertex>::Element *> &varr = *((Vector<List<Vertex>::Element *> *)pContext->m_pUserData); - Vertex &vtx = varr[iFace * 3 + iVert]->get(); + TangentGenerationContextUserData &triangle_data = *reinterpret_cast<TangentGenerationContextUserData *>(pContext->m_pUserData); + Vertex *vtx = NULL; + if (triangle_data.indices.size() > 0) { + int index = triangle_data.indices[iFace * 3 + iVert]->get(); + if (index < triangle_data.vertices.size()) { + vtx = &triangle_data.vertices[index]->get(); + } + } else { + vtx = &triangle_data.vertices[iFace * 3 + iVert]->get(); + } - vtx.tangent = Vector3(fvTangent[0], fvTangent[1], fvTangent[2]); - vtx.binormal = vtx.normal.cross(vtx.tangent) * fSign; + if (vtx != NULL) { + vtx->tangent = Vector3(fvTangent[0], fvTangent[1], fvTangent[2]); + vtx->binormal = Vector3(fvBiTangent[0], fvBiTangent[1], fvBiTangent[2]); + } } void SurfaceTool::generate_tangents() { @@ -823,10 +862,6 @@ void SurfaceTool::generate_tangents() { ERR_FAIL_COND(!(format & Mesh::ARRAY_FORMAT_TEX_UV)); ERR_FAIL_COND(!(format & Mesh::ARRAY_FORMAT_NORMAL)); - bool indexed = index_array.size() > 0; - if (indexed) - deindex(); - SMikkTSpaceInterface mkif; mkif.m_getNormal = mikktGetNormal; mkif.m_getNumFaces = mikktGetNumFaces; @@ -839,24 +874,25 @@ void SurfaceTool::generate_tangents() { SMikkTSpaceContext msc; msc.m_pInterface = &mkif; - Vector<List<Vertex>::Element *> vtx; - vtx.resize(vertex_array.size()); + TangentGenerationContextUserData triangle_data; + triangle_data.vertices.resize(vertex_array.size()); int idx = 0; for (List<Vertex>::Element *E = vertex_array.front(); E; E = E->next()) { - vtx.write[idx++] = E; + triangle_data.vertices.write[idx++] = E; E->get().binormal = Vector3(); E->get().tangent = Vector3(); } - msc.m_pUserData = &vtx; + triangle_data.indices.resize(index_array.size()); + idx = 0; + for (List<int>::Element *E = index_array.front(); E; E = E->next()) { + triangle_data.indices.write[idx++] = E; + } + msc.m_pUserData = &triangle_data; bool res = genTangSpaceDefault(&msc); ERR_FAIL_COND(!res); format |= Mesh::ARRAY_FORMAT_TANGENT; - - if (indexed) { - index(); - } } void SurfaceTool::generate_normals(bool p_flip) { diff --git a/scene/resources/surface_tool.h b/scene/resources/surface_tool.h index 459d399380..cc8599e90a 100644 --- a/scene/resources/surface_tool.h +++ b/scene/resources/surface_tool.h @@ -90,7 +90,6 @@ private: static void mikktGetPosition(const SMikkTSpaceContext *pContext, float fvPosOut[], const int iFace, const int iVert); static void mikktGetNormal(const SMikkTSpaceContext *pContext, float fvNormOut[], const int iFace, const int iVert); static void mikktGetTexCoord(const SMikkTSpaceContext *pContext, float fvTexcOut[], const int iFace, const int iVert); - static void mikktSetTSpaceBasic(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fSign, const int iFace, const int iVert); static void mikktSetTSpaceDefault(const SMikkTSpaceContext *pContext, const float fvTangent[], const float fvBiTangent[], const float fMagS, const float fMagT, const tbool bIsOrientationPreserving, const int iFace, const int iVert); diff --git a/servers/visual/visual_server_canvas.cpp b/servers/visual/visual_server_canvas.cpp index 734c295a72..26fb3cc493 100644 --- a/servers/visual/visual_server_canvas.cpp +++ b/servers/visual/visual_server_canvas.cpp @@ -339,7 +339,7 @@ void VisualServerCanvas::canvas_item_set_parent(RID p_item, RID p_parent) { Item *ysort_owner = item_owner; while (ysort_owner && ysort_owner->sort_y) { item_owner->ysort_children_count = -1; - ysort_owner = canvas_item_owner.getornull(ysort_owner->parent); + ysort_owner = canvas_item_owner.owns(ysort_owner->parent) ? canvas_item_owner.getornull(ysort_owner->parent) : NULL; } } @@ -363,7 +363,7 @@ void VisualServerCanvas::canvas_item_set_parent(RID p_item, RID p_parent) { Item *ysort_owner = item_owner; while (ysort_owner && ysort_owner->sort_y) { item_owner->ysort_children_count = -1; - ysort_owner = canvas_item_owner.getornull(ysort_owner->parent); + ysort_owner = canvas_item_owner.owns(ysort_owner->parent) ? canvas_item_owner.getornull(ysort_owner->parent) : NULL; } } else { @@ -1354,7 +1354,7 @@ bool VisualServerCanvas::free(RID p_rid) { Item *ysort_owner = item_owner; while (ysort_owner && ysort_owner->sort_y) { item_owner->ysort_children_count = -1; - ysort_owner = canvas_item_owner.getornull(ysort_owner->parent); + ysort_owner = canvas_item_owner.owns(ysort_owner->parent) ? canvas_item_owner.getornull(ysort_owner->parent) : NULL; } } } diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp index e1db123f58..34cc1cbd66 100644 --- a/servers/visual_server.cpp +++ b/servers/visual_server.cpp @@ -1909,7 +1909,7 @@ void VisualServer::_bind_methods() { ClassDB::bind_method(D_METHOD("environment_set_ambient_light", "env", "color", "energy", "sky_contibution"), &VisualServer::environment_set_ambient_light, DEFVAL(1.0), DEFVAL(0.0)); ClassDB::bind_method(D_METHOD("environment_set_dof_blur_near", "env", "enable", "distance", "transition", "far_amount", "quality"), &VisualServer::environment_set_dof_blur_near); ClassDB::bind_method(D_METHOD("environment_set_dof_blur_far", "env", "enable", "distance", "transition", "far_amount", "quality"), &VisualServer::environment_set_dof_blur_far); - ClassDB::bind_method(D_METHOD("environment_set_glow", "env", "enable", "level_flags", "intensity", "strength", "bloom_threshold", "blend_mode", "hdr_bleed_threshold", "hdr_bleed_scale", "bicubic_upscale"), &VisualServer::environment_set_glow); + ClassDB::bind_method(D_METHOD("environment_set_glow", "env", "enable", "level_flags", "intensity", "strength", "bloom_threshold", "blend_mode", "hdr_bleed_threshold", "hdr_bleed_scale", "hdr_luminance_cap", "bicubic_upscale"), &VisualServer::environment_set_glow); ClassDB::bind_method(D_METHOD("environment_set_tonemap", "env", "tone_mapper", "exposure", "white", "auto_exposure", "min_luminance", "max_luminance", "auto_exp_speed", "auto_exp_grey"), &VisualServer::environment_set_tonemap); ClassDB::bind_method(D_METHOD("environment_set_adjustment", "env", "enable", "brightness", "contrast", "saturation", "ramp"), &VisualServer::environment_set_adjustment); ClassDB::bind_method(D_METHOD("environment_set_ssr", "env", "enable", "max_steps", "fade_in", "fade_out", "depth_tolerance", "roughness"), &VisualServer::environment_set_ssr); |